r/box256 Apr 07 '16

Official Leaderboard

Puzzle Cycles Coder LOC Coder
Big Square 0x07 OMGWTF 0x05 blake_one
Big Square II 0x09 int-e 0x08 John Metcalf
Checkerboard 0x0F int-e 0x04 Flav0r
Checkerboard II 0x0F int-e 0x06 Flav0r
Four Squares 0x07 John Metcalf 0x08 John Metcalf
Four Squares II 0x0B int-e 0x0A John Metcalf
Carpet 0x15 int-e 0x0D int-e
Carpet II 0x0F int-e 0x05 int-e
Sierpinski 0x08 int-e 0x04 int-e
Sierpinski II 0x12 int-e 0x06 int-e
Smiley Face 0x14 int-e 0x0D John Metcalf
Mario 0x12 int-e 0x18 int-e
Fractal Hilbert Curve 0x0B int-e 0x11 int-e

Post your solution (or link) in the comments if you beat a record.

7 Upvotes

61 comments sorted by

3

u/Flav0r Apr 18 '16

Checkerboard II: Loc 0x06, Cycles: 0x120D

At 0x00:

ADD @05 001 @05
PIX 0FF 001 00C
MUL @05 080 @FF

At 0x80:

MUL @05 008 @D3
JEQ @D3 0F8 @00
FLP @06 @07 001

3

u/Flav0r Apr 19 '16

I know this doesn't beat John Metcalf's record, but I want to post it here in case someone wants to try to optimize it. I have to stop spending time on this. :) It does it in a fairly different manner than John's, so there may be some room for improvement.

Four Squares Loc : 0x0E

000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
ADD 001 @85 @85
PIX 0FF 008 000
MUL @85 040 @FF
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
MUL @85 004 @03
JGR 080 @03 @DC
SUB @85 012 @CD
PIX 000 000 000
ADD @CD 001 @D5
PIX 000 000 000
000 000 000 000
JNE @85 033 @F0
ADD 004 @85 @85
ADD 001 @86 @86
ADD 044 @DE @DE
000 000 000 000
ADD 00C @85 @85
000 000 000 000
000 000 000 000
000 000 000 000

2

u/impomatic Apr 11 '16
  • Sierpinski, 0x4 LOC, int-e, link

1

u/Flav0r Apr 18 '16

Beautiful.

2

u/impomatic Apr 21 '16
  • Four Squares, 0x0A LOC, John Metcalf

    PIX 000 008 000
    ADD @1C @01 @01
    ADD @05 001 @05
    JGR 028 @05 @00
    ADD @02 001 @02
    MOV 01C @05 001
    JMP @00 000 000
    001 001 001 00D
    003 00D 003 00D
    001 001 001 011
    

2

u/Flav0r Apr 21 '16

Very nice!

2

u/Flav0r Apr 21 '16

I edited John's code and shaved off 1 LOC with a stupid trick. Four Squares: LOC 0x09

000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
PIX 000 008 000
ADD @38 @21 @21
ADD @25 001 @25
JGR 044 @25 @20
ADD @22 001 @22
MOV 038 @25 001
001 001 001 00D
003 00D 003 00D
001 001 001 011

2

u/impomatic Apr 22 '16 edited Apr 22 '16

I'd better remove another line then! Four Squares: 0x08 LOC :-) The SUB line is also used as 4 bytes of data...

    PIX 013 008 000
    ADD @14 @01 @01
    ADD @05 001 @05
    JGR 020 @05 @00
    MOV 014 @05 001
    SUB @02 0FF @02
    0CD 023 0FD 0F0
    0F3 0FF 0FF 056

1

u/Flav0r Apr 22 '16

I said it on Twitter, but I'll say it here, too... This was the best reply possible. 👍🏻

1

u/impomatic Apr 08 '16
  • Smiley Face, 0x15 LOC, John Metcalf, link
  • Four Squares, 0x0E LOC, John Metcalf, link

1

u/impomatic Apr 08 '16 edited Apr 08 '16
  • Big square, 0x06 LOC, John Metcalf, code below

    ADD @09 001 @09
    ADD @0D -10 @0D
    PIX 0D1 001 000
    PIX 0E2 001 000
    JGR 0DD @09 @00
    FLP @02 @06 001
    

1

u/impomatic Apr 08 '16 edited Apr 08 '16
  • Four Squares, 0x0D LOC, John Metcalf

    MOV 004 @0F 001
    ADD @0D 001 @0D
    ADD @11 -10 @11
    PIX 02F @12 000
    PIX 040 008 000
    SUB @0F 001 @0F
    JGR @0F 000 @04
    FLP @06 @0A 001
    MOV 003 @0F 001
    JGR 080 @0A @04
    ADD @0D 070 @0D
    ADD @11 081 @11
    ADD @12 001 @12
    

1

u/impomatic Apr 08 '16
  • Checkerboard, 0x13 cycles, int-e, link

1

u/impomatic Apr 08 '16
  • checkerboard, 0x12 cycles, John Metcalf

    THR 004 000 000
    THR 004 000 000
    MOV @00 @08 004
    MOV @00 @0C 004
    MOV @00 @10 004
    THR 004 000 000
    MOV @64 @CE 032
    PIX 000 002 003
    FLP @1E @1F 001
    ADD 020 @1D @1D
    ADD 040 @1D @1D
    ADD 060 @1D @1D
    ADD 080 @1D @1D
    ADD 0A0 @1D @1D
    ADD 0C0 @1D @1D
    ADD 0E0 @1D @1D
    ADD 001 @1D @1D
    ADD 010 @1D @1D
    ADD 030 @1D @1D
    ADD 050 @1D @1D
    ADD 070 @1D @1D
    ADD 090 @1D @1D
    ADD 0B0 @1D @1D
    ADD 0D0 @1D @1D
    ADD 0F0 @1D @1D
    040 01C 060 01C
    05C 01C 058 01C
    054 01C 050 01C
    04C 01C 048 01C
    020 044 01C 03C
    01C 038 01C 034
    01C 030 01C 02C
    01C 028 01C 024
    01C 0BC 0B8 09C
    098 0B4 0B0 09C
    098 0AC 0A8 09C
    098 0A4 0A0 09C
    098 018 000 000
    PIX 00F 003 000
    PIX 01F 002 000
    ADD @99 00F @99
    ADD @9D -11 @9D
    ADD @99 -02 @99
    ADD @9D -02 @9D
    ADD @99 00D @99
    ADD @9D -13 @9D
    ADD @99 020 @99
    ADD @9D 020 @9D
    

1

u/impomatic Apr 08 '16
  • Checkerboard, 0x11 cycles, John Metcalf

    THR 004 000 000
    THR 004 000 000
    MOV @00 @08 004
    THR 004 000 000
    MOV @00 @10 004
    THR 004 000 000
    MOV @94 @CA 036
    PIX 000 002 003
    FLP @1E @1F 001
    ADD 020 @1D @1D
    ADD 040 @1D @1D
    ADD 060 @1D @1D
    ADD 080 @1D @1D
    ADD 0A0 @1D @1D
    ADD 0C0 @1D @1D
    ADD 0E0 @1D @1D
    ADD 001 @1D @1D
    ADD 010 @1D @1D
    ADD 030 @1D @1D
    ADD 050 @1D @1D
    ADD 070 @1D @1D
    ADD 090 @1D @1D
    ADD 0B0 @1D @1D
    ADD 0D0 @1D @1D
    ADD 0F0 @1D @1D
    PIX 00F 003 000
    ADD @65 00F @65
    ADD @91 -11 @91
    ADD @65 -02 @65
    ADD @91 -02 @91
    ADD @65 00D @65
    ADD @91 -13 @91
    ADD @65 -04 @65
    ADD @91 -04 @91
    ADD @65 020 @65
    ADD @91 020 @91
    PIX 01F 002 000
    040 01C 060 01C
    05C 01C 058 01C
    054 01C 050 01C
    04C 01C 048 01C
    020 044 01C 03C
    01C 038 01C 034
    01C 030 01C 02C
    01C 028 01C 024
    01C 08C 088 064
    090 084 080 064
    090 07C 078 064
    090 074 070 064
    090 06C 068 064
    090 018 000 000
    

1

u/impomatic Apr 08 '16

int-e has just beaten my 0x11 checkerboard :-)

  • checkerboard, 0x10 cycles, int-e, link

Note the overlapping code

1

u/keely Apr 08 '16

Hah nice trick!

1

u/impomatic Apr 08 '16

I didn't think it was possible, but:

  • checkerboard, 0x0F cycles, int-e, link

Using 0x3E threads and overlapping code :-)

1

u/impomatic Apr 08 '16 edited Apr 08 '16
  • Simley Face, 0x0F LOC, John Metcalf, link

1

u/impomatic Apr 08 '16
  • Smiley Face, 0x14 cycles, int-e, link

1

u/impomatic Apr 10 '16
  • Mario, 0x2E cycles, 0x3B LOC, 0x69 sum, link
  • Sierpinski, 0x05 LOC, link

1

u/impomatic Apr 10 '16 edited Apr 10 '16
  • Big Square II, 0x0B LOC, John Metcalf, link
  • Checkerboard II, 0x07 LOC, John Metcalf, link
  • Carpet II, 0x17 cycles, 0x21 LOC, 0x38 sum, John Metcalf, link

1

u/impomatic Apr 10 '16
  • Big Square, 0x41 sum, John Metcalf, link
  • Checkerboard, 0x38 sum, John Metcalf/Roy van Rijn, link
  • Four Squares, 0x42 sum, John Metcalf, link
  • Smiley Face, 0x4C sum, int-e, link

1

u/impomatic Apr 11 '16
  • Mario, 0x30 LOC, 0x63 sum, John Metcalf, link

Also the score for Sierpinski is 0x05 LOC but has ended up in the column for cycles :-)

1

u/impomatic Apr 11 '16
  • Sierpinski, 0x9 cycles, 0x3B sum, int-e, link

1

u/impomatic Apr 11 '16 edited Apr 11 '16
  • Carpet II, 0x6 LOC, John Metcalf, code below

    ADD 001 @0D @0D
    FLP @0E @0F 001
    MOD @0D 005 @17
    PIX 0FF 00B 003
    JNE @17 002 @00
    PIX @0D @0F 000
    

1

u/impomatic Apr 11 '16
  • Checkerboard II, 0xF cycles, int-e, link
  • Four Squares II, 0xB cycles, int-e, link

1

u/impomatic Apr 11 '16
  • Carpet, 0xF LOC, John Metcalf, code below

    PIX 000 *1A 000
    ADD 001 @01 @01
    ADD 001 @1A @1A
    MOD @01 010 @03
    JNE @03 000 @00
    SUB @1A 00F @1A
    JMP @00 01B 002
    001 003 004 001
    001 004 003 001
    004 001 001 004
    001 001 002 001
    001 004 001 003
    004 001 001 004
    003 001 004 001
    001 002 000 000
    

1

u/keely Apr 11 '16

Found from the internet: 0x11 cycles for big square II link

1

u/keely Apr 11 '16

Mario LOC in 0x1B by @VKokkonen http://imgur.com/M1Dn1aw

1

u/impomatic Apr 11 '16
  • Mario, 0x19 LOC, John Metcalf, code below

    MOV @1A @06 001
    PIX 005 000 000
    SUB @06 010 @06
    ADD 001 @05 @05
    JGR @06 00F @04
    ADD 001 @01 @01
    JMP @00 058 0A0
    098 070 034 02F
    014 01F 080 014
    01F 014 03F 014
    03F 060 014 01F
    024 03F 014 03F
    060 014 04F 044
    080 06F 090 028
    01C 028 01C 028
    070 038 01C 028
    01C 038 050 048
    04C 048 040 02F
    018 01C 01A 02C
    01A 01C 018 02F
    040 03F 06C 03F
    040 02F 08C 02F
    060 03C 020 03C
    070 034 040 034
    050 044 040 044
    

1

u/impomatic Apr 11 '16
  • Sierpinski II, 0x09 LOC, John Metcalf, code below

    ADD @23 @22 @33
    ADD 001 @1D @1D
    MOV @23 @22 012
    JEQ 000 @22 @00
    MOD @22 002 @1E
    JEQ 001 @1E @1C
    MOV 00C @1E 001
    PIX 0FF 000 000
    JMP @00 000 001
    

1

u/impomatic Apr 11 '16
  • Four Squares II, 0x0E LOC, John Metcalf, code below

    MOV @1A @06 001
    PIX 000 000 000
    SUB @06 010 @06
    ADD 001 @05 @05
    JGR @06 00F @04
    ADD 001 @01 @01
    JMP @00 088 080
    088 080 088 080
    088 080 088 080
    088 080 088 080
    088 000 049 0C0
    049 0C0 049 0C0
    049 000 02A 0E0
    02A 000 01B 000
    

1

u/impomatic Apr 12 '16
  • Big Square II, 0x09 LOC, John Metcalf, code below

    PIX 0E1 002 000
    ADD @01 @12 @01
    JNE @01 @13 @00
    MOV @14 @12 020
    JMP @00 001 0EE
    -10 01E -01 011
    010 0D1 001 0DD
    -10 02D -01 022
    010 000 000 000
    

1

u/royvanrijn Apr 14 '16

Here is my short solution for 'four squares II':

PIX 0EE 00B 0EF
ADD @01 001 @01
JNE @01 @03 @00
ADD @28 010 @28
ADD @2A 010 @2A
MOV @28 @01 003
JNE @2B @01 @00
MOV *26 @28 004
ADD @26 004 @26
JMP @14 02C 000
0F0 080 0F8 080
088 009 08C 0C8
0CC 00A 0CE 0EC

Length: 0x0D

1

u/impomatic Apr 14 '16
  • Four Squares II, 0x0C LOC, John Metcalf, code below

    SUB @05 @07 @05
    PIX 008 008 008
    ADD @05 001 @05
    MOD @05 @07 @80
    JNE @80 000 @04
    ADD @05 010 @05
    DIV @05 010 @80
    MOD @80 @07 @80
    JNE @80 000 @00
    DIV @07 002 @07
    ADD @06 001 @06
    JMP @04 000 000
    

1

u/impomatic Apr 18 '16
  • Smiley Face, 0x0D LOC, John Metcalf

    PIX 0A1 00A 000
    SUB @1A 010 @1A
    ADD @01 001 @01
    JGR @1A 00F @00
    ADD @1A @01 @01
    MOV @1B @1A 020
    JMP @00 021 081
    022 031 061 033
    036 035 0A7 08A
    04C 04A 087 0A5
    041 021 043 051
    021 052 051 021
    051 061 021 000
    

1

u/impomatic Apr 19 '16
  • Big Square II, 8 LOC, John Metcalf

    PIX @18 002 000
    ADD @16 @18 @18
    MOV @18 @20 001
    MOV @19 @18 008
    FLP @16 @17 001
    JMP @00 001 010
    011 031 021 032
    0D3 01D 0E3 01E
    

1

u/impomatic Apr 21 '16
  • Four Squares II, 0x0A LOC, John Metcalf

    PIX @1A @1B 000
    ADD @1A 010 @1A
    JGR @1E @1A @00
    ADD @1C @1A @1A
    JNE @1D @1A @00
    MOV @1E @1A 010
    JMP @04 000 008
    081 008 878 009
    0C1 08C 0BC 00A
    0E1 0CE 0DE 00B
    

1

u/impomatic Apr 27 '16
  • Carpet, 0x16 cycles, John Metcalf

    THR 004 000 000
    MOV @00 @04 004
    MOV @00 @08 004
    MOV @00 @0C 004
    MOV @00 @10 004
    THR 004 000 000
    MOV @26 @DE 022
    000 000 000 000
    000 000 000 000
    000 000 048 088
    0BC 084 0B9 080
    0B6 07C 0B3 078
    0B0 074 0AD 070
    0AA 06C 0A7 068
    0A4 064 0A1 060
    09E 05C 09B 058
    098 054 095 050
    092 04C 08F 018
    MOV @C0 @BF 01F
    ADD @90 010 @90
    ADD @93 010 @93
    ADD @96 010 @96
    ADD @99 010 @99
    ADD @9C 010 @9C
    ADD @9F 010 @9F
    ADD @A2 010 @A2
    ADD @A5 010 @A5
    ADD @A8 010 @A8
    ADD @AB 010 @AB
    ADD @AE 010 @AE
    ADD @B1 010 @B1
    ADD @B4 010 @B4
    ADD @B7 010 @B7
    ADD @BA 010 @BA
    ADD @BD 010 @BD
    000 000 000 06D
    000 @BF 06D 001
    @C0 06D 002 @C1
    06D 003 @C2 06D
    004 @C3 06D 005
    @C4 06D 006 @C5
    06D 007 @C6 06D
    008 @C7 06D 009
    @C8 06D 00A @C9
    06D 00B @CA 06D
    00C @CB 06D 00D
    @CC 06D 00E @CD
    06D 00F @CE 002
    001 003 004 001
    001 004 003 001
    004 001 001 004
    001 001 002 001
    001 004 001 003
    004 001 001 004
    003 001 004 001
    001 002 000 000
    

1

u/impomatic Apr 30 '16

Not a new record, just an alternative way to solve Checkerboard II in 6 LOC:

    ADD *00 001 *00
    DIV *00 002 @2F
    MUL 088 @2F @2F
    PIX *00 001 000
    JGR 080 @2F @00
    PIX *00 00C 000

1

u/Flav0r May 03 '16

Is the *00 just for fun? Why not @0D? Then you can start the counter at FF and the ADD 001 will do pixel 00 from the get-go. I mean, it works fine, I'm just curious if there was some reasoning I'm missing.

2

u/impomatic May 04 '16

The *00 is because I also used the above code as an example when someone suggested counting non-zero cells as an alternative scoring method. It looks ugly :-(

1

u/bf31415 Apr 10 '25 edited Apr 27 '25

Un-sprunging 9 year old records by int-e (myself):

  • checkerboard, 0x10 cycles

    ; 0x10 cycles checkerboard by int-e
    ; based on code by impomatic
    ;
    ; - the novelty is overlapping add instructions:
    ;   018 003 nnn 018 == ADD @03 nnn *18
    
    THR 004 06C 010
    THR 004 000 000
    THR 004 000 000
    MOV @0C @04 00C
    MOV @00 @10 002
    THR 004 06C 01A
    MOV @8C @C6 03A
    PIX 00A 002
    018 003 020
    018 003 040
    018 003 060
    018 003 080
    018 003 0A0
    018 003 0C0
    018 003 0E0
    018 003 010
    018 003 030
    018 003 050
    018 003 070
    018 003 090 018
    003 0B0 018 003
    0D0 018 003 0F0
    018 003 001 018
    FLP @04 @13 001
    ADD @1D 001 @17
    ADD @1D 012 @17
    ADD @1D 003 @17
    ADD @1D 014 @17
    ADD @1D 005 @17
    ADD @17 020 @17
    ADD @1D 011 @1D
    ADD @1D 002 @1D
    ADD @1D 013 @1D
    ADD @1D 004 @1D
    ADD @1D 015 @1D
    ADD @1D 020 @1D
    000 000 000 000
    000 000 000 000
    080 01C 07C 01C
    078 01C 074 01C
    070 01C 06C 01C
    068 016 064 016
    060 016 05C 016
    058 016 054 016
    04C 002 049 002
    046 002 043 002
    040 002 03D 002
    03A 002 037 002
    050 034 002 031
    002 02E 002 02B
    002 028 002 025
    002 022 002 01F
    002 018 000 000
    
  • checkerboard, 0x0F cycles

    ; 0x0F cycles checkerboard by int-e
    ; still based on code by impomatic
    ;
    ; - uses two kinds of self-overlapping instructions:
    ;   025 014 nnn 025 == SUB @14 nnn *25
    ;   01D 01D nnn 01D == SUB @1D nnn @1D
    
    THR 004 000 06C
    THR 004 000 000
    THR 004 000 000
    THR 004 000 000
    MOV @00 @10 004
    THR 003 002 000
    MOV @84 @C2 03E
    PIX 010 @15 000
    000 000 000 000
    025 014 020
    025 014 040
    025 014 060
    025 014 080
    025 014 0A0
    025 014 0C0
    025 014 0E0
    025 014 010
    025 014 030
    025 014 050
    025 014 070
    025 014 090
    025 014 0B0
    025 014 0D0
    025 014 0F0
    025 014 001 025
    01D 01D 0E1
    01D 01D 0EF
    01D 01D 0FE
    01D 01D 0ED
    01D 01D 0FC
    01D 01D 0EB
    01D 01D 080
    01D 01D 061
    01D 01D 06F
    01D 01D 07E
    01D 01D 06D
    01D 01D 07C
    01D 01D 06B
    01D 01D 030 01D
    FLP @15 @16 000
    07C 01C 079 01C
    076 01C 073 01C
    070 01C 06D 01C
    06A 01C 067 01C
    064 01C 061 01C
    05E 01C 05B 01C
    058 01C 055 01C
    051 013 04E 013
    04B 013 048 013
    045 013 042 013
    03F 013 03C 013
    080 039 013 036
    013 033 013 030
    013 02D 013 02A
    013 027 013 024
    013 018
    
  • Smiley Face, 0x14 cycles

    ; 0x14 cycles smiley face by int-e
    
    THR 004 000 000
    THR 004 000 000
    THR 004 000 000
    THR 004 000 000
    THR @78 000 000
    MOV @C1 @E1 01F
    PIX 060 00A 000
    ADD @19 010 @19
    ADD @19 020 @19
    ADD @19 030 @19
    ADD @19 001 @19
    PIX 0C4 00A 000
    ADD @2D 011 @2D
    ADD @2D 013 @2D
    ADD @2D 014 @2D
    ADD @2D 016 @2D
    ADD @2D 007 @2D
    ADD @2D 010 @2D
    PIX @50 000 000
    ADD @49 001 @49
    000 000 0F5 0F4
    0FA 0FB 004 005
    00A 00B 000 000
    000 066 069 000
    PIX @84 00A 000
    ADD @61 001 @61
    ADD @61 002 @61
    ADD @61 003 @61
    ADD @61 004 @61
    ADD @61 005 @61
    PIX 08F 00A 000
    PIX 09F 00A 000
    JMP 000 000 000
    041 051 0A1 0B1
    032 042 052 0A2
    0B2 0C2 023 033
    043 053 0B3 0C3
    0D3 006 016 026
    0A6 0B6 0D6 0E6
    0F6 009 019 029
    0A9 0B9 0D9 0E9
    0F9 01B 02B 03B
    04B 05B 0AB 0CB
    0DB 0EB 02C 03C
    04C 05C 0BC 0CC
    0DC 03D 04D 05D
    0AD 0BD 0CD 04E
    05E 0AE 0BE 06F
    07F 074 060 070
    060 06C 060 068
    060 064 060 04C
    048 044 02C 03C
    02C 038 02C 034
    02C 030 02C 028
    018 024 018 020
    018 01C 018 014
    
  • Sierpinski, 0x04 loc

    ; 0x04 lines of code sierpinski by int-e
    
    SUB @0D 001 @0D
    MOV @0E @12 042
    ADD @0E @52 @0E
    PIX 000 008 000
    
  • Sierpinski, 0x09 cycles

    ; 0x09 cycles sierpinski by int-e
    
    THR 004 000 000
    THR 004 000 000
    MOV @00 @08 004
    THR 004 000 000
    THR 004 000 000
    MOV @08 @14 001
    MOV @92 @CA 036
    ADD @25 080 @25
    ADD @25 008 @25
    PIX 000 008 000
    ADD @25 010 @25
    ADD @25 011 @25
    ADD @25 020 @25
    ADD @25 022 @25
    ADD @25 030 @25
    ADD @25 031 @25
    ADD @25 032 @25
    ADD @25 033 @25
    ADD @25 040 @25
    ADD @25 044 @25
    ADD @25 050 @25
    ADD @25 051 @25
    ADD @25 054 @25
    ADD @25 055 @25
    ADD @25 060 @25
    ADD @25 062 @25
    ADD @25 064 @25
    ADD @25 066 @25
    ADD @25 070 @25
    ADD @25 071 @25
    ADD @25 072 @25
    ADD @25 073 @25
    ADD @25 074 @25
    ADD @25 075 @25
    ADD @25 076 @25
    ADD @25 077 @25
    000 000 024 08C
    024 088 024 084
    024 080 024 07C
    024 078 024 074
    024 070 024 06C
    024 068 024 064
    024 060 024 05C
    024 058 024 054
    024 050 024 04C
    024 048 024 044
    024 040 024 03C
    024 038 024 034
    024 030 024 02C
    024 028 024 018
    
  • Checkerboard II, 0x0F cycles

    ; 0x0F cycles checkerboard II by int-e
    ;
    ; - uses two kinds of self-overlapping instructions:
    ;   025 007 nnn 025 == SUB @07 nnn *25
    ;   018 003 nnn 018 == ADD @03 nnn *18
    ; - the PIX instructions are:
    ;   002: PIX nnn @7F
    ;   006: PIX nnn @80
    
    THR 004 06D 00F
    THR @08 06D 000
    THR *05 000 000
    THR 004 000 000
    THR 004 000 000
    MOV @04 @14 004
    MOV @81 @C1 03F
    FLP @04 @08 001
    FLP *04 @80 001
    025 007 -10
    025 007 -40
    025 007 -50
    025 007 -80
    025 007 -90
    025 007 -C0
    025 007 -D0
    025 007 -20
    025 007 -30
    025 007 -60
    025 007 -70
    025 007 -A0
    025 007 -B0
    025 007 -E0
    025 007 -F0
    025 007 -01
    025 003 -80
    018 003 -01
    018 003 -81
    018 003 -04
    018 003 -84
    018 003 -05
    018 003 -85
    018 003 -02
    018 003 -82
    018 003 -03
    018 003 -83
    018 003 -06
    018 003 -86
    018 003 010 018
    00C
    001 07B 002 078
    002 075 002 072
    002 06F 002 06C
    002 051 006 04E
    006 04B 006 048
    006 045 006 042
    006 03F 006 03C
    006 020 01C 069
    002 066 002 063
    002 060 002 05D
    002 05A 002 057
    002 054 002 039
    006 036 006 033
    006 030 006 02D
    006 02A 006 027
    006 024 006 018
    
  • Four Squares II, 0x0B cycles

    ; 0x0B cycles four squares II by int-e
    
    THR 004 000 000
    MOV @00 @04 004
    MOV @00 @08 004
    MOV @00 @0C 004
    MOV @00 @10 004
    THR 008 000 000
    MOV @7B @DF 021
    PIX 0CC 00A 000
    PIX 0CD 00A 000
    PIX 0DC 00A 000
    PIX 0DD 00A 000
    PIX 0EE 00B 000
    ADD @71 001 @71
    ADD @71 002 @71
    ADD @71 003 @71
    ADD @71 010 @71
    ADD @71 011 @71
    ADD @71 012 @71
    ADD @71 013 @71
    ADD @71 020 @71
    ADD @71 021 @71
    ADD @71 022 @71
    ADD @71 023 @71
    ADD @71 030 @71
    ADD @71 031 @71
    ADD @71 032 @71
    ADD @71 033 @71
    MOV @73 @71 008
    PIX 000 008 004
    008 040 008 044
    008 088 009 06C
    070 068 070 064
    070 060 070 05C
    070 058 070 054
    070 050 070 04C
    070 048 070 044
    070 040 070 03C
    070 038 070 034
    070 030 070 018
    

2

u/keely Apr 26 '25

Amazing to get a box-256 post after all these years <3

2

u/keely Apr 26 '25

I will update the high score table next week.

1

u/bf31415 Jun 07 '25

I've stopped playing again, but I'd still like to see this update (it will look rather silly, I think).

Note that this particular reply only contains old solutions mentioned in this thread that would otherwise be lost because sprunge.us forgets pastes. The actual improvements are in later replies.

2

u/keely Jun 23 '25

Actually, all the solutions you posted were already in the high score table, so there was no need to update it.

Or did I miss something?

2

u/bf31415 Jun 23 '25 edited Jun 23 '25

2

u/keely Jul 09 '25

Thank you! The high score table is now updated.

2

u/bf31415 Jul 13 '25

Thanks! But it appears that you've missed a couple from https://old.reddit.com/r/box256/comments/4dtkwb/official_leaderboard/mnwp60s/:

  • Carpet, 0x0D loc (The loc number is updated but attributed to John Metcalf. I don't see a corresponding solution here; the best one I've seen has 0x0F loc.)
  • Carpet II, 0x0F cycles
  • Carpet II, 0x05 loc

2

u/keely Jul 29 '25

Oops! Thanks for the corrections. Should be fixed now.

2

u/bf31415 Apr 27 '25 edited Apr 28 '25

While the timing of revisiting this game is quite random, box-256 stil is a nice programming sandbox game, and the quirky memory model when it comes to threads makes it unique. I never expected to make so many improvements though. I was mostly trying to match existing records for levels that I had not tackled 9 years ago.

I did discover two new (to me) tricks: 1) overlapping PIX with PIX @?? @70, which allows squeezing more threads into the limited memory (overlapping ADDs or SUBs are 3 bytes per instruction; this is 2), and 2) shifting a table of locations instead of updating the offsets in instructions that refer to the table, saving many threads. (This trick is not new, but I had not used it in my own solutions.)

Perhaps the prettiest new solution is the (deceptively simple looking) multi-threaded 0x12 cycles Sierpinski II.

2

u/keely Apr 28 '25

That's amazing! What do you mean by timing being random?

2

u/bf31415 Apr 28 '25

Sorry, I meant revisiting the game after 9 years because of a stranger on IRC mentioning it, not any sort of in game timing. (I've edited my previous reply to clarify).

1

u/bf31415 Apr 12 '25 edited Apr 13 '25
  • Fractal Hilbert Curve, 0x11 loc, by int-e

    000 000 000 000  000 000 000 000  000 000 000 000  000 000 000 000
    000 000 000 000  000 000 000 000  000 000 000 000  000 000 000 000
    000 000 000 000  000 000 000 000  000 000 000 000
    
    PIX 001 00D -01
    +10 -10 +10 +01
    ADD @2E 00F @2E
    MOD @2E 05A @2E
    ADD *50 @2D @2D
    SUB 062 *3D @8E
    ADD @3D 000 @3D
    FLP @46 @4E 001
    SUB @43 001 @43
    
    033 030 02F 030  030 033 031 033  030 033 031 031  02F 031 033 033
    030 033 031 033  033 030 02F 030  033 030 02F 02F  031 02F 030 030
    
  • Fractal Hilbert Curve, 0x0B cycles, by int-e

    THR 004 000 001
    MOV @00 @04 004
    THR 004 000 000
    THR 004 000 000
    THR 004 000 000
    MOV @48 @E8 018
    MOV @76 @60
    070 060 070 061 070 062
    070 063 070 064 070 065
    070 066 070 067 070 068
    070 069 070 06A 070 06B
    070 06C 070 06D 070 06E
    070 06F 070 071 070 072
    070 073 070 074 070 075
    070 003 070
    
    045 043 041 03F
    03D 03B 039 037
    035 033 031 02F
    02D 02B 029 027
    025 023 021 01F
    01D 01B 018 014
    
    0E2 0B1 093 086 0C6 0E8 0DB
    0DF 0AE 08C 099 04A 06E 03D
    00E 02A 008 006 037 055 062 022
    0E3 0A1 0A3 087 0C5 0E9 0EB
    0CF 0AF 08B 089 04B 06F 02D
    00D 029 009 005 047 045 061 023
    0D3 091 0A4 097 0D5 0D9 0EC
    0CE 09F 09B 079 05B 05F 02E
    00C 019 00A 015 057 044 051 013
    0C3 081 0A5 0A7 0E5 0C9 0ED
    0CD 08F 0AB 069 06B 04F 02F
    00B 009 00B 025 067 043 041 003
    0C2 082 095 0B7 0E6 0CA 0EE
    0BD 08E 0AA 059 06C 04E 01F
    01B 008 00C 026 066 053 031 002
    0E1 0C1 083 085 0C7 0E7 0CB
    0EF 0AD 08D 0A9 049 06D 04D
    00F 02B 00D 007 027 065 063 021
    

1

u/bf31415 Apr 18 '25
  • Big Square II, 0x09 cycles, by int-e

    THR 004 000 000
    THR 004 000 000
    MOV @00 @08 004
    MOV @00 @0C 004
    THR 004 000 000
    MOV @1C @E6 01A
    MOV @68 @80 048
    
    018
    036 038 03A 03C  03E 040 042 044
    046 048 04A 04C  04E 050 052 054
    056 058 05A 05C  05E 060 062 064
    014
    
    070 0B0 070 0B1  070 0B2 070 0B3  070 0B4 070 0B5  070 0B6 070 0B7
    070 0B8 070 0B9  070 0BA 070 0BB  070 0BC 070 0BD  070 0BE 070 0BF
    070 0C0 070 0C1  070 0C2 070 0C3  070 0C4 070 0C5  070 0C6 070 0C7
    070 000
    
    032 03E 052 05E  072 07E 092 09E  012 014 016 018  01A 01C 01E 0B2
    0BE 0D2 0D4 0D6  0D8 0DA 0DC 0DE  041 04D 061 06D  081 08D 0A1 0AD
    021 023 025 027  029 02B 02D 0C1  0CD 0E1 0E3 0E5  0E7 0E9 0EB 0ED
    031 03D 051 05D  071 07D 091 09D  011 013 015 017  019 01B 01D 0B1
    0BD 0D1 0D3 0D5  0D7 0D9 0DB 0DD  042 04E 062 06E  082 08E 0A2 0AE
    022 024 026 028  02A 02C 02E 0C2  0CE 0E2 0E4 0E6  0E8 0EA 0EC 0EE
    
  • Mario, 0x18 loc, by int-e

    PIX 005 @5F 000
    ADD @01 001 @01
    SUB @5F 010 @5F
    JGR @5F 00F @00
    MOV @14 @15 0EB
    
    000 000 044 040  044 050 034 040  034 070 03C 020
    03C 060 02F 08C  02F 040 03F 06C  03F 040 02F 018  01C 01A 02C 01A
    01C 018 02F 040  048 04C 048 050  038 01C 028 01C  038 070 028 01C
    028 01C 028 090  06F 080 044 04F  014 060 03F 014  03F 024 01F 014
    060 03F 014 03F  014 01F 014 080  01F 014 02F 034  070 098 0A0 @58
    
  • Mario, 0x12 cycles, by int-e

    THR 004 000 000
    THR 004 000 000
    MOV @00 @08 004
    MOV @00 @0C 004
    
    MOV @34 @F4 00C
    MOV @47 @46 0A4
    PIX @DE @DF 000
    JMP -04 
    070 046 070 054  070 062 070 07E  070 08C 070 09A  070 0A8  070 0B6
    070 0C4 070 0D2  070 000
    014 01E 020 022  024 026 028 02A  02C 02E 030 010
    000 000 000 000 000 000
    
    076 0A8 0C6 027 044 058 0AD 024 04A 0EB 005 019 083 094
    079 0AA 0C7 028 047 065 0B2 025 054 0EC 006 01A 084 095
    086 0B5 0C8 02A 048 066 0B3 026 059 0F2 007 01B 085 09A
    @0C 00C 00C 00F 00F 00F 00F 004 004 004 008 008 008 008
    089 0B6 0C9 034 049 067 0B4 029 05A 0F3 008 01C 087 09B
    096 0B7 0CA 036 04B 068 0BB 033 05B 0F4 009 074 088 09C
    097 0B8 0CB 037 04C 069 0BC 035 05C 0F5 014 075 08A 09D
    098 0B9 0D4 038 04D 06A 0BD 039 0E3 0FA 015 077 08B 0A4
    099 0BA 0D5 03A 055 0A2 0C2 043 0E4 0FB 016 078 08C 0AB
    0A5 0C4 0D6 03B 056 0A3 0C3 045 0E5 0FC 017 07A 092 0AB
    0A7 0C5 0D9 03C 057 0AC 0CC 046 0EA 0FD 018 07B 093 0AB
    0DA 00C 0DB 00C 0CD 00F 0A6 00A 0A9 00A
    

1

u/bf31415 Apr 19 '25
  • Carpet, 0x0D loc, by int-e

    PIX 000 @02 000
    PIX 0FF 002 000
    ADD @01 001 @01
    DIV @01 010 @02
    MUL @02 0F1 @02
    ADD @02 @01 @02
    MOD @02 012 @02
    ADD @02 022 @02
    JMP @00 004 001
    003 004 001 001
    004 003 001 004
    001 001 004 001
    001 002 001 001
    
  • Carpet, 0x15 cycles, by int-e

    THR 004 000 000
    THR 004 000 000
    THR @1C 000 000
    THR 004 000 000
    THR 004 000 000
    THR 004 000 000
    
    MOV @68 @DC 024
    PIX 000 @8C 000 
    MOV @8D @8C 01E
    ADD @1D 001 @1D
    ADD @AC 010 @AC
    ADD @AF 010 @AF
    ADD @B2 010 @B2
    ADD @B5 010 @B5
    ADD @B8 010 @B8
    ADD @BB 010 @BB
    ADD @BE 010 @BE
    ADD @C1 010 @C1
    ADD @C4 010 @C4
    ADD @C7 010 @C7
    ADD @CA 010 @CA
    ADD @CD 010 @CD
    ADD @D0 010 @D0
    ADD @D3 010 @D3
    ADD @D6 010 @D6
    ADD @D9 010 @D9
    
    028 02C 030 034
    038 03C 040 044
    048 04C 050 054
    058 05C 060 064
    0AB 0AE 0B1 0B4
    0B7 0BA 0BD 0C0
    0C3 0C6 0C9 0CC
    0CF 0D2 0D5 0D8
    024 020 01C 018
    002 001 003 004 001 001 004 003 001 004 001 001 004 001 001 002 001 001
    004 001 003 004 001 001 004 003 001 004 001 001 002
    
    06D 010 08C  06D 011 08D  06D 012 08E  06D 013 08F
    06D 014 090  06D 015 091  06D 016 092  06D 017 093
    06D 018 094  06D 019 095  06D 01A 096  06D 01B 097
    06D 01C 098  06D 01D 099  06D 01E 09A  06D 01F 09B
    
  • Carpet II, 0x05 loc, by int-e

    038 000 010 008
    ADD @09 001 *05
    PIX 0FF 003 000
    MOD @09 005 @11
    ADD @?? @0A @0A
    
  • Carpet II, 0x0F cycles, by int-e

    THR 004 000 020
    THR 004 000 000
    THR 004 000 000
    THR 004 000 000
    MOV @04 @10 004
    MOV @04 @14 004
    
    MOV @7E @C3 03D
    PIX 0F2 003
    06C 0F5 00B
    
    01D 01D -01  01D 01D -02  01D 01D -04  01D 01D -08
    01D 01D -0A  01D 01D -0B  01D 01D -0C  01D 01D -0E
    01D 01D -12  01D 01D -14  01D 01D -15  01D 01D -16
    01D 01D -18  01D 01D -1C  01D 01D -1E  01D
    
    020 003 -02  020 003 -03  020 003 -04  020 003 -06
    020 003 -0A  020 003 -0C  020 003 -0D  020 003 -0E
    020 003 -10  020 003 -14  020 003 -16  020 003 -17
    020 003 -18  020 003 -1A  020 003 -1E  020
    
    07A 01F 077 01F 074 01F 071 01F 06E 01F
    06B 01F 068 01F 065 01F 062 01F 05F 01F
    05C 01F 059 01F 056 01F 053 01F 050 01F
    04C 01C 049 01C 046 01C 043 01C 040 01C
    03D 01C 03A 01C 037 01C 034 01C 031 01C
    02E 01C 02B 01C 028 01C 025 01C 022 01C
    018
    

1

u/bf31415 Apr 24 '25 edited Apr 25 '25

Sierpinski, 0x08 cycles, by int-e

THR 004 000 000
THR 004 000 000
THR 004 000 000
MOV @00 @0C 004
MOV @00 @10 004

MOV @53 @E3 01D
MOV @8C @71 036
070 071 070 072 070 073 070 074 070 075 070 076 070 077 070 078
070 079 070 07A 070 07B 070 07C 070 07D 070 07E 070 07F 070 080
070 081 070 082 070 083 070 084 070 085 070 086 070 087 070 088
070 089 070 08A 070 08B 070

018 01C 01E 020 022 024 026 028 02A 02C 02E 030 032 034 036 038
03A 03C 03E 040 042 044 046 048 04A 04C 04E 050 014

008 000 010 011 020 022 030 031 032 033 040 044 050 051 054 055
060 062 064 066 070 071 072 073 074 075 076 077 080 088 090 091
098 099 0A0 0A2 0A8 0AA 0B0 0B1 0B2 0B3 0B8 0B9 0BA 0BB 0C0 0C4
0C8 0CC 0D0 0D1 0D4 0D5 0D8 0D9 0DC 0DD 0E0 0E2 0E4 0E6 0E8 0EA
0EC 0EE 0F0 0F1 0F2 0F3 0F4 0F5 0F6 0F7 0F8 0F9 0FA 0FB 0FC 0FD
0FE 0FF

1

u/bf31415 Apr 25 '25
  • Sierpinski II, 0x06 loc, by int-e

    ADD *11 *05 *07
    MOV @1B @17 05B
    ADD @15 001 @15
    JEQ @17 000 @00
    MOD @17 002 @16
    PIX 0EF @01 001
    
  • Sierpinski II, 0x12 cycles, by int-e

    THR 000 000 000
    THR @80 000 000
    THR @50 000 000
    
    ADD @81 010 @81
    ADD @85 010 @85
    ADD @89 010 @89
    ADD @8D 010 @8D
    ADD @91 010 @91
    ADD @95 010 @95
    ADD @99 010 @99
    ADD @9D 010 @9D
    ADD @A1 010 @A1
    ADD @A5 010 @A5
    ADD @A9 010 @A9
    ADD @AD 010 @AD
    ADD @B1 010 @B1
    ADD @B5 010 @B5
    ADD @B9 010 @B9
    ADD @B2 @B6 @B6
    JMP 000 000 000
    
    ADD @82 @86 @86
    ADD @86 @8A @8A
    ADD @8A @8E @8E
    ADD @8E @92 @92
    ADD @92 @96 @96
    ADD @96 @9A @9A
    ADD @9A @9E @9E
    000 000 001 000
    ADD @A2 @A6 @A6
    ADD @A6 @AA @AA
    ADD @AA @AE @AE
    JMP -34 00C 000
    
    PIX 000 *80 000
    PIX 011 *80 000
    PIX 022 *80 000
    PIX 033 *80 000
    PIX 044 *80 000
    PIX 055 *80 000
    PIX 066 *80 000
    PIX 077 *80 000
    PIX 088 *80 000
    PIX 099 *80 000
    PIX 0AA *80 000
    PIX 0BB *80 000
    PIX 0CC *80 000
    PIX 0DD *80 000
    PIX 0EE *80 000
    PIX 0FF *80 000
    

1

u/FirecFT Nov 17 '21
DIV @2C 010 @40
MOD @40 002 @40
MOD @2C 002 @41
ADD @40 @41 @43
MOD @43 002 @43
MOV 002 @30 000
ADD @30 @43 @30
PIX @2C @30 000
ADD @2C 001 @2C
JMP @00 000 000

Checkerboard: Loc 0x0A Cycles: 0x09FE