Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #AOC 2019 day 13 source code annotations
- #an unofficial fan decomipilation by kms70847
- #determine part. This "+" operator is a "*" during part 2.
- 1, 380, 379, 385 # 0: IS_PART_ONE = ONE + ZERO
- #crash if last memory position is corrupted
- 1008, 2799, 144351, 381 # 4: VAL = state[2799] == 144351
- 1005, 381, 12 # 8: if VAL: GOTO 12
- 99 # 11: exit()
- #set up call stack
- 109, 2800 # 12: relative_base += 2800
- #display initial screen state.
- 1102, 0, 1, 383 # 14: SCREEN_Y = 0
- 1101, 0, 0, 382 # 18: SCREEN_X = 0
- 21001, 382, 0, 1 # 22: state[relative_base + 1] = SCREEN_X
- 21001, 383, 0, 2 # 26: state[relative_base + 2] = SCREEN_Y
- 21102, 37, 1, 0 # 30: state[relative_base] = 37
- 1106, 0, 578 # 34: GOTO 578 -- call get_tile(x,y), then return here
- 4, 382 # 37: print(SCREEN_X)
- 4, 383 # 39: print(SCREEN_Y)
- 204, 1 # 41: print(state[relative_base + 1])
- 1001, 382, 1, 382 # 43: SCREEN_X = SCREEN_X + 1
- 1007, 382, 45, 381 # 47: VAL = SCREEN_X < 45
- 1005, 381, 22 # 51: if VAL: GOTO 22
- 1001, 383, 1, 383 # 54: SCREEN_Y = SCREEN_Y + 1
- 1007, 383, 24, 381 # 58: VAL = SCREEN_Y < 24
- 1005, 381, 18 # 62: if VAL: GOTO 18
- #end of display initial screen state
- #exit if part 1
- 1006, 385, 69 # 65: if not IS_PART_ONE: GOTO 69
- 99 # 68: exit()
- #initial score
- 104, -1 # 69: print(-1)
- 104, 0 # 71: print(0)
- 4, 386 # 73: print(SCORE)
- #get and decode user input
- 3, 384 # 75: PADDLE_DIR_OR_RESTART_PHYSICS = input()
- 1007, 384, 0, 381 # 77: VAL = PADDLE_DIR_OR_RESTART_PHYSICS < 0
- 1005, 381, 94 # 81: if VAL: GOTO 94
- 107, 0, 384, 381 # 84: VAL = 0 < PADDLE_DIR_OR_RESTART_PHYSICS
- 1005, 381, 108 # 88: if VAL: GOTO 108
- 1105, 1, 161 # 91: GOTO 161
- #skip moving the paddle if you try to move it left into a wall.
- 107, 1, 392, 381 # 94: VAL = 1 < PADDLE_POSITION_X
- 1006, 381, 161 # 98: if not VAL: GOTO 161
- 1102, 1, -1, 384 # 101: PADDLE_DIR_OR_RESTART_PHYSICS = -1
- 1105, 1, 119 # 105: GOTO 119
- #skip moving the paddle if you try to move it right into a wall.
- 1007, 392, 43, 381 # 108: VAL = PADDLE_POSITION_X < 43
- 1006, 381, 161 # 112: if not VAL: GOTO 161
- 1101, 0, 1, 384 # 115: PADDLE_DIR_OR_RESTART_PHYSICS = 1
- #set old paddle position to an empty cell
- 20102, 1, 392, 1 # 119: state[relative_base + 1] = PADDLE_POSITION_X
- 21102, 1, 22, 2 # 123: state[relative_base + 2] = 22
- 21102, 0, 1, 3 # 127: state[relative_base + 3] = 0
- 21101, 0, 138, 0 # 131: state[relative_base] = 138
- 1106, 0, 549 # 135: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
- #set new paddle position to a paddle cell
- 1, 392, 384, 392 # 138: PADDLE_POSITION_X = PADDLE_POSITION_X + PADDLE_DIR_OR_RESTART_PHYSICS
- 20102, 1, 392, 1 # 142: state[relative_base + 1] = PADDLE_POSITION_X
- 21102, 1, 22, 2 # 146: state[relative_base + 2] = 22
- 21102, 3, 1, 3 # 150: state[relative_base + 3] = 3
- 21102, 161, 1, 0 # 154: state[relative_base] = 161
- 1105, 1, 549 # 158: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
- #PHYSICS TICK PART 1 - obstacles in front of ball
- #query state of cell in front of ball
- 1102, 1, 0, 384 # 161: PADDLE_DIR_OR_RESTART_PHYSICS = 0
- 20001, 388, 390, 1 # 165: state[relative_base + 1] = BALL_POSITION_X + BALL_VELOCITY_X
- 20102, 1, 389, 2 # 169: state[relative_base + 2] = BALL_POSITION_Y
- 21102, 180, 1, 0 # 173: state[relative_base] = 180
- 1105, 1, 578 # 177: GOTO 578 -- call get_tile(x,y), then return here
- #if cell is empty: skip "destruction" and "bounce" code
- 1206, 1, 213 # 180: if not state[relative_base + 1]: GOTO 213
- #if cell is wall or paddle, skip "destruction" code
- 1208, 1, 2, 381 # 183: VAL = state[relative_base + 1] == 2
- 1006, 381, 205 # 187: if not VAL: GOTO 205
- #cell must be block. Destroy it.
- 20001, 388, 390, 1 # 190: state[relative_base + 1] = BALL_POSITION_X + BALL_VELOCITY_X
- 20101, 0, 389, 2 # 194: state[relative_base + 2] = BALL_POSITION_Y
- 21102, 205, 1, 0 # 198: state[relative_base] = 205
- 1105, 1, 393 # 202: GOTO 393 -- call destroy_block_and_maybe_quit(x,y), then return here
- #walls and blocks and paddles make ball bounce, reversing its x velocity
- 1002, 390, -1, 390 # 205: BALL_VELOCITY_X = BALL_VELOCITY_X * -1
- 1101, 1, 0, 384 # 209: PADDLE_DIR_OR_RESTART_PHYSICS = 1
- #END OF PHYSICS TICK PART 1
- #PHYSICS TICK PART 2 - obstacles above/below ball
- #almost identical to part 1, so skip to 264 if you're bored.
- #get value of cell above/below ball (if it's moving up/down respectively)
- 21002, 388, 1, 1 # 213: state[relative_base + 1] = BALL_POSITION_X
- 20001, 389, 391, 2 # 217: state[relative_base + 2] = BALL_POSITION_Y + BALL_VELOCITY_Y
- 21101, 228, 0, 0 # 221: state[relative_base] = 228
- 1106, 0, 578 # 225: GOTO 578 -- call get_tile(x,y), then return here
- #if the cell is empty: skip "destruction" and "bounce" code
- 1206, 1, 261 # 228: if not state[relative_base + 1]: GOTO 261
- #if the cell is a wall, skip "destruction" code
- 1208, 1, 2, 381 # 231: VAL = state[relative_base + 1] == 2
- 1006, 381, 253 # 235: if not VAL: GOTO 253
- #cell must be block. Destroy it.
- 20101, 0, 388, 1 # 238: state[relative_base + 1] = BALL_POSITION_X
- 20001, 389, 391, 2 # 242: state[relative_base + 2] = BALL_POSITION_Y + BALL_VELOCITY_Y
- 21101, 253, 0, 0 # 246: state[relative_base] = 253
- 1105, 1, 393 # 250: GOTO 393 -- call destroy_block_and_maybe_quit(x,y), then return here
- #walls and blocks and paddles make ball bounce, reversing its y velocity.
- 1002, 391, -1, 391 # 253: BALL_VELOCITY_Y = BALL_VELOCITY_Y * -1
- 1102, 1, 1, 384 # 257: PADDLE_DIR_OR_RESTART_PHYSICS = 1
- #if the ball has changed direction this frame, return to 161 and do another physics tick
- 1005, 384, 161 # 261: if PADDLE_DIR_OR_RESTART_PHYSICS: GOTO 161
- #END OF PHYSICS TICK PART 2
- #PHYSICS TICK PART 3 - obstacles diagonal to ball
- #almost identical to part 2, so skip to 319 if you're bored.
- #query state of the cell diagonal to the ball that the ball is moving towards
- 20001, 388, 390, 1 # 264: state[relative_base + 1] = BALL_POSITION_X + BALL_VELOCITY_X
- 20001, 389, 391, 2 # 268: state[relative_base + 2] = BALL_POSITION_Y + BALL_VELOCITY_Y
- 21102, 1, 279, 0 # 272: state[relative_base] = 279
- 1106, 0, 578 # 276: GOTO 578 -- call get_tile(x,y), then return here
- #if the cell is empty, go to 316
- 1206, 1, 316 # 279: if not state[relative_base + 1]: GOTO 316
- #if the cell is a wall, skip "destruction" code
- 1208, 1, 2, 381 # 282: VAL = state[relative_base + 1] == 2
- 1006, 381, 304 # 286: if not VAL: GOTO 304
- #cell must be block. Destroy it.
- 20001, 388, 390, 1 # 289: state[relative_base + 1] = BALL_POSITION_X + BALL_VELOCITY_X
- 20001, 389, 391, 2 # 293: state[relative_base + 2] = BALL_POSITION_Y + BALL_VELOCITY_Y
- 21101, 304, 0, 0 # 297: state[relative_base] = 304
- 1106, 0, 393 # 301: GOTO 393 -- call destroy_block_and_maybe_quit(x,y), then return here
- #walls and blocks and paddles make ball bounce, reversing both x and y velocity
- 1002, 390, -1, 390 # 304: BALL_VELOCITY_X = BALL_VELOCITY_X * -1
- 1002, 391, -1, 391 # 308: BALL_VELOCITY_Y = BALL_VELOCITY_Y * -1
- 1102, 1, 1, 384 # 312: PADDLE_DIR_OR_RESTART_PHYSICS = 1
- #if the ball has changed directions again, do yet another physics tick
- 1005, 384, 161 # 316: if PADDLE_DIR_OR_RESTART_PHYSICS: GOTO 161
- #END OF PHYSICS TICK PART 3
- #set ball's previous position to "empty"
- 20101, 0, 388, 1 # 319: state[relative_base + 1] = BALL_POSITION_X
- 20101, 0, 389, 2 # 323: state[relative_base + 2] = BALL_POSITION_Y
- 21102, 1, 0, 3 # 327: state[relative_base + 3] = 0
- 21101, 0, 338, 0 # 331: state[relative_base] = 338
- 1106, 0, 549 # 335: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
- #update ball's position and set new cell to "ball"
- 1, 388, 390, 388 # 338: BALL_POSITION_X = BALL_POSITION_X + BALL_VELOCITY_X
- 1, 389, 391, 389 # 342: BALL_POSITION_Y = BALL_POSITION_Y + BALL_VELOCITY_Y
- 20101, 0, 388, 1 # 346: state[relative_base + 1] = BALL_POSITION_X
- 21002, 389, 1, 2 # 350: state[relative_base + 2] = BALL_POSITION_Y
- 21101, 4, 0, 3 # 354: state[relative_base + 3] = 4
- 21101, 365, 0, 0 # 358: state[relative_base] = 365
- 1105, 1, 549 # 362: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
- #if ball is below paddle, you die; drop score to zero and exit. Otherwise, game continues at user input step at line 75
- 1007, 389, 23, 381 # 365: VAL = BALL_POSITION_Y < 23
- 1005, 381, 75 # 369: if VAL: GOTO 75
- 104, -1 # 372: print(-1)
- 104, 0 # 374: print(0)
- 104, 0 # 376: print(0)
- 99 # 378: exit()
- #GLOBAL VARIABLES
- 0, # 379 (data) aka ZERO
- 1, # 380 (data) aka ONE
- 0, # 381 (data) aka VAL
- 0, # 382 (data) aka SCREEN_X
- 0, # 383 (data) aka SCREEN_Y
- 0, # 384 (data) aka PADDLE_DIR_OR_RESTART_PHYSICS
- 0, # 385 (data) aka IS_PART_ONE
- 0, # 386 (data) aka SCORE
- 462, # 387 (data) aka BLOCKS_REMAINING
- 20, # 388 (data) aka BALL_POSITION_X
- 19, # 389 (data) aka BALL_POSITION_Y
- 1, # 390 (data) aka BALL_VELOCITY_X
- 1, # 391 (data) aka BALL_VELOCITY_Y
- 22, # 392 (data) aka PADDLE_POSITION_X
- #FUNCTIONS
- #Functions work by using `relative base` as a call stack pointer.
- #the calling code pushes arguments and the return address onto the call stack, then jumps to the address of a function.
- #The function inspects the arguments on the call stack, does whatever work it needs, and jumps back to the return address specified by the calling code. Return values, if any, are left on the call stack, but in the "volatile" area just past the call stack pointer.
- #FUNCTION: `destroy_block_and_maybe_quit(x,y)`
- #a brick was struck, so erase it and increment score
- 109, 3 # 393: relative_base += 3
- 21202, -2, 1, 1 # 395: state[relative_base + 1] = state[relative_base - 2]
- 21201, -1, 0, 2 # 399: state[relative_base + 2] = state[relative_base - 1]
- 21102, 0, 1, 3 # 403: state[relative_base + 3] = 0
- 21101, 414, 0, 0 # 407: state[relative_base] = 414
- 1106, 0, 549 # 411: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
- 22102, 1, -2, 1 # 414: state[relative_base + 1] = state[relative_base - 2]
- 21201, -1, 0, 2 # 418: state[relative_base + 2] = state[relative_base - 1]
- 21102, 1, 429, 0 # 422: state[relative_base] = 429
- 1105, 1, 601 # 426: GOTO 601 -- call value_of_block_at(x,y), then return here
- 2101, 0, 1, 435 # 429: state[435] = state[relative_base + 1]
- 1, 386, 0, 386 # 433: SCORE = SCORE + state[0]
- #print score
- 104, -1 # 437: print(-1)
- 104, 0 # 439: print(0)
- 4, 386 # 441: print(SCORE)
- #if no blocks remain: exit
- 1001, 387, -1, 387 # 443: BLOCKS_REMAINING = BLOCKS_REMAINING - 1
- 1005, 387, 451 # 447: if BLOCKS_REMAINING: GOTO 451
- 99 # 450: exit()
- #return to calling code
- 109, -3 # 451: relative_base -= 3
- 2105, 1, 0 # 453: GOTO state[relative_base]
- #FUNCTION: `lol_idk(a,b,c,d,e,f,g)`
- #Some kind of crazy mathematical scrambler. Called exclusively by function `value_of_block_at`.
- #Most likely this is intentionally confusing in order to obfuscate the true value of each block.
- 109, 8 # 456: relative_base += 8
- 22202, -7, -6, -3 # 458: state[relative_base - 3] = state[relative_base - 7] * state[relative_base - 6]
- 22201, -3, -5, -3 # 462: state[relative_base - 3] = state[relative_base - 3] + state[relative_base - 5]
- 21202, -4, 64, -2 # 466: state[relative_base - 2] = state[relative_base - 4] * 64
- 2207, -3, -2, 381 # 470: VAL = state[relative_base - 3] < state[relative_base - 2]
- 1005, 381, 492 # 474: if VAL: GOTO 492
- 21202, -2, -1, -1 # 477: state[relative_base - 1] = state[relative_base - 2] * -1
- 22201, -3, -1, -3 # 481: state[relative_base - 3] = state[relative_base - 3] + state[relative_base - 1]
- 2207, -3, -2, 381 # 485: VAL = state[relative_base - 3] < state[relative_base - 2]
- 1006, 381, 481 # 489: if not VAL: GOTO 481
- 21202, -4, 8, -2 # 492: state[relative_base - 2] = state[relative_base - 4] * 8
- 2207, -3, -2, 381 # 496: VAL = state[relative_base - 3] < state[relative_base - 2]
- 1005, 381, 518 # 500: if VAL: GOTO 518
- 21202, -2, -1, -1 # 503: state[relative_base - 1] = state[relative_base - 2] * -1
- 22201, -3, -1, -3 # 507: state[relative_base - 3] = state[relative_base - 3] + state[relative_base - 1]
- 2207, -3, -2, 381 # 511: VAL = state[relative_base - 3] < state[relative_base - 2]
- 1006, 381, 507 # 515: if not VAL: GOTO 507
- 2207, -3, -4, 381 # 518: VAL = state[relative_base - 3] < state[relative_base - 4]
- 1005, 381, 540 # 522: if VAL: GOTO 540
- 21202, -4, -1, -1 # 525: state[relative_base - 1] = state[relative_base - 4] * -1
- 22201, -3, -1, -3 # 529: state[relative_base - 3] = state[relative_base - 3] + state[relative_base - 1]
- 2207, -3, -4, 381 # 533: VAL = state[relative_base - 3] < state[relative_base - 4]
- 1006, 381, 529 # 537: if not VAL: GOTO 529
- 21202, -3, 1, -7 # 540: state[relative_base - 7] = state[relative_base - 3]
- 109, -8 # 544: relative_base -= 8
- 2105, 1, 0 # 546: GOTO state[relative_base]
- #FUNCTION: set_tile_and_print(x,y,value)
- #some scary self-modifying code in here, but basically it locates the cell belonging to (x,y) in the data region starting at 639, updates its value, and prints it.
- 109, 4 # 549: relative_base += 4
- 1202, -2, 45, 566 # 551: state[566] = state[relative_base - 2] * 45
- 201, -3, 566, 566 # 555: state[566] = state[relative_base - 3] + state[566]
- 101, 639, 566, 566 # 559: state[566] = 639 + state[566]
- 1202, -1, 1, 0 # 563: state[0] = state[relative_base - 1]
- 204, -3 # 567: print(state[relative_base - 3])
- 204, -2 # 569: print(state[relative_base - 2])
- 204, -1 # 571: print(state[relative_base - 1])
- 109, -4 # 573: relative_base -= 4
- 2106, 0, 0 # 575: GOTO state[relative_base]
- #FUNCTION: get_tile(x,y)
- #returns the value of the game field at (x,y)
- 109, 3 # 578: relative_base += 3
- 1202, -1, 45, 594 # 580: state[594] = state[relative_base - 1] * 45
- 201, -2, 594, 594 # 584: state[594] = state[relative_base - 2] + state[594]
- 101, 639, 594, 594 # 588: state[594] = 639 + state[594]
- 20101, 0, 0, -2 # 592: state[relative_base - 2] = state[0]
- 109, -3 # 596: relative_base -= 3
- 2105, 1, 0 # 598: GOTO state[relative_base]
- #FUNCTION: value_of_block_at(x,y)
- #determine how many points you get for destroying the block at (x,y)
- 109, 3 # 601: relative_base += 3
- 22102, 24, -2, 1 # 603: state[relative_base + 1] = 24 * state[relative_base - 2]
- 22201, 1, -1, 1 # 607: state[relative_base + 1] = state[relative_base + 1] + state[relative_base - 1]
- 21102, 1, 547, 2 # 611: state[relative_base + 2] = 547
- 21102, 1, 67, 3 # 615: state[relative_base + 3] = 67
- 21101, 1080, 0, 4 # 619: state[relative_base + 4] = 1080
- 21102, 1, 630, 0 # 623: state[relative_base] = 630
- 1105, 1, 456 # 627: GOTO 456 -- call lol_idk(a,b,c,d,e,f,g), then return here
- 21201, 1, 1719, -2 # 630: state[relative_base - 2] = state[relative_base + 1] + 1719
- 109, -3 # 634: relative_base -= 3
- 2106, 0, 0 # 636: GOTO state[relative_base]
- #DATA: the initial value of each cell of the game field. Probably varies from user to user.
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 2, 2, 2, 0, 0, 1,
- 1, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1,
- 1, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 1,
- 1, 0, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 2, 0, 0, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 1,
- 1, 0, 2, 0, 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 1,
- 1, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 2, 0, 1,
- 1, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
- 1, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
- 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 1,
- 1, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 1,
- 1, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 0, 1,
- 1, 0, 0, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 1,
- 1, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
- 1, 0, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
- 1, 0, 0, 2, 2, 2, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 1,
- 1, 0, 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- #DATA: Seed values for the block score calculation algorithm, probably?
- 9, 39, 41, 83, 13, 97, 81, 2, 94, 70, 54, 80, 64, 53, 86, 83, 73, 14, 8, 90, 38, 79, 87, 81, 5, 14, 43, 32, 46, 39, 20, 18, 47, 85, 63, 71, 38, 16, 83, 50, 21, 69, 67, 20, 94, 57, 26, 11, 65, 31, 41, 24, 60, 79, 15, 34, 87, 60, 81, 76, 46, 90, 47, 31, 33, 98, 10, 70, 60, 94, 50, 41, 27, 24, 34, 12, 17, 91, 45, 97, 40, 89, 36, 47, 94, 47, 40, 58, 44, 50, 27, 57, 4, 86, 45, 93, 75, 55, 57, 34, 98, 58, 60, 31, 26, 62, 92, 50, 47, 71, 31, 14, 19, 31, 11, 11, 61, 60, 41, 32, 43, 3, 74, 88, 14, 60, 47, 98, 11, 71, 76, 79, 60, 14, 49, 69, 5, 1, 64, 43, 63, 23, 59, 81, 55, 96, 43, 36, 80, 1, 2, 94, 56, 79, 66, 1, 41, 27, 35, 22, 64, 89, 41, 77, 1, 98, 13, 85, 48, 55, 73, 70, 56, 13, 50, 73, 95, 19, 15, 82, 27, 74, 18, 11, 90, 44, 11, 25, 57, 76, 15, 94, 90, 85, 97, 21, 67, 21, 82, 17, 64, 40, 11, 46, 82, 73, 62, 46, 82, 80, 90, 1, 91, 4, 3, 93, 31, 3, 65, 57, 14, 66, 30, 25, 9, 66, 69, 56, 71, 25, 50, 19, 57, 44, 16, 34, 81, 61, 95, 71, 33, 97, 60, 59, 43, 75, 6, 30, 55, 90, 69, 70, 45, 37, 89, 5, 9, 81, 51, 28, 4, 84, 21, 73, 75, 53, 82, 67, 36, 26, 45, 82, 93, 16, 17, 89, 55, 20, 62, 37, 39, 38, 55, 71, 44, 80, 28, 95, 18, 83, 40, 82, 46, 70, 74, 70, 53, 8, 92, 38, 9, 29, 66, 95, 24, 75, 85, 20, 23, 88, 71, 66, 2, 39, 58, 78, 44, 15, 74, 52, 77, 87, 2, 4, 17, 18, 45, 2, 71, 2, 17, 86, 68, 24, 6, 19, 36, 12, 40, 40, 79, 58, 52, 53, 14, 79, 48, 62, 94, 9, 4, 86, 8, 33, 76, 62, 8, 80, 81, 51, 74, 49, 26, 56, 12, 40, 3, 32, 48, 51, 74, 12, 77, 73, 53, 58, 82, 92, 92, 9, 53, 53, 11, 92, 33, 73, 80, 68, 93, 85, 51, 95, 69, 83, 74, 66, 90, 90, 98, 6, 96, 83, 51, 16, 46, 41, 87, 4, 86, 90, 28, 52, 54, 70, 98, 26, 26, 1, 74, 49, 64, 56, 16, 67, 50, 60, 45, 61, 32, 66, 19, 23, 73, 20, 12, 27, 71, 29, 52, 61, 24, 24, 92, 3, 97, 84, 48, 40, 23, 64, 50, 25, 12, 76, 25, 3, 88, 31, 8, 29, 87, 24, 3, 2, 77, 95, 8, 90, 31, 71, 5, 76, 41, 54, 51, 2, 17, 85, 23, 79, 62, 80, 8, 64, 31, 31, 14, 83, 88, 90, 29, 53, 74, 80, 63, 15, 61, 68, 86, 17, 3, 83, 87, 10, 63, 9, 37, 92, 23, 16, 64, 66, 45, 28, 92, 15, 61, 34, 4, 27, 72, 10, 19, 96, 49, 29, 87, 62, 46, 97, 80, 81, 52, 31, 11, 5, 51, 10, 75, 52, 16, 97, 89, 96, 21, 26, 98, 14, 11, 92, 66, 69, 30, 60, 71, 76, 38, 70, 74, 88, 78, 42, 42, 60, 6, 69, 9, 23, 59, 92, 9, 72, 27, 90, 55, 10, 36, 56, 74, 61, 95, 28, 69, 57, 6, 96, 36, 21, 88, 22, 54, 65, 13, 13, 91, 64, 52, 43, 45, 49, 37, 80, 13, 55, 78, 57, 63, 88, 51, 46, 13, 58, 44, 23, 5, 15, 14, 84, 39, 94, 25, 63, 93, 82, 2, 90, 36, 62, 1, 68, 2, 54, 66, 79, 34, 94, 55, 44, 4, 53, 39, 65, 40, 41, 42, 40, 89, 69, 23, 43, 80, 73, 7, 5, 71, 14, 54, 38, 46, 46, 58, 89, 61, 6, 49, 56, 40, 35, 76, 8, 69, 95, 31, 34, 36, 14, 91, 83, 98, 76, 5, 7, 68, 79, 87, 85, 85, 61, 79, 44, 6, 20, 26, 4, 27, 15, 80, 62, 27, 85, 3, 76, 10, 48, 28, 12, 48, 93, 44, 36, 41, 92, 67, 36, 76, 58, 26, 80, 40, 19, 98, 68, 53, 28, 19, 96, 20, 39, 19, 13, 60, 64, 18, 12, 91, 50, 7, 11, 32, 31, 69, 92, 39, 70, 50, 42, 66, 12, 38, 92, 1, 27, 47, 52, 59, 12, 76, 2, 90, 65, 80, 50, 40, 54, 29, 97, 87, 73, 39, 80, 94, 70, 81, 97, 4, 98, 16, 51, 31, 77, 77, 34, 74, 62, 30, 41, 37, 40, 5, 62, 74, 51, 47, 58, 65, 37, 60, 77, 35, 32, 83, 35, 36, 77, 70, 17, 74, 19, 97, 16, 39, 58, 56, 75, 3, 1, 69, 4, 73, 39, 52, 65, 33, 62, 22, 70, 25, 88, 97, 76, 34, 43, 80, 29, 14, 89, 39, 81, 12, 6, 79, 90, 85, 14, 31, 59, 64, 59, 51, 89, 34, 66, 90, 95, 92, 31, 16, 37, 23, 7, 85, 83, 91, 64, 41, 89, 3, 12, 32, 72, 92, 94, 93, 66, 59, 51, 52, 69, 78, 73, 45, 38, 62, 20, 64, 8, 21, 61, 5, 62, 98, 23, 46, 77, 4, 73, 74, 43, 2, 77, 94, 75, 42, 76, 91, 67, 82, 40, 54, 58, 86, 92, 3, 51, 28, 69, 78, 39, 35, 7, 63, 14, 2, 96, 17, 53, 44, 75, 20, 66, 92, 67, 42, 44, 58, 54, 15, 40, 65, 61, 75, 85, 92, 74, 57, 74, 11, 6, 20, 33, 21, 36, 7, 20, 28, 89, 15, 28, 15, 11, 97, 9, 48, 70, 94, 7, 10, 72, 86, 64, 23, 36, 93, 55, 91, 36, 44, 35, 43, 10, 53, 4, 34, 70, 96, 41, 70, 98, 7, 28, 30, 9, 97, 36, 89, 25, 21, 77, 51, 4, 19, 26, 65, 56, 76, 51, 56, 73, 88, 56, 4, 52, 89, 6, 10, 26, 36, 73, 32, 54, 57, 92, 72, 48, 74, 76, 14, 19, 33, 56, 70, 6, 38, 20, 6, 11, 55, 61, 60, 52, 58, 61, 88, 30, 7, 86, 60, 73, 72, 46, 56, 73, 78, 50, 58, 3, 32, 45, 87, 78, 64, 86, 72, 73, 83, 36, 56, 1, 70, 98, 80, 62, 38, 45, 90, 13, 70, 9, 28, 72
- #simple checksum that the program confirms is present before running
- 144351, #2799 (data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement