'Boulderdash, for Hydra or Demo Board. 'Version 0.95 'Released to the public domain. ' Changes: ' 2009-11-10 - Modified for the Demo Board. ' - Added 'readkey' routine to allow playing the game from the keyboard. ' - Rockford now can be moved around and the screen scrolls automatically. ' 2009-11-12 - Halved tile horizontal resolution to eliminate redundant pixel pairs ' (and BoulderDash uses 8x16 tiles anyway). This also halves tile memory ' requirements. ' - The scroller now runs in a separate cog. ' 2009-11-13 - Changed pixel clock settings in order to display 20 tiles per line, ' as in the classic C64/Atari BoulderDash I. ' - Added code to handle boulders and diamonds. Rockford cannot push yet ' boulders or pick-up diamonds. ' 2009-11-14 - Reversed pixel order in video driver in order to avoid having to define ' mirrored tiles. ' - Added more tiles, hopefully all the characters are there. ' - The scroller cog now also handles animated characters. ' - Rockford can pick-up diamonds and the screen flashes when diamond count ' reaches the target. ' - Rockford now walks facing in the right direction and gets "bored". ' 2009-11-15 - Added an optional status line. ' - Added a character font for the status line. ' - Main game loop moved to a separate routine. ' - Boulders can be pushed around. ' - New routines to cover and uncover the screen. ' - Added an infinite loop to the main routine, pressing ESC restarts the ' game. ' 2009-11-16 - Inbox now morphs into Rockford. ' - Rockford can exit through the Outbox. ' 2009-11-17 - Added hardware detection feature (Hydra, Demo Board, etc.) Video driver ' changed accordingly. Not sure if keyboard will work on Hydra. ' - Falling boulders and diamonds now can kill Rockford. ' - Added PAL timings table to video driver, but PAL mode is not working yet. ' 2009-11-18 - Synchronized scroller to vertical sync, scrolling is totally smooth now. ' - PAL mode now works. ' 2009-11-25 - Started adding support for fireflies and butterflies. Had to split the ' case statement in the main game loop into sections due to poor performance. ' - Added code to decode raw cave data of original Atari/C64 BoulderDash I. ' You can now import your favorite caves :) ' 2009-11-26 - Fireflies and butterflies now explode in contact with Rockford. ' - Time counts down, but there is no "out of time" condition yet. ' 2009-11-27 - Implemented the "pick without moving" Rockford trick (use left CTRL key). ' - Stop cave when time runs out. ' - Do not advance to next cave until current one is successfully completed. ' Game is now playable! Use LeftCtrl + LeftShift as a "cheat" to move to ' next cave without finishing the current one. The Escape key restarts the ' current cave. Sorry, no score points yet. ' 2009-11-28 - Status line now handled by a separate cog. ' - Flashing "Out of time" message when time runs out. ' - Space bar now pauses game. ' - Score points implemented. ' - No more unlimited lifes, sorry ;))) ' - New life every 500 points. ' 2009-11-29 - Using a table of codes to reset the 'scanned' flag avoids a second case ' statement and improves performance. ' - Implemented amoebas and magic wall. Now all the original caves work! ' - Added all the original BoulderDash I caves (except the intermissions) ' - Added a Level variable. After successfully finishing the last cave the ' game starts again from the first one of the next difficulty level. ' 2009-11-30 - Fixed a bug in amoeba handling that caused cave M to crash. ' 2009-12-02 - Game controller apparently does not like to be read too fast. ' - Added intermission caves. ' 2009-12-04 - Aborting the current cave will cost you a life. ' - Restart (or exit) automatically the cave if "Out of time" has been ' flashing for more than a minute without user input. ' - Throtle down Rockford a bit in levels 1 and 2 (is running too fast!) ' 2009-12-05 - Added the title screen (had a hard time scrolling the background behind ' those big letters!). ' - Starting cave and level can be selected from the title screen. ' - Run a demo if the title screen has been inactive for about a minute. ' 2009-12-06 - Fixed boulder/diamond rolling off: they must move to the side first, ' not directly diagonally. ' - Added a preliminary sound object. Nothing there yet. ' - Bonus points at the end of the cave increase with difficulty level. ' 2009-12-07 - First steps towards SID emulation via PWM. Single voice waveform generation ' already works (well, sort of). No envelope control yet. ' 2009-12-08 - SID emulator: noise waveform, amplitude control, 3 voices. Envelope ' control using a separate cog (see the ChangeLog in the SIDemu.spin file). ' 2009-12-09 - Integrated the SID emulator into the game, running out of cogs. ' - Got the main tune working. ' - Added a few other sound/noise effects the game. ' - Boulder noise interfers with diamond pick up sound. Which one has the ' preference? ' 2009-12-12 - Added the cover/uncover screen sound. ' - Added the bonus points sound. ' - Added amoeba and magic wall sound. ' ' TODO: ' - Finish it :) ' - Add broadcast TV mode with sound carrier to use the TV antenna input (like in old times :)) ' ' ' Anpassungen für den Hive ' ' 09-01-2010 - Entfernung der Hardwareerkennung ' - Anpassung Konfiguration an Hive/Bellatrix ' - Gamecontr. entfernt ' - Auskommentierung Sound ' 12-01-2010 - Scrolltext im Titelscreen ' - Optimierung Soundobjekt con _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 ' The supported video modes TV_NTSC = 0 TV_PAL = 1 TV_MODE = TV_PAL ' <--- Select your TV system here -- NTSC or PAL ---<<< ' Game controller codes GP_RIGHT = %00000001 '(Right arrow) Move right GP_LEFT = %00000010 '(Left arrow) Move left GP_DOWN = %00000100 '(Down arrow) Move down GP_UP = %00001000 '(Up arrow) Move up GP_START = %00010000 '(Left Shift) Start game. Together with GP_SELECT: go to next cave (cheat) GP_SELECT = %00100000 '(Left Ctrl) Pick GP_B = %01000000 '(Space) Pause GP_A = %10000000 '(Escape) Abort and restart current cave var long nes long last_dir long cave_addr long random_ptr long screen_height long sx, sy long video_params[7] long sound_pin long Score long NextLife byte temp_cave[40*22] byte HWType byte Cave byte Level byte CaveNumber byte DiamondCount byte DiamondsNeeded byte DiamondValue byte ExtraValue byte CaveTime byte Men byte Alive byte MagicWallStatus byte MagicWallTime byte AmoebaStatus byte AmoebaTime byte target byte vsync byte door_x, door_y obj tv: "Boulderdash_Tile_TV" kb: "Keyboard" sc: "Scroller" st: "Status" rr: "RealRandom" sn: "Sounds" pub main | success video_params[0] := %0_11_101_000 ' Set Mode for VCFG video_params[1] := 2 ' Set Pingroup used by TV driver. video_params[2] := %0111_0000 ' Set Pinmask for VCFG pins. video_params[3] := %0000_0111<<20 ' Set Pinmask for output pins. video_params[4] := TV_MODE video_params[5] := @screen video_params[6] := @vsync if video_params[4] == TV_NTSC screen_height := 12 else screen_height := 14 rr.start 'start the real random number generator random_ptr := rr.random_ptr bytefill(@screen, $00, constant(40 * 22)) 'clear screen tv.start(@video_params) 'start the TV driver sc.start(@video_params, random_ptr) 'start the scroller st.start(@video_params) 'start the status line handler kb.start(17, 16) 'start the keyboard driver sn.start 'start the sound engine cave_addr := @screen repeat repeat success := TitleScreen palette.byte[1] := $04 palette.byte[2] := $4B palette.byte[3] := $06 bytefill(@screen, $3C, constant(40 * 22)) 'fill the screen with the scrolling pattern status := 0 Score := 0 Men := 3 if success quit else Demo repeat sn.music_off CaveNumber := byte[@@caves[Cave]] st.player_params(1, Men, CaveNumber, Level, Score) st.set_mode(st#STATUS_PRE) CreateCave(@@caves[Cave], @temp_cave) st.cave_params(DiamondsNeeded, DiamondValue, CaveTime) last_dir := -1 'last rockford direction sc.rockford_go(0) 'rockford initially stands still sc.milling_off if CaveNumber > 16 'intermission sx := 0 sy := 0 else 'normal cave sx := door_x - 10 sx <#= constant(40 - 20) sx #>= 0 sy := door_y - screen_height / 2 sy <#= 22 - screen_height sy #>= 0 sc.scroll_to(sx * 8, sy * 16) Uncover 'uncover screen success := GameLoop if not success if --Men == 0 st.set_mode(st#STATUS_GAME_OVER) waitcnt(clkfreq + cnt) Cover quit if success or CaveNumber > 16 'go to next cave only if current one was completed 'but never restart intermissions if success and CaveNumber > 16 and Men < 9 ++Men 'the promised bonus life if caves[++Cave] == 0 if Level < 4 ++Level Cave := 0 st.player_params(1, Men, CaveNumber, Level, Score) st.set_mode(st#STATUS_PRE) Cover 'cover screen with scrolling pattern pub TitleScreen | x, y, h, t, i, j, lk, ticks, count, scr if TV_MODE == TV_NTSC h := 24 t := 2 ticks := constant(60 * 130 / 2) 'dr235 else h := 28 t := 4 ticks := constant(50 * 130 / 2) scr := 0 bytefill(@screen, $00, constant(40 * 28)) 'clear screen palette.byte[1] := $FC palette.byte[2] := $FB palette.byte[3] := $06 st.set_mode(st#STATUS_NONE) Cave := 0 Level := 0 CaveNumber := byte[@@caves[Cave]] repeat x from 0 to 19 byte[@screen + x] := $B1 byte[@screen + x + (h - 6) * 40] := $B1 repeat y from 1 to h - 7 byte[@screen + y * 40] := $B5 repeat x from 1 to 18 byte[@screen + x + y * 40] := $B0 byte[@screen + 19 + y * 40] := $B6 i := 0 repeat y from t to t + 6 repeat x from 1 to 18 byte[@screen + x + y * 40] := big_boulder.byte[i++] i := 0 repeat y from t + 8 to t + 14 repeat x from 3 to 15 byte[@screen + x + y * 40] := big_dash.byte[i++] status := 2 scroll := 0 'st.text_out(@screen + (h - 4) * 40, @str1, 20) scr++ repeat i from 0 to 19 'j := str1.byte[i] j := scr1.byte[i + scr] if j == $20 byte[@screen + (h - 4) * 40 + i] := $90 else byte[@screen + (h - 4) * 40 + i] := j + $A0 st.text_out(@screen + (h - 3) * 40, @str2, 20) st.text_out(@screen + (h - 2) * 40, @str3, 20) st.text_out(@screen + (h - 1) * 40, @str4, 20) screen.byte[(h - 2) * 40] := $D1 'player(s) screen.byte[(h - 2) * 40 + 10] := $D1 'joystick(s) screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 screen.byte[(h - 1) * 40 + 17] := Level + $D1 lk := 0 'last key count := ticks sn.music_on repeat while count > 0 'wait for vsync, count every other tick repeat while vsync == 0 repeat while vsync <> 0 repeat while vsync == 0 repeat while vsync <> 0 --count 'scrolltext scr++ if (scr>>2) > 318 '(scr2 - scr1) scr := 0 repeat i from 0 to 19 j := scr1.byte[i + (scr>>2)] if j == $20 byte[@screen + (h - 4) * 40 + i] := $90 else byte[@screen + (h - 4) * 40 + i] := j + $A0 ' scrolling background x := @tiles + constant(16 * $B0) y := word[x] wordmove(x, x + 2, 7) word[x + 15] := y repeat i from 0 to 5 repeat y from 0 to 14 step 2 x := @tiles + constant(16 * $B0) + y t := @tiles + constant(16 * $BD) + y + 16 * i j := @tiles + constant(16 * $B3) + y + 16 * i word[j] := word[x] | word[t] repeat y from 0 to 14 step 2 x := @tiles + constant(16 * $B0) + y t := @tiles + constant(16 * $C3) + y j := @tiles + constant(16 * $B9) + y word[j] := (word[x] & $00FF) | word[t] repeat y from 0 to 14 step 2 x := @tiles + constant(16 * $B0) + y t := @tiles + constant(16 * $C4) + y j := @tiles + constant(16 * $BA) + y word[j] := (word[x] & $FF00) | word[t] repeat y from 0 to 14 step 2 x := @tiles + constant(16 * $B0) + y t := @tiles + constant(16 * $C5) + y j := @tiles + constant(16 * $BB) + y word[j] := (word[x] & $FF00) | word[t] i := read_input if i <> lk count := ticks 'reset countdown if i & GP_START sn.music_off return 1 elseif i & GP_LEFT if Cave => 5 Cave -= 5 CaveNumber := byte[@@caves[Cave]] screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 elseif i & GP_RIGHT if Cave =< 10 Cave += 5 CaveNumber := byte[@@caves[Cave]] screen.byte[(h - 1) * 40 + 7] := CaveNumber + $E0 elseif i & GP_UP if Level < 4 ++Level screen.byte[(h - 1) * 40 + 17] := Level + $D1 elseif i & GP_DOWN if Level > 0 --Level screen.byte[(h - 1) * 40 + 17] := Level + $D1 lk := i sn.music_off return 0 dat big_boulder byte $B2, $B1, $B7, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0 byte $B2, $B0, $B9, $B2, $B1, $BA, $B5, $B9, $B2, $B0, $BA, $B1, $B7, $B2, $B1, $BA, $B1, $B7 byte $B2, $B1, $B8, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9 byte $B2, $B1, $B7, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B5, $BA, $B1, $B8 byte $B2, $B0, $B9, $B2, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $B9, $B2, $B0, $BA, $B1, $B7 byte $B2, $B1, $B5, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B5, $B9 byte $B2, $B1, $B8, $B2, $B1, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B8, $B2, $B1, $BA, $B5, $B9 big_dash byte $BA, $B1, $B3, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0, $B0 byte $BA, $B5, $BA, $B0, $B2, $B7, $B2, $B1, $BA, $B5, $BA, $BB, $BC byte $BA, $B5, $BA, $BA, $B5, $B9, $B2, $B0, $BA, $B5, $BA, $B0, $B0 byte $BA, $B5, $BA, $BA, $B1, $B5, $B2, $B1, $BA, $B1, $B1, $B0, $B0 byte $BA, $B5, $BA, $BA, $B5, $B9, $B0, $B2, $BA, $B5, $BA, $B0, $B0 byte $BA, $B1, $B1, $BA, $B5, $B9, $B2, $B1, $BA, $B5, $BA, $B0, $B0 byte $BA, $B1, $B4, $BA, $B5, $B9, $B2, $B1, $BA, $B5, $BA, $B0, $B0 str1 byte " HIVE VERSION " str2 byte "PRESS BUTTON TO PLAY" str3 byte " PLAYER JOYSTICK" str4 byte " CAVE: LEVEL: " scr1 byte " " byte "THANKS :SPORK FROGS: :HPG: :AHLE2: AND THE OTHER PROPELLERHEADS FOR THE BASECODE" byte " " byte "THANKS PEX :MAHONEY: TUFVESSON FOR THE COOL MUSIC" byte " " byte "GRUSS AN ALLE HIVE-DROHNEN" byte " " byte "HIVE: WE ARE BORG - RESISTANCE IS FUTILE" byte " " byte "DROHNE235: HIVE-VERSION 2010" byte " " scr2 byte 0 pub Demo Score := 0 Cave := 0 'demo happens on cave A Level := 0 CaveNumber := byte[@@caves[Cave]] st.player_params(1, Men, CaveNumber, Level, Score) st.set_mode(st#STATUS_PRE) CreateCave(@@caves[Cave], @temp_cave) st.cave_params(DiamondsNeeded, DiamondValue, CaveTime) last_dir := -1 'last rockford direction sc.rockford_go(0) 'rockford initially stands still sc.milling_off sx := door_x - 10 sx <#= constant(40 - 20) sx #>= 0 sy := door_y - screen_height / 2 sy <#= 22 - screen_height sy #>= 0 sc.scroll_to(sx * 8, sy * 16) demo_ptr := @demo_data 'set demo data pointer kcount := 0 Uncover 'uncover screen GameLoop 'play the demo Cover 'cover screen back var long demo_ptr byte kcount, last_key dat ' The low nibble of each byte is the direction of movement: ' $x0 = no movement ' $x1 = Right ' $x2 = Left ' $x3 = Down ' $x4 = Up ' bit 3 ($x8) set means GP_SELECT is pressed (not used here anyway) ' The high nibble is the number of scan frames to apply the movement. ' $00 means end of demo data. demo_data byte $F0, $10, $14, $71, $23, $91, $40, $23 byte $41, $34, $12, $40, $14, $B1, $13, $21 byte $40, $63, $11, $43, $32, $40, $13, $12 byte $41, $32, $40, $44, $52, $34, $52, $43 byte $32, $50, $34, $A2, $14, $32, $13, $62 byte $43, $11, $40, $33, $41, $43, $42, $24 byte $21, $34, $A1, $A1, $13, $41, $13, $41 byte $23, $50, $51, $44, $51, $60, $13, $00 pub readkey : key if demo_ptr if kcount > 0 --kcount return last_key else key := byte[demo_ptr++] if key == $00 demo_ptr := 0 else kcount := key / 16 - 1 case key & $07 $0: last_key := 0 $1: last_key := GP_RIGHT $2: last_key := GP_LEFT $3: last_key := GP_DOWN $4: last_key := GP_UP if key & $08 last_key |= GP_SELECT return last_key key := 0 if kb.keystate($C0) key |= GP_LEFT if kb.keystate($C1) key |= GP_RIGHT if kb.keystate($C2) key |= GP_UP if kb.keystate($C3) key |= GP_DOWN if kb.keystate($F2) 'left control key key |= GP_SELECT if kb.keystate($CB) 'escape key key |= GP_A if kb.keystate($20) 'space key key |= GP_B if kb.keystate($F0) 'left shift key |= GP_START if kb.keystate($0D) 'or enter key |= GP_START pub read_input return readkey var byte RandSeed1, RandSeed2 pub GetRandom | temp1, temp2, temp3, cy, r '' Generate a pseudo-random number, given a seed '' The output matches the one used in the original BoulderDash I temp1 := (RandSeed1 & 1) << 7 temp2 := (RandSeed2 & 1) << 7 temp3 := (RandSeed2 >> 1) & $7F r := RandSeed2 + temp2 if r > $FF cy := 1 r &= $FF else cy := 0 r += cy + $13 if r > $FF cy := 1 r &= $FF else cy := 0 RandSeed2 := r r := RandSeed1 + cy + temp1 if r > $FF cy := 1 r &= $FF else cy := 0 r += cy + temp3 RandSeed1 := r & $FF dat caves long @cave_A, @cave_B, @cave_C, @cave_D, @inter_1 long @cave_E, @cave_F, @cave_G, @cave_H, @inter_2 long @cave_I, @cave_J, @cave_K, @cave_L, @inter_3 long @cave_M, @cave_N, @cave_O, @cave_P, @inter_4 long 0 cave_A byte 1 'cave number byte 20 'magic wall/amoeba time byte 10 'initial diamond value byte 15 'extra diamond value byte 10, 11, 12, 13, 14 'randomizer seed per level byte 12, 12, 12, 12, 12 'diamonds needed per level byte 150, 110, 70, 40, 30 'time per level byte $08, $0B, $09, $D4, $20 'bg color 1, bg color 2, fg color byte $00, $10, $14, $00 'random objects byte $3C, $32, $09, $00 'probability of object byte $42, $01, $09, $1E, $02 'raw cave data byte $42, $09, $10, $1E, $02 byte $25, $03, $04 byte $04, $26, $12 byte $FF cave_B byte 2 byte 20 byte 20, 50 byte $03, $00, $01, $57, $58 byte $0A, $0C, $09, $0D, $0A byte $96, $6E, $46, $46, $46 byte $0A, $04, $09, $00, $00 byte $00, $10, $14, $08 byte $3C, $32, $09, $02 byte $42, $01, $08, $26, $02, $42, $01, $0F, $26, $02, $42, $08, $03, $14, $04, $42 byte $10, $03, $14, $04, $42, $18, $03, $14, $04, $42, $20, $03, $14, $04, $40, $01 byte $05, $26, $02, $40, $01, $0B, $26, $02, $40, $01, $12, $26, $02, $40, $14, $03 byte $14, $04, $25, $12, $15, $04, $12, $16, $FF cave_C byte 3 byte $00 byte $0F, $00 byte $00, $32, $36, $34, $37 byte $18, $17, $18, $17, $15 byte $96, $64, $5A, $50, $46 byte $09, $08, $09, $04, $00 byte $02, $10, $14, $00 byte $64, $32, $09, $00 byte $25, $03, $04, $04, $27, $14, $FF cave_D byte 4 byte $14 byte $05, $14 byte $00, $6E, $70, $73, $77 byte $24, $24, $24, $24, $24 byte $78, $64, $50, $3C, $32 byte $04, $08, $09, $00, $00 byte $10, $00, $00, $00 byte $14, $00, $00, $00 byte $25, $01, $03, $04, $26, $16, $81, $08, $0A, $04, $04, $00, $30, $0A, $0B, $81 byte $10, $0A, $04, $04, $00, $30, $12, $0B, $81, $18, $0A, $04, $04, $00, $30, $1A byte $0B, $81, $20, $0A, $04, $04, $00, $30, $22, $0B, $FF cave_E byte $05, $14, $32, $5A byte $00, $00, $00, $00, $00 byte $04, $05, $06, $07, $08 byte $96, $78, $5A, $3C, $1E byte $09, $0A, $09, $00, $00 byte $00, $00, $00, $00 byte $00, $00, $00, $00 byte $25, $01, $03, $04, $27, $16, $80, $08, $0A, $03, $03, $00, $80, $10, $0A, $03 byte $03, $00, $80, $18, $0A, $03, $03, $00, $80, $20, $0A, $03, $03, $00, $14, $09 byte $0C, $08, $0A, $0A, $14, $11, $0C, $08, $12, $0A, $14, $19, $0C, $08, $1A, $0A byte $14, $21, $0C, $08, $22, $0A, $80, $08, $10, $03, $03, $00, $80, $10, $10, $03 byte $03, $00, $80, $18, $10, $03, $03, $00, $80, $20, $10, $03, $03, $00, $14, $09 byte $12, $08, $0A, $10, $14, $11, $12, $08, $12, $10, $14, $19, $12, $08, $1A, $10 byte $14, $21, $12, $08, $22, $10, $FF cave_F byte $06, $14, $28, $3C byte $00, $14, $15, $16, $17 byte $04, $06, $07, $08, $08 byte $96, $78, $64, $5A, $50 byte $0E, $0A, $09, $00, $00 byte $10, $00, $00, $00 byte $32, $00, $00, $00 byte $82, $01, $03, $0A, $04, $00, $82, $01, $06, $0A, $04, $00, $82, $01, $09, $0A byte $04, $00, $82, $01, $0C, $0A, $04, $00, $41, $0A, $03, $0D, $04, $14, $03, $05 byte $08, $04, $05, $14, $03, $08, $08, $04, $08, $14, $03, $0B, $08, $04, $0B, $14 byte $03, $0E, $08, $04, $0E, $82, $1D, $03, $0A, $04, $00, $82, $1D, $06, $0A, $04 byte $00, $82, $1D, $09, $0A, $04, $00, $82, $1D, $0C, $0A, $04, $00, $41, $1D, $03 byte $0D, $04, $14, $24, $05, $08, $23, $05, $14, $24, $08, $08, $23, $08, $14, $24 byte $0B, $08, $23, $0B, $14, $24, $0E, $08, $23, $0E, $25, $03, $14, $04, $26, $14 byte $FF cave_G byte $07, $4B, $0A, $14 byte $02, $07, $08, $0A, $09 byte $0F, $14, $19, $19, $19 byte $78, $78, $78, $78, $78 byte $09, $0A, $0D, $00, $00 byte $00, $10, $08, $00 byte $64, $28, $02, $00 byte $42, $01, $07, $0C, $02, $42, $1C, $05, $0B, $02, $7A, $13, $15, $02, $02, $14 byte $04, $06, $14, $04, $0E, $14, $04, $16, $14, $22, $04, $14, $22, $0C, $14, $22 byte $16, $25, $14, $03, $04, $27, $07, $FF cave_H byte $08, $14, $0A, $14 byte $01, $03, $04, $05, $06 byte $0A, $0F, $14, $14, $14 byte $78, $6E, $64, $5A, $50 byte $02, $0E, $09, $00, $00 byte $00, $10, $08, $00 byte $5A, $32, $02, $00 byte $14, $04, $06, $14, $22, $04, $14, $22, $0C, $04, $00, $05, $25, $14, $03, $42 byte $01, $07, $0C, $02, $42, $01, $0F, $0C, $02, $42, $1C, $05, $0B, $02, $42, $1C byte $0D, $0B, $02, $43, $0E, $11, $08, $02, $14, $0C, $10, $00, $0E, $12, $14, $13 byte $12, $41, $0E, $0F, $08, $02, $FF cave_I byte $09, $14, $05, $0A byte $64, $89, $8C, $FB, $33 byte $4B, $4B, $50, $55, $5A byte $96, $96, $82, $82, $78 byte $08, $04, $09, $00, $00 byte $10, $14, $00, $00 byte $F0, $78, $00, $00 byte $82, $05, $0A, $0D, $0D, $00, $01, $0C, $0A, $82, $19, $0A, $0D, $0D, $00, $01 byte $1F, $0A, $42, $11, $12, $09, $02, $40, $11, $13, $09, $02, $25, $07, $0C, $04 byte $08, $0C, $FF cave_J byte $0A, $14, $19, $3C byte $00, $00, $00, $00, $00 byte $0C, $0C, $0C, $0C, $0C byte $96, $82, $78, $6E, $64 byte $06, $08, $09, $00, $00 byte $00, $00, $00, $00 byte $00, $00, $00, $00 byte $25, $0D, $03, $04, $27, $16, $54, $05, $04, $11, $03, $54, $15, $04, $11, $05 byte $80, $05, $0B, $11, $03, $08, $C2, $01, $04, $15, $11, $00, $0D, $04, $C2, $07 byte $06, $0D, $0D, $00, $0D, $06, $C2, $09, $08, $09, $09, $00, $0D, $08, $C2, $0B byte $0A, $05, $05, $00, $0D, $0A, $82, $03, $06, $03, $0F, $08, $00, $04, $06, $54 byte $04, $10, $04, $04, $FF cave_K byte $0B, $14, $32, $00 byte $00, $04, $66, $97, $64 byte $06, $06, $06, $06, $06 byte $78, $78, $96, $96, $F0 byte $0B, $08, $09, $00, $00 byte $00, $10, $08, $00 byte $64, $50, $02, $00 byte $42, $0A, $03, $09, $04, $42, $14, $03, $09, $04, $42, $1E, $03, $09, $04, $42 byte $09, $16, $09, $00, $42, $0C, $0F, $11, $02, $42, $05, $0B, $09, $02, $42, $0F byte $0B, $09, $02, $42, $19, $0B, $09, $02, $42, $1C, $13, $0B, $01, $14, $04, $03 byte $14, $0E, $03, $14, $18, $03, $14, $22, $03, $14, $04, $16, $14, $23, $15, $25 byte $14, $14, $04, $26, $11, $FF cave_L byte $0C, $14, $14, $00 byte $00, $3C, $02, $3B, $66 byte $13, $13, $0E, $10, $15 byte $B4, $AA, $A0, $A0, $A0 byte $0C, $0A, $09, $00, $00 byte $00, $10, $14, $00 byte $3C, $32, $09, $00 byte $42, $0A, $05, $12, $04, $42, $0E, $05, $12, $04, $42, $12, $05, $12, $04, $42 byte $16, $05, $12, $04, $42, $02, $06, $0B, $02, $42, $02, $0A, $0B, $02, $42, $02 byte $0E, $0F, $02, $42, $02, $12, $0B, $02, $81, $1E, $04, $04, $04, $00, $08, $20 byte $05, $81, $1E, $09, $04, $04, $00, $08, $20, $0A, $81, $1E, $0E, $04, $04, $00 byte $08, $20, $0F, $25, $03, $14, $04, $27, $16, $FF cave_M byte $0D, $8C, $05, $08 byte $00, $01, $02, $03, $04 byte $32, $37, $3C, $46, $50 byte $A0, $9B, $96, $91, $8C byte $06, $08, $0D, $00, $00 byte $10, $00, $00, $00 byte $28, $00, $00, $00 byte $25, $12, $03, $04, $0A, $03, $3A, $14, $03, $42, $05, $12, $1E, $02, $70, $05 byte $13, $1E, $02, $50, $05, $14, $1E, $02, $C1, $05, $15, $1E, $02, $FF cave_N byte $0E, $14, $0A, $14 byte $00, $00, $00, $00, $00 byte $1E, $23, $28, $2A, $2D byte $96, $91, $8C, $87, $82 byte $0C, $08, $09, $00, $00 byte $10, $00, $00, $00 byte $00, $00, $00, $00 byte $81, $0A, $0A, $0D, $0D, $00, $70, $0B, $0B, $0C, $03, $C1, $0C, $0A, $03, $0D byte $C1, $10, $0A, $03, $0D, $C1, $14, $0A, $03, $0D, $50, $16, $08, $0C, $02, $48 byte $16, $07, $0C, $02, $C1, $17, $06, $03, $04, $C1, $1B, $06, $03, $04, $C1, $1F byte $06, $03, $04, $25, $03, $03, $04, $27, $14, $FF cave_O byte $0F, $08, $0A, $14 byte $01, $1D, $1E, $1F, $20 byte $0F, $14, $14, $19, $1E byte $78, $78, $78, $78, $8C byte $08, $0E, $09, $00, $00 byte $00, $10, $08, $00 byte $64, $50, $02, $00 byte $42, $02, $04, $0A, $03, $42, $0F, $0D, $0A, $01, $41, $0C, $0E, $03, $02, $43 byte $0C, $0F, $03, $02, $04, $14, $16, $25, $14, $03, $FF cave_P byte $10, $14, $0A, $14 byte $01, $78, $81, $7E, $7B byte $0C, $0F, $0F, $0F, $0C byte $96, $96, $96, $96, $96 byte $09, $0A, $09, $00, $00 byte $10, $00, $00, $00 byte $32, $00, $00, $00 byte $25, $01, $03, $04, $27, $04, $81, $08, $13, $04, $04, $00, $08, $0A, $14, $C2 byte $07, $0A, $06, $08, $43, $07, $0A, $06, $02, $81, $10, $13, $04, $04, $00, $08 byte $12, $14, $C2, $0F, $0A, $06, $08, $43, $0F, $0A, $06, $02, $81, $18, $13, $04 byte $04, $00, $08, $1A, $14, $81, $20, $13, $04, $04, $00, $08, $22, $14, $FF inter_1 byte $11, $14, $1E, $00 byte $0A, $0B, $0C, $0D, $0E byte $06, $06, $06, $06, $06 byte $0A, $0A, $0A, $0A, $0A byte $0E, $02, $09, $00, $00 byte $00, $14, $00, $00 byte $FF, $09, $00, $00 byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $00, $32, $0A, $0C, $10 byte $0A, $04, $01, $0A, $05, $25, $03, $05, $04, $12, $0C, $FF inter_2 byte $12, $14, $0A, $00 byte $0A, $0B, $0C, $0D, $0E byte $10, $10, $10, $10, $10 byte $0F, $0F, $0F, $0F, $0F byte $06, $0F, $09, $00, $00 byte $00, $00, $00, $00 byte $00, $00, $00, $00 byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $01, $50, $01, $03, $09 byte $03, $48, $02, $03, $08, $03, $54, $01, $05, $08, $03, $50, $01, $06, $07, $03 byte $50, $12, $03, $09, $05, $54, $12, $05, $08, $05, $50, $12, $06, $07, $05, $25 byte $01, $04, $04, $12, $04, $FF inter_3 byte $13, $04, $0A, $00 byte $0A, $0B, $0C, $0D, $0E byte $0E, $0E, $0E, $0E, $0E byte $14, $14, $14, $14, $14 byte $06, $08, $09, $00, $00 byte $00, $00, $00, $00 byte $00, $00, $00, $00 byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $00, $54, $01, $0C, $12 byte $02, $88, $0F, $09, $04, $04, $08, $25, $08, $03, $04, $12, $07, $FF inter_4 byte $14, $03, $1E, $00 byte $00, $00, $00, $00, $00 byte $06, $06, $06, $06, $06 byte $14, $14, $14, $14, $14 byte $06, $08, $09, $00, $00 byte $00, $00, $00, $00 byte $00, $00, $00, $00 byte $87, $00, $02, $28, $16, $07, $87, $00, $02, $14, $0C, $01, $D0, $0B, $03, $03 byte $02, $80, $0B, $07, $03, $06, $00, $43, $0B, $06, $03, $02, $43, $0B, $0A, $03 byte $02, $50, $08, $07, $03, $03, $25, $03, $03, $04, $09, $0A, $FF dat ' C64 color table approximation. Not the most accurate one, but gives the desired effect. ctable byte $02, $06, $4B, $BC, $2B, $9C, $EB, $7D byte $4B, $4A, $4B, $04, $04, $9D, $0B, $04 pub CreateCave(raw_cave, dest) | i, j, k, cx, cy, ci, co, dir, len '' Create cave contents from the description array CaveNumber := byte[raw_cave] RandSeed1 := 0 RandSeed2 := byte[raw_cave + 4 + Level] ' Set colors palette.byte[1] := ctable.byte[byte[raw_cave + 20]] palette.byte[2] := ctable.byte[byte[raw_cave + 19]] palette.byte[3] := ctable.byte[byte[raw_cave + 21] - 8] ' Place random objects repeat cy from 1 to 21 repeat cx from 0 to 39 co := $01 ' dirt GetRandom repeat ci from 0 to 3 if RandSeed1 < byte[raw_cave + 28 + ci] co := byte[raw_cave + 24 + ci] byte[dest + cx + cy * 40] := co ' Steel bounds repeat cx from 0 to 39 byte[dest + cx] := $07 byte[dest + cx + 21 * 40] := $07 repeat cy from 0 to 21 byte[dest + cy * 40] := $07 byte[dest + 39 + cy * 40] := $07 'Decode raw data i := raw_cave + 32 repeat ci := byte[i++] cx := byte[i++] cy := byte[i++] - 2 if ci == $FF quit case ci & $C0 $00: byte[dest + cx + cy * 40] := ci & $3F if (ci & $3F) == $25 door_x := cx door_y := cy $40: len := byte[i++] dir := byte[i++] repeat byte[dest + cx + cy * 40] := ci & $3F case dir 0: --cy 1: --cy ++cx 2: ++cx 3: ++cy ++cx 4: ++cy 5: ++cy --cx 6: --cx 7: --cy --cx while --len > 0 $80: len := byte[i++] - 1 'width dir := byte[i++] - 1 'height co := byte[i++] repeat j from 0 to len byte[dest + cx + j + cy * 40] := ci & $3F byte[dest + cx + j + (cy + dir) * 40] := ci & $3F repeat j from 1 to dir - 1 byte[dest + cx + (cy + j) * 40] := ci & $3F repeat k from 1 to len - 1 byte[dest + cx + k + (cy + j) * 40] := co byte[dest + cx + len + (cy + j) * 40] := ci & $3F $C0: len := byte[i++] - 1 'width dir := byte[i++] - 1 'height repeat j from 0 to len byte[dest + cx + j + cy * 40] := ci & $3F byte[dest + cx + j + (cy + dir) * 40] := ci & $3F repeat j from 0 to dir byte[dest + cx + (cy + j) * 40] := ci & $3F byte[dest + cx + len + (cy + j) * 40] := ci & $3F DiamondsNeeded := byte[raw_cave + 9 + Level] CaveTime := byte[raw_cave + 14 + Level] MagicWallTime := byte[raw_cave + 1] if MagicWallTime > CaveTime AmoebaTime := CaveTime else AmoebaTime := CaveTime - MagicWallTime DiamondValue := byte[raw_cave + 2] ExtraValue := byte[raw_cave + 3] DiamondCount := 0 pub Cover | n, cell '' Ramdomly cover the screen with a scrolling pattern n := 0 repeat while n <> constant(40 * 22) cell := ||long[random_ptr] // constant(40 * 22) if byte[cave_addr + cell] <> $3C byte[cave_addr + cell] := $3C ++n sn.cover_sound waitcnt(clkfreq / 1000 + cnt) pub Uncover | n, cell '' Ramdomly uncover the screen n := 0 repeat while n <> constant(40 * 22) cell := ||long[random_ptr] // constant(40 * 22) if byte[cave_addr + cell] == $3C byte[cave_addr + cell] := temp_cave[cell] ++n sn.cover_sound waitcnt(clkfreq / 1000 + cnt) dat reset byte $00, $01, $02, $03, $04, $05, $06, $07 byte $08, $09, $0A, $0B, $08, $09, $0A, $0B byte $10, $10, $12, $12, $14, $14, $16, $16 byte $18, $19, $1A, $1B, $1C, $1D, $1E, $1F byte $20, $21, $22, $23, $24, $25, $26, $27 byte $28, $29, $2A, $2B, $2C, $2D, $2E, $2F byte $30, $31, $32, $33, $30, $31, $32, $33 byte $38, $38, $3A, $3B, $3C, $3D, $3E, $3F dirs long 1, 40, -1, -40 pub GameLoop | cx, cy, ca, cn, ob, o1, o2, ready, count, amoebas, enclosed '' Main game loop. Everything happens here. target := 0 count := 0 'scans before rockford is born ready := 0 NextLife := ((Score / 500) + 1) * 500 MagicWallStatus := 0 'dormant AmoebaStatus := 0 'growing slowly ' game loop repeat Alive := false amoebas := 0 enclosed := true repeat cy from 1 to 21 repeat cx from 0 to 39 ca := cave_addr + cx + cy * 40 'address of current object 'large case statements execute rather slowly to the point 'that the game becomes unplayable, so we have to split the 'case into sections (too bad there is no indirect function 'call in Spin) ob := byte[ca] if ob < $10 case ob $04: 'out door if target byte[ca] := $05 $08: 'firefly facing left if CheckAround(ca) ExplodeCenter(ca, $1B) else if byte[ca + 40] == $00 byte[ca + 40] := $0F byte[ca] := $00 elseif byte[ca - 1] == $00 byte[ca - 1] := $0C byte[ca] := $00 else byte[ca] := $0D $09: 'firefly facing up if CheckAround(ca) ExplodeCenter(ca, $1B) else if byte[ca - 1] == $00 byte[ca - 1] := $0C byte[ca] := $00 elseif byte[ca - 40] == $00 byte[ca - 40] := $0D byte[ca] := $00 else byte[ca] := $0E $0A: 'firefly facing right if CheckAround(ca) ExplodeCenter(ca, $1B) else if byte[ca - 40] == $00 byte[ca - 40] := $0D byte[ca] := $00 elseif byte[ca + 1] == $00 byte[ca + 1] := $0E byte[ca] := $00 else byte[ca] := $0F $0B: 'firefly facing down if CheckAround(ca) ExplodeCenter(ca, $1B) else if byte[ca + 1] == $00 byte[ca + 1] := $0E byte[ca] := $00 elseif byte[ca + 40] == $00 byte[ca + 40] := $0F byte[ca] := $00 else byte[ca] := $0C elseif ob < $20 case ob $10: 'boulder case byte[ca + 40] 'check object below $00: 'boulder can fall byte[ca] := $00 byte[ca + 40] := $13 'falling boulder, scanned sn.boulder_sound $02, $10, $14: 'wall, boulder or diamond if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 'boulder can roll left byte[ca] := $00 byte[ca - 1] := $13 'falling boulder, scanned sn.boulder_sound elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 'boulder can roll right byte[ca] := $00 byte[ca + 1] := $13 'falling boulder, scanned sn.boulder_sound $12: 'falling boulder case byte[ca + 40] 'check object below $00: 'boulder can continue falling byte[ca] := $00 byte[ca + 40] := $13 'falling boulder, scanned $03: 'magic wall byte[ca] := $00 if MagicWallStatus < 2 'dormant or milling if MagicWallStatus == 0 MagicWallStatus := 1 cn := st.get_time #> MagicWallTime MagicWallTime := cn - MagicWallTime sc.milling_on sn.magic_wall_sound_on if byte[ca + constant(40 * 2)] == $00 byte[ca + constant(40 * 2)] := $17 'falling diamond, scanned sn.diamond_sound $02, $10, $14: 'wall, boulder or diamond 'we hit something sn.boulder_sound if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 'boulder can roll left byte[ca] := $00 byte[ca - 1] := $13 'falling boulder, scanned elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 'boulder can roll right byte[ca] := $00 byte[ca + 1] := $13 'falling boulder, scanned else 'boulder came to a stop byte[ca] := $11 'stationary boulder, scanned $38: 'rockford? 'explode ExplodeBelow(ca, $1B) $08, $09, $0A, $0B: 'firefly? ExplodeBelow(ca, $1B) $30, $31, $32, $33: 'butterfly? ExplodeBelow(ca, $20) other: 'boulder came to a stop byte[ca] := $11 'stationary boulder, scanned sn.boulder_sound $14: 'diamond case byte[ca + 40] 'check object below $00: 'diamond can fall byte[ca] := $00 byte[ca + 40] := $17 'falling diamond, scanned sn.diamond_sound $02, $10, $14: 'wall, boulder or diamond if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 'diamond can roll left byte[ca] := $00 byte[ca - 1] := $17 'falling diamond, scanned sn.diamond_sound elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 'diamond can roll right byte[ca] := $00 byte[ca + 1] := $17 'falling diamond, scanned sn.diamond_sound $16: 'falling diamond case byte[ca + 40] 'check object below $00: 'diamond can continue falling byte[ca] := $00 byte[ca + 40] := $17 'falling diamond, scanned $03: 'magic wall byte[ca] := $00 if MagicWallStatus < 2 'dormant or milling if MagicWallStatus == 0 MagicWallStatus := 1 cn := st.get_time #> MagicWallTime MagicWallTime := cn - MagicWallTime sc.milling_on sn.magic_wall_sound_on if byte[ca + constant(40 * 2)] == $00 byte[ca + constant(40 * 2)] := $13 'falling boulder, scanned sn.boulder_sound $02, $10, $14: 'wall, boulder or diamond 'we hit something sn.diamond_sound if byte[ca - 1] == $00 and byte[ca + constant(40 - 1)] == $00 'diamond can roll left byte[ca] := $00 byte[ca - 1] := $17 'falling diamond, scanned elseif byte[ca + 1] == $00 and byte[ca + constant(40 + 1)] == $00 'diamond can roll right byte[ca] := $00 byte[ca + 1] := $17 'falling diamond, scanned else 'diamond came to a stop byte[ca] := $15 'stationary diamond, scanned $38: 'rockford? 'explode ExplodeBelow(ca, $1B) $08, $09, $0A, $0B: 'firefly ExplodeBelow(ca, $1B) $30, $31, $32, $33: 'butterfly ExplodeBelow(ca, $20) other: 'diamond came to a stop byte[ca] := $15 'stationary diamond, scanned sn.diamond_sound $1B, $1C, $1D, $1E: 'explosion stages byte[ca]++ $1F: 'explosion to space, final stage byte[ca] := $00 elseif ob < $30 case ob $20, $21, $22, $23: 'explosion stages byte[ca]++ $24: 'explosion to diamonds, final stage byte[ca] := $15 $25: 'inbox Alive := true if count++ == 20 byte[ca] := $26 sn.crack_sound $26, $27: Alive := true byte[ca]++ $28: Alive := true byte[ca] := $38 'rockford is born sc.rockford_reset st.set_time(CaveTime) st.set_mode(st#STATUS_GAME) ready := 1 elseif ob < $40 case ob $30: 'butterfly facing down if CheckAround(ca) ExplodeCenter(ca, $20) else if byte[ca - 1] == $00 byte[ca - 1] := $35 byte[ca] := $00 elseif byte[ca + 40] == $00 byte[ca + 40] := $34 byte[ca] := $00 else byte[ca] := $37 $31: 'butterfly facing left if CheckAround(ca) ExplodeCenter(ca, $20) else if byte[ca - 40] == $00 byte[ca - 40] := $36 byte[ca] := $00 elseif byte[ca - 1] == $00 byte[ca - 1] := $35 byte[ca] := $00 else byte[ca] := $34 $32: 'butterfly facing up if CheckAround(ca) ExplodeCenter(ca, $20) else if byte[ca + 1] == $00 byte[ca + 1] := $37 byte[ca] := $00 elseif byte[ca - 40] == $00 byte[ca - 40] := $36 byte[ca] := $00 else byte[ca] := $35 $33: 'butterfly facing right if CheckAround(ca) ExplodeCenter(ca, $20) else if byte[ca + 40] == $00 byte[ca + 40] := $34 byte[ca] := $00 elseif byte[ca + 1] == $00 byte[ca + 1] := $37 byte[ca] := $00 else byte[ca] := $36 $38: 'rockford Alive := true nes := read_input cn := 0 if nes if nes & GP_RIGHT last_dir := 1 sc.rockford_go(last_dir) cn := ca + 1 elseif nes & GP_LEFT last_dir := -1 sc.rockford_go(last_dir) cn := ca - 1 elseif nes & GP_UP sc.rockford_go(last_dir) cn := ca - 40 elseif nes & GP_DOWN sc.rockford_go(last_dir) cn := ca + 40 if cn if nes & GP_SELECT o1 := $39 o2 := $00 else o1 := $00 o2 := $39 case byte[cn] $00, $01: 'empty or dirt sn.moving_sound(byte[cn]) byte[ca] := o1 byte[cn] := o2 $05: 'out door sn.magic_wall_sound_off sn.amoeba_sound_off byte[ca] := o1 byte[cn] := o2 AddBonusPoints waitcnt(clkfreq + cnt) '1 second delay return true 'means cave succesfully completed $10, $11: 'boulder, stationary if (nes & GP_RIGHT) and (byte[cn + 1] == $00) and ((long[random_ptr] & $03) == 0) 'boulder can be pushed byte[cn + 1] := byte[cn] byte[ca] := o1 byte[cn] := o2 sn.boulder_sound elseif (nes & GP_LEFT) and (byte[cn - 1] == $00) and ((long[random_ptr] & $03) == 0) 'boulder can be pushed byte[cn - 1] := byte[cn] byte[ca] := o1 byte[cn] := o2 sn.boulder_sound $14, $15, $16, $17: 'diamond byte[ca] := o1 byte[cn] := o2 sn.pick_sound st.set_diamond_count(++DiamondCount) IncrementScore(DiamondValue) if DiamondCount == DiamondsNeeded and not target 'flash screen when target is reached sc.flash sn.crack_sound DiamondValue := ExtraValue st.set_diamond_value(DiamondValue) target := 1 else sc.rockford_go(0) 'screen may need scrolling if CaveNumber > 16 'do not scroll intermission caves sx := 0 sy := 0 else if cx - sx > constant(20 - 6) sx += constant(10 - 5) sx <#= constant(40 - 20) elseif cx - sx < 5 sx -= constant(10 - 5) sx #>= 0 if cy - sy > screen_height - 4 sy += screen_height / 2 - 3 sy <#= 22 - screen_height elseif cy - sy < 3 sy -= screen_height / 2 - 3 sy #>= 0 sc.scroll_to(sx * 8, sy * 16) $3A: 'amoeba if ready sn.amoeba_sound_on if AmoebaStatus == 2 'turn into stone byte[ca] := $10 'stationary boulder elseif AmoebaStatus == 3 'turn into diamond byte[ca] := $14 'stationary diamond else ++amoebas if enclosed enclosed := CheckEnclosed(ca) cn := long[random_ptr] if AmoebaStatus == 0 cn &= $7F else cn &= $0F if cn =< 3 cn := ca + dirs[cn & $03] ob := byte[cn] if ob == $00 or ob == $01 byte[cn] := $3A 'reset scanned flag cn := ca - constant(40 + 1) byte[cn] := reset.byte[byte[cn]] if MagicWallStatus == 1 if st.get_time < MagicWallTime MagicWallStatus := 2 'expired sc.milling_off sn.magic_wall_sound_off if AmoebaStatus == 0 if st.get_time < AmoebaTime AmoebaStatus := 1 'growing fast if amoebas > 200 AmoebaStatus := 2 'grew too big, turn into stones elseif enclosed AmoebaStatus := 3 'fully enclosed, turn into diamonds if amoebas == 0 sn.amoeba_sound_off if demo_ptr nes := 0 else nes := read_input if nes & GP_A st.set_time(0) 'stop the time sn.magic_wall_sound_off sn.amoeba_sound_off return false 'not completed, restart the same level elseif nes & GP_B 'pause game st.set_mode(st#STATUS_PAUSE) repeat while nes & GP_B nes := read_input repeat while (nes & GP_B) == 0 nes := read_input if ready st.set_mode(st#STATUS_GAME) else st.set_mode(st#STATUS_PRE) repeat while nes & GP_B nes := read_input elseif (nes & GP_SELECT) and (nes & GP_START) st.set_time(0) sn.magic_wall_sound_off sn.amoeba_sound_off return true '*cheat* go to the next level cn := st.get_time if cn < 10 sn.time_ending_sound(cn) if ready and (cn == 0) 'out of time sn.magic_wall_sound_off sn.amoeba_sound_off st.set_mode(st#STATUS_OUT_OF_TIME) count := 60 * 60 'approx 1 minute repeat while count > 0 repeat while vsync == 0 repeat while vsync <> 0 --count nes := read_input if nes & GP_A return false 'not completed, restart the same level elseif (nes & GP_SELECT) and (nes & GP_START) return true '*cheat* go to the next level return false if Level < 2 waitcnt(clkfreq / 50 + cnt) pub ExplodeBelow(cell, towhat) if byte[cell - 1] <> $07 byte[cell - 1] := towhat + 1 if byte[cell] <> $07 byte[cell] := towhat + 1 if byte[cell + 1] <> $07 byte[cell + 1] := towhat if byte[cell + constant(40 - 1)] <> $07 byte[cell + constant(40 - 1)] := towhat if byte[cell + 40] <> $07 byte[cell + 40] := towhat if byte[cell + constant(40 + 1)] <> $07 byte[cell + constant(40 + 1)] := towhat if byte[cell + constant(40 * 2 - 1)] <> $07 byte[cell + constant(40 * 2 - 1)] := towhat if byte[cell + constant(40 * 2)] <> $07 byte[cell + constant(40 * 2)] := towhat if byte[cell + constant(40 * 2 + 1)] <> $07 byte[cell + constant(40 * 2 + 1)] := towhat sn.explosion_sound pub ExplodeCenter(cell, towhat) if byte[cell - constant(40 + 1)] <> $07 byte[cell - constant(40 + 1)] := towhat + 1 if byte[cell - 40] <> $07 byte[cell - 40] := towhat + 1 if byte[cell - constant(40 - 1)] <> $07 byte[cell - constant(40 - 1)] := towhat + 1 if byte[cell - 1] <> $07 byte[cell - 1] := towhat + 1 if byte[cell] <> $07 byte[cell] := towhat + 1 if byte[cell + 1] <> $07 byte[cell + 1] := towhat if byte[cell + constant(40 - 1)] <> $07 byte[cell + constant(40 - 1)] := towhat if byte[cell + 40] <> $07 byte[cell + 40] := towhat if byte[cell + constant(40 + 1)] <> $07 byte[cell + constant(40 + 1)] := towhat sn.explosion_sound pub CheckAround(cell) | ob ob := byte[cell - 40] if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not return true ob := byte[cell - 1] if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not return true ob := byte[cell + 1] if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not return true ob := byte[cell + 40] if ob => $38 and ob =< $3B 'rockford or ameba, scanned or not return true return false pub CheckEnclosed(cell) | ob, i repeat i from 0 to 3 ob := byte[cell + dirs[i]] if ob == $00 or ob == $01 return false return true pub IncrementScore(amount) Score += amount st.set_score(Score) if Score => NextLife and Men < 9 ++Men sc.new_life NextLife += 500 pub AddBonusPoints | i, j i := j := st.get_time repeat while i > 0 st.set_time(--i) IncrementScore(Level + 1) if i < 10 sn.time_ending_sound(i) waitcnt(clkfreq / 32 + cnt) else sn.bonus_point_sound(j - i) dat long 0 'align ' screen array screen byte $00[40*28] ' color index 3 1 2 0 palette long $06_6B_04_02 ' -x- -y- scroll long $0000_0000 status long 1 'set this to 1 to show the status line at the top ' status line byte $90[20] ' foreground color for status line characters byte $06[20] ' tiles tiles word %%0_0_0_0_0_0_0_0 ' $00 space word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_1_0_0_1_0_1 ' $01 dirt word %%1_1_0_0_1_0_0_1 word %%0_1_2_1_0_1_2_0 word %%1_1_0_1_1_1_0_1 word %%1_0_1_1_1_0_1_1 word %%0_2_1_0_1_2_1_0 word %%2_1_1_2_2_0_1_1 word %%1_0_1_1_1_1_2_0 word %%0_1_1_1_2_1_1_1 word %%1_2_0_1_1_1_2_0 word %%1_2_1_0_2_1_0_1 word %%0_2_1_1_0_1_2_1 word %%1_0_1_0_1_0_1_0 word %%1_1_0_0_1_1_0_1 word %%1_0_1_2_0_1_0_0 word %%0_1_0_0_1_0_1_0 word %%0_3_3_3_0_3_3_3 ' $02 brick wall word %%0_2_3_3_0_2_3_3 word %%0_2_2_2_0_2_2_2 word %%0_0_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_2_0_2_2_2_0_2 word %%0_0_0_0_0_0_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_2_0_2_2_2 word %%0_0_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_2_0_2_2_2_0_2 word %%0_0_0_0_0_0_0_0 word %%0_3_3_3_0_3_3_3 ' $03 magic wall word %%0_2_3_3_0_2_2_2 word %%0_2_2_2_0_2_2_2 word %%0_0_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_3 word %%2_2_0_2_2_2_0_2 word %%0_0_0_0_0_0_0_0 word %%0_3_3_3_0_3_3_3 word %%0_2_3_3_0_2_3_3 word %%0_2_2_2_0_2_2_2 word %%0_0_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_3 word %%3_3_0_2_3_3_0_2 word %%2_2_0_2_2_2_0_2 word %%0_0_0_0_0_0_0_0 word %%2_2_2_2_2_2_2_2 ' $04 out door (invisible) word %%2_2_2_2_2_2_2_2 word %%2_0_0_2_2_0_0_2 word %%2_2_0_2_2_2_0_2 word %%2_3_0_2_2_3_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_0_0_2_2_0_0_2 word %%2_2_0_2_2_2_0_2 word %%2_3_0_2_2_3_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%0_0_0_0_0_0_0_0 ' $05 out door (flashing) word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $06 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%2_2_2_2_2_2_2_2 ' $07 steel wall word %%2_2_2_2_2_2_2_2 word %%2_0_0_2_2_0_0_2 word %%2_2_0_2_2_2_0_2 word %%2_3_0_2_2_3_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_0_0_2_2_0_0_2 word %%2_2_0_2_2_2_0_2 word %%2_3_0_2_2_3_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%0_0_0_0_0_0_0_0 ' $08 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $09 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $0A word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $0B word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $0C word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $0D word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $0E word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $0F word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_3_3_3_0_0_0 ' $10 boulder stationary word %%0_3_2_3_1_3_0_0 word %%3_1_3_2_3_3_3_0 word %%2_3_1_2_1_3_3_3 word %%2_2_2_1_2_3_3_3 word %%2_1_2_2_2_1_2_3 word %%2_2_1_1_2_2_3_3 word %%2_2_2_2_2_1_2_3 word %%2_0_2_2_2_2_2_1 word %%2_2_0_2_2_1_2_1 word %%2_0_2_2_2_2_2_2 word %%2_2_0_2_2_2_2_2 word %%2_2_2_0_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_0_1_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_3_3_3_0_0_0 ' $11 boulder stationary, scanned this frame word %%0_3_2_3_1_3_0_0 word %%3_1_3_2_3_3_3_0 word %%2_3_1_2_1_3_3_3 word %%2_2_2_1_2_3_3_3 word %%2_1_2_2_2_1_2_3 word %%2_2_1_1_2_2_3_3 word %%2_2_2_2_2_1_2_3 word %%2_0_2_2_2_2_2_1 word %%2_2_0_2_2_1_2_1 word %%2_0_2_2_2_2_2_2 word %%2_2_0_2_2_2_2_2 word %%2_2_2_0_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_0_1_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_3_3_3_0_0_0 ' $12 boulder falling word %%0_3_2_3_1_3_0_0 word %%3_1_3_2_3_3_3_0 word %%2_3_1_2_1_3_3_3 word %%2_2_2_1_2_3_3_3 word %%2_1_2_2_2_1_2_3 word %%2_2_1_1_2_2_3_3 word %%2_2_2_2_2_1_2_3 word %%2_0_2_2_2_2_2_1 word %%2_2_0_2_2_1_2_1 word %%2_0_2_2_2_2_2_2 word %%2_2_0_2_2_2_2_2 word %%2_2_2_0_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_0_1_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_3_3_3_0_0_0 ' $13 boulder falling, scanned this frame word %%0_3_2_3_1_3_0_0 word %%3_1_3_2_3_3_3_0 word %%2_3_1_2_1_3_3_3 word %%2_2_2_1_2_3_3_3 word %%2_1_2_2_2_1_2_3 word %%2_2_1_1_2_2_3_3 word %%2_2_2_2_2_1_2_3 word %%2_0_2_2_2_2_2_1 word %%2_2_0_2_2_1_2_1 word %%2_0_2_2_2_2_2_2 word %%2_2_0_2_2_2_2_2 word %%2_2_2_0_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_0_1_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_3_0_0_0 ' $14 diamond stationary word %%0_0_0_1_2_0_0_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_2_2_2_2_2_3_0 word %%0_1_1_1_1_1_2_0 word %%2_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%2_1_1_1_1_1_1_3 word %%1_2_2_2_2_2_2_2 word %%0_2_3_3_3_3_3_0 word %%0_1_3_3_3_3_2_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 ' $15 diamond stationary, scanned word %%0_0_0_1_2_0_0_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_2_2_2_2_2_3_0 word %%0_1_1_1_1_1_2_0 word %%2_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%2_1_1_1_1_1_1_3 word %%1_2_2_2_2_2_2_2 word %%0_2_3_3_3_3_3_0 word %%0_1_3_3_3_3_2_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 ' $16 diamond falling word %%0_0_0_1_2_0_0_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_2_2_2_2_2_3_0 word %%0_1_1_1_1_1_2_0 word %%2_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%2_1_1_1_1_1_1_3 word %%1_2_2_2_2_2_2_2 word %%0_2_3_3_3_3_3_0 word %%0_1_3_3_3_3_2_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_2_3_0_0_0 ' $17 diamond falling, scanned word %%0_0_0_1_2_0_0_0 word %%0_0_2_3_3_3_0_0 word %%0_0_1_3_3_2_0_0 word %%0_2_2_2_2_2_3_0 word %%0_1_1_1_1_1_2_0 word %%2_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%2_1_1_1_1_1_1_3 word %%1_2_2_2_2_2_2_2 word %%0_2_3_3_3_3_3_0 word %%0_1_3_3_3_3_2_0 word %%0_0_2_1_1_3_0_0 word %%0_0_1_1_1_2_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_1_1_0_0_0 word %%0_0_0_0_0_0_0_0 ' $18 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $19 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $1A word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $1B explode to space frame 1 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_3_0_0 word %%0_0_3_0_0_0_0_0 word %%0_3_0_0_3_0_0_0 word %%0_0_0_3_0_0_3_0 word %%0_0_0_0_3_0_0_0 word %%0_0_3_0_0_0_0_0 word %%0_3_0_0_0_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $1C explode to space frame 2 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_3_0_0 word %%0_0_0_3_0_1_0_0 word %%0_3_1_0_0_0_3_0 word %%0_1_0_0_1_3_1_0 word %%0_3_0_1_0_0_1_0 word %%0_0_0_0_1_3_0_0 word %%0_3_1_0_1_0_0_0 word %%0_1_0_1_0_1_0_0 word %%0_0_3_1_1_0_3_0 word %%0_0_3_0_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $1D explode to space frame 3 word %%0_0_0_0_0_0_0_0 word %%0_3_0_0_3_0_3_0 word %%0_0_0_3_0_2_0_0 word %%0_3_0_1_0_1_3_0 word %%0_1_2_0_0_0_1_0 word %%0_2_0_0_2_1_2_0 word %%3_1_0_2_0_0_2_0 word %%0_0_0_0_1_1_0_0 word %%3_1_2_0_1_0_3_0 word %%0_2_0_2_0_1_0_0 word %%0_0_1_2_1_0_1_0 word %%3_0_1_0_1_0_3_0 word %%0_0_0_3_3_0_0_0 word %%0_3_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $1E explode to space frame 4, same as frame 2 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_3_0_0 word %%0_0_0_3_0_1_0_0 word %%0_3_1_0_0_0_3_0 word %%0_1_0_0_1_3_1_0 word %%0_3_0_1_0_0_1_0 word %%0_0_0_0_1_3_0_0 word %%0_3_1_0_1_0_0_0 word %%0_1_0_1_0_1_0_0 word %%0_0_3_1_1_0_3_0 word %%0_0_3_0_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $1F explode to space frame 5, same as frame 1 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_3_0_0 word %%0_0_3_0_0_0_0_0 word %%0_3_0_0_3_0_0_0 word %%0_0_0_3_0_0_3_0 word %%0_0_0_0_3_0_0_0 word %%0_0_3_0_0_0_0_0 word %%0_3_0_0_0_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $20 explode to diamond frame 1 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_3_0_0 word %%0_0_3_0_0_0_0_0 word %%0_3_0_0_3_0_0_0 word %%0_0_0_3_0_0_3_0 word %%0_0_0_0_3_0_0_0 word %%0_0_3_0_0_0_0_0 word %%0_3_0_0_0_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_3_0_0_0 ' $21 explode to diamond frame 2 word %%3_0_3_0_0_0_3_0 word %%0_0_0_0_0_0_0_0 word %%0_0_3_0_3_0_3_0 word %%0_3_0_0_0_0_0_0 word %%0_0_0_0_0_3_0_0 word %%3_0_0_0_0_0_0_3 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%3_0_0_0_0_0_3_0 word %%0_0_0_0_0_0_0_0 word %%0_3_0_0_3_0_0_3 word %%0_0_0_3_0_0_0_0 word %%3_0_0_0_0_0_3_0 word %%0_0_3_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_1_1_0_0_0 ' $22 explode to diamond frame 3 word %%0_3_0_3_0_0_0_0 word %%0_0_1_0_0_1_0_3 word %%0_0_3_0_2_3_0_0 word %%0_0_0_2_0_0_1_0 word %%0_0_0_0_0_0_3_0 word %%1_0_2_0_0_2_0_1 word %%3_0_0_0_0_0_0_3 word %%1_0_0_0_0_0_0_2 word %%3_0_2_0_0_0_0_3 word %%0_0_0_0_0_2_2_0 word %%0_3_0_2_0_0_3_0 word %%0_0_1_0_1_2_0_0 word %%0_0_3_0_0_0_0_3 word %%0_3_0_1_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_0_0_0 ' $23 explode to diamond frame 4 word %%0_0_0_3_3_0_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_3_0_2_3_0_0 word %%0_1_0_2_0_0_1_0 word %%0_3_0_0_3_0_3_0 word %%1_0_2_3_1_2_0_1 word %%3_1_0_2_2_0_2_3 word %%1_0_0_3_0_1_1_2 word %%3_0_2_0_2_0_0_3 word %%0_1_1_0_0_3_2_0 word %%0_3_0_2_2_0_3_0 word %%0_0_1_3_0_2_0_0 word %%0_0_3_0_1_3_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_1_1_0_0_0 ' $24 explode to diamond frame 5 word %%0_0_0_3_3_0_0_0 word %%0_0_1_2_1_1_0_0 word %%0_0_3_2_2_3_0_0 word %%0_1_1_3_3_2_1_0 word %%0_3_2_3_2_2_3_0 word %%1_2_3_1_1_3_3_1 word %%3_3_2_3_3_2_1_3 word %%1_2_2_3_2_3_1_2 word %%3_2_3_1_3_1_1_3 word %%0_1_2_3_1_3_2_0 word %%0_3_2_1_2_1_3_0 word %%0_0_1_3_3_2_0_0 word %%0_0_3_2_1_3_0_0 word %%0_0_0_1_2_0_0_0 word %%0_0_0_3_3_0_0_0 word %%2_2_2_2_2_2_2_2 ' $25 inbox, flashing word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_0_0_0_0_0_0_2 word %%2_2_2_2_2_2_2_2 word %%0_0_0_0_0_0_0_0 ' $26 inbox morphing into rockford, same as explode to space frame 1 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_3_0_0 word %%0_0_3_0_0_0_0_0 word %%0_3_0_0_3_0_0_0 word %%0_0_0_3_0_0_3_0 word %%0_0_0_0_3_0_0_0 word %%0_0_3_0_0_0_0_0 word %%0_3_0_0_0_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $27 inbox morphing into rockford, same as explode to space frame 2 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_3_0_0 word %%0_0_0_3_0_1_0_0 word %%0_3_1_0_0_0_3_0 word %%0_1_0_0_1_3_1_0 word %%0_3_0_1_0_0_1_0 word %%0_0_0_0_1_3_0_0 word %%0_3_1_0_1_0_0_0 word %%0_1_0_1_0_1_0_0 word %%0_0_3_1_1_0_3_0 word %%0_0_3_0_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $28 inbox morphing into rockford, same as explode to space frame 3 word %%0_0_0_0_0_0_0_0 word %%0_3_0_0_3_0_3_0 word %%0_0_0_3_0_2_0_0 word %%0_3_0_1_0_1_3_0 word %%0_1_2_0_0_0_1_0 word %%0_2_0_0_2_1_2_0 word %%3_1_0_2_0_0_2_0 word %%0_0_0_0_1_1_0_0 word %%3_1_2_0_1_0_3_0 word %%0_2_0_2_0_1_0_0 word %%0_0_1_2_1_0_1_0 word %%3_0_1_0_1_0_3_0 word %%0_0_0_3_3_0_0_0 word %%0_3_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $29 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $2A word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $2B word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $2C word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $2D word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $2E word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $2F word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $30 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $31 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $32 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $33 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $34 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $35 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $36 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $37 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $38 rockford word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_3_3_0_2_0 word %%0_0_3_2_2_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_1_3_3_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_0_1_0_0_1_0_0 word %%0_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $39 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $3A word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $3B word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%2_2_2_2_2_2_2_2 ' $3C word %%2_2_2_2_2_2_2_2 word %%2_0_0_2_2_0_0_2 word %%2_2_0_2_2_2_0_2 word %%2_3_0_2_2_3_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_0_0_2_2_0_0_2 word %%2_2_0_2_2_2_0_2 word %%2_3_0_2_2_3_0_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_2_2_2_2_2_2 word %%0_0_0_0_0_0_0_0 ' $3D word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $3E word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $3F word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' chargen word %%0_0_0_0_0_0_0_0 ' $80 '0' word %%0_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $81 '1' word %%0_0_0_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_3_0 word %%0_0_0_0_0_0_0_0 ' $82 '2' word %%0_3_3_3_3_3_0_0 word %%3_3_0_0_3_3_3_0 word %%0_0_0_3_3_3_0_0 word %%0_0_3_3_3_0_0_0 word %%0_3_3_3_0_0_0_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_0_0_0_0_0_0_0 ' $83 word %%0_3_3_3_3_3_3_0 word %%0_0_0_0_3_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $84 word %%3_3_0_0_0_0_0_0 word %%3_3_0_0_0_0_0_0 word %%3_3_0_3_3_3_0_0 word %%3_3_3_3_3_3_3_0 word %%0_0_0_3_3_3_0_0 word %%0_0_0_3_3_3_0_0 word %%0_0_0_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $85 word %%3_3_3_3_3_3_3_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_3_3_0_0 word %%0_0_0_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $86 word %%0_3_3_3_3_3_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $87 word %%3_3_3_3_3_3_3_0 word %%3_0_0_0_3_3_3_0 word %%0_0_0_3_3_3_0_0 word %%0_0_3_3_3_0_0_0 word %%0_3_3_3_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $88 word %%0_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%0_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $89 word %%0_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_3_3_3_3_3_3_0 word %%0_0_0_3_3_3_0_0 word %%0_0_3_3_3_0_0_0 word %%0_3_3_3_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $8A ':' word %%0_0_0_0_0_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $8B ';' word %%0_0_0_0_0_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_3_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $8C '/' word %%0_0_0_0_0_0_3_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_3_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_3_0_0_0_0 word %%0_3_3_0_0_0_0_0 word %%3_3_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $8D word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $8E word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $8F word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $90 space word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $91 'A' word %%0_0_3_3_3_0_0_0 word %%0_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $92 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $93 word %%0_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $94 word %%3_3_3_3_3_0_0_0 word %%3_3_3_0_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_3_3_0_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 ' $95 word %%3_3_3_3_3_3_3_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_0_0_0_0_0_0_0 ' $96 word %%3_3_3_3_3_3_3_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $97 word %%0_3_3_3_3_3_3_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_3_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_3_0 word %%0_0_0_0_0_0_0_0 ' $98 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $99 word %%0_3_3_3_3_3_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_3_3_3_3_3_0_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $9A word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_3_3_3_3_3_3_0 word %%0_0_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $9B word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_3_3_0_0 word %%3_3_3_3_3_0_0_0 word %%3_3_3_3_3_0_0_0 word %%3_3_3_0_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $9C word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_0_0_0_0_0_0_0 ' $9D word %%3_3_0_0_0_3_3_0 word %%3_3_3_0_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_0_3_0_3_3_0 word %%3_3_0_0_0_3_3_0 word %%3_3_0_0_0_3_3_0 word %%3_3_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $9E word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_0_3_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $9F word %%0_3_3_3_3_3_0_0 word %%3_3_0_0_0_3_3_0 word %%3_3_0_0_0_3_3_0 word %%3_3_0_0_0_3_3_0 word %%3_3_0_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $A0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $A1 word %%0_0_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_3_3_0_0 word %%0_3_3_3_3_3_3_0 word %%0_0_3_3_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $A2 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $A3 word %%0_3_3_3_3_3_0_0 word %%3_3_3_0_0_0_0_0 word %%0_3_3_3_3_3_0_0 word %%0_0_0_0_0_3_3_0 word %%0_0_0_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $A4 word %%3_3_3_3_3_3_3_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 ' $A5 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_0_0_0_0_0_0_0 ' $A6 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 ' $A7 word %%3_3_0_0_0_3_3_0 word %%3_3_0_0_0_3_3_0 word %%3_3_0_3_0_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_0_3_3_3_0 word %%3_3_0_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $A8 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_0_3_3_3_3_0_0 word %%0_0_3_3_3_3_0_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%3_3_3_0_0_3_3_0 word %%0_0_0_0_0_0_0_0 ' $A9 word %%3_3_0_0_0_3_3_0 word %%3_3_0_0_0_3_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_3_3_3_0_0_0 word %%0_0_0_0_0_0_0_0 ' $AA word %%3_3_3_3_3_3_3_0 word %%0_0_0_3_3_3_0_0 word %%0_0_3_3_3_0_0_0 word %%0_3_3_3_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_0 word %%0_0_0_0_0_0_0_0 ' $AB '(' word %%0_0_0_0_3_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_0_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $AC diamond word %%0_0_0_3_0_0_0_0 word %%0_0_3_0_3_0_0_0 word %%0_3_3_3_3_3_0_0 word %%3_0_0_0_0_0_3_0 word %%0_3_3_3_3_3_0_0 word %%0_0_3_0_3_0_0_0 word %%0_0_0_3_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $AD ')' word %%0_0_3_3_0_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_3_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $AE word %%0_0_3_0_0_3_0_0 word %%0_0_3_3_3_3_0_0 word %%0_3_0_3_3_0_3_0 word %%0_3_0_3_3_0_3_0 word %%0_0_3_3_3_3_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_3_3_3_0_0 word %%0_0_0_0_0_0_0_0 ' $AF ',' word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_0_3_3_0_0_0 word %%0_0_3_3_0_0_0_0 word %%1_3_2_2_1_3_2_2 ' $B0 scrolling bgnd of the title screen word %%1_2_2_2_1_2_2_2 word %%0_1_2_2_0_1_2_2 word %%2_2_2_2_2_2_2_2 word %%2_2_1_3_2_2_1_3 word %%2_2_1_2_2_2_1_2 word %%2_2_0_1_2_2_0_1 word %%2_2_2_2_2_2_2_2 word %%3_3_3_3_3_3_3_3 ' $B1 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%1_2_3_3_3_3_3_3 ' $B2 word %%1_2_3_3_3_3_3_3 word %%1_2_3_3_3_3_3_3 word %%1_2_3_3_3_3_3_3 word %%1_2_3_3_3_3_3_3 word %%1_2_3_3_3_3_3_3 word %%1_2_3_3_3_3_3_3 word %%1_2_3_3_3_3_3_3 word %%3_3_3_3_0_0_0_0 ' $B3 word %%3_3_3_3_3_0_0_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 ' $B4 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_3_3_0_0_0 word %%3_3_3_3_0_0_0_0 ' $B5 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%0_0_0_0_3_3_3_3 ' $B6 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_0_0_0_0 ' $B7 word %%3_0_0_0_0_0_0_0 word %%3_3_0_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 ' $B8 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_0_0_0_0_0_0 word %%3_0_0_0_0_0_0_0 word %%1_2_3_3_0_0_0_0 ' $B9 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%0_0_0_0_1_2_3_3 ' $BA word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 ' $BB word %%0_0_0_0_1_2_2_2 word %%0_0_0_0_1_2_2_2 word %%0_0_0_0_1_2_3_2 word %%0_0_0_0_1_2_3_2 word %%0_0_0_0_1_2_3_2 word %%0_0_0_0_1_2_3_2 word %%0_0_0_0_1_2_3_3 word %%3_3_3_3_3_3_3_3 ' $BC word %%2_3_2_3_3_3_2_3 word %%2_3_2_2_3_2_2_3 word %%3_3_2_2_2_2_2_3 word %%3_3_2_3_2_3_2_3 word %%3_3_2_3_3_3_2_3 word %%3_3_2_3_3_3_2_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_0_0_0_0 ' $BD word %%3_3_3_3_3_0_0_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 ' $BE word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_3 word %%3_3_3_3_3_3_3_0 word %%3_3_3_3_3_3_0_0 word %%3_3_3_3_3_0_0_0 word %%3_3_3_3_0_0_0_0 ' $BF word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%0_0_0_0_3_3_3_3 ' $C0 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_3_3_3_3 word %%0_0_0_0_0_0_0_0 ' $C1 word %%3_0_0_0_0_0_0_0 word %%3_3_0_0_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 ' $C2 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_3_0_0_0_0 word %%3_3_3_0_0_0_0_0 word %%3_3_0_0_0_0_0_0 word %%3_0_0_0_0_0_0_0 word %%1_2_3_3_0_0_0_0 ' $C3 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%1_2_3_3_0_0_0_0 word %%0_0_0_0_1_2_3_3 ' $C4 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_1_2_3_3 ' $C5 word %%0_0_0_0_1_2_2_2 word %%0_0_0_0_1_2_2_2 word %%0_0_0_0_1_2_3_2 word %%0_0_0_0_1_2_3_2 word %%0_0_0_0_1_2_3_2 word %%0_0_0_0_1_2_3_2 word %%0_0_0_0_1_2_3_3 word %%0_0_0_0_0_0_0_0 ' $C6 unused... padding for second chargen (see below) word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $C7 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $C8 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $C9 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $CA word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $CB word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $CC word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $CD word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $CE word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $CF word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' this is basically the same character generator, but using ' a different color (I need this for the title screen). Either ' this, or separate color attributes for each cell of the ' screen. We have still some space here, so... word %%0_0_0_0_0_0_0_0 ' $D0 '0' word %%0_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $D1 '1' word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 ' $D2 '2' word %%0_2_2_2_2_2_0_0 word %%2_2_0_0_2_2_2_0 word %%0_0_0_2_2_2_0_0 word %%0_0_2_2_2_0_0_0 word %%0_2_2_2_0_0_0_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 ' $D3 word %%0_2_2_2_2_2_2_0 word %%0_0_0_0_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_0_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $D4 word %%2_2_0_0_0_0_0_0 word %%2_2_0_0_0_0_0_0 word %%2_2_0_2_2_2_0_0 word %%2_2_2_2_2_2_2_0 word %%0_0_0_2_2_2_0_0 word %%0_0_0_2_2_2_0_0 word %%0_0_0_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $D5 word %%2_2_2_2_2_2_2_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_2_2_2_0_0 word %%0_0_0_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $D6 word %%0_2_2_2_2_2_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $D7 word %%2_2_2_2_2_2_2_0 word %%2_0_0_0_2_2_2_0 word %%0_0_0_2_2_2_0_0 word %%0_0_2_2_2_0_0_0 word %%0_2_2_2_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $D8 word %%0_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%0_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $D9 word %%0_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_0_2_2_2_0_0 word %%0_0_2_2_2_0_0_0 word %%0_2_2_2_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $DA ':' word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $DB ';' word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $DC '/' word %%0_0_0_0_0_0_2_0 word %%0_0_0_0_0_2_2_0 word %%0_0_0_0_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_0_0_0_0 word %%0_2_2_0_0_0_0_0 word %%2_2_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $DD word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $DE word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $DF word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $E0 space word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $E1 'A' word %%0_0_2_2_2_0_0_0 word %%0_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $E2 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $E3 word %%0_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $E4 word %%2_2_2_2_2_0_0_0 word %%2_2_2_0_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_2_2_0_0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_2_2_0_0_0 word %%0_0_0_0_0_0_0_0 ' $E5 word %%2_2_2_2_2_2_2_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 ' $E6 word %%2_2_2_2_2_2_2_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $E7 word %%0_2_2_2_2_2_2_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_2_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 ' $E8 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $E9 word %%0_2_2_2_2_2_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_2_2_2_2_2_0_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $EA word %%0_0_0_0_0_2_2_0 word %%0_0_0_0_0_2_2_0 word %%0_0_0_0_0_2_2_0 word %%0_0_0_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $EB word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_2_2_0_0 word %%2_2_2_2_2_0_0_0 word %%2_2_2_2_2_0_0_0 word %%2_2_2_0_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $EC word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 ' $ED word %%2_2_0_0_0_2_2_0 word %%2_2_2_0_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_0_2_0_2_2_0 word %%2_2_0_0_0_2_2_0 word %%2_2_0_0_0_2_2_0 word %%2_2_0_0_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $EE word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_0_2_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $EF word %%0_2_2_2_2_2_0_0 word %%2_2_0_0_0_2_2_0 word %%2_2_0_0_0_2_2_0 word %%2_2_0_0_0_2_2_0 word %%2_2_0_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $F0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $F1 word %%0_0_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_2_2_0_0 word %%0_2_2_2_2_2_2_0 word %%0_0_2_2_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $F2 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $F3 word %%0_2_2_2_2_2_0_0 word %%2_2_2_0_0_0_0_0 word %%0_2_2_2_2_2_0_0 word %%0_0_0_0_0_2_2_0 word %%0_0_0_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $F4 word %%2_2_2_2_2_2_2_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_0_0_0_0_0_0 ' $F5 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 ' $F6 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_0_0_0_0_0_0 ' $F7 word %%2_2_0_0_0_2_2_0 word %%2_2_0_0_0_2_2_0 word %%2_2_0_2_0_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_0_2_2_2_0 word %%2_2_0_0_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $F8 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_2_2_2_2_0_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%2_2_2_0_0_2_2_0 word %%0_0_0_0_0_0_0_0 ' $F9 word %%2_2_0_0_0_2_2_0 word %%2_2_0_0_0_2_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_2_2_2_0_0_0 word %%0_0_0_0_0_0_0_0 ' $FA word %%2_2_2_2_2_2_2_0 word %%0_0_0_2_2_2_0_0 word %%0_0_2_2_2_0_0_0 word %%0_2_2_2_0_0_0_0 word %%2_2_2_0_0_0_0_0 word %%2_2_2_2_2_2_2_0 word %%2_2_2_2_2_2_2_0 word %%0_0_0_0_0_0_0_0 ' $FB '(' word %%0_0_0_0_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_0_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $FC diamond word %%0_0_0_2_0_0_0_0 word %%0_0_2_0_2_0_0_0 word %%0_2_2_2_2_2_0_0 word %%2_0_0_0_0_0_2_0 word %%0_2_2_2_2_2_0_0 word %%0_0_2_0_2_0_0_0 word %%0_0_0_2_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $FD ')' word %%0_0_2_2_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_0_0_0_0 word %%0_0_0_0_0_0_0_0 ' $FE word %%0_0_2_0_0_2_0_0 word %%0_0_2_2_2_2_0_0 word %%0_2_0_2_2_0_2_0 word %%0_2_0_2_2_0_2_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_2_2_0_0 word %%0_0_0_0_0_0_0_0 ' $FF ',' word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_0_0_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_0_2_2_0_0_0 word %%0_0_2_2_0_0_0_0