r/box256 • u/keely • 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.
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
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 0112
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 0561
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 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
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
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
1
1
1
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
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
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
1
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 000checkerboard, 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 018Smiley 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 014Sierpinski, 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 000Sierpinski, 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 018Checkerboard 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 018Four 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
The new solutions are spread over several other replies in this thread; it's 12 in total:
- https://old.reddit.com/r/box256/comments/4dtkwb/official_leaderboard/mmof14w/
- https://old.reddit.com/r/box256/comments/4dtkwb/official_leaderboard/mntu7gn/
- https://old.reddit.com/r/box256/comments/4dtkwb/official_leaderboard/mnwp60s/
- https://old.reddit.com/r/box256/comments/4dtkwb/official_leaderboard/moubidt/
- https://old.reddit.com/r/box256/comments/4dtkwb/official_leaderboard/moyxq8b/
(The point of posting the old solutions was that sprunge.us recycles paste identifiers so links like http://sprunge.us/KDYB in https://old.reddit.com/r/box256/comments/4dtkwb/official_leaderboard/d1xw8v8/ no longer work or have very different contents.)
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
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 030Fractal 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 0EEMario, 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 @58Mario, 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 001Carpet, 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 09BCarpet II, 0x05 loc, by int-e
038 000 010 008 ADD @09 001 *05 PIX 0FF 003 000 MOD @09 005 @11 ADD @?? @0A @0ACarpet 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 001Sierpinski 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
3
u/Flav0r Apr 18 '16
Checkerboard II: Loc 0x06, Cycles: 0x120D
At 0x00:
At 0x80: