Omega Orb disassembly ===================== Omega Orb was written by Peter Scott and published by Audiogenic Software in 1987. It is a platform game where the player must bounce around a mining complex, solving puzzles to permit the collection of core pieces. The following disassembly was created by reverse engineering binary images, without access to any source code. It is nevertheless reasonably complete, allowing the technical approaches used to be understood. The author of this disassembly imposes no additional copyright restrictions beyond those already present on the game itself. It is provided for educational purposes only, and it is hoped that the original authors will accept it in the good faith it was intended - as a tribute to their skills. Technical notes =============== The first stage of the loader is an encrypted BASIC program. The second stage of the loader is an obfuscated BASIC program. The game is also partially written in BASIC. Interesting pokes ================= &2132 = &30 infinite lives &1b6b = &ad infinite energy &24dd = &3d, &24de = &30 infinite credits &2ae9 = &37 use PORT command without using TELEPORTER &572e = &30, &5756 = &30 remove all barriers Loader disassembly ================== ; OMEGA_ORB ; 002000 002000 000800 ; entry_point &2000 a9 c8 LDA #&c8 ; Read/Write BREAK/ESCAPE effect &2002 a2 03 LDX #&03 ; Clear memory on next reset &2004 a0 00 LDY #&00 &2006 20 f4 ff JSR &fff4 ; OSBYTE &2009 a0 00 LDY #&00 &200b a2 00 LDX #&00 &200d a9 81 LDA #&81 ; Read key with time limit &200f 20 f4 ff JSR &fff4 ; OSBYTE &2012 c0 1b CPY #&1b ; ESCAPE &2014 d0 03 BNE &2019 ; escape_not_pressed &2016 4c cd d9 JMP &d9cd ; os_reset_handler # Reset system if ESCAPE pressed ; escape_not_pressed &2019 a0 80 LDY #&80 ; &2080 = second_stage # Decrypt &2080 - &20ff &201b a9 00 LDA #&00 &201d 85 60 STA &60 ; decryption_address_low &201f a9 20 LDA #&20 &2021 85 61 STA &61 ; decryption_address_high ; decrypt_2080_to_20ff_first_loop &2023 b1 60 LDA (&60),Y ; decryption_address &2025 84 62 STY &62 ; decryption_eor &2027 45 62 EOR &62 ; decryption_eor &2029 91 60 STA (&60),Y ; decryption_address &202b c8 INY &202c d0 f5 BNE &2023 ; decrypt_2080_to_20ff_first_loop &202e a0 80 LDY #&80 ; decrypt_2080_to_20ff_second_loop &2030 b1 60 LDA (&60),Y ; decryption_address &2032 49 63 EOR #&63 &2034 91 60 STA (&60),Y ; decryption_address &2036 c8 INY &2037 d0 f7 BNE &2030 ; decrypt_2080_to_20ff_second_loop &2039 4c 80 20 JMP &2080 ; second_stage ; unused # &203c - &207f is similar to &206a - &20ad from game &203c e6 66 INC &66 &203e e6 66 INC &66 &2040 e6 66 INC &66 &2042 b9 e0 6e LDA &6ee0,Y &2045 20 7c 20 JSR &207c # &2073 20 aa 20 JSR &20aa &2048 c6 66 DEC &66 &204a c6 66 DEC &66 &204c c6 66 DEC &66 &204e a5 67 LDA &67 &2050 18 CLC &2051 69 10 ADC #&10 &2053 85 67 STA &67 &2055 b9 40 6f LDA &6f40,Y &2058 20 7c 20 JSR &207c # &2086 20 aa 20 JSR &20aa &205b e6 66 INC &66 &205d e6 66 INC &66 &205f e6 66 INC &66 &2061 b9 a0 6f LDA &6fa0,Y &2064 20 7c 20 JSR &207c # &208f b9 a0 6f LDA &6fa0,Y &2067 a5 bc LDA &bc &2069 c9 0d CMP #&0d &206b b0 08 BCS &2075 &206d a5 67 LDA &67 &206f 38 SEC &2070 e9 10 SBC #&10 &2072 85 67 STA &67 &2074 60 RTS &2075 c6 66 DEC &66 &2077 c6 66 DEC &66 &2079 c6 66 DEC &66 &207b 60 RTS &207c 85 b6 STA &b6 &207e 29 80 AND #&80 # &20ac c9 ff CMP #&ff # &2080 - &20ff is decrypted at &2023 and &2030 ; second_stage &2080 a9 c8 LDA #&c8 ; Read/Write BREAK/ESCAPE effect &2082 a2 03 LDX #&03 ; Clear memory on next reset &2084 a0 00 LDY #&00 &2086 20 f4 ff JSR &fff4 ; OSBYTE &2089 a0 00 LDY #&00 &208b 84 60 STY &60 ; decryption_address_low &208d a9 21 LDA #&21 &208f 85 61 STA &61 ; decryption_address_high &2091 ad ff 20 LDA &20ff &2094 8d 00 01 STA &0100 ; decrypt_2100_to_27ff_loop # Decrypt &2100 - &27ff &2097 b1 60 LDA (&60),Y ; decryption_address &2099 84 62 STY &62 ; decryption_eor &209b 45 62 EOR &62 ; decryption_eor &209d 91 60 STA (&60),Y ; decryption_address &209f c8 INY &20a0 d0 f5 BNE &2097 ; decrypt_2100_to_27ff_loop &20a2 e6 61 INC &61 ; decryption_address_high &20a4 a5 61 LDA &61 ; decryption_address_high &20a6 c9 28 CMP #&28 &20a8 d0 ed BNE &2097 ; decrypt_2100_to_27ff_loop ; &20aa a9 06 LDA #&06 ; enable VDU drivers &20ac 20 ee ff JSR &ffee ; OSWRCH &20af a9 01 LDA #&01 # R1: Number of characters per line &20b1 8d 00 fe STA &fe00 ; video register number &20b4 a9 00 LDA #&00 # Hide screen &20b6 8d 01 fe STA &fe01 ; video register value &20b9 a9 12 LDA #&12 ; Reset function key definitions &20bb a2 00 LDX #&00 &20bd a0 00 LDY #&00 &20bf 20 f4 ff JSR &fff4 ; OSBYTE &20c2 a2 e0 LDX #&e0 ; &20e0 = run_string &20c4 a0 20 LDY #&20 &20c6 20 f7 ff JSR &fff7 ; OSCLI # Define function key 0 &20c9 a9 8a LDA #&8a ; Place character into buffer &20cb a2 00 LDX #&00 &20cd a0 80 LDY #&80 ; f0 &20cf 4c f4 ff JMP &fff4 ; OSBYTE # Simulate pressing of function key 0 ; unused # Source code fragment, stored unencrypted &20d0 74 32 3a 52 4f 52 20 41 3a 42 43 53 62 70 ; "t2:ROR A:BCSbp" ; run_string &20e0 4b 45 59 30 2a 42 2e 7c 4d 50 41 2e 3d 38 34 34 ; "KEY0*B.|MPA.=8448:RUN|M" # *BASIC &20f0 38 3a 52 55 4e 7c 4d 0d # PAGE=&2100:RUN ; unused &20f8 65 09 ; unused # Source code fragment, stored unencrypted &20fa 2e 62 70 72 69 6e ; ".bprin" # &2100 - &27ff is decrypted at &2097 &2100 0d # Start of BASIC program &2101 00 00 0c 2a 46 58 32 30 30 20 33 0d ; 0*FX200 3 # Clear memory on next reset &210d 00 01 0a ee 85 d6 21 2d 34 0d ; 1ONERRORCALL!-4 # Reset system on error &2117 00 02 0a 2a 46 58 34 20 31 0d ; 2*FX4 1 # Cursor keys return ASCII values 135-139 &2121 00 03 0d 2a 46 58 32 31 31 20 31 39 0d ; 3*FX211 19 # Set bell channel &212e 00 04 0e 2a 46 58 32 31 32 20 32 31 36 0d ; 4*FX212 216 # Set bell volume &213c 00 05 0e 2a 46 58 32 31 33 20 31 32 30 0d ; 5*FX213 120 # Set bell frequency &214a 00 06 0c 2a 46 58 32 31 34 20 31 0d ; 6*FX214 1 # Set bell duration &2156 00 07 09 2a 46 58 31 31 0d ; 7*FX11 # Disable auto-repeat &215f 00 08 0c 2a 54 56 32 35 35 2c 30 0d ; 8*TV255,0 &216b 00 09 67 eb 35 3a ef 32 33 3b 31 30 2c 33 32 3b ; 9MODE5: &217b 30 3b 30 3b 30 3b 32 33 3b 37 2c 32 34 3b 30 3b ; VDU23;10,32;0;0;0; # R10: Cursor start register (disable cursor) &218b 30 3b 30 3b 32 33 3b 36 2c 37 3b 30 3b 30 3b 30 ; 23;7,24;0;0;0; # R7: Vertical sync position &219b 3b 31 39 2c 32 2c 36 3b 30 3b 31 39 2c 33 2c 33 ; 23;6,7;0;0;0; # R6: Vertical displayed register &21ab 3b 30 3b 3a d3 3d 26 32 43 35 30 3a 3f 26 46 45 ; 19,2,6;0; # Set colour 2 to cyan &21bb 36 32 3d 26 46 46 3a 3f 26 46 45 36 30 3d 26 45 ; 19,3,3;0;: # Set colour 3 to yellow &21cb 3a 2a 46 58 31 36 0d ; HIMEM=&2C50: ; ?&FE62=&FF: # User VIA data direction register B (set all bits as output) ; ?&FE60=&E: # User VIA port B input/output register ; *FX16 # Disable ADC conversion &21d2 00 0a 72 e3 4c 25 3d 30 b8 31 39 3a 41 25 3d 26 ; 10FORL%=0TO19: &21e2 35 38 31 30 2b 4c 25 2a 33 32 30 3a 4c 25 3f 26 ; A%=&5810+L%*320: &21f2 41 38 30 3d 41 25 83 32 35 36 3a 4c 25 3f 26 41 ; L%?&A80=A%MOD256: # Populate group_addresses_low_table &2202 39 34 3d 41 25 81 32 35 36 3a ed 3a e3 4c 25 3d ; L%?&A94=A%DIV256: # Populate group_addresses_high_table &2212 30 b8 37 3a 41 25 3d 26 39 30 30 2b 4c 25 2a 36 ; NEXT: &2222 34 3a 4c 25 3f 26 41 41 38 3d 41 25 83 32 35 36 ; FORL%=0TO7: &2232 3a 4c 25 3f 26 41 42 30 3d 41 25 81 32 35 36 3a ; A%=&900+L%*64: &2242 ed 0d ; L%?&AA8=A%MOD256: # Populate player_sprite_addresses_low_table ; L%?&AB0=A%DIV256: # Populate player_sprite_addresses_high_table ; NEXT &2244 00 0b 77 e3 4c 25 3d 30 b8 31 30 3a f3 4c 25 3f ; 11FORL%=0TO10: &2254 26 31 41 30 3a ed 3a e3 4c 25 3d 30 b8 33 3a f3 ; READL%?&1A0: # Populate unused area &2264 4c 25 3f 26 41 42 43 2c 4c 25 3f 26 41 42 38 3a ; NEXT: &2274 ed 3a e3 4c 25 3d 30 b8 31 35 3a f3 4c 25 3f 26 ; FORL%=0TO3: &2284 31 31 30 3a ed 3a e3 4c 25 3d 26 31 38 30 b8 26 ; READL%?&ABC,L%?&AB8: # Populate player_x_fraction_to_flip_table &2294 31 39 46 3a f3 3f 4c 25 3a ed 3a ef 32 38 2c 30 ; NEXT: # and player_x_fraction_to_sprite_table &22a4 2c 32 2c 31 39 2c 30 3a 2a 4c 2e 53 43 52 45 45 ; FORL%=0TO15: &22b4 4e 20 36 30 43 30 0d ; READL%?&110: # Populate sound_0 - sound_1 ; NEXT: ; FORL%=&180TO&19F: ; READ?L%: # Populate sound_2 - sound_5 ; NEXT: ; VDU28,0,2,19,0: # Define text window ; *L.SCREEN 60C0 # Load loading screen &22bb 00 0c 9f dc 31 35 2c 32 34 30 2c 32 35 35 2c 31 ; 12DATA15,240,255,19,0,3,0,100,0,4,0, &22cb 39 2c 30 2c 33 2c 30 2c 31 30 30 2c 30 2c 34 2c ; 1,0,1,4,2,4,2,0, &22db 30 2c 31 2c 30 2c 31 2c 34 2c 32 2c 34 2c 32 2c ; 17,0,1,0,10,0,1,0, &22eb 30 2c 31 37 2c 30 2c 31 2c 30 2c 31 30 2c 30 2c ; 17,0,1,0,30,0,1,0, &22fb 31 2c 30 2c 31 37 2c 30 2c 31 2c 30 2c 33 30 2c ; 18,0,2,0,10,0,6,0, &230b 30 2c 31 2c 30 2c 31 38 2c 30 2c 32 2c 30 2c 31 ; 16,0,4,0,100,0,1,0, &231b 30 2c 30 2c 36 2c 30 2c 31 36 2c 30 2c 34 2c 30 ; 16,0,2,0,5,0,7,0, &232b 2c 31 30 30 2c 30 2c 31 2c 30 2c 31 36 2c 30 2c ; 19,0,4,0,128,0,1,0 &233b 32 2c 30 2c 35 2c 30 2c 37 2c 30 2c 31 39 2c 30 &234b 2c 34 2c 30 2c 31 32 38 2c 30 2c 31 2c 30 0d &235a 00 0d 22 ef 31 32 2c 32 38 2c 30 2c 32 32 2c 31 ; 13VDU12, # Clear screen &236a 39 2c 30 3a e3 4c 25 3d 30 b8 36 3a 2a 46 58 31 ; 28,0,22,19,0: # Define text window &237a 39 0d ; FORL%=0TO6: # Scroll "PETER SCOTT / A.S.L. PRESENT" onto screen ; *FX19 # Wait for vertical retrace &237c 00 0e 27 ef 33 31 2c 30 2c 32 32 2c 31 30 3a ed ; 14VDU31,0,22, # TAB(&00, &22) &238c 3a 4e 25 3d a6 31 37 35 3a e3 4c 25 3d 30 b8 36 ; 10: # cursor down &239c 3a 2a 46 58 31 39 0d ; NEXT: ; N%=INKEY175: # Delay ; FORL%=0TO6: # Scroll "OMEGA ORB" onto screen ; *FX19 # Wait for vertical retrace &23a3 00 0f 20 ef 33 31 2c 30 2c 32 32 2c 31 30 3a ed ; 15VDU31,0,22, # TAB(&00, &22) &23b3 3a ef 32 36 3a e7 a6 2d 39 39 e5 8d 54 5c 40 0d ; 10: # Cursor down ; NEXT: ; VDU26: # Restore default windows ; IFINKEY-99GOTO28 # If SPACE pressed, skip music &23c3 00 10 0c 2a 46 58 32 30 30 20 32 0d ; 16*FX200 2 # Clear memory on next RESET &23cf 00 11 0b ee 85 e5 8d 54 5c 40 0d ; 17ONERRORGOTO28 # Skip music on error &23da 00 12 0d 2a 46 58 32 32 30 20 33 32 0d ; 18*FX220 32 # Set keycode for ESCAPE to be " " &23e7 00 13 6d e2 31 2c 34 2c 31 2c 2d 31 2c 30 2c 32 ; 19ENVELOPE1,4,1,-1,0,2,1,0,60,-9,0,-4,120,30: &23f7 2c 31 2c 30 2c 36 30 2c 2d 39 2c 30 2c 2d 34 2c ; ENVELOPE2,3,0,1,0,10,2,0,8,-4,0,-6,100,80: &2407 31 32 30 2c 33 30 3a e2 32 2c 33 2c 30 2c 31 2c ; ENVELOPE3,14,0,0,0,0,1,1,5,0,0,-1,120,100 &2417 30 2c 31 30 2c 32 2c 30 2c 38 2c 2d 34 2c 30 2c # Define envelopes used for music &2427 2d 36 2c 31 30 30 2c 38 30 3a e2 33 2c 31 34 2c &2437 30 2c 30 2c 30 2c 30 2c 31 2c 31 2c 35 2c 30 2c &2447 30 2c 2d 31 2c 31 32 30 2c 31 30 30 0d &2454 00 14 6c f7 8d 54 59 40 3a de 44 25 28 32 35 29 ; 20RESTORE25: &2464 3a e3 41 25 3d 31 b8 31 36 3a f3 41 24 3a e3 42 ; DIMD%(25): # Array is never written to &2474 25 3d 30 b8 33 30 88 32 3a 48 25 3d 97 28 c1 41 ; FORA%=1TO16: # FOR bar = 1 To 16 &2484 24 2c 42 25 2b 31 2c 31 29 29 2d 36 34 3a 4c 25 ; READA$: # READ notes$ &2494 3d 97 28 c1 41 24 2c 42 25 2b 32 2c 31 29 29 2d ; FORB%=0TO30STEP2: # FOR offset = 0 TO 30 STEP 2 &24a4 36 34 3a e7 48 25 3d 32 35 4d 48 25 3d 26 31 30 ; H%=ASC(MID$(A$,B%+1,1))-64: # high = ASC(MID$(notes$, offset + 1, 1)) - 64 &24b4 30 31 20 8b 4d 48 25 3d 26 31 31 0d ; L%=ASC(MID$(A$,B%+2,1))-64: # low = ASC(MID$(notes$, offset + 2, 1)) - 64 ; IFH%=25 # IF high = 25 ("Y") ; MH%=&1001 # high_channel = &1001 (dummy note) ; ELSE # ELSE ; MH%=&11 # high_channel = &11 &24c0 00 15 29 e7 44 25 28 48 25 29 3c 30 56 48 25 3d ; 21IFD%(H%)<0 # Unnecessary code &24d0 36 36 34 3a 43 48 25 3d 30 3a 8b 56 48 25 3d 35 ; VH%=664: # Value is unused &24e0 35 32 3a 43 48 25 3d 33 0d ; CH%=0: # Value is unused ; ELSE ; VH%=552: # Value is unused ; CH%=3 # Value is unused &24e9 00 16 2a 44 48 25 3d 94 28 44 25 28 48 25 29 29 ; 22DH%=ABS(D%(H%)): # Value is unused &24f9 3a e7 4c 25 3d 32 35 4d 4c 25 3d 26 31 30 30 32 ; IFL%=25 # If low = 25 ("Y") &2509 20 8b 4d 4c 25 3d 26 31 32 0d ; ML%=&1002 # low_channel = &1002 (dummy note) ; ELSE # ELSE ; ML%=&12 # low_channel = &12 &2513 00 17 29 e7 44 25 28 4c 25 29 3c 30 56 4c 25 3d ; 23IFD%(L%)<0 # Unnecessary code &2523 36 36 34 3a 43 4c 25 3d 30 20 8b 56 4c 25 3d 35 ; VL%=664: # Value is unused &2533 35 32 3a 43 4c 25 3d 33 0d ; CL%=0 ; ELSE # Value is unused ; VL%=552: # Value is unused ; CL%=3 # Value is unused &253c 00 18 40 44 4c 25 3d 94 28 44 25 28 4c 25 29 29 ; 24DL%=ABS(D%(L%)): # Value is unused &254c 3a d4 4d 48 25 2c 31 2c 34 2a 48 25 2b 39 37 2c ; SOUNDMH%,1,4*H%+97,5: # SOUND high_channel, 1, 4 * high + 97, 5 &255c 35 3a d4 4d 4c 25 2c 32 2c 34 2a 4c 25 2b 31 2c ; SOUNDML%,2,4*L%+1,7: # SOUND low_channel, 2, 4 * low + 1, 7 &256c 37 3a d1 3d 30 3a f5 fd 91 3e 31 30 3a ed 2c 0d ; TIME=0: ; REPEATUNTILTIME>10: # Delay ; NEXT, # NEXT offset, bar &257c 00 19 ca dc 57 4b 52 59 4f 4b 52 59 57 4a 52 59 ; 25DATAWKRYOKRYWJRYOJRYWHRYOHRYWFRYOFRY, &258c 4f 4a 52 59 57 48 52 59 4f 48 52 59 57 46 52 59 ; MDWYVDTYRFPYOFMYOKKYMYOYPYRYTYVY, &259c 4f 46 52 59 2c 4d 44 57 59 56 44 54 59 52 46 50 ; WKRYOWRYWCRYOORYWAQYMMQYWETYMQTY, &25ac 59 4f 46 4d 59 4f 4b 4b 59 4d 59 4f 59 50 59 52 ; VFTYRRTYMAYYQMYYRFYYMYOYMYOYMYOY, &25bc 59 54 59 56 59 2c 57 4b 52 59 4f 57 52 59 57 43 ; MFJYFJJYMDJYFAJYRCKYFFKYRHKYFFKY, &25cc 52 59 4f 4f 52 59 57 41 51 59 4d 4d 51 59 57 45 ; PAJYFCJYPFJYFHJYOKFYHYJYKYMYOYPY &25dc 54 59 4d 51 54 59 2c 56 46 54 59 52 52 54 59 4d &25ec 41 59 59 51 4d 59 59 52 46 59 59 4d 59 4f 59 4d &25fc 59 4f 59 4d 59 4f 59 2c 4d 46 4a 59 46 4a 4a 59 &260c 4d 44 4a 59 46 41 4a 59 52 43 4b 59 46 46 4b 59 &261c 52 48 4b 59 46 46 4b 59 2c 50 41 4a 59 46 43 4a &262c 59 50 46 4a 59 46 48 4a 59 4f 4b 46 59 48 59 4a &263c 59 4b 59 4d 59 4f 59 50 59 0d &2646 00 1a ea dc 52 4b 4f 4b 4b 59 4f 59 52 59 4f 59 ; 26DATARKOKKYOYRYOYKYOYRJMJFYMYRYMYFYMY, &2656 4b 59 4f 59 52 4a 4d 4a 46 59 4d 59 52 59 4d 59 ; OHKHHYKYOYKYHYKYOFJFFYJYOYJYFYJY, &2666 46 59 4d 59 2c 4f 48 4b 48 48 59 4b 59 4f 59 4b ; WDTDPYTYWYTYPYTYWCRCOYRYWYRYOYRY, &2676 59 48 59 4b 59 4f 46 4a 46 46 59 4a 59 4f 59 4a ; PARATDRDPCOCMDKDJFKFMJKJJHHHFJDJ, &2686 59 46 59 4a 59 2c 57 44 54 44 50 59 54 59 57 59 ; CKFKDMHMFOJOHPKPJRMRKTOTMVPVOWRW, &2696 54 59 50 59 54 59 57 43 52 43 4f 59 52 59 57 59 ; PMROPMROTPROPMOKMJOKMJOKPMROPMRO, &26a6 52 59 4f 59 52 59 2c 50 41 52 41 54 44 52 44 50 ; TPROTPROPMOKPMOKMJOKMJOKPMROPMR &26b6 43 4f 43 4d 44 4b 44 4a 46 4b 46 4d 4a 4b 4a 4a &26c6 48 48 48 46 4a 44 4a 2c 43 4b 46 4b 44 4d 48 4d &26d6 46 4f 4a 4f 48 50 4b 50 4a 52 4d 52 4b 54 4f 54 &26e6 4d 56 50 56 4f 57 52 57 2c 50 4d 52 4f 50 4d 52 &26f6 4f 54 50 52 4f 50 4d 4f 4b 4d 4a 4f 4b 4d 4a 4f &2706 4b 50 4d 52 4f 50 4d 52 4f 2c 54 50 52 4f 54 50 &2716 52 4f 50 4d 4f 4b 50 4d 4f 4b 4d 4a 4f 4b 4d 4a &2726 4f 4b 50 4d 52 4f 50 4d 52 0d &2730 00 1b 67 dc 54 50 52 4f 54 50 52 4f 50 4d 4f 4b ; 27DATATPROTPROPMOKPMOKMJOKMJOKPMOKPMRJ, &2740 50 4d 4f 4b 4d 4a 4f 4b 4d 4a 4f 4b 50 4d 4f 4b ; OKRKPJTJRKVKTMWMVJYJTJRJWKYKPHYH, &2750 50 4d 52 4a 2c 4f 4b 52 4b 50 4a 54 4a 52 4b 56 ; OKYKMHKHFFYFJMYMKOKOYFYFYKYKYKKK &2760 4b 54 4d 57 4d 56 4a 59 4a 54 4a 52 4a 57 4b 59 &2770 4b 50 48 59 48 2c 4f 4b 59 4b 4d 48 4b 48 46 46 &2780 59 46 4a 4d 59 4d 4b 4f 4b 4f 59 46 59 46 59 4b &2790 59 4b 59 4b 4b 4b 0d &2797 00 1c 0d 2a 46 58 32 32 30 20 32 37 0d ; 28*FX220 27 # Reset keycode for ESCAPE &27a4 00 1d 1b ef 32 38 2c 31 38 2c 34 2c 31 39 2c 30 ; 29VDU28,18,4,19,0: # Define text window &27b4 3a d7 22 4f 4d 45 47 41 32 22 0d ; CHAIN"OMEGA2" # Run second stage of loader &27bf ff # End of BASIC program ; ten_times_table # Unused &27c0 00 0a 00 14 00 1e 00 28 00 32 00 3c 00 46 00 50 # 1 * 10 through to 29 * 10 &27d0 00 5a 00 64 00 6e 00 78 00 82 00 8c 00 96 00 a0 &27e0 00 a5 00 aa 00 b4 00 be 00 c8 00 d2 00 dc 00 e6 &27f0 00 f0 00 fa 01 04 01 0e 01 18 01 22 ; unused &27fc 70 fd 68 ff ; SCREEN ; 005800 005800 001180 # Loaded at &60c0 ; peter_scott_asl_presents_screen_data # Raw MODE 5 screen data &60c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &60d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &60e0 ff ff 6f 67 67 67 67 77 cc ee 7f 3f 33 33 77 ef &60f0 ff ff 6f 67 6f 6f 7f 7f ee ef 2f 0f 01 44 ce ce &6100 ff ff 9f 1f 15 11 11 11 ff ff 9f 8f 8c 8c 8c 8c &6110 77 7f 3f 3b 3b 33 33 33 ff ff 1f 0f 08 2a ef ef &6120 77 7f 3f 3f 3b 33 33 33 ee ff 3f 1f 19 3b ff ef &6130 00 00 88 8c 8c 8c 0c 08 00 00 00 00 00 00 00 00 &6140 33 77 ef cf ce ee 7f 37 88 cc ee 6f 07 03 88 cc &6150 33 77 ef cf cf ce ce ce 88 cc ee 6f 07 03 00 00 &6160 33 77 ef cf cf ce ce ce 88 cc ee 6f 67 67 67 67 &6170 ff ff 9f 1f 15 11 11 11 ff ff 9f 8f 8c 8c 8c 8c &6180 ff ff 3f 3f 3b 33 33 33 ee ef 2f 0f 09 08 08 08 &6190 00 00 00 00 11 11 33 33 66 67 cf cf 8e 8e 0c 0c &61a0 00 11 11 33 33 67 67 67 88 cc ce 6e 6f 3b 33 33 &61b0 00 00 00 00 00 00 08 08 33 77 ef cf ce ee 7f 37 &61c0 88 cc ee 6f 07 03 88 cc 33 33 13 11 11 11 11 11 &61d0 cc ce 8e 8e 8c 8c 8c 8c 00 00 00 00 00 00 00 00 &61e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &61f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6220 77 67 67 67 ff ff 0f 07 cf 0f 0e 00 00 08 08 08 &6230 6f 67 67 67 ff ff 0f 07 4e 0e 02 22 ee ef 0f 0f &6240 11 11 11 11 33 33 03 01 8c 8c 8c 8c cc ce 0e 0e &6250 33 33 33 33 77 77 07 03 2f 0f 09 19 ff ff 0f 0f &6260 33 33 33 33 77 7f 0f 0b ef 6f 7f 3b 3b 3b 0b 09 &6270 00 00 00 08 88 8c 0c 0c 00 00 00 00 00 00 00 00 &6280 03 01 cc ee 7f 37 03 01 ee 6f 67 ef cf 8f 0e 0c &6290 ce ce ce ee 7f 37 03 01 00 00 66 ef cf 8f 0e 0c &62a0 ce ce ce ee 7f 37 03 01 67 67 67 ef cf 8f 0e 0c &62b0 11 11 11 11 33 33 03 01 8c 8c 8c 8c cc ce 0e 0e &62c0 33 33 33 33 77 77 07 03 08 08 08 08 99 9d 0d 0c &62d0 67 67 cf cf 8e 8e 0c 0c 08 08 00 00 00 00 00 00 &62e0 77 77 67 67 ff ff 0f 07 ff ff 3f 3b 7f 7f 0f 0b &62f0 08 08 08 08 aa af 0f 0d 03 01 cc ee 7f 37 03 01 &6300 ee 6f 67 ef cf 8f 0e 0c 11 11 11 11 bb bf 0f 05 &6310 8c 8c 8c 8c ff ff 0f 0f 00 00 00 88 ae af 0f 0d &6320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &63a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &63b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &63c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &63d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &63e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &63f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &64a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &64b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &64c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &64d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &64e0 00 00 00 00 00 00 00 00 f0 f0 69 61 61 61 61 70 &64f0 80 c0 68 3c 30 30 61 c3 f0 f0 69 61 69 69 69 78 &6500 80 c0 60 30 30 30 61 c3 f0 f0 69 61 69 69 78 78 &6510 e0 e1 2d 0f 01 40 c2 c2 30 70 e1 c3 c3 e1 78 34 &6520 80 c0 e0 69 07 03 80 c0 f0 f0 69 61 61 61 70 70 &6530 f0 f0 2d 0f 01 40 c2 c2 c0 c2 e0 e1 f0 f0 d2 d2 &6540 f0 f0 69 61 61 69 e1 e1 f0 f0 96 1e 14 10 10 10 &6550 f0 f0 96 87 84 84 84 84 00 00 08 08 08 00 00 00 &6560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &65a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &65b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &65c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &65d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &65e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &65f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6620 00 00 00 00 00 00 00 00 70 61 61 61 f0 f0 0f 07 &6630 87 0e 0c 00 00 08 08 08 70 61 61 61 f0 f0 0f 07 &6640 c3 c2 68 60 34 38 0b 09 61 61 61 61 f0 78 0f 0f &6650 4a 0e 02 20 e1 e1 0f 0f 03 01 c0 e0 78 34 03 01 &6660 e0 69 61 e1 c3 87 0e 0c 61 61 61 61 f0 f0 0f 07 &6670 4a 0e 02 20 f0 f0 0f 0f c2 c2 c2 c2 e0 e1 0f 0f &6680 e1 e1 61 61 f0 f0 0f 07 10 10 10 10 30 38 0b 09 &6690 84 84 84 84 c0 c2 0e 0e 00 00 00 00 00 00 00 00 &66a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &66b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &66c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &66d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &66e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &66f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &67a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &67b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &67c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &67d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &67e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &67f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &68a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &68b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &68c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &68d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &68e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &68f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; omega_orb_screen_data # Raw MODE 5 screen data &6980 00 11 33 33 77 76 76 fc 77 ff ff fc f0 f0 f0 f0 &6990 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &69a0 ff ff ff f0 f0 f0 f0 f0 ee ff ff f1 f0 f0 f0 f0 &69b0 00 88 cc 8c 0e 86 86 c3 11 33 77 77 fe fc fc fc &69c0 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &69d0 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &69e0 ff ff ff f0 f0 f0 f0 f0 88 cc ce 8e 87 c3 c3 c3 &69f0 00 11 33 33 77 76 76 fc 77 ff ff f8 f0 f0 f0 f0 &6a00 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &6a10 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &6a20 ff ef cf c3 c3 c3 c3 c3 00 11 33 33 77 76 76 fe &6a30 77 ff ff fc f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &6a40 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &6a50 ff ff ff f0 f0 f0 f0 f0 ff ef cf c3 c3 c3 c3 c3 &6a60 00 11 33 33 76 76 76 fc 77 ff ff f0 f0 f0 f0 f0 &6a70 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &6a80 ff ff ff f0 f0 f0 f0 f0 ee ff ff f0 f0 f0 f0 f0 &6a90 00 88 cc 8c 86 86 86 c3 00 00 00 00 00 00 00 00 &6aa0 ff ff f8 f8 f8 f8 8f 0f ff ff f0 f0 f0 f0 0f 0f &6ab0 ff ff f0 f0 f0 f0 0f 0f ff ef e1 e1 e1 e1 0f 0f &6ac0 fc fc fc fc fc fc fc fc f0 f0 f0 e1 e1 c3 c3 c3 &6ad0 f0 f0 87 0f 0f 08 00 00 f0 f0 0f 0f 0f 00 00 00 &6ae0 f0 f0 1e 0f 0f 11 00 00 f0 f0 f0 78 f8 fc fc fc &6af0 c3 c3 c3 c3 c3 c3 c3 c3 fc fc fc fc fc fc fc fc &6b00 f0 f0 e1 e1 c3 c3 c3 c3 f0 f0 0f 0f 0f 33 33 33 &6b10 f0 f0 0f 0f 0f ff ff ff f0 f0 0f 0f 0f cc 8c 0c &6b20 f0 f0 78 7c fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6b30 fc fc fc fc fc fc fc fc f0 f0 f0 e1 e1 c3 c3 c3 &6b40 f0 f0 0f 0f 0f 08 00 00 f0 f0 0f 0f 0f 00 00 00 &6b50 f0 f0 0f 0f 0f 00 00 00 f0 f0 0f 0f 0f 00 00 00 &6b60 c3 c3 0f 0f 0f 00 00 00 fc fc fc fc fc fc fc fc &6b70 f0 f0 e1 c3 c3 c3 c3 c3 f0 f0 0f 0f 0f 08 00 00 &6b80 f0 f0 0f 0f 0f 00 00 00 f0 f0 0f 0f 0f 00 00 00 &6b90 f0 f0 0f 0f 0f 00 00 00 c3 c3 0f 0f 0f 00 00 00 &6ba0 fc fc fc fc fc fc fc fc f0 f0 e1 c3 c3 c3 c3 c3 &6bb0 f0 f0 0f 0f 0f 00 00 00 f0 f0 0f 0f 0f 00 00 00 &6bc0 f0 f0 0f 0f 0f 00 00 00 f0 f0 78 7c fc fc fc fc &6bd0 c3 c3 c3 c3 c3 c3 c3 c3 00 00 00 00 00 00 00 00 &6be0 ff ff f8 f8 f8 f8 8f 0f ff ff f0 f0 f0 f0 0f 0f &6bf0 ff ff f0 f0 f0 f0 0f 0f ff ef e1 e1 e1 e1 0f 0f &6c00 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6c10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6c20 00 00 00 00 00 00 00 00 fc fc fc fc fc fc fc fc &6c30 c3 c3 c3 c3 c3 c3 c3 c3 fc fc fc fc fc fc fc fc &6c40 c3 c3 c3 c3 c3 c3 c3 c3 33 33 33 33 33 33 33 33 &6c50 f0 f0 f0 f0 f0 f0 f0 f0 0c 0c 0c 0c 0c 0c 0c 0c &6c60 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6c70 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6c80 00 ff ff ff fc fc fc fc 00 ff ff ff f0 f0 f0 f0 &6c90 00 ff ff ff f0 f0 f0 f0 00 ff ff ff f0 f0 f0 f0 &6ca0 00 cc 8c 0c 0c 0c 0c 0c fc fc fc fc fc fc fc fc &6cb0 c3 c3 c3 c3 c3 c3 c3 c3 00 00 00 00 00 00 00 00 &6cc0 00 11 11 11 11 11 11 11 00 ff ff ff f8 f8 f8 f8 &6cd0 00 ff ff ff f0 f0 f0 f0 00 ff ef cf c3 c3 c3 c3 &6ce0 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6cf0 00 00 ff ff ff fc fc fc 00 00 ff ff ff f0 f0 f0 &6d00 00 00 ff ef cf c3 c3 c3 fc fc fc fc fc fc fc fc &6d10 c3 c3 c3 c3 c3 c3 c3 c3 00 00 00 00 00 00 00 00 &6d20 ff ff f8 f8 f8 f8 8f 0f ff ff f0 f0 f0 f0 0f 0f &6d30 ff ff f0 f0 f0 f0 0f 0f ff ef e1 e1 e1 e1 0f 0f &6d40 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6d50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6d60 00 00 00 00 00 00 00 00 fc fc fc fc fc fc fc fc &6d70 c3 c3 c3 c3 c3 c3 c3 c3 fc fc fc fc fc fc fc fc &6d80 c3 c3 c3 c3 c3 c3 c3 c3 33 33 33 33 33 33 33 33 &6d90 f0 f0 f0 f0 f0 f0 f0 f0 0c 0c 0c 0c 0c 0c 0c 0c &6da0 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6db0 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6dc0 fc fc fc fc cf 8f 0f 00 f0 f0 f0 f0 0f 0f 0f 00 &6dd0 f0 f0 f0 f0 0f 0f 0f 00 f0 f0 f0 f0 0f 0f 0f 00 &6de0 0c 0c 0c 0c 0c 0c 0c 00 fc fc fc fc fc fc fc fc &6df0 c3 c3 c3 c3 c3 c3 c3 c3 00 00 00 00 00 00 00 00 &6e00 11 11 11 11 11 01 00 00 f8 f8 f8 8f 0f 0f 00 00 &6e10 f0 f0 f0 3c 7c fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6e20 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6e30 fc fc fc fc cf 8f 0f 00 f0 f0 f0 f0 0f 0f 0f 00 &6e40 c3 c3 c3 c3 0f 0f 0f 00 fc fc fc fc fc fc fc fc &6e50 c3 c3 c3 c3 c3 c3 c3 c3 00 00 00 00 00 00 00 00 &6e60 ff ff f8 f8 f8 f8 8f 0f ff ff f0 f0 f0 f0 0f 0f &6e70 ff ff f0 f0 f0 f0 0f 0f ff ef e1 e1 e1 e1 0f 0f &6e80 fc fc fc fc fc fc fc fc c3 c3 c3 e1 f1 f0 f0 f0 &6e90 00 00 08 ff ff f7 f0 f0 00 00 00 ff ff ff f0 f0 &6ea0 00 00 11 ff ff fe f0 f0 fc fc fc f8 f8 f0 f0 f0 &6eb0 c3 c3 c3 c3 c3 c3 c3 c3 fc fc fc fc fc fc fc fc &6ec0 c3 c3 c3 c3 c3 c3 c3 c3 33 33 33 33 33 33 33 33 &6ed0 f0 f0 f0 f0 f0 f0 f0 f0 0c 0c 0c 0c 0c 0c 0c 0c &6ee0 fc fc fc fc fc fc fc fc c3 c3 c3 c3 c3 c3 c3 c3 &6ef0 fc fc fc fc fc fc fc fc c3 c3 c3 e1 f1 f0 f0 f0 &6f00 00 00 88 ff ff ff f0 f0 00 00 00 ff ff ff f0 f0 &6f10 00 00 00 ff ff ff f0 f0 00 00 00 ff ff ff f0 f0 &6f20 00 00 00 ff ef cf c3 c3 fc fc fc fc fc fc fc fc &6f30 c3 c3 c3 d3 f3 f1 f0 f0 00 00 88 ff ff ff f0 f0 &6f40 ff ff f8 fa da f8 f8 f8 ff ff f0 c3 84 08 19 3a &6f50 ff ff f0 0f 00 ee f1 f0 ff ff f0 78 34 32 32 3a &6f60 ff ff f0 87 84 84 84 84 ff ff f0 0f 00 ff f8 0f &6f70 ff ff f0 78 34 32 19 32 ff ff f0 87 84 84 84 84 &6f80 ff ff f0 0f 00 ff f8 0f ff ff f0 1e 11 11 19 32 &6f90 ff ef e1 e5 a5 e1 e1 e1 00 00 00 00 00 00 00 00 &6fa0 ff ff f8 f8 f8 f8 8f 0f ff ff f0 f0 f0 f0 0f 0f &6fb0 ff ff f0 f0 f0 f0 0f 0f ff ef e1 e1 e1 e1 0f 0f &6fc0 fc 76 76 77 33 23 01 00 f0 f0 f0 f0 78 0f 0f 07 &6fd0 f0 f0 f0 f0 f0 0f 0f 0f f0 f0 f0 f0 f0 0f 0f 0f &6fe0 f0 f0 f0 f0 f0 0f 0f 0f f0 f0 f0 f0 e1 0f 0f 0e &6ff0 c3 86 86 0e 0c 0c 08 00 fc fc fc fc fc fc 8f 0f &7000 c3 c3 c3 c3 c3 c3 0f 0f 33 33 33 33 33 33 23 03 &7010 f0 f0 f0 f0 f0 0f 0f 0f 0c 0c 0c 0c 0c 0c 0c 0c &7020 fc fc fc fc fc fc 8f 0f c3 c3 c3 c3 c3 c3 0f 0f &7030 fc 76 76 77 33 23 01 00 f0 f0 f0 f0 78 0f 0f 07 &7040 f0 f0 f0 f0 f0 0f 0f 0f f0 f0 f0 f0 f0 0f 0f 0f &7050 f0 f0 f0 f0 f0 0f 0f 0f f0 f0 f0 f0 f0 0f 0f 0f &7060 c3 c3 c3 c3 c3 0f 0f 0f fc 76 76 76 23 23 01 00 &7070 f0 f0 f0 f0 f0 0f 0f 07 f0 f0 f0 f0 f0 0f 0f 0f &7080 f8 f8 f8 fa da f8 8f 0f 3a 09 08 84 f3 f0 0f 0f &7090 f0 e1 0e 00 ff f0 0f 0f 3a 32 32 74 f8 f0 0f 0f &70a0 84 84 84 84 f7 f0 0f 0f 00 cc 6a 79 f8 f0 0f 0f &70b0 74 3c 12 11 ff f0 0f 0f 84 84 84 84 f7 f0 0f 0f &70c0 ff f8 0f 00 ff f0 0f 0f 32 19 11 11 fe f0 0f 0f &70d0 e1 e1 e1 e5 a5 e1 0f 0f 00 00 00 00 00 00 00 00 &70e0 ff ff f8 f8 f8 f8 8f 0f ff ff f0 f0 f0 f0 0f 0f &70f0 ff ff f0 f0 f0 f0 0f 0f ff ef e1 e1 e1 e1 0f 0f &7100 77 f8 cb ca ca fb f8 07 99 3a 3a 32 32 ba 3a 09 &7110 ff 7c 0f 08 08 7f 7c 0f bb 3a 0b 00 00 bb 3a 0b &7120 cc c2 ca ca ca ca c2 0c 33 32 32 32 32 32 32 03 &7130 99 3a 3a 09 08 3b 3a 09 ff b6 b6 3e 32 fe b6 0f &7140 11 3a 3a 09 19 3a 3a 01 ff f0 f0 0f ff f0 f0 0f &7150 33 3a 0b 00 00 08 08 00 ff b6 3e 32 32 32 32 03 &7160 88 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 &7170 ff db db db cb ca ca 0e cc c2 c2 c2 0c 00 00 00 &7180 ff db db db cb db db 0f ee c2 86 84 0c ee c2 0e &7190 ff f8 0f 33 32 32 32 03 ee c2 0e 88 08 08 08 08 &71a0 ff db db db cb db db 0f ee c2 86 84 0c ee c2 0e &71b0 ff db db cb db db ca 0e cc c2 c2 0c 88 c4 ea 0e &71c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &71d0 77 f8 f8 07 11 fe f8 07 ee c2 0e 00 cc c2 c2 0c &71e0 77 db cb ca ca db db 07 ee c2 0e 00 00 ee c2 0e &71f0 77 f8 f8 0f ff f8 f8 07 cc c2 c2 0e ee c2 c2 0c &7200 ff f8 0f 33 32 32 32 03 ee c2 0e 88 08 08 08 08 &7210 ff f8 0f 33 32 32 32 03 ee c2 0e 88 08 08 08 08 &7220 ff ff f8 f8 f8 f8 8f 0f ff ff f0 f0 f0 f0 0f 0f &7230 ff ff f0 f0 f0 f0 0f 0f ff ef e1 e1 e1 e1 0f 0f ; OMEGA2 ; 002100 002100 0009ff &2100 0d # Start of BASIC program &2101 30 7c 32 21 32 39 34 34 3d 26 41 32 38 43 41 39 ; 12412!2944=&A28CA9: # Populate entry_point &2111 3a 21 32 39 34 38 3d 26 46 34 34 43 30 30 41 30 ; !2948=&F44C00A0: &2121 3a 21 32 39 35 32 3d 32 35 35 3a ee 85 d6 21 2d ; !2952=255: &2131 34 0d ; ONERRORCALL!-4 # Reset system on error &2133 31 73 07 f4 0c 15 0d ; 12659REM.. # Embedded CLS, disable VDU drivers &213a 32 6a ae d3 3d 26 32 43 42 30 3a e2 31 2c 31 33 ; 12906HIMEM=&2CB0: &214a 31 2c 31 2c 31 2c 31 2c 37 2c 33 2c 37 2c 38 30 ; ENVELOPE1,131,1,1,1,7,3,7,80,-1,-1,-5,61,71: &215a 2c 2d 31 2c 2d 31 2c 2d 35 2c 36 31 2c 37 31 3a ; ENVELOPE3,1,90,-90,10,2,3,7,100,-1,-1,-4,100,100: &216a e2 33 2c 31 2c 39 30 2c 2d 39 30 2c 31 30 2c 32 ; ENVELOPE2,1,-100,+124,0,12,12,0,126,-2,-1,-10,100,20: &217a 2c 33 2c 37 2c 31 30 30 2c 2d 31 2c 2d 31 2c 2d ; ENVELOPE4,0,0,0,0,0,0,0,100,-2,-2,-2,100,100 &218a 34 2c 31 30 30 2c 31 30 30 3a e2 32 2c 31 2c 2d # Define envelopes used in game &219a 31 30 30 2c 2b 31 32 34 2c 30 2c 31 32 2c 31 32 &21aa 2c 30 2c 31 32 36 2c 2d 32 2c 2d 31 2c 2d 31 30 &21ba 2c 31 30 30 2c 32 30 3a e2 34 2c 30 2c 30 2c 30 &21ca 2c 30 2c 30 2c 30 2c 30 2c 31 30 30 2c 2d 32 2c &21da 2d 32 2c 2d 32 2c 31 30 30 2c 31 30 30 0d &21e8 33 61 07 f4 0c 15 0d ; 13153REM.. &21ef 34 58 12 2a 52 55 4e 20 4f 4d 45 47 41 4f 52 42 ; 13400*RUN OMEGAORB1 # Returns via &0b80, entry_point &21ff 31 0d &2201 35 4f 07 f4 0c 15 0d ; 13647REM.. &2208 36 46 12 2a 52 55 4e 20 4f 4d 45 47 41 4f 52 42 ; 13894*RUN OMEGAORB2 # Returns via &0b80, entry_point &2218 32 0d &221a 37 3d 07 f4 0c 15 0d ; 14141REM.. &2221 38 34 12 2a 52 55 4e 20 4f 4d 45 47 41 4f 52 42 ; 14388*RUN OMEGAORB3 # Returns via &0b80, entry_point &2231 33 0d &2233 39 2b 07 f4 0c 15 0d ; 14635REM.. &223a 3a 22 12 2a 52 55 4e 20 4f 4d 45 47 41 4f 52 42 ; 14882*RUN OMEGAORB4 # Returns via &0b80, entry_point &224a 34 0d &224c 3b 19 07 f4 0c 15 0d ; 15129REM.. &2253 3c 10 12 2a 52 55 4e 20 4f 4d 45 47 41 4f 52 42 ; 15376*RUN OMEGAORB5 # Returns via &0b80, entry_point &2263 35 0d &2265 3d 07 07 f4 0c 15 0d ; 15623REM.. &226c 3d fe 73 21 26 31 39 38 3d 26 33 30 30 31 33 3a ; 15870!&198=&30013: # Populate sound_5 &227c 21 26 31 39 43 3d 26 31 30 30 36 34 3a e3 4c 25 ; !&19C=&10064: &228c 3d 30 b8 36 3a f3 4c 25 3f 26 36 37 44 30 3a ed ; FORL%=0TO6: &229c 3a e3 4c 25 3d 30 b8 32 37 3a f3 4c 25 3f 26 36 ; READL%?&67D0: # Populate unrelocated_clear_loader_text_window_string &22ac 38 30 30 3a ed 3a e3 4c 25 3d 30 b8 32 37 3a f3 ; NEXT: &22bc 4c 25 3f 26 38 41 30 3a ed 3a e3 4c 25 3d 30 b8 ; FORL%=0TO27: &22cc 31 31 3a 4c 25 3f 26 36 34 30 3d 4c 25 2a 31 34 ; READL%?&6800: # Populate unrelocated_initialise_screen_string &22dc 3a ed 0d ; NEXT: ; FORL%=0TO27: ; READL%?&8A0: # Populate reset_energy_string ; NEXT: ; FORL%=0TO11: ; L%?&640=L%*14: # Populate fourteen_times_table ; NEXT &22df 3e f5 07 f4 0c 15 0d ; 16117REM.. &22e6 3f ec a6 dc 32 38 2c 31 38 2c 34 2c 31 39 2c 30 ; 16364DATA28,18,4,19,0,12,26, &22f6 2c 31 32 2c 32 36 2c 32 38 2c 30 2c 31 33 2c 31 ; 28,0,13,19,0,12,26,23,0,6,18,0,0,0,0,0,0,0,0,23,0,7,28,0,0,0,0,0, &2306 39 2c 30 2c 31 32 2c 32 36 2c 32 33 2c 30 2c 36 ; 18,0,1,25,69,32,0,223,1,25,5,176,1,223,1,25,69,32,0,219,1,25,5,176,1,219,1,13 &2316 2c 31 38 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c &2326 30 2c 30 2c 32 33 2c 30 2c 37 2c 32 38 2c 30 2c &2336 30 2c 30 2c 30 2c 30 2c 31 38 2c 30 2c 31 2c 32 &2346 35 2c 36 39 2c 33 32 2c 30 2c 32 32 33 2c 31 2c &2356 32 35 2c 35 2c 31 37 36 2c 31 2c 32 32 33 2c 31 &2366 2c 32 35 2c 36 39 2c 33 32 2c 30 2c 32 31 39 2c &2376 31 2c 32 35 2c 35 2c 31 37 36 2c 31 2c 32 31 39 &2386 2c 31 2c 31 33 0d &238c 40 e3 07 f4 0c 15 0d ; 16611REM.. &2393 41 da 62 21 26 36 37 43 36 3d 26 30 31 30 31 30 ; 16858!&67C6=&01010101: # !(unrelocated_tile_table + &46) = &01010101 &23a3 31 30 31 3a e3 4c 25 3d 30 b8 39 35 3a 4c 25 3f ; FORL%=0TO95: &23b3 26 31 32 30 3d 30 3a ed 3a 58 25 3d 31 30 30 3a ; L%?&120=0: # Wipe player_buffer &23c3 59 25 3d 31 30 31 3a 4a 25 3d 31 31 39 3a 4b 25 ; NEXT: &23d3 3d 31 31 37 3a 45 25 3d 31 39 3a 46 25 3d 37 3a ; X%=100: # X% = player_x &23e3 47 25 3d 26 37 37 34 30 3a 4f 25 3d 26 35 37 32 ; Y%=101: # Y% = player_y &23f3 39 0d ; J%=119: # J% = carried_object ; K%=117: # K% = player_state ; E%=19: # initial_player_x = 19 ; F%=7: # initial_player_y = 7 ; G%=&7740: # G% = initialise_memory ; O%=&5729 # O% = unplot_barriers &23f5 42 d1 07 f4 0c 15 0d ; 17105REM.. &23fc 43 c8 91 3f 58 25 3d 33 34 3a 3f 59 25 3d 34 3a ; 17352?X%=34: # ?player_x = 34 &240c 3f 26 46 45 36 32 3d 26 46 46 3a 3f 26 46 45 36 ; ?Y%=4: # ?player_y = 4 &241c 30 3d 26 46 3a d6 26 31 33 46 35 3a e3 4c 25 3d ; ?&FE62=&FF: # User VIA data direction register B (set all bits as output) &242c 30 b8 35 3a 4c 25 3f 31 35 31 3d 31 31 3a 4c 25 ; ?&FE60=&F: # User VIA port B input/output register &243c 3f 26 33 36 38 3d 26 45 3a ed 3a 53 25 3d b3 28 ; CALL&13F5: # CALL initialise_irq1_handler &244c 2d 91 29 3a 21 26 43 30 3d b3 3a f7 8d 70 52 49 ; FORL%=0TO5: # FOR offset = 0 TO 5 &245c 3a e3 4c 25 3d 30 b8 32 38 37 3a f3 4c 25 3f 26 ; L%?151=11: # ?(enemies_direction + offset) = ENEMY_DIRECTION_GONE &246c 39 30 30 3a ed 3a 3f 26 33 36 37 3d 31 35 3a 3f ; L%?&368=&E: # ?(os_font_location_bytes + offset) = &e &247c 31 30 39 3d 32 35 34 3a 3f 31 30 34 3d 32 35 34 ; NEXT: # NEXT &248c 0d ; S%=RND(-TIME): # null = RND(-TIME) ; !&C0=RND: # !rnd_state = RND ; RESTORE18834: ; FORL%=0TO287: ; READL%?&900: # Populate hit_space_to_start_sprite ; NEXT: ; ?&367=15: # ?os_font_flag = &0f ; ?109=254: # ?player_room = &fe ; ?104=254 # ?room_type = &fe &248d 44 bf 07 f4 0c 15 0d ; 17599REM.. &2494 45 b6 26 41 25 3d 26 31 34 45 35 3a 42 25 3d 26 ; 17846A%=&14E5: # A% = update_player &24a4 31 44 46 36 3a 4e 25 3d 26 46 42 30 3a 5a 25 3d ; B%=&1DF6: # B% = plot_text &24b4 26 31 45 41 32 0d ; N%=&FB0: # N% = clear_logo_string ; Z%=&1EA2 # Z% = initialise_room &24ba 46 ad 07 f4 0c 15 0d ; 18093REM.. &24c1 47 a4 37 e3 4c 25 3d 30 b8 37 3a ef 32 33 2c 31 ; 18340FORL%=0TO7: &24d1 34 38 2b 4c 25 3a e3 4d 25 3d 30 b8 37 3a ef 4d ; VDU23,148+L%: # Define characters &94 - &9b &24e1 25 3f 28 4c 25 2a 38 2b 26 45 41 30 2b 26 35 38 ; FORM%=0TO7: &24f1 38 30 29 3a ed 2c 0d ; VDUM%?(L%*8+&EA0+&5880): # using unrelocated_character_definitions ; NEXT, &24f8 48 9b 07 f4 0c 15 0d ; 18587REM.. &24ff 49 92 79 dc 32 33 38 2c 32 30 36 2c 32 32 33 2c ; 18834DATA238,206,223,223,223,206,206,14,238,206,206,206,78,206,206, &250f 32 32 33 2c 32 32 33 2c 32 30 36 2c 32 30 36 2c ; 14,255,255,15,51,51,255,255,15,238,206,14,136,8,238,206,14 &251f 31 34 2c 32 33 38 2c 32 30 36 2c 32 30 36 2c 32 &252f 30 36 2c 37 38 2c 32 30 36 2c 32 30 36 2c 31 34 &253f 2c 32 35 35 2c 32 35 35 2c 31 35 2c 35 31 2c 35 &254f 31 2c 32 35 35 2c 32 35 35 2c 31 35 2c 32 33 38 &255f 2c 32 30 36 2c 31 34 2c 31 33 36 2c 38 2c 32 33 &256f 38 2c 32 30 36 2c 31 34 0d &2578 4a 89 07 f4 0c 15 0d ; 19081REM.. &257f 4b 80 54 dc 32 35 35 2c 32 35 35 2c 31 35 2c 35 ; 19328DATA255,255,15,51,51,51,51,3,238,206,14,136,8,8,8,8,0,0,0,0,0, &258f 31 2c 35 31 2c 35 31 2c 35 31 2c 33 2c 32 33 38 ; 0,0,0,0,0,0,0,0,0,0,0 &259f 2c 32 30 36 2c 31 34 2c 31 33 36 2c 38 2c 38 2c &25af 38 2c 38 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c &25bf 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c &25cf 30 2c 30 0d &25d3 4c 77 07 f4 0c 15 0d ; 19575REM.. &25da 4d 6e 74 dc 31 31 39 2c 32 35 35 2c 32 35 35 2c ; 19822DATA119,255,255,7,17,255,255,15,238,206,14,0,204,206,206,12, &25ea 37 2c 31 37 2c 32 35 35 2c 32 35 35 2c 31 35 2c ; 255,207,207,223,223,206,206,14,204,206,206,206,12,0,0,0 &25fa 32 33 38 2c 32 30 36 2c 31 34 2c 30 2c 32 30 34 &260a 2c 32 30 36 2c 32 30 36 2c 31 32 2c 32 35 35 2c &261a 32 30 37 2c 32 30 37 2c 32 32 33 2c 32 32 33 2c &262a 32 30 36 2c 32 30 36 2c 31 34 2c 32 30 34 2c 32 &263a 30 36 2c 32 30 36 2c 32 30 36 2c 31 32 2c 30 2c &264a 30 2c 30 0d &264e 4e 65 07 f4 0c 15 0d ; 20069REM.. &2655 4f 5c 7a dc 31 30 33 2c 32 33 39 2c 32 30 37 2c ; 20316DATA103,239,207,223,223,207,206,14,204,206,206,206,206,206, &2665 32 32 33 2c 32 32 33 2c 32 30 37 2c 32 30 36 2c ; 206,14,119,223,207,206,206,223,223,7,238,206,14,0,0,238, &2675 31 34 2c 32 30 34 2c 32 30 36 2c 32 30 36 2c 32 ; 206,14 &2685 30 36 2c 32 30 36 2c 32 30 36 2c 32 30 36 2c 31 &2695 34 2c 31 31 39 2c 32 32 33 2c 32 30 37 2c 32 30 &26a5 36 2c 32 30 36 2c 32 32 33 2c 32 32 33 2c 37 2c &26b5 32 33 38 2c 32 30 36 2c 31 34 2c 30 2c 30 2c 32 &26c5 33 38 2c 32 30 36 2c 31 34 0d &26cf 50 53 07 f4 0c 15 0d ; 20563REM.. &26d6 51 4a 60 dc 32 35 35 2c 32 32 33 2c 32 30 37 2c ; 20810DATA255,223,207,223,207,223,223,15,238,206,14,140,12,238,206, &26e6 32 32 33 2c 32 30 37 2c 32 32 33 2c 32 32 33 2c ; 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 &26f6 31 35 2c 32 33 38 2c 32 30 36 2c 31 34 2c 31 34 &2706 30 2c 31 32 2c 32 33 38 2c 32 30 36 2c 31 34 2c &2716 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c &2726 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 0d &2736 52 41 07 f4 0c 15 0d ; 21057REM.. &273d 53 38 6d dc 32 35 35 2c 32 35 35 2c 31 35 2c 35 ; 21304DATA255,255,15,51,51,51,51,3,238,206,14,136,8,8,8,8,119,255, &274d 31 2c 35 31 2c 35 31 2c 35 31 2c 33 2c 32 33 38 ; 207,12,206,255,255,7,204,238,78,6,102,206,206,12 &275d 2c 32 30 36 2c 31 34 2c 31 33 36 2c 38 2c 38 2c &276d 38 2c 38 2c 31 31 39 2c 32 35 35 2c 32 30 37 2c &277d 31 32 2c 32 30 36 2c 32 35 35 2c 32 35 35 2c 37 &278d 2c 32 30 34 2c 32 33 38 2c 37 38 2c 36 2c 31 30 &279d 32 2c 32 30 36 2c 32 30 36 2c 31 32 0d &27aa 54 2f 07 f4 0c 15 0d ; 21551REM.. &27b1 55 26 5c dc 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c ; 21798DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,255,255,7,17,255,255, &27c1 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c ; 15,238,206,14,0,204,206,206,12 &27d1 30 2c 30 2c 31 31 39 2c 32 35 35 2c 32 35 35 2c &27e1 37 2c 31 37 2c 32 35 35 2c 32 35 35 2c 31 35 2c &27f1 32 33 38 2c 32 30 36 2c 31 34 2c 30 2c 32 30 34 &2801 2c 32 30 36 2c 32 30 36 2c 31 32 0d &280d 56 1d 07 f4 0c 15 0d ; 22045REM.. &2814 57 14 72 dc 32 35 35 2c 32 35 35 2c 31 35 2c 35 ; 22292DATA255,255,15,51,51,51,51,3,238,206,14,136,8,8,8,8,103,239, &2824 31 2c 35 31 2c 35 31 2c 35 31 2c 33 2c 32 33 38 ; 207,223,223,207,206,14,204,206,206,206,206,206,206,14 &2834 2c 32 30 36 2c 31 34 2c 31 33 36 2c 38 2c 38 2c &2844 38 2c 38 2c 31 30 33 2c 32 33 39 2c 32 30 37 2c &2854 32 32 33 2c 32 32 33 2c 32 30 37 2c 32 30 36 2c &2864 31 34 2c 32 30 34 2c 32 30 36 2c 32 30 36 2c 32 &2874 30 36 2c 32 30 36 2c 32 30 36 2c 32 30 36 2c 31 &2884 34 0d &2886 58 0b 07 f4 0c 15 0d ; 22539REM.. &288d 59 02 71 dc 32 35 35 2c 32 32 33 2c 32 32 33 2c ; 22786DATA255,223,223,207,223,223,207,15,204,206,206,12,140,204,206, &289d 32 30 37 2c 32 32 33 2c 32 32 33 2c 32 30 37 2c ; 14,255,255,15,51,51,51,51,3,238,206,14,136,8,8,8,8 &28ad 31 35 2c 32 30 34 2c 32 30 36 2c 32 30 36 2c 31 &28bd 32 2c 31 34 30 2c 32 30 34 2c 32 30 36 2c 31 34 &28cd 2c 32 35 35 2c 32 35 35 2c 31 35 2c 35 31 2c 35 &28dd 31 2c 35 31 2c 35 31 2c 33 2c 32 33 38 2c 32 30 &28ed 36 2c 31 34 2c 31 33 36 2c 38 2c 38 2c 38 2c 38 &28fd 0d &28fe 59 f9 07 f4 0c 15 0d ; 23033REM.. &2905 5a f0 2b e3 4c 25 3d 30 b8 32 39 3a f3 4c 25 3f ; 23280FORL%=0TO29: &2915 26 36 32 30 3a ed 3a e3 4c 25 3d 30 b8 34 30 3a ; READL%?&620: # Populate score_room_data &2925 f3 4c 25 3f 26 36 35 30 3a ed 0d ; NEXT ; FORL%=0TO40: ; READL%?&650: # Populate completion_room_data ; NEXT &2930 5b e7 07 f4 0c 15 0d ; 23527REM.. &2937 5c de 71 dc 30 2c 31 32 2c 31 33 32 2c 39 36 2c ; 23774DATA0,12,132,96,100,128,138,128,106,160,44,133,132,101,164, &2947 31 30 30 2c 31 32 38 2c 31 33 38 2c 31 32 38 2c ; 148,177,26,209,28,194,192,195,160,156,1,64,161,64,255 &2957 31 30 36 2c 31 36 30 2c 34 34 2c 31 33 33 2c 31 &2967 33 32 2c 31 30 31 2c 31 36 34 2c 31 34 38 2c 31 &2977 37 37 2c 32 36 2c 32 30 39 2c 32 38 2c 31 39 34 &2987 2c 31 39 32 2c 31 39 35 2c 31 36 30 2c 31 35 36 &2997 2c 31 2c 36 34 2c 31 36 31 2c 36 34 2c 32 35 35 &29a7 0d &29a8 5d d5 07 f4 0c 15 0d ; 24021REM.. &29af 5e cc 8a dc 30 2c 34 38 2c 31 33 30 2c 31 33 31 ; 24268DATA0,48,130,131,50,163,60,194,96,197,96,156,0,0,6,32,82,97, &29bf 2c 35 30 2c 31 36 33 2c 36 30 2c 31 39 34 2c 39 ; 56,64,216,64,28,40,174,14,24,192,188,80,192,214,192,90, &29cf 36 2c 31 39 37 2c 39 36 2c 31 35 36 2c 30 2c 30 ; 192,204,160,32,38,64,0 &29df 2c 36 2c 33 32 2c 38 32 2c 39 37 2c 35 36 2c 36 &29ef 34 2c 32 31 36 2c 36 34 2c 32 38 2c 34 30 2c 31 &29ff 37 34 2c 31 34 2c 32 34 2c 31 39 32 2c 31 38 38 &2a0f 2c 38 30 2c 31 39 32 2c 32 31 34 2c 31 39 32 2c &2a1f 39 30 2c 31 39 32 2c 32 30 34 2c 31 36 30 2c 33 &2a2f 32 2c 33 38 2c 36 34 2c 30 0d &2a39 5f c3 07 f4 0c 15 0d ; 24515REM.. &2a40 60 ba 10 d7 22 4f 4d 45 47 41 4f 52 42 36 22 0d ; 24762CHAIN"OMEGAORB6" # Run main game &2a50 ff # End of BASIC program ; unused # &2a51 - &2aff is a copy of &6151 - &61ff from SCREEN &2a51 ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &2a60 ff ef cf c3 c3 c3 c3 c3 00 11 33 33 77 76 76 fe &2a70 77 ff ff fc f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &2a80 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &2a90 ff ff ff f0 f0 f0 f0 f0 ff ef cf c3 c3 c3 c3 c3 &2aa0 00 11 33 33 76 76 76 fc 77 ff ff f0 f0 f0 f0 f0 &2ab0 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &2ac0 ff ff ff f0 f0 f0 f0 f0 ee ff ff f0 f0 f0 f0 f0 &2ad0 00 88 cc 8c 86 86 86 c3 00 00 00 00 00 00 00 00 &2ae0 ff ff f8 f8 f8 f8 8f 0f ff ff f0 f0 f0 f0 0f 0f &2af0 ff ff f0 f0 f0 f0 0f 0f ff ef e1 e1 e1 e1 0f 00 Game disassembly ================ # &0110 - &011f is set at line 11 of OMEGA_ORB ; sound_0 # Regular bounce, hyperbounce ; chan vol pitch dur &0110 11 00 01 00 0a 00 01 00 ; sound_1 # Hyperbounce ; chan vol pitch dur &0118 11 00 01 00 1e 00 01 00 # &0180 - &019f is set at line 11 of OMEGA_ORB ; sound_2 # Firing ; chan vol pitch dur &0180 12 00 02 00 0a 00 06 00 ; sound_3 # Destroying enemy or tile ; chan vol pitch dur &0188 10 00 04 00 64 00 01 00 ; sound_4 # New enemy, water drop hitting ground ; chan vol pitch dur &0190 10 00 02 00 05 00 07 00 ; sound_5 # Losing energy ; chan vol pitch dur &0198 13 00 03 00 64 00 01 00 # &0198 - &019f is overwritten at line 15870 of OMEGA2 # &01a0 - &01aa is set at line 11 of OMEGA_ORB ; unused &01a0 0f f0 ff 13 00 03 00 64 00 04 00 # &0a80 - &0ab7 is set at line 10 of OMEGA_ORB # &0ab0 - &0abf is set at line 11 of OMEGA_ORB # &0a80 - &0aee is moved to &0380 - &03ee at &775c ; group_addresses_low_table &0380 10 50 90 d0 10 50 90 d0 10 50 90 d0 10 50 90 d0 &0390 10 50 90 d0 ; group_addresses_high_table &0394 58 59 5a 5b 5d 5e 5f 60 62 63 64 65 67 68 69 6a &03a4 6c 6d 6e 6f ; player_sprite_addresses_low_table ; 0 1 2 3 4 5 6 7 &03a8 00 40 80 c0 00 40 80 c0 ; player_sprite_addresses_high_table ; 0 1 2 3 4 5 6 7 &03b0 09 09 09 09 0a 0a 0a 0a ; player_x_fraction_to_sprite_table ; 0 1 2 3 &03b8 00 04 04 00 ; player_x_fraction_to_flip_table ; 0 1 2 3 &03bc 01 01 02 02 # &0620 - &063d is set at line 23280 of OMEGA2 ; score_room_data &0620 00 ; KRCY, 0 enemies &0621 0c ; sprite base &00, &0c sprites &0622 84 60 ; plot sprite, regular &07 at (&4, &0) &0624 64 80 ; plot sprite, regular &08 at (&4, &6) &0626 8a 80 ; plot sprite, regular &09 at (&a, &0) &0628 6a a0 ; plot sprite, regular &0a at (&a, &6) &062a 2c ; use sprite base &20 &062b 85 84 ; plot row of 5 sprites, regular &29 at (&5, &0) &062d 65 a4 ; plot row of 5 sprites, regular &2a at (&5, &6) &062f 94 b1 ; plot column of 5 sprites, regular &2b at (&4, &1) &0631 1a d1 ; plot column of 5 sprites, regular &2c at (&a, &1) &0633 1c ; use sprite base &10 &0634 c2 c0 ; plot sprite, regular &1d at (&2, &4) &0636 c3 a0 ; plot sprite, regular &1b at (&3, &4) &0638 9c ; use sprite base &90 &0639 01 40 ; plot sprite, large &14 at (&1, &0) &063b a1 40 ; plot sprite, large &15 at (&1, &2) &063d ff ; unused # &0640 - &064a is set at line 15870 of OMEGA2 ; fourteen_times_table &0640 00 0e 1c 2a 38 46 54 62 70 7e 8c 9a # &0650 - &0678 is set at line 23280 of OMEGA2 ; completion_room_data &0650 00 ; KRCY, 0 enemies &0651 30 ; sprite base &20, &10 sprites &0652 82 83 ; plot row of 4 sprites, regular &29 at (&2, &0) &0654 32 a3 ; plot row of 4 sprites, regular &2a at (&2, &3) &0656 3c ; use sprite base &30 &0657 c2 60 ; plot sprite, regular &37 at (&2, &4) &0659 c5 60 ; plot sprite, regular &37 at (&5, &4) &065b 9c ; use sprite base &90 &065c 00 00 ; plot sprite, large &10 at (&0, &0) &065e 06 20 ; plot sprite, large &12 at (&6, &0) &0660 52 61 ; plot row of 2 sprites, large &16 at (&2, &5) &0662 38 40 ; plot sprite, large &14 at (&8, &3) &0664 d8 40 ; plot sprite, large &15 at (&8, &5) &0666 1c ; use sprite base &10 &0667 28 ae ; plot column of 2 sprites, regular &1a at (&8, &2) &0669 0e ; toggle flip &066a 18 c0 ; plot sprite, regular &1c at (&8, &1) &066c bc ; use sprite base &b0 &066d 50 c0 ; plot sprite, large &3c at (&0, &5) &066f d6 c0 ; plot sprite, large &3d at (&6, &5) &0671 5a c0 ; plot sprite, large &3c at (&a, &5) &0673 cc ; use sprite base &c0 &0674 a0 20 ; plot sprite, large &43 at (&0, &2) &0676 26 40 ; plot sprite, large &44 at (&6, &2) &0678 00 ; unused # &08a0 - &08bb is set at line 15870 of OMEGA2 ; reset_energy_string &08a0 12 00 01 ; GCOL 0, 1 &08a3 19 45 20 00 df 01 ; PLOT &0020, &01df &08a9 19 05 b0 01 df 01 ; DRAW &01b0, &01df &08af 19 45 20 00 db 01 ; PLOT &0020, &01db &08b5 19 05 b0 01 db 01 ; DRAW &01b0, &01db &08bb 0d # &08c0 - &08ff is set at line 12906 of OMEGA2 ; os envelope storage ; envelope_1 &08c0 83 01 01 01 07 03 07 50 ff ff fb 3d 47 00 00 00 ; envelope_2 &08d0 01 9c 7c 00 0c 0c 00 7e fe ff f6 64 14 00 00 00 ; envelope_3 &08e0 01 5a a6 0a 02 03 07 64 ff ff fc 64 64 00 00 00 ; envelope_4 &08f0 00 00 00 00 00 00 00 64 fe fe fe 64 64 00 00 00 # &0b80 - &0b88 is set at line 12412 of OMEGA2 ; entry_point &0b80 a9 8c LDA #&8c ; Select Tape FS &0b82 a2 00 LDX #&00 ; default speed (1200) &0b84 a0 00 LDY #&00 &0b86 4c f4 ff JMP &fff4 ; OSBYTE # &1100 - &20ff is loaded from OMEGAORB3 ; OMEGAORB3 ; 001100 000b80 001000 ; suppress_player_input &1100 ea # Non-zero if suppressing input ; calculate_screen_address &1101 18 CLC &1102 a4 67 LDY &67 ; y &1104 98 TYA &1105 29 07 AND #&07 &1107 85 7b STA &7b ; row_in_group &1109 98 TYA &110a 29 f8 AND #&f8 &110c 6a ROR A &110d 6a ROR A &110e 6a ROR A &110f a8 TAY &1110 b9 80 03 LDA &0380,Y ; group_addresses_low_table &1113 85 69 STA &69 ; screen_address_low &1115 b9 94 03 LDA &0394,Y ; group_addresses_high_table &1118 85 6a STA &6a ; screen_address_high &111a a4 66 LDY &66 ; x &111c a5 69 LDA &69 ; screen_address_low &111e 18 CLC &111f 79 30 76 ADC &7630,Y ; column_offsets_low_table &1122 85 69 STA &69 ; screen_address_low &1124 a5 6a LDA &6a ; screen_address_high &1126 79 58 76 ADC &7658,Y ; column_offsets_high_table &1129 85 6a STA &6a ; screen_address_high &112b 18 CLC &112c 60 RTS ; move_right_four_pixels &112d a5 69 LDA &69 ; screen_address_low &112f 18 CLC &1130 69 08 ADC #&08 &1132 85 69 STA &69 ; screen_address_low &1134 a5 6a LDA &6a ; screen_address_high &1136 69 00 ADC #&00 &1138 85 6a STA &6a ; screen_address_high &113a 18 CLC &113b 60 RTS ; move_left_four_pixels # Unused &113c a5 69 LDA &69 ; screen_address_low &113e 38 SEC &113f e9 08 SBC #&08 &1141 85 69 STA &69 ; screen_address_low &1143 a5 6a LDA &6a ; screen_address_high &1145 e9 00 SBC #&00 &1147 85 6a STA &6a ; screen_address_high &1149 18 CLC &114a 60 RTS ; move_down_a_group &114b a5 69 LDA &69 ; screen_address_low &114d 18 CLC &114e 69 40 ADC #&40 &1150 85 69 STA &69 ; screen_address_low &1152 a5 6a LDA &6a ; screen_address_high &1154 69 01 ADC #&01 &1156 85 6a STA &6a ; screen_address_high &1158 18 CLC &1159 60 RTS ; move_up_a_group # Unused &115a a5 69 LDA &69 ; screen_address_low &115c 38 SEC &115d e9 40 SBC #&40 &115f 85 69 STA &69 ; screen_address_low &1161 a5 6a LDA &6a ; screen_address_high &1163 e9 01 SBC #&01 &1165 85 6a STA &6a ; screen_address_high &1167 18 CLC &1168 60 RTS ; add_to_sprite_address &1169 18 CLC &116a 65 60 ADC &60 ; sprite_address_low &116c 85 60 STA &60 ; sprite_address_low &116e a5 61 LDA &61 ; sprite_address_high &1170 69 00 ADC #&00 &1172 85 61 STA &61 ; sprite_address_high &1174 18 CLC &1175 60 RTS ; subtract_from_sprite_address &1176 85 5b STA &5b ; size &1178 a5 60 LDA &60 ; sprite_address_low &117a 38 SEC &117b e5 5b SBC &5b ; size &117d 85 60 STA &60 ; sprite_address_low &117f a5 61 LDA &61 ; sprite_address_high &1181 e9 00 SBC #&00 &1183 85 61 STA &61 ; sprite_address_high &1185 18 CLC &1186 60 RTS ; plot_sprite &1187 20 01 11 JSR &1101 ; calculate_screen_address ; plot_sprite_at_existing_screen_address &118a 18 CLC &118b 86 af STX &af ; tmp_x &118d a5 69 LDA &69 ; screen_address_low &118f 69 38 ADC #&38 &1191 85 b0 STA &b0 ; bottom_group_screen_address_low &1193 a5 6a LDA &6a ; screen_address_high &1195 69 01 ADC #&01 &1197 85 b1 STA &b1 ; bottom_group_screen_address_high &1199 18 CLC &119a a4 7b LDY &7b ; row_in_group &119c 98 TYA &119d 20 76 11 JSR &1176 ; subtract_from_sprite_address &11a0 a5 78 LDA &78 ; sprite_flip &11a2 c9 02 CMP #&02 ; DIRECTION_RIGHT &11a4 d0 03 BNE &11a9 ; plot_sprite_unflipped &11a6 4c 96 12 JMP &1296 ; plot_sprite_flipped ; plot_sprite_unflipped ; plot_sprite_unflipped_top_group_loop &11a9 18 CLC &11aa b1 60 LDA (&60),Y ; sprite_address &11ac 91 69 STA (&69),Y ; screen_address &11ae c8 INY &11af 98 TYA &11b0 18 CLC &11b1 6a ROR A &11b2 b0 f5 BCS &11a9 ; plot_sprite_unflipped_top_group_loop &11b4 6a ROR A &11b5 b0 f2 BCS &11a9 ; plot_sprite_unflipped_top_group_loop &11b7 6a ROR A &11b8 b0 ef BCS &11a9 ; plot_sprite_unflipped_top_group_loop &11ba a5 7b LDA &7b ; row_in_group &11bc f0 14 BEQ &11d2 ; skip_bottom_group ; plot_sprite_unflipped_bottom_group_loop &11be 18 CLC &11bf b1 60 LDA (&60),Y ; sprite_address &11c1 91 b0 STA (&b0),Y ; bottom_group_screen_address &11c3 c8 INY &11c4 98 TYA &11c5 38 SEC &11c6 e5 7b SBC &7b ; row_in_group &11c8 18 CLC &11c9 6a ROR A &11ca b0 f2 BCS &11be ; plot_sprite_unflipped_bottom_group_loop &11cc 6a ROR A &11cd b0 ef BCS &11be ; plot_sprite_unflipped_bottom_group_loop &11cf 6a ROR A &11d0 b0 ec BCS &11be ; plot_sprite_unflipped_bottom_group_loop ; skip_bottom_group &11d2 98 TYA &11d3 38 SEC &11d4 e5 7b SBC &7b ; row_in_group &11d6 18 CLC &11d7 c5 79 CMP &79 ; sprite_size &11d9 d0 ce BNE &11a9 ; plot_sprite_unflipped_top_group_loop &11db a6 af LDX &af ; tmp_x &11dd a5 7b LDA &7b ; row_in_group &11df 4c 69 11 JMP &1169 ; add_to_sprite_address ; plot_sprite_behind &11e2 20 01 11 JSR &1101 ; calculate_screen_address ; plot_sprite_behind_at_existing_screen_address &11e5 18 CLC &11e6 86 af STX &af ; tmp_x &11e8 a5 69 LDA &69 ; screen_address_low &11ea 69 38 ADC #&38 &11ec 85 b0 STA &b0 ; bottom_group_screen_address_low &11ee a5 6a LDA &6a ; screen_address_high &11f0 69 01 ADC #&01 &11f2 85 b1 STA &b1 ; bottom_group_screen_address_high &11f4 18 CLC &11f5 a4 7b LDY &7b ; row_in_group &11f7 98 TYA &11f8 20 76 11 JSR &1176 ; subtract_from_sprite_address &11fb a5 78 LDA &78 ; sprite_flip &11fd c9 02 CMP #&02 ; DIRECTION_RIGHT &11ff f0 41 BEQ &1242 ; plot_sprite_behind_flipped ; plot_sprite_behind_unflipped ; plot_sprite_behind_unflipped_top_group_loop &1201 18 CLC &1202 b1 69 LDA (&69),Y ; screen_address &1204 d0 04 BNE &120a ; skip_top_byte &1206 b1 60 LDA (&60),Y ; sprite_address &1208 91 69 STA (&69),Y ; screen_address ; skip_top_byte &120a c8 INY &120b 98 TYA &120c 18 CLC &120d 6a ROR A &120e b0 f1 BCS &1201 ; plot_sprite_behind_unflipped_top_group_loop &1210 6a ROR A &1211 b0 ee BCS &1201 ; plot_sprite_behind_unflipped_top_group_loop &1213 6a ROR A &1214 b0 eb BCS &1201 ; plot_sprite_behind_unflipped_top_group_loop &1216 a5 7b LDA &7b ; row_in_group &1218 f0 18 BEQ &1232 ; skip_bottom_group ; plot_sprite_behind_unflipped_bottom_group_loop &121a 18 CLC &121b b1 b0 LDA (&b0),Y ; bottom_group_screen_address &121d d0 04 BNE &1223 ; skip_bottom_byte &121f b1 60 LDA (&60),Y ; sprite_address &1221 91 b0 STA (&b0),Y ; bottom_group_screen_address ; skip_bottom_byte &1223 c8 INY &1224 98 TYA &1225 38 SEC &1226 e5 7b SBC &7b ; row_in_group &1228 18 CLC &1229 6a ROR A &122a b0 ee BCS &121a ; plot_sprite_behind_unflipped_bottom_group_loop &122c 6a ROR A &122d b0 eb BCS &121a ; plot_sprite_behind_unflipped_bottom_group_loop &122f 6a ROR A &1230 b0 e8 BCS &121a ; plot_sprite_behind_unflipped_bottom_group_loop ; skip_bottom_group &1232 98 TYA &1233 38 SEC &1234 e5 7b SBC &7b ; row_in_group &1236 18 CLC &1237 c5 79 CMP &79 ; sprite_size &1239 d0 c6 BNE &1201 ; plot_sprite_behind_unflipped_top_group_loop ; leave_after_adding_to_sprite_address &123b a6 af LDX &af ; tmp_x &123d a5 7b LDA &7b ; row_in_group &123f 4c 69 11 JMP &1169 ; add_to_sprite_address ; plot_sprite_behind_flipped &1242 20 cb 12 JSR &12cb ; calculate_flipped_sprite_and_screen_addresses_loop &1245 a4 7b LDY &7b ; row_in_group ; plot_sprite_behind_flipped_top_group_loop &1247 20 f0 12 JSR &12f0 ; plot_four_flipped_bytes_behind &124a c8 INY &124b c0 08 CPY #&08 &124d d0 f8 BNE &1247 ; plot_sprite_behind_flipped_top_group_loop &124f a5 b0 LDA &b0 ; bottom_group_screen_address_low &1251 85 69 STA &69 ; screen_address_low &1253 a5 b1 LDA &b1 ; bottom_group_screen_address_high &1255 85 6a STA &6a ; screen_address_high &1257 a5 9f LDA &9f ; flipped_sprite_addresses_low &1259 85 60 STA &60 ; sprite_address_low &125b a5 a0 LDA &a0 ; flipped_sprite_addresses_high &125d 85 61 STA &61 ; sprite_address_high &125f 20 cb 12 JSR &12cb ; calculate_flipped_sprite_and_screen_addresses_loop &1262 a0 08 LDY #&08 &1264 a5 7b LDA &7b ; row_in_group &1266 f0 0d BEQ &1275 ; leave_after_restoring_addresses ; plot_sprite_behind_flipped_bottom_group_loop &1268 20 f0 12 JSR &12f0 ; plot_four_flipped_bytes_behind &126b c8 INY &126c 98 TYA &126d 38 SEC &126e e9 08 SBC #&08 &1270 18 CLC &1271 c5 7b CMP &7b ; row_in_group &1273 d0 f3 BNE &1268 ; plot_sprite_behind_flipped_bottom_group_loop ; leave_after_restoring_addresses &1275 a5 a7 LDA &a7 ; flipped_screen_addresses_low &1277 85 69 STA &69 ; screen_address_low &1279 a5 a8 LDA &a8 ; flipped_screen_addresses_high &127b 85 6a STA &6a ; screen_address_high &127d a5 9f LDA &9f ; flipped_sprite_addresses_low &127f 85 60 STA &60 ; sprite_address_low &1281 a5 a0 LDA &a0 ; flipped_sprite_addresses_high &1283 85 61 STA &61 ; sprite_address_high &1285 a5 69 LDA &69 ; screen_address_low &1287 38 SEC &1288 e9 38 SBC #&38 &128a 85 69 STA &69 ; screen_address_low &128c a5 6a LDA &6a ; screen_address_high &128e e9 01 SBC #&01 &1290 85 6a STA &6a ; screen_address_high &1292 18 CLC &1293 4c 3b 12 JMP &123b ; leave_after_adding_to_sprite_address ; plot_sprite_flipped &1296 20 cb 12 JSR &12cb ; calculate_flipped_sprite_and_screen_addresses_loop &1299 a4 7b LDY &7b ; row_in_group ; plot_sprite_flipped_top_group_loop &129b 20 21 13 JSR &1321 ; plot_three_flipped_bytes &129e c8 INY &129f c0 08 CPY #&08 &12a1 d0 f8 BNE &129b ; plot_sprite_flipped_top_group_loop &12a3 a5 b0 LDA &b0 ; bottom_group_screen_address_low &12a5 85 69 STA &69 ; screen_address_low &12a7 a5 b1 LDA &b1 ; bottom_group_screen_address_high &12a9 85 6a STA &6a ; screen_address_high &12ab a5 9f LDA &9f ; flipped_sprite_addresses_low &12ad 85 60 STA &60 ; sprite_address_low &12af a5 a0 LDA &a0 ; flipped_sprite_addresses_high &12b1 85 61 STA &61 ; sprite_address_high &12b3 20 cb 12 JSR &12cb ; calculate_flipped_sprite_and_screen_addresses_loop &12b6 a0 08 LDY #&08 &12b8 a5 7b LDA &7b ; row_in_group &12ba f0 b9 BEQ &1275 ; leave_after_restoring_addresses ; plot_sprite_flipped_bottom_group_loop &12bc 20 21 13 JSR &1321 ; plot_three_flipped_bytes &12bf c8 INY &12c0 98 TYA &12c1 38 SEC &12c2 e9 08 SBC #&08 &12c4 18 CLC &12c5 c5 7b CMP &7b ; row_in_group &12c7 d0 f3 BNE &12bc ; plot_sprite_flipped_bottom_group_loop &12c9 f0 aa BEQ &1275 ; leave_after_restoring_addresses # Always branches ; calculate_flipped_sprite_and_screen_addresses &12cb a0 00 LDY #&00 ; calculate_flipped_sprite_and_screen_addresses_loop &12cd a5 60 LDA &60 ; sprite_address_low &12cf 99 9f 00 STA &009f,Y ; flipped_sprite_addresses_low # &9f, &a1, &a3 &12d2 a5 61 LDA &61 ; sprite_address_high &12d4 99 a0 00 STA &00a0,Y ; flipped_sprite_addresses_high # &a0, &a2, &a4 &12d7 a9 08 LDA #&08 &12d9 20 69 11 JSR &1169 ; add_to_sprite_address &12dc a5 69 LDA &69 ; screen_address_low &12de 99 a7 00 STA &00a7,Y ; flipped_screen_addresses_low # &a7, &a9, &ab &12e1 a5 6a LDA &6a ; screen_address_high &12e3 99 a8 00 STA &00a8,Y ; flipped_screen_addresses_high # &a8, &aa, &ac &12e6 20 2d 11 JSR &112d ; move_right_four_pixels &12e9 c8 INY &12ea c8 INY &12eb c0 06 CPY #&06 &12ed d0 de BNE &12cd ; calculate_flipped_sprite_and_screen_addresses_loop &12ef 60 RTS ; plot_four_flipped_bytes_behind &12f0 b1 a7 LDA (&a7),Y ; flipped_screen_addresses &12f2 d0 08 BNE &12fc ; skip_first_byte &12f4 b1 60 LDA (&60),Y ; sprite_address &12f6 aa TAX &12f7 bd 00 0b LDA &0b00,X ; flipped_pixel_values &12fa 91 a7 STA (&a7),Y ; flipped_screen_addresses ; skip_first_byte &12fc b1 69 LDA (&69),Y ; screen_address &12fe d0 08 BNE &1308 ; skip_second_byte &1300 b1 9f LDA (&9f),Y ; flipped_sprite_addresses &1302 aa TAX &1303 bd 00 0b LDA &0b00,X ; flipped_pixel_values &1306 91 69 STA (&69),Y ; screen_address ; skip_second_byte &1308 b1 ab LDA (&ab),Y ; flipped_screen_addresses &130a d0 08 BNE &1314 ; skip_third_byte &130c b1 a1 LDA (&a1),Y ; flipped_sprite_addresses + 2 &130e aa TAX &130f bd 00 0b LDA &0b00,X ; flipped_pixel_values &1312 91 ab STA (&ab),Y ; flipped_screen_addresses ; skip_third_byte &1314 b1 a9 LDA (&a9),Y ; flipped_screen_addresses + 2 &1316 d0 08 BNE &1320 ; leave &1318 b1 a3 LDA (&a3),Y ; flipped_sprite_addresses + 4 &131a aa TAX &131b bd 00 0b LDA &0b00,X ; flipped_pixel_values &131e 91 a9 STA (&a9),Y ; flipped_screen_addresses + 2 ; leave &1320 60 RTS ; plot_three_flipped_bytes &1321 b1 a3 LDA (&a3),Y ; flipped_sprite_addresses + 4 &1323 aa TAX &1324 bd 00 0b LDA &0b00,X ; flipped_pixel_values &1327 91 a7 STA (&a7),Y ; flipped_screen_addresses &1329 b1 9f LDA (&9f),Y ; flipped_sprite_addresses &132b aa TAX &132c bd 00 0b LDA &0b00,X ; flipped_pixel_values &132f 91 ab STA (&ab),Y ; flipped_screen_addresses + 6 &1331 b1 a1 LDA (&a1),Y ; flipped_sprite_addresses + 2 &1333 aa TAX &1334 bd 00 0b LDA &0b00,X ; flipped_pixel_values &1337 91 a9 STA (&a9),Y ; flipped_screen_addresses + 4 &1339 60 RTS ; unplot_sprite &133a 86 af STX &af ; tmp_x &133c 20 01 11 JSR &1101 ; calculate_screen_address ; unplot_sprite_at_existing_screen_address &133f 18 CLC &1340 a5 69 LDA &69 ; screen_address_low &1342 69 38 ADC #&38 &1344 85 b0 STA &b0 ; bottom_group_screen_address_low &1346 a5 6a LDA &6a ; screen_address_high &1348 69 01 ADC #&01 &134a 85 b1 STA &b1 ; bottom_group_screen_address_high &134c 18 CLC &134d a4 7b LDY &7b ; row_in_group ; unplot_sprite_top_group_loop &134f 18 CLC &1350 a9 00 LDA #&00 &1352 91 69 STA (&69),Y ; screen_address &1354 c8 INY &1355 98 TYA &1356 18 CLC &1357 6a ROR A &1358 b0 f5 BCS &134f ; unplot_sprite_top_group_loop &135a 6a ROR A &135b b0 f2 BCS &134f ; unplot_sprite_top_group_loop &135d 6a ROR A &135e b0 ef BCS &134f ; unplot_sprite_top_group_loop &1360 a5 7b LDA &7b ; row_in_group &1362 f0 14 BEQ &1378 ; skip_bottom_group ; unplot_sprite_bottom_group_loop &1364 18 CLC &1365 a9 00 LDA #&00 &1367 91 b0 STA (&b0),Y ; bottom_group_screen_address &1369 c8 INY &136a 98 TYA &136b 38 SEC &136c e5 7b SBC &7b ; row_in_group &136e 18 CLC &136f 6a ROR A &1370 b0 f2 BCS &1364 ; unplot_sprite_bottom_group_loop &1372 6a ROR A &1373 b0 ef BCS &1364 ; unplot_sprite_bottom_group_loop &1375 6a ROR A &1376 b0 ec BCS &1364 ; unplot_sprite_bottom_group_loop &1378 98 TYA &1379 38 SEC &137a e5 7b SBC &7b ; row_in_group &137c 18 CLC &137d c5 79 CMP &79 ; sprite_size &137f d0 ce BNE &134f ; unplot_sprite_top_group_loop &1381 60 RTS ; set_player_buffer_screen_address &1382 a5 69 LDA &69 ; screen_address_low &1384 95 b1 STA &b1,X ; player_buffer_screen_address_low # &b1, &b3, &b5, &b7, &b9 &1386 a5 6a LDA &6a ; screen_address_high &1388 95 b2 STA &b2,X ; player_buffer_screen_address_high # &b2, &b4, &b6, &b8, &ba &138a e8 INX &138b e8 INX &138c 4c 4b 11 JMP &114b ; move_down_a_group ; irq1_handler &138f a5 fc LDA &fc ; irq_accumulator &1391 48 PHA &1392 8a TXA &1393 48 PHA &1394 98 TYA &1395 48 PHA &1396 ad 6d fe LDA &fe6d ; User VIA interrupt flag register # Top bit set if user interrupt &1399 10 06 BPL &13a1 ; is_not_user_interrupt ; is_user_interrupt &139b ad 64 fe LDA &fe64 ; User VIA timer 1 counter LSB &139e 4c e6 13 JMP &13e6 ; write_bottom_ula_data ; is_not_user_interrupt &13a1 ad 4d fe LDA &fe4d ; System VIA interrupt flag register # Top bit set if system interrupt &13a4 30 03 BMI &13a9 ; is_system_interrupt ; to_leave_via_previous_irq1_vector &13a6 4c c4 13 JMP &13c4 ; leave_via_previous_irq1_vector ; is_system_interrupt &13a9 29 02 AND #&02 # &02 set if interrupt caused by a v-sync &13ab f0 f9 BEQ &13a6 ; to_leave_via_previous_irq1_vector &13ad a9 51 LDA #&51 &13af 8d 64 fe STA &fe64 ; User VIA timer 1 counter LSB &13b2 a9 31 LDA #&31 &13b4 8d 65 fe STA &fe65 ; User VIA timer 1 counter MSB &13b7 a2 00 LDX #&00 ; write_top_ula_data_loop &13b9 bd ce 13 LDA &13ce,X ; ula_palette_data &13bc 8d 21 fe STA &fe21 ; video ULA palette register &13bf e8 INX &13c0 e0 0c CPX #&0c &13c2 d0 f5 BNE &13b9 ; write_top_ula_data_loop ; leave_via_previous_irq1_vector &13c4 68 PLA &13c5 a8 TAY &13c6 68 PLA &13c7 aa TAX &13c8 68 PLA &13c9 85 fc STA &fc ; irq_accumulator &13cb 6c 82 00 JMP (&0082) ; previous_irq1_vector ; ula_palette_data &13ce a4 b4 e4 f4 # Top half: set colour 3 to yellow (overwritten) &13d2 81 91 c1 d1 # set colour 2 to cyan (overwritten) &13d6 26 36 66 76 # set colour 1 to red &13da a0 b0 e0 f0 # Bottom half: set colour 3 to white &13de 82 92 c2 d2 # set colour 2 to magenta &13e2 25 35 65 75 # set colour 1 to green ; write_bottom_ula_data &13e6 a2 0c LDX #&0c ; write_bottom_ula_data_loop &13e8 bd ce 13 LDA &13ce,X ; ula_palette_data &13eb 8d 21 fe STA &fe21 ; video ULA palette register &13ee e8 INX &13ef e0 18 CPX #&18 &13f1 d0 f5 BNE &13e8 ; write_bottom_ula_data_loop &13f3 f0 cf BEQ &13c4 ; leave_via_previous_irq1_vector # Always branches ; initialise_irq1_handler &13f5 78 SEI &13f6 ad 04 02 LDA &0204 ; irq1_vector_low &13f9 85 82 STA &82 ; previous_irq1_vector_low &13fb ad 05 02 LDA &0205 ; irq1_vector_high &13fe 85 83 STA &83 ; previous_irq1_vector_high &1400 a9 8f LDA #&8f ; &138f = irq1_handler &1402 8d 04 02 STA &0204 ; irq1_vector_low &1405 a9 13 LDA #&13 &1407 8d 05 02 STA &0205 ; irq1_vector_high &140a a9 ff LDA #&ff &140c 8d 65 fe STA &fe65 ; User VIA timer 1 counter MSB &140f a9 c0 LDA #&c0 &1411 8d 6e fe STA &fe6e ; User VIA interrupt enable register &1414 a9 00 LDA #&00 &1416 8d 6b fe STA &fe6b ; User VIA auxiliary control register &1419 58 CLI &141a 60 RTS ; get_vertical_set_of_tiles &141b 20 6b 14 JSR &146b ; calculate_tile_offset &141e b9 00 0f LDA &0f00,Y ; tile_table &1421 85 6b STA &6b ; tile_one &1423 b9 0c 0f LDA &0f0c,Y ; tile_table + 12 &1426 85 6c STA &6c ; tile_two &1428 a5 7b LDA &7b ; row_in_group &142a f0 05 BEQ &1431 ; leave &142c b9 18 0f LDA &0f18,Y ; tile_table + 12 * 2 &142f 85 7d STA &7d ; tile_three ; leave &1431 60 RTS ; get_horizontal_set_of_tiles &1432 20 6b 14 JSR &146b ; calculate_tile_offset &1435 a9 00 LDA #&00 ; TILE_EMPTY &1437 85 7d STA &7d ; tile_three &1439 b9 00 0f LDA &0f00,Y ; tile_table &143c 85 6b STA &6b ; tile_one &143e b9 01 0f LDA &0f01,Y ; tile_table + 1 &1441 85 6c STA &6c ; tile_two &1443 a4 66 LDY &66 ; x &1445 b9 60 0c LDA &0c60,Y ; one_third_times_table &1448 a8 TAY &1449 b9 50 0c LDA &0c50,Y ; three_times_table &144c c5 66 CMP &66 ; x &144e d0 04 BNE &1454 ; not_aligned &1450 a9 00 LDA #&00 ; TILE_EMPTY &1452 85 6c STA &6c ; tile_two ; not_aligned &1454 a4 66 LDY &66 ; x &1456 88 DEY &1457 88 DEY &1458 b9 60 0c LDA &0c60,Y ; one_third_times_table &145b a8 TAY &145c b9 50 0c LDA &0c50,Y ; three_times_table &145f 18 CLC &1460 69 02 ADC #&02 &1462 c5 66 CMP &66 ; x &1464 d0 04 BNE &146a ; leave &1466 a9 00 LDA #&00 ; TILE_EMPTY &1468 85 6b STA &6b ; tile_one ; leave &146a 60 RTS ; calculate_tile_offset &146b 18 CLC &146c a5 67 LDA &67 ; y &146e 29 07 AND #&07 &1470 85 7b STA &7b ; row_in_tile &1472 a5 67 LDA &67 ; y &1474 29 f8 AND #&f8 &1476 6a ROR A &1477 6a ROR A &1478 6a ROR A &1479 18 CLC &147a 85 5e STA &5e ; tmp &147c a4 66 LDY &66 ; x &147e b9 60 0c LDA &0c60,Y ; one_third_times_table &1481 a4 5e LDY &5e ; tmp ; multiply_by_twelve_loop &1483 c0 00 CPY #&00 &1485 f0 06 BEQ &148d ; skip_multiplication &1487 18 CLC &1488 69 0c ADC #&0c &148a 88 DEY &148b d0 f6 BNE &1483 ; multiply_by_twelve_loop ; skip_multiplication &148d a8 TAY # Leave with Y = (x DIV 3) + (y DIV 8) * 12 &148e 60 RTS ; use_player_x_and_y &148f a5 64 LDA &64 ; player_x &1491 85 66 STA &66 ; x &1493 a5 65 LDA &65 ; player_y &1495 85 67 STA &67 ; y &1497 60 RTS ; check_for_keypress &1498 a0 ff LDY #&ff &149a a9 81 LDA #&81 ; Scan for a particular key &149c 4c f4 ff JMP &fff4 ; OSBYTE # Leave with Y = &ff if key pressed ; play_sound &149f a9 07 LDA #&07 ; Generate a sound &14a1 a0 01 LDY #&01 &14a3 4c f1 ff JMP &fff1 ; OSWORD ; rnd &14a6 a5 c0 LDA &c0 ; rnd_state &14a8 4d 68 fe EOR &fe68 ; User VIA timer 2 counter LSB &14ab 85 c0 STA &c0 ; rnd_state &14ad 0a ASL A &14ae 0a ASL A &14af 26 c2 ROL &c2 ; rnd_state + 2 &14b1 26 c1 ROL &c1 ; rnd_state + 1 &14b3 26 c0 ROL &c0 ; rnd_state &14b5 a5 c0 LDA &c0 ; rnd_state &14b7 18 CLC &14b8 60 RTS ; start_bounce &14b9 a5 65 LDA &65 ; player_y &14bb 29 fc AND #&fc &14bd 85 65 STA &65 ; player_y &14bf a2 10 LDX #&10 ; &0110 = sound_0 &14c1 20 9f 14 JSR &149f ; play_sound # Play sound for regular bounce or hyperbounce &14c4 a9 00 LDA #&00 &14c6 85 84 STA &84 ; bounce_frame &14c8 a2 ff LDX #&ff ; SHIFT &14ca 20 98 14 JSR &1498 ; check_for_keypress &14cd a9 00 LDA #&00 &14cf a2 20 LDX #&20 &14d1 c0 ff CPY #&ff &14d3 d0 09 BNE &14de ; not_hyperbounce &14d5 a2 18 LDX #&18 ; &0118 = sound_1 &14d7 20 9f 14 JSR &149f ; play_sound # Play sound for hyperbounce &14da a9 40 LDA #&40 &14dc a2 60 LDX #&60 ; not_hyperbounce &14de 85 7e STA &7e ; bounce_frames_table_address_low &14e0 86 80 STX &80 ; bounce_velocities_table_address_low &14e2 4c 2b 15 JMP &152b ; consider_player_movement ; update_player (A%) &14e5 20 8f 14 JSR &148f ; use_player_x_and_y &14e8 8d f5 0f STA &0ff5 ; previous_player_y &14eb a5 66 LDA &66 ; x &14ed 8d f4 0f STA &0ff4 ; previous_player_x &14f0 a4 84 LDY &84 ; bounce_frame &14f2 c8 INY &14f3 b1 80 LDA (&80),Y ; bounce_velocities_table_address &14f5 c9 0a CMP #&0a ; BOUNCE_VELOCITY_END # &0a marks end of table &14f7 d0 02 BNE &14fb ; not_end_of_table &14f9 88 DEY # Use final value when falling &14fa 88 DEY ; not_end_of_table &14fb 84 84 STY &84 ; bounce_frame &14fd b1 80 LDA (&80),Y ; bounce_velocities_table_address &14ff f0 2a BEQ &152b ; consider_player_movement &1501 c9 78 CMP #&78 ; BOUNCE_VELOCITY_NO_MOVEMENT &1503 f0 26 BEQ &152b ; consider_player_movement &1505 b0 18 BCS &151f ; is_rising ; is_falling # If the player is falling, &1507 a5 67 LDA &67 ; y &1509 18 CLC &150a 69 10 ADC #&10 # check for floor beneath the player &150c 85 67 STA &67 ; y &150e 20 4f 16 JSR &164f ; check_for_floor # Returns carry set if floor &1511 b0 a6 BCS &14b9 ; start_bounce # Bounce off floor ; apply_bounce_velocity &1513 a4 84 LDY &84 ; bounce_frame &1515 b1 80 LDA (&80),Y ; bounce_velocities_table_address &1517 18 CLC &1518 65 65 ADC &65 ; player_y &151a 85 65 STA &65 ; player_y &151c 4c 2b 15 JMP &152b ; consider_player_movement ; is_rising # If the player is rising, &151f 18 CLC &1520 c6 67 DEC &67 ; y # check for obstacle above the player &1522 20 64 16 JSR &1664 ; check_for_obstacle # Returns carry set if obstacle &1525 90 ec BCC &1513 ; apply_bounce_velocity &1527 a9 14 LDA #&14 # Set player moving down &1529 85 84 STA &84 ; bounce_frame ; consider_player_movement &152b 18 CLC &152c 20 8f 14 JSR &148f ; use_player_x_and_y &152f a4 84 LDY &84 ; bounce_frame &1531 b1 80 LDA (&80),Y ; bounce_velocities_table_address &1533 c9 78 CMP #&78 ; BOUNCE_VELOCITY_NO_MOVEMENT &1535 f0 5b BEQ &1592 ; finished_player_movement # Floor has friction, reducing horizontal movement &1537 ad 00 11 LDA &1100 ; suppress_player_input &153a d0 56 BNE &1592 ; finished_player_movement # Can't move horizontally on title screen &153c a2 bd LDX #&bd ; X &153e 20 98 14 JSR &1498 ; check_for_keypress &1541 c0 ff CPY #&ff &1543 f0 2d BEQ &1572 ; move_player_right &1545 a2 9e LDX #&9e ; Z &1547 20 98 14 JSR &1498 ; check_for_keypress &154a c0 ff CPY #&ff &154c f0 07 BEQ &1555 ; move_player_left &154e d0 42 BNE &1592 ; finished_player_movement # Always branches ; set_player_x_fraction &1550 86 72 STX &72 ; player_x_fraction &1552 4c 92 15 JMP &1592 ; finished_player_movement ; move_player_left # If Z pressed and X not pressed, &1555 a9 01 LDA #&01 ; DIRECTION_LEFT &1557 85 74 STA &74 ; player_direction &1559 c6 72 DEC &72 ; player_x_fraction # Move player left a pixel &155b a5 72 LDA &72 ; player_x_fraction &155d c9 ff CMP #&ff &155f d0 31 BNE &1592 ; finished_player_movement &1561 c6 66 DEC &66 ; x &1563 20 a5 16 JSR &16a5 ; check_for_side_obstacle # Returns carry set if obstacle &1566 a2 00 LDX #&00 &1568 b0 e6 BCS &1550 ; set_player_x_fraction # Align player against left obstacle &156a a9 03 LDA #&03 &156c 85 72 STA &72 ; player_x_fraction &156e c6 64 DEC &64 ; player_x &1570 90 20 BCC &1592 ; finished_player_movement # Always branches ; move_player_right # If X pressed and Z not pressed, &1572 a9 02 LDA #&02 ; DIRECTION_RIGHT &1574 85 74 STA &74 ; player_direction &1576 e6 72 INC &72 ; player_x_fraction # Move player right a pixel &1578 a5 72 LDA &72 ; player_x_fraction &157a c9 04 CMP #&04 &157c d0 14 BNE &1592 ; finished_player_movement &157e a5 66 LDA &66 ; x &1580 18 CLC &1581 69 04 ADC #&04 &1583 85 66 STA &66 ; x &1585 20 a5 16 JSR &16a5 ; check_for_side_obstacle # Returns carry set if obstacle &1588 a2 03 LDX #&03 &158a b0 c4 BCS &1550 ; set_player_x_fraction # Align player against right obstacle &158c a9 00 LDA #&00 &158e 85 72 STA &72 ; player_x_fraction &1590 e6 64 INC &64 ; player_x ; finished_player_movement &1592 20 ba 15 JSR &15ba ; replot_player &1595 a2 00 LDX #&00 &1597 a9 18 LDA #&18 &1599 85 79 STA &79 ; sprite_size ; unplot_enemies_loop &159b b5 97 LDA &97,X ; enemies_direction &159d c9 0b CMP #&0b ; ENEMY_DIRECTION_GONE &159f b0 11 BCS &15b2 ; consider_next_enemy &15a1 c9 09 CMP #&09 ; ENEMY_DIRECTION_EXPLODING &15a3 d0 06 BNE &15ab ; not_explosion &15a5 20 c5 1a JSR &1ac5 ; plot_explosion &15a8 4c b2 15 JMP &15b2 ; consider_next_enemy ; not_explosion &15ab c9 0a CMP #&0a ; ENEMY_DIRECTION_EXPLODED &15ad d0 03 BNE &15b2 ; consider_next_enemy &15af 20 9a 1a JSR &1a9a ; unplot_enemy ; consider_next_enemy &15b2 e8 INX &15b3 e0 06 CPX #&06 &15b5 d0 e4 BNE &159b ; unplot_enemies_loop &15b7 4c b2 16 JMP &16b2 ; plot_objects ; replot_player &15ba a4 72 LDY &72 ; player_x_fraction &15bc b9 bc 03 LDA &03bc,Y ; player_x_fraction_to_flip_table &15bf 85 78 STA &78 ; sprite_flip &15c1 a4 84 LDY &84 ; bounce_frame &15c3 b1 7e LDA (&7e),Y ; bounce_frames_table_address &15c5 a4 72 LDY &72 ; player_x_fraction &15c7 18 CLC &15c8 79 b8 03 ADC &03b8,Y ; player_x_fraction_to_sprite_table &15cb a8 TAY &15cc b9 a8 03 LDA &03a8,Y ; player_sprite_addresses_low_table &15cf 85 60 STA &60 ; sprite_address_low &15d1 b9 b0 03 LDA &03b0,Y ; player_sprite_addresses_high_table &15d4 85 61 STA &61 ; sprite_address_high &15d6 ad f4 0f LDA &0ff4 ; previous_player_x &15d9 85 66 STA &66 ; x &15db ad f5 0f LDA &0ff5 ; previous_player_y &15de 85 67 STA &67 ; y &15e0 20 01 11 JSR &1101 ; calculate_screen_address &15e3 a2 00 LDX #&00 # Calculate addresses for unbuffering: &15e5 20 82 13 JSR &1382 ; set_player_buffer_screen_address # Set &b1, &b2, player_buffer_screen_address &15e8 20 82 13 JSR &1382 ; set_player_buffer_screen_address # Set &b3, &b4, player_buffer_screen_address + 2 &15eb 20 82 13 JSR &1382 ; set_player_buffer_screen_address # Set &b5, &b6, player_buffer_screen_address + 4 &15ee 20 8f 14 JSR &148f ; use_player_x_and_y &15f1 20 01 11 JSR &1101 ; calculate_screen_address &15f4 a5 7b LDA &7b ; row_in_group &15f6 8d 0f 01 STA &010f ; previous_row_in_group # Calculate addresses for buffering: &15f9 20 82 13 JSR &1382 ; set_player_buffer_screen_address # Set &b7, &b8, player_buffer_screen_address + 6 &15fc 20 82 13 JSR &1382 ; set_player_buffer_screen_address # Set &b9, &ba, player_buffer_screen_address + 8 &15ff a9 20 LDA #&20 &1601 85 79 STA &79 ; sprite_size &1603 a9 13 LDA #&13 ; Wait for vertical retrace &1605 20 f4 ff JSR &fff4 ; OSBYTE &1608 a0 00 LDY #&00 ; restore_player_buffer_to_screen_loop # Unplot player from previous position &160a b9 20 01 LDA &0120,Y ; player_buffer &160d 91 b1 STA (&b1),Y ; player_buffer_screen_address &160f b9 40 01 LDA &0140,Y ; player_buffer + &20 &1612 91 b3 STA (&b3),Y ; player_buffer_screen_address + 2 &1614 b9 60 01 LDA &0160,Y ; player_buffer + &40 &1617 91 b5 STA (&b5),Y ; player_buffer_screen_address + 4 &1619 c8 INY &161a c0 20 CPY #&20 &161c d0 ec BNE &160a ; restore_player_buffer_to_screen_loop &161e a0 00 LDY #&00 ; backup_screen_to_player_buffer_loop # Backup screen contents in new position &1620 b1 b7 LDA (&b7),Y ; player_buffer_address + 6 &1622 99 20 01 STA &0120,Y ; player_buffer &1625 b1 b9 LDA (&b9),Y ; player_buffer_address + 8 &1627 99 40 01 STA &0140,Y ; player_buffer + &20 &162a b1 69 LDA (&69),Y ; screen_address &162c 99 60 01 STA &0160,Y ; player_buffer + &40 &162f c8 INY &1630 c0 20 CPY #&20 &1632 d0 ec BNE &1620 ; backup_screen_to_player_buffer_loop &1634 a5 b7 LDA &b7 ; player_buffer_address_low + 6 &1636 85 69 STA &69 ; screen_address_low &1638 a5 b8 LDA &b8 ; player_buffer_address_high + 6 &163a 85 6a STA &6a ; screen_address_high &163c ad 0f 01 LDA &010f ; previous_row_in_group &163f 85 7b STA &7b ; row_in_group &1641 20 44 16 JSR &1644 ; plot_behind_and_move_down # Plot player in new position ; plot_behind_and_move_down &1644 20 e5 11 JSR &11e5 ; plot_sprite_behind_at_existing_screen_address &1647 20 4b 11 JSR &114b ; move_down_a_group &164a a9 20 LDA #&20 &164c 4c 69 11 JMP &1169 ; add_to_sprite_address ; check_for_floor &164f 20 64 16 JSR &1664 ; check_for_obstacle &1652 b0 4f BCS &16a3 ; leave_with_carry_set &1654 a9 02 LDA #&02 ; TILE_PLATFORM &1656 c5 6b CMP &6b ; tile_one &1658 f0 49 BEQ &16a3 ; leave_with_carry_set &165a c5 6c CMP &6c ; tile_two &165c f0 45 BEQ &16a3 ; leave_with_carry_set &165e c5 7d CMP &7d ; tile_three &1660 f0 41 BEQ &16a3 ; leave_with_carry_set ; leave_with_carry_clear &1662 18 CLC &1663 60 RTS ; check_for_obstacle &1664 20 32 14 JSR &1432 ; get_horizontal_set_of_tiles ; check_tiles &1667 a9 0b LDA #&0b ; TILE_LIFT &1669 c5 6b CMP &6b ; tile_one &166b f0 3f BEQ &16ac ; set_player_ascending &166d c5 6c CMP &6c ; tile_two &166f f0 3b BEQ &16ac ; set_player_ascending &1671 c5 7d CMP &7d ; tile_three &1673 f0 37 BEQ &16ac ; set_player_ascending &1675 a9 01 LDA #&01 ; TILE_WALL &1677 c5 6b CMP &6b ; tile_one &1679 f0 28 BEQ &16a3 ; leave_with_carry_set &167b c5 6c CMP &6c ; tile_two &167d f0 24 BEQ &16a3 ; leave_with_carry_set &167f c5 7d CMP &7d ; tile_three &1681 f0 20 BEQ &16a3 ; leave_with_carry_set &1683 a9 03 LDA #&03 ; TILE_UNUSED # Unnecessary code &1685 c5 6b CMP &6b ; tile_one &1687 f0 16 BEQ &169f ; take_damage_and_leave_with_carry_set &1689 c5 6c CMP &6c ; tile_two &168b f0 12 BEQ &169f ; take_damage_and_leave_with_carry_set &168d c5 7d CMP &7d ; tile_three &168f f0 0e BEQ &169f ; take_damage_and_leave_with_carry_set &1691 a9 0a LDA #&0a ; TILE_HARMFUL &1693 c5 6b CMP &6b ; tile_one &1695 f0 08 BEQ &169f ; take_damage_and_leave_with_carry_set &1697 c5 6c CMP &6c ; tile_two &1699 f0 04 BEQ &169f ; take_damage_and_leave_with_carry_set &169b c5 7d CMP &7d ; tile_three &169d d0 c3 BNE &1662 ; leave_with_carry_clear ; take_damage_and_leave_with_carry_set &169f a9 05 LDA #&05 ; PLAYER_DRAINING &16a1 85 75 STA &75 ; player_state ; leave_with_carry_set &16a3 38 SEC # Leave with carry set to indicate player hit obstacle &16a4 60 RTS ; check_for_side_obstacle &16a5 20 1b 14 JSR &141b ; get_vertical_set_of_tiles &16a8 20 67 16 JSR &1667 ; check_tiles &16ab 60 RTS ; set_player_ascending &16ac a9 10 LDA #&10 # Set player moving up slowly &16ae 85 84 STA &84 ; bounce_frame &16b0 18 CLC &16b1 60 RTS ; plot_objects &16b2 a2 00 LDX #&00 # Set to zero to reset collection if no object collected &16b4 8e f7 0f STX &0ff7 ; player_could_collect_object &16b7 a9 10 LDA #&10 &16b9 85 79 STA &79 ; sprite_size &16bb a9 01 LDA #&01 ; DIRECTION_LEFT # Plot sprites unflipped &16bd 85 78 STA &78 ; sprite_flip ; plot_objects_loop # For each object, &16bf a5 6d LDA &6d ; player_room &16c1 dd 60 0d CMP &0d60,X ; objects_room # Is the object in the room? &16c4 d0 2f BNE &16f5 ; consider_next_object &16c6 bc 20 0d LDY &0d20,X ; objects_x &16c9 88 DEY &16ca c4 64 CPY &64 ; player_x # Is the player horizontally aligned with the object? &16cc f0 37 BEQ &1705 ; consider_collecting_object &16ce 88 DEY &16cf c4 64 CPY &64 ; player_x &16d1 f0 32 BEQ &1705 ; consider_collecting_object ; skip_collecting_object &16d3 bc 00 0d LDY &0d00,X ; objects_type &16d6 bd 20 0d LDA &0d20,X ; objects_x &16d9 85 66 STA &66 ; x &16db bd 40 0d LDA &0d40,X ; objects_y &16de 85 67 STA &67 ; y &16e0 a9 f0 LDA #&f0 ; &72f0 = object_sprites - &10 &16e2 85 60 STA &60 ; sprite_address_low &16e4 a9 72 LDA #&72 &16e6 85 61 STA &61 ; sprite_address_high ; calculate_object_sprite_address_loop &16e8 a9 10 LDA #&10 &16ea 20 69 11 JSR &1169 ; add_to_sprite_address &16ed 88 DEY &16ee c0 ff CPY #&ff &16f0 d0 f6 BNE &16e8 ; calculate_object_sprite_address_loop &16f2 20 87 11 JSR &1187 ; plot_sprite # Plot object ; consider_next_object &16f5 e8 INX &16f6 e0 20 CPX #&20 &16f8 d0 c5 BNE &16bf ; plot_objects_loop &16fa ad f7 0f LDA &0ff7 ; player_could_collect_object # Zero if player couldn't collect object &16fd d0 03 BNE &1702 ; to_consider_updating_enemies &16ff 8d f6 0f STA &0ff6 ; suppress_collecting_object # Set to zero to allow objects to be collected ; to_consider_updating_enemies &1702 4c 60 17 JMP &1760 ; consider_updating_enemies ; consider_collecting_object &1705 a5 65 LDA &65 ; player_y &1707 18 CLC &1708 69 08 ADC #&08 &170a 29 f8 AND #&f8 &170c 85 be STA &be ; player_y_group &170e bd 40 0d LDA &0d40,X ; objects_y &1711 29 f8 AND #&f8 &1713 c5 be CMP &be ; player_y_group &1715 d0 bc BNE &16d3 ; skip_collecting_object # Is the player vertically aligned with the object? &1717 ad f6 0f LDA &0ff6 ; suppress_collecting_object &171a d0 33 BNE &174f ; to_skip_collecting_object ; collect_object &171c bd 20 0d LDA &0d20,X ; objects_x &171f 85 66 STA &66 ; x &1721 bd 40 0d LDA &0d40,X ; objects_y &1724 85 67 STA &67 ; y &1726 a9 ff LDA #&ff # Remove object from room &1728 9d 60 0d STA &0d60,X ; objects_room &172b a5 77 LDA &77 ; carried_object &172d 85 5f STA &5f ; previous_carried_object &172f 86 77 STX &77 ; carried_object &1731 ee f6 0f INC &0ff6 ; suppress_collecting_object # Set to non-zero to suppress subsequent collection &1734 a2 e9 LDX #&e9 ; &75e9 = sound_7 &1736 20 e2 75 JSR &75e2 ; play_sound_for_collecting_object &1739 a6 5f LDX &5f ; previous_carried_object &173b a5 66 LDA &66 ; x &173d 9d 20 0d STA &0d20,X ; objects_x &1740 a5 67 LDA &67 ; y &1742 9d 40 0d STA &0d40,X ; objects_y &1745 a5 6d LDA &6d ; player_room &1747 9d 60 0d STA &0d60,X ; objects_room # Put previously carried object in room &174a a6 77 LDX &77 ; carried_object &174c 20 bb 1d JSR &1dbb ; write_object_description # Update status panel ; to_skip_collecting_object &174f a9 01 LDA #&01 # Set to non-zero to suppress collection next frame &1751 8d f7 0f STA &0ff7 ; player_could_collect_object &1754 4c d3 16 JMP &16d3 ; skip_collecting_object ; use_enemy_x_and_y &1757 b5 8b LDA &8b,X ; enemies_x &1759 85 66 STA &66 ; x &175b b5 91 LDA &91,X ; enemies_y &175d 85 67 STA &67 ; y &175f 60 RTS ; consider_updating_enemies &1760 ee f8 0f INC &0ff8 ; energy_beam_timer &1763 ad 00 11 LDA &1100 ; suppress_player_input &1766 f0 01 BEQ &1769 ; update_enemies &1768 60 RTS ; update_enemies &1769 a9 18 LDA #&18 &176b 85 79 STA &79 ; sprite_size &176d ee bc 08 INC &08bc ; enemies_frame_fraction &1770 ad bc 08 LDA &08bc ; enemies_frame_fraction &1773 c9 03 CMP #&03 &1775 d0 0a BNE &1781 ; skip_updating_enemies_frame &1777 e6 73 INC &73 ; enemies_frame # Update enemy animation every four frames &1779 a5 73 LDA &73 ; enemies_frame &177b 29 1f AND #&1f &177d 85 73 STA &73 ; enemies_frame &177f a9 00 LDA #&00 ; skip_updating_enemies_frame &1781 8d bc 08 STA &08bc ; enemies_frame_fraction &1784 18 CLC &1785 2a ROL A &1786 8d f9 0f STA &0ff9 ; first_enemy_to_update &1789 18 CLC &178a 69 02 ADC #&02 # Update two enemies per frame, cycling through enemies &178c 8d bd 08 STA &08bd ; last_enemy_to_update &178f ae f9 0f LDX &0ff9 ; first_enemy_to_update ; update_enemies_loop &1792 a0 00 LDY #&00 # Zero to indicate regular height enemy by default &1794 bd e2 0f LDA &0fe2,X ; enemies_type &1797 c9 12 CMP #&12 ; ENEMY_TYPE_LAST_SMALL + 1 &1799 30 01 BMI &179c ; not_tall_enemy &179b c8 INY # Non-zero to indicate tall enemy ; not_tall_enemy &179c 84 7a STY &7a ; enemy_is_tall &179e 20 57 17 JSR &1757 ; use_enemy_x_and_y # Returns A = y &17a1 85 70 STA &70 ; previous_enemy_x &17a3 a5 66 LDA &66 ; x &17a5 85 6f STA &6f ; previous_enemy_y &17a7 b5 97 LDA &97,X ; enemies_direction &17a9 c9 09 CMP #&09 ; ENEMY_DIRECTION_EXPLODING &17ab 30 06 BMI &17b3 ; not_exploding_or_gone &17ad 20 ac 1a JSR &1aac ; update_exploding_enemy &17b0 4c cc 17 JMP &17cc ; consider_replotting_generator ; not_exploding_or_gone &17b3 bc e2 0f LDY &0fe2,X ; enemies_type &17b6 c0 12 CPY #&12 ; ENEMY_TYPE_ENERGY_BEAM &17b8 f0 43 BEQ &17fd ; update_energy_beam &17ba c0 1f CPY #&1f ; ENEMY_TYPE_BACKGROUND &17bc d0 03 BNE &17c1 ; is_regular_enemy ; to_replot_animated_background &17be 4c 70 7f JMP &7f70 ; replot_animated_background ; update_regular_enemy &17c1 20 d9 19 JSR &19d9 ; check_for_enemy_collision_with_player # Returns carry set if collision occurred &17c4 b0 03 BCS &17c9 ; skip_moving_enemy &17c6 20 0a 18 JSR &180a ; consider_moving_enemy ; skip_moving_enemy &17c9 20 86 19 JSR &1986 ; consider_plotting_enemy ; consider_replotting_generator &17cc ad e1 0f LDA &0fe1 ; room_has_generator &17cf f0 22 BEQ &17f3 ; skip_replotting_generator &17d1 a9 d0 LDA #&d0 ; &57d0 = generator_sprite &17d3 85 78 STA &78 ; sprite_flip # Set to non-two to plot sprite unflipped &17d5 85 60 STA &60 ; sprite_address_low &17d7 a9 57 LDA #&57 &17d9 85 61 STA &61 ; sprite_address_high &17db ad be 08 LDA &08be ; generator_x &17de 85 66 STA &66 ; x &17e0 ad bf 08 LDA &08bf ; generator_y &17e3 85 67 STA &67 ; y &17e5 20 87 11 JSR &1187 ; plot_sprite # Plot top of generator &17e8 20 4b 11 JSR &114b ; move_down_a_group &17eb a9 18 LDA #&18 &17ed 20 69 11 JSR &1169 ; add_to_sprite_address &17f0 20 8a 11 JSR &118a ; plot_sprite_at_existing_screen_address # Plot bottom of generator ; skip_replotting_generator &17f3 e8 INX &17f4 ec bd 08 CPX &08bd ; last_enemy_to_update &17f7 d0 99 BNE &1792 ; update_enemies_loop &17f9 4c 9c 1b JMP &1b9c ; consider_draining_energy ; leave &17fc 60 RTS ; update_energy_beam &17fd ad f8 0f LDA &0ff8 ; energy_beam_timer &1800 29 80 AND #&80 # Energy beam is present if top bit clear &1802 f0 bd BEQ &17c1 ; update_regular_enemy # i.e. 128 out of 256 frames &1804 20 9a 1a JSR &1a9a ; unplot_enemy &1807 4c cc 17 JMP &17cc ; consider_replotting_generator ; consider_moving_enemy &180a bc e2 0f LDY &0fe2,X ; enemies_type &180d b5 97 LDA &97,X ; enemies_direction &180f f0 eb BEQ &17fc ; leave # Zero if static &1811 c9 01 CMP #&01 ; ENEMY_DIRECTION_UP &1813 d0 03 BNE &1818 ; not_moving_up &1815 4c f1 18 JMP &18f1 ; consider_moving_enemy_up ; not_moving_up &1818 c9 02 CMP #&02 ; ENEMY_DIRECTION_LEFT_AND_UP &181a d0 06 BNE &1822 ; not_moving_left_and_up &181c 20 51 18 JSR &1851 ; consider_moving_enemy_left &181f 4c f1 18 JMP &18f1 ; consider_moving_enemy_up ; not_moving_left_and_up &1822 c9 03 CMP #&03 ; ENEMY_DIRECTION_LEFT &1824 d0 03 BNE &1829 ; not_moving_left &1826 4c 51 18 JMP &1851 ; consider_moving_enemy_left ; not_moving_left &1829 c9 04 CMP #&04 ; ENEMY_DIRECTION_LEFT_AND_DOWN &182b d0 06 BNE &1833 ; not_moving_left_and_down &182d 20 51 18 JSR &1851 ; consider_moving_enemy_left &1830 4c 17 19 JMP &1917 ; consider_moving_enemy_down ; not_moving_left_and_down &1833 c9 05 CMP #&05 ; ENEMY_DIRECTION_DOWN &1835 d0 03 BNE &183a ; not_moving_down &1837 4c 17 19 JMP &1917 ; consider_moving_enemy_down ; not_moving_down &183a c9 06 CMP #&06 ; ENEMY_DIRECTION_RIGHT_AND_DOWN &183c d0 06 BNE &1844 ; not_moving_right_and_down &183e 20 7b 18 JSR &187b ; consider_moving_enemy_right &1841 4c 17 19 JMP &1917 ; consider_moving_enemy_down ; not_moving_right_and_down &1844 c9 07 CMP #&07 ; ENEMY_DIRECTION_RIGHT &1846 d0 03 BNE &184b ; not_moving_right &1848 4c 7b 18 JMP &187b ; consider_moving_enemy_right ; not_moving_right # &08 ; ENEMY_DIRECTION_RIGHT_AND_UP &184b 20 7b 18 JSR &187b ; consider_moving_enemy_right &184e 4c f1 18 JMP &18f1 ; consider_moving_enemy_up ; consider_moving_enemy_left &1851 c0 1d CPY #&1d ; ENEMY_TYPE_LAST_DOUBLE + 1 &1853 b0 08 BCS &185d ; consider_cooldown_for_moving_left &1855 c0 12 CPY #&12 ; ENEMY_TYPE_FIRST_TALL &1857 b0 0c BCS &1865 ; skip_cooldown_for_moving_left &1859 c0 0f CPY #&0f ; ENEMY_TYPE_FIRST_SLOW &185b 30 08 BMI &1865 ; skip_cooldown_for_moving_left ; consider_cooldown_for_moving_left &185d bd 8a 77 LDA &778a,X ; enemies_horizontal_cooldown &1860 f0 49 BEQ &18ab ; leave_after_incrementing_cooldown &1862 de 8a 77 DEC &778a,X ; enemies_horizontal_cooldown ; skip_cooldown_for_moving_left &1865 c6 66 DEC &66 ; x &1867 20 45 1a JSR &1a45 ; check_for_four_empty_tiles_vertically # Returns carry set if obstacle to left &186a b0 43 BCS &18af ; change_enemy_direction # Bounce off obstacle to left &186c b5 8b LDA &8b,X ; enemies_x &186e f0 3f BEQ &18af ; change_enemy_direction # Bounce off left edge of screen &1870 d6 8b DEC &8b,X ; enemies_x &1872 e6 66 INC &66 ; x &1874 e6 66 INC &66 ; x &1876 e6 66 INC &66 ; x &1878 4c 82 1a JMP &1a82 ; unplot_left_or_right_side_of_enemy # Unplot right of sprite ; consider_moving_enemy_right &187b c0 1d CPY #&1d ; ENEMY_TYPE_LAST_DOUBLE + 1 &187d b0 08 BCS &1887 ; consider_cooldown_for_moving_right &187f c0 12 CPY #&12 ; ENEMY_TYPE_FIRST_TALL &1881 b0 0c BCS &188f ; skip_cooldown_for_moving_right &1883 c0 0f CPY #&0f ; ENEMY_TYPE_FIRST_SLOW &1885 30 08 BMI &188f ; skip_cooldown_for_moving_right ; consider_cooldown_for_moving_right &1887 bd 8a 77 LDA &778a,X ; enemies_horizontal_cooldown &188a f0 1f BEQ &18ab ; leave_after_incrementing_cooldown &188c de 8a 77 DEC &778a,X ; enemies_horizontal_cooldown ; skip_cooldown_for_moving_right &188f e6 66 INC &66 ; x &1891 e6 66 INC &66 ; x &1893 e6 66 INC &66 ; x &1895 20 45 1a JSR &1a45 ; check_for_four_empty_tiles_vertically # Returns carry set if obstacle to right &1898 c6 66 DEC &66 ; x &189a c6 66 DEC &66 ; x &189c b0 11 BCS &18af ; change_enemy_direction # Bounce off obstacle to right &189e b5 8b LDA &8b,X ; enemies_x &18a0 c9 21 CMP #&21 &18a2 f0 0b BEQ &18af ; change_enemy_direction # Bounce off right edge of screen &18a4 f6 8b INC &8b,X ; enemies_x &18a6 c6 66 DEC &66 ; x &18a8 4c 82 1a JMP &1a82 ; unplot_left_or_right_side_of_enemy # Unplot left of sprite ; leave_after_incrementing_cooldown &18ab fe 8a 77 INC &778a,X ; enemies_horizontal_cooldown &18ae 60 RTS ; change_enemy_direction &18af bc e2 0f LDY &0fe2,X ; enemies_type &18b2 c0 04 CPY #&04 ; ENEMY_TYPE_LAST_RANDOM + 1 &18b4 30 31 BMI &18e7 ; set_random_enemy_direction &18b6 c0 0c CPY #&0c ; ENEMY_TYPE_LAST_RESTORABLE + 1 &18b8 30 12 BMI &18cc ; restore_initial_enemy_position &18ba b5 97 LDA &97,X ; enemies_direction &18bc c9 05 CMP #&05 ; ENEMY_DIRECTION_DOWN &18be 30 06 BMI &18c6 ; not_moving_down &18c0 38 SEC &18c1 e9 04 SBC #&04 ; ENEMY_DIRECTION_DOWN - ENEMY_STATE_UP # Reverse direction &18c3 95 97 STA &97,X ; enemies_direction &18c5 60 RTS ; not_moving_down &18c6 18 CLC &18c7 69 04 ADC #&04 ; ENEMY_DIRECTION_DOWN - ENEMY_STATE_UP # Reverse direction &18c9 95 97 STA &97,X ; enemies_direction &18cb 60 RTS ; restore_initial_enemy_position &18cc c0 04 CPY #&04 ; ENEMY_TYPE_WATER_DROP &18ce d0 09 BNE &18d9 ; skip_sound &18d0 86 6e STX &6e ; tmp_x &18d2 a2 90 LDX #&90 ; &0190 = sound_4 &18d4 20 9f 14 JSR &149f ; play_sound # Play sound for water drop hitting ground &18d7 a6 6e LDX &6e ; tmp_x ; skip_sound &18d9 20 9a 1a JSR &1a9a ; unplot_enemy &18dc bd e8 0f LDA &0fe8,X ; enemies_initial_x &18df 95 8b STA &8b,X ; enemies_x &18e1 bd ee 0f LDA &0fee,X ; enemies_initial_y &18e4 95 91 STA &91,X ; enemies_y &18e6 60 RTS ; set_random_enemy_direction &18e7 20 a6 14 JSR &14a6 ; rnd &18ea 29 07 AND #&07 &18ec 95 97 STA &97,X ; enemies_direction &18ee f6 97 INC &97,X ; enemies_direction &18f0 60 RTS ; consider_moving_enemy_up &18f1 20 57 17 JSR &1757 ; use_enemy_x_and_y &18f4 38 SEC &18f5 e9 04 SBC #&04 &18f7 85 67 STA &67 ; y &18f9 20 62 1a JSR &1a62 ; check_for_two_empty_tiles_horizontally # Returns carry set if obstacle above &18fc b0 b1 BCS &18af ; change_enemy_direction # Bounce off obstacle above &18fe b5 91 LDA &91,X ; enemies_y &1900 f0 ad BEQ &18af ; change_enemy_direction # Bounce off top of screen &1902 bc e2 0f LDY &0fe2,X ; enemies_type &1905 b5 91 LDA &91,X ; enemies_y &1907 38 SEC &1908 f9 c0 0f SBC &0fc0,Y ; enemy_types_y_velocities &190b 95 91 STA &91,X ; enemies_y &190d a5 70 LDA &70 ; previous_enemy_y &190f 18 CLC &1910 69 10 ADC #&10 &1912 85 67 STA &67 ; y &1914 4c 3a 13 JMP &133a ; unplot_sprite # Unplot bottom of sprite ; consider_moving_enemy_down &1917 20 57 17 JSR &1757 ; use_enemy_x_and_y &191a 18 CLC &191b 69 18 ADC #&18 &191d 85 67 STA &67 ; y &191f 20 62 1a JSR &1a62 ; check_for_two_empty_tiles_horizontally # Returns carry set if obstacle below &1922 b0 8b BCS &18af ; change_enemy_direction # Bounce off obstacle below &1924 b5 91 LDA &91,X ; enemies_y &1926 c9 54 CMP #&54 &1928 f0 85 BEQ &18af ; change_enemy_direction # Bounce off bottom of screen &192a bc e2 0f LDY &0fe2,X ; enemies_type &192d b5 91 LDA &91,X ; enemies_y &192f 18 CLC &1930 79 c0 0f ADC &0fc0,Y ; enemy_types_y_velocities &1933 95 91 STA &91,X ; enemies_y &1935 a5 70 LDA &70 ; previous_enemy_y &1937 85 67 STA &67 ; y &1939 4c 3a 13 JMP &133a ; unplot_sprite # Unplot top of sprite ; flip_enemy_by_direction_and_animate &193c b5 97 LDA &97,X ; enemies_direction &193e c9 05 CMP #&05 ; ENEMIES_DIRECTION_DOWN &1940 b0 02 BCS &1944 ; skip_flip &1942 e6 78 INC &78 ; sprite_flip ; skip_flip &1944 bd 8a 77 LDA &778a,X ; enemies_horizontal_cooldown &1947 f0 3a BEQ &1983 ; to_plot_enemy &1949 a9 30 LDA #&30 &194b 20 69 11 JSR &1169 ; add_to_sprite_address &194e 90 33 BCC &1983 ; to_plot_enemy # Always branches ; use_second_frame_every_two_frames &1950 a5 73 LDA &73 ; enemies_frame &1952 29 02 AND #&02 &1954 f0 2d BEQ &1983 ; to_plot_enemy &1956 a9 30 LDA #&30 &1958 20 69 11 JSR &1169 ; add_to_sprite_address &195b 90 26 BCC &1983 ; to_plot_enemy # Always branches ; flip_enemy_by_direction &195d b5 97 LDA &97,X ; enemies_direction &195f c9 06 CMP #&06 ; ENEMY_DIRECTION_RIGHT_AND_DOWN &1961 b0 20 BCS &1983 ; to_plot_enemy &1963 e6 78 INC &78 ; sprite_flip &1965 90 1c BCC &1983 ; to_plot_enemy # Always branches ; flip_enemy_every_two_frames &1967 a5 73 LDA &73 ; enemies_frame &1969 29 02 AND #&02 &196b f0 16 BEQ &1983 ; to_plot_enemy &196d e6 78 INC &78 ; sprite_flip # Flip sprite every two animation frames &196f 90 12 BCC &1983 ; to_plot_enemy # Always branches ; flip_tall_enemy_by_direction_and_animate &1971 b5 97 LDA &97,X ; enemies_direction &1973 c9 05 CMP #&05 ; ENEMIES_DIRECTION_DOWN &1975 b0 02 BCS &1979 ; skip_tall_flip &1977 e6 78 INC &78 ; sprite_flip ; skip_tall_flip &1979 bd 8a 77 LDA &778a,X ; enemies_horizontal_cooldown &197c f0 05 BEQ &1983 ; to_plot_enemy &197e a9 48 LDA #&48 &1980 20 69 11 JSR &1169 ; add_to_sprite_address ; to_plot_enemy &1983 4c a9 19 JMP &19a9 ; plot_enemy ; consider_plotting_enemy &1986 a9 00 LDA #&00 # Set to zero to indicate enemy is not newly added &1988 85 b2 STA &b2 ; enemy_is_new &198a 20 d6 1a JSR &1ad6 ; check_for_collision_with_other_enemies &198d c0 06 CPY #&06 ; ENEMY_TYPE_06 &198f 30 cc BMI &195d ; flip_enemy_by_direction &1991 c0 0c CPY #&0c ; ENEMY_TYPE_LAST_RESTORABLE + 1 &1993 30 d2 BMI &1967 ; flip_enemy_every_two_frames &1995 c0 0f CPY #&0f ; ENEMY_TYPE_FIRST_SLOW &1997 30 b7 BMI &1950 ; use_second_frame_every_two_frames &1999 c0 12 CPY #&12 ; ENEMY_TYPE_LAST_SLOW + 1 &199b 30 9f BMI &193c ; flip_enemy_by_direction_and_animate &199d c0 17 CPY #&17 ; ENEMY_TYPE_17 &199f 30 c6 BMI &1967 ; flip_enemy_every_two_frames &19a1 c0 19 CPY #&19 ; ENEMY_TYPE_FIRST_DOUBLE &19a3 30 b8 BMI &195d ; flip_enemy_by_direction &19a5 c0 1d CPY #&1d ; ENEMY_TYPE_LAST_DOUBLE + 1 &19a7 b0 c8 BCS &1971 ; flip_tall_enemy_by_direction_and_animate ; plot_enemy &19a9 18 CLC &19aa 20 57 17 JSR &1757 ; use_enemy_x_and_y &19ad a5 7a LDA &7a ; enemy_is_tall # Non-zero if tall enemy &19af d0 0b BNE &19bc ; plot_enemy_skipping_offset &19b1 b5 97 LDA &97,X ; enemies_direction # Zero if enemy is static &19b3 f0 07 BEQ &19bc ; plot_enemy_skipping_offset &19b5 a5 67 LDA &67 ; y &19b7 18 CLC &19b8 69 04 ADC #&04 # Offset regular height, moving enemies &19ba 85 67 STA &67 ; y ; plot_enemy_skipping_offset &19bc 20 87 11 JSR &1187 ; plot_sprite # Plot top of enemy &19bf 20 4b 11 JSR &114b ; move_down_a_group &19c2 a9 18 LDA #&18 &19c4 20 69 11 JSR &1169 ; add_to_sprite_address &19c7 20 8a 11 JSR &118a ; plot_sprite_at_existing_screen_address # Plot middle of tall enemy or bottom of regular enemy &19ca a9 18 LDA #&18 &19cc 20 69 11 JSR &1169 ; add_to_sprite_address &19cf 20 4b 11 JSR &114b ; move_down_a_group &19d2 a5 7a LDA &7a ; enemy_is_tall # Non-zero if tall enemy &19d4 f0 56 BEQ &1a2c ; leave_with_carry_clear &19d6 4c 8a 11 JMP &118a ; plot_sprite_at_existing_screen_address # Plot bottom of tall enemy ; check_for_enemy_collision_with_player &19d9 a9 01 LDA #&01 # Set to non-zero to perform wide collision check &19db 8d 08 01 STA &0108 ; wide_collision &19de 20 05 1a JSR &1a05 ; check_for_collision # Returns carry clear if no collision &19e1 90 49 BCC &1a2c ; leave_with_carry_clear # Leave with carry clear to indicate no collision &19e3 a5 6f LDA &6f ; previous_enemy_x &19e5 95 8b STA &8b,X ; enemies_x &19e7 a5 70 LDA &70 ; previous_enemy_y &19e9 95 91 STA &91,X ; enemies_y &19eb b5 97 LDA &97,X ; enemies_direction # Zero if enemy is static &19ed d0 09 BNE &19f8 ; not_static_enemy &19ef bd e2 0f LDA &0fe2,X ; enemies_type &19f2 c9 12 CMP #&12 ; ENEMY_TYPE_ENERGY_BEAM &19f4 d0 0d BNE &1a03 ; leave_with_carry_set # Don't damage player if static animation &19f6 f0 07 BEQ &19ff ; damage_player # Always branches ; not_static_enemy &19f8 c9 0a CMP #&0a ; ENEMY_TYPE_ANIMATION &19fa b0 07 BCS &1a03 ; leave_with_carry_set # Don't damage player if static animation &19fc 20 8a 1d JSR &1d8a ; explode_double_enemies ; damage_player &19ff a0 05 LDY #&05 ; PLAYER_DRAINING &1a01 84 75 STY &75 ; player_state ; leave_with_carry_set &1a03 38 SEC # Leave with carry set to indicate collision &1a04 60 RTS ; check_for_collision &1a05 18 CLC &1a06 a4 64 LDY &64 ; player_x # player_x can be enemy_x here &1a08 88 DEY &1a09 88 DEY &1a0a c4 66 CPY &66 ; x &1a0c f0 20 BEQ &1a2e ; check_for_collision_vertically &1a0e c8 INY &1a0f c4 66 CPY &66 ; x &1a11 f0 1b BEQ &1a2e ; check_for_collision_vertically &1a13 c8 INY &1a14 c4 66 CPY &66 ; x &1a16 f0 16 BEQ &1a2e ; check_for_collision_vertically &1a18 c8 INY &1a19 c4 66 CPY &66 ; x &1a1b f0 11 BEQ &1a2e ; check_for_collision_vertically &1a1d c8 INY &1a1e c4 66 CPY &66 ; x &1a20 f0 0c BEQ &1a2e ; check_for_collision_vertically &1a22 ad 08 01 LDA &0108 ; wide_collision # Zero if performing narrow collision check &1a25 f0 05 BEQ &1a2c ; leave_with_carry_clear &1a27 c8 INY &1a28 c4 66 CPY &66 ; x &1a2a f0 02 BEQ &1a2e ; check_for_collision_vertically ; leave_with_carry_clear &1a2c 18 CLC # Leave with carry clear to indicate no collision &1a2d 60 RTS ; check_for_collision_vertically &1a2e a5 65 LDA &65 ; player_y # player_y can be enemy_y here &1a30 38 SEC &1a31 e9 20 SBC #&20 &1a33 c9 dc CMP #&dc &1a35 b0 05 BCS &1a3c ; skip_upper_check # Don't check above top of screen &1a37 18 CLC &1a38 c5 67 CMP &67 ; y &1a3a b0 f0 BCS &1a2c ; leave_with_carry_clear ; skip_upper_check &1a3c 18 CLC &1a3d 69 37 ADC #&37 &1a3f c5 67 CMP &67 ; y &1a41 30 e9 BMI &1a2c ; leave_with_carry_clear &1a43 38 SEC # Leave with carry set to indicate collision &1a44 60 RTS ; check_for_four_empty_tiles_vertically &1a45 20 6b 14 JSR &146b ; calculate_tile_offset &1a48 b9 00 0f LDA &0f00,Y ; tile_table &1a4b d0 b6 BNE &1a03 ; leave_with_carry_set &1a4d b9 0c 0f LDA &0f0c,Y ; tile_table + 12 &1a50 d0 b1 BNE &1a03 ; leave_with_carry_set &1a52 b9 18 0f LDA &0f18,Y ; tile_table + 12 * 2 &1a55 d0 ac BNE &1a03 ; leave_with_carry_set &1a57 a5 7b LDA &7b ; row_in_group &1a59 f0 d1 BEQ &1a2c ; leave_with_carry_clear &1a5b b9 24 0f LDA &0f24,Y ; tile_table + 12 * 3 &1a5e d0 a3 BNE &1a03 ; leave_with_carry_set ; leave_with_carry_clear &1a60 18 CLC # Leave with carry clear to indicate all tiles empty &1a61 60 RTS ; check_for_two_empty_tiles_horizontally &1a62 20 6b 14 JSR &146b ; calculate_tile_offset &1a65 b9 00 0f LDA &0f00,Y ; tile_table &1a68 d0 99 BNE &1a03 ; leave_with_carry_set &1a6a b9 01 0f LDA &0f01,Y ; tile_table + 1 &1a6d 85 62 STA &62 ; right_tile &1a6f a4 66 LDY &66 ; x &1a71 b9 60 0c LDA &0c60,Y ; one_third_times_table &1a74 a8 TAY &1a75 b9 50 0c LDA &0c50,Y ; three_times_table &1a78 c5 66 CMP &66 ; x &1a7a f0 e4 BEQ &1a60 ; leave_with_carry_clear &1a7c a5 62 LDA &62 ; right_tile &1a7e d0 83 BNE &1a03 ; leave_with_carry_set &1a80 18 CLC # Leave with carry clear to indicate both tiles empty &1a81 60 RTS ; unplot_left_or_right_side_of_enemy &1a82 a9 08 LDA #&08 &1a84 85 79 STA &79 ; sprite_size &1a86 20 3a 13 JSR &133a ; unplot_sprite &1a89 20 4b 11 JSR &114b ; move_down_a_group &1a8c 20 3f 13 JSR &133f ; unplot_sprite_at_existing_screen_address &1a8f 20 4b 11 JSR &114b ; move_down_a_group &1a92 20 3f 13 JSR &133f ; unplot_sprite_at_existing_screen_address &1a95 a9 18 LDA #&18 &1a97 85 79 STA &79 ; sprite_size &1a99 60 RTS ; unplot_enemy &1a9a 20 57 17 JSR &1757 ; use_enemy_x_and_y &1a9d 20 3a 13 JSR &133a ; unplot_sprite &1aa0 20 4b 11 JSR &114b ; move_down_a_group &1aa3 20 3f 13 JSR &133f ; unplot_sprite_at_existing_screen_address &1aa6 20 4b 11 JSR &114b ; move_down_a_group &1aa9 4c 3f 13 JMP &133f ; unplot_sprite_at_existing_screen_address ; update_exploding_enemy # Called with A = enemy direction &1aac c9 0b CMP #&0b ; ENEMY_DIRECTION_GONE &1aae b0 0d BCS &1abd ; leave &1ab0 c9 0a CMP #&0a ; ENEMY_DIRECTION_EXPLODED &1ab2 d0 0a BNE &1abe ; is_exploding &1ab4 20 d9 19 JSR &19d9 ; check_for_enemy_collision_with_player # Returns carry set if collision occurred &1ab7 f6 97 INC &97,X ; enemies_direction &1ab9 90 df BCC &1a9a ; unplot_enemy &1abb d6 97 DEC &97,X ; enemies_direction # Keep explosion while player is touching it ; leave &1abd 60 RTS ; is_exploding # If ENEMY_DIRECTION_EXPLODING, &1abe 20 d9 19 JSR &19d9 ; check_for_enemy_collision_with_player # Returns carry set if collision occurred &1ac1 b0 02 BCS &1ac5 ; plot_explosion &1ac3 f6 97 INC &97,X ; enemies_direction # Remove explosion if player isn't touching it ; plot_explosion &1ac5 a9 68 LDA #&68 ; &7568 = explosion_sprite &1ac7 85 60 STA &60 ; sprite_address_low &1ac9 a9 75 LDA #&75 &1acb 85 61 STA &61 ; sprite_address_high &1acd a9 01 LDA #&01 ; DIRECTION_LEFT # Plot sprites unflipped &1acf 85 78 STA &78 ; sprite_flip &1ad1 85 7a STA &7a ; enemy_is_tall # Set to non-zero to indicate tall enemy &1ad3 4c a9 19 JMP &19a9 ; plot_enemy ; check_for_collision_with_other_enemies &1ad6 bd e2 0f LDA &0fe2,X ; enemies_type &1ad9 c9 1d CMP #&1d ; ENEMY_TYPE_LAST_DOUBLE + 1 &1adb b0 08 BCS &1ae5 ; perform_collision_check &1add c9 19 CMP #&19 ; ENEMY_TYPE_FIRST_DOUBLE &1adf b0 40 BCS &1b21 ; skip_collision_check &1ae1 c9 12 CMP #&12 ; ENEMY_TYPE_ENERGY_BEAM &1ae3 f0 3c BEQ &1b21 ; skip_collision_check ; perform_collision_check &1ae5 a0 00 LDY #&00 # Set to zero to perform narrow collision check &1ae7 8c 08 01 STY &0108 ; wide_collision &1aea a5 64 LDA &64 ; player_x # player_x and player_y will be overwritten &1aec 85 b3 STA &b3 ; backup_player_x &1aee a5 65 LDA &65 ; player_y &1af0 85 b4 STA &b4 ; backup_player_y &1af2 20 57 17 JSR &1757 ; use_enemy_x_and_y ; check_for_collision_with_other_enemies_loop # For each of the other enemies, &1af5 84 5f STY &5f ; other_enemy &1af7 e4 5f CPX &5f ; other_enemy &1af9 f0 17 BEQ &1b12 ; consider_next_enemy &1afb b9 97 00 LDA &0097,Y ; enemies_direction &1afe c9 09 CMP #&09 ; ENEMY_DIRECTION_EXPLODING &1b00 b0 10 BCS &1b12 ; consider_next_enemy &1b02 18 CLC &1b03 b9 8b 00 LDA &008b,Y ; enemies_x # Use other enemy's position for collision check &1b06 85 64 STA &64 ; player_x &1b08 b9 91 00 LDA &0091,Y ; enemies_y &1b0b 85 65 STA &65 ; player_y &1b0d 20 05 1a JSR &1a05 ; check_for_collision # Returns carry set if collision &1b10 b0 23 BCS &1b35 ; restore_previous_position # If a collision occurred, revert enemy movement ; consider_next_enemy &1b12 a4 5f LDY &5f ; other_enemy &1b14 c8 INY &1b15 c0 06 CPY #&06 &1b17 d0 dc BNE &1af5 ; check_for_collision_with_other_enemies_loop ; set_variables_for_plotting_enemy &1b19 a5 b3 LDA &b3 ; backup_player_x # Restore player's position to player_x and player_y &1b1b 85 64 STA &64 ; player_x &1b1d a5 b4 LDA &b4 ; backup_player_y &1b1f 85 65 STA &65 ; player_y ; skip_collision_check &1b21 bc e2 0f LDY &0fe2,X ; enemies_type &1b24 b9 e0 0e LDA &0ee0,Y ; enemy_types_flips &1b27 85 78 STA &78 ; sprite_flip &1b29 b9 c0 72 LDA &72c0,Y ; enemy_types_sprite_addresses_low &1b2c 85 60 STA &60 ; sprite_address_low &1b2e b9 e0 72 LDA &72e0,Y ; enemy_types_sprite_addresses_high &1b31 85 61 STA &61 ; sprite_address_high &1b33 18 CLC # Leave with carry clear to indicate no collision &1b34 60 RTS ; restore_previous_position &1b35 18 CLC &1b36 a5 b2 LDA &b2 ; enemy_is_new # Zero if enemy is not newly added &1b38 d0 0e BNE &1b48 ; set_variables_for_plotting_enemy_and_leave_with_carry_set &1b3a a5 6f LDA &6f ; previous_enemy_x &1b3c 95 8b STA &8b,X ; enemies_x &1b3e a5 70 LDA &70 ; previous_enemy_y &1b40 95 91 STA &91,X ; enemies_y &1b42 20 af 18 JSR &18af ; change_enemy_direction &1b45 4c 19 1b JMP &1b19 ; set_variables_for_plotting_enemy ; set_variables_for_plotting_enemy_and_leave_with_carry_set &1b48 20 19 1b JSR &1b19 ; set_variables_for_plotting_enemy &1b4b 38 SEC # Leave with carry set to indicate collision &1b4c 60 RTS ; drain_player_energy &1b4d c6 8a DEC &8a ; player_energy &1b4f a5 8a LDA &8a ; player_energy &1b51 8d 9c 01 STA &019c ; sound_5 + 4 &1b54 a2 98 LDX #&98 ; &0198 = sound_5 &1b56 20 9f 14 JSR &149f ; play_sound # Play sound for losing energy &1b59 a9 05 LDA #&05 # Drain five energy for touching enemy or harmful tile ; drain_player_energy_without_sound &1b5b aa TAX &1b5c a9 00 LDA #&00 ; PLAYER_OK &1b5e 85 75 STA &75 ; player_state &1b60 ad f5 0c LDA &0cf5 ; drain_energy_string + 5 # Get x coordinate from plot string &1b63 85 60 STA &60 ; energy_x_low &1b65 ad f6 0c LDA &0cf6 ; drain_energy_string + 6 &1b68 85 61 STA &61 ; energy_x_high &1b6a 8a TXA &1b6b 20 76 11 JSR &1176 ; subtract_from_sprite_address # Actually subtract from energy_x &1b6e a5 61 LDA &61 ; energy_x_high &1b70 8d f6 0c STA &0cf6 ; drain_energy_string + 6 # Set x coordinates in plot string &1b73 8d fc 0c STA &0cfc ; drain_energy_string + 12 &1b76 a5 60 LDA &60 ; energy_x_low &1b78 8d f5 0c STA &0cf5 ; drain_energy_string + 5 &1b7b 8d fb 0c STA &0cfb ; drain_energy_string + 11 &1b7e a2 00 LDX #&00 ; plot_energy_drain_loop &1b80 bd f0 0c LDA &0cf0,X ; drain_energy_string &1b83 20 ee ff JSR &ffee ; OSWRCH # Plot over end of energy bar &1b86 e8 INX &1b87 e0 0f CPX #&0f &1b89 d0 f5 BNE &1b80 ; plot_energy_drain_loop &1b8b ad f6 0c LDA &0cf6 ; drain_energy_string + 6 &1b8e d0 0b BNE &1b9b ; leave &1b90 ad f5 0c LDA &0cf5 ; drain_energy_string + 5 &1b93 c9 24 CMP #&24 &1b95 b0 04 BCS &1b9b ; leave # If the player is out of energy, &1b97 a9 0a LDA #&0a ; PLAYER_DEAD # set the player as being dead &1b99 85 75 STA &75 ; player_state ; leave &1b9b 60 RTS ; consider_draining_energy &1b9c a5 75 LDA &75 ; player_state &1b9e c9 05 CMP #&05 ; PLAYER_DRAINING &1ba0 d0 03 BNE &1ba5 ; not_taking_damage &1ba2 20 4d 1b JSR &1b4d ; drain_player_energy ; not_taking_damage &1ba5 ad e1 0f LDA &0fe1 ; room_has_generator # Top bit set if room has generator &1ba8 f0 0a BEQ &1bb4 ; skip_adding_enemy &1baa 20 a6 14 JSR &14a6 ; rnd &1bad c9 0c CMP #&0c # Consider adding a new enemy 12 out of 256 frames &1baf b0 03 BCS &1bb4 ; skip_adding_enemy &1bb1 20 61 1e JSR &1e61 ; consider_adding_enemy ; skip_adding_enemy &1bb4 a4 75 LDY &75 ; player_state &1bb6 c0 0a CPY #&0a ; PLAYER_DEAD &1bb8 f0 38 BEQ &1bf2 ; skip_changing_room ; consider_moving_left_a_room &1bba a5 64 LDA &64 ; player_x &1bbc d0 09 BNE &1bc7 ; consider_moving_right_a_room # If the player is at the left of the screen, &1bbe a0 32 LDY #&32 ; PLAYER_CHANGED_ROOM (50) # Call room change code at line 50 of BASIC &1bc0 ce 0c 04 DEC &040c ; player_room_x ; C% # Move left a room &1bc3 a9 1f LDA #&1f &1bc5 85 64 STA &64 ; player_x # Put the player at the right of the screen ; consider_moving_right_a_room &1bc7 c9 20 CMP #&20 &1bc9 d0 09 BNE &1bd4 ; consider_moving_up_a_room # If the player is at the right of the screen, &1bcb a9 01 LDA #&01 &1bcd 85 64 STA &64 ; player_x # Put the player at the left of the screen &1bcf a0 32 LDY #&32 ; PLAYER_CHANGED_ROOM (50) # Call room change code at line 50 of BASIC &1bd1 ee 0c 04 INC &040c ; player_room_x ; C% # Move right a room ; consider_moving_up_a_room &1bd4 a5 65 LDA &65 ; player_y &1bd6 c9 04 CMP #&04 &1bd8 b0 09 BCS &1be3 ; consider_moving_down_a_room # If the player is at the top of the screen, &1bda a9 58 LDA #&58 &1bdc 85 65 STA &65 ; player_y # Put the player at the bottom of the screen &1bde a0 32 LDY #&32 ; PLAYER_CHANGED_ROOM (50) # Call room change code at line 50 of BASIC &1be0 ce 10 04 DEC &0410 ; player_room_y ; D% # Move up a room ; consider_moving_down_a_room &1be3 c9 5d CMP #&5d &1be5 30 09 BMI &1bf0 ; finished_considering_rooms # If the player is at the bottom of the screen, &1be7 a9 04 LDA #&04 &1be9 85 65 STA &65 ; player_y # Put the player at the top of the screen &1beb a0 32 LDY #&32 ; PLAYER_CHANGED_ROOM (50) # Call room change code at line 50 of BASIC &1bed ee 10 04 INC &0410 ; player_room_y ; D% # Move down a room ; finished_considering_rooms &1bf0 84 75 STY &75 ; player_state ; skip_changing_room &1bf2 a2 9d LDX #&9d ; SPACE &1bf4 20 98 14 JSR &1498 ; check_for_keypress &1bf7 c0 ff CPY #&ff &1bf9 d0 26 BNE &1c21 ; space_not_pressed # If SPACE was pressed, &1bfb a2 00 LDX #&00 ; check_for_terminal_loop # For each terminal, &1bfd a5 68 LDA &68 ; room_type &1bff dd c0 71 CMP &71c0,X ; terminals_room_type # Is the player in the room with the terminal? &1c02 d0 18 BNE &1c1c ; consider_next_terminal &1c04 a5 64 LDA &64 ; player_x &1c06 dd 80 71 CMP &7180,X ; terminals_x # If so, is the player on the terminal? &1c09 d0 11 BNE &1c1c ; consider_next_terminal &1c0b a5 65 LDA &65 ; player_y &1c0d dd a0 71 CMP &71a0,X ; terminals_y &1c10 d0 0a BNE &1c1c ; consider_next_terminal &1c12 86 5a STX &5a ; terminal_number &1c14 a5 75 LDA &75 ; player_state &1c16 d0 04 BNE &1c1c ; consider_next_terminal &1c18 a9 3c LDA #&3c ; PLAYER_ENTERED_TERMINAL (60) # Call terminal code at line 60 of BASIC &1c1a 85 75 STA &75 ; player_state ; consider_next_terminal &1c1c e8 INX &1c1d e0 20 CPX #&20 &1c1f d0 dc BNE &1bfd ; check_for_terminal_loop ; space_not_pressed &1c21 a2 00 LDX #&00 &1c23 86 89 STX &89 ; score_to_add &1c25 a0 00 LDY #&00 &1c27 a9 81 LDA #&81 ; Wait for input character &1c29 20 f4 ff JSR &fff4 ; OSBYTE &1c2c a9 d2 LDA #&d2 ; Read/Write sound suppression flag &1c2e a0 01 LDY #&01 &1c30 e0 51 CPX #&51 ; "Q" &1c32 d0 03 BNE &1c37 ; q_not_pressed &1c34 20 f4 ff JSR &fff4 ; OSBYTE # Disable sound if Q pressed ; q_not_pressed &1c37 e0 53 CPX #&53 ; "S" &1c39 d0 06 BNE &1c41 ; s_not_pressed &1c3b a2 00 LDX #&00 &1c3d 88 DEY &1c3e 20 f4 ff JSR &fff4 ; OSBYTE # Enable sound if S pressed ; s_not_pressed &1c41 e0 0d CPX #&0d ; CR &1c43 d0 07 BNE &1c4c ; return_not_pressed # If RETURN was pressed, &1c45 a5 85 LDA &85 ; fire_present &1c47 d0 03 BNE &1c4c ; return_not_pressed # and the player isn't already firing &1c49 20 5d 1c JSR &1c5d ; start_fire # start firing ; return_not_pressed &1c4c a5 85 LDA &85 ; fire_present &1c4e f0 03 BEQ &1c53 ; leave &1c50 20 b4 1c JSR &1cb4 ; update_fire ; leave &1c53 60 RTS ; use_fire_x_and_y &1c54 a5 86 LDA &86 ; fire_x &1c56 85 66 STA &66 ; x &1c58 a5 87 LDA &87 ; fire_y &1c5a 85 67 STA &67 ; y &1c5c 60 RTS ; start_fire &1c5d a5 65 LDA &65 ; player_y &1c5f 18 CLC &1c60 69 08 ADC #&08 &1c62 29 f8 AND #&f8 &1c64 85 87 STA &87 ; fire_y &1c66 a5 74 LDA &74 ; player_direction &1c68 85 88 STA &88 ; fire_direction &1c6a c9 02 CMP #&02 ; DIRECTION_RIGHT &1c6c f0 0c BEQ &1c7a ; start_fire_right ; start_fire_left &1c6e a5 64 LDA &64 ; player_x &1c70 c9 02 CMP #&02 &1c72 30 3b BMI &1caf ; remove_fire # Don't fire at left edge of screen &1c74 85 86 STA &86 ; fire_x &1c76 c6 86 DEC &86 ; fire_x &1c78 d0 0b BNE &1c85 ; create_fire # Always branches ; start_fire_right &1c7a a5 64 LDA &64 ; player_x &1c7c c9 20 CMP #&20 &1c7e b0 2f BCS &1caf ; remove_fire # Don't fire at right edge of screen &1c80 18 CLC &1c81 69 04 ADC #&04 &1c83 85 86 STA &86 ; fire_x ; create_fire &1c85 20 54 1c JSR &1c54 ; use_fire_x_and_y &1c88 20 6b 14 JSR &146b ; calculate_tile_offset &1c8b b9 00 0f LDA &0f00,Y ; tile_table &1c8e c9 01 CMP #&01 ; TILE_WALL &1c90 f0 1d BEQ &1caf ; remove_fire &1c92 c9 0a CMP #&0a ; TILE_HARMFUL &1c94 f0 19 BEQ &1caf ; remove_fire &1c96 a9 02 LDA #&02 # Set to non-zero to indicate player is firing &1c98 85 85 STA &85 ; fire_present &1c9a a5 75 LDA &75 ; player_state &1c9c d0 05 BNE &1ca3 ; skip_draining_energy &1c9e a9 01 LDA #&01 # Drain one energy for firing &1ca0 20 5b 1b JSR &1b5b ; drain_player_energy_without_sound ; skip_draining_energy &1ca3 a2 80 LDX #&80 ; &0180 = sound_2 &1ca5 20 9f 14 JSR &149f ; play_sound # Play sound for firing &1ca8 a9 08 LDA #&08 &1caa 85 79 STA &79 ; sprite_size &1cac 4c 18 1d JMP &1d18 ; plot_fire ; remove_fire &1caf a9 00 LDA #&00 # Set to zero to indicate not firing &1cb1 85 85 STA &85 ; fire_present &1cb3 60 RTS ; update_fire &1cb4 a9 08 LDA #&08 &1cb6 85 79 STA &79 ; sprite_size &1cb8 20 54 1c JSR &1c54 ; use_fire_x_and_y &1cbb 20 6b 14 JSR &146b ; calculate_tile_offset &1cbe b9 00 0f LDA &0f00,Y ; tile_table &1cc1 d0 03 BNE &1cc6 ; skip_unplotting_fire # If the fire isn't obscured by a tile, &1cc3 20 3a 13 JSR &133a ; unplot_sprite # Unplot fire ; skip_unplotting_fire &1cc6 20 54 1c JSR &1c54 ; use_fire_x_and_y &1cc9 a5 88 LDA &88 ; fire_direction &1ccb c9 01 CMP #&01 ; DIRECTION_LEFT &1ccd f0 04 BEQ &1cd3 ; update_fire_left ; update_fire_right &1ccf e6 66 INC &66 ; x &1cd1 d0 02 BNE &1cd5 ; check_if_fire_is_at_edge_of_screen # Always branches ; update_fire_left &1cd3 c6 66 DEC &66 ; x ; check_if_fire_is_at_edge_of_screen &1cd5 a5 66 LDA &66 ; x &1cd7 c9 24 CMP #&24 &1cd9 b0 d4 BCS &1caf ; remove_fire # Remove fire at left or right edges of screen &1cdb 20 6b 14 JSR &146b ; calculate_tile_offset &1cde b9 00 0f LDA &0f00,Y ; tile_table &1ce1 f0 08 BEQ &1ceb ; move_fire &1ce3 c9 0a CMP #&0a ; TILE_HARMFUL &1ce5 f0 4c BEQ &1d33 ; fire_hit_generator_or_harmful_tile &1ce7 c9 01 CMP #&01 ; TILE_WALL &1ce9 f0 c4 BEQ &1caf ; remove_fire # Remove fire if it hits a wall ; move_fire &1ceb a5 66 LDA &66 ; x &1ced 85 86 STA &86 ; fire_x &1cef a2 00 LDX #&00 ; check_if_fire_hit_enemies_loop &1cf1 b5 97 LDA &97,X ; enemies_direction # Zero if enemy is static &1cf3 f0 1e BEQ &1d13 ; consider_next_enemy &1cf5 c9 09 CMP #&09 ; ENEMY_DIRECTION_EXPLODING &1cf7 b0 1a BCS &1d13 ; consider_next_enemy # Don't consider exploding or exploded enemies &1cf9 bd e2 0f LDA &0fe2,X ; enemies_type &1cfc c9 1f CMP #&1f ; ENEMY_TYPE_BACKGROUND &1cfe f0 13 BEQ &1d13 ; consider_next_enemy # Don't consider background animations &1d00 20 57 17 JSR &1757 ; use_enemy_x_and_y &1d03 a4 66 LDY &66 ; x &1d05 c4 86 CPY &86 ; fire_x &1d07 f0 66 BEQ &1d6f ; consider_if_fire_hit_enemy &1d09 c8 INY &1d0a c4 86 CPY &86 ; fire_x &1d0c f0 61 BEQ &1d6f ; consider_if_fire_hit_enemy &1d0e c8 INY &1d0f c4 86 CPY &86 ; fire_x &1d11 f0 5c BEQ &1d6f ; consider_if_fire_hit_enemy ; consider_next_enemy &1d13 e8 INX &1d14 e0 06 CPX #&06 &1d16 d0 d9 BNE &1cf1 ; check_if_fire_hit_enemies_loop ; plot_fire &1d18 20 54 1c JSR &1c54 ; use_fire_x_and_y &1d1b 20 6b 14 JSR &146b ; calculate_tile_offset &1d1e b9 00 0f LDA &0f00,Y ; tile_table &1d21 d0 0f BNE &1d32 ; leave # Don't plot fire if obscured by tile &1d23 a9 88 LDA #&88 ; &0c88 = fire_sprite &1d25 85 60 STA &60 ; sprite_address_low &1d27 a9 0c LDA #&0c &1d29 85 61 STA &61 ; sprite_address_high &1d2b a9 01 LDA #&01 ; DIRECTION_LEFT # Plot sprites unflipped &1d2d 85 78 STA &78 ; sprite_flip &1d2f 4c e2 11 JMP &11e2 ; plot_sprite_behind # Plot fire ; leave &1d32 60 RTS ; fire_hit_generator_or_harmful_tile &1d33 a5 67 LDA &67 ; y &1d35 20 91 1e JSR &1e91 ; get_top_nibble &1d38 2a ROL A &1d39 2a ROL A &1d3a 2a ROL A &1d3b 2a ROL A &1d3c 85 67 STA &67 ; y # y = y & &f0 &1d3e 20 6b 14 JSR &146b ; calculate_tile_offset &1d41 a9 00 LDA #&00 # Set to zero to indicate room has no generator &1d43 8d e1 0f STA &0fe1 ; room_has_generator &1d46 99 00 0f STA &0f00,Y ; tile_table # Remove top of tile from tile table &1d49 99 0c 0f STA &0f0c,Y ; tile_table + 12 # Remove bottom of tile from tile table &1d4c a4 66 LDY &66 ; x &1d4e be 60 0c LDX &0c60,Y ; one_third_times_table &1d51 bd 50 0c LDA &0c50,X ; three_times_table &1d54 85 66 STA &66 ; x &1d56 a9 18 LDA #&18 &1d58 85 79 STA &79 ; sprite_size &1d5a 20 3a 13 JSR &133a ; unplot_sprite # Unplot top of tile &1d5d 20 4b 11 JSR &114b ; move_down_a_group &1d60 20 3f 13 JSR &133f ; unplot_sprite_at_existing_screen_address # Unplot bottom of tile &1d63 a9 02 LDA #&02 # Score 5 credits and 175 points for destroying tile &1d65 85 89 STA &89 ; score_to_add ; play_sound_and_remove_fire &1d67 a2 88 LDX #&88 ; &0188 = sound_3 &1d69 20 9f 14 JSR &149f ; play_sound &1d6c 4c af 1c JMP &1caf ; remove_fire # Play sound for destroying enemy or tile ; consider_if_fire_hit_enemy &1d6f a5 67 LDA &67 ; y &1d71 c5 87 CMP &87 ; fire_y &1d73 b0 9e BCS &1d13 ; consider_next_enemy &1d75 18 CLC &1d76 69 18 ADC #&18 &1d78 c5 87 CMP &87 ; fire_y &1d7a 30 97 BMI &1d13 ; consider_next_enemy ; fire_hit_enemy &1d7c a9 01 LDA #&01 # Score 5 credits and 100 points for destroying enemy &1d7e 85 89 STA &89 ; score_to_add &1d80 a9 18 LDA #&18 &1d82 85 79 STA &79 ; sprite_size &1d84 20 8a 1d JSR &1d8a ; explode_double_enemies &1d87 4c 67 1d JMP &1d67 ; play_sound_and_remove_fire ; explode_double_enemies &1d8a 86 bf STX &bf ; tmp_x &1d8c 20 53 1e JSR &1e53 ; explode_enemy &1d8f bd e2 0f LDA &0fe2,X ; enemies_type # Was the enemy destroyed half of a double enemy? &1d92 c9 1d CMP #&1d ; ENEMY_TYPE_LAST_DOUBLE + 1 &1d94 b0 22 BCS &1db8 ; leave_after_restoring_x &1d96 c9 19 CMP #&19 ; ENEMY_TYPE_FIRST_DOUBLE &1d98 30 1e BMI &1db8 ; leave_after_restoring_x &1d9a a0 00 LDY #&00 ; explode_double_enemies_loop # If so, destroy other half &1d9c b9 e2 0f LDA &0fe2,Y ; enemies_type &1d9f c9 1d CMP #&1d ; ENEMY_TYPE_LAST_DOUBLE + 1 &1da1 b0 10 BCS &1db3 ; consider_next_enemy &1da3 c9 19 CMP #&19 ; ENEMY_TYPE_FIRST_DOUBLE &1da5 30 0c BMI &1db3 ; consider_next_enemy &1da7 b9 97 00 LDA &0097,Y ; enemies_direction &1daa c9 09 CMP #&09 ; ENEMY_DIRECTION_EXPLODING &1dac b0 05 BCS &1db3 ; consider_next_enemy &1dae 98 TYA &1daf aa TAX &1db0 20 53 1e JSR &1e53 ; explode_enemy ; consider_next_enemy &1db3 c8 INY &1db4 c0 06 CPY #&06 &1db6 30 e4 BMI &1d9c ; explode_double_enemies_loop ; leave_after_restoring_x &1db8 a6 bf LDX &bf ; tmp_x &1dba 60 RTS ; write_object_description &1dbb 86 63 STX &63 ; tmp_x &1dbd bd 00 0d LDA &0d00,X ; objects_type &1dc0 aa TAX &1dc1 a9 45 LDA #&45 ; &7445 = object_descriptions - &b &1dc3 85 60 STA &60 ; description_address_low &1dc5 a9 74 LDA #&74 &1dc7 85 61 STA &61 ; description_address_high ; calculate_description_address_loop &1dc9 a9 0b LDA #&0b &1dcb 20 69 11 JSR &1169 ; add_to_sprite_address # Actually add to description_address &1dce ca DEX &1dcf e0 ff CPX #&ff &1dd1 d0 f6 BNE &1dc9 ; calculate_description_address_loop &1dd3 a0 00 LDY #&00 ; copy_description_loop &1dd5 b1 60 LDA (&60),Y ; description_address &1dd7 99 07 06 STA &0607,Y ; text_string &1dda c8 INY &1ddb c0 0b CPY #&0b &1ddd d0 f6 BNE &1dd5 ; copy_description_loop &1ddf a9 0d LDA #&0d ; CR &1de1 99 07 06 STA &0607,Y ; text_string &1de4 a9 13 LDA #&13 &1de6 8d 4c 04 STA &044c ; text_x (S%) &1de9 a9 02 LDA #&02 &1deb 8d 54 04 STA &0454 ; text_colour (U%) &1dee a9 80 LDA #&80 &1df0 20 fd 1d JSR &1dfd ; plot_text_at_A &1df3 a6 63 LDX &63 ; tmp_x &1df5 60 RTS ; plot_text (B%) &1df6 ad 50 04 LDA &0450 ; text_y (T%) &1df9 18 CLC &1dfa 2a ROL A &1dfb 2a ROL A &1dfc 2a ROL A ; plot_text_at_A &1dfd 85 67 STA &67 ; y &1dff ad 4c 04 LDA &044c ; text_x (S%) &1e02 85 66 STA &66 ; x &1e04 20 01 11 JSR &1101 ; calculate_screen_address &1e07 ac 54 04 LDY &0454 ; text_colour (U%) &1e0a ea NOP &1e0b b9 dc 6e LDA &6edc,Y ; text_colour_masks &1e0e 85 62 STA &62 ; mask &1e10 a2 00 LDX #&00 ; plot_text_loop &1e12 a9 00 LDA #&00 &1e14 85 60 STA &60 ; font_address_low &1e16 a9 10 LDA #&10 ; &1000 = font_letters &1e18 85 61 STA &61 ; font_address_high &1e1a bd 07 06 LDA &0607,X ; text_string &1e1d a8 TAY &1e1e c0 3a CPY #&3a ; "9" + 1 &1e20 b0 0c BCS &1e2e ; is_letter ; is_number &1e22 a9 0c LDA #&0c ; &0c00 = font_numbers &1e24 85 61 STA &61 ; font_address_high &1e26 98 TYA &1e27 38 SEC &1e28 e9 30 SBC #&30 ; "0" &1e2a a8 TAY &1e2b 4c 33 1e JMP &1e33 ; plot_character ; is_letter &1e2e 98 TYA &1e2f 38 SEC &1e30 e9 40 SBC #&40 ; "@" &1e32 a8 TAY ; plot_character &1e33 18 CLC &1e34 98 TYA &1e35 2a ROL A &1e36 2a ROL A &1e37 2a ROL A &1e38 85 60 STA &60 ; font_address_low &1e3a a0 00 LDY #&00 ; plot_character_loop &1e3c b1 60 LDA (&60),Y ; font_address &1e3e 25 62 AND &62 ; mask &1e40 91 69 STA (&69),Y ; screen_address &1e42 c8 INY &1e43 c0 08 CPY #&08 &1e45 d0 f5 BNE &1e3c ; plot_character_loop &1e47 20 2d 11 JSR &112d ; move_right_four_pixels &1e4a e8 INX &1e4b bd 07 06 LDA &0607,X ; text_string &1e4e c9 0d CMP #&0d ; CR &1e50 d0 c0 BNE &1e12 ; plot_text_loop &1e52 60 RTS ; explode_enemy &1e53 8c 09 01 STY &0109 ; tmp_y &1e56 a9 09 LDA #&09 ; ENEMY_DIRECTION_EXPLODING &1e58 95 97 STA &97,X ; enemies_direction &1e5a 20 c5 1a JSR &1ac5 ; plot_explosion &1e5d ac 09 01 LDY &0109 ; tmp_y &1e60 60 RTS ; consider_adding_enemy &1e61 20 a6 14 JSR &14a6 ; rnd &1e64 29 03 AND #&03 # Pick one of first four enemy slots at random &1e66 aa TAX &1e67 b5 97 LDA &97,X ; enemies_direction &1e69 c9 0b CMP #&0b ; ENEMY_DIRECTION_GONE &1e6b f0 01 BEQ &1e6e ; add_enemy # Add an enemy if the slot is empty ; leave &1e6d 60 RTS ; add_enemy &1e6e ad be 08 LDA &08be ; generator_x &1e71 95 8b STA &8b,X ; enemies_x &1e73 ad bf 08 LDA &08bf ; generator_y &1e76 95 91 STA &91,X ; enemies_y &1e78 20 a6 14 JSR &14a6 ; rnd &1e7b 29 03 AND #&03 # Set random enemy type &1e7d 9d e2 0f STA &0fe2,X ; enemies_type &1e80 a9 01 LDA #&01 # Set to non-zero to indicate enemy is newly added &1e82 85 b2 STA &b2 ; enemy_is_new &1e84 20 d6 1a JSR &1ad6 ; check_for_collision_with_other_enemies # Returns carry set if collision &1e87 b0 e4 BCS &1e6d ; leave # Don't add enemy if collision occurred &1e89 20 e7 18 JSR &18e7 ; set_random_enemy_direction &1e8c a2 90 LDX #&90 ; &0190 = sound_4 &1e8e 4c 9f 14 JMP &149f ; play_sound # Play sound for new enemy ; get_top_nibble &1e91 18 CLC &1e92 29 f0 AND #&f0 &1e94 6a ROR A &1e95 6a ROR A &1e96 6a ROR A &1e97 6a ROR A &1e98 18 CLC &1e99 60 RTS ; get_byte_of_room_data &1e9a a4 63 LDY &63 ; room_data_offset &1e9c b1 5c LDA (&5c),Y ; room_data_address &1e9e c8 INY &1e9f 84 63 STY &63 ; room_data_offset &1ea1 60 RTS ; initialise_room (Z%) &1ea2 a0 00 LDY #&00 &1ea4 8c e1 0f STY &0fe1 ; room_has_generator # Set to zero to indicate no generator in room &1ea7 84 85 STY &85 ; fire_present # Set to zero to indicate player isn't firing &1ea9 84 63 STY &63 ; room_data_offset &1eab a9 18 LDA #&18 &1ead 85 79 STA &79 ; sprite_size &1eaf 84 b7 STY &b7 ; repeat_room_sprite &1eb1 a9 01 LDA #&01 ; DIRECTION_LEFT # Plot sprites unflipped by default &1eb3 85 b2 STA &b2 ; room_sprite_flip ; reset_enemies_loop &1eb5 a9 0b LDA #&0b ; ENEMY_DIRECTION_GONE &1eb7 99 97 00 STA &0097,Y ; enemies_direction # Remove all enemies &1eba a9 00 LDA #&00 &1ebc 99 8a 77 STA &778a,Y ; enemies_horizontal_cooldown &1ebf c8 INY &1ec0 c0 06 CPY #&06 &1ec2 d0 f1 BNE &1eb5 ; reset_enemies_loop &1ec4 a8 TAY ; reset_tile_table_loop &1ec5 99 00 0f STA &0f00,Y ; tile_table # Set all tiles to be empty by default &1ec8 c8 INY &1ec9 c0 a8 CPY #&a8 &1ecb d0 f8 BNE &1ec5 ; reset_tile_table_loop &1ecd 20 9a 1e JSR &1e9a ; get_byte_of_room_data # Get a byte of room data for generator, enemies, colour &1ed0 85 be STA &be ; first_byte &1ed2 29 80 AND #&80 # 8....... room has generator &1ed4 8d e1 0f STA &0fe1 ; room_has_generator &1ed7 f0 15 BEQ &1eee ; skip_adding_generator # If the top bit is set, &1ed9 20 9a 1e JSR &1e9a ; get_byte_of_room_data # Get a second byte of room data for generator position &1edc a8 TAY &1edd 29 0f AND #&0f # ........ ....8421 generator x &1edf aa TAX &1ee0 bd 50 0c LDA &0c50,X ; three_times_table &1ee3 8d be 08 STA &08be ; generator_x &1ee6 98 TYA &1ee7 29 f0 AND #&f0 # ........ 8421.... generator y &1ee9 18 CLC &1eea 6a ROR A &1eeb 8d bf 08 STA &08bf ; generator_y ; skip_adding_generator &1eee a5 be LDA &be ; first_byte &1ef0 29 07 AND #&07 # .....421 number of enemies &1ef2 85 b5 STA &b5 ; number_of_enemies &1ef4 a5 be LDA &be ; first_byte &1ef6 29 38 AND #&38 # ..218... room colour &1ef8 a8 TAY &1ef9 a2 00 LDX #&00 ; set_room_colour_loop &1efb b9 80 76 LDA &7680,Y ; room_colour_ula_data &1efe 9d ce 13 STA &13ce,X ; ula_palette_data &1f01 c8 INY &1f02 e8 INX &1f03 e0 08 CPX #&08 &1f05 d0 f4 BNE &1efb ; set_room_colour_loop ; add_enemies &1f07 a6 b5 LDX &b5 ; number_of_enemies &1f09 f0 36 BEQ &1f41 ; skip_adding_enemies ; add_enemies_loop &1f0b ca DEX &1f0c 20 9a 1e JSR &1e9a ; get_byte_of_room_data # Get two bytes of room data for each enemy &1f0f 85 6e STA &6e ; byte &1f11 29 0f AND #&0f # ....8421 ........ enemy x &1f13 a8 TAY &1f14 b9 50 0c LDA &0c50,Y ; three_times_table &1f17 95 8b STA &8b,X ; enemies_x &1f19 9d e8 0f STA &0fe8,X ; enemies_initial_x &1f1c a5 6e LDA &6e ; byte &1f1e 29 f0 AND #&f0 # 8421.... ........ enemy y &1f20 18 CLC &1f21 6a ROR A &1f22 95 91 STA &91,X ; enemies_y &1f24 9d ee 0f STA &0fee,X ; enemies_initial_y &1f27 20 9a 1e JSR &1e9a ; get_byte_of_room_data &1f2a a8 TAY &1f2b 29 1f AND #&1f # ........ ...18421 enemy type &1f2d 9d e2 0f STA &0fe2,X ; enemies_type &1f30 c9 1f CMP #&1f ; ENEMY_TYPE_BACKGROUND &1f32 d0 02 BNE &1f36 ; skip_offset &1f34 f6 8b INC &8b,X ; enemies_x ; skip_offset &1f36 98 TYA &1f37 20 91 1e JSR &1e91 ; get_top_nibble &1f3a 6a ROR A # ........ 842..... enemy direction &1f3b 18 CLC &1f3c 95 97 STA &97,X ; enemies_direction &1f3e 8a TXA &1f3f d0 ca BNE &1f0b ; add_enemies_loop ; skip_adding_enemies ; write_clear_room_loop &1f41 bd a8 0f LDA &0fa8,X ; clear_room_string # Clear screen &1f44 20 ee ff JSR &ffee ; OSWRCH &1f47 e8 INX &1f48 e0 07 CPX #&07 &1f4a d0 f5 BNE &1f41 ; write_clear_room_loop &1f4c 20 9a 1e JSR &1e9a ; get_byte_of_room_data # Get a byte of room data for room sprites &1f4f aa TAX &1f50 29 e0 AND #&e0 # 842..... sprite base &1f52 18 CLC &1f53 85 b4 STA &b4 ; room_sprite_base &1f55 8a TXA &1f56 29 1f AND #&1f # ...18421 number of sprites &1f58 aa TAX ; plot_room_sprites_loop &1f59 20 9a 1e JSR &1e9a ; get_byte_of_room_data # Get a byte of room data for sprite position or special &1f5c 85 6e STA &6e ; byte # ....8421 &0 - &b sprite x &1f5e 29 0f AND #&0f # &c set sprite base &1f60 c9 0c CMP #&0c ; ROOM_DATA_SET_SPRITE_BASE # &d toggle sprite repeat &1f62 b0 6d BCS &1fd1 ; process_special_byte # &e - &f toggle sprite flip &1f64 29 0f AND #&0f &1f66 a8 TAY &1f67 b9 50 0c LDA &0c50,Y ; three_times_table &1f6a 85 66 STA &66 ; x &1f6c a5 6e LDA &6e ; byte &1f6e 29 70 AND #&70 # .421.... sprite y &1f70 18 CLC &1f71 85 67 STA &67 ; y &1f73 a5 6e LDA &6e ; byte &1f75 29 80 AND #&80 &1f77 2a ROL A &1f78 2a ROL A &1f79 85 b5 STA &b5 ; low_bit_of_room_sprite &1f7b 20 9a 1e JSR &1e9a ; get_byte_of_room_data # Get a second byte of room data for sprite and count &1f7e 85 6e STA &6e ; byte &1f80 29 e0 AND #&e0 # 8....... 842..... sprite (first top bit is low bit) &1f82 20 91 1e JSR &1e91 ; get_top_nibble &1f85 65 b5 ADC &b5 ; low_bit_of_room_sprite &1f87 65 b4 ADC &b4 ; room_sprite_base &1f89 85 b6 STA &b6 ; room_sprite &1f8b 8d c8 20 STA &20c8 ; initial_room_sprite &1f8e 20 08 20 JSR &2008 ; calculate_room_sprite_address &1f91 a5 6e LDA &6e ; byte &1f93 29 1f AND #&1f # ........ ...18421 count (vertical if >= &0d) &1f95 85 bc STA &bc ; count &1f97 c9 0d CMP #&0d ; ROOM_DATA_SPRITE_VERTICAL &1f99 b0 43 BCS &1fde ; plot_column_of_sprites ; plot_row_of_sprites_loop &1f9b 20 1c 20 JSR &201c ; plot_room_sprite &1f9e e6 66 INC &66 ; x # Move right one tile &1fa0 e6 66 INC &66 ; x &1fa2 e6 66 INC &66 ; x &1fa4 c6 bc DEC &bc ; count &1fa6 a5 bc LDA &bc ; count &1fa8 c9 ff CMP #&ff &1faa d0 ef BNE &1f9b ; plot_row_of_sprites_loop ; consider_next_room_sprite &1fac 18 CLC &1fad ca DEX &1fae d0 a9 BNE &1f59 ; plot_room_sprites_loop &1fb0 20 29 57 JSR &5729 ; unplot_barriers &1fb3 a2 00 LDX #&00 &1fb5 20 8f 14 JSR &148f ; use_player_x_and_y &1fb8 20 01 11 JSR &1101 ; calculate_screen_address &1fbb 20 c1 1f JSR &1fc1 ; initialise_player_buffer &1fbe 20 c1 1f JSR &1fc1 ; initialise_player_buffer ; initialise_player_buffer &1fc1 a0 00 LDY #&00 ; initialise_player_buffer_loop &1fc3 b1 69 LDA (&69),Y ; screen_address &1fc5 9d 20 01 STA &0120,X ; player_buffer &1fc8 c8 INY &1fc9 e8 INX &1fca c0 20 CPY #&20 &1fcc d0 f5 BNE &1fc3 ; initialise_player_buffer_loop &1fce 4c 4b 11 JMP &114b ; move_down_a_group ; process_special_byte &1fd1 c9 0c CMP #&0c ; ROOM_DATA_SET_SPRITE_BASE &1fd3 d0 1d BNE &1ff2 ; process_special_byte_not_base # If low nibble of byte is &0c, &1fd5 a5 6e LDA &6e ; byte &1fd7 29 f0 AND #&f0 # 8421.... sprite base for subsequent sprites &1fd9 85 b4 STA &b4 ; room_sprite_base &1fdb 4c 59 1f JMP &1f59 ; plot_room_sprites_loop ; plot_column_of_sprites ; plot_column_of_sprites_loop &1fde 20 1c 20 JSR &201c ; plot_room_sprite &1fe1 a5 67 LDA &67 ; y &1fe3 18 CLC &1fe4 69 10 ADC #&10 &1fe6 85 67 STA &67 ; y &1fe8 c6 bc DEC &bc ; count &1fea a5 bc LDA &bc ; count &1fec c9 0c CMP #&0c ; ROOM_DATA_SPRITE_VERTICAL - 1 &1fee d0 ee BNE &1fde ; plot_column_of_sprites_loop &1ff0 f0 ba BEQ &1fac ; consider_next_room_sprite # Always branches ; process_special_byte_not_base &1ff2 c9 0d CMP #&0d ; ROOM_DATA_TOGGLE_REPEAT &1ff4 d0 09 BNE &1fff ; toggle_room_sprite_flip # If low nibble of byte is &0d, &1ff6 a5 b7 LDA &b7 ; repeat_room_sprite &1ff8 49 01 EOR #&01 # Toggle repeating of subsequent sprites &1ffa 85 b7 STA &b7 ; repeat_room_sprite &1ffc 4c 59 1f JMP &1f59 ; plot_room_sprites_loop ; toggle_room_sprite_flip # If low nibble of byte is &0e or &0f (unused) &1fff a5 b2 LDA &b2 ; room_sprite_flip &2001 49 03 EOR #&03 ; DIRECTION_RIGHT ^ DIRECTION_LEFT # Toggle flipping of subsequent sprites &2003 85 b2 STA &b2 ; room_sprite_flip &2005 4c 59 1f JMP &1f59 ; plot_room_sprites_loop ; calculate_room_sprite_address &2008 a8 TAY &2009 a9 d0 LDA #&d0 ; &3fd0 = room_sprites - &30 &200b 85 60 STA &60 ; sprite_address_low &200d a9 3f LDA #&3f &200f 85 61 STA &61 ; sprite_address_high ; calculate_room_sprite_address_loop &2011 88 DEY &2012 a9 30 LDA #&30 &2014 20 69 11 JSR &1169 ; add_to_sprite_address &2017 c0 ff CPY #&ff &2019 d0 f6 BNE &2011 ; calculate_room_sprite_address_loop &201b 60 RTS ; plot_room_sprite &201c ad c8 20 LDA &20c8 ; initial_room_sprite &201f c9 80 CMP #&80 &2021 b0 3b BCS &205e ; plot_large_room_sprite # If top bit set, plot large (group of four) sprite &2023 a5 b2 LDA &b2 ; room_sprite_flip # Otherwise, plot single sprite &2025 85 78 STA &78 ; sprite_flip ; plot_room_sprite_and_set_tiles &2027 20 87 11 JSR &1187 ; plot_sprite # Plot top of room sprite &202a 20 4b 11 JSR &114b ; move_down_a_group &202d a9 18 LDA #&18 &202f 20 69 11 JSR &1169 ; add_to_sprite_address &2032 20 8a 11 JSR &118a ; plot_sprite_at_existing_screen_address # Plot bottom of room sprite &2035 20 6b 14 JSR &146b ; calculate_tile_offset &2038 84 b8 STY &b8 ; offset &203a a4 b6 LDY &b6 ; room_sprite &203c b9 80 0d LDA &0d80,Y ; sprite_to_tile_table &203f 85 ba STA &ba ; two_tiles &2041 29 0f AND #&0f &2043 a4 b8 LDY &b8 ; offset &2045 99 00 0f STA &0f00,Y ; tile_table # Set tile table for top of room sprite &2048 a5 ba LDA &ba ; two_tiles &204a 20 91 1e JSR &1e91 ; get_top_nibble &204d 99 0c 0f STA &0f0c,Y ; tile_table + 12 # Set tile table for bottom of room sprite &2050 a5 b7 LDA &b7 ; repeat_room_sprite &2052 f0 05 BEQ &2059 ; use_same_sprite_next_time &2054 a9 18 LDA #&18 # Use next sprite for next plot &2056 4c 69 11 JMP &1169 ; add_to_sprite_address ; use_same_sprite_next_time &2059 a9 18 LDA #&18 # Restore previous sprite address &205b 4c 76 11 JMP &1176 ; subtract_from_sprite_address # i.e. use same sprite for next plot ; plot_large_room_sprite &205e 38 SEC &205f e9 80 SBC #&80 &2061 85 b3 STA &b3 ; room_sprite_set &2063 a8 TAY &2064 b9 80 6e LDA &6e80,Y ; large_room_sprites_top_left_table &2067 20 aa 20 JSR &20aa ; plot_part_of_large_room_sprite # Plot top left sprite &206a e6 66 INC &66 ; x # Move right a tile &206c e6 66 INC &66 ; x &206e e6 66 INC &66 ; x &2070 b9 e0 6e LDA &6ee0,Y ; large_room_sprites_top_right_table &2073 20 aa 20 JSR &20aa ; plot_part_of_large_room_sprite # Plot top right sprite &2076 c6 66 DEC &66 ; x # Move left a tile &2078 c6 66 DEC &66 ; x &207a c6 66 DEC &66 ; x &207c a5 67 LDA &67 ; y &207e 18 CLC &207f 69 10 ADC #&10 # Move down a tile &2081 85 67 STA &67 ; y &2083 b9 40 6f LDA &6f40,Y ; large_room_sprites_bottom_left_table &2086 20 aa 20 JSR &20aa ; plot_part_of_large_room_sprite # Plot bottom left sprite &2089 e6 66 INC &66 ; x # Move right a tile &208b e6 66 INC &66 ; x &208d e6 66 INC &66 ; x &208f b9 a0 6f LDA &6fa0,Y ; large_room_sprites_bottom_right_table &2092 20 aa 20 JSR &20aa ; plot_part_of_large_room_sprite # Plot bottom right sprite &2095 a5 bc LDA &bc ; count &2097 c9 0d CMP #&0d ; ROOM_DATA_SPRITE_VERTICAL &2099 b0 08 BCS &20a3 ; move_left_a_tile ; move_up_a_tile # If plotting a horizontal line of sprites, &209b a5 67 LDA &67 ; y &209d 38 SEC &209e e9 10 SBC #&10 # move up a tile (to make horizontal) &20a0 85 67 STA &67 ; y &20a2 60 RTS ; move_left_a_tile # If plotting a vertical line of sprites, &20a3 c6 66 DEC &66 ; x # move left a tile (to make vertical) &20a5 c6 66 DEC &66 ; x &20a7 c6 66 DEC &66 ; x &20a9 60 RTS ; plot_part_of_large_room_sprite &20aa 85 b6 STA &b6 ; room_sprite &20ac c9 ff CMP #&ff ; ROOM_SPRITE_NONE # Don't plot sprite if &ff &20ae f0 15 BEQ &20c5 ; leave_after_restoring_y &20b0 29 80 AND #&80 # If top bit set, plot sprite flipped &20b2 18 CLC &20b3 2a ROL A &20b4 2a ROL A &20b5 85 78 STA &78 ; sprite_flip &20b7 e6 78 INC &78 ; sprite_flip ; DIRECTION_RIGHT - 1 &20b9 a5 b6 LDA &b6 ; room_sprite &20bb 29 7f AND #&7f # Remaining bits determine sprite to plot &20bd 85 b6 STA &b6 ; room_sprite &20bf 20 08 20 JSR &2008 ; calculate_room_sprite_address &20c2 20 27 20 JSR &2027 ; plot_room_sprite_and_set_tiles ; leave_after_restoring_y &20c5 a4 b3 LDY &b3 ; room_sprite_set &20c7 60 RTS ; initial_room_sprite &20c8 ea ; unused &20c9 00 00 ; unhelpful_strings &20cb 54 4f 40 53 50 4f 49 4c 40 59 4f 55 52 40 46 55 ; "TO@SPOIL@YOUR@FUN^" &20db 4e 5e 0d &20de 49 40 57 49 53 48 40 49 40 43 4f 55 4c 44 5d 5d ; "I@WISH@I@COULD]]" &20ee 0d 00 00 &20f1 57 48 59 40 53 48 4f 55 4c 44 40 49 5e 0d 00 ; "WHY@SHOULD@I^" # &2100 - &2bfe is read from OMEGAORB6 ; OMEGAORB6 ; 002100 002120 000aff ; BASIC &2100 0d # Start of BASIC program &2101 00 00 0a ee 85 d6 21 2d 34 0d ; 0ONERRORCALL!-4 # Reset system on error &210b 00 01 72 d6 47 25 3a f5 21 26 36 46 33 43 3d 30 ; 1CALLG%: # CALL initialise_memory &211b 3a d6 26 37 38 38 30 3a f2 62 3a 52 25 3d 30 3a ; REPEAT # REPEAT (new game loop) &212b f5 48 25 3d 48 25 2d 31 3a 3f 58 25 3d 45 25 3a ; !&6F3C=0: # Reset vertical_barriers_state &213b 3f 59 25 3d 46 25 3a f2 53 3a f2 6e 28 34 2c 31 ; CALL&7880: # CALL reset_new_game &214b 35 2c 31 2c 47 25 29 3a f2 6e 28 34 2c 31 36 2c ; PROCb: # PROClogo &215b 31 2c 49 25 29 3a f2 70 28 31 31 2c 31 36 2c 31 ; R%=0: # done_animation = 0 &216b 2c bd 48 25 29 3a e7 52 25 3d 30 d6 26 37 30 30 ; REPEAT # REPEAT (new life loop) &217b 30 0d ; H%=H%-1: # lives -= 1 ; ?X%=E%: # ?player_x = initial_player_x ; ?Y%=F%: # ?player_y = initial_player_y ; PROCS: # PROCroom ; PROCn(4,15,1,G%): # PROCnumber(4, 15, 1, score) ; PROCn(4,16,1,I%): # PROCnumber(4, 16, 1, credits) ; PROCp(11,16,1,CHR$H%): # PROCtext(11, 16, 1, CHR$ lives) ; IFR%=0CALL&7000 # IF done_animation = 0 CALL start_animation &217d 00 04 8c f5 d6 41 25 3a e7 3f 4b 25 3e 31 30 e4 ; 4REPEAT # REPEAT (main game loop) &218d 3f 4b 25 3a e7 3f 4b 25 3e 31 30 3a 3f 4b 25 3d ; CALLA%: # CALL update_player &219d 30 8b e7 3f 31 33 37 49 25 3d 49 25 2b 35 3a 47 ; IF?K%>10GOSUB?K%: # IF ?player_state > PLAYER_DEAD GOSUB ?player_state &21ad 25 3d 47 25 2b 28 31 30 30 80 3f 31 33 37 3d 31 ; IF?K%>10: # IF ?player_state > PLAYER_DEAD &21bd 29 2b 28 31 37 35 80 3f 31 33 37 3d 32 29 3a f2 ; ?K%=0 # ?player_state = PLAYER_OK &21cd 6e 28 34 2c 31 35 2c 31 2c 47 25 29 3a f2 6e 28 ; ELSEIF?137 # ELSEIF ?score_to_add &21dd 34 2c 31 36 2c 31 2c 49 25 29 8b e7 a6 2d 35 32 ; I%=I%+5 # credits += 5 &21ed 48 25 3d 34 38 3a 3f 4b 25 3d 31 30 8b e7 a6 2d ; G%=G%+(100AND?137=1) # score += (100 AND ?score_to_add = 1) &21fd 31 30 36 f5 fd a6 30 3d 31 32 37 0d ; +(175AND?137=2) # + (175 AND ?score_to_add = 2) ; PROCn(4,15,1,G%): # PROCnumber(4, 15, 1, score) ; PROCn(4,16,1,I%) # PROCnumber(4, 16, 1, credits) ; ELSEIFINKEY-52 # ELSEIF INKEY(-52) (R pressed) ; H%=48: # lives = "0" ; ?K%=10 # ?player_state = PLAYER_DEAD ; ELSEIFINKEY-106 # ELSEIF INKEY(-106) (COPY pressed) ; REPEATUNTILINKEY0=12 # REPEAT UNTIL INKEY(0)=12 (DELETE pressed) &2209 00 07 c1 fd 3f 4b 25 3d 31 30 3a d6 26 37 38 39 ; 7UNTIL?K%=10: # UNTIL ?player_state = PLAYER_DEAD (main game loop) &2219 36 3a 52 25 3d 31 3a 3f 31 33 38 3d 31 32 30 3a ; CALL&7896: # CALL reset_drain_energy_string &2229 f1 24 26 38 41 30 3a 3f 4b 25 3d 30 3a e3 4c 25 ; R%=1: # done_animation = 1 &2239 3d 31 34 b8 30 88 2d 31 3a f2 70 28 31 34 2c 31 ; ?138=120: # ?player_energy = 120 &2249 35 2c 4c 25 83 34 2c 22 42 4c 49 50 40 22 2b bd ; PRINT$&8A0: # PRINT reset_energy_string &2259 48 25 2b 22 40 45 58 50 49 52 45 44 5d 22 29 3a ; ?K%=0: # ?player_state = PLAYER_OK &2269 d4 31 2c 33 2c 4c 25 2a 34 2c 32 3a d4 32 2c 32 ; FORL%=14TO0STEP-1: # FOR count = 14 TO 0 STEP -1 &2279 2c 4c 25 2a 34 2c 32 3a ed 3a d4 31 2c 31 2c 31 ; PROCp(14,15,L%MOD4, # PROCtext(14, 15, count MOD 4, &2289 30 30 2c 32 30 3a d4 32 2c 31 2c 31 32 38 2c 32 ; "BLIP@"+CHR$H%+ # "BLIP@" + CHRS$ lives + &2299 30 3a 53 25 3d a6 31 35 30 3a fd 48 25 3d 34 38 ; "@EXPIRED]"): # ""@EXPIRED]") &22a9 3a 21 58 25 3d 36 31 34 38 3a 21 26 35 43 3d 26 ; SOUND1,3,L%*4,2: # SOUND 1, 3, count * 4, 2 &22b9 36 32 30 3a 3f 31 30 39 3d 32 35 34 3a d6 5a 25 ; SOUND2,2,L%*4,2: # SOUND 2, 2, count * 4, 2 &22c9 0d ; NEXT: # NEXT ; SOUND1,1,100,20: # SOUND 1, 1, 100, 20 ; SOUND2,1,128,20: # SOUND 2, 1, 128, 20 ; S%=INKEY150: # null = INKEY(150) ; UNTILH%=48: # UNTIL lives = "0" (new life loop) ; !X%=6148: # ?player_x = 4 : ?player_y = 24 ; !&5C=&620: # !room_data_address = score_room_data ; ?109=254: # ?player_room = 254 ; CALLZ% # CALL initialise_room &22ca 00 09 7b f2 70 28 31 34 2c 32 2c 33 2c 24 26 37 ; 9PROCp(14,2,3,$&7C40): # PROCtext(14, 2, 3, omega_orb_string) &22da 43 34 30 29 3a f2 70 28 31 34 2c 33 2c 31 2c 24 ; PROCp(14,3,1,$&7C4A): # PROCtext(14, 3, 1, by_p_scott_string) &22ea 26 37 43 34 41 29 3a f2 70 28 32 31 2c 31 31 2c ; PROCp(21,11,3,"HIT@A@KEY"): # PROCtext(21, 11, 3, "HIT@A@KEY") &22fa 33 2c 22 48 49 54 40 41 40 4b 45 59 22 29 3a f2 ; PROCp(14,6,2,FNp): # PROCtext(14, 6, 2, FNseen) &230a 70 28 31 34 2c 36 2c 32 2c a4 70 29 3a f2 70 28 ; PROCp(14,8,2,FNc): # PROCtext(14, 8, 2, FNcore) &231a 31 34 2c 38 2c 32 2c a4 63 29 3a 3f 26 31 31 30 ; ?&1100=1: # ?suppress_player_input = 1 &232a 30 3d 31 3a f5 d6 41 25 3a fd a6 30 3e 30 3a 3f ; REPEAT # REPEAT (game over screen loop) &233a 26 31 31 30 30 3d 30 3a fd 30 0d ; CALL A%: # CALL update_player ; UNTILINKEY0>0: # UNTIL INKEY 0 > 0 (any key pressed) ; ?&1100=0: # ?suppress_player_input = 0 ; UNTIL0 # UNTIL 0 (new game loop) ; # When player_state = PLAYER_CHANGED_ROOM, &2345 00 32 1b e7 43 25 3d 32 35 35 43 25 3d 31 33 8b ; 50IFC%=255 # IF player_room_x = 255 &2355 e7 43 25 3d 31 34 43 25 3d 30 0d ; C%=13 # player_room_x = 13 ; ELSEIFC%=14 # ELSEIF player_room_x = 14 ; C%=0 # player_room_x = 0 &2360 00 38 08 f2 53 3a f8 0d ; 56PROCS: # PROCroom ; RETURN # RETURN ; # When player_state = PLAYER_ENTERED_TERMINAL &2368 00 3c 58 e7 3f 26 35 41 3e 32 37 d6 26 37 43 31 ; 60IF?&5A>27 # IF ?terminal_number > 27 &2378 30 3a e3 4c 25 3d 30 b8 31 35 3a ef 33 31 2c 30 ; CALL&7C10: # CALL define_text_window_for_terminal &2388 2c 3f 26 35 46 2c 31 30 3a d4 31 36 2c 2d 36 2c ; FORL%=0TO15: # FOR count = 0 TO 15 &2398 34 2c 33 3a 53 25 3d a6 39 3a ed 3a ef 32 36 3a ; VDU31,0,?&5F, # VDU 31, 0, ?terminal_bottom, (tab) &23a8 d6 26 35 37 31 30 3a f2 53 3a d4 31 39 2c 34 2c ; 10: # 10 (cursor down) &23b8 32 30 30 2c 31 3a f8 0d ; SOUND16,-6,4,3: # SOUND 16, -6, 4, 3 ; S%=INKEY9: # null = INKEY(9) ; NEXT: # NEXT ; VDU26: # VDU 26 (restore default windows) ; CALL&5710: # CALL teleport_player ; PROCS: # PROCroom ; SOUND19,4,200,1: # SOUND 19, 4, 200, 1 ; RETURN # RETURN &23c0 00 41 8a e7 a4 64 28 31 30 30 29 f2 70 28 31 34 ; 65IFFNd(100) # IF FNcost(100) &23d0 2c 31 35 2c 33 2c 24 26 37 30 39 37 29 3a d4 31 ; PROCp(14,15,3,$&7097): # PROCtext(14, 15, 3, no_entry_string) &23e0 37 2c 2d 39 2c 30 2c 35 3a f8 20 8b e3 4c 25 3d ; SOUND17,-9,0,5: # SOUND 17, -9, 0, 5 &23f0 30 b8 33 3a d4 31 2c 34 2c 4c 25 3f 26 37 35 34 ; RETURN # RETURN &2400 43 2c 4c 25 3f 26 37 35 35 30 3a ed 3a f1 24 4e ; ELSE # ELSE &2410 25 3a f2 70 28 31 34 2c 31 36 2c 33 2c 22 54 45 ; FORL%=0TO3: # FOR note = 0 TO 3 &2420 52 4d 49 4e 41 4c 5c 22 2b c3 3f 26 35 41 29 3a ; SOUND1,4,L%?&754C,L%?&7550: # SOUND 1, 4, ?(terminal_tune_pitch + note), ?(terminal_tune_duration + note) &2430 57 25 3d 31 30 2b 28 3f 26 35 41 3c 32 30 29 2b ; NEXT: # NEXT &2440 28 3f 26 35 41 3c 31 36 29 0d ; PRINT$N%: # PRINT $clear_logo_string ; PROCp(14,16,3,"TERMINAL\" # PROCtext(14, 16, 3, "TERMINAL\" ; +STR$?&5A): # +STR$ ?terminal_number) ; W%=10 # maximum_routine = 10 ; +(?&5A<20) # + (?terminal_number < 20) ; +(?&5A<16) # + (?terminal_number < 16) &244a 00 46 4f f1 24 26 37 30 46 30 3a f2 70 28 31 34 ; 70PRINT$&70F0: # PRINT $clear_status_section_text &245a 2c 31 36 2c 31 2c 22 5b 5f 22 29 3a f2 69 28 31 ; PROCp(14,16,1,"[_"): # PROCtext(14, 16, 1, "[_") &246a 35 2c 31 36 2c 31 33 29 3a 52 25 3d 2d 31 3a e3 ; PROCi(15,16,13): # PROCinput(15, 16, 13) &247a 4c 25 3d 30 b8 57 25 3a e7 43 24 3d 24 28 4c 25 ; R%=-1: # use_routine = -1 &248a 2a 37 2b 26 37 30 41 33 29 52 25 3d 4c 25 0d ; FORL%=0TOW%: # FOR routine = 0 TO maximum_routine ; IFC$= # IF input = ; $(L%*7+&70A3) # $(command_strings + routine * 7) ; R%=L% # use_routine = routine &2499 00 50 3a ed 3a e7 52 25 3e 2d 31 d4 31 2c 2d 39 ; 80NEXT: # NEXT &24a9 2c 32 32 30 2c 31 3a e5 28 33 30 30 30 2b 52 25 ; IFR%>-1 # IF use_routine > -1 &24b9 2a 31 30 29 8b e7 43 24 3d 22 51 55 49 54 22 f2 ; SOUND1,-9,220,1: # SOUND 1, -9, 220, 1 &24c9 62 3a f8 20 8b 8d 44 46 40 0d ; GOTO(3000+R%*10) # GOTO(3000 + use_routine * 10) ; ELSEIFC$="QUIT" # ELSEIF C$ = "QUIT" ; PROCb: # PROClogo ; RETURN # RETURN ; ELSE70 # ELSE GOTO 70 &24d3 00 be 38 dd a4 64 28 53 25 29 54 25 3d 49 25 3a ; 190DEFFNd(S%) # DEFFNcost(cost) &24e3 49 25 3d 49 25 2d 53 25 3a e7 49 25 3c 30 49 25 ; T%=I%: # previous_credits = credits &24f3 3d 54 25 3a 3d 31 8b f2 6e 28 34 2c 31 36 2c 31 ; I%=I%-S%: # credits -= cost &2503 2c 49 25 29 3a 3d 30 0d ; IFI%<0 # IF credits < 0 ; I%=T%: # credits = previous_credits ; =1 # = 1 ; ELSE # ELSE ; PROCn(4,16,1,I%): # PROCn(4, 16, 1, credits) ; =0 # = 0 &250b 00 c8 21 dd f2 62 3a f1 24 4e 25 24 26 37 35 33 ; 200DEFPROCb: # DEFPROCcarrying: &251b 37 3a e7 3f 4a 25 3e 32 30 3a 3f 4a 25 3d 32 30 ; PRINT$N # PRINT $clear_logo_string &252b 0d ; $&7537: # $logo_string ; IF?J%>20: # IF ?carried_object > 20 ; ?J%=20 # ?carried_object = 20 &252c 00 cd 35 f2 70 28 31 34 2c 31 36 2c 33 2c 22 57 ; 205PROCp(14,16,3,"WITH\"): # PROCtext(14, 16, 3, "WITH\") &253c 49 54 48 5c 22 29 3a f2 70 28 31 39 2c 31 36 2c ; PROCp(19,16,2, # PROCtext(19, 16, 2, &254c 32 2c 24 28 26 37 34 35 30 2b 31 31 2a 3f 4a 25 ; $(&7450+11*?J%)): # $(object_descriptions + 11 * ?carried_object) &255c 29 29 3a e1 0d ; ENDPROC # ENDPROC &2561 03 e8 5a dd f2 53 3a 3f 31 30 39 3d 43 25 2b 44 ; 1000DEFPROCS: # DEFPROCroom &2571 25 2a 31 34 3a 3f 31 30 34 3d 3f 28 26 45 30 30 ; ?109=C%+D%*14: # ?player_room = player_x + player_y * 14 &2581 2b 3f 31 30 39 29 80 31 32 37 3a e7 3f 31 30 34 ; ?104=?(&E00+?109)AND127: # ?room_type = ?(room_types + ?player_room) AND 127 &2591 3c 39 35 53 25 3d 26 32 43 35 30 2b 34 38 2a 3f ; IF?104<95 # IF ?room_type < &5f &25a1 31 30 34 8b 53 25 3d 26 33 45 32 30 2b 33 32 2a ; S%=&2C50+48*?104 # new_room_address = (room_type_02_data - 2 * 48) + 48 * ?room_type &25b1 28 3f 31 30 34 2d 39 35 29 0d ; ELSE # ELSE ; S%=&3E20+32*(?104-95) # new_room_address = room_type_5f_data + 32 * (?room_type - &5f) &25bb 03 f2 34 d6 26 35 37 41 39 3a e7 3f 31 30 34 3d ; 1010CALL&57A9: # CALL change_room &25cb 35 38 f2 70 28 35 2c 31 2c 33 2c 24 26 37 46 32 ; IF?104=58 # IF ?room_type = 58 &25db 38 29 3a f2 70 28 35 2c 33 2c 33 2c 24 26 37 46 ; PROCp(5,1,3,$&7F28): # PROCtext(5, 1, 3, now_showing_string) &25eb 33 34 29 0d ; PROCp(5,3,3,$&7F34) # PROCtext(5, 3, 3, thunderstruck_iii_string) &25ef 03 fc 29 3f 26 37 31 44 44 3d 34 31 80 3f 26 38 ; 1020?&71DD=41 # ?(terminals_room_type + &1d) = 41 &25ff 39 31 3e 30 3a 3f 26 37 31 44 43 3d 39 31 80 3f ; AND?&891>0: # AND ?(objects_used + &11) > 0 &260f 26 38 39 30 3e 30 3a e1 0d ; ?&71DC=91 # ?(terminals_room_type + &1c) = 91 ; AND?&890>0: # AND ?(objects_used + &10) > 0 ; ENDPROC # ENDPROC &2618 07 6c 68 dd f2 69 28 56 25 2c 57 25 2c 52 25 29 ; 1900DEFPROCi(V%, # DEFPROCinput(input_x, &2628 43 24 3d 22 22 3a e3 4c 25 3d 30 b8 52 25 3a 54 ; W%, # input_y, &2638 25 3d a5 3a ef 37 3a e7 54 25 3e 34 37 80 54 25 ; R%) # length) &2648 3c 35 38 84 54 25 3e 36 34 80 54 25 3c 39 31 43 ; C$="": # input = "" &2658 24 3d 43 24 2b bd 54 25 3a f2 70 28 56 25 2c 57 ; FORL%=0TOR%: # FOR count = 0 TO length &2668 25 2c 31 2c 43 24 2b 22 5f 22 29 8b e7 54 25 3d ; T%=GET: # char = GET &2678 31 33 4c 25 3d 52 25 0d ; VDU7: # VDU 7 (bell) ; IFT%>47ANDT%<58 # IF char >= "0" AND char <= "9" ; ORT%>64ANDT%<91 # OR char >= "A" and char <= "Z" ; C$=C$+CHR$T%: # input += CHR$ char ; PROCp(V%,W%,1,C$+"_") # PROCtext(input_x, input_y, 1, input + "_") ; ELSEIFT%=13 # ELSE IF char = CR ; L%=R% # count = length &2680 07 76 1a ed 3a f2 70 28 56 25 2c 57 25 2c 31 2c ; 1910NEXT # NEXT &2690 43 24 2b 22 40 22 29 3a e1 0d ; PROCp(V%,W%,1,C$+"@"): # PROCtext(input_x, input_y, 1, input + "@") ; ENDPROC # &269a 07 d0 1c dd f2 70 28 53 25 2c 54 25 2c 55 25 2c ; 2000DEFPROCp(S%, # DEFPROCtext(text_x, &26aa 24 26 36 30 37 29 d6 42 25 3a e1 0d ; T%, # text_y, ; U%, # text_colour ; $&607) # $text_string) ; CALLB%: # CALL plot_text ; ENDPROC # ENDPROC &26b6 07 da 35 dd f2 6e 28 53 25 2c 54 25 2c 55 25 2c ; 2010DEFPROCn(S%, # DEFPROCnumber(text_x, &26c6 56 25 29 24 26 36 30 37 3d c0 22 30 30 30 30 30 ; T%, # text_y, &26d6 30 22 2c 36 2d a9 c3 56 25 29 2b c3 56 25 3a d6 ; U%, # text_colour, &26e6 42 25 3a e1 0d ; V%) # value) ; $&607=LEFT$( # $text_string = LEFT$( ; "000000", # "000000", ; 6-LENSTR$V%) # 6-LENSTR$ value) ; +STR$V%: # +STR$ value ; CALLB%: # CALL plot_text ; ENDPROC # ENDPROC ; # When "CORE" entered, &26eb 0b b8 a5 f2 70 28 31 34 2c 31 36 2c 33 2c a4 63 ; 3000PROCp(14,16,3,FNc): # PROCtext(14, 16, 3, FNcore) &26fb 29 3a e7 4d 25 3c 33 30 30 e5 8d 44 46 40 8b e3 ; IFM%<300 # IF collected < 300 &270b 4c 25 3d 30 b8 31 32 37 88 32 3a f2 70 28 31 34 ; GOTO70 # GOTO 70 &271b 2c 31 35 2c b3 28 33 29 2c 24 26 37 36 42 30 29 ; ELSE # ELSE &272b 3a d4 31 2c 31 2c 4c 25 2c 31 3a d4 32 2c 32 2c ; FORL%=0TO127STEP2: # FOR count = 0 TO 127 STEP 2 &273b 4c 25 81 34 2c 31 3a d4 33 2c 34 2c 4c 25 2c 31 ; PROCp(14,15,RND(3),$&76B0): # PROCtext(14, 15, RND(3), $task_completed_string) &274b 3a ed 3a 21 31 30 30 3d 26 35 30 31 39 3a 21 26 ; SOUND1,1,L%,1: # SOUND 1, 1, count, 1 &275b 35 43 3d 26 36 35 30 3a d6 5a 25 3a f2 70 28 33 ; SOUND2,2,L%DIV4,1: # SOUND 2, 2, count DIV 4, 1 &276b 2c 32 2c 31 2c 24 26 34 30 43 30 2b 22 40 40 40 ; SOUND3,4,L%,1: # SOUND 3, 4, count, 1 &277b 40 22 29 3a f2 70 28 33 2c 33 2c 31 2c 24 26 34 ; NEXT: # NEXT &278b 30 44 30 29 0d ; !100=&5019: # ?player_x = &19 : ?player_y = &50 ; !&5C=&650: # !room_data_address = completion_room_data ; CALLZ%: # CALL initialise_room ; PROCp(3,2,1,$&40C0+"@@@@"): # PROCtext(3, 2, 1, $welcome_back_to_string + "@@@@") ; PROCp(3,3,1,$&40D0) # PROCtext(3, 3, 1, $cyplex_blip_string) &2790 0b b9 b6 f2 70 28 33 2c 35 2c 33 2c 24 26 34 30 ; 3001PROCp(3,5,3,$&40DD): # PROCtext(3, 5, 3, $hero_of_our_times_string) &27a0 44 44 29 3a 3f 26 31 31 30 30 3d 31 3a e3 4c 25 ; ?&1100=1: # ?suppress_player_input = 1 &27b0 3d 30 b8 31 35 30 3a d6 41 25 3a ed 3a ef 32 38 ; FORL%=0TO150: # FOR count = 0 TO 150 &27c0 2c 31 33 2c 37 2c 31 35 2c 30 2c 31 32 3a e3 4c ; CALLA%: # CALL update_player &27d0 25 3d 30 b8 31 39 3a ef 32 38 2c 31 2c 31 33 2c ; NEXT: # NEXT &27e0 31 32 2c 30 2c 31 31 2c 32 38 2c 31 36 2c 31 33 ; VDU28,13,7,15,0,12: # VDU 28, 13, 7, 5, 0, 12 (define text window, CLS) &27f0 2c 31 38 2c 30 2c 31 31 3a d6 41 25 3a d4 31 36 ; FORL%=0TO19: # FOR count = 0 TO 19 &2800 2c 2d 31 30 2c 31 30 31 2c 33 3a ed 3a f5 f2 70 ; VDU28,1,13,12,0 # VDU 28, 1, 13, 12, 0 (define text window) &2810 28 35 2c 36 2c b3 28 33 29 2c 22 48 49 54 40 41 ; 11, # 11 (cursor up) &2820 40 4b 45 59 40 48 45 52 4f 5d 22 29 3a d6 41 25 ; 28,16,13,18,0, # 28, 16, 13, 18, 0 (define text window) &2830 3a fd a6 30 3e 30 3a 3f 4b 25 3d 31 30 3a 48 25 ; 11: # 11 (cursor up) &2840 3d 34 38 3a f8 0d ; CALLA%: # CALL update_player ; SOUND16,-10,101,3: # SOUND 16, -10, 101, 3 ; NEXT: # NEXT ; REPEAT # REPEAT ; PROCp(5,6,RND(3), # PROCtext(5, 6, RND(3), ; "HIT@A@KEY@HERO]"): # "HIT@A@KEY@HERO]") ; CALLA%: # CALL update_player ; UNTILINKEY0>0: # UNTIL INKEY(0) > 0 ; ?K%=10: # ?player_state = PLAYER_DEAD ; H%=48: # lives = "0" ; RETURN # RETURN ; # When "GROVEL" entered, &2846 0b c2 1f f2 70 28 31 34 2c 31 36 2c 33 2c 22 43 ; 3010PROCp(14,16,3,"CHEAT]]"): # PROCtext(14, 16, 3, "CHEAT]]") &2856 48 45 41 54 5d 5d 22 29 3a e5 8d 64 6f 4b 0d ; GOTO3055 # GOTO 3055 ; # When "INFO" entered, &2865 0b cc 18 f2 70 28 31 34 2c 31 36 2c 33 2c a4 70 ; 3020PROCp(14,16,3,FNp): # PROCtext(14, 16, 3, FNseen) &2875 29 3a e5 8d 44 46 40 0d ; GOTO70 # GOTO 70 ; # When "HELP" entered, &287d 0b d6 26 f2 70 28 31 34 2c 31 36 2c 33 2c 24 28 ; 3030PROCp(14,16,3, # PROCtext(14, 16, 3, &288d b3 28 33 29 2a 31 39 2b 26 32 30 42 38 29 29 3a ; $(RND(3)*19+&20B8)): # $(unhelpful_strings - 19 + RND(3) * 19)) &289d e5 8d 44 46 40 0d ; GOTO70 # GOTO 70 ; # When "CODE" entered, &28a3 0b e0 52 e7 3f 26 35 41 3e 34 e5 8d 44 46 40 8b ; 3040IF?&5A>4 # IF ?terminal_number > 4 &28b3 f2 70 28 31 34 2c 31 36 2c 33 2c 22 43 4f 44 45 ; GOTO70 # GOTO 70 &28c3 40 46 4f 52 40 22 2b c3 28 31 36 2b 3f 26 35 41 ; ELSE # ELSE &28d3 29 2b 22 5b 22 2b c3 28 31 37 37 2a 3f 28 3f 26 ; PROCp(14,16,3, # PROCtext(14, 16, 3, &28e3 35 41 2b 26 37 32 34 30 29 29 29 3a e5 8d 44 46 ; "CODE@FOR@" # "CODE@FOR@" &28f3 40 0d ; +STR$(16+?&5A) # + STR$(16 + ?terminal_number) ; +"[" # + "[" ; +STR$(177* # + STR$(177 * ; ?(?&5A+&7240))): # ?(terminal_codes + ?terminal_number))) ; GOTO70 # GOTO 70 ; # When "BUY" entered, &28f5 0b ea 29 e7 a4 64 28 31 30 30 30 29 f2 70 28 31 ; 3050IFFNd(1000) # IF FNcost(1000) &2905 34 2c 31 36 2c 33 2c 22 4e 4f 40 44 45 41 4c 5d ; PROCp(14,16,3,"NO@DEAL]"): # PROCtet(14, 16, 3, "NO@DEAL]") &2915 22 29 3a e5 8d 44 46 40 0d ; GOTO70 # GOTO 70 &291e 0b ef 21 48 25 3d 48 25 2b 31 3a f2 70 28 31 31 ; 3055H%=H%+1: # lives +=1 &292e 2c 31 36 2c 31 2c bd 48 25 29 3a e5 8d 44 46 40 ; PROCp(11,16,1,CHR$H%): # PROCtext(11, 16, 1, CHRS$ lives) &293e 0d ; GOTO70 # GOTO 70 ; # When "SELL" entered, &293f 0b f4 5f e7 48 25 3d 34 38 f2 70 28 31 34 2c 31 ; 3060IFH%=48 # IF lives = "0" &294f 36 2c 33 2c 24 26 37 37 31 41 29 3a e5 8d 44 46 ; PROCp(14,16,3,$&771A): # PROCtext(14, 16, 3 $nothing_to_sell_string) &295f 40 8b f2 70 28 31 34 2c 31 36 2c 33 2c 24 26 37 ; GOTO70 # GOTO 70 &296f 35 35 34 29 3a 48 25 3d 48 25 2d 31 3a 55 25 3d ; ELSE # ELSE &297f a4 64 28 2d 39 30 30 29 3a f2 70 28 31 31 2c 31 ; PROCp(14,16,3,$&7554): # PROCtext(14, 16, 3, $900c_credited_string) &298f 36 2c 31 2c bd 48 25 29 3a e5 8d 44 46 40 0d ; H%=H%-1: # lives -= 1 ; U%=FNd(-900): # null = FNcost(-900) ; PROCp(11,16,1,CHR$H%): # PROCtext(11, 16, 1, CHR$ lives) ; GOTO70 # GOTO 70 ; # When "USE" entered, &299e 0b fe aa e7 3f 39 30 3c 31 36 80 3f 4a 25 3d 3f ; 3070IF?90<16 # IF ?terminal_number < 16 &29ae 39 30 84 3f 4a 25 3e 31 35 80 3f 4a 25 3c 3e 31 ; AND?J%=?90 # AND ?carried_object = ?terminal_number &29be 39 d4 31 38 2c 33 2c 32 30 30 2c 31 30 3a d4 31 ; OR?J%>15 # OR ?carried_object > 15 &29ce 39 2c 31 2c 31 30 33 2c 31 30 3a 3f 28 26 38 38 ; AND?J%<>19 # AND ?carried_object <> 19 &29de 30 2b 3f 4a 25 29 3d 31 3a 3f 4a 25 3d 31 39 3a ; SOUND18,3,200,10: # SOUND 18, 3, 200, 10 &29ee f2 70 28 31 34 2c 31 36 2c 31 2c 24 26 37 37 32 ; SOUND19,1,103,10: # SOUND 19, 1, 103, 10 &29fe 42 29 3a 53 25 3d a4 64 28 2d 32 35 30 29 3a 47 ; ?(&880+?J%)=1: # ?(objects_used + ?carried_object) = 1 &2a0e 25 3d 47 25 2b 34 39 35 3a f2 6e 28 34 2c 31 35 ; ?J%=19: # ?carried_object = 19 &2a1e 2c 31 2c 47 25 29 3a d6 4f 25 3a e5 8d 44 46 40 ; PROCp(14,16,1,$&772B): # PROCtext(14, 16, 1, $used_250c_credited_string) &2a2e 8b f2 70 28 31 34 2c 31 36 2c 33 2c 24 26 37 46 ; S%=FNd(-250): # null = FNcost(-250) &2a3e 41 46 29 3a e5 8d 44 46 40 0d ; G%=G%+495: # score += 295 ; PROCn(4,15,1,G%): # PROCnumber(4, 15, 1, score) ; CALLO%: # CALL unplot_barriers ; GOTO70 # GOTO 70 ; ELSE # ELSE ; PROCp(14,16,3,$&7FAF): # PROCtext(14, 16, 3, $request_refused_string) ; GOTO70 # GOTO 70 ; # When "MAP" entered, &2a48 0c 08 22 fb 33 3a d6 26 35 36 44 30 3a 53 25 3d ; 3080COLOUR3: # COLOUR 3 &2a58 a6 33 30 30 3a f2 53 3a d6 41 25 3a e5 8d 44 46 ; CALL&56D0: # CALL plot_map &2a68 40 0d ; S%=INKEY300: # null = INKEY(300) ; PROCS: # PROCroom ; CALLA%: # CALL update_player ; GOTO70 # GOTO 70 ; # When "INPUT" entered, &2a6a 0c 12 75 e7 3f 26 35 41 3c 32 30 f1 24 26 37 30 ; 3090IF?&5A<20 # IF ?terminal_number < 20 &2a7a 46 30 3a f2 70 28 31 34 2c 31 36 2c 32 2c 22 43 ; PRINT$&70F0: # PRINT $clear_status_section_text &2a8a 4f 44 45 5e 40 5f 22 29 3a f2 69 28 32 30 2c 31 ; PROCp(14,16,2,"CODE^@_"): # PROCtext(14, 16, 2, "CODE^@_") &2a9a 36 2c 35 29 3a e7 31 37 37 2a 3f 28 3f 26 35 41 ; PROCi(20,16,5): # PROCinput(20, 16, 5) &2aaa 2b 26 37 32 33 30 29 3d bb 43 24 3f 28 26 36 46 ; IF177*?(?&5A+&7230)=VALC$ # IF 177 * ?(terminal_codes - 16 + ?terminal_number) = VAL C$ &2aba 32 43 2b 3f 26 35 41 29 3d 31 3a d4 31 2c 33 2c ; ?(&6F2C+?&5A)=1 # ?(vertical_barriers_state - 16 + ?terminal_number) = 1 &2aca 32 30 31 2c 36 3a d6 4f 25 3a e5 8d 44 46 40 8b ; SOUND1,3,201,6 # SOUND 1, 3, 201, 6 &2ada 8d 44 46 40 0d ; CALLO% # CALL unplot_barriers ; GOTO70 # GOTO 70 ; ELSE70 # ELSE GOTO 70 ; # When "PORT" entered, &2adf 0c 1c 33 e7 3f 26 38 39 32 3d 30 f2 70 28 31 34 ; 3100IF?&892=0 # IF ?(objects_used + &12) = 0 &2aef 2c 31 36 2c 33 2c 24 26 37 46 41 46 29 3a e5 8d ; PROCp(14,16,3,$&7FAF): # PROCtext(14, 6, 3, $request_refused_string) &2aff 44 46 40 8b d6 26 35 37 31 30 3a f2 53 3a f2 62 ; GOTO70 # GOTO 70 &2b0f 3a f8 0d ; ELSE # ELSE ; CALL&5710: # CALL teleport_player ; PROCS: # PROCroom ; PROCb: # PROCcarrying ; RETURN # RETURN &2b12 0f a0 41 dd a4 63 3a 4d 25 3d 30 3a e3 4c 25 3d ; 4000DEFFNc: # DEFFNcore &2b22 32 30 b8 33 31 3a 4d 25 3d 4d 25 2b 32 35 2a 4c ; M%=0: # collected = 0 &2b32 25 3f 26 38 38 30 3a ed 3a 3d 22 43 4f 52 45 5c ; FORL%=20TO31: # FOR object = 20 TO 31: &2b42 22 2b c3 28 4d 25 81 33 29 2b 24 26 37 30 38 45 ; M%=M%+25*L%?&880: # collected += 25 * ?(objects_used + object) &2b52 0d ; NEXT: # NEXT ; ="CORE\" # = "CORE\" ; +STR$(M%DIV3) # + STR$(collected DIV 3) ; +$&708E # + $percent_string &2b53 0f aa 49 dd a4 70 3a 52 25 3d 30 3a e3 4c 25 3d ; 4010DEFFNp: # DEFFNseen &2b63 30 b8 31 35 39 3a 52 25 3d 52 25 2d 28 4c 25 3f ; R%=0: # visited = 0 &2b73 26 45 30 30 3e 31 32 37 29 3a ed 3a 3d 24 26 37 ; FORL%=0TO159: # FOR room = 0 TO 159 &2b83 30 38 33 2b c3 28 a8 28 52 25 2f 31 2e 34 36 29 ; R%=R%-(L%?&E00>127): # visited -= (?(room_types + room) > 127) &2b93 29 2b 24 26 37 30 38 45 0d ; NEXT: # NEXT ; =$&7083 # + $seen_string ; +STR$(INT(R%/1.46)) # + STR$(INT(visited / 1.46)) ; +$&708E # + $percent_string &2b9c ff # End of BASIC program ; unused # &2b9d - &29fe is a copy of &374d - &37ae from OMEGAORB4 &2b9d 8c 08 c0 0a e0 9c 01 00 06 20 3c 80 12 cc a1 20 &2bad 26 40 00 02 6b 07 60 0e 2f ab 00 bc 0a 60 9c 31 &2bbd ce 15 40 b5 40 c5 40 ac 88 af 4c 17 a0 0c 04 60 &2bcd 1c 60 6b b3 a1 0e 94 c0 5c 80 e3 90 e3 a0 e3 e3 &2bdd a0 e3 00 21 26 0c b2 9a 80 42 c0 c4 c0 8c d4 40 &2bed c6 40 b8 40 ac d6 42 ba 40 bc 22 00 a4 00 80 60 &2bfd d0 40 # &2cb0 - &57ff is read from OMEGAORB4 ; OMEGAORB4 ; 002cb0 000b80 002b50 ; room_data ; room_type_02_data &2cb0 03 ; KRCY, 3 enemies &2cb1 c7 08 ; enemy at (&7, &c), type &08, static &2cb3 c8 08 ; enemy at (&8, &c), type &08, static &2cb5 24 b3 ; enemy at (&4, &2), type &13, moving down &2cb7 11 ; sprite base &00, &11 sprites &2cb8 1c ; use sprite base &10 &2cb9 62 63 ; plot row of 4 sprites, regular &16 at (&2, &6) &2cbb 22 80 ; plot sprite, regular &18 at (&2, &2) &2cbd bb 60 ; plot sprite, regular &17 at (&b, &3) &2cbf 52 a0 ; plot sprite, regular &1a at (&2, &5) &2cc1 45 ae ; plot column of 2 sprites, regular &1a at (&5, &4) &2cc3 35 c0 ; plot sprite, regular &1c at (&5, &3) &2cc5 0e ; toggle flip &2cc6 42 c0 ; plot sprite, regular &1c at (&2, &4) &2cc8 8c ; use sprite base &80 &2cc9 da 40 ; plot sprite, large &05 at (&a, &5) &2ccb d0 c0 ; plot sprite, large &0d at (&0, &5) &2ccd d6 a0 ; plot sprite, large &0b at (&6, &5) &2ccf d8 c0 ; plot sprite, large &0d at (&8, &5) &2cd1 9c ; use sprite base &90 &2cd2 16 00 ; plot sprite, large &10 at (&6, &1) &2cd4 18 20 ; plot sprite, large &12 at (&8, &1) &2cd6 b6 00 ; plot sprite, large &11 at (&6, &3) &2cd8 b8 20 ; plot sprite, large &13 at (&8, &3) &2cda 10 40 ; plot sprite, large &14 at (&0, &1) &2cdc b0 40 ; plot sprite, large &15 at (&0, &3) &2cde e0 00 ; unused ; room_type_03_data &2ce0 03 ; KRCY, 3 enemies &2ce1 61 0d ; enemy at (&1, &6), type &0d, static &2ce3 26 b4 ; enemy at (&6, &2), type &14, moving down &2ce5 59 70 ; enemy at (&9, &5), type &10, moving left &2ce7 11 ; sprite base &00, &11 sprites &2ce8 e4 a7 ; plot row of 8 sprites, regular &0b at (&4, &6) &2cea 1c ; use sprite base &10 &2ceb a0 60 ; plot sprite, regular &17 at (&0, &2) &2ced 01 80 ; plot sprite, regular &18 at (&1, &0) &2cef a4 60 ; plot sprite, regular &17 at (&4, &2) &2cf1 17 80 ; plot sprite, regular &18 at (&7, &1) &2cf3 ba 60 ; plot sprite, regular &17 at (&a, &3) &2cf5 8b 60 ; plot sprite, regular &17 at (&b, &0) &2cf7 23 40 ; plot sprite, regular &14 at (&3, &2) &2cf9 b3 40 ; plot sprite, regular &15 at (&3, &3) &2cfb c1 c0 ; plot sprite, regular &1d at (&1, &4) &2cfd 8c ; use sprite base &80 &2cfe d0 80 ; plot sprite, large &09 at (&0, &5) &2d00 d4 80 ; plot sprite, large &09 at (&4, &5) &2d02 c6 40 ; plot sprite, large &05 at (&6, &4) &2d04 c8 80 ; plot sprite, large &09 at (&8, &4) &2d06 4a 60 ; plot sprite, large &06 at (&a, &4) &2d08 9c ; use sprite base &90 &2d09 52 c0 ; plot sprite, large &1c at (&2, &5) &2d0b c2 a0 ; plot sprite, large &1b at (&2, &4) &2d0d 00 00 00 ; unused ; room_type_04_data &2d10 00 ; KRCY, 0 enemies &2d11 12 ; sprite base &00, &12 sprites &2d12 e8 c0 ; plot sprite, regular &0d at (&8, &6) &2d14 e9 e2 ; plot row of 3 sprites, regular &0f at (&9, &6) &2d16 1c ; use sprite base &10 &2d17 09 ae ; plot column of 2 sprites, regular &1a at (&9, &0) &2d19 d4 60 ; plot sprite, regular &17 at (&4, &5) &2d1b 8b 60 ; plot sprite, regular &17 at (&b, &0) &2d1d 50 60 ; plot sprite, regular &16 at (&0, &5) &2d1f 9c ; use sprite base &90 &2d20 36 40 ; plot sprite, large &14 at (&6, &3) &2d22 d6 40 ; plot sprite, large &15 at (&6, &5) &2d24 3c ; use sprite base &30 &2d25 38 23 ; plot row of 4 sprites, regular &32 at (&8, &3) &2d27 29 20 ; plot sprite, regular &32 at (&9, &2) &2d29 00 07 ; plot row of 8 sprites, regular &30 at (&0, &0) &2d2b 40 05 ; plot row of 6 sprites, regular &30 at (&0, &4) &2d2d 5c ; use sprite base &50 &2d2e 08 60 ; plot sprite, regular &56 at (&8, &0) &2d30 46 60 ; plot sprite, regular &56 at (&6, &4) &2d32 0e ; toggle flip &2d33 6c ; use sprite base &60 &2d34 37 20 ; plot sprite, regular &62 at (&7, &3) &2d36 30 06 ; plot row of 7 sprites, regular &60 at (&0, &3) &2d38 4c ; use sprite base &40 &2d39 d1 e0 ; plot sprite, regular &4f at (&1, &5) &2d3b cc ; use sprite base &c0 &2d3c 90 43 ; plot row of 4 sprites, large &45 at (&0, &1) &2d3e 43 00 ; unused ; room_type_05_data &2d40 03 ; KRCY, 3 enemies &2d41 82 70 ; enemy at (&2, &8), type &10, moving left &2d43 07 0c ; enemy at (&7, &0), type &0c, static &2d45 08 0c ; enemy at (&8, &0), type &0c, static &2d47 10 ; sprite base &00, &10 sprites &2d48 e0 e1 ; plot row of 2 sprites, regular &0f at (&0, &6) &2d4a e4 a5 ; plot row of 6 sprites, regular &0b at (&4, &6) &2d4c 9c ; use sprite base &90 &2d4d 05 40 ; plot sprite, large &14 at (&5, &0) &2d4f a5 40 ; plot sprite, large &15 at (&5, &2) &2d51 ac ; use sprite base &a0 &2d52 35 c0 ; plot sprite, large &2c at (&5, &3) &2d54 b7 c0 ; plot sprite, large &2d at (&7, &3) &2d56 cc ; use sprite base &c0 &2d57 17 60 ; plot sprite, large &46 at (&7, &1) &2d59 8c ; use sprite base &80 &2d5a c6 80 ; plot sprite, large &09 at (&6, &4) &2d5c d2 40 ; plot sprite, large &05 at (&2, &5) &2d5e c4 40 ; plot sprite, large &05 at (&4, &4) &2d60 48 60 ; plot sprite, large &06 at (&8, &4) &2d62 5a 60 ; plot sprite, large &06 at (&a, &5) &2d64 6c ; use sprite base &60 &2d65 8b 92 ; plot column of 6 sprites, regular &69 at (&b, &0) &2d67 3c ; use sprite base &30 &2d68 32 20 ; plot sprite, regular &32 at (&2, &3) &2d6a 2c ; use sprite base &20 &2d6b b0 81 ; plot row of 2 sprites, regular &29 at (&0, &3) &2d6d 82 4f ; plot column of 3 sprites, regular &25 at (&2, &0) &2d6f 00 ; unused ; room_type_06_data &2d70 02 ; KRCY, 2 enemies &2d71 b4 ef ; enemy at (&4, &b), type &0f, moving right &2d73 a7 0a ; enemy at (&7, &a), type &0a, static &2d75 10 ; sprite base &00, &10 sprites &2d76 1c ; use sprite base &10 &2d77 a0 60 ; plot sprite, regular &17 at (&0, &2) &2d79 05 80 ; plot sprite, regular &18 at (&5, &0) &2d7b aa 60 ; plot sprite, regular &17 at (&a, &2) &2d7d 8b 60 ; plot sprite, regular &17 at (&b, &0) &2d7f e7 c0 ; plot sprite, regular &1d at (&7, &6) &2d81 0e ; toggle flip &2d82 b4 c0 ; plot sprite, regular &1d at (&4, &3) &2d84 0e ; toggle flip &2d85 3c ; use sprite base &30 &2d86 44 21 ; plot row of 2 sprites, regular &32 at (&4, &4) &2d88 24 40 ; plot sprite, regular &34 at (&4, &2) &2d8a 8c ; use sprite base &80 &2d8b d0 80 ; plot sprite, large &09 at (&0, &5) &2d8d da 80 ; plot sprite, large &09 at (&a, &5) &2d8f 9c ; use sprite base &90 &2d90 02 40 ; plot sprite, large &14 at (&2, &0) &2d92 a2 40 ; plot sprite, large &15 at (&2, &2) &2d94 c2 a0 ; plot sprite, large &1b at (&2, &4) &2d96 52 c0 ; plot sprite, large &1c at (&2, &5) &2d98 c8 a0 ; plot sprite, large &1b at (&8, &4) &2d9a 58 c0 ; plot sprite, large &1c at (&8, &5) &2d9c 58 c0 00 00 ; unused ; room_type_07_data &2da0 03 ; KRCY, 3 enemies &2da1 15 b4 ; enemy at (&5, &1), type &14, moving down &2da3 41 0d ; enemy at (&1, &4), type &0d, static &2da5 48 0d ; enemy at (&8, &4), type &0d, static &2da7 11 ; sprite base &00, &11 sprites &2da8 e2 a9 ; plot row of 10 sprites, regular &0b at (&2, &6) &2daa d4 a3 ; plot row of 4 sprites, regular &0b at (&4, &5) &2dac 1c ; use sprite base &10 &2dad 93 60 ; plot sprite, regular &17 at (&3, &1) &2daf 81 60 ; plot sprite, regular &17 at (&1, &0) &2db1 87 60 ; plot sprite, regular &17 at (&7, &0) &2db3 bb 60 ; plot sprite, regular &17 at (&b, &3) &2db5 3c ; use sprite base &30 &2db6 08 03 ; plot row of 4 sprites, regular &30 at (&8, &0) &2db8 3a 20 ; plot sprite, regular &32 at (&a, &3) &2dba 2c ; use sprite base &20 &2dbb 07 60 ; plot sprite, regular &26 at (&7, &0) &2dbd 18 00 ; plot sprite, regular &20 at (&8, &1) &2dbf 0d ; toggle repeat &2dc0 31 0e ; plot column of 2 sprites, regular &20 at (&1, &3) &2dc2 8c ; use sprite base &80 &2dc3 d0 80 ; plot sprite, large &09 at (&0, &5) &2dc5 c8 80 ; plot sprite, large &09 at (&8, &4) &2dc7 c2 40 ; plot sprite, large &05 at (&2, &4) &2dc9 b4 40 ; plot sprite, large &05 at (&4, &3) &2dcb 36 60 ; plot sprite, large &06 at (&6, &3) &2dcd 4a 60 ; plot sprite, large &06 at (&a, &4) &2dcf 00 ; unused ; room_type_08_data &2dd0 0b ; KRYW, 3 enemies &2dd1 65 f0 ; enemy at (&5, &6), type &10, moving right &2dd3 74 0c ; enemy at (&4, &7), type &0c, static &2dd5 a7 0d ; enemy at (&7, &a), type &0d, static &2dd7 2f ; sprite base &20, &0f sprites &2dd8 5b 20 ; plot sprite, regular &22 at (&b, &5) &2dda eb 40 ; plot sprite, regular &25 at (&b, &6) &2ddc 96 05 ; plot row of 6 sprites, regular &21 at (&6, &1) &2dde 3c ; use sprite base &30 &2ddf a3 80 ; plot sprite, regular &39 at (&3, &2) &2de1 26 a5 ; plot row of 6 sprites, regular &3a at (&6, &2) &2de3 a0 11 ; plot column of 5 sprites, regular &31 at (&0, &2) &2de5 06 05 ; plot row of 6 sprites, regular &30 at (&6, &0) &2de7 4c ; use sprite base &40 &2de8 c1 23 ; plot row of 4 sprites, regular &43 at (&1, &4) &2dea e7 60 ; plot sprite, regular &47 at (&7, &6) &2dec 9c ; use sprite base &90 &2ded 80 61 ; plot row of 2 sprites, large &17 at (&0, &0) &2def d3 a0 ; plot sprite, large &1b at (&3, &5) &2df1 d1 e0 ; plot sprite, large &1f at (&1, &5) &2df3 bc ; use sprite base &b0 &2df4 84 60 ; plot sprite, large &37 at (&4, &0) &2df6 59 c0 ; plot sprite, large &3c at (&9, &5) &2df8 0d ; toggle repeat &2df9 5c ; use sprite base &50 &2dfa 3b 4e ; plot column of 2 sprites, regular &54 at (&b, &3) &2dfc 00 00 00 00 ; unused ; room_type_09_data &2e00 0b ; KRYW, 3 enemies &2e01 31 7f ; animation at (1, 3), type 3 &2e03 25 09 ; enemy at (&5, &2), type &09, static &2e05 33 5f ; animation at (3, 3), type 2 &2e07 90 ; sprite base &80, &10 sprites &2e08 11 a1 ; plot row of 2 sprites, large &0a at (&1, &1) &2e0a ac ; use sprite base &a0 &2e0b 47 c0 ; plot sprite, large &2c at (&7, &4) &2e0d c9 c0 ; plot sprite, large &2d at (&9, &4) &2e0f bc ; use sprite base &b0 &2e10 27 00 ; plot sprite, large &30 at (&7, &2) &2e12 a9 00 ; plot sprite, large &31 at (&9, &2) &2e14 d1 c0 ; plot sprite, large &3d at (&1, &5) &2e16 9c ; use sprite base &90 &2e17 d8 e0 ; plot sprite, large &1f at (&8, &5) &2e19 2c ; use sprite base &20 &2e1a 0b 53 ; plot column of 7 sprites, regular &24 at (&b, &0) &2e1c 50 20 ; plot sprite, regular &22 at (&0, &5) &2e1e e0 40 ; plot sprite, regular &25 at (&0, &6) &2e20 1c ; use sprite base &10 &2e21 25 af ; plot column of 3 sprites, regular &1a at (&5, &2) &2e23 b5 80 ; plot sprite, regular &19 at (&5, &3) &2e25 b6 a0 ; plot sprite, regular &1b at (&6, &3) &2e27 3c ; use sprite base &30 &2e28 00 0a ; plot row of 11 sprites, regular &30 at (&0, &0) &2e2a 53 22 ; plot row of 3 sprites, regular &32 at (&3, &5) &2e2c 6c ; use sprite base &60 &2e2d 10 10 ; plot column of 4 sprites, regular &60 at (&0, &1) &2e2f 00 ; unused ; room_type_0a_data &2e30 22 ; KRCW, 2 enemies &2e31 b1 0d ; enemy at (&1, &b), type &0d, static &2e33 b4 0d ; enemy at (&4, &b), type &0d, static &2e35 90 ; sprite base &80, &10 sprites &2e36 d0 a0 ; plot sprite, large &0b at (&0, &5) &2e38 d4 c0 ; plot sprite, large &0d at (&4, &5) &2e3a 1c ; use sprite base &10 &2e3b a7 a4 ; plot row of 5 sprites, regular &1b at (&7, &2) &2e3d a6 c0 ; plot sprite, regular &1d at (&6, &2) &2e3f 9c ; use sprite base &90 &2e40 52 60 ; plot sprite, large &16 at (&2, &5) &2e42 06 e0 ; plot sprite, large &1e at (&6, &0) &2e44 ac ; use sprite base &a0 &2e45 88 ae ; plot column of 2 sprites, large &2b at (&8, &0) &2e47 bc ; use sprite base &b0 &2e48 47 00 ; plot sprite, large &30 at (&7, &4) &2e4a c9 00 ; plot sprite, large &31 at (&9, &4) &2e4c 81 81 ; plot row of 2 sprites, large &39 at (&1, &0) &2e4e 21 a1 ; plot row of 2 sprites, large &3a at (&1, &2) &2e50 cc ; use sprite base &c0 &2e51 b1 61 ; plot row of 2 sprites, large &47 at (&1, &3) &2e53 0a 80 ; plot sprite, large &48 at (&a, &0) &2e55 7c ; use sprite base &70 &2e56 80 11 ; plot column of 5 sprites, regular &71 at (&0, &0) &2e58 6c ; use sprite base &60 &2e59 66 05 ; plot row of 6 sprites, regular &60 at (&6, &6) &2e5b 05 60 ; plot sprite, regular &66 at (&5, &0) &2e5d 00 00 00 ; unused ; room_type_0b_data &2e60 24 ; KRCW, 4 enemies &2e61 02 0a ; enemy at (&2, &0), type &0a, static &2e63 07 0d ; enemy at (&7, &0), type &0d, static &2e65 c7 0d ; enemy at (&7, &c), type &0d, static &2e67 32 a4 ; enemy at (&2, &3), type &04, moving down &2e69 8e ; sprite base &80, &0e sprites &2e6a 00 e0 ; plot sprite, large &0e at (&0, &0) &2e6c d8 a0 ; plot sprite, large &0b at (&8, &5) &2e6e 9c ; use sprite base &90 &2e6f 5a 60 ; plot sprite, large &16 at (&a, &5) &2e71 19 40 ; plot sprite, large &14 at (&9, &1) &2e73 b9 40 ; plot sprite, large &15 at (&9, &3) &2e75 cc ; use sprite base &c0 &2e76 51 22 ; plot row of 3 sprites, large &42 at (&1, &5) &2e78 6c ; use sprite base &60 &2e79 02 49 ; plot row of 10 sprites, regular &64 at (&2, &0) &2e7b ab 00 ; plot sprite, regular &61 at (&b, &2) &2e7d 97 92 ; plot column of 6 sprites, regular &69 at (&7, &1) &2e7f 1c ; use sprite base &10 &2e80 0e ; toggle flip &2e81 bb c0 ; plot sprite, regular &1d at (&b, &3) &2e83 0e ; toggle flip &2e84 12 a0 ; plot sprite, regular &1a at (&2, &1) &2e86 c8 a0 ; plot sprite, regular &1b at (&8, &4) &2e88 3c ; use sprite base &30 &2e89 a0 11 ; plot column of 5 sprites, regular &31 at (&0, &2) &2e8b 0e ; toggle flip &2e8c 0c ; use sprite base &00 &2e8d 41 c0 ; plot sprite, regular &0c at (&1, &4) &2e8f 00 ; unused ; room_type_0c_data &2e90 26 ; KRCW, 6 enemies &2e91 23 a4 ; enemy at (&3, &2), type &04, moving down &2e93 42 09 ; enemy at (&2, &4), type &09, static &2e95 50 3f ; animation at (0, 5), type 1 &2e97 c2 0b ; enemy at (&2, &c), type &0b, static &2e99 c3 0b ; enemy at (&3, &c), type &0b, static &2e9b 2b 0e ; enemy at (&b, &2), type &0e, static &2e9d 2e ; sprite base &20, &0e sprites &2e9e 92 00 ; plot sprite, regular &21 at (&2, &1) &2ea0 3c ; use sprite base &30 &2ea1 00 eb ; plot row of 12 sprites, regular &3e at (&0, &0) &2ea3 62 e9 ; plot row of 10 sprites, regular &3e at (&2, &6) &2ea5 6c ; use sprite base &60 &2ea6 2a 61 ; plot row of 2 sprites, regular &66 at (&a, &2) &2ea8 5c ; use sprite base &50 &2ea9 90 b0 ; plot column of 4 sprites, regular &5b at (&0, &1) &2eab 4c ; use sprite base &40 &2eac 25 2f ; plot column of 3 sprites, regular &42 at (&5, &2) &2eae 26 2f ; plot column of 3 sprites, regular &42 at (&6, &2) &2eb0 bc ; use sprite base &b0 &2eb1 04 60 ; plot sprite, large &36 at (&4, &0) &2eb3 86 60 ; plot sprite, large &37 at (&6, &0) &2eb5 54 40 ; plot sprite, large &34 at (&4, &5) &2eb7 d6 40 ; plot sprite, large &35 at (&6, &5) &2eb9 d0 40 ; plot sprite, large &35 at (&0, &5) &2ebb 18 a0 ; plot sprite, large &3a at (&8, &1) &2ebd a8 80 ; plot sprite, large &39 at (&8, &2) &2ebf 00 ; unused ; room_type_0d_data &2ec0 83 62 ; KRCY, 3 enemies, generator at (&2, &6) &2ec2 54 5f ; animation at (4, 5), type 2 &2ec4 8a 0a ; enemy at (&a, &8), type &0a, static &2ec6 28 b6 ; enemy at (&8, &2), type &16, moving down &2ec8 8f ; sprite base &80, &0f sprites &2ec9 24 a0 ; plot sprite, large &0a at (&4, &2) &2ecb bc ; use sprite base &b0 &2ecc 11 80 ; plot sprite, large &38 at (&1, &1) &2ece 19 80 ; plot sprite, large &38 at (&9, &1) &2ed0 5c ; use sprite base &50 &2ed1 9b b1 ; plot column of 5 sprites, regular &5b at (&b, &1) &2ed3 3c ; use sprite base &30 &2ed4 00 eb ; plot row of 12 sprites, regular &3e at (&0, &0) &2ed6 60 eb ; plot row of 12 sprites, regular &3e at (&0, &6) &2ed8 c4 a1 ; plot row of 2 sprites, regular &3b at (&4, &4) &2eda 2c ; use sprite base &20 &2edb da 00 ; plot sprite, regular &21 at (&a, &5) &2edd 6c ; use sprite base &60 &2ede ba 00 ; plot sprite, regular &61 at (&a, &3) &2ee0 1c ; use sprite base &10 &2ee1 b3 a0 ; plot sprite, regular &1b at (&3, &3) &2ee3 b6 a0 ; plot sprite, regular &1b at (&6, &3) &2ee5 17 ae ; plot column of 2 sprites, regular &1a at (&7, &1) &2ee7 0e ; toggle flip &2ee8 b7 c0 ; plot sprite, regular &1d at (&7, &3) &2eea 14 40 ; plot sprite, regular &14 at (&4, &1) &2eec 7c ; use sprite base &70 &2eed b2 e0 ; plot sprite, regular &7f at (&2, &3) &2eef 00 ; unused ; room_type_0e_data &2ef0 24 ; KRCW, 4 enemies &2ef1 20 b5 ; enemy at (&0, &2), type &15, moving down &2ef3 87 36 ; enemy at (&7, &8), type &16, moving up &2ef5 58 0c ; enemy at (&8, &5), type &0c, static &2ef7 1b 08 ; enemy at (&b, &1), type &08, static &2ef9 8d ; sprite base &80, &0d sprites &2efa 08 c0 ; plot sprite, large &0c at (&8, &0) &2efc 9c ; use sprite base &90 &2efd 8a 60 ; plot sprite, large &17 at (&a, &0) &2eff ac ; use sprite base &a0 &2f00 4a a0 ; plot sprite, large &2a at (&a, &4) &2f02 bc ; use sprite base &b0 &2f03 11 a2 ; plot row of 3 sprites, large &3a at (&1, &1) &2f05 31 a2 ; plot row of 3 sprites, large &3a at (&1, &3) &2f07 a1 82 ; plot row of 3 sprites, large &39 at (&1, &2) &2f09 3c ; use sprite base &30 &2f0a 00 07 ; plot row of 8 sprites, regular &30 at (&0, &0) &2f0c ab 80 ; plot sprite, regular &39 at (&b, &2) &2f0e 51 25 ; plot row of 6 sprites, regular &32 at (&1, &5) &2f10 4c ; use sprite base &40 &2f11 b8 23 ; plot row of 4 sprites, regular &43 at (&8, &3) &2f13 5c ; use sprite base &50 &2f14 60 a1 ; plot row of 2 sprites, regular &5a at (&0, &6) &2f16 6a a1 ; plot row of 2 sprites, regular &5a at (&a, &6) &2f18 2c ; use sprite base &20 &2f19 48 0f ; plot column of 3 sprites, regular &20 at (&8, &4) &2f1b 00 00 00 00 00 ; unused ; room_type_0f_data &2f20 22 ; KRCW, 2 enemies &2f21 95 08 ; enemy at (&5, &9), type &08, static &2f23 96 08 ; enemy at (&6, &9), type &08, static &2f25 b1 ; sprite base &a0, &11 sprites &2f26 34 c0 ; plot sprite, large &2c at (&4, &3) &2f28 b6 c0 ; plot sprite, large &2d at (&6, &3) &2f2a bc ; use sprite base &b0 &2f2b 82 60 ; plot sprite, large &37 at (&2, &0) &2f2d 08 60 ; plot sprite, large &36 at (&8, &0) &2f2f 14 00 ; plot sprite, large &30 at (&4, &1) &2f31 96 00 ; plot sprite, large &31 at (&6, &1) &2f33 43 c0 ; plot sprite, large &3c at (&3, &4) &2f35 c7 c0 ; plot sprite, large &3d at (&7, &4) &2f37 9c ; use sprite base &90 &2f38 80 60 ; plot sprite, large &17 at (&0, &0) &2f3a 8a 60 ; plot sprite, large &17 at (&a, &0) &2f3c 45 60 ; plot sprite, large &16 at (&5, &4) &2f3e 1c ; use sprite base &10 &2f3f 50 a0 ; plot sprite, regular &1a at (&0, &5) &2f41 3c ; use sprite base &30 &2f42 e0 eb ; plot row of 12 sprites, regular &3f at (&0, &6) &2f44 ab 70 ; plot column of 4 sprites, regular &37 at (&b, &2) &2f46 2c ; use sprite base &20 &2f47 e3 45 ; plot row of 6 sprites, regular &25 at (&3, &6) &2f49 4c ; use sprite base &40 &2f4a c0 20 ; plot sprite, regular &43 at (&0, &4) &2f4c 6c ; use sprite base &60 &2f4d 04 43 ; plot row of 4 sprites, regular &64 at (&4, &0) &2f4f 00 ; unused ; room_type_10_data &2f50 02 ; KRCY, 2 enemies &2f51 85 0d ; enemy at (&5, &8), type &0d, static &2f53 68 b5 ; enemy at (&8, &6), type &15, moving down &2f55 2d ; sprite base &20, &0d sprites &2f56 d5 00 ; plot sprite, regular &21 at (&5, &5) &2f58 19 0f ; plot column of 3 sprites, regular &20 at (&9, &1) &2f5a 60 2b ; plot row of 12 sprites, regular &22 at (&0, &6) &2f5c d0 81 ; plot row of 2 sprites, regular &29 at (&0, &5) &2f5e 1c ; use sprite base &10 &2f5f 92 31 ; plot column of 5 sprites, regular &13 at (&2, &1) &2f61 3c ; use sprite base &30 &2f62 c9 a0 ; plot sprite, regular &3b at (&9, &4) &2f64 00 0b ; plot row of 12 sprites, regular &30 at (&0, &0) &2f66 4c ; use sprite base &40 &2f67 21 a0 ; plot sprite, regular &4a at (&1, &2) &2f69 0e ; toggle flip &2f6a 23 a0 ; plot sprite, regular &4a at (&3, &2) &2f6c 9c ; use sprite base &90 &2f6d 86 c0 ; plot sprite, large &1d at (&6, &0) &2f6f 8a c0 ; plot sprite, large &1d at (&a, &0) &2f71 bc ; use sprite base &b0 &2f72 26 80 ; plot sprite, large &38 at (&6, &2) &2f74 2a 80 ; plot sprite, large &38 at (&a, &2) &2f76 26 80 2a 80 00 00 00 00 00 00 ; unused ; room_type_11_data &2f80 23 ; KRCW, 3 enemies &2f81 19 0e ; enemy at (&9, &1), type &0e, static &2f83 62 0d ; enemy at (&2, &6), type &0d, static &2f85 44 b5 ; enemy at (&4, &4), type &15, moving down &2f87 90 ; sprite base &80, &10 sprites &2f88 0a c0 ; plot sprite, large &0c at (&a, &0) &2f8a 3c ; use sprite base &30 &2f8b e0 eb ; plot row of 12 sprites, regular &3f at (&0, &6) &2f8d 6c ; use sprite base &60 &2f8e 04 45 ; plot row of 6 sprites, regular &64 at (&4, &0) &2f90 e9 40 ; plot sprite, regular &65 at (&9, &6) &2f92 9c ; use sprite base &90 &2f93 80 60 ; plot sprite, large &17 at (&0, &0) &2f95 56 c0 ; plot sprite, large &1c at (&6, &5) &2f97 bc ; use sprite base &b0 &2f98 96 20 ; plot sprite, large &33 at (&6, &1) &2f9a 82 60 ; plot sprite, large &37 at (&2, &0) &2f9c 35 e0 ; plot sprite, large &3e at (&5, &3) &2f9e b7 e0 ; plot sprite, large &3f at (&7, &3) &2fa0 cc ; use sprite base &c0 &2fa1 2a 0e ; plot column of 2 sprites, large &40 at (&a, &2) &2fa3 1c ; use sprite base &10 &2fa4 61 61 ; plot row of 2 sprites, regular &16 at (&1, &6) &2fa6 20 a0 ; plot sprite, regular &1a at (&0, &2) &2fa8 b0 c0 ; plot sprite, regular &1d at (&0, &3) &2faa b1 a0 ; plot sprite, regular &1b at (&1, &3) &2fac 4c ; use sprite base &40 &2fad d3 60 ; plot sprite, regular &47 at (&3, &5) &2faf 00 ; unused ; room_type_12_data &2fb0 89 6a ; KRYW, 1 enemy, generator at (&a, &6) &2fb2 34 a7 ; enemy at (&4, &3), type &07, moving down &2fb4 10 ; sprite base &00, &10 sprites &2fb5 80 b3 ; plot column of 7 sprites, regular &0b at (&0, &0) &2fb7 a1 a0 ; plot sprite, regular &0b at (&1, &2) &2fb9 1c ; use sprite base &10 &2fba bb a0 ; plot sprite, regular &1b at (&b, &3) &2fbc 7c ; use sprite base &70 &2fbd ba e0 ; plot sprite, regular &7f at (&a, &3) &2fbf ac ; use sprite base &a0 &2fc0 15 a0 ; plot sprite, large &2a at (&5, &1) &2fc2 35 a0 ; plot sprite, large &2a at (&5, &3) &2fc4 06 22 ; plot row of 3 sprites, large &22 at (&6, &0) &2fc6 03 20 ; plot sprite, large &22 at (&3, &0) &2fc8 81 40 ; plot sprite, large &25 at (&1, &0) &2fca 9c ; use sprite base &90 &2fcb 85 c0 ; plot sprite, large &1d at (&5, &0) &2fcd d5 a0 ; plot sprite, large &1b at (&5, &5) &2fcf d1 a0 ; plot sprite, large &1b at (&1, &5) &2fd1 4c ; use sprite base &40 &2fd2 e3 81 ; plot row of 2 sprites, regular &49 at (&3, &6) &2fd4 92 40 ; plot sprite, regular &45 at (&2, &1) &2fd6 21 6f ; plot column of 3 sprites, regular &46 at (&1, &2) &2fd8 3c ; use sprite base &30 &2fd9 e7 e4 ; plot row of 5 sprites, regular &3f at (&7, &6) &2fdb a0 a0 d1 a0 00 ; unused ; room_type_13_data &2fe0 0b ; KRYW, 3 enemies &2fe1 45 08 ; enemy at (&5, &4), type &08, static &2fe3 64 b9 ; enemy at (&4, &6), type &19, moving down &2fe5 65 bb ; enemy at (&5, &6), type &1b, moving down &2fe7 0f ; sprite base &00, &0f sprites &2fe8 8b b3 ; plot column of 7 sprites, regular &0b at (&b, &0) &2fea 8a ae ; plot column of 2 sprites, regular &0b at (&a, &0) &2fec 1c ; use sprite base &10 &2fed a4 a1 ; plot row of 2 sprites, regular &1b at (&4, &2) &2fef 3c ; use sprite base &30 &2ff0 e0 e0 ; plot sprite, regular &3f at (&0, &6) &2ff2 4c ; use sprite base &40 &2ff3 56 a0 ; plot sprite, regular &4a at (&6, &5) &2ff5 b6 23 ; plot row of 4 sprites, regular &43 at (&6, &3) &2ff7 0e ; toggle flip &2ff8 2a 71 ; plot column of 5 sprites, regular &46 at (&a, &2) &2ffa 8c ; use sprite base &80 &2ffb d1 a0 ; plot sprite, large &0b at (&1, &5) &2ffd d2 c0 ; plot sprite, large &0d at (&2, &5) &2fff 9c ; use sprite base &90 &3000 c7 e0 ; plot sprite, large &1f at (&7, &4) &3002 d7 e0 ; plot sprite, large &1f at (&7, &5) &3004 ac ; use sprite base &a0 &3005 80 61 ; plot row of 2 sprites, large &27 at (&0, &0) &3007 04 21 ; plot row of 2 sprites, large &22 at (&4, &0) &3009 08 80 ; plot sprite, large &28 at (&8, &0) &300b 20 61 ; plot row of 2 sprites, large &26 at (&0, &2) &300d 00 00 00 ; unused ; room_type_14_data &3010 89 26 ; KRYW, 1 enemy, generator at (&6, &2) &3012 45 a4 ; enemy at (&5, &4), type &04, moving down &3014 d1 ; sprite base &c0, &11 sprites &3015 1a 00 ; plot sprite, large &40 at (&a, &1) &3017 bc ; use sprite base &b0 &3018 38 c0 ; plot sprite, large &3c at (&8, &3) &301a 58 60 ; plot sprite, large &36 at (&8, &5) &301c 9c ; use sprite base &90 &301d 03 cf ; plot column of 3 sprites, large &1c at (&3, &0) &301f 53 c0 ; plot sprite, large &1c at (&3, &5) &3021 81 ef ; plot column of 3 sprites, large &1f at (&1, &0) &3023 d1 e0 ; plot sprite, large &1f at (&1, &5) &3025 3a 60 ; plot sprite, large &16 at (&a, &3) &3027 da 60 ; plot sprite, large &17 at (&a, &5) &3029 3c ; use sprite base &30 &302a 80 13 ; plot column of 7 sprites, regular &31 at (&0, &0) &302c 0a 01 ; plot row of 2 sprites, regular &30 at (&a, &0) &302e 1c ; use sprite base &10 &302f d7 e0 ; plot sprite, regular &1f at (&7, &5) &3031 95 a0 ; plot sprite, regular &1b at (&5, &1) &3033 07 a0 ; plot sprite, regular &1a at (&7, &0) &3035 0e ; toggle flip &3036 97 c0 ; plot sprite, regular &1d at (&7, &1) &3038 5c ; use sprite base &50 &3039 09 60 ; plot sprite, regular &56 at (&9, &0) &303b 7c ; use sprite base &70 &303c 96 e0 ; plot sprite, regular &7f at (&6, &1) &303e 00 00 ; unused ; room_type_15_data &3040 0b ; KRYW, 3 enemies &3041 33 fd ; enemy at (&3, &3), type &1d, moving right &3043 a2 08 ; enemy at (&2, &a), type &08, static &3045 57 0c ; enemy at (&7, &5), type &0c, static &3047 2f ; sprite base &20, &0f sprites &3048 0b 53 ; plot column of 7 sprites, regular &24 at (&b, &0) &304a 80 41 ; plot row of 2 sprites, regular &25 at (&0, &0) &304c 5c ; use sprite base &50 &304d 02 60 ; plot sprite, regular &56 at (&2, &0) &304f 4c ; use sprite base &40 &3050 b5 22 ; plot row of 3 sprites, regular &43 at (&5, &3) &3052 67 a0 ; plot sprite, regular &4a at (&7, &6) &3054 9c ; use sprite base &90 &3055 88 ef ; plot column of 3 sprites, large &1f at (&8, &0) &3057 d8 e0 ; plot sprite, large &1f at (&8, &5) &3059 30 60 ; plot sprite, large &16 at (&0, &3) &305b d0 60 ; plot sprite, large &17 at (&0, &5) &305d cc ; use sprite base &c0 &305e 90 00 ; plot sprite, large &41 at (&0, &1) &3060 bc ; use sprite base &b0 &3061 d2 60 ; plot sprite, large &37 at (&2, &5) &3063 b2 c0 ; plot sprite, large &3d at (&2, &3) &3065 1c ; use sprite base &10 &3066 d4 a1 ; plot row of 2 sprites, regular &1b at (&4, &5) &3068 46 a0 ; plot sprite, regular &1a at (&6, &4) &306a 0e ; toggle flip &306b d6 c0 ; plot sprite, regular &1d at (&6, &5) &306d 00 00 00 ; unused ; room_type_16_data &3070 24 ; KRCW, 4 enemies &3071 45 b9 ; enemy at (&5, &4), type &19, moving down &3073 46 bb ; enemy at (&6, &4), type &1b, moving down &3075 47 12 ; enemy at (&7, &4), type &12, static &3077 77 12 ; enemy at (&7, &7), type &12, static &3079 10 ; sprite base &00, &10 sprites &307a a0 af ; plot column of 3 sprites, regular &0b at (&0, &2) &307c 9c ; use sprite base &90 &307d 11 40 ; plot sprite, large &14 at (&1, &1) &307f b1 40 ; plot sprite, large &15 at (&1, &3) &3081 80 60 ; plot sprite, large &17 at (&0, &0) &3083 50 60 ; plot sprite, large &16 at (&0, &5) &3085 1a e0 ; plot sprite, large &1e at (&a, &1) &3087 bc ; use sprite base &b0 &3088 d2 40 ; plot sprite, large &35 at (&2, &5) &308a 82 60 ; plot sprite, large &37 at (&2, &0) &308c 5c ; use sprite base &50 &308d 15 84 ; plot row of 5 sprites, regular &58 at (&5, &1) &308f bb af ; plot column of 3 sprites, regular &5b at (&b, &3) &3091 1c ; use sprite base &10 &3092 b3 a0 ; plot sprite, regular &1b at (&3, &3) &3094 14 b1 ; plot column of 5 sprites, regular &1a at (&4, &1) &3096 3c ; use sprite base &30 &3097 34 40 ; plot sprite, regular &34 at (&4, &3) &3099 97 71 ; plot column of 5 sprites, regular &37 at (&7, &1) &309b 64 e7 ; plot row of 8 sprites, regular &3e at (&4, &6) &309d 04 e7 ; plot row of 8 sprites, regular &3e at (&4, &0) &309f 00 ; unused ; room_type_17_data &30a0 03 ; KRCY, 3 enemies &30a1 27 0e ; enemy at (&7, &2), type &0e, static &30a3 52 7f ; animation at (2, 5), type 3 &30a5 72 7f ; animation at (2, 7), type 3 &30a7 70 ; sprite base &60, &10 sprites &30a8 33 60 ; plot sprite, regular &66 at (&3, &3) &30aa 02 c9 ; plot row of 10 sprites, regular &6c at (&2, &0) &30ac 60 cb ; plot row of 12 sprites, regular &6c at (&0, &6) &30ae 12 01 ; plot row of 2 sprites, regular &60 at (&2, &1) &30b0 8c ; use sprite base &80 &30b1 48 20 ; plot sprite, large &02 at (&8, &4) &30b3 22 a0 ; plot sprite, large &0a at (&2, &2) &30b5 32 a0 ; plot sprite, large &0a at (&2, &3) &30b7 bc ; use sprite base &b0 &30b8 80 60 ; plot sprite, large &37 at (&0, &0) &30ba 54 40 ; plot sprite, large &34 at (&4, &5) &30bc d6 40 ; plot sprite, large &35 at (&6, &5) &30be 9c ; use sprite base &90 &30bf 15 40 ; plot sprite, large &14 at (&5, &1) &30c1 b5 40 ; plot sprite, large &15 at (&5, &3) &30c3 3c ; use sprite base &30 &30c4 99 22 ; plot row of 3 sprites, regular &33 at (&9, &1) &30c6 d9 22 ; plot row of 3 sprites, regular &33 at (&9, &5) &30c8 7c ; use sprite base &70 &30c9 1a 51 ; plot column of 5 sprites, regular &74 at (&a, &1) &30cb 0d ; toggle repeat &30cc 2c ; use sprite base &20 &30cd b2 a1 ; plot row of 2 sprites, regular &2b at (&2, &3) &30cf 00 ; unused ; room_type_18_data &30d0 03 ; KRCY, 3 enemies &30d1 75 7f ; animation at (5, 7), type 3 &30d3 4b 0c ; enemy at (&b, &4), type &0c, static &30d5 28 b5 ; enemy at (&8, &2), type &15, moving down &30d7 cf ; sprite base &c0, &0f sprites &30d8 b0 00 ; plot sprite, large &41 at (&0, &3) &30da 9c ; use sprite base &90 &30db 90 60 ; plot sprite, large &17 at (&0, &1) &30dd 50 60 ; plot sprite, large &16 at (&0, &5) &30df bc ; use sprite base &b0 &30e0 d2 c0 ; plot sprite, large &3d at (&2, &5) &30e2 3a e0 ; plot sprite, large &3e at (&a, &3) &30e4 92 60 ; plot sprite, large &37 at (&2, &1) &30e6 8c ; use sprite base &80 &30e7 35 a0 ; plot sprite, large &0a at (&5, &3) &30e9 5c ; use sprite base &50 &30ea 00 ab ; plot row of 12 sprites, regular &5a at (&0, &0) &30ec 2c ; use sprite base &20 &30ed 5b 4e ; plot column of 2 sprites, regular &24 at (&b, &5) &30ef 3c ; use sprite base &30 &30f0 59 21 ; plot row of 2 sprites, regular &32 at (&9, &5) &30f2 69 21 ; plot row of 2 sprites, regular &32 at (&9, &6) &30f4 6c ; use sprite base &60 &30f5 90 22 ; plot row of 3 sprites, regular &63 at (&0, &1) &30f7 1c ; use sprite base &10 &30f8 17 af ; plot column of 3 sprites, regular &1a at (&7, &1) &30fa 25 40 ; plot sprite, regular &14 at (&5, &2) &30fc 0e ; toggle flip &30fd c7 c0 ; plot sprite, regular &1d at (&7, &4) &30ff 00 ; unused ; room_type_19_data &3100 a2 84 ; KRCW, 2 enemies, generator at (&4, &8) &3102 7a 5f ; animation at (a, 7), type 2 &3104 2b 0c ; enemy at (&b, &2), type &0c, static &3106 2e ; sprite base &20, &0e sprites &3107 d2 00 ; plot sprite, regular &21 at (&2, &5) &3109 7c ; use sprite base &70 &310a c4 e0 ; plot sprite, regular &7f at (&4, &4) &310c 5c ; use sprite base &50 &310d 00 ab ; plot row of 12 sprites, regular &5a at (&0, &0) &310f 60 ab ; plot row of 12 sprites, regular &5a at (&0, &6) &3111 3c ; use sprite base &30 &3112 d0 0e ; plot column of 2 sprites, regular &31 at (&0, &5) &3114 4c ; use sprite base &40 &3115 c2 20 ; plot sprite, regular &43 at (&2, &4) &3117 1c ; use sprite base &10 &3118 c5 a0 ; plot sprite, regular &1b at (&5, &4) &311a 2b b0 ; plot column of 4 sprites, regular &1a at (&b, &2) &311c 8c ; use sprite base &80 &311d 3a a0 ; plot sprite, large &0a at (&a, &3) &311f bc ; use sprite base &b0 &3120 b0 e0 ; plot sprite, large &3f at (&0, &3) &3122 24 82 ; plot row of 3 sprites, large &38 at (&4, &2) &3124 ac ; use sprite base &a0 &3125 26 ae ; plot column of 2 sprites, large &2a at (&6, &2) &3127 9c ; use sprite base &90 &3128 84 c2 ; plot row of 3 sprites, large &1d at (&4, &0) &312a d6 a0 ; plot sprite, large &1b at (&6, &5) &312c 00 00 00 00 ; unused ; room_type_1a_data &3130 a2 27 ; KRCW, 2 enemies, generator at (&7, &2) &3132 40 0a ; enemy at (&0, &4), type &0a, static &3134 65 0c ; enemy at (&5, &6), type &0c, static &3136 30 ; sprite base &20, &10 sprites &3137 09 4e ; plot column of 2 sprites, regular &24 at (&9, &0) &3139 00 0e ; plot column of 2 sprites, regular &20 at (&0, &0) &313b 1c ; use sprite base &10 &313c 98 a0 ; plot sprite, regular &1b at (&8, &1) &313e 55 a0 ; plot sprite, regular &1a at (&5, &5) &3140 3c ; use sprite base &30 &3141 2b 00 ; plot sprite, regular &30 at (&b, &2) &3143 c5 20 ; plot sprite, regular &33 at (&5, &4) &3145 e0 e7 ; plot row of 8 sprites, regular &3f at (&0, &6) &3147 9c ; use sprite base &90 &3148 22 40 ; plot sprite, large &14 at (&2, &2) &314a c2 40 ; plot sprite, large &15 at (&2, &4) &314c 5a 60 ; plot sprite, large &16 at (&a, &5) &314e bc ; use sprite base &b0 &314f 19 60 ; plot sprite, large &36 at (&9, &1) &3151 58 40 ; plot sprite, large &34 at (&8, &5) &3153 ac ; use sprite base &a0 &3154 0a 60 ; plot sprite, large &26 at (&a, &0) &3156 cc ; use sprite base &c0 &3157 3a 00 ; plot sprite, large &40 at (&a, &3) &3159 5c ; use sprite base &50 &315a 81 b2 ; plot column of 6 sprites, regular &5b at (&1, &0) &315c 0e ; toggle flip &315d 84 b2 ; plot column of 6 sprites, regular &5b at (&4, &0) &315f 00 ; unused ; room_type_1b_data &3160 01 ; KRCY, 1 enemy &3161 37 a4 ; enemy at (&7, &3), type &04, moving down &3163 12 ; sprite base &00, &12 sprites &3164 e0 a3 ; plot row of 4 sprites, regular &0b at (&0, &6) &3166 1c ; use sprite base &10 &3167 b3 c0 ; plot sprite, regular &1d at (&3, &3) &3169 3c ; use sprite base &30 &316a 23 40 ; plot sprite, regular &34 at (&3, &2) &316c bb 20 ; plot sprite, regular &33 at (&b, &3) &316e 2c ; use sprite base &20 &316f ab 00 ; plot sprite, regular &21 at (&b, &2) &3171 8c ; use sprite base &80 &3172 0a c0 ; plot sprite, large &0c at (&a, &0) &3174 d4 80 ; plot sprite, large &09 at (&4, &5) &3176 d8 a0 ; plot sprite, large &0b at (&8, &5) &3178 42 60 ; plot sprite, large &06 at (&2, &4) &317a 56 60 ; plot sprite, large &06 at (&6, &5) &317c 9c ; use sprite base &90 &317d 5a 60 ; plot sprite, large &16 at (&a, &5) &317f 14 40 ; plot sprite, large &14 at (&4, &1) &3181 b4 40 ; plot sprite, large &15 at (&4, &3) &3183 ac ; use sprite base &a0 &3184 04 22 ; plot row of 3 sprites, large &22 at (&4, &0) &3186 82 20 ; plot sprite, large &23 at (&2, &0) &3188 80 40 ; plot sprite, large &25 at (&0, &0) &318a c0 40 ; plot sprite, large &25 at (&0, &4) &318c 20 40 ; plot sprite, large &24 at (&0, &2) &318e 00 00 ; unused ; room_type_1c_data &3190 02 ; KRCY, 2 enemies &3191 a3 0d ; enemy at (&3, &a), type &0d, static &3193 42 b6 ; enemy at (&2, &4), type &16, moving down &3195 90 ; sprite base &80, &10 sprites &3196 06 e0 ; plot sprite, large &0e at (&6, &0) &3198 d0 c0 ; plot sprite, large &0d at (&0, &5) &319a 9c ; use sprite base &90 &319b 80 62 ; plot row of 3 sprites, large &17 at (&0, &0) &319d b5 e0 ; plot sprite, large &1f at (&5, &3) &319f d5 e0 ; plot sprite, large &1f at (&5, &5) &31a1 2c ; use sprite base &20 &31a2 20 0f ; plot column of 3 sprites, regular &20 at (&0, &2) &31a4 e9 20 ; plot sprite, regular &23 at (&9, &6) &31a6 6a 21 ; plot row of 2 sprites, regular &22 at (&a, &6) &31a8 3c ; use sprite base &30 &31a9 88 e3 ; plot row of 4 sprites, regular &3f at (&8, &0) &31ab 4c ; use sprite base &40 &31ac c3 20 ; plot sprite, regular &43 at (&3, &4) &31ae b4 23 ; plot row of 4 sprites, regular &43 at (&4, &3) &31b0 19 31 ; plot column of 5 sprites, regular &42 at (&9, &1) &31b2 1c ; use sprite base &10 &31b3 d4 a0 ; plot sprite, regular &1b at (&4, &5) &31b5 18 a0 ; plot sprite, regular &1a at (&8, &1) &31b7 a8 c0 ; plot sprite, regular &1d at (&8, &2) &31b9 aa a1 ; plot row of 2 sprites, regular &1b at (&a, &2) &31bb 00 00 00 00 00 ; unused ; room_type_1d_data &31c0 0c ; KRYW, 4 enemies &31c1 62 12 ; enemy at (&2, &6), type &12, static &31c3 92 12 ; enemy at (&2, &9), type &12, static &31c5 20 b5 ; enemy at (&0, &2), type &15, moving down &31c7 25 0c ; enemy at (&5, &2), type &0c, static &31c9 0f ; sprite base &00, &0f sprites &31ca 8b b1 ; plot column of 5 sprites, regular &0b at (&b, &0) &31cc 3c ; use sprite base &30 &31cd 00 e0 ; plot sprite, regular &3e at (&0, &0) &31cf 60 e9 ; plot row of 10 sprites, regular &3e at (&0, &6) &31d1 4c ; use sprite base &40 &31d2 a2 60 ; plot sprite, regular &47 at (&2, &2) &31d4 0e ; toggle flip &31d5 0a 71 ; plot column of 5 sprites, regular &46 at (&a, &0) &31d7 8c ; use sprite base &80 &31d8 da a0 ; plot sprite, large &0b at (&a, &5) &31da 01 c0 ; plot sprite, large &0c at (&1, &0) &31dc 02 e0 ; plot sprite, large &0e at (&2, &0) &31de ac ; use sprite base &a0 &31df 46 00 ; plot sprite, large &20 at (&6, &4) &31e1 c8 00 ; plot sprite, large &21 at (&8, &4) &31e3 34 a0 ; plot sprite, large &2a at (&4, &3) &31e5 9c ; use sprite base &90 &31e6 d4 a0 ; plot sprite, large &1b at (&4, &5) &31e8 24 e0 ; plot sprite, large &1e at (&4, &2) &31ea 87 e0 ; plot sprite, large &1f at (&7, &0) &31ec a7 e0 ; plot sprite, large &1f at (&7, &2) &31ee 00 00 ; unused ; room_type_1e_data &31f0 09 ; KRYW, 1 enemy &31f1 47 a4 ; enemy at (&7, &4), type &04, moving down &31f3 d1 ; sprite base &c0, &11 sprites &31f4 39 00 ; plot sprite, large &40 at (&9, &3) &31f6 6c ; use sprite base &60 &31f7 3b 0e ; plot column of 2 sprites, regular &60 at (&b, &3) &31f9 88 23 ; plot row of 4 sprites, regular &63 at (&8, &0) &31fb bc ; use sprite base &b0 &31fc 18 60 ; plot sprite, large &36 at (&8, &1) &31fe 9c ; use sprite base &90 &31ff 9a 60 ; plot sprite, large &17 at (&a, &1) &3201 5a 80 ; plot sprite, large &18 at (&a, &5) &3203 81 ef ; plot column of 3 sprites, large &1f at (&1, &0) &3205 d1 e0 ; plot sprite, large &1f at (&1, &5) &3207 03 ce ; plot column of 2 sprites, large &1c at (&3, &0) &3209 b3 c0 ; plot sprite, large &1d at (&3, &3) &320b 3c ; use sprite base &30 &320c 80 13 ; plot column of 7 sprites, regular &31 at (&0, &0) &320e 65 e4 ; plot row of 5 sprites, regular &3e at (&5, &6) &3210 1c ; use sprite base &10 &3211 95 a2 ; plot row of 3 sprites, regular &1b at (&5, &1) &3213 d8 a1 ; plot row of 2 sprites, regular &1b at (&8, &5) &3215 57 c0 ; plot sprite, regular &1c at (&7, &5) &3217 e4 e0 ; plot sprite, regular &1f at (&4, &6) &3219 0e ; toggle flip &321a b5 e0 ; plot sprite, regular &1f at (&5, &3) &321c 00 00 00 00 ; unused ; room_type_1f_data &3220 0a ; KRYW, 2 enemies &3221 15 5f ; animation at (5, 1), type 2 &3223 47 b7 ; enemy at (&7, &4), type &17, moving down &3225 30 ; sprite base &20, &10 sprites &3226 94 80 ; plot sprite, regular &29 at (&4, &1) &3228 0b 60 ; plot sprite, regular &26 at (&b, &0) &322a 6c ; use sprite base &60 &322b 80 23 ; plot row of 4 sprites, regular &63 at (&0, &0) &322d 30 0e ; plot column of 2 sprites, regular &60 at (&0, &3) &322f 5c ; use sprite base &50 &3230 62 a4 ; plot row of 5 sprites, regular &5a at (&2, &6) &3232 8c ; use sprite base &80 &3233 d7 a0 ; plot sprite, large &0b at (&7, &5) &3235 05 a0 ; plot sprite, large &0a at (&5, &0) &3237 9c ; use sprite base &90 &3238 88 ee ; plot column of 2 sprites, large &1f at (&8, &0) &323a d0 80 ; plot sprite, large &19 at (&0, &5) &323c 90 60 ; plot sprite, large &17 at (&0, &1) &323e 58 61 ; plot row of 2 sprites, large &16 at (&8, &5) &3240 ac ; use sprite base &a0 &3241 37 00 ; plot sprite, large &20 at (&7, &3) &3243 b9 00 ; plot sprite, large &21 at (&9, &3) &3245 bc ; use sprite base &b0 &3246 92 60 ; plot sprite, large &37 at (&2, &1) &3248 cc ; use sprite base &c0 &3249 b1 00 ; plot sprite, large &41 at (&1, &3) &324b 3c ; use sprite base &30 &324c a6 80 ; plot sprite, regular &39 at (&6, &2) &324e 00 00 ; unused ; room_type_20_data &3250 83 48 ; KRCY, 3 enemies, generator at (&8, &4) &3252 41 12 ; enemy at (&1, &4), type &12, static &3254 71 12 ; enemy at (&1, &7), type &12, static &3256 02 0c ; enemy at (&2, &0), type &0c, static &3258 4f ; sprite base &40, &0f sprites &3259 e4 84 ; plot row of 5 sprites, regular &49 at (&4, &6) &325b d8 20 ; plot sprite, regular &43 at (&8, &5) &325d d5 20 ; plot sprite, regular &43 at (&5, &5) &325f 1c ; use sprite base &10 &3260 a9 a0 ; plot sprite, regular &1b at (&9, &2) &3262 a0 a0 ; plot sprite, regular &1b at (&0, &2) &3264 c0 a0 ; plot sprite, regular &1b at (&0, &4) &3266 12 a0 ; plot sprite, regular &1a at (&2, &1) &3268 0e ; toggle flip &3269 a2 c0 ; plot sprite, regular &1d at (&2, &2) &326b 8c ; use sprite base &80 &326c 00 e0 ; plot sprite, large &0e at (&0, &0) &326e d2 c0 ; plot sprite, large &0d at (&2, &5) &3270 d9 a0 ; plot sprite, large &0b at (&9, &5) &3272 ac ; use sprite base &a0 &3273 1a ae ; plot column of 2 sprites, large &2a at (&a, &1) &3275 bc ; use sprite base &b0 &3276 8a 20 ; plot sprite, large &33 at (&a, &0) &3278 9c ; use sprite base &90 &3279 50 60 ; plot sprite, large &16 at (&0, &5) &327b 5a 60 ; plot sprite, large &16 at (&a, &5) &327d 00 00 00 ; unused ; room_type_21_data &3280 a2 87 ; KRCW, 2 enemies, generator at (&7, &8) &3282 63 6f ; enemy at (&3, &6), type &0f, moving left &3284 66 0d ; enemy at (&6, &6), type &0d, static &3286 70 ; sprite base &60, &10 sprites &3287 60 cb ; plot row of 12 sprites, regular &6c at (&0, &6) &3289 ac ; use sprite base &a0 &328a 53 c0 ; plot sprite, large &2c at (&3, &5) &328c d5 c0 ; plot sprite, large &2d at (&5, &5) &328e 3c ; use sprite base &30 &328f 66 62 ; plot row of 3 sprites, regular &36 at (&6, &6) &3291 a0 70 ; plot column of 4 sprites, regular &37 at (&0, &2) &3293 ab 70 ; plot column of 4 sprites, regular &37 at (&b, &2) &3295 1c ; use sprite base &10 &3296 c6 80 ; plot sprite, regular &19 at (&6, &4) &3298 4a ae ; plot column of 2 sprites, regular &1a at (&a, &4) &329a 3a c0 ; plot sprite, regular &1c at (&a, &3) &329c bc ; use sprite base &b0 &329d 80 65 ; plot row of 6 sprites, large &37 at (&0, &0) &329f 02 60 ; plot sprite, large &36 at (&2, &0) &32a1 06 60 ; plot sprite, large &36 at (&6, &0) &32a3 0a 60 ; plot sprite, large &36 at (&a, &0) &32a5 23 80 ; plot sprite, large &38 at (&3, &2) &32a7 27 80 ; plot sprite, large &38 at (&7, &2) &32a9 7c ; use sprite base &70 &32aa c7 e0 ; plot sprite, regular &7f at (&7, &4) &32ac 00 00 00 00 ; unused ; room_type_22_data &32b0 0a ; KRYW, 2 enemies &32b1 a1 0a ; enemy at (&1, &a), type &0a, static &32b3 a2 0a ; enemy at (&2, &a), type &0a, static &32b5 b1 ; sprite base &a0, &11 sprites &32b6 40 c0 ; plot sprite, large &2c at (&0, &4) &32b8 c2 c0 ; plot sprite, large &2d at (&2, &4) &32ba 6c ; use sprite base &60 &32bb 60 ab ; plot row of 12 sprites, regular &6a at (&0, &6) &32bd 9c ; use sprite base &90 &32be 80 60 ; plot sprite, large &17 at (&0, &0) &32c0 bc ; use sprite base &b0 &32c1 20 00 ; plot sprite, large &30 at (&0, &2) &32c3 a2 00 ; plot sprite, large &31 at (&2, &2) &32c5 82 60 ; plot sprite, large &37 at (&2, &0) &32c7 3c ; use sprite base &30 &32c8 b8 40 ; plot sprite, regular &35 at (&8, &3) &32ca 04 07 ; plot row of 8 sprites, regular &30 at (&4, &0) &32cc 7c ; use sprite base &70 &32cd 16 04 ; plot row of 5 sprites, regular &70 at (&6, &1) &32cf 17 22 ; plot row of 3 sprites, regular &72 at (&7, &1) &32d1 56 04 ; plot row of 5 sprites, regular &70 at (&6, &5) &32d3 57 22 ; plot row of 3 sprites, regular &72 at (&7, &5) &32d5 a6 0f ; plot column of 3 sprites, regular &71 at (&6, &2) &32d7 aa 0f ; plot column of 3 sprites, regular &71 at (&a, &2) &32d9 1c ; use sprite base &10 &32da 14 ae ; plot column of 2 sprites, regular &1a at (&4, &1) &32dc 0e ; toggle flip &32dd b4 c0 ; plot sprite, regular &1d at (&4, &3) &32df 00 ; unused ; room_type_23_data &32e0 03 ; KRCY, 3 enemies &32e1 85 0c ; enemy at (&5, &8), type &0c, static &32e3 20 a4 ; enemy at (&0, &2), type &04, moving down &32e5 03 f1 ; enemy at (&3, &0), type &11, moving right &32e7 6d ; sprite base &60, &0d sprites &32e8 27 04 ; plot row of 5 sprites, regular &60 at (&7, &2) &32ea bc ; use sprite base &b0 &32eb 36 40 ; plot sprite, large &34 at (&6, &3) &32ed 54 40 ; plot sprite, large &34 at (&4, &5) &32ef 21 80 ; plot sprite, large &38 at (&1, &2) &32f1 9c ; use sprite base &90 &32f2 81 c0 ; plot sprite, large &1d at (&1, &0) &32f4 38 61 ; plot row of 2 sprites, large &16 at (&8, &3) &32f6 56 62 ; plot row of 3 sprites, large &16 at (&6, &5) &32f8 0a 80 ; plot sprite, large &18 at (&a, &0) &32fa 5c ; use sprite base &50 &32fb 00 a0 ; plot sprite, regular &5a at (&0, &0) &32fd 60 a3 ; plot row of 4 sprites, regular &5a at (&0, &6) &32ff 1c ; use sprite base &10 &3300 09 ae ; plot column of 2 sprites, regular &1a at (&9, &0) &3302 53 a0 ; plot sprite, regular &1a at (&3, &5) &3304 3c ; use sprite base &30 &3305 43 a0 ; plot sprite, regular &3a at (&3, &4) &3307 00 00 00 00 00 00 00 00 00 ; unused ; room_type_24_data &3310 01 ; KRCY, 1 enemy &3311 25 0a ; enemy at (&5, &2), type &0a, static &3313 52 ; sprite base &40, &12 sprites &3314 1a a0 ; plot sprite, regular &4a at (&a, &1) &3316 a4 26 ; plot row of 7 sprites, regular &43 at (&4, &2) &3318 2c ; use sprite base &20 &3319 0b 4f ; plot column of 3 sprites, regular &24 at (&b, &0) &331b 1c ; use sprite base &10 &331c d2 a2 ; plot row of 3 sprites, regular &1b at (&2, &5) &331e 35 ae ; plot column of 2 sprites, regular &1a at (&5, &3) &3320 94 a0 ; plot sprite, regular &1b at (&4, &1) &3322 0e ; toggle flip &3323 d5 c0 ; plot sprite, regular &1d at (&5, &5) &3325 cc ; use sprite base &c0 &3326 40 00 ; plot sprite, large &40 at (&0, &4) &3328 ac ; use sprite base &a0 &3329 47 c0 ; plot sprite, large &2c at (&7, &4) &332b c9 c0 ; plot sprite, large &2d at (&9, &4) &332d d8 a0 ; plot sprite, large &2b at (&8, &5) &332f 9c ; use sprite base &90 &3330 5a 80 ; plot sprite, large &18 at (&a, &5) &3332 00 60 ; plot sprite, large &16 at (&0, &0) &3334 a0 60 ; plot sprite, large &17 at (&0, &2) &3336 d0 80 ; plot sprite, large &19 at (&0, &5) &3338 8c ; use sprite base &80 &3339 82 c0 ; plot sprite, large &0d at (&2, &0) &333b 22 e0 ; plot sprite, large &0e at (&2, &2) &333d ba a0 ; plot sprite, large &0b at (&a, &3) &333f 00 ; unused ; room_type_25_data &3340 1a ; KRYW, 2 enemies &3341 3b 07 ; enemy at (&b, &3), type &07, static &3343 a4 0c ; enemy at (&4, &a), type &0c, static &3345 10 ; sprite base &00, &10 sprites &3346 82 a3 ; plot row of 4 sprites, regular &0b at (&2, &0) &3348 ac ; use sprite base &a0 &3349 56 c0 ; plot sprite, large &2c at (&6, &5) &334b d8 c0 ; plot sprite, large &2d at (&8, &5) &334d 12 80 ; plot sprite, large &28 at (&2, &1) &334f 08 21 ; plot row of 2 sprites, large &22 at (&8, &0) &3351 86 20 ; plot sprite, large &23 at (&6, &0) &3353 1c ; use sprite base &10 &3354 e4 c0 ; plot sprite, regular &1d at (&4, &6) &3356 e5 a1 ; plot row of 2 sprites, regular &1b at (&5, &6) &3358 2c ; use sprite base &20 &3359 2b 0f ; plot column of 3 sprites, regular &20 at (&b, &2) &335b 4c ; use sprite base &40 &335c 00 d3 ; plot column of 7 sprites, regular &4c at (&0, &0) &335e 01 d3 ; plot column of 7 sprites, regular &4c at (&1, &0) &3360 4c ; use sprite base &40 &3361 0e ; toggle flip &3362 42 a0 ; plot sprite, regular &4a at (&2, &4) &3364 8c ; use sprite base &80 &3365 da a0 ; plot sprite, large &0b at (&a, &5) &3367 bc ; use sprite base &b0 &3368 14 20 ; plot sprite, large &32 at (&4, &1) &336a 36 00 ; plot sprite, large &30 at (&6, &3) &336c b8 00 ; plot sprite, large &31 at (&8, &3) &336e 00 00 ; unused ; room_type_26_data &3370 98 44 ; KRYW, 0 enemies, generator at (&4, &4) &3372 11 ; sprite base &00, &11 sprites &3373 80 ab ; plot row of 12 sprites, regular &0b at (&0, &0) &3375 4c ; use sprite base &40 &3376 62 e5 ; plot row of 6 sprites, regular &4e at (&2, &6) &3378 7c ; use sprite base &70 &3379 a4 e0 ; plot sprite, regular &7f at (&4, &2) &337b 8c ; use sprite base &80 &337c d0 c0 ; plot sprite, large &0d at (&0, &5) &337e d8 40 ; plot sprite, large &05 at (&8, &5) &3380 9c ; use sprite base &90 &3381 d4 a0 ; plot sprite, large &1b at (&4, &5) &3383 ac ; use sprite base &a0 &3384 00 80 ; plot sprite, large &28 at (&0, &0) &3386 da 40 ; plot sprite, large &25 at (&a, &5) &3388 9a 40 ; plot sprite, large &25 at (&a, &1) &338a 82 20 ; plot sprite, large &23 at (&2, &0) &338c 04 80 ; plot sprite, large &28 at (&4, &0) &338e 16 80 ; plot sprite, large &28 at (&6, &1) &3390 18 80 ; plot sprite, large &28 at (&8, &1) &3392 ba 80 ; plot sprite, large &29 at (&a, &3) &3394 4c ; use sprite base &40 &3395 94 a0 ; plot sprite, regular &4b at (&4, &1) &3397 a8 40 ; plot sprite, regular &45 at (&8, &2) &3399 0e ; toggle flip &339a 5c ; use sprite base &50 &339b a6 20 ; plot sprite, regular &53 at (&6, &2) &339d a6 20 a6 ; unused ; room_type_27_data &33a0 83 68 ; KRCY, 3 enemies, generator at (&8, &6) &33a2 60 08 ; enemy at (&0, &6), type &08, static &33a4 04 0c ; enemy at (&4, &0), type &0c, static &33a6 32 3f ; animation at (2, 3), type 1 &33a8 30 ; sprite base &20, &10 sprites &33a9 80 53 ; plot column of 7 sprites, regular &25 at (&0, &0) &33ab 7c ; use sprite base &70 &33ac b8 e0 ; plot sprite, regular &7f at (&8, &3) &33ae 3c ; use sprite base &30 &33af 81 11 ; plot column of 5 sprites, regular &31 at (&1, &0) &33b1 0b 00 ; plot sprite, regular &30 at (&b, &0) &33b3 9b 70 ; plot column of 4 sprites, regular &37 at (&b, &1) &33b5 1c ; use sprite base &10 &33b6 b2 a0 ; plot sprite, regular &1b at (&2, &3) &33b8 28 a0 ; plot sprite, regular &1a at (&8, &2) &33ba 18 c0 ; plot sprite, regular &1c at (&8, &1) &33bc 0e ; toggle flip &33bd 94 c0 ; plot sprite, regular &1d at (&4, &1) &33bf b3 c0 ; plot sprite, regular &1d at (&3, &3) &33c1 8c ; use sprite base &80 &33c2 d0 e0 ; plot sprite, large &0f at (&0, &5) &33c4 12 a0 ; plot sprite, large &0a at (&2, &1) &33c6 d2 c0 ; plot sprite, large &0d at (&2, &5) &33c8 d6 a0 ; plot sprite, large &0b at (&6, &5) &33ca 9c ; use sprite base &90 &33cb 58 61 ; plot row of 2 sprites, large &16 at (&8, &5) &33cd 89 c0 ; plot sprite, large &1d at (&9, &0) &33cf 00 ; unused ; room_type_28_data &33d0 02 ; KRCY, 2 enemies &33d1 10 06 ; enemy at (&0, &1), type &06, static &33d3 b0 06 ; enemy at (&0, &b), type &06, static &33d5 b0 ; sprite base &a0, &10 sprites &33d6 52 c0 ; plot sprite, large &2c at (&2, &5) &33d8 cc ; use sprite base &c0 &33d9 95 e2 ; plot row of 3 sprites, large &4f at (&5, &1) &33db b5 e2 ; plot row of 3 sprites, large &4f at (&5, &3) &33dd bc ; use sprite base &b0 &33de 32 00 ; plot sprite, large &30 at (&2, &3) &33e0 80 60 ; plot sprite, large &37 at (&0, &0) &33e2 0a 60 ; plot sprite, large &36 at (&a, &0) &33e4 d0 40 ; plot sprite, large &35 at (&0, &5) &33e6 2a ee ; plot column of 2 sprites, large &3e at (&a, &2) &33e8 5c ; use sprite base &50 &33e9 a0 af ; plot column of 3 sprites, regular &5b at (&0, &2) &33eb 1c ; use sprite base &10 &33ec c1 a0 ; plot sprite, regular &1b at (&1, &4) &33ee 23 a0 ; plot sprite, regular &1a at (&3, &2) &33f0 13 c0 ; plot sprite, regular &1c at (&3, &1) &33f2 6c ; use sprite base &60 &33f3 62 c9 ; plot row of 10 sprites, regular &6c at (&2, &6) &33f5 e7 40 ; plot sprite, regular &65 at (&7, &6) &33f7 02 c7 ; plot row of 8 sprites, regular &6c at (&2, &0) &33f9 94 91 ; plot column of 5 sprites, regular &69 at (&4, &1) &33fb 00 00 00 00 00 ; unused ; room_type_29_data &3400 03 ; KRCY, 3 enemies &3401 01 b3 ; enemy at (&1, &0), type &13, moving down &3403 64 3f ; animation at (4, 6), type 1 &3405 58 1f ; animation at (8, 5), type 0 &3407 b1 ; sprite base &a0, &11 sprites &3408 da 40 ; plot sprite, large &25 at (&a, &5) &340a ba 80 ; plot sprite, large &29 at (&a, &3) &340c 38 a0 ; plot sprite, large &2a at (&8, &3) &340e 8c ; use sprite base &80 &340f d0 80 ; plot sprite, large &09 at (&0, &5) &3411 52 60 ; plot sprite, large &06 at (&2, &5) &3413 aa 40 ; plot sprite, large &05 at (&a, &2) &3415 28 a0 ; plot sprite, large &0a at (&8, &2) &3417 9c ; use sprite base &90 &3418 d4 a2 ; plot row of 3 sprites, large &1b at (&4, &5) &341a 36 40 ; plot sprite, large &14 at (&6, &3) &341c d6 40 ; plot sprite, large &15 at (&6, &5) &341e 6c ; use sprite base &60 &341f 86 b0 ; plot column of 4 sprites, regular &6b at (&6, &0) &3421 87 b0 ; plot column of 4 sprites, regular &6b at (&7, &0) &3423 99 00 ; plot sprite, regular &61 at (&9, &1) &3425 5c ; use sprite base &50 &3426 c4 a0 ; plot sprite, regular &5b at (&4, &4) &3428 1c ; use sprite base &10 &3429 80 60 ; plot sprite, regular &17 at (&0, &0) &342b a2 60 ; plot sprite, regular &17 at (&2, &2) &342d 9b 60 ; plot sprite, regular &17 at (&b, &1) &342f 00 ; unused ; room_type_2a_data &3430 1d ; KRYW, 5 enemies &3431 36 3f ; animation at (6, 3), type 1 &3433 38 3f ; animation at (8, 3), type 1 &3435 25 0d ; enemy at (&5, &2), type &0d, static &3437 2a 0d ; enemy at (&a, &2), type &0d, static &3439 96 f3 ; enemy at (&6, &9), type &13, moving right &343b af ; sprite base &a0, &0f sprites &343c 80 20 ; plot sprite, large &23 at (&0, &0) &343e 02 20 ; plot sprite, large &22 at (&2, &0) &3440 ba 8e ; plot column of 2 sprites, large &29 at (&a, &3) &3442 9c ; use sprite base &90 &3443 06 62 ; plot row of 3 sprites, large &16 at (&6, &0) &3445 a6 62 ; plot row of 3 sprites, large &17 at (&6, &2) &3447 04 80 ; plot sprite, large &18 at (&4, &0) &3449 8c ; use sprite base &80 &344a 24 c0 ; plot sprite, large &0c at (&4, &2) &344c d0 c0 ; plot sprite, large &0d at (&0, &5) &344e 16 a0 ; plot sprite, large &0a at (&6, &1) &3450 18 a0 ; plot sprite, large &0a at (&8, &1) &3452 4c ; use sprite base &40 &3453 e3 22 ; plot row of 3 sprites, regular &43 at (&3, &6) &3455 e8 21 ; plot row of 2 sprites, regular &43 at (&8, &6) &3457 1c ; use sprite base &10 &3458 a1 a2 ; plot row of 3 sprites, regular &1b at (&1, &2) &345a 30 ae ; plot column of 2 sprites, regular &1a at (&0, &3) &345c 20 c0 ; plot sprite, regular &1c at (&0, &2) &345e 00 00 ; unused ; room_type_2b_data &3460 12 ; KRCY, 2 enemies &3461 27 a7 ; enemy at (&7, &2), type &07, moving down &3463 2a b6 ; enemy at (&a, &2), type &16, moving down &3465 31 ; sprite base &20, &11 sprites &3466 e0 42 ; plot row of 3 sprites, regular &25 at (&0, &6) &3468 04 60 ; plot sprite, regular &26 at (&4, &0) &346a 3c ; use sprite base &30 &346b 07 00 ; plot sprite, regular &30 at (&7, &0) &346d 80 10 ; plot column of 4 sprites, regular &31 at (&0, &0) &346f e3 00 ; plot sprite, regular &31 at (&3, &6) &3471 9c ; use sprite base &90 &3472 81 ee ; plot column of 2 sprites, large &1f at (&1, &0) &3474 85 c0 ; plot sprite, large &1d at (&5, &0) &3476 40 60 ; plot sprite, large &16 at (&0, &4) &3478 9c ; use sprite base &90 &3479 15 40 ; plot sprite, large &14 at (&5, &1) &347b b5 40 ; plot sprite, large &15 at (&5, &3) &347d 8c ; use sprite base &80 &347e d8 81 ; plot row of 2 sprites, large &09 at (&8, &5) &3480 d4 a0 ; plot sprite, large &0b at (&4, &5) &3482 d6 c0 ; plot sprite, large &0d at (&6, &5) &3484 4c ; use sprite base &40 &3485 88 40 ; plot sprite, regular &45 at (&8, &0) &3487 09 42 ; plot row of 3 sprites, regular &44 at (&9, &0) &3489 14 a0 ; plot sprite, regular &4a at (&4, &1) &348b bc ; use sprite base &b0 &348c c2 40 ; plot sprite, large &35 at (&2, &4) &348e 00 00 ; unused ; room_type_2c_data &3490 23 ; KRCW, 3 enemies &3491 c1 06 ; enemy at (&1, &c), type &06, static &3493 c2 06 ; enemy at (&2, &c), type &06, static &3495 6b 09 ; enemy at (&b, &6), type &09, static &3497 71 ; sprite base &60, &11 sprites &3498 a1 ae ; plot column of 2 sprites, regular &6b at (&1, &2) &349a ab a0 ; plot sprite, regular &6b at (&b, &2) &349c 3c ; use sprite base &30 &349d 60 eb ; plot row of 12 sprites, regular &3e at (&0, &6) &349f 00 e2 ; plot row of 3 sprites, regular &3e at (&0, &0) &34a1 50 20 ; plot sprite, regular &32 at (&0, &5) &34a3 1c ; use sprite base &10 &34a4 11 c0 ; plot sprite, regular &1c at (&1, &1) &34a6 c4 c0 ; plot sprite, regular &1d at (&4, &4) &34a8 24 ae ; plot column of 2 sprites, regular &1a at (&4, &2) &34aa 92 a0 ; plot sprite, regular &1b at (&2, &1) &34ac dc ; use sprite base &d0 &34ad 41 20 ; plot sprite, large &52 at (&1, &4) &34af c5 00 ; plot sprite, large &51 at (&5, &4) &34b1 9c ; use sprite base &90 &34b2 86 62 ; plot row of 3 sprites, large &17 at (&6, &0) &34b4 83 c0 ; plot sprite, large &1d at (&3, &0) &34b6 95 c0 ; plot sprite, large &1d at (&5, &1) &34b8 05 c0 ; plot sprite, large &1c at (&5, &0) &34ba a8 a0 ; plot sprite, large &1b at (&8, &2) &34bc c8 c0 ; plot sprite, large &1d at (&8, &4) &34be 00 00 ; unused ; room_type_2d_data &34c0 82 61 ; KRCY, 2 enemies, generator at (&1, &6) &34c2 40 0c ; enemy at (&0, &4), type &0c, static &34c4 46 b5 ; enemy at (&6, &4), type &15, moving down &34c6 10 ; sprite base &00, &10 sprites &34c7 e2 a9 ; plot row of 10 sprites, regular &0b at (&2, &6) &34c9 1c ; use sprite base &10 &34ca 90 60 ; plot sprite, regular &17 at (&0, &1) &34cc 03 80 ; plot sprite, regular &18 at (&3, &0) &34ce a5 60 ; plot sprite, regular &17 at (&5, &2) &34d0 89 60 ; plot sprite, regular &17 at (&9, &0) &34d2 97 60 ; plot sprite, regular &17 at (&7, &1) &34d4 8c ; use sprite base &80 &34d5 c2 40 ; plot sprite, large &05 at (&2, &4) &34d7 44 60 ; plot sprite, large &06 at (&4, &4) &34d9 c6 60 ; plot sprite, large &07 at (&6, &4) &34db c8 00 ; plot sprite, large &01 at (&8, &4) &34dd 4a 40 ; plot sprite, large &04 at (&a, &4) &34df aa 20 ; plot sprite, large &03 at (&a, &2) &34e1 0a 20 ; plot sprite, large &02 at (&a, &0) &34e3 28 00 ; plot sprite, large &00 at (&8, &2) &34e5 d0 80 ; plot sprite, large &09 at (&0, &5) &34e7 30 80 ; plot sprite, large &08 at (&0, &3) &34e9 00 00 00 00 00 00 00 ; unused ; room_type_2e_data &34f0 11 ; KRCY, 1 enemy &34f1 18 3f ; animation at (8, 1), type 1 &34f3 92 ; sprite base &80, &12 sprites &34f4 d0 83 ; plot row of 4 sprites, large &09 at (&0, &5) &34f6 d7 a0 ; plot sprite, large &0b at (&7, &5) &34f8 9c ; use sprite base &90 &34f9 58 61 ; plot row of 2 sprites, large &16 at (&8, &5) &34fb 08 00 ; plot sprite, large &10 at (&8, &0) &34fd 0a 20 ; plot sprite, large &12 at (&a, &0) &34ff a8 00 ; plot sprite, large &11 at (&8, &2) &3501 aa 20 ; plot sprite, large &13 at (&a, &2) &3503 12 40 ; plot sprite, large &14 at (&2, &1) &3505 b2 40 ; plot sprite, large &15 at (&2, &3) &3507 d2 a0 ; plot sprite, large &1b at (&2, &5) &3509 ac ; use sprite base &a0 &350a 00 23 ; plot row of 4 sprites, large &22 at (&0, &0) &350c 03 80 ; plot sprite, large &28 at (&3, &0) &350e 86 20 ; plot sprite, large &23 at (&6, &0) &3510 ba 80 ; plot sprite, large &29 at (&a, &3) &3512 0c ; use sprite base &00 &3513 95 b1 ; plot column of 5 sprites, regular &0b at (&5, &1) &3515 1c ; use sprite base &10 &3516 b4 a4 ; plot row of 5 sprites, regular &1b at (&4, &3) &3518 0e ; toggle flip &3519 b9 c0 ; plot sprite, regular &1d at (&9, &3) &351b 6c ; use sprite base &60 &351c 25 0f ; plot column of 3 sprites, regular &60 at (&5, &2) &351e 00 00 ; unused ; room_type_2f_data &3520 04 ; KRCY, 4 enemies &3521 31 1f ; animation at (1, 3), type 0 &3523 33 3f ; animation at (3, 3), type 1 &3525 71 5f ; animation at (1, 7), type 2 &3527 73 7f ; animation at (3, 7), type 3 &3529 af ; sprite base &a0, &0f sprites &352a 57 c0 ; plot sprite, large &2c at (&7, &5) &352c d9 c0 ; plot sprite, large &2d at (&9, &5) &352e 5c ; use sprite base &50 &352f e0 e3 ; plot row of 4 sprites, regular &5f at (&0, &6) &3531 cc ; use sprite base &c0 &3532 5a 00 ; plot sprite, large &40 at (&a, &5) &3534 9c ; use sprite base &90 &3535 86 62 ; plot row of 3 sprites, large &17 at (&6, &0) &3537 c0 61 ; plot row of 2 sprites, large &17 at (&0, &4) &3539 84 8e ; plot column of 2 sprites, large &19 at (&4, &0) &353b 8c ; use sprite base &80 &353c 44 e0 ; plot sprite, large &0e at (&4, &4) &353e 80 ee ; plot column of 2 sprites, large &0f at (&0, &0) &3540 82 e0 ; plot sprite, large &0f at (&2, &0) &3542 11 a1 ; plot row of 2 sprites, large &0a at (&1, &1) &3544 31 a1 ; plot row of 2 sprites, large &0a at (&1, &3) &3546 bc ; use sprite base &b0 &3547 37 00 ; plot sprite, large &30 at (&7, &3) &3549 b9 00 ; plot sprite, large &31 at (&9, &3) &354b 3c ; use sprite base &30 &354c ab 80 ; plot sprite, regular &39 at (&b, &2) &354e 00 00 ; unused ; room_type_30_data &3550 02 ; KRCY, 2 enemies &3551 28 0c ; enemy at (&8, &2), type &0c, static &3553 12 fd ; enemy at (&2, &1), type &1d, moving right &3555 91 ; sprite base &80, &11 sprites &3556 0a c0 ; plot sprite, large &0c at (&a, &0) &3558 9c ; use sprite base &90 &3559 54 61 ; plot row of 2 sprites, large &16 at (&4, &5) &355b 15 40 ; plot sprite, large &14 at (&5, &1) &355d b5 40 ; plot sprite, large &15 at (&5, &3) &355f bc ; use sprite base &b0 &3560 52 c0 ; plot sprite, large &3c at (&2, &5) &3562 d7 40 ; plot sprite, large &35 at (&7, &5) &3564 cc ; use sprite base &c0 &3565 80 00 ; plot sprite, large &41 at (&0, &0) &3567 d0 00 ; plot sprite, large &41 at (&0, &5) &3569 2c ; use sprite base &20 &356a 69 22 ; plot row of 3 sprites, regular &22 at (&9, &6) &356c 2b 0e ; plot column of 2 sprites, regular &20 at (&b, &2) &356e 6c ; use sprite base &60 &356f 21 af ; plot column of 3 sprites, regular &6a at (&1, &2) &3571 42 62 ; plot row of 3 sprites, regular &66 at (&2, &4) &3573 1c ; use sprite base &10 &3574 89 e0 ; plot sprite, regular &1f at (&9, &0) &3576 cb 20 ; plot sprite, regular &13 at (&b, &4) &3578 b7 a0 ; plot sprite, regular &1b at (&7, &3) &357a 28 a0 ; plot sprite, regular &1a at (&8, &2) &357c 0e ; toggle flip &357d b8 c0 ; plot sprite, regular &1d at (&8, &3) &357f 00 ; unused ; room_type_31_data &3580 03 ; KRCY, 3 enemies &3581 63 b3 ; enemy at (&3, &6), type &13, moving down &3583 a7 0b ; enemy at (&7, &a), type &0b, static &3585 a8 0b ; enemy at (&8, &a), type &0b, static &3587 30 ; sprite base &20, &10 sprites &3588 60 23 ; plot row of 4 sprites, regular &22 at (&0, &6) &358a 9c ; use sprite base &90 &358b 56 61 ; plot row of 2 sprites, large &16 at (&6, &5) &358d 0a 8f ; plot column of 3 sprites, large &18 at (&a, &0) &358f 00 60 ; plot sprite, large &16 at (&0, &0) &3591 8c ; use sprite base &80 &3592 da e0 ; plot sprite, large &0f at (&a, &5) &3594 bc ; use sprite base &b0 &3595 54 40 ; plot sprite, large &34 at (&4, &5) &3597 81 e0 ; plot sprite, large &3f at (&1, &0) &3599 1c ; use sprite base &10 &359a 25 ae ; plot column of 2 sprites, regular &1a at (&5, &2) &359c 96 a3 ; plot row of 4 sprites, regular &1b at (&6, &1) &359e 15 c0 ; plot sprite, regular &1c at (&5, &1) &35a0 3c ; use sprite base &30 &35a1 10 00 ; plot sprite, regular &30 at (&0, &1) &35a3 44 22 ; plot row of 3 sprites, regular &32 at (&4, &4) &35a5 38 21 ; plot row of 2 sprites, regular &32 at (&8, &3) &35a7 29 20 ; plot sprite, regular &32 at (&9, &2) &35a9 5c ; use sprite base &50 &35aa a0 b0 ; plot column of 4 sprites, regular &5b at (&0, &2) &35ac 4c ; use sprite base &40 &35ad d7 81 ; plot row of 2 sprites, regular &49 at (&7, &5) &35af 00 ; unused ; room_type_32_data &35b0 98 44 ; KRYW, 0 enemies, generator at (&4, &4) &35b2 11 ; sprite base &00, &11 sprites &35b3 e2 a1 ; plot row of 2 sprites, regular &0b at (&2, &6) &35b5 1c ; use sprite base &10 &35b6 66 03 ; plot row of 4 sprites, regular &10 at (&6, &6) &35b8 89 a0 ; plot sprite, regular &1b at (&9, &0) &35ba a2 a1 ; plot row of 2 sprites, regular &1b at (&2, &2) &35bc 3c ; use sprite base &30 &35bd ab 6f ; plot column of 3 sprites, regular &37 at (&b, &2) &35bf 7c ; use sprite base &70 &35c0 a4 e0 ; plot sprite, regular &7f at (&4, &2) &35c2 4c ; use sprite base &40 &35c3 00 d3 ; plot column of 7 sprites, regular &4c at (&0, &0) &35c5 01 d3 ; plot column of 7 sprites, regular &4c at (&1, &0) &35c7 06 a0 ; plot sprite, regular &4a at (&6, &0) &35c9 8c ; use sprite base &80 &35ca 42 60 ; plot sprite, large &06 at (&2, &4) &35cc 54 60 ; plot sprite, large &06 at (&4, &5) &35ce da a0 ; plot sprite, large &0b at (&a, &5) &35d0 0a c0 ; plot sprite, large &0c at (&a, &0) &35d2 ac ; use sprite base &a0 &35d3 87 a0 ; plot sprite, large &2b at (&7, &0) &35d5 a7 a0 ; plot sprite, large &2b at (&7, &2) &35d7 46 e0 ; plot sprite, large &2e at (&6, &4) &35d9 c8 e0 ; plot sprite, large &2f at (&8, &4) &35db 00 00 00 00 00 ; unused ; room_type_33_data &35e0 1c ; KRYW, 4 enemies &35e1 40 ba ; enemy at (&0, &4), type &1a, moving down &35e3 41 bc ; enemy at (&1, &4), type &1c, moving down &35e5 63 0d ; enemy at (&3, &6), type &0d, static &35e7 66 0d ; enemy at (&6, &6), type &0d, static &35e9 0f ; sprite base &00, &0f sprites &35ea e8 a3 ; plot row of 4 sprites, regular &0b at (&8, &6) &35ec da a1 ; plot row of 2 sprites, regular &0b at (&a, &5) &35ee 2c ; use sprite base &20 &35ef a3 00 ; plot sprite, regular &21 at (&3, &2) &35f1 a6 00 ; plot sprite, regular &21 at (&6, &2) &35f3 3c ; use sprite base &30 &35f4 aa 41 ; plot row of 2 sprites, regular &35 at (&a, &2) &35f6 8c ; use sprite base &80 &35f7 d4 40 ; plot sprite, large &05 at (&4, &5) &35f9 d6 80 ; plot sprite, large &09 at (&6, &5) &35fb c8 40 ; plot sprite, large &05 at (&8, &4) &35fd ba 40 ; plot sprite, large &05 at (&a, &3) &35ff 9c ; use sprite base &90 &3600 82 c0 ; plot sprite, large &1d at (&2, &0) &3602 86 c0 ; plot sprite, large &1d at (&6, &0) &3604 d0 a1 ; plot row of 2 sprites, large &1b at (&0, &5) &3606 ac ; use sprite base &a0 &3607 08 20 ; plot sprite, large &22 at (&8, &0) &3609 8a 60 ; plot sprite, large &27 at (&a, &0) &360b 00 60 ; plot sprite, large &26 at (&0, &0) &360d 00 00 00 ; unused ; room_type_34_data &3610 1a ; KRYW, 2 enemies &3611 46 70 ; enemy at (&6, &4), type &10, moving left &3613 89 22 ; enemy at (&9, &8), type &02, moving up &3615 0e ; sprite base &00, &0e sprites &3616 e0 a9 ; plot row of 10 sprites, regular &0b at (&0, &6) &3618 d0 a1 ; plot row of 2 sprites, regular &0b at (&0, &5) &361a 2c ; use sprite base &20 &361b ab 00 ; plot sprite, regular &21 at (&b, &2) &361d 3c ; use sprite base &30 &361e bb 80 ; plot sprite, regular &39 at (&b, &3) &3620 ac ; use sprite base &a0 &3621 00 24 ; plot row of 5 sprites, large &22 at (&0, &0) &3623 9c ; use sprite base &90 &3624 82 c0 ; plot sprite, large &1d at (&2, &0) &3626 86 c0 ; plot sprite, large &1d at (&6, &0) &3628 8c ; use sprite base &80 &3629 0a c0 ; plot sprite, large &0c at (&a, &0) &362b 30 60 ; plot sprite, large &06 at (&0, &3) &362d 42 60 ; plot sprite, large &06 at (&2, &4) &362f 46 60 ; plot sprite, large &06 at (&6, &4) &3631 c4 40 ; plot sprite, large &05 at (&4, &4) &3633 58 60 ; plot sprite, large &06 at (&8, &5) &3635 da 40 ; plot sprite, large &05 at (&a, &5) &3637 00 00 00 00 00 00 00 00 00 ; unused ; room_type_35_data &3640 99 04 ; KRYW, 1 enemy, generator at (&4, &0) &3642 a3 b4 ; enemy at (&3, &a), type &14, moving down &3644 0f ; sprite base &00, &0f sprites &3645 e8 a3 ; plot row of 4 sprites, regular &0b at (&8, &6) &3647 1c ; use sprite base &10 &3648 82 a1 ; plot row of 2 sprites, regular &1b at (&2, &0) &364a a0 2f ; plot column of 3 sprites, regular &13 at (&0, &2) &364c 7c ; use sprite base &70 &364d 84 e0 ; plot sprite, regular &7f at (&4, &0) &364f 8c ; use sprite base &80 &3650 c8 40 ; plot sprite, large &05 at (&8, &4) &3652 00 e0 ; plot sprite, large &0e at (&0, &0) &3654 d0 c0 ; plot sprite, large &0d at (&0, &5) &3656 ac ; use sprite base &a0 &3657 ca 40 ; plot sprite, large &25 at (&a, &4) &3659 8a 80 ; plot sprite, large &29 at (&a, &0) &365b aa 80 ; plot sprite, large &29 at (&a, &2) &365d d6 a0 ; plot sprite, large &2b at (&6, &5) &365f 35 c0 ; plot sprite, large &2c at (&5, &3) &3661 b7 c0 ; plot sprite, large &2d at (&7, &3) &3663 4c ; use sprite base &40 &3664 55 a0 ; plot sprite, regular &4a at (&5, &5) &3666 99 20 ; plot sprite, regular &43 at (&9, &1) &3668 00 00 00 00 00 00 00 00 ; unused ; room_type_36_data &3670 1b ; KRYW, 3 enemies &3671 73 7f ; animation at (3, 7), type 3 &3673 46 ba ; enemy at (&6, &4), type &1a, moving down &3675 47 bc ; enemy at (&7, &4), type &1c, moving down &3677 90 ; sprite base &80, &10 sprites &3678 33 a0 ; plot sprite, large &0a at (&3, &3) &367a 5c ; use sprite base &50 &367b 04 a7 ; plot row of 8 sprites, regular &5a at (&4, &0) &367d d3 a0 ; plot sprite, regular &5b at (&3, &5) &367f 2c ; use sprite base &20 &3680 e0 41 ; plot row of 2 sprites, regular &25 at (&0, &6) &3682 62 27 ; plot row of 8 sprites, regular &22 at (&2, &6) &3684 9c ; use sprite base &90 &3685 20 c0 ; plot sprite, large &1c at (&0, &2) &3687 86 c0 ; plot sprite, large &1d at (&6, &0) &3689 d6 a0 ; plot sprite, large &1b at (&6, &5) &368b da a0 ; plot sprite, large &1b at (&a, &5) &368d bc ; use sprite base &b0 &368e 82 60 ; plot sprite, large &37 at (&2, &0) &3690 00 c0 ; plot sprite, large &3c at (&0, &0) &3692 cc ; use sprite base &c0 &3693 c0 00 ; plot sprite, large &41 at (&0, &4) &3695 92 80 ; plot sprite, large &49 at (&2, &1) &3697 2c ; use sprite base &20 &3698 a1 40 ; plot sprite, regular &25 at (&1, &2) &369a 6c ; use sprite base &60 &369b a3 00 ; plot sprite, regular &61 at (&3, &2) &369d 1b 20 ; plot sprite, regular &62 at (&b, &1) &369f 00 ; unused ; room_type_37_data &36a0 1b ; KRYW, 3 enemies &36a1 73 08 ; enemy at (&3, &7), type &08, static &36a3 49 0c ; enemy at (&9, &4), type &0c, static &36a5 25 0e ; enemy at (&5, &2), type &0e, static &36a7 70 ; sprite base &60, &10 sprites &36a8 b9 e0 ; plot sprite, regular &6f at (&9, &3) &36aa 5c ; use sprite base &50 &36ab 00 a7 ; plot row of 8 sprites, regular &5a at (&0, &0) &36ad 65 a4 ; plot row of 5 sprites, regular &5a at (&5, &6) &36af ab af ; plot column of 3 sprites, regular &5b at (&b, &2) &36b1 bc ; use sprite base &b0 &36b2 08 60 ; plot sprite, large &36 at (&8, &0) &36b4 5a 40 ; plot sprite, large &34 at (&a, &5) &36b6 32 40 ; plot sprite, large &34 at (&2, &3) &36b8 b3 40 ; plot sprite, large &35 at (&3, &3) &36ba 9c ; use sprite base &90 &36bb 52 80 ; plot sprite, large &18 at (&2, &5) &36bd d3 80 ; plot sprite, large &19 at (&3, &5) &36bf 8a 60 ; plot sprite, large &17 at (&a, &0) &36c1 50 60 ; plot sprite, large &16 at (&0, &5) &36c3 cc ; use sprite base &c0 &36c4 c7 60 ; plot sprite, large &47 at (&7, &4) &36c6 1c ; use sprite base &10 &36c7 c5 a1 ; plot row of 2 sprites, regular &1b at (&5, &4) &36c9 0e ; toggle flip &36ca c9 c0 ; plot sprite, regular &1d at (&9, &4) &36cc 0c ; use sprite base &00 &36cd 93 ae ; plot column of 2 sprites, regular &0b at (&3, &1) &36cf 00 ; unused ; room_type_38_data &36d0 1e ; KRYW, 6 enemies &36d1 62 b9 ; enemy at (&2, &6), type &19, moving down &36d3 63 bb ; enemy at (&3, &6), type &1b, moving down &36d5 c2 0b ; enemy at (&2, &c), type &0b, static &36d7 c3 0b ; enemy at (&3, &c), type &0b, static &36d9 c8 0b ; enemy at (&8, &c), type &0b, static &36db c9 0b ; enemy at (&9, &c), type &0b, static &36dd ce ; sprite base &c0, &0e sprites &36de 26 60 ; plot sprite, large &46 at (&6, &2) &36e0 4c ; use sprite base &40 &36e1 e2 87 ; plot row of 8 sprites, regular &49 at (&2, &6) &36e3 bc ; use sprite base &b0 &36e4 12 80 ; plot sprite, large &38 at (&2, &1) &36e6 80 60 ; plot sprite, large &37 at (&0, &0) &36e8 d0 40 ; plot sprite, large &35 at (&0, &5) &36ea 54 40 ; plot sprite, large &34 at (&4, &5) &36ec d6 40 ; plot sprite, large &35 at (&6, &5) &36ee 5a 40 ; plot sprite, large &34 at (&a, &5) &36f0 3c ; use sprite base &30 &36f1 a0 6f ; plot column of 3 sprites, regular &37 at (&0, &2) &36f3 9b 70 ; plot column of 4 sprites, regular &37 at (&b, &1) &36f5 1c ; use sprite base &10 &36f6 14 ae ; plot column of 2 sprites, regular &1a at (&4, &1) &36f8 b4 c0 ; plot sprite, regular &1d at (&4, &3) &36fa b5 a0 ; plot sprite, regular &1b at (&5, &3) &36fc 6c ; use sprite base &60 &36fd 02 c9 ; plot row of 10 sprites, regular &6c at (&2, &0) &36ff 00 ; unused ; room_type_39_data &3700 1a ; KRYW, 2 enemies &3701 20 b5 ; enemy at (&0, &2), type &15, moving down &3703 61 09 ; enemy at (&1, &6), type &09, static &3705 51 ; sprite base &40, &11 sprites &3706 c3 23 ; plot row of 4 sprites, regular &43 at (&3, &4) &3708 6c ; use sprite base &60 &3709 00 c1 ; plot row of 2 sprites, regular &6c at (&0, &0) &370b 60 c1 ; plot row of 2 sprites, regular &6c at (&0, &6) &370d 2c ; use sprite base &20 &370e e2 86 ; plot row of 7 sprites, regular &29 at (&2, &6) &3710 11 0e ; plot column of 2 sprites, regular &20 at (&1, &1) &3712 9c ; use sprite base &90 &3713 d4 e0 ; plot sprite, large &1f at (&4, &5) &3715 84 60 ; plot sprite, large &17 at (&4, &0) &3717 bc ; use sprite base &b0 &3718 02 60 ; plot sprite, large &36 at (&2, &0) &371a 86 60 ; plot sprite, large &37 at (&6, &0) &371c 24 80 ; plot sprite, large &38 at (&4, &2) &371e 7c ; use sprite base &70 &371f 19 12 ; plot column of 6 sprites, regular &70 at (&9, &1) &3721 a9 10 ; plot column of 4 sprites, regular &71 at (&9, &2) &3723 1c ; use sprite base &10 &3724 89 60 ; plot sprite, regular &17 at (&9, &0) &3726 2b 80 ; plot sprite, regular &18 at (&b, &2) &3728 da 60 ; plot sprite, regular &17 at (&a, &5) &372a 98 e0 ; plot sprite, regular &1f at (&8, &1) &372c 0e ; toggle flip &372d 9a e0 ; plot sprite, regular &1f at (&a, &1) &372f 00 ; unused ; room_type_3a_data &3730 03 ; KRCY, 3 enemies &3731 42 1e ; enemy at (&2, &4), type &1e, static &3733 19 08 ; enemy at (&9, &1), type &08, static &3735 1a 08 ; enemy at (&a, &1), type &08, static &3737 30 ; sprite base &20, &10 sprites &3738 83 82 ; plot row of 3 sprites, regular &29 at (&3, &0) &373a 33 a2 ; plot row of 3 sprites, regular &2a at (&3, &3) &373c e0 40 ; plot sprite, regular &25 at (&0, &6) &373e 61 2a ; plot row of 11 sprites, regular &22 at (&1, &6) &3740 1c ; use sprite base &10 &3741 42 ae ; plot column of 2 sprites, regular &1a at (&2, &4) &3743 46 ae ; plot column of 2 sprites, regular &1a at (&6, &4) &3745 2a a0 ; plot sprite, regular &1a at (&a, &2) &3747 b8 a1 ; plot row of 2 sprites, regular &1b at (&8, &3) &3749 0e ; toggle flip &374a ba c0 ; plot sprite, regular &1d at (&a, &3) &374c 0e ; toggle flip &374d 8c ; use sprite base &80 &374e 08 c0 ; plot sprite, large &0c at (&8, &0) &3750 0a e0 ; plot sprite, large &0e at (&a, &0) &3752 9c ; use sprite base &90 &3753 01 00 ; plot sprite, large &10 at (&1, &0) &3755 06 20 ; plot sprite, large &12 at (&6, &0) &3757 3c ; use sprite base &30 &3758 80 12 ; plot column of 6 sprites, regular &31 at (&0, &0) &375a cc ; use sprite base &c0 &375b a1 20 ; plot sprite, large &43 at (&1, &2) &375d 26 40 ; plot sprite, large &44 at (&6, &2) &375f 00 ; unused ; room_type_3b_data &3760 02 ; KRCY, 2 enemies &3761 6b 07 ; enemy at (&b, &6), type &07, static &3763 60 0e ; enemy at (&0, &6), type &0e, static &3765 2f ; sprite base &20, &0f sprites &3766 ab 00 ; plot sprite, regular &21 at (&b, &2) &3768 bc ; use sprite base &b0 &3769 0a 60 ; plot sprite, large &36 at (&a, &0) &376b 9c ; use sprite base &90 &376c 31 ce ; plot column of 2 sprites, large &1c at (&1, &3) &376e 15 40 ; plot sprite, large &14 at (&5, &1) &3770 b5 40 ; plot sprite, large &15 at (&5, &3) &3772 c5 40 ; plot sprite, large &15 at (&5, &4) &3774 ac ; use sprite base &a0 &3775 88 af ; plot column of 3 sprites, large &2b at (&8, &0) &3777 4c ; use sprite base &40 &3778 17 a0 ; plot sprite, regular &4a at (&7, &1) &377a 0c ; use sprite base &00 &377b 04 60 ; plot sprite, regular &06 at (&4, &0) &377d 1c ; use sprite base &10 &377e 60 6b ; plot row of 12 sprites, regular &16 at (&0, &6) &3780 b3 a1 ; plot row of 2 sprites, regular &1b at (&3, &3) &3782 0e ; toggle flip &3783 94 c0 ; plot sprite, regular &1d at (&4, &1) &3785 5c ; use sprite base &50 &3786 80 e3 ; plot row of 4 sprites, regular &5f at (&0, &0) &3788 90 e3 ; plot row of 4 sprites, regular &5f at (&0, &1) &378a a0 e3 ; plot row of 4 sprites, regular &5f at (&0, &2) &378c e3 a0 e3 00 ; unused ; room_type_3c_data &3790 21 ; KRCW, 1 enemy &3791 26 0c ; enemy at (&6, &2), type &0c, static &3793 b2 ; sprite base &a0, &12 sprites &3794 9a 80 ; plot sprite, large &29 at (&a, &1) &3796 42 c0 ; plot sprite, large &2c at (&2, &4) &3798 c4 c0 ; plot sprite, large &2d at (&4, &4) &379a 8c ; use sprite base &80 &379b d4 40 ; plot sprite, large &05 at (&4, &5) &379d c6 40 ; plot sprite, large &05 at (&6, &4) &379f b8 40 ; plot sprite, large &05 at (&8, &3) &37a1 ac ; use sprite base &a0 &37a2 d6 42 ; plot row of 3 sprites, large &25 at (&6, &5) &37a4 ba 40 ; plot sprite, large &25 at (&a, &3) &37a6 bc ; use sprite base &b0 &37a7 22 00 ; plot sprite, large &30 at (&2, &2) &37a9 a4 00 ; plot sprite, large &31 at (&4, &2) &37ab 80 60 ; plot sprite, large &37 at (&0, &0) &37ad d0 40 ; plot sprite, large &35 at (&0, &5) &37af 3c ; use sprite base &30 &37b0 26 40 ; plot sprite, regular &34 at (&6, &2) &37b2 02 e9 ; plot row of 10 sprites, regular &3e at (&2, &0) &37b4 1c ; use sprite base &10 &37b5 d3 21 ; plot row of 2 sprites, regular &13 at (&3, &5) &37b7 13 a1 ; plot row of 2 sprites, regular &1a at (&3, &1) &37b9 0e ; toggle flip &37ba b6 c0 ; plot sprite, regular &1d at (&6, &3) &37bc 0c ; use sprite base &00 &37bd e2 e1 ; plot row of 2 sprites, regular &0f at (&2, &6) &37bf 00 ; unused ; room_type_3d_data &37c0 12 ; KRCY, 2 enemies &37c1 55 1f ; animation at (5, 5), type 0 &37c3 27 b5 ; enemy at (&7, &2), type &15, moving down &37c5 10 ; sprite base &00, &10 sprites &37c6 d1 a1 ; plot row of 2 sprites, regular &0b at (&1, &5) &37c8 57 c0 ; plot sprite, regular &0c at (&7, &5) &37ca ac ; use sprite base &a0 &37cb 29 ae ; plot column of 2 sprites, large &2a at (&9, &2) &37cd 8c ; use sprite base &80 &37ce d8 a0 ; plot sprite, large &0b at (&8, &5) &37d0 08 c0 ; plot sprite, large &0c at (&8, &0) &37d2 25 a0 ; plot sprite, large &0a at (&5, &2) &37d4 31 60 ; plot sprite, large &06 at (&1, &3) &37d6 43 60 ; plot sprite, large &06 at (&3, &4) &37d8 55 60 ; plot sprite, large &06 at (&5, &5) &37da 4c ; use sprite base &40 &37db 00 c7 ; plot row of 8 sprites, regular &4c at (&0, &0) &37dd 60 c7 ; plot row of 8 sprites, regular &4c at (&0, &6) &37df 10 d1 ; plot column of 5 sprites, regular &4c at (&0, &1) &37e1 1c ; use sprite base &10 &37e2 16 a0 ; plot sprite, regular &1a at (&6, &1) &37e4 a4 e0 ; plot sprite, regular &1f at (&4, &2) &37e6 9c ; use sprite base &90 &37e7 8a 60 ; plot sprite, large &17 at (&a, &0) &37e9 5a 60 ; plot sprite, large &16 at (&a, &5) &37eb 00 00 00 00 00 ; unused ; room_type_3e_data &37f0 99 45 ; KRYW, 1 enemy, generator at (&5, &4) &37f2 4a 0c ; enemy at (&a, &4), type &0c, static &37f4 91 ; sprite base &80, &11 sprites &37f5 d2 c0 ; plot sprite, large &0d at (&2, &5) &37f7 02 e0 ; plot sprite, large &0e at (&2, &0) &37f9 da 40 ; plot sprite, large &05 at (&a, &5) &37fb 9c ; use sprite base &90 &37fc 80 60 ; plot sprite, large &17 at (&0, &0) &37fe 50 60 ; plot sprite, large &16 at (&0, &5) &3800 d8 a0 ; plot sprite, large &1b at (&8, &5) &3802 18 40 ; plot sprite, large &14 at (&8, &1) &3804 b8 40 ; plot sprite, large &15 at (&8, &3) &3806 ac ; use sprite base &a0 &3807 08 21 ; plot row of 2 sprites, large &22 at (&8, &0) &3809 04 20 ; plot sprite, large &22 at (&4, &0) &380b 86 20 ; plot sprite, large &23 at (&6, &0) &380d 4c ; use sprite base &40 &380e 95 a0 ; plot sprite, regular &4b at (&5, &1) &3810 1c ; use sprite base &10 &3811 d4 a3 ; plot row of 4 sprites, regular &1b at (&4, &5) &3813 0e ; toggle flip &3814 ba c0 ; plot sprite, regular &1d at (&a, &3) &3816 0c ; use sprite base &00 &3817 e4 e3 ; plot row of 4 sprites, regular &0f at (&4, &6) &3819 7c ; use sprite base &70 &381a a5 e0 ; plot sprite, regular &7f at (&5, &2) &381c 2c ; use sprite base &20 &381d a2 4f ; plot column of 3 sprites, regular &25 at (&2, &2) &381f 00 ; unused ; room_type_3f_data &3820 19 ; KRYW, 1 enemy &3821 05 b7 ; enemy at (&5, &0), type &17, moving down &3823 0d ; sprite base &00, &0d sprites &3824 e8 a3 ; plot row of 4 sprites, regular &0b at (&8, &6) &3826 3c ; use sprite base &30 &3827 a0 80 ; plot sprite, regular &39 at (&0, &2) &3829 b2 a0 ; plot sprite, regular &3b at (&2, &3) &382b 1c ; use sprite base &10 &382c 12 ae ; plot column of 2 sprites, regular &1a at (&2, &1) &382e 0e ; toggle flip &382f 02 c0 ; plot sprite, regular &1c at (&2, &0) &3831 ac ; use sprite base &a0 &3832 86 af ; plot column of 3 sprites, large &2b at (&6, &0) &3834 8a 4f ; plot column of 3 sprites, large &25 at (&a, &0) &3836 88 8f ; plot column of 3 sprites, large &29 at (&8, &0) &3838 8c ; use sprite base &80 &3839 d2 c0 ; plot sprite, large &0d at (&2, &5) &383b 00 e0 ; plot sprite, large &0e at (&0, &0) &383d d6 00 ; plot sprite, large &01 at (&6, &5) &383f d4 60 ; plot sprite, large &07 at (&4, &5) &3841 9c ; use sprite base &90 &3842 50 60 ; plot sprite, large &16 at (&0, &5) &3844 00 00 00 00 00 00 00 00 00 00 00 00 ; unused ; room_type_40_data &3850 1e ; KRYW, 6 enemies &3851 53 7f ; animation at (3, 5), type 3 &3853 54 7f ; animation at (4, 5), type 3 &3855 55 7f ; animation at (5, 5), type 3 &3857 73 7f ; animation at (3, 7), type 3 &3859 74 7f ; animation at (4, 7), type 3 &385b 75 7f ; animation at (5, 7), type 3 &385d ae ; sprite base &a0, &0e sprites &385e 56 c0 ; plot sprite, large &2c at (&6, &5) &3860 d8 c0 ; plot sprite, large &2d at (&8, &5) &3862 6c ; use sprite base &60 &3863 01 ca ; plot row of 11 sprites, regular &6c at (&1, &0) &3865 62 c7 ; plot row of 8 sprites, regular &6c at (&2, &6) &3867 80 d1 ; plot column of 5 sprites, regular &6d at (&0, &0) &3869 bc ; use sprite base &b0 &386a 36 00 ; plot sprite, large &30 at (&6, &3) &386c b8 00 ; plot sprite, large &31 at (&8, &3) &386e d0 40 ; plot sprite, large &35 at (&0, &5) &3870 5a 40 ; plot sprite, large &34 at (&a, &5) &3872 9c ; use sprite base &90 &3873 04 c0 ; plot sprite, large &1c at (&4, &0) &3875 23 00 ; plot sprite, large &10 at (&3, &2) &3877 25 20 ; plot sprite, large &12 at (&5, &2) &3879 cc ; use sprite base &c0 &387a b3 20 ; plot sprite, large &43 at (&3, &3) &387c 35 40 ; plot sprite, large &44 at (&5, &3) &387e 00 00 ; unused ; room_type_41_data &3880 9a 65 ; KRYW, 2 enemies, generator at (&5, &6) &3882 77 5f ; animation at (7, 7), type 2 &3884 4b 0c ; enemy at (&b, &4), type &0c, static &3886 6f ; sprite base &60, &0f sprites &3887 00 cb ; plot row of 12 sprites, regular &6c at (&0, &0) &3889 63 60 ; plot sprite, regular &66 at (&3, &6) &388b 4c ; use sprite base &40 &388c e2 22 ; plot row of 3 sprites, regular &43 at (&2, &6) &388e e7 22 ; plot row of 3 sprites, regular &43 at (&7, &6) &3890 3c ; use sprite base &30 &3891 10 90 ; plot column of 4 sprites, regular &38 at (&0, &1) &3893 0d ; toggle repeat &3894 3b ce ; plot column of 2 sprites, regular &3c at (&b, &3) &3896 7c ; use sprite base &70 &3897 b5 e0 ; plot sprite, regular &7f at (&5, &3) &3899 1c ; use sprite base &10 &389a 25 a0 ; plot sprite, regular &1a at (&5, &2) &389c b6 a0 ; plot sprite, regular &1b at (&6, &3) &389e 0e ; toggle flip &389f b9 e0 ; plot sprite, regular &1f at (&9, &3) &38a1 cc ; use sprite base &c0 &38a2 05 61 ; plot row of 2 sprites, large &46 at (&5, &0) &38a4 bc ; use sprite base &b0 &38a5 d0 40 ; plot sprite, large &35 at (&0, &5) &38a7 5a 40 ; plot sprite, large &34 at (&a, &5) &38a9 12 80 ; plot sprite, large &38 at (&2, &1) &38ab 8c ; use sprite base &80 &38ac 37 a0 ; plot sprite, large &0a at (&7, &3) &38ae 00 00 ; unused ; room_type_42_data &38b0 1b ; KRYW, 3 enemies &38b1 b1 08 ; enemy at (&1, &b), type &08, static &38b3 b2 08 ; enemy at (&2, &b), type &08, static &38b5 40 0c ; enemy at (&0, &4), type &0c, static &38b7 50 ; sprite base &40, &10 sprites &38b8 c7 24 ; plot row of 5 sprites, regular &43 at (&7, &4) &38ba 9c ; use sprite base &90 &38bb 50 61 ; plot row of 2 sprites, large &16 at (&0, &5) &38bd 14 a0 ; plot sprite, large &1a at (&4, &1) &38bf 53 80 ; plot sprite, large &18 at (&3, &5) &38c1 d5 80 ; plot sprite, large &19 at (&5, &5) &38c3 d7 e0 ; plot sprite, large &1f at (&7, &5) &38c5 bc ; use sprite base &b0 &38c6 b1 00 ; plot sprite, large &31 at (&1, &3) &38c8 33 40 ; plot sprite, large &34 at (&3, &3) &38ca b5 40 ; plot sprite, large &35 at (&5, &3) &38cc 5c ; use sprite base &50 &38cd 06 60 ; plot sprite, regular &56 at (&6, &0) &38cf 3c ; use sprite base &30 &38d0 b0 ae ; plot column of 2 sprites, regular &3b at (&0, &3) &38d2 00 05 ; plot row of 6 sprites, regular &30 at (&0, &0) &38d4 1c ; use sprite base &10 &38d5 97 60 ; plot sprite, regular &17 at (&7, &1) &38d7 d9 60 ; plot sprite, regular &17 at (&9, &5) &38d9 6c ; use sprite base &60 &38da c4 2f ; plot column of 3 sprites, regular &63 at (&4, &4) &38dc c5 2f ; plot column of 3 sprites, regular &63 at (&5, &4) &38de 00 00 ; unused ; room_type_43_data &38e0 1b ; KRYW, 3 enemies &38e1 74 0d ; enemy at (&4, &7), type &0d, static &38e3 75 0d ; enemy at (&5, &7), type &0d, static &38e5 17 b6 ; enemy at (&7, &1), type &16, moving down &38e7 50 ; sprite base &40, &10 sprites &38e8 c0 22 ; plot row of 3 sprites, regular &43 at (&0, &4) &38ea 1c ; use sprite base &10 &38eb d1 60 ; plot sprite, regular &17 at (&1, &5) &38ed cb 60 ; plot sprite, regular &17 at (&b, &4) &38ef 2c ; use sprite base &20 &38f0 91 00 ; plot sprite, regular &21 at (&1, &1) &38f2 81 60 ; plot sprite, regular &27 at (&1, &0) &38f4 87 84 ; plot row of 5 sprites, regular &29 at (&7, &0) &38f6 3c ; use sprite base &30 &38f7 00 00 ; plot sprite, regular &30 at (&0, &0) &38f9 a1 40 ; plot sprite, regular &35 at (&1, &2) &38fb 7c ; use sprite base &70 &38fc 09 12 ; plot column of 6 sprites, regular &70 at (&9, &0) &38fe 99 10 ; plot column of 4 sprites, regular &71 at (&9, &1) &3900 57 21 ; plot row of 2 sprites, regular &72 at (&7, &5) &3902 9c ; use sprite base &90 &3903 84 ee ; plot column of 2 sprites, large &1f at (&4, &0) &3905 53 80 ; plot sprite, large &18 at (&3, &5) &3907 d5 80 ; plot sprite, large &19 at (&5, &5) &3909 bc ; use sprite base &b0 &390a 33 40 ; plot sprite, large &34 at (&3, &3) &390c b5 40 ; plot sprite, large &35 at (&5, &3) &390e 00 00 ; unused ; room_type_44_data &3910 09 ; KRYW, 1 enemy &3911 06 06 ; enemy at (&6, &0), type &06, static &3913 91 ; sprite base &80, &11 sprites &3914 18 01 ; plot row of 2 sprites, large &00 at (&8, &1) &3916 9c ; use sprite base &90 &3917 58 61 ; plot row of 2 sprites, large &16 at (&8, &5) &3919 40 62 ; plot row of 3 sprites, large &16 at (&0, &4) &391b d5 80 ; plot sprite, large &19 at (&5, &5) &391d bc ; use sprite base &b0 &391e 57 40 ; plot sprite, large &34 at (&7, &5) &3920 c5 40 ; plot sprite, large &35 at (&5, &4) &3922 20 a2 ; plot row of 3 sprites, large &3a at (&0, &2) &3924 38 a1 ; plot row of 2 sprites, large &3a at (&8, &3) &3926 cc ; use sprite base &c0 &3927 80 c2 ; plot row of 3 sprites, large &4d at (&0, &0) &3929 d1 41 ; plot row of 2 sprites, large &45 at (&1, &5) &392b 3c ; use sprite base &30 &392c 80 10 ; plot column of 4 sprites, regular &31 at (&0, &0) &392e 06 e5 ; plot row of 6 sprites, regular &3e at (&6, &0) &3930 1c ; use sprite base &10 &3931 16 a0 ; plot sprite, regular &1a at (&6, &1) &3933 a7 a0 ; plot sprite, regular &1b at (&7, &2) &3935 a6 c0 ; plot sprite, regular &1d at (&6, &2) &3937 6c ; use sprite base &60 &3938 d0 2e ; plot column of 2 sprites, regular &63 at (&0, &5) &393a d5 2e ; plot column of 2 sprites, regular &63 at (&5, &5) &393c 00 00 00 00 ; unused ; room_type_45_data &3940 0a ; KRYW, 2 enemies &3941 4a 0c ; enemy at (&a, &4), type &0c, static &3943 47 b4 ; enemy at (&7, &4), type &14, moving down &3945 30 ; sprite base &20, &10 sprites &3946 1b 0e ; plot column of 2 sprites, regular &20 at (&b, &1) &3948 5c ; use sprite base &50 &3949 00 ab ; plot row of 12 sprites, regular &5a at (&0, &0) &394b 6b a0 ; plot sprite, regular &5a at (&b, &6) &394d 67 81 ; plot row of 2 sprites, regular &58 at (&7, &6) &394f 1c ; use sprite base &10 &3950 94 a3 ; plot row of 4 sprites, regular &1b at (&4, &1) &3952 ac ; use sprite base &a0 &3953 58 c0 ; plot sprite, large &2c at (&8, &5) &3955 da c0 ; plot sprite, large &2d at (&a, &5) &3957 bc ; use sprite base &b0 &3958 d5 40 ; plot sprite, large &35 at (&5, &5) &395a 30 a1 ; plot row of 2 sprites, large &3a at (&0, &3) &395c 38 00 ; plot sprite, large &30 at (&8, &3) &395e cc ; use sprite base &c0 &395f 90 c1 ; plot row of 2 sprites, large &4d at (&0, &1) &3961 c0 a1 ; plot row of 2 sprites, large &4b at (&0, &4) &3963 9c ; use sprite base &90 &3964 50 62 ; plot row of 3 sprites, large &16 at (&0, &5) &3966 3a e0 ; plot sprite, large &1e at (&a, &3) &3968 7c ; use sprite base &70 &3969 18 00 ; plot sprite, regular &70 at (&8, &1) &396b 95 10 ; plot column of 4 sprites, regular &71 at (&5, &1) &396d 00 00 00 ; unused ; room_type_46_data &3970 89 48 ; KRYW, 1 enemy, generator at (&8, &4) &3972 84 0c ; enemy at (&4, &8), type &0c, static &3974 50 ; sprite base &40, &10 sprites &3975 c7 21 ; plot row of 2 sprites, regular &43 at (&7, &4) &3977 9c ; use sprite base &90 &3978 50 62 ; plot row of 3 sprites, large &16 at (&0, &5) &397a 90 61 ; plot row of 2 sprites, large &17 at (&0, &1) &397c bc ; use sprite base &b0 &397d 30 a1 ; plot row of 2 sprites, large &3a at (&0, &3) &397f d5 c0 ; plot sprite, large &3d at (&5, &5) &3981 57 c0 ; plot sprite, large &3c at (&7, &5) &3983 39 c0 ; plot sprite, large &3c at (&9, &3) &3985 cc ; use sprite base &c0 &3986 94 80 ; plot sprite, large &49 at (&4, &1) &3988 2c ; use sprite base &20 &3989 80 4b ; plot row of 12 sprites, regular &25 at (&0, &0) &398b bb 50 ; plot column of 4 sprites, regular &25 at (&b, &3) &398d 1b 4e ; plot column of 2 sprites, regular &24 at (&b, &1) &398f c9 20 ; plot sprite, regular &23 at (&9, &4) &3991 3c ; use sprite base &30 &3992 06 04 ; plot row of 5 sprites, regular &30 at (&6, &0) &3994 7c ; use sprite base &70 &3995 98 00 ; plot sprite, regular &71 at (&8, &1) &3997 a8 e0 ; plot sprite, regular &7f at (&8, &2) &3999 8c ; use sprite base &80 &399a d9 e0 ; plot sprite, large &0f at (&9, &5) &399c 00 00 00 00 ; unused ; room_type_47_data &39a0 0a ; KRYW, 2 enemies &39a1 19 08 ; enemy at (&9, &1), type &08, static &39a3 1a 08 ; enemy at (&a, &1), type &08, static &39a5 31 ; sprite base &20, &11 sprites &39a6 80 46 ; plot row of 7 sprites, regular &25 at (&0, &0) &39a8 e0 46 ; plot row of 7 sprites, regular &25 at (&0, &6) &39aa 3c ; use sprite base &30 &39ab 87 00 ; plot sprite, regular &31 at (&7, &0) &39ad e7 00 ; plot sprite, regular &31 at (&7, &6) &39af 68 e3 ; plot row of 4 sprites, regular &3e at (&8, &6) &39b1 6c ; use sprite base &60 &39b2 30 a1 ; plot row of 2 sprites, regular &6a at (&0, &3) &39b4 34 a1 ; plot row of 2 sprites, regular &6a at (&4, &3) &39b6 9c ; use sprite base &90 &39b7 90 62 ; plot row of 3 sprites, large &17 at (&0, &1) &39b9 40 62 ; plot row of 3 sprites, large &16 at (&0, &4) &39bb bc ; use sprite base &b0 &39bc 08 60 ; plot sprite, large &36 at (&8, &0) &39be 8a 60 ; plot sprite, large &37 at (&a, &0) &39c0 c6 c0 ; plot sprite, large &3d at (&6, &4) &39c2 48 00 ; plot sprite, large &30 at (&8, &4) &39c4 ca 00 ; plot sprite, large &31 at (&a, &4) &39c6 cc ; use sprite base &c0 &39c7 96 80 ; plot sprite, large &49 at (&6, &1) &39c9 ac ; use sprite base &a0 &39ca 29 a0 ; plot sprite, large &2a at (&9, &2) &39cc 5c ; use sprite base &50 &39cd 36 82 ; plot row of 3 sprites, regular &58 at (&6, &3) &39cf 00 ; unused ; room_type_48_data &39d0 0a ; KRYW, 2 enemies &39d1 25 a4 ; enemy at (&5, &2), type &04, moving down &39d3 93 fd ; enemy at (&3, &9), type &1d, moving right &39d5 71 ; sprite base &60, &11 sprites &39d6 00 c9 ; plot row of 10 sprites, regular &6c at (&0, &0) &39d8 1c ; use sprite base &10 &39d9 b6 20 ; plot sprite, regular &13 at (&6, &3) &39db e2 a5 ; plot row of 6 sprites, regular &1b at (&2, &6) &39dd 2c ; use sprite base &20 &39de 16 0e ; plot column of 2 sprites, regular &20 at (&6, &1) &39e0 6a 21 ; plot row of 2 sprites, regular &22 at (&a, &6) &39e2 e4 20 ; plot sprite, regular &23 at (&4, &6) &39e4 65 80 ; plot sprite, regular &28 at (&5, &6) &39e6 9c ; use sprite base &90 &39e7 81 c1 ; plot row of 2 sprites, large &1d at (&1, &0) &39e9 ac ; use sprite base &a0 &39ea 57 c0 ; plot sprite, large &2c at (&7, &5) &39ec d9 c0 ; plot sprite, large &2d at (&9, &5) &39ee bc ; use sprite base &b0 &39ef 21 81 ; plot row of 2 sprites, large &38 at (&1, &2) &39f1 d0 40 ; plot sprite, large &35 at (&0, &5) &39f3 0a 60 ; plot sprite, large &36 at (&a, &0) &39f5 37 00 ; plot sprite, large &30 at (&7, &3) &39f7 b9 00 ; plot sprite, large &31 at (&9, &3) &39f9 8c ; use sprite base &80 &39fa 18 20 ; plot sprite, large &02 at (&8, &1) &39fc 5c ; use sprite base &50 &39fd ab b0 ; plot column of 4 sprites, regular &5b at (&b, &2) &39ff 00 ; unused ; room_type_49_data &3a00 09 ; KRYW, 1 enemy &3a01 4b 0e ; enemy at (&b, &4), type &0e, static &3a03 b1 ; sprite base &a0, &11 sprites &3a04 c1 a0 ; plot sprite, large &2b at (&1, &4) &3a06 30 c0 ; plot sprite, large &2c at (&0, &3) &3a08 b2 c0 ; plot sprite, large &2d at (&2, &3) &3a0a 1c ; use sprite base &10 &3a0b a4 a3 ; plot row of 4 sprites, regular &1b at (&4, &2) &3a0d c3 a0 ; plot sprite, regular &1b at (&3, &4) &3a0f 54 a0 ; plot sprite, regular &1a at (&4, &5) &3a11 0e ; toggle flip &3a12 44 c0 ; plot sprite, regular &1c at (&4, &4) &3a14 0e ; toggle flip &3a15 7c ; use sprite base &70 &3a16 00 21 ; plot row of 2 sprites, regular &72 at (&0, &0) &3a18 08 0f ; plot column of 3 sprites, regular &70 at (&8, &0) &3a1a bc ; use sprite base &b0 &3a1b 10 00 ; plot sprite, large &30 at (&0, &1) &3a1d 92 00 ; plot sprite, large &31 at (&2, &1) &3a1f 58 40 ; plot sprite, large &34 at (&8, &5) &3a21 da 40 ; plot sprite, large &35 at (&a, &5) &3a23 0a 60 ; plot sprite, large &36 at (&a, &0) &3a25 dc ; use sprite base &d0 &3a26 02 42 ; plot row of 3 sprites, large &54 at (&2, &0) &3a28 3c ; use sprite base &30 &3a29 e0 e7 ; plot row of 8 sprites, regular &3f at (&0, &6) &3a2b 6c ; use sprite base &60 &3a2c 89 91 ; plot column of 5 sprites, regular &69 at (&9, &0) &3a2e 00 00 ; unused ; room_type_4a_data &3a30 01 ; KRCY, 1 enemy &3a31 43 b3 ; enemy at (&3, &4), type &13, moving down &3a33 93 ; sprite base &80, &13 sprites &3a34 d8 a0 ; plot sprite, large &0b at (&8, &5) &3a36 dc ; use sprite base &d0 &3a37 a4 20 ; plot sprite, large &53 at (&4, &2) &3a39 9c ; use sprite base &90 &3a3a 36 40 ; plot sprite, large &14 at (&6, &3) &3a3c d6 40 ; plot sprite, large &15 at (&6, &5) &3a3e 04 c0 ; plot sprite, large &1c at (&4, &0) &3a40 94 c0 ; plot sprite, large &1d at (&4, &1) &3a42 8a 60 ; plot sprite, large &17 at (&a, &0) &3a44 3a 80 ; plot sprite, large &18 at (&a, &3) &3a46 5a 60 ; plot sprite, large &16 at (&a, &5) &3a48 d4 a0 ; plot sprite, large &1b at (&4, &5) &3a4a cc ; use sprite base &c0 &3a4b 2a 00 ; plot sprite, large &40 at (&a, &2) &3a4d 08 80 ; plot sprite, large &48 at (&8, &0) &3a4f 6c ; use sprite base &60 &3a50 a0 b0 ; plot column of 4 sprites, regular &6b at (&0, &2) &3a52 d2 00 ; plot sprite, regular &61 at (&2, &5) &3a54 86 b0 ; plot column of 4 sprites, regular &6b at (&6, &0) &3a56 87 b0 ; plot column of 4 sprites, regular &6b at (&7, &0) &3a58 7c ; use sprite base &70 &3a59 01 22 ; plot row of 3 sprites, regular &72 at (&1, &0) &3a5b 00 0e ; plot column of 2 sprites, regular &70 at (&0, &0) &3a5d 60 03 ; plot row of 4 sprites, regular &70 at (&0, &6) &3a5f 00 ; unused ; room_type_4b_data &3a60 a2 44 ; KRCW, 2 enemies, generator at (&4, &4) &3a62 c2 0b ; enemy at (&2, &c), type &0b, static &3a64 c3 0b ; enemy at (&3, &c), type &0b, static &3a66 2e ; sprite base &20, &0e sprites &3a67 94 00 ; plot sprite, regular &21 at (&4, &1) &3a69 7c ; use sprite base &70 &3a6a 02 24 ; plot row of 5 sprites, regular &72 at (&2, &0) &3a6c 04 00 ; plot sprite, regular &70 at (&4, &0) &3a6e a4 e0 ; plot sprite, regular &7f at (&4, &2) &3a70 5c ; use sprite base &50 &3a71 62 a9 ; plot row of 10 sprites, regular &5a at (&2, &6) &3a73 8b b2 ; plot column of 6 sprites, regular &5b at (&b, &0) &3a75 a0 ef ; plot column of 3 sprites, regular &5f at (&0, &2) &3a77 1c ; use sprite base &10 &3a78 bc ; use sprite base &b0 &3a79 80 60 ; plot sprite, large &37 at (&0, &0) &3a7b d0 40 ; plot sprite, large &35 at (&0, &5) &3a7d 26 00 ; plot sprite, large &30 at (&6, &2) &3a7f a8 00 ; plot sprite, large &31 at (&8, &2) &3a81 9c ; use sprite base &90 &3a82 d4 a0 ; plot sprite, large &1b at (&4, &5) &3a84 ac ; use sprite base &a0 &3a85 87 a0 ; plot sprite, large &2b at (&7, &0) &3a87 3c ; use sprite base &30 &3a88 46 23 ; plot row of 4 sprites, regular &32 at (&6, &4) &3a8a a0 57 a0 57 a0 00 ; unused ; room_type_4c_data &3a90 21 ; KRCW, 1 enemy &3a91 25 a4 ; enemy at (&5, &2), type &04, moving down &3a93 b2 ; sprite base &a0, &12 sprites &3a94 89 ae ; plot column of 2 sprites, large &2b at (&9, &0) &3a96 48 e0 ; plot sprite, large &2e at (&8, &4) &3a98 ca e0 ; plot sprite, large &2f at (&a, &4) &3a9a 6c ; use sprite base &60 &3a9b a2 a1 ; plot row of 2 sprites, regular &6b at (&2, &2) &3a9d 8b d3 ; plot column of 7 sprites, regular &6d at (&b, &0) &3a9f 60 cb ; plot row of 12 sprites, regular &6c at (&0, &6) &3aa1 00 c6 ; plot row of 7 sprites, regular &6c at (&0, &0) &3aa3 bc ; use sprite base &b0 &3aa4 01 60 ; plot sprite, large &36 at (&1, &0) &3aa6 83 60 ; plot sprite, large &37 at (&3, &0) &3aa8 51 40 ; plot sprite, large &34 at (&1, &5) &3aaa d3 40 ; plot sprite, large &35 at (&3, &5) &3aac 9c ; use sprite base &90 &3aad 16 40 ; plot sprite, large &14 at (&6, &1) &3aaf b6 40 ; plot sprite, large &15 at (&6, &3) &3ab1 3c ; use sprite base &30 &3ab2 87 a0 ; plot sprite, regular &3b at (&7, &0) &3ab4 90 71 ; plot column of 5 sprites, regular &37 at (&0, &1) &3ab6 4c ; use sprite base &40 &3ab7 28 a0 ; plot sprite, regular &4a at (&8, &2) &3ab9 dc ; use sprite base &d0 &3aba d6 20 ; plot sprite, large &53 at (&6, &5) &3abc b2 60 ; plot sprite, large &57 at (&2, &3) &3abe 00 00 ; unused ; room_type_4d_data &3ac0 03 ; KRCY, 3 enemies &3ac1 53 1f ; animation at (3, 5), type 0 &3ac3 78 6f ; enemy at (&8, &7), type &0f, moving left &3ac5 4b 0d ; enemy at (&b, &4), type &0d, static &3ac7 11 ; sprite base &00, &11 sprites &3ac8 e0 a1 ; plot row of 2 sprites, regular &0b at (&0, &6) &3aca e8 e1 ; plot row of 2 sprites, regular &0f at (&8, &6) &3acc 1c ; use sprite base &10 &3acd 21 80 ; plot sprite, regular &18 at (&1, &2) &3acf 84 60 ; plot sprite, regular &17 at (&4, &0) &3ad1 97 60 ; plot sprite, regular &17 at (&7, &1) &3ad3 29 80 ; plot sprite, regular &18 at (&9, &2) &3ad5 9b 60 ; plot sprite, regular &17 at (&b, &1) &3ad7 43 e0 ; plot sprite, regular &1e at (&3, &4) &3ad9 a2 e0 ; plot sprite, regular &1f at (&2, &2) &3adb 0e ; toggle flip &3adc 44 e0 ; plot sprite, regular &1e at (&4, &4) &3ade a5 e0 ; plot sprite, regular &1f at (&5, &2) &3ae0 0d ; toggle repeat &3ae1 2c ; use sprite base &20 &3ae2 3b 0e ; plot column of 2 sprites, regular &20 at (&b, &3) &3ae4 8c ; use sprite base &80 &3ae5 40 60 ; plot sprite, large &06 at (&0, &4) &3ae7 d2 81 ; plot row of 2 sprites, large &09 at (&2, &5) &3ae9 56 60 ; plot sprite, large &06 at (&6, &5) &3aeb da a0 ; plot sprite, large &0b at (&a, &5) &3aed 23 a0 ; plot sprite, large &0a at (&3, &2) &3aef 00 ; unused ; room_type_4e_data &3af0 0b ; KRYW, 3 enemies &3af1 33 7f ; animation at (3, 3), type 3 &3af3 05 0c ; enemy at (&5, &0), type &0c, static &3af5 76 27 ; enemy at (&6, &7), type &07, moving up &3af7 6f ; sprite base &60, &0f sprites &3af8 8b d3 ; plot column of 7 sprites, regular &6d at (&b, &0) &3afa a0 cf ; plot column of 3 sprites, regular &6d at (&0, &2) &3afc 1c ; use sprite base &10 &3afd d7 a3 ; plot row of 4 sprites, regular &1b at (&7, &5) &3aff 9a a0 ; plot sprite, regular &1b at (&a, &1) &3b01 97 e0 ; plot sprite, regular &1f at (&7, &1) &3b03 c1 a2 ; plot row of 3 sprites, regular &1b at (&1, &4) &3b05 34 a0 ; plot sprite, regular &1a at (&4, &3) &3b07 0e ; toggle flip &3b08 c4 c0 ; plot sprite, regular &1d at (&4, &4) &3b0a 0e ; toggle flip &3b0b ac ; use sprite base &a0 &3b0c 88 af ; plot column of 3 sprites, large &2b at (&8, &0) &3b0e d8 a0 ; plot sprite, large &2b at (&8, &5) &3b10 bc ; use sprite base &b0 &3b11 80 60 ; plot sprite, large &37 at (&0, &0) &3b13 d0 40 ; plot sprite, large &35 at (&0, &5) &3b15 8c ; use sprite base &80 &3b16 13 a0 ; plot sprite, large &0a at (&3, &1) &3b18 3c ; use sprite base &30 &3b19 95 2e ; plot column of 2 sprites, regular &33 at (&5, &1) &3b1b 4c ; use sprite base &40 &3b1c 56 a0 ; plot sprite, regular &4a at (&6, &5) &3b1e 00 00 ; unused ; room_type_4f_data &3b20 05 ; KRCY, 5 enemies &3b21 53 0c ; enemy at (&3, &5), type &0c, static &3b23 c1 0b ; enemy at (&1, &c), type &0b, static &3b25 c2 0b ; enemy at (&2, &c), type &0b, static &3b27 96 21 ; enemy at (&6, &9), type &01, moving up &3b29 02 e2 ; enemy at (&2, &0), type &02, moving right &3b2b 6d ; sprite base &60, &0d sprites &3b2c 61 c8 ; plot row of 9 sprites, regular &6c at (&1, &6) &3b2e c0 cf ; plot column of 3 sprites, regular &6d at (&0, &4) &3b30 3c ; use sprite base &30 &3b31 86 40 ; plot sprite, regular &35 at (&6, &0) &3b33 44 80 ; plot sprite, regular &38 at (&4, &4) &3b35 2c ; use sprite base &20 &3b36 33 a2 ; plot row of 3 sprites, regular &2a at (&3, &3) &3b38 2b 0f ; plot column of 3 sprites, regular &20 at (&b, &2) &3b3a cc ; use sprite base &c0 &3b3b 80 0e ; plot column of 2 sprites, large &41 at (&0, &0) &3b3d bc ; use sprite base &b0 &3b3e 0a 60 ; plot sprite, large &36 at (&a, &0) &3b40 5a 40 ; plot sprite, large &34 at (&a, &5) &3b42 53 40 ; plot sprite, large &34 at (&3, &5) &3b44 d4 40 ; plot sprite, large &35 at (&4, &5) &3b46 5c ; use sprite base &50 &3b47 07 81 ; plot row of 2 sprites, regular &58 at (&7, &0) &3b49 9c ; use sprite base &90 &3b4a 88 ef ; plot column of 3 sprites, large &1f at (&8, &0) &3b4c 08 81 00 00 ; unused ; room_type_50_data &3b50 05 ; KRCY, 5 enemies &3b51 52 1f ; animation at (2, 5), type 0 &3b53 74 3f ; animation at (4, 7), type 1 &3b55 56 5f ; animation at (6, 5), type 2 &3b57 96 7f ; animation at (6, 9), type 3 &3b59 5a 1f ; animation at (a, 5), type 0 &3b5b 2f ; sprite base &20, &0f sprites &3b5c 93 00 ; plot sprite, regular &21 at (&3, &1) &3b5e 97 00 ; plot sprite, regular &21 at (&7, &1) &3b60 1c ; use sprite base &10 &3b61 b8 a1 ; plot row of 2 sprites, regular &1b at (&8, &3) &3b63 1a a0 ; plot sprite, regular &1a at (&a, &1) &3b65 3c ; use sprite base &30 &3b66 82 e9 ; plot row of 10 sprites, regular &3f at (&2, &0) &3b68 e3 e8 ; plot row of 9 sprites, regular &3f at (&3, &6) &3b6a d4 a1 ; plot row of 2 sprites, regular &3b at (&4, &5) &3b6c ca 80 ; plot sprite, regular &39 at (&a, &4) &3b6e 8c ; use sprite base &80 &3b6f 22 a0 ; plot sprite, large &0a at (&2, &2) &3b71 34 a0 ; plot sprite, large &0a at (&4, &3) &3b73 26 ae ; plot column of 2 sprites, large &0a at (&6, &2) &3b75 2a a0 ; plot sprite, large &0a at (&a, &2) &3b77 9c ; use sprite base &90 &3b78 50 60 ; plot sprite, large &16 at (&0, &5) &3b7a bc ; use sprite base &b0 &3b7b d1 40 ; plot sprite, large &35 at (&1, &5) &3b7d 80 60 ; plot sprite, large &37 at (&0, &0) &3b7f 00 ; unused ; room_type_51_data &3b80 09 ; KRYW, 1 enemy &3b81 22 a4 ; enemy at (&2, &2), type &04, moving down &3b83 52 ; sprite base &40, &12 sprites &3b84 a6 61 ; plot row of 2 sprites, regular &47 at (&6, &2) &3b86 7c ; use sprite base &70 &3b87 60 00 ; plot sprite, regular &70 at (&0, &6) &3b89 02 29 ; plot row of 10 sprites, regular &72 at (&2, &0) &3b8b 9c ; use sprite base &90 &3b8c d4 a0 ; plot sprite, large &1b at (&4, &5) &3b8e 36 40 ; plot sprite, large &14 at (&6, &3) &3b90 d6 40 ; plot sprite, large &15 at (&6, &5) &3b92 84 c2 ; plot row of 3 sprites, large &1d at (&4, &0) &3b94 5a 60 ; plot sprite, large &16 at (&a, &5) &3b96 bc ; use sprite base &b0 &3b97 80 60 ; plot sprite, large &37 at (&0, &0) &3b99 a0 ee ; plot column of 2 sprites, large &3f at (&0, &2) &3b9b b4 20 ; plot sprite, large &33 at (&4, &3) &3b9d 58 c0 ; plot sprite, large &3c at (&8, &5) &3b9f 6c ; use sprite base &60 &3ba0 b6 a1 ; plot row of 2 sprites, regular &6b at (&6, &3) &3ba2 ca a0 ; plot sprite, regular &6b at (&a, &4) &3ba4 1c ; use sprite base &10 &3ba5 e1 a2 ; plot row of 3 sprites, regular &1b at (&1, &6) &3ba7 9a a1 ; plot row of 2 sprites, regular &1b at (&a, &1) &3ba9 3c ; use sprite base &30 &3baa ba 40 ; plot sprite, regular &35 at (&a, &3) &3bac cc ; use sprite base &c0 &3bad 06 60 ; plot sprite, large &46 at (&6, &0) &3baf 00 ; unused ; room_type_52_data &3bb0 81 23 ; KRCY, 1 enemy, generator at (&3, &2) &3bb2 27 0c ; enemy at (&7, &2), type &0c, static &3bb4 b1 ; sprite base &a0, &11 sprites &3bb5 46 c0 ; plot sprite, large &2c at (&6, &4) &3bb7 c8 c0 ; plot sprite, large &2d at (&8, &4) &3bb9 d7 a0 ; plot sprite, large &2b at (&7, &5) &3bbb 9c ; use sprite base &90 &3bbc 3a 8e ; plot column of 2 sprites, large &18 at (&a, &3) &3bbe aa 60 ; plot sprite, large &17 at (&a, &2) &3bc0 08 80 ; plot sprite, large &18 at (&8, &0) &3bc2 50 61 ; plot row of 2 sprites, large &16 at (&0, &5) &3bc4 8c ; use sprite base &80 &3bc5 8a e0 ; plot sprite, large &0f at (&a, &0) &3bc7 bc ; use sprite base &b0 &3bc8 26 00 ; plot sprite, large &30 at (&6, &2) &3bca d4 c0 ; plot sprite, large &3d at (&4, &5) &3bcc 6c ; use sprite base &60 &3bcd 99 22 ; plot row of 3 sprites, regular &63 at (&9, &1) &3bcf 59 02 ; plot row of 3 sprites, regular &60 at (&9, &5) &3bd1 3c ; use sprite base &30 &3bd2 00 e7 ; plot row of 8 sprites, regular &3e at (&0, &0) &3bd4 90 70 ; plot column of 4 sprites, regular &37 at (&0, &1) &3bd6 1c ; use sprite base &10 &3bd7 d6 e0 ; plot sprite, regular &1f at (&6, &5) &3bd9 7c ; use sprite base &70 &3bda 93 e0 ; plot sprite, regular &7f at (&3, &1) &3bdc cc ; use sprite base &c0 &3bdd 28 80 ; plot sprite, large &48 at (&8, &2) &3bdf 00 ; unused ; room_type_53_data &3be0 0a ; KRYW, 2 enemies &3be1 47 0a ; enemy at (&7, &4), type &0a, static &3be3 42 0c ; enemy at (&2, &4), type &0c, static &3be5 70 ; sprite base &60, &10 sprites &3be6 a0 cf ; plot column of 3 sprites, regular &6d at (&0, &2) &3be8 29 20 ; plot sprite, regular &62 at (&9, &2) &3bea 2a 01 ; plot row of 2 sprites, regular &60 at (&a, &2) &3bec 1c ; use sprite base &10 &3bed c1 a0 ; plot sprite, regular &1b at (&1, &4) &3bef 32 a0 ; plot sprite, regular &1a at (&2, &3) &3bf1 0e ; toggle flip &3bf2 c2 c0 ; plot sprite, regular &1d at (&2, &4) &3bf4 a8 a0 ; plot sprite, regular &1b at (&8, &2) &3bf6 4c ; use sprite base &40 &3bf7 56 a0 ; plot sprite, regular &4a at (&6, &5) &3bf9 8c ; use sprite base &80 &3bfa 00 e0 ; plot sprite, large &0e at (&0, &0) &3bfc d0 c0 ; plot sprite, large &0d at (&0, &5) &3bfe 9c ; use sprite base &90 &3bff 84 ef ; plot column of 3 sprites, large &1f at (&4, &0) &3c01 d4 e0 ; plot sprite, large &1f at (&4, &5) &3c03 bc ; use sprite base &b0 &3c04 08 e0 ; plot sprite, large &3e at (&8, &0) &3c06 38 ee ; plot column of 2 sprites, large &3e at (&8, &3) &3c08 dc ; use sprite base &d0 &3c09 0a 60 ; plot sprite, large &56 at (&a, &0) &3c0b 3a 6e ; plot column of 2 sprites, large &56 at (&a, &3) &3c0d 00 00 00 ; unused ; room_type_54_data &3c10 a9 63 ; KRMY, 1 enemy, generator at (&3, &6) &3c12 ba 0d ; enemy at (&a, &b), type &0d, static &3c14 ce ; sprite base &c0, &0e sprites &3c15 b0 00 ; plot sprite, large &41 at (&0, &3) &3c17 a2 80 ; plot sprite, large &49 at (&2, &2) &3c19 bc ; use sprite base &b0 &3c1a 82 c0 ; plot sprite, large &3d at (&2, &0) &3c1c d1 40 ; plot sprite, large &35 at (&1, &5) &3c1e 58 40 ; plot sprite, large &34 at (&8, &5) &3c20 04 a3 ; plot row of 4 sprites, large &3a at (&4, &0) &3c22 dc ; use sprite base &d0 &3c23 14 43 ; plot row of 4 sprites, large &54 at (&4, &1) &3c25 9c ; use sprite base &90 &3c26 00 60 ; plot sprite, large &16 at (&0, &0) &3c28 a0 60 ; plot sprite, large &17 at (&0, &2) &3c2a 50 60 ; plot sprite, large &16 at (&0, &5) &3c2c 5a 60 ; plot sprite, large &16 at (&a, &5) &3c2e 6c ; use sprite base &60 &3c2f ca 00 ; plot sprite, regular &61 at (&a, &4) &3c31 7c ; use sprite base &70 &3c32 b3 e0 ; plot sprite, regular &7f at (&3, &3) &3c34 3c ; use sprite base &30 &3c35 65 20 ; plot sprite, regular &32 at (&5, &6) &3c37 00 00 00 00 00 00 00 00 00 ; unused ; room_type_55_data &3c40 2a ; KRMY, 2 enemies &3c41 c6 06 ; enemy at (&6, &c), type &06, static &3c43 64 6f ; enemy at (&4, &6), type &0f, moving left &3c45 ce ; sprite base &c0, &0e sprites &3c46 00 c1 ; plot row of 2 sprites, large &4c at (&0, &0) &3c48 dc ; use sprite base &d0 &3c49 10 41 ; plot row of 2 sprites, large &54 at (&0, &1) &3c4b bc ; use sprite base &b0 &3c4c 14 60 ; plot sprite, large &36 at (&4, &1) &3c4e d4 40 ; plot sprite, large &35 at (&4, &5) &3c50 9c ; use sprite base &90 &3c51 3a 8e ; plot column of 2 sprites, large &18 at (&a, &3) &3c53 50 61 ; plot row of 2 sprites, large &16 at (&0, &5) &3c55 96 62 ; plot row of 3 sprites, large &17 at (&6, &1) &3c57 04 80 ; plot sprite, large &18 at (&4, &0) &3c59 6c ; use sprite base &60 &3c5a 85 26 ; plot row of 7 sprites, regular &63 at (&5, &0) &3c5c 95 26 ; plot row of 7 sprites, regular &63 at (&5, &1) &3c5e e0 24 ; plot row of 5 sprites, regular &63 at (&0, &6) &3c60 3c ; use sprite base &30 &3c61 b7 82 ; plot row of 3 sprites, regular &39 at (&7, &3) &3c63 66 e3 ; plot row of 4 sprites, regular &3e at (&6, &6) &3c65 5c ; use sprite base &50 &3c66 b6 af ; plot column of 3 sprites, regular &5b at (&6, &3) &3c68 00 00 00 00 00 00 00 00 ; unused ; room_type_56_data &3c70 aa 48 ; KRMY, 2 enemies, generator at (&8, &4) &3c72 60 08 ; enemy at (&0, &6), type &08, static &3c74 a8 0c ; enemy at (&8, &a), type &0c, static &3c76 71 ; sprite base &60, &11 sprites &3c77 63 c5 ; plot row of 6 sprites, regular &6c at (&3, &6) &3c79 e5 42 ; plot row of 3 sprites, regular &65 at (&5, &6) &3c7b ab d1 ; plot column of 5 sprites, regular &6d at (&b, &2) &3c7d 07 c2 ; plot row of 3 sprites, regular &6c at (&7, &0) &3c7f cc ; use sprite base &c0 &3c80 10 e1 ; plot row of 2 sprites, large &4e at (&0, &1) &3c82 94 00 ; plot sprite, large &41 at (&4, &1) &3c84 9c ; use sprite base &90 &3c85 80 62 ; plot row of 3 sprites, large &17 at (&0, &0) &3c87 50 60 ; plot sprite, large &16 at (&0, &5) &3c89 b0 80 ; plot sprite, large &19 at (&0, &3) &3c8b bc ; use sprite base &b0 &3c8c 85 60 ; plot sprite, large &37 at (&5, &0) &3c8e 0a 60 ; plot sprite, large &36 at (&a, &0) &3c90 d1 40 ; plot sprite, large &35 at (&1, &5) &3c92 1c ; use sprite base &10 &3c93 26 ae ; plot column of 2 sprites, regular &1a at (&6, &2) &3c95 18 a0 ; plot sprite, regular &1a at (&8, &1) &3c97 3c ; use sprite base &30 &3c98 56 20 ; plot sprite, regular &32 at (&6, &5) &3c9a 4c ; use sprite base &40 &3c9b 4a a0 ; plot sprite, regular &4a at (&a, &4) &3c9d a8 80 ; plot sprite, regular &49 at (&8, &2) &3c9f 00 ; unused ; room_type_57_data &3ca0 22 ; KRCW, 2 enemies &3ca1 45 b5 ; enemy at (&5, &4), type &15, moving down &3ca3 86 0c ; enemy at (&6, &8), type &0c, static &3ca5 91 ; sprite base &80, &11 sprites &3ca6 00 c0 ; plot sprite, large &0c at (&0, &0) &3ca8 04 e0 ; plot sprite, large &0e at (&4, &0) &3caa ac ; use sprite base &a0 &3cab 37 c0 ; plot sprite, large &2c at (&7, &3) &3cad b9 c0 ; plot sprite, large &2d at (&9, &3) &3caf d8 a0 ; plot sprite, large &2b at (&8, &5) &3cb1 9c ; use sprite base &90 &3cb2 82 60 ; plot sprite, large &17 at (&2, &0) &3cb4 56 e0 ; plot sprite, large &1e at (&6, &5) &3cb6 bc ; use sprite base &b0 &3cb7 17 00 ; plot sprite, large &30 at (&7, &1) &3cb9 99 00 ; plot sprite, large &31 at (&9, &1) &3cbb 5a 40 ; plot sprite, large &34 at (&a, &5) &3cbd 21 a1 ; plot row of 2 sprites, large &3a at (&1, &2) &3cbf b1 81 ; plot row of 2 sprites, large &39 at (&1, &3) &3cc1 d1 81 ; plot row of 2 sprites, large &39 at (&1, &5) &3cc3 7c ; use sprite base &70 &3cc4 06 25 ; plot row of 6 sprites, regular &72 at (&6, &0) &3cc6 a0 11 ; plot column of 5 sprites, regular &71 at (&0, &2) &3cc8 6c ; use sprite base &60 &3cc9 55 60 ; plot sprite, regular &66 at (&5, &5) &3ccb 5c ; use sprite base &50 &3ccc 9b b0 ; plot column of 4 sprites, regular &5b at (&b, &1) &3cce 00 00 ; unused ; room_type_58_data &3cd0 01 ; KRCY, 1 enemy &3cd1 13 3f ; animation at (3, 1), type 1 &3cd3 93 ; sprite base &80, &13 sprites &3cd4 da a0 ; plot sprite, large &0b at (&a, &5) &3cd6 d2 c0 ; plot sprite, large &0d at (&2, &5) &3cd8 3c ; use sprite base &30 &3cd9 80 eb ; plot row of 12 sprites, regular &3f at (&0, &0) &3cdb 64 e5 ; plot row of 6 sprites, regular &3e at (&4, &6) &3cdd 2c ; use sprite base &20 &3cde 1b 10 ; plot column of 4 sprites, regular &20 at (&b, &1) &3ce0 85 80 ; plot sprite, regular &29 at (&5, &0) &3ce2 25 a0 ; plot sprite, regular &2a at (&5, &2) &3ce4 9c ; use sprite base &90 &3ce5 03 00 ; plot sprite, large &10 at (&3, &0) &3ce7 06 20 ; plot sprite, large &12 at (&6, &0) &3ce9 18 40 ; plot sprite, large &14 at (&8, &1) &3ceb b8 40 ; plot sprite, large &15 at (&8, &3) &3ced 50 60 ; plot sprite, large &16 at (&0, &5) &3cef cc ; use sprite base &c0 &3cf0 01 00 ; plot sprite, large &40 at (&1, &0) &3cf2 93 20 ; plot sprite, large &43 at (&3, &1) &3cf4 16 40 ; plot sprite, large &44 at (&6, &1) &3cf6 1c ; use sprite base &10 &3cf7 35 a0 ; plot sprite, regular &1a at (&5, &3) &3cf9 c5 c0 ; plot sprite, regular &1d at (&5, &4) &3cfb c6 a1 ; plot row of 2 sprites, regular &1b at (&6, &4) &3cfd 22 6f ; plot column of 3 sprites, regular &16 at (&2, &2) &3cff 00 ; unused ; room_type_59_data &3d00 81 46 ; KRCY, 1 enemy, generator at (&6, &4) &3d02 64 0c ; enemy at (&4, &6), type &0c, static &3d04 71 ; sprite base &60, &11 sprites &3d05 06 05 ; plot row of 6 sprites, regular &60 at (&6, &0) &3d07 7c ; use sprite base &70 &3d08 a6 e0 ; plot sprite, regular &7f at (&6, &2) &3d0a 3c ; use sprite base &30 &3d0b 55 21 ; plot row of 2 sprites, regular &32 at (&5, &5) &3d0d 68 21 ; plot row of 2 sprites, regular &32 at (&8, &6) &3d0f 60 e0 ; plot sprite, regular &3e at (&0, &6) &3d11 9c ; use sprite base &90 &3d12 3a 8e ; plot column of 2 sprites, large &18 at (&a, &3) &3d14 9a 60 ; plot sprite, large &17 at (&a, &1) &3d16 d1 a0 ; plot sprite, large &1b at (&1, &5) &3d18 ac ; use sprite base &a0 &3d19 80 20 ; plot sprite, large &23 at (&0, &0) &3d1b 02 21 ; plot row of 2 sprites, large &22 at (&2, &0) &3d1d bc ; use sprite base &b0 &3d1e 18 60 ; plot sprite, large &36 at (&8, &1) &3d20 1c ; use sprite base &10 &3d21 39 af ; plot column of 3 sprites, regular &1a at (&9, &3) &3d23 16 a0 ; plot sprite, regular &1a at (&6, &1) &3d25 e3 a0 ; plot sprite, regular &1b at (&3, &6) &3d27 0d ; toggle repeat &3d28 c4 8e ; plot column of 2 sprites, regular &19 at (&4, &4) &3d2a 0e ; toggle flip &3d2b e4 c0 ; plot sprite, regular &1d at (&4, &6) &3d2d 45 c0 ; plot sprite, regular &1c at (&5, &4) &3d2f 00 ; unused ; room_type_5a_data &3d30 03 ; KRCY, 3 enemies &3d31 a5 08 ; enemy at (&5, &a), type &08, static &3d33 a6 08 ; enemy at (&6, &a), type &08, static &3d35 6a 0d ; enemy at (&a, &6), type &0d, static &3d37 2f ; sprite base &20, &0f sprites &3d38 aa 00 ; plot sprite, regular &21 at (&a, &2) &3d3a 1c ; use sprite base &10 &3d3b a1 a0 ; plot sprite, regular &1b at (&1, &2) &3d3d a2 20 ; plot sprite, regular &13 at (&2, &2) &3d3f 4c ; use sprite base &40 &3d40 d2 22 ; plot row of 3 sprites, regular &43 at (&2, &5) &3d42 8c ; use sprite base &80 &3d43 0a c0 ; plot sprite, large &0c at (&a, &0) &3d45 da a0 ; plot sprite, large &0b at (&a, &5) &3d47 d0 c0 ; plot sprite, large &0d at (&0, &5) &3d49 9c ; use sprite base &90 &3d4a 80 61 ; plot row of 2 sprites, large &17 at (&0, &0) &3d4c cc ; use sprite base &c0 &3d4d 84 80 ; plot sprite, large &49 at (&4, &0) &3d4f 25 a0 ; plot sprite, large &4a at (&5, &2) &3d51 ac ; use sprite base &a0 &3d52 87 af ; plot column of 3 sprites, large &2b at (&7, &0) &3d54 6c ; use sprite base &60 &3d55 62 c7 ; plot row of 8 sprites, regular &6c at (&2, &6) &3d57 ab cf ; plot column of 3 sprites, regular &6d at (&b, &2) &3d59 45 01 ; plot row of 2 sprites, regular &60 at (&5, &4) &3d5b 20 af ; plot column of 3 sprites, regular &6a at (&0, &2) &3d5d 00 00 00 ; unused ; room_type_5b_data &3d60 09 ; KRYW, 1 enemy &3d61 42 0d ; enemy at (&2, &4), type &0d, static &3d63 93 ; sprite base &80, &13 sprites &3d64 d0 e0 ; plot sprite, large &0f at (&0, &5) &3d66 00 e0 ; plot sprite, large &0e at (&0, &0) &3d68 bc ; use sprite base &b0 &3d69 a7 80 ; plot sprite, large &39 at (&7, &2) &3d6b b0 40 ; plot sprite, large &35 at (&0, &3) &3d6d d2 40 ; plot sprite, large &35 at (&2, &5) &3d6f b1 c0 ; plot sprite, large &3d at (&1, &3) &3d71 c2 c0 ; plot sprite, large &3d at (&2, &4) &3d73 56 40 ; plot sprite, large &34 at (&6, &5) &3d75 d8 40 ; plot sprite, large &35 at (&8, &5) &3d77 cc ; use sprite base &c0 &3d78 08 80 ; plot sprite, large &48 at (&8, &0) &3d7a 37 c0 ; plot sprite, large &4c at (&7, &3) &3d7c 9c ; use sprite base &90 &3d7d 8a 60 ; plot sprite, large &17 at (&a, &0) &3d7f 34 40 ; plot sprite, large &14 at (&4, &3) &3d81 d4 40 ; plot sprite, large &15 at (&4, &5) &3d83 1c ; use sprite base &10 &3d84 a1 a0 ; plot sprite, regular &1b at (&1, &2) &3d86 6c ; use sprite base &60 &3d87 84 b0 ; plot column of 4 sprites, regular &6b at (&4, &0) &3d89 85 b0 ; plot column of 4 sprites, regular &6b at (&5, &0) &3d8b a0 c0 ; plot sprite, regular &6d at (&0, &2) &3d8d 6a c1 ; plot row of 2 sprites, regular &6c at (&a, &6) &3d8f 00 ; unused ; room_type_5c_data &3d90 8a 03 ; KRYW, 2 enemies, generator at (&3, &0) &3d92 42 0c ; enemy at (&2, &4), type &0c, static &3d94 65 b5 ; enemy at (&5, &6), type &15, moving down &3d96 2f ; sprite base &20, &0f sprites &3d97 42 00 ; plot sprite, regular &20 at (&2, &4) &3d99 e4 86 ; plot row of 7 sprites, regular &29 at (&4, &6) &3d9b bc ; use sprite base &b0 &3d9c 80 60 ; plot sprite, large &37 at (&0, &0) &3d9e d2 40 ; plot sprite, large &35 at (&2, &5) &3da0 9c ; use sprite base &90 &3da1 50 60 ; plot sprite, large &16 at (&0, &5) &3da3 1c ; use sprite base &10 &3da4 82 a0 ; plot sprite, regular &1b at (&2, &0) &3da6 97 a3 ; plot row of 4 sprites, regular &1b at (&7, &1) &3da8 96 e0 ; plot sprite, regular &1f at (&6, &1) &3daa ac ; use sprite base &a0 &3dab 88 af ; plot column of 3 sprites, large &2b at (&8, &0) &3dad d8 a0 ; plot sprite, large &2b at (&8, &5) &3daf 6c ; use sprite base &60 &3db0 8b d3 ; plot column of 7 sprites, regular &6d at (&b, &0) &3db2 83 e0 ; plot sprite, regular &6f at (&3, &0) &3db4 3c ; use sprite base &30 &3db5 a0 6f ; plot column of 3 sprites, regular &37 at (&0, &2) &3db7 32 a0 ; plot sprite, regular &3a at (&2, &3) &3db9 4c ; use sprite base &40 &3dba 37 a0 ; plot sprite, regular &4a at (&7, &3) &3dbc 00 00 00 00 ; unused ; room_type_5d_data &3dc0 80 63 ; KRCY, 0 enemies, generator at (&3, &6) &3dc2 d1 ; sprite base &c0, &11 sprites &3dc3 96 42 ; plot row of 3 sprites, large &45 at (&6, &1) &3dc5 2c ; use sprite base &20 &3dc6 06 40 ; plot sprite, regular &24 at (&6, &0) &3dc8 87 44 ; plot row of 5 sprites, regular &25 at (&7, &0) &3dca 3c ; use sprite base &30 &3dcb 47 04 ; plot row of 5 sprites, regular &30 at (&7, &4) &3dcd d8 80 ; plot sprite, regular &39 at (&8, &5) &3dcf 1c ; use sprite base &10 &3dd0 82 60 ; plot sprite, regular &17 at (&2, &0) &3dd2 65 80 ; plot sprite, regular &18 at (&5, &6) &3dd4 da 60 ; plot sprite, regular &17 at (&a, &5) &3dd6 b2 a0 ; plot sprite, regular &1b at (&2, &3) &3dd8 6c ; use sprite base &60 &3dd9 35 20 ; plot sprite, regular &62 at (&5, &3) &3ddb 36 05 ; plot row of 6 sprites, regular &60 at (&6, &3) &3ddd 5c ; use sprite base &50 &3dde 0e ; toggle flip &3ddf 46 60 ; plot sprite, regular &56 at (&6, &4) &3de1 25 20 ; plot sprite, regular &52 at (&5, &2) &3de3 ac ; use sprite base &a0 &3de4 b0 4e ; plot column of 2 sprites, large &25 at (&0, &3) &3de6 00 4e ; plot column of 2 sprites, large &24 at (&0, &0) &3de8 52 40 ; plot sprite, large &24 at (&2, &5) &3dea 8c ; use sprite base &80 &3deb 42 60 ; plot sprite, large &06 at (&2, &4) &3ded 00 00 00 ; unused ; room_type_5e_data &3df0 0b ; KRYW, 3 enemies &3df1 61 12 ; enemy at (&1, &6), type &12, static &3df3 91 12 ; enemy at (&1, &9), type &12, static &3df5 73 5f ; animation at (3, 7), type 2 &3df7 b0 ; sprite base &a0, &10 sprites &3df8 43 a0 ; plot sprite, large &2a at (&3, &4) &3dfa 27 e0 ; plot sprite, large &2e at (&7, &2) &3dfc a9 e0 ; plot sprite, large &2f at (&9, &2) &3dfe 88 a0 ; plot sprite, large &2b at (&8, &0) &3e00 9c ; use sprite base &90 &3e01 46 62 ; plot row of 3 sprites, large &16 at (&6, &4) &3e03 8c ; use sprite base &80 &3e04 33 a0 ; plot sprite, large &0a at (&3, &3) &3e06 bc ; use sprite base &b0 &3e07 45 c0 ; plot sprite, large &3c at (&5, &4) &3e09 00 60 ; plot sprite, large &36 at (&0, &0) &3e0b 81 60 ; plot sprite, large &37 at (&1, &0) &3e0d 6c ; use sprite base &60 &3e0e 60 a4 ; plot row of 5 sprites, regular &6a at (&0, &6) &3e10 e5 26 ; plot row of 7 sprites, regular &63 at (&5, &6) &3e12 a3 00 ; plot sprite, regular &61 at (&3, &2) &3e14 8b d0 ; plot column of 4 sprites, regular &6d at (&b, &0) &3e16 4c ; use sprite base &40 &3e17 a1 60 ; plot sprite, regular &47 at (&1, &2) &3e19 1c ; use sprite base &10 &3e1a 9a a0 ; plot sprite, regular &1b at (&a, &1) &3e1c 97 e0 ; plot sprite, regular &1f at (&7, &1) &3e1e 00 00 ; unused ; room_type_5f_data &3e20 02 ; KRCY, 2 enemies &3e21 46 ba ; enemy at (&6, &4), type &1a, moving down &3e23 47 bc ; enemy at (&7, &4), type &1c, moving down &3e25 0b ; sprite base &00, &0b sprites &3e26 e2 a3 ; plot row of 4 sprites, regular &0b at (&2, &6) &3e28 1c ; use sprite base &10 &3e29 96 60 ; plot sprite, regular &17 at (&6, &1) &3e2b 17 80 ; plot sprite, regular &18 at (&7, &1) &3e2d c1 60 ; plot sprite, regular &17 at (&1, &4) &3e2f b9 60 ; plot sprite, regular &17 at (&9, &3) &3e31 8c ; use sprite base &80 &3e32 d0 80 ; plot sprite, large &09 at (&0, &5) &3e34 d6 80 ; plot sprite, large &09 at (&6, &5) &3e36 c2 40 ; plot sprite, large &05 at (&2, &4) &3e38 44 60 ; plot sprite, large &06 at (&4, &4) &3e3a 58 60 ; plot sprite, large &06 at (&8, &5) &3e3c da 40 ; plot sprite, large &05 at (&a, &5) &3e3e 00 00 ; unused ; room_type_60_data &3e40 80 64 ; KRCY, 0 enemies, generator at (&4, &6) &3e42 0c ; sprite base &00, &0c sprites &3e43 e6 e1 ; plot row of 2 sprites, regular &0f at (&6, &6) &3e45 1c ; use sprite base &10 &3e46 80 60 ; plot sprite, regular &17 at (&0, &0) &3e48 23 80 ; plot sprite, regular &18 at (&3, &2) &3e4a 97 60 ; plot sprite, regular &17 at (&7, &1) &3e4c 3a 80 ; plot sprite, regular &18 at (&a, &3) &3e4e 33 c0 ; plot sprite, regular &1c at (&3, &3) &3e50 43 a0 ; plot sprite, regular &1a at (&3, &4) &3e52 7c ; use sprite base &70 &3e53 b4 e0 ; plot sprite, regular &7f at (&4, &3) &3e55 8c ; use sprite base &80 &3e56 d0 81 ; plot row of 2 sprites, large &09 at (&0, &5) &3e58 54 60 ; plot sprite, large &06 at (&4, &5) &3e5a d8 40 ; plot sprite, large &05 at (&8, &5) &3e5c da 80 ; plot sprite, large &09 at (&a, &5) &3e5e 00 00 ; unused ; room_type_61_data &3e60 02 ; KRCY, 2 enemies &3e61 48 0c ; enemy at (&8, &4), type &0c, static &3e63 8b 08 ; enemy at (&b, &8), type &08, static &3e65 29 ; sprite base &20, &09 sprites &3e66 80 53 ; plot column of 7 sprites, regular &25 at (&0, &0) &3e68 8b 53 ; plot column of 7 sprites, regular &25 at (&b, &0) &3e6a 0a 53 ; plot column of 7 sprites, regular &24 at (&a, &0) &3e6c 3c ; use sprite base &30 &3e6d 81 13 ; plot column of 7 sprites, regular &31 at (&1, &0) &3e6f 38 60 ; plot sprite, regular &36 at (&8, &3) &3e71 1c ; use sprite base &10 &3e72 c9 a0 ; plot sprite, regular &1b at (&9, &4) &3e74 c8 c0 ; plot sprite, regular &1d at (&8, &4) &3e76 0e ; toggle flip &3e77 92 e0 ; plot sprite, regular &1f at (&2, &1) &3e79 d2 e0 ; plot sprite, regular &1f at (&2, &5) &3e7b 93 e0 d3 e0 00 ; unused ; room_type_62_data &3e80 05 ; KRCY, 5 enemies &3e81 68 60 ; enemy at (&8, &6), type &00, moving left &3e83 12 08 ; enemy at (&2, &1), type &08, static &3e85 b2 08 ; enemy at (&2, &b), type &08, static &3e87 19 08 ; enemy at (&9, &1), type &08, static &3e89 b9 08 ; enemy at (&9, &b), type &08, static &3e8b 08 ; sprite base &00, &08 sprites &3e8c 9c ; use sprite base &90 &3e8d 80 65 ; plot row of 6 sprites, large &17 at (&0, &0) &3e8f 50 65 ; plot row of 6 sprites, large &16 at (&0, &5) &3e91 3c ; use sprite base &30 &3e92 a2 6f ; plot column of 3 sprites, regular &37 at (&2, &2) &3e94 a9 6f ; plot column of 3 sprites, regular &37 at (&9, &2) &3e96 a0 80 ; plot sprite, regular &39 at (&0, &2) &3e98 a4 80 ; plot sprite, regular &39 at (&4, &2) &3e9a a7 80 ; plot sprite, regular &39 at (&7, &2) &3e9c ab 80 ; plot sprite, regular &39 at (&b, &2) &3e9e 00 00 ; unused ; room_type_63_data &3ea0 11 ; KRCY, 1 enemy &3ea1 46 b4 ; enemy at (&6, &4), type &14, moving down &3ea3 4b ; sprite base &40, &0b sprites &3ea4 31 a0 ; plot sprite, regular &4a at (&1, &3) &3ea6 ac ; use sprite base &a0 &3ea7 00 25 ; plot row of 6 sprites, large &22 at (&0, &0) &3ea9 04 80 ; plot sprite, large &28 at (&4, &0) &3eab 86 20 ; plot sprite, large &23 at (&6, &0) &3ead 82 60 ; plot sprite, large &27 at (&2, &0) &3eaf 9c ; use sprite base &90 &3eb0 22 e0 ; plot sprite, large &1e at (&2, &2) &3eb2 8c ; use sprite base &80 &3eb3 d0 80 ; plot sprite, large &09 at (&0, &5) &3eb5 da 80 ; plot sprite, large &09 at (&a, &5) &3eb7 52 60 ; plot sprite, large &06 at (&2, &5) &3eb9 d8 40 ; plot sprite, large &05 at (&8, &5) &3ebb 0c ; use sprite base &00 &3ebc e4 e3 ; plot row of 4 sprites, regular &0f at (&4, &6) &3ebe 00 00 ; unused ; room_type_64_data &3ec0 01 ; KRCY, 1 enemy &3ec1 45 b7 ; enemy at (&5, &4), type &17, moving down &3ec3 8c ; sprite base &80, &0c sprites &3ec4 04 e0 ; plot sprite, large &0e at (&4, &0) &3ec6 d2 c0 ; plot sprite, large &0d at (&2, &5) &3ec8 da a0 ; plot sprite, large &0b at (&a, &5) &3eca 9c ; use sprite base &90 &3ecb 16 e1 ; plot row of 2 sprites, large &1e at (&6, &1) &3ecd 36 e1 ; plot row of 2 sprites, large &1e at (&6, &3) &3ecf 56 e1 ; plot row of 2 sprites, large &1e at (&6, &5) &3ed1 80 61 ; plot row of 2 sprites, large &17 at (&0, &0) &3ed3 50 60 ; plot sprite, large &16 at (&0, &5) &3ed5 3c ; use sprite base &30 &3ed6 64 e5 ; plot row of 6 sprites, regular &3e at (&4, &6) &3ed8 06 e5 ; plot row of 6 sprites, regular &3e at (&6, &0) &3eda 20 8f ; plot column of 3 sprites, regular &38 at (&0, &2) &3edc a2 80 ; plot sprite, regular &39 at (&2, &2) &3ede f6 00 ; unused ; room_type_65_data &3ee0 81 62 ; KRCY, 1 enemy, generator at (&2, &6) &3ee2 40 09 ; enemy at (&0, &4), type &09, static &3ee4 2a ; sprite base &20, &0a sprites &3ee5 90 00 ; plot sprite, regular &21 at (&0, &1) &3ee7 3c ; use sprite base &30 &3ee8 00 eb ; plot row of 12 sprites, regular &3e at (&0, &0) &3eea 60 e9 ; plot row of 10 sprites, regular &3e at (&0, &6) &3eec 1c ; use sprite base &10 &3eed b3 a0 ; plot sprite, regular &1b at (&3, &3) &3eef 25 a3 ; plot row of 4 sprites, regular &1a at (&5, &2) &3ef1 9c ; use sprite base &90 &3ef2 84 c2 ; plot row of 3 sprites, large &1d at (&4, &0) &3ef4 da a0 ; plot sprite, large &1b at (&a, &5) &3ef6 ac ; use sprite base &a0 &3ef7 1a ae ; plot column of 2 sprites, large &2a at (&a, &1) &3ef9 cc ; use sprite base &c0 &3efa 34 62 ; plot row of 3 sprites, large &46 at (&4, &3) &3efc 7c ; use sprite base &70 &3efd b2 e0 ; plot sprite, regular &7f at (&2, &3) &3eff 00 ; unused ; room_type_66_data &3f00 88 64 ; KRYW, 0 enemies, generator at (&4, &6) &3f02 6b ; sprite base &60, &0b sprites &3f03 66 a5 ; plot row of 6 sprites, regular &6a at (&6, &6) &3f05 7c ; use sprite base &70 &3f06 b4 e0 ; plot sprite, regular &7f at (&4, &3) &3f08 00 2b ; plot row of 12 sprites, regular &72 at (&0, &0) &3f0a 1c ; use sprite base &10 &3f0b 90 ab ; plot row of 12 sprites, regular &1b at (&0, &1) &3f0d b5 a0 ; plot sprite, regular &1b at (&5, &3) &3f0f 0e ; toggle flip &3f10 3a c0 ; plot sprite, regular &1c at (&a, &3) &3f12 9c ; use sprite base &90 &3f13 50 61 ; plot row of 2 sprites, large &16 at (&0, &5) &3f15 8c ; use sprite base &80 &3f16 d4 c0 ; plot sprite, large &0d at (&4, &5) &3f18 ac ; use sprite base &a0 &3f19 06 6f ; plot column of 3 sprites, large &26 at (&6, &0) &3f1b 28 6e ; plot column of 2 sprites, large &26 at (&8, &2) &3f1d 4a 60 ; plot sprite, large &26 at (&a, &4) &3f1f 00 ; unused ; room_type_67_data &3f20 03 ; KRCY, 3 enemies &3f21 54 1f ; animation at (4, 5), type 0 &3f23 56 3f ; animation at (6, 5), type 1 &3f25 58 1f ; animation at (8, 5), type 0 &3f27 8a ; sprite base &80, &0a sprites &3f28 24 a2 ; plot row of 3 sprites, large &0a at (&4, &2) &3f2a 02 e0 ; plot sprite, large &0e at (&2, &0) &3f2c d0 c0 ; plot sprite, large &0d at (&0, &5) &3f2e 00 c0 ; plot sprite, large &0c at (&0, &0) &3f30 bc ; use sprite base &b0 &3f31 84 a2 ; plot row of 3 sprites, large &3b at (&4, &0) &3f33 5c ; use sprite base &50 &3f34 0a a1 ; plot row of 2 sprites, regular &5a at (&a, &0) &3f36 62 a9 ; plot row of 10 sprites, regular &5a at (&2, &6) &3f38 a0 af ; plot column of 3 sprites, regular &5b at (&0, &2) &3f3a 2c ; use sprite base &20 &3f3b 1b 10 ; plot column of 4 sprites, regular &20 at (&b, &1) &3f3d db 00 ; plot sprite, regular &21 at (&b, &5) &3f3f 00 ; unused ; room_type_68_data &3f40 00 ; KRCY, 0 enemies &3f41 2b ; sprite base &20, &0b sprites &3f42 00 2b ; plot row of 12 sprites, regular &22 at (&0, &0) &3f44 3c ; use sprite base &30 &3f45 40 0b ; plot row of 12 sprites, regular &30 at (&0, &4) &3f47 d1 80 ; plot sprite, regular &39 at (&1, &5) &3f49 da 80 ; plot sprite, regular &39 at (&a, &5) &3f4b 1c ; use sprite base &10 &3f4c 54 63 ; plot row of 4 sprites, regular &16 at (&4, &5) &3f4e e2 60 ; plot sprite, regular &17 at (&2, &6) &3f50 d9 60 ; plot sprite, regular &17 at (&9, &5) &3f52 6c ; use sprite base &60 &3f53 30 0b ; plot row of 12 sprites, regular &60 at (&0, &3) &3f55 4c ; use sprite base &40 &3f56 d3 e0 ; plot sprite, regular &4f at (&3, &5) &3f58 0e ; toggle flip &3f59 d8 e0 ; plot sprite, regular &4f at (&8, &5) &3f5b cc ; use sprite base &c0 &3f5c 90 45 ; plot row of 6 sprites, large &45 at (&0, &1) &3f5e 00 00 ; unused ; room_type_69_data &3f60 01 ; KRCY, 1 enemy &3f61 0a b6 ; enemy at (&a, &0), type &16, moving down &3f63 ac ; sprite base &a0, &0c sprites &3f64 d0 45 ; plot row of 6 sprites, large &25 at (&0, &5) &3f66 00 4f ; plot column of 3 sprites, large &24 at (&0, &0) &3f68 8c ; use sprite base &80 &3f69 da 80 ; plot sprite, large &09 at (&a, &5) &3f6b c6 40 ; plot sprite, large &05 at (&6, &4) &3f6d 48 60 ; plot sprite, large &06 at (&8, &4) &3f6f 1c ; use sprite base &10 &3f70 52 63 ; plot row of 4 sprites, regular &16 at (&2, &5) &3f72 24 40 ; plot sprite, regular &14 at (&4, &2) &3f74 a8 60 ; plot sprite, regular &17 at (&8, &2) &3f76 9b 60 ; plot sprite, regular &17 at (&b, &1) &3f78 82 60 ; plot sprite, regular &17 at (&2, &0) &3f7a bc ; use sprite base &b0 &3f7b 32 00 ; plot sprite, large &30 at (&2, &3) &3f7d b4 00 ; plot sprite, large &31 at (&4, &3) &3f7f 00 ; unused ; room_type_6a_data &3f80 03 ; KRCY, 3 enemies &3f81 24 b7 ; enemy at (&4, &2), type &17, moving down &3f83 52 09 ; enemy at (&2, &5), type &09, static &3f85 27 b8 ; enemy at (&7, &2), type &18, moving down &3f87 29 ; sprite base &20, &09 sprites &3f88 64 23 ; plot row of 4 sprites, regular &22 at (&4, &6) &3f8a 0d ; toggle repeat &3f8b 32 0e ; plot column of 2 sprites, regular &20 at (&2, &3) &3f8d 8c ; use sprite base &80 &3f8e 0a c0 ; plot sprite, large &0c at (&a, &0) &3f90 00 e0 ; plot sprite, large &0e at (&0, &0) &3f92 9c ; use sprite base &90 &3f93 50 a5 ; plot row of 6 sprites, large &1a at (&0, &5) &3f95 85 e0 ; plot sprite, large &1f at (&5, &0) &3f97 a5 e0 ; plot sprite, large &1f at (&5, &2) &3f99 ac ; use sprite base &a0 &3f9a 44 00 ; plot sprite, large &20 at (&4, &4) &3f9c c6 00 ; plot sprite, large &21 at (&6, &4) &3f9e 00 00 ; unused ; room_type_6b_data &3fa0 1a ; KRYW, 2 enemies &3fa1 97 71 ; enemy at (&7, &9), type &11, moving left &3fa3 6b 09 ; enemy at (&b, &6), type &09, static &3fa5 4a ; sprite base &40, &0a sprites &3fa6 29 30 ; plot column of 4 sprites, regular &42 at (&9, &2) &3fa8 7c ; use sprite base &70 &3fa9 26 20 ; plot sprite, regular &72 at (&6, &2) &3fab 27 00 ; plot sprite, regular &70 at (&7, &2) &3fad 62 09 ; plot row of 10 sprites, regular &70 at (&2, &6) &3faf 8c ; use sprite base &80 &3fb0 00 e0 ; plot sprite, large &0e at (&0, &0) &3fb2 d0 c0 ; plot sprite, large &0d at (&0, &5) &3fb4 09 c0 ; plot sprite, large &0c at (&9, &0) &3fb6 9c ; use sprite base &90 &3fb7 8a 60 ; plot sprite, large &17 at (&a, &0) &3fb9 84 ef ; plot column of 3 sprites, large &1f at (&4, &0) &3fbb 6c ; use sprite base &60 &3fbc ab a0 ; plot sprite, regular &6b at (&b, &2) &3fbe 00 00 ; unused ; room_type_6c_data &3fc0 01 ; KRCY, 1 enemy &3fc1 22 b4 ; enemy at (&2, &2), type &14, moving down &3fc3 4b ; sprite base &40, &0b sprites &3fc4 e2 82 ; plot row of 3 sprites, regular &49 at (&2, &6) &3fc6 3c ; use sprite base &30 &3fc7 53 20 ; plot sprite, regular &32 at (&3, &5) &3fc9 80 e9 ; plot row of 10 sprites, regular &3f at (&0, &0) &3fcb ab 6f ; plot column of 3 sprites, regular &37 at (&b, &2) &3fcd 1c ; use sprite base &10 &3fce 13 b0 ; plot column of 4 sprites, regular &1a at (&3, &1) &3fd0 9c ; use sprite base &90 &3fd1 56 62 ; plot row of 3 sprites, large &16 at (&6, &5) &3fd3 bc ; use sprite base &b0 &3fd4 d0 40 ; plot sprite, large &35 at (&0, &5) &3fd6 55 40 ; plot sprite, large &34 at (&5, &5) &3fd8 0a 60 ; plot sprite, large &36 at (&a, &0) &3fda 14 a1 ; plot row of 2 sprites, large &3a at (&4, &1) &3fdc a4 81 ; plot row of 2 sprites, large &39 at (&4, &2) &3fde 00 00 ; unused ; room_type_6d_data &3fe0 09 ; KRYW, 1 enemy &3fe1 54 1f ; animation at (4, 5), type 0 &3fe3 8b ; sprite base &80, &0b sprites &3fe4 24 a0 ; plot sprite, large &0a at (&4, &2) &3fe6 d0 c0 ; plot sprite, large &0d at (&0, &5) &3fe8 9c ; use sprite base &90 &3fe9 3a 80 ; plot sprite, large &18 at (&a, &3) &3feb 98 61 ; plot row of 2 sprites, large &17 at (&8, &1) &3fed cc ; use sprite base &c0 &3fee 17 80 ; plot sprite, large &48 at (&7, &1) &3ff0 58 00 ; plot sprite, large &40 at (&8, &5) &3ff2 5a e0 ; plot sprite, large &4e at (&a, &5) &3ff4 3c ; use sprite base &30 &3ff5 00 0b ; plot row of 12 sprites, regular &30 at (&0, &0) &3ff7 90 70 ; plot column of 4 sprites, regular &37 at (&0, &1) &3ff9 14 81 ; plot row of 2 sprites, regular &38 at (&4, &1) &3ffb 4c ; use sprite base &40 &3ffc e3 23 ; plot row of 4 sprites, regular &43 at (&3, &6) &3ffe 00 00 ; unused ; room_sprites ; room_sprite_01 &4000 00 11 11 33 23 23 01 01 ee bf 0f 0f 0d 07 0f 0d &4010 00 00 88 88 08 08 08 00 01 00 00 11 76 f8 f0 f2 &4020 09 0f 0f 0f 9f d6 f2 f0 00 00 7f f8 f0 f0 f0 f2 ; room_sprite_02 &4030 00 00 11 01 00 01 03 01 66 ff 1f 1f 0b 0f 0f 17 &4040 00 00 00 88 88 88 88 00 00 01 66 f9 f0 f0 f4 f4 &4050 07 0f 0e 0f 1f be f4 f0 00 00 00 cc e2 f1 f0 f4 ; room_sprite_03 &4060 00 00 01 01 03 45 8b c8 06 0f 0f 0f 0f 0f 0f 0f &4070 00 00 08 08 0c 28 1c 30 f8 70 30 00 01 01 00 00 &4080 00 f7 f7 f7 00 0f 0f 06 f8 e8 c8 00 08 08 00 00 ; room_sprite_04 &4090 00 00 01 01 03 43 8b cc 06 0f 0f 0f 0f 0f 0f 0f &40a0 00 00 08 08 0c 28 1c 32 fe 76 32 00 01 01 00 00 &40b0 00 f1 f1 f1 00 0f 0f 06 fe ee cc 00 08 08 00 00 ; welcome_back_to_string &40c0 57 45 4c 43 4f 4d 45 40 42 41 43 4b 40 54 4f 0d ; "WELCOME@BACK@TO" ; cyplex_blip_string &40d0 43 59 50 4c 45 58 40 42 4c 49 50 5d 0d ; "CYPLEX@BLIP]" ; hero_of_our_times_string &40dd 48 45 52 4f 40 4f 46 40 4f 55 52 40 54 49 4d 45 ; "HERO@OF@OUR@TIMES]" &40ed 53 5d 0d ; room_sprite_06 &40f0 77 08 77 08 55 0a 77 0a 77 08 77 08 44 0b 77 08 &4100 44 0b 44 0b 44 0b 44 0b 77 08 55 0a 55 0a 55 0a &4110 77 08 11 0e 77 08 77 08 44 0b 44 0b 66 09 66 09 ; room_sprite_07 &4120 ff ff ff bf 9f 8f 8f 9f ff df 8f 8f 00 00 00 00 &4130 ff 7f 3f 3f 37 37 77 11 bf ff 99 dd 99 bb bb ff &4140 dd ff 44 55 55 55 44 ff ff ff 99 bb 99 dd 99 ff ; room_sprite_08 &4150 ff ff f8 f8 f8 cb cb ca ff ff f0 f0 f0 0f 0f 00 &4160 ff ff f0 f0 f0 0f 0f 00 ca ca ca ca ca ca ca ca &4170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_09 &4180 ca ca ca ca ca ca ca ca 00 00 00 00 00 00 00 00 &4190 00 00 00 00 00 00 00 00 ca db fb f8 d8 f8 8f 0f &41a0 00 ff ff f0 70 f0 0f 0f 00 ff ff f0 f0 f0 0f 0f ; room_sprite_0a &41b0 ff ff f0 f0 f0 0f 0f 00 ff ef e1 e1 e1 2d 6d 65 &41c0 ff ef e9 89 e9 89 e9 89 00 00 00 00 00 00 00 00 &41d0 65 65 65 65 65 65 65 65 e9 89 e9 89 e9 89 e9 89 ; room_sprite_0b &41e0 00 00 00 00 00 00 00 00 65 65 65 65 65 65 65 65 &41f0 e9 89 e9 89 e9 89 e9 89 00 ff ff f0 f0 f0 0f 0f &4200 65 ed ed e1 e1 e1 0f 0f e9 89 e9 89 e9 89 8f 0f ; room_sprite_0c &4210 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f &4220 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f &4230 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f ; room_sprite_0d &4240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4250 00 00 00 00 00 00 00 03 00 00 01 02 03 07 0b 0f &4260 00 05 0a 0f 0f 0f 0f 0f 0d 07 0e 0f 0f 0f 0f 0f ; room_sprite_0e &4270 00 00 00 00 00 03 05 0f 00 00 00 03 05 0f 07 0f &4280 01 05 0a 07 0f 0f 0f 0f 0b 0f 0f 0f 0f 0f 0f 0f &4290 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f ; room_sprite_0f &42a0 00 00 00 00 00 00 00 08 00 00 00 00 11 32 75 fb &42b0 11 32 75 fb f7 ff ff ff 15 0e 0b 0d 0f 0f 0f 0f &42c0 f7 ff 77 19 06 0b 0e 0f ff ff ff ff ff 33 1d 0a ; room_sprite_10 &42d0 08 06 0d 0b 0f 0f 0f 0f 04 0c 0a 07 0d 0f 0f 0f &42e0 01 05 0e 05 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f &42f0 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f ; room_sprite_11 &4300 ff ff ff bb 15 1d 06 0d ff ff ff ff ff ff ee 45 &4310 ff ff ff ee 89 8a 07 0d 0e 0f 0f 0f 0f 0f 0f 0f &4320 0a 0f 0b 0f 0f 0f 0f 0f 0f 0b 0f 0f 0f 0f 0f 0f ; room_sprite_12 &4330 00 00 11 22 22 55 55 00 00 bb 77 ff ff ff 88 03 &4340 00 ff ff ff ff ff 00 0f bb bb bb bb bb bb bb bb &4350 07 07 07 07 07 07 07 07 0f 0f 0f 0f 0f 0f 0f 0f ; room_sprite_13 &4360 bb bb bb bb bb bb bb 00 07 07 07 07 07 07 07 03 &4370 0f 0f 0f 0f 0f 0f 0f 0f bb bb bb 00 bb bb bb 55 &4380 88 ff 88 70 00 70 88 ff 00 ff 00 f0 00 f0 00 ff ; room_sprite_14 &4390 00 22 50 55 00 50 55 20 00 ff f0 ff 00 f0 ff f0 &43a0 00 cc e0 ee 00 e0 ee c0 00 22 50 55 00 50 55 20 &43b0 00 ff f0 ff 00 f0 ff f0 00 cc e0 ee 00 e0 ee c0 ; room_sprite_15 &43c0 00 00 20 00 00 00 50 00 60 00 f0 00 60 00 f0 00 &43d0 00 00 40 00 00 00 a0 00 00 00 00 00 00 00 00 00 &43e0 60 00 06 06 06 06 06 06 00 00 00 00 00 00 00 00 ; room_sprite_16 &43f0 00 00 00 00 00 00 00 00 06 06 06 06 06 06 06 06 &4400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 20 &4410 06 06 06 06 00 b0 70 f0 00 00 00 00 00 00 80 c0 ; room_sprite_17 &4420 ff f0 ff ff ff ff ff ff ff f0 ff ff ff ff ff ff &4430 ff f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff &4440 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ; room_sprite_18 &4450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 22 &4460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_19 &4480 00 00 00 00 00 00 01 01 00 00 00 00 00 08 0c 0c &4490 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 &44a0 08 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_1a &44b0 77 00 00 33 22 22 22 22 ff bb 00 ff 00 a0 50 a0 &44c0 ee 00 00 cc 55 dd cc dd 22 22 22 22 33 00 00 00 &44d0 50 a0 50 ff ff 00 bb bb dd dd dd dd cc 00 00 00 ; room_sprite_1b &44e0 00 00 00 00 00 00 00 00 bb bb bb bb bb bb bb bb &44f0 00 00 00 00 00 00 00 00 00 00 00 00 11 22 22 00 &4500 bb bb bb 00 77 ff ff 00 00 00 00 00 88 cc cc 00 ; room_sprite_1c &4510 00 00 00 00 77 00 77 77 00 00 00 00 ff 00 ff ff &4520 00 11 22 11 bb 33 bb bb 77 77 77 77 00 00 00 00 &4530 ff ff ff ff 00 00 00 00 bb bb bb bb 33 33 11 00 ; room_sprite_1d &4540 00 00 00 00 00 00 11 11 00 00 33 77 ff ff ff ff &4550 00 ee ee aa ee ee ee ee 11 33 33 33 22 33 33 00 &4560 ff ff ff ff ff ff ff 00 ee ee ee ee aa ee cc 00 ; room_sprite_1e &4570 00 33 33 22 33 33 33 11 00 ff ff ff ff ff ff ff &4580 00 cc ee aa ee ee ee ee 11 11 00 00 00 00 00 00 &4590 ff ff ff ff 77 33 00 00 ee ee ee ee aa ee ee 00 ; room_sprite_1f &45a0 10 00 00 00 00 00 00 00 f8 f4 00 31 00 31 00 31 &45b0 f0 f0 0f f7 0f f7 0f f7 00 00 00 00 00 00 00 31 &45c0 00 31 00 31 00 31 72 f5 0f f7 0f f7 0f f7 ff ff ; room_sprite_20 &45d0 00 00 00 00 00 00 77 88 00 00 00 00 10 00 dc 10 &45e0 10 02 10 d0 10 d0 d0 d0 ff 77 00 00 00 00 00 00 &45f0 dc dc 10 10 00 00 00 00 d0 d0 d0 d0 d0 10 12 10 ; room_sprite_21 &4600 00 00 00 00 00 00 00 00 06 03 01 00 00 00 01 03 &4610 00 00 08 4c cc 4c 08 00 00 00 01 23 33 23 01 00 &4620 06 0c 08 00 00 00 08 0c 00 00 00 00 00 00 00 00 ; room_sprite_22 &4630 00 00 00 00 00 00 00 00 06 03 01 00 00 00 01 01 &4640 00 00 08 4c cc 4c 08 00 00 00 00 00 00 10 31 31 &4650 03 02 06 06 00 f8 f0 f0 00 00 00 00 00 80 c0 c0 ; room_sprite_23 &4660 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 f0 f0 f0 &4670 ff ff ff f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 &4680 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 ; room_sprite_24 &4690 11 33 77 77 fe fe ed ed ff ff ff f0 f0 78 f4 f4 &46a0 ff ff ff f0 f0 f0 f0 f0 fc fc fc fc fc fc fc fc &46b0 f8 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 ; room_sprite_25 &46c0 fc fc fc fc fc fc fc fc f0 f0 f0 f0 f0 f0 f0 f0 &46d0 f0 f0 f0 f0 f0 f0 f0 f0 fc fc fc fc fc fc fc fc &46e0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 ; room_sprite_26 &46f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 &4700 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 &4710 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 ; room_sprite_27 &4720 fc fc fc fc fc fc fc fc f0 f0 f0 f0 f0 f0 f0 78 &4730 f0 f0 f0 f0 f0 f0 f0 f0 ed ed fc fe 67 47 03 01 &4740 f4 f4 f8 f0 f0 0f 0f 0f f0 f0 f0 f0 f0 0f 0f 0f ; room_sprite_28 &4750 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 e1 &4760 c3 c3 c3 c3 c3 c3 c3 c3 f0 f0 f0 f0 f0 0f 0f 0f &4770 d2 d2 f1 f0 f0 0f 0f 0f cb cb 87 86 0e 0c 0c 08 ; room_sprite_29 &4780 ff ff ff f0 f0 f0 f0 f0 ff ff ff f0 f0 e1 d2 d2 &4790 88 cc ee ee e7 c7 cb cb f0 f0 f0 f0 f0 f0 f0 f0 &47a0 f1 f0 f0 f0 f0 f0 f0 f0 c3 c3 c3 c3 c3 c3 c3 c3 ; room_sprite_2a &47b0 ff ff f0 f0 f0 0f 0f 00 ff ff f0 f0 f0 0f 0f 00 &47c0 ff ff f0 f0 f0 0f 0f 00 00 00 00 00 00 00 00 00 &47d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_2b &47e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &47f0 00 00 00 00 00 00 00 00 00 ff ff f0 f0 f0 0f 0f &4800 00 ff ff f0 f0 f0 0f 0f 00 ff ff f0 f0 f0 0f 0f ; room_sprite_2c &4810 ca ca ca ca ca ca ca ca 00 00 00 00 00 00 00 00 &4820 00 00 00 00 00 00 00 00 ca ca ca ca ca ca ca ca &4830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_2d &4840 00 00 00 00 00 00 00 00 65 65 65 65 65 65 65 65 &4850 e9 89 e9 89 e9 89 e9 89 00 00 00 00 00 00 00 00 &4860 65 65 65 65 65 65 65 65 e9 89 e9 89 e9 89 e9 89 ; room_sprite_2e &4870 00 00 01 01 03 02 02 06 07 0f 08 00 00 00 00 00 &4880 0f 0f 00 00 00 00 00 00 04 04 04 04 04 04 04 04 &4890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_2f &48a0 04 04 04 04 04 04 04 04 00 00 00 00 00 00 00 00 &48b0 00 00 00 00 00 00 00 00 04 04 04 04 04 04 04 04 &48c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_30 &48d0 04 04 04 04 04 55 bb bb 00 00 00 00 00 ff ff ff &48e0 00 00 00 00 00 ff ff ff bb 05 55 02 55 02 55 02 &48f0 ff 0f ff 0f ff 0f ff 0f ff 0f ff 0f ff 0f ff 0f ; room_sprite_31 &4900 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 &4910 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 0f 0f 0f &4920 f0 f0 f0 f0 f0 0f 0f 0f f0 f0 f0 f0 f0 0f 0f 0f ; room_sprite_32 &4930 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 &4940 c3 c3 c3 c3 c3 c3 c3 c3 f0 f0 f0 f0 f0 f0 f0 f0 &4950 f0 f0 f0 f0 f0 f0 f0 f0 c3 c3 c3 c3 c3 c3 c3 c3 ; room_sprite_33 &4960 ff ff 00 f0 00 f0 00 0f ff ff 00 f0 00 f0 00 0f &4970 ff ff 00 f0 00 f0 00 0f 00 00 00 00 00 00 00 00 &4980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_34 &4990 ff 8f ac 9c ac 9c ac 9c ff 0f a0 50 a0 50 a0 50 &49a0 ff 0f a3 63 a3 63 a3 63 ac 9c ac 9c ac 9c ff 0f &49b0 a0 50 a0 50 a0 50 ff 0f a3 63 a3 63 a3 63 ef 0f ; room_sprite_35 &49c0 ff ff ff cc cd cd ff ff ff ff ff 00 0f 0f 9f 17 &49d0 ff ef ef 23 6f 6f ef ef ff ff ff ff ff ff 8f 0f &49e0 17 17 17 17 ff ff 0f 0f ef ef ef ef ef ef 0f 0f ; room_sprite_36 &49f0 00 77 77 77 77 44 54 54 00 ff bb 99 a8 30 f0 f0 &4a00 00 ee ce ce ce 46 82 c2 54 55 77 77 77 47 07 00 &4a10 f0 fc b9 bb ff 0f 0f 00 c6 ce ce ce ce 0e 0e 00 ; room_sprite_37 &4a20 ff ff ff ff ff ff cc cd ff ff 00 17 17 17 06 0f &4a30 ff ef ef ef ef ef 23 6f ee ee ff ff ff ff 8f 0f &4a40 0f 0f 17 17 bb ff 0f 0f ef ef ef ef ef ef 0f 0f ; room_sprite_38 &4a50 bb ab ab ab ab ab bb 05 ff 0f f0 f0 f0 ff ff 0f &4a60 ff 3f f7 f7 f7 ff ff 0e 05 bb 05 bb 05 bb 05 05 &4a70 0f ff 0f ff 0f ff 0f 0f 0e ff 0e ff 0e ff 0e 0e ; room_sprite_39 &4a80 02 02 02 02 02 02 02 02 0f 0f 0f 0f 0f 0f 0f 0f &4a90 0c 0c 0c 0c 0c 0c 0c 0c 02 10 02 02 10 02 02 10 &4aa0 0f 70 0f 0f 70 0f 0f 70 0c 80 0c 0c 80 0c 0c 80 ; room_sprite_3a &4ab0 05 bb 05 bb 05 05 ff bb 0f ff 0f ff 0f 0f ff ff &4ac0 0e ff 0e ff 0e 0e ff ff bb 55 55 22 22 11 00 00 &4ad0 ff ff ff ff 77 bb 66 00 ff ee ee cc cc 88 00 00 ; room_sprite_3b &4ae0 ff ff cf cf de cf de cf ff ff 0f 0f d2 0f 69 0f &4af0 ff ef 2f 6f 6f 6f 6f 6f de cf de cf df ff 8f 0f &4b00 a5 0f 5a 0f ff ff 0f 0f 6f 6f 6f 6f ef ef 0f 0f ; room_sprite_3c &4b10 ff ff fc ff fc ff 8f 0f ff ff f0 ff f0 ff 0f 0f &4b20 ff ef e3 ef e3 ef 0f 0f ff ff fc ff fc ff 8f 0f &4b30 ff ff f0 ff f0 ff 0f 0f ff ef e3 ef e3 ef 0f 0f ; room_sprite_3d &4b40 ff ff cc dd cc dd cc dd ff ff 11 95 11 95 11 95 &4b50 ff ef 23 ef 2f 2f 2f ef cc dd cc dd cc dd cc dd &4b60 11 95 11 95 11 95 11 95 2f ef 2f 2f ef 2f 2f ef ; room_sprite_3e &4b70 cc dd cc dd cc dd cc dd 11 95 11 95 11 95 11 95 &4b80 2f 2f 2f ef 2f 2f ef 2f cc dd cc dd cc ff 8f 0f &4b90 11 95 11 95 11 ff 0f 0f 2f ef 2f ef 23 ef 0f 0f ; room_sprite_3f &4ba0 ff ff f0 e1 d2 d2 d2 d2 ff ff f0 0f f0 f0 f0 f0 &4bb0 ff ff f0 f0 f0 f4 f4 f4 d2 d2 d2 f0 f0 f0 0f 0f &4bc0 f0 f0 f0 f0 ff f0 0f 0f f4 f4 f4 f4 f8 f0 0f 0f ; room_sprite_40 &4bd0 ff 00 f0 00 f0 00 f0 00 ff 00 f0 00 f0 00 f0 00 &4be0 ff 00 f0 00 f0 00 f0 00 f0 00 f0 00 f0 00 0f 00 &4bf0 f0 00 f0 00 f0 00 0f 00 f0 00 f0 00 f0 00 0f 00 ; room_sprite_41 &4c00 0b 0b 0b 0b 0b 0b 0b 0b 07 07 07 07 07 07 07 07 &4c10 0f 0f 1f 1f 3f 3f 7f 7f 0b 0b 0b 0b 0b 0b 0b 0b &4c20 07 07 07 07 07 07 07 07 ff ff 1f 1f 1f 1f 0f 0f ; room_sprite_42 &4c30 00 00 00 00 00 00 11 fe 00 00 00 00 11 76 f9 f7 &4c40 11 32 75 fb f7 ff ff ff f9 fb fb fb fb fb fb fb &4c50 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ; room_sprite_43 &4c60 00 05 00 bb bb bb bb aa 00 0f 00 ff ff bb 15 0e &4c70 00 0e 00 ff ff bb 37 3f aa aa aa bb bb 00 05 00 &4c80 0f 4f ef ff ff 00 0f 00 3f 7f ff ff ff 00 0e 00 ; room_sprite_44 &4c90 00 00 00 00 00 00 00 ff 00 00 00 00 00 00 00 ff &4ca0 00 00 00 00 00 00 00 ff 0f ff 0f 0f 0f 00 0f 00 &4cb0 0f ff 0f 0f 0f 00 0f 00 0f ff 0f 0f 0f 00 0f 00 ; room_sprite_45 &4cc0 0f 0f 0f 0f 0f 0e 0b 05 0f 0f 0f 0f 0f 0e 0b 0d &4cd0 0f 0f 0f 0f 0f 0b 05 02 02 02 00 00 00 00 00 00 &4ce0 04 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 ; room_sprite_46 &4cf0 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f &4d00 0f 0f 0f 0f 0f 0d 0e 05 0f 0f 0d 0f 0b 0d 06 08 &4d10 0e 0b 0d 06 0a 00 00 00 0a 08 00 00 00 00 00 00 ; room_sprite_47 &4d20 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f &4d30 0d 07 0d 0e 0a 0d 0a 0c 0f 0f 0f 0f 0f 0f 0f 0f &4d40 0f 0f 0f 0f 0f 0f 0f 0f 04 0a 0c 0a 0e 04 0a 0c ; room_sprite_48 &4d50 60 10 00 02 00 02 00 02 f0 70 00 0f 00 0f 00 0f &4d60 e0 80 00 0c 00 0c 00 0c 00 00 20 50 00 bb bb 00 &4d70 00 b0 f0 f0 00 ff ff 00 00 00 c0 e0 00 ff ff 00 ; room_sprite_49 &4d80 00 55 00 02 00 55 00 02 00 ff 00 0f 00 ff 00 0f &4d90 00 ff 00 0f 00 ff 00 0f 00 50 50 50 50 50 00 02 &4da0 00 f0 f0 f0 f0 f0 00 0f 00 f0 f0 f0 f0 f0 00 0f ; room_sprite_4a &4db0 22 33 77 6f 66 cf cf cf 00 00 11 1f 11 3f 3f 3f &4dc0 88 cc cc 8f 88 0f 0f 0f cf cf cf 6f 6f 77 33 22 &4dd0 3f 3f 3f 1f 1f 11 00 00 0f 0f 0f 8f 8f cc cc 88 ; room_sprite_4b &4de0 07 0b 0f 0b 0f 0b 0f 07 0f ff 7f af df 7f a7 0f &4df0 00 08 08 08 08 08 08 00 00 03 00 00 00 00 00 00 &4e00 00 0e 80 80 80 00 b8 b8 00 00 00 00 30 30 b0 b0 ; room_sprite_4c &4e10 0f 0f 0d 0f 0f 0a 15 1d 0f 0b 06 0b 45 66 66 77 &4e20 0f 0f 0f 0f 07 0f 0a 07 19 15 11 11 11 11 11 11 &4e30 77 77 77 77 77 77 77 77 8a 89 8a 88 88 88 88 88 ; room_sprite_4d &4e40 e4 f1 f0 f0 e2 f0 e0 00 30 51 72 70 70 30 74 20 &4e50 a0 f4 f1 f0 f0 f0 b0 00 b9 f4 f0 f0 f0 f0 e0 00 &4e60 80 e4 c0 e0 e2 e0 c0 00 50 f5 72 f8 f0 70 50 00 ; room_sprite_4e &4e70 55 05 55 05 55 05 55 05 bb 0b bb 0b bb 0b bb 0b &4e80 ff 0f ff 0f ff 0f ff 0f 55 05 55 05 55 05 55 05 &4e90 bb 0b bb 0b bb 0b bb 0b ff 0f ff 0f ff 0f ff 0f ; room_sprite_4f &4ea0 44 44 44 44 ee ee ee ff 44 44 44 44 ee ee ee ff &4eb0 44 44 44 44 ee ee ee ff ff ff ff ff ff ff ff ff &4ec0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ; room_sprite_50 &4ed0 77 f8 fb fb fb 75 32 11 ff f0 ff ff ff ff ff f7 &4ee0 ff f0 ff ff ff ff ff ff 00 00 00 00 00 00 00 00 &4ef0 fb 75 32 11 00 00 00 00 ff ff ff f7 fb 75 32 11 ; room_sprite_51 &4f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 &4f10 11 32 32 75 75 fb fb e6 00 00 00 00 00 00 00 11 &4f20 11 32 32 75 75 fb fb e6 e6 cc cc 88 88 00 00 00 ; room_sprite_52 &4f30 11 32 32 75 75 75 fb fb e6 cc cc 88 88 88 00 00 &4f40 00 00 00 00 00 00 00 00 fb fb 06 fb fb fb fb 06 &4f50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_53 &4f60 ff f0 ff ff ff ff ff 00 bb b4 bb bf bf bf bb 00 &4f70 ff f0 ff ff ff ff ff 00 00 00 00 00 00 00 00 00 &4f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_54 &4f90 0f 0f 0f 0f 0f 0a 0f 04 0f 0f 0d 0f 05 08 00 00 &4fa0 0b 0c 06 08 00 00 00 00 08 00 00 00 00 00 00 00 &4fb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_55 &4fc0 00 00 00 00 00 00 01 01 00 01 02 05 0b 0f 06 0f &4fd0 07 0b 0f 0d 07 0f 0f 0f 02 03 03 05 07 07 07 0b &4fe0 0f 0d 0f 0f 0b 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f ; room_sprite_56 &4ff0 0f 0f 07 88 bb bb 55 00 0b 0f 0f 00 ff ff ff 00 &5000 0f 0f 0f 00 ff ff ff 00 20 00 55 55 00 10 00 22 &5010 f0 00 ff ff 00 70 00 ff f0 00 ff ff 00 f0 00 ff ; room_sprite_57 &5020 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 e1 c3 c3 87 &5030 c3 87 86 0e 0c 08 08 00 f0 e1 e1 c3 87 0e 0e 0c &5040 0e 0c 0c 08 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_58 &5050 00 00 00 00 00 00 00 00 00 00 00 00 11 33 33 77 &5060 33 77 77 fe fc f8 f8 f0 00 11 11 33 77 76 fe fc &5070 fe fc fc f8 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 ; room_sprite_59 &5080 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 &5090 00 00 00 00 00 00 04 0e 0f 09 00 00 00 00 00 00 &50a0 0b 0f 04 00 00 00 00 00 0b 01 00 00 00 00 00 00 ; room_sprite_5a &50b0 00 bb 05 bb 05 00 77 77 00 ff 0f ff 0f 05 88 ff &50c0 00 ff 0f ff 0f 0f 00 ff 55 33 22 11 00 00 00 00 &50d0 ff ff ff 77 bb 66 11 00 ff ff ff ff ff ff dd 33 ; room_sprite_5b &50e0 ff ff ff cf cf df ce df ff ff ff 0f 0f ff 00 ff &50f0 ff ff ff 3f 7f ff 77 ff ce df ce df ff ff 0f 0f &5100 00 ff 00 ff ff ff 0f 0f 77 ff 77 ff ff ff 0f 0f ; room_sprite_5c &5110 00 00 00 00 00 00 00 00 00 00 11 11 11 11 11 11 &5120 0e 00 77 77 77 77 77 77 00 00 00 00 00 00 00 00 &5130 00 00 00 11 11 00 00 00 00 0e 00 77 77 00 0e 00 ; room_sprite_5d &5140 00 00 00 00 00 00 11 11 00 11 22 55 bb ff 77 ff &5150 77 bb ff ff ff ff ff ff 11 22 33 33 33 55 77 77 &5160 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ; room_sprite_5e &5170 77 77 55 33 33 33 22 11 ff ff ff ff ff ff ff ff &5180 ff ff ff ff ff ff ff ff 11 11 00 00 00 00 00 00 &5190 ff 77 ff bb 55 22 11 00 ff ff ff ff ff ff bb 77 ; room_sprite_5f &51a0 00 00 00 00 00 00 00 00 00 00 00 10 10 00 00 00 &51b0 00 0b 00 70 70 00 0b 00 00 00 00 00 00 00 00 00 &51c0 10 00 00 00 10 10 00 00 70 00 0b 00 70 70 00 0b ; room_sprite_60 &51d0 0f f7 ff ff 0f de df df 0f bd bf bf 0f ff ff ff &51e0 0f ef ef ef 0f 7b 7f 7f 0f 7b 7f 7f 0f ef ef ef &51f0 0f de df df 0f f7 ff ff 0f ff ff ff 0f bd bf bf ; room_sprite_61 &5200 ff ff 0f 00 ff ff 0f 00 ff ff 0f 00 ff ff 0f 00 &5210 ff ff 0f 00 ff ff 0f 00 ff ff 0f 00 ff ff 0f 00 &5220 ff ff 0f 00 ff ff 0f 00 ff ff 0f 00 ff ff 0f 00 ; room_sprite_62 &5230 88 aa aa ff ff aa aa 88 00 00 00 ff ff 00 66 66 &5240 11 55 55 ff ff 55 55 11 00 00 00 00 11 00 22 00 &5250 66 00 66 bb 77 00 ff 00 00 00 00 00 88 00 cc 00 ; room_sprite_63 &5260 75 fb 07 00 75 fb 07 00 ff ff 0f 00 ff ff 0f 00 &5270 ff ff 0f 00 ff ff 0f 00 75 fb 07 00 75 fb 07 00 &5280 ff ff 0f 00 ff ff 0f 00 ff ff 0f 00 ff ff 0f 00 ; room_sprite_64 &5290 1e 3a 3a 3a 3a 3a 3a 3a 1e 3a 3a 3a 3a 3a 3a 3a &52a0 1e 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a fe &52b0 3a 3a 3a 3a 3a 3a 3a fe 3a 3a 3a 3a 3a 3a 3a fe ; room_sprite_65 &52c0 ff ff 8f 8f 8f 8f 8f 0f ff bf 2f 2f 2f 2f 2f 0f &52d0 ff ef 0f 0f 0f 0f 0f 0f 00 00 00 00 00 00 00 00 &52e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; room_sprite_66 &52f0 88 c4 d8 df dc df de df 00 00 54 f1 f4 f1 f4 f1 &5300 11 32 31 b7 b3 b7 b7 b7 de df de df de dd cc 88 &5310 f4 f1 f4 f1 f4 51 00 00 b7 b7 b7 b7 b7 33 33 11 ; room_sprite_67 &5320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 0a &5340 00 00 00 00 00 00 05 0a 00 00 00 00 00 00 05 0a ; room_sprite_68 &5350 73 73 71 00 10 10 10 10 ff ff ff 00 ff bb 11 55 &5360 ff ff ff 00 ff bb 11 55 10 10 10 10 10 10 10 10 &5370 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 ; room_sprite_69 &5380 10 10 10 10 10 10 10 10 55 55 55 55 55 55 55 55 &5390 55 55 55 55 55 55 55 55 10 10 10 10 10 00 31 73 &53a0 55 55 55 55 ff 00 ff ff 55 55 55 55 ff 00 ff ff ; room_sprite_6a &53b0 75 fb fb 07 75 fb fb 07 ff ff ff 0f ff ff ff 0f &53c0 ee ef ef 0e ee ef ef 0e 75 fb fb 07 75 fb fb 07 &53d0 ff ff ff 0f ff ff ff 0f ee ef ef 0e ee ef ef 0e ; room_sprite_6b &53e0 9f 9f 3f 3f 6f 6f cf cf 9f 9f 3f 3f 6f 6f cf cf &53f0 9f 9f 3f 3f 6f 6f cf cf 9f 9f 3f 3f 6f 6f cf cf &5400 9f 9f 3f 3f 6f 6f cf cf 9f 9f 3f 3f 6f 6f cf cf ; room_sprite_6c &5410 00 00 00 00 00 00 00 00 66 60 66 60 66 60 66 60 &5420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5430 66 60 66 60 66 60 66 60 00 00 00 00 00 00 00 00 ; room_sprite_6d &5440 ff ff 0f 0f 0e 0c 0c 0d ff ff 0f 0f 00 00 0f 0f &5450 ff ff 0f 0f 07 47 4f 4f 0d 0d 0d 1d 1f 0f 0f 0f &5460 0f 0f 0f ff ff 0f 0f 0f 4f 4f cf cf 8f 0f 0f 0f ; room_sprite_6e &5470 8f 8f 8f 8f 8e 8c 8c 8d 0f 0f 0f 0f 00 00 0f 0f &5480 0f 0f 0f 0f 07 47 4f 4f 8d 8d 8d 9d 9f 8f 8f 8f &5490 0f 0f 0f ff ff 0f 0f 0f 4f 4f cf cf 8f 0f 0f 0f ; room_sprite_6f &54a0 77 55 77 55 77 55 77 55 ff ff ff ff ff ff ff ff &54b0 ff ff ff ff ff ff ff ff 77 55 77 55 77 55 77 55 &54c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ; room_sprite_70 &54d0 ff ee 88 ff ee 88 ff 88 ff 88 8b 8b 9b 9b 8a 8b &54e0 ff 23 2f 2f ef ef 67 2b aa 88 ff bb 88 bb ff 8f &54f0 8b ff ff 88 8b 8b ff 0f 2f 27 27 27 2f 6f ef 0f ; room_sprite_71 &5500 ff ff d8 9b fa f8 f8 f8 ff ff f0 f0 f0 f0 f0 f0 &5510 ff ef a1 27 e5 e1 e1 e1 f8 f8 f8 d8 9b fa 8f 0f &5520 f0 f0 f0 f0 f0 f0 0f 0f e1 e1 e1 a1 27 e5 0f 0f ; room_sprite_72 &5530 11 11 11 11 11 11 11 11 f0 f0 f0 f0 f0 f0 f0 f0 &5540 08 08 08 08 08 08 08 08 11 11 11 11 11 11 11 11 &5550 f0 f0 f0 f0 f0 f0 f0 f0 08 08 08 08 08 08 08 08 ; room_sprite_73 &5560 00 00 ff ff f0 f0 f0 f0 00 00 ff ff f0 f0 f0 f0 &5570 00 00 ff ff f0 f0 f0 f0 f0 f0 f0 f0 0f 0f 00 00 &5580 f0 f0 f0 f0 0f 0f 00 00 f0 f0 f0 f0 0f 0f 00 00 ; room_sprite_74 &5590 04 22 66 ff 66 22 04 04 00 00 00 cc 44 44 77 00 &55a0 00 00 00 00 70 00 ff 00 05 05 05 05 05 05 05 04 &55b0 0f 05 0f 02 0f 04 0f 00 0f 01 0f 05 0f 05 0f 00 ; room_sprite_75 &55c0 88 99 aa 99 aa 88 88 88 88 00 88 00 00 00 00 00 &55d0 11 11 11 11 11 11 11 11 88 88 88 88 88 88 88 88 &55e0 00 00 00 00 00 00 00 00 11 11 11 11 11 11 11 11 ; room_sprite_76 &55f0 00 00 aa a5 aa af af af 00 80 c8 e4 e2 e1 e0 e1 &5600 00 00 00 00 80 c8 c4 d3 af af af af af aa 00 00 &5610 e1 e1 e1 e0 e0 c0 80 00 d3 c0 c0 80 00 00 00 00 ; room_sprite_77 &5620 00 00 00 00 00 00 00 00 66 66 66 67 47 47 17 17 &5630 01 07 0f 1f 7f ff ef 8f 00 00 00 01 01 01 01 01 &5640 3f 3f 3f 6f 6f 6f 6f 6f 0f 1e 3c 3c 78 69 69 69 ; room_sprite_78 &5650 01 01 01 01 01 00 00 00 6f 6f 6f 6f 6f 3f 3f 3f &5660 69 69 69 78 3c 3c 1e 0f 00 00 00 00 00 00 00 00 &5670 17 17 03 03 01 00 00 00 8f ef ff 7f 1f 0f 07 01 ; room_sprite_79 &5680 00 00 06 06 06 16 16 16 00 00 00 33 33 33 33 b3 &5690 08 08 68 6e 68 68 68 69 16 16 06 06 06 00 ff ff &56a0 b3 d1 d1 e0 60 00 ff ff 69 69 69 69 69 00 ff ff ; unused # &56b0 - &56cf is a copy of &0d00 - &0d1f &56b0 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f &56c0 10 11 12 13 14 14 14 14 14 14 14 14 14 14 14 14 ; plot_map &56d0 a2 00 LDX #&00 ; plot_map_row_loop &56d2 a0 00 LDY #&00 ; plot_map_column_loop &56d4 a9 1f LDA #&1f # TAB(Y + 3, X + 1) &56d6 20 ee ff JSR &ffee ; OSWRCH &56d9 a9 94 LDA #&94 ; MAP_UNVISITED &56db 85 61 STA &61 ; map_character &56dd 98 TYA &56de 18 CLC &56df 69 03 ADC #&03 &56e1 20 ee ff JSR &ffee ; OSWRCH &56e4 8a TXA &56e5 18 CLC &56e6 69 01 ADC #&01 &56e8 20 ee ff JSR &ffee ; OSWRCH &56eb 98 TYA &56ec 18 CLC &56ed 7d 40 06 ADC &0640,X ; fourteen_times_table &56f0 84 60 STY &60 ; tmp_y &56f2 a8 TAY &56f3 b9 00 0e LDA &0e00,Y ; room_types &56f6 f0 04 BEQ &56fc ; is_visited &56f8 29 80 AND #&80 &56fa f0 02 BEQ &56fe ; is_not_visited ; is_visited &56fc e6 61 INC &61 ; map_character # MAP_VISITED ; is_not_visited &56fe a5 61 LDA &61 ; map_character &5700 20 ee ff JSR &ffee ; OSWRCH # Write character for room &5703 a4 60 LDY &60 ; tmp_y &5705 c8 INY &5706 c0 0e CPY #&0e &5708 d0 ca BNE &56d4 ; plot_map_column_loop &570a e8 INX &570b e0 0c CPX #&0c &570d d0 c3 BNE &56d2 ; plot_map_row_loop &570f 60 RTS ; enemy_sprite_12 # Energy beam uses code for sprite data ; teleport_player &5710 a6 5a LDX &5a ; terminal_number &5712 bd e0 71 LDA &71e0,X ; teleports_x &5715 85 64 STA &64 ; player_x &5717 bd 00 72 LDA &7200,X ; teleports_y &571a 85 65 STA &65 ; player_y &571c bd 20 72 LDA &7220,X ; teleports_room_x &571f 8d 0c 04 STA &040c ; player_room_x (C%) &5722 bd 40 72 LDA &7240,X ; teleports_room_y &5725 8d 10 04 STA &0410 ; player_room_y (D%) &5728 60 RTS ; unplot_barriers (O%) &5729 a2 00 LDX #&00 ; unplot_barriers_loop &572b bd 80 08 LDA &0880,X ; objects_used # Non-zero if object has been used to remove barrier &572e f0 1c BEQ &574c ; consider_next_barrier &5730 a5 68 LDA &68 ; room_type &5732 dd 60 72 CMP &7260,X ; barriers_room_type &5735 d0 15 BNE &574c ; consider_next_barrier &5737 bd 80 72 LDA &7280,X ; barriers_x &573a 85 66 STA &66 ; x &573c bd a0 72 LDA &72a0,X ; barriers_width &573f 85 79 STA &79 ; sprite_size &5741 bd 90 72 LDA &7290,X ; barriers_y &5744 85 67 STA &67 ; y &5746 bd b0 72 LDA &72b0,X ; barriers_height &5749 20 77 57 JSR &5777 ; unplot_barrier ; consider_next_barrier &574c e8 INX &574d e0 10 CPX #&10 &574f d0 da BNE &572b ; unplot_barriers_loop &5751 a2 00 LDX #&00 ; unplot_vertical_barriers_loop &5753 bd 3c 6f LDA &6f3c,X ; vertical_barriers_state # Non-zero if barrier has been removed &5756 f0 19 BEQ &5771 ; consider_next_vertical_barrier &5758 a5 68 LDA &68 ; room_type &575a dd fc 6f CMP &6ffc,X ; vertical_barriers_room_type &575d d0 12 BNE &5771 ; consider_next_vertical_barrier &575f bd 9c 6f LDA &6f9c,X ; vertical_barriers_x &5762 85 66 STA &66 ; x &5764 a9 18 LDA #&18 &5766 85 79 STA &79 ; sprite_size &5768 a9 20 LDA #&20 &576a 85 67 STA &67 ; y &576c a9 05 LDA #&05 &576e 20 77 57 JSR &5777 ; unplot_barrier ; consider_next_vertical_barrier &5771 e8 INX &5772 e0 04 CPX #&04 &5774 d0 dd BNE &5753 ; unplot_vertical_barriers_loop &5776 60 RTS ; unplot_barrier &5777 86 62 STX &62 ; tmp_x &5779 aa TAX &577a a9 0f LDA #&0f &577c 85 61 STA &61 ; sprite_address_high ; unplot_barrier_vertical_loop &577e 20 3a 13 JSR &133a ; unplot_sprite &5781 20 6b 14 JSR &146b ; calculate_tile_offset &5784 84 60 STY &60 ; sprite_address_low &5786 a0 00 LDY #&00 &5788 84 63 STY &63 ; room_data_offset ; unplot_barrier_horizontal_loop &578a a9 00 LDA #&00 &578c 91 60 STA (&60),Y &578e a5 63 LDA &63 ; room_data_offset &5790 18 CLC &5791 69 18 ADC #&18 &5793 85 63 STA &63 ; room_data_offset &5795 c8 INY &5796 c5 79 CMP &79 ; sprite_size &5798 d0 f0 BNE &578a ; unplot_barrier_horizontal_loop &579a a5 67 LDA &67 ; y &579c 18 CLC &579d 69 08 ADC #&08 &579f 85 67 STA &67 ; y &57a1 ca DEX &57a2 e0 ff CPX #&ff &57a4 d0 d8 BNE &577e ; unplot_barrier_vertical_loop &57a6 a6 62 LDX &62 ; tmp_x &57a8 60 RTS ; change_room &57a9 ad 4c 04 LDA &044c ; new_room_address_low (S%) &57ac 85 5c STA &5c ; room_data_address_low &57ae ad 4d 04 LDA &044d ; new_room_address_high (S%) &57b1 85 5d STA &5d ; room_data_address_high &57b3 20 a2 1e JSR &1ea2 ; initialise_room &57b6 a5 64 LDA &64 ; player_x &57b8 8d 14 04 STA &0414 ; initial_player_x (E%) &57bb a5 65 LDA &65 ; player_y &57bd 8d 18 04 STA &0418 ; initial_player_y (F%) &57c0 a6 6d LDX &6d ; player_room &57c2 bd 00 0e LDA &0e00,X ; room_types &57c5 29 7f AND #&7f &57c7 18 CLC &57c8 69 80 ADC #&80 # Set top bit to indicate room has been visited &57ca 9d 00 0e STA &0e00,X ; room_types &57cd 60 RTS ; unused &57ce 00 00 ; generator_sprite &57d0 77 ff fc d8 f8 f8 f8 f8 ff ff f0 f0 f0 f0 f0 f0 &57e0 ee cf c3 a1 e1 e1 e1 e1 f8 f8 f8 f8 d8 fc 8f 07 &57f0 f0 f0 f0 f0 f0 f0 0f 0f e1 e1 e1 e1 a1 c3 0f 0e # &0900 - &0a1f is read from lines 18834 - 22786 of OMEGA2 at line 17352 ; hit_space_to_start_sprite # Moved into screen memory at &7742 &0900 ee ce df df df ce ce 0e ee ce ce ce 4e ce ce 0e &0910 ff ff 0f 33 33 ff ff 0f ee ce 0e 88 08 ee ce 0e &0920 ff ff 0f 33 33 33 33 03 ee ce 0e 88 08 08 08 08 &0930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0940 77 ff ff 07 11 ff ff 0f ee ce 0e 00 cc ce ce 0c &0950 ff cf cf df df ce ce 0e cc ce ce ce 0c 00 00 00 &0960 67 ef cf df df cf ce 0e cc ce ce ce ce ce ce 0e &0970 77 df cf ce ce df df 07 ee ce 0e 00 00 ee ce 0e &0980 ff df cf df cf df df 0f ee ce 0e 8c 0c ee ce 0e &0990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &09a0 ff ff 0f 33 33 33 33 03 ee ce 0e 88 08 08 08 08 &09b0 77 ff cf 0c ce ff ff 07 cc ee 4e 06 66 ce ce 0c &09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &09d0 77 ff ff 07 11 ff ff 0f ee ce 0e 00 cc ce ce 0c &09e0 ff ff 0f 33 33 33 33 03 ee ce 0e 88 08 08 08 08 &09f0 67 ef cf df df cf ce 0e cc ce ce ce ce ce ce 0e &0a00 ff df df cf df df cf 0f cc ce ce 0c 8c cc ce 0e &0a10 ff ff 0f 33 33 33 33 03 ee ce 0e 88 08 08 08 08 # &6180 - &697f is read from OMEGAORB1 ; OMEGAORB1 ; 006180 000b80 000800 # &6180 - &697f is moved to &0900 - &10ff at &7765 ; player_sprites ; player_sprite_0 &0900 00 00 01 03 03 07 07 07 02 0f 0f 0f 5f ff aa aa &0910 00 08 0c 0e 0e 8f 8f 8f 00 00 00 00 00 00 00 00 &0920 07 07 07 03 03 01 00 00 ff 5f 0f 0f 0f 0f 0f 02 &0930 8f 0f 0f 0e 0e 0c 08 00 00 00 00 00 00 00 00 00 ; player_sprite_1 &0940 00 00 00 01 03 03 07 07 00 00 07 0f 0f 0f 5f ff &0950 00 00 00 0c 0e 0e 0f 8f 00 00 00 00 00 00 00 00 &0960 07 07 07 07 07 03 03 00 aa aa ff 5f 0f 0f 0f 0f &0970 8f 8f 8f 0f 0f 0e 0e 08 00 00 00 00 00 00 00 00 ; player_sprite_2 &0980 00 00 00 00 01 03 07 07 00 00 00 07 0f 0f 0f 5f &0990 00 00 00 00 0c 0e 0f 0f 00 00 00 00 00 00 00 00 &09a0 0f 0f 0f 0f 07 07 03 00 ff aa ff 5f 0f 0f 0f 0f &09b0 8f 8f 8f 0f 0f 0f 0e 08 08 08 08 08 00 00 00 00 ; player_sprite_3 &09c0 00 00 00 00 00 01 03 07 00 00 00 00 07 0f 0f 0f &09d0 00 00 00 00 00 0c 0e 0f 00 00 00 00 00 00 00 00 &09e0 07 0f 0f 0f 0f 0f 07 01 5f ff aa 5f 0f 0f 0f 0f &09f0 0f 8f 8f 0f 0f 0f 0f 0c 00 08 08 08 08 08 00 00 ; player_sprite_4 &0a00 00 00 00 01 01 03 03 03 01 07 0f 0f 2f 7f 5d 5d &0a10 00 0c 0e 0f 8f cf 47 47 00 00 00 00 00 08 08 08 &0a20 03 03 03 01 01 00 00 00 7f 2f 0f 0f 0f 0f 07 01 &0a30 cf 8f 0f 0f 0f 0e 0c 00 08 08 08 00 00 00 00 00 ; player_sprite_5 &0a40 00 00 00 00 01 01 03 03 00 00 03 0f 0f 0f 2f 7f &0a50 00 00 08 0e 0f 0f 8f cf 00 00 00 00 00 00 08 08 &0a60 03 03 03 03 03 01 01 00 5d 5d 7f 2f 0f 0f 0f 07 &0a70 47 47 cf 8f 0f 0f 0f 0c 08 08 08 08 08 00 00 00 ; player_sprite_6 &0a80 00 00 00 00 00 01 03 03 00 00 00 03 0f 0f 0f 2f &0a90 00 00 00 08 0e 0f 0f 8f 00 00 00 00 00 00 08 08 &0aa0 07 07 07 07 03 03 01 00 7f 5d 7f 2f 0f 0f 0f 07 &0ab0 cf 47 cf 8f 0f 0f 0f 0c 0c 0c 0c 0c 08 08 00 00 ; player_sprite_7 &0ac0 00 00 00 00 00 00 01 03 00 00 00 00 03 0f 0f 0f &0ad0 00 00 00 00 08 0e 0f 0f 00 00 00 00 00 00 00 08 &0ae0 03 07 07 07 07 07 03 00 2f 7f 5d 2f 0f 0f 0f 0f &0af0 8f cf 47 8f 0f 0f 0f 0e 08 0c 0c 0c 0c 0c 08 00 ; flipped_pixel_values &0b00 00 08 04 0c 02 0a 06 0e 01 09 05 0d 03 0b 07 0f &0b10 80 88 84 8c 82 8a 86 8e 81 89 85 8d 83 8b 87 8f &0b20 40 48 44 4c 42 4a 46 4e 41 49 45 4d 43 4b 47 4f &0b30 c0 c8 c4 cc c2 ca c6 ce c1 c9 c5 cd c3 cb c7 cf &0b40 20 28 24 2c 22 2a 26 2e 21 29 25 2d 23 2b 27 2f &0b50 a0 a8 a4 ac a2 aa a6 ae a1 a9 a5 ad a3 ab a7 af &0b60 60 68 64 6c 62 6a 66 6e 61 69 65 6d 63 6b 67 6f &0b70 e0 e8 e4 ec e2 ea e6 ee e1 e9 e5 ed e3 eb e7 ef &0b80 10 18 14 1c 12 1a 16 1e 11 19 15 1d 13 1b 17 1f &0b90 90 98 94 9c 92 9a 96 9e 91 99 95 9d 93 9b 97 9f &0ba0 50 58 54 5c 52 5a 56 5e 51 59 55 5d 53 5b 57 5f &0bb0 d0 d8 d4 dc d2 da d6 de d1 d9 d5 dd d3 db d7 df &0bc0 30 38 34 3c 32 3a 36 3e 31 39 35 3d 33 3b 37 3f &0bd0 b0 b8 b4 bc b2 ba b6 be b1 b9 b5 bd b3 bb b7 bf &0be0 70 78 74 7c 72 7a 76 7e 71 79 75 7d 73 7b 77 7f &0bf0 f0 f8 f4 fc f2 fa f6 fe f1 f9 f5 fd f3 fb f7 ff ; font_numbers &0c00 ee ee aa aa aa ee ee 00 ; "0" &0c08 44 cc cc 44 44 ee ee 00 ; "1" &0c10 ee ee 22 ee 88 ee ee 00 ; "2" &0c18 ee ee 22 66 22 ee ee 00 ; "3" &0c20 aa aa ee ee 22 22 22 00 ; "4" &0c28 ee ee 88 ee 22 ee ee 00 ; "5" &0c30 ee ee 88 ee aa ee ee 00 ; "6" &0c38 ee ee 22 22 22 22 22 00 ; "7" &0c40 ee ee aa ee aa ee ee 00 ; "8" &0c48 ee ee aa ee 22 ee ee 00 ; "9" ; three_times_table &0c50 00 03 06 09 0c 0f 12 15 18 1b 1e 21 24 27 2a 2d ; one_third_times_table &0c60 00 00 00 01 01 01 02 02 02 03 03 03 04 04 04 05 &0c70 05 05 06 06 06 07 07 07 08 08 08 09 09 09 0a 0a &0c80 0a 0b 0b 0b 0c 0c 0c 0d ; fire_sprite &0c88 00 00 55 ff af 0a 00 00 ; initial_objects_data ; initial_objects_x &0c90 07 11 18 0c 10 18 04 19 0a 1e 02 1e 19 18 02 07 &0ca0 0c 0b 07 00 18 1e 02 06 09 04 18 08 15 0c 1b 0a ; initial_objects_y &0cb0 48 48 18 58 58 40 48 58 48 48 58 48 58 28 48 58 &0cc0 58 38 48 00 50 28 48 30 48 58 58 38 40 48 48 58 ; initial_objects_room &0cd0 1a 48 2f 46 1f 1c 98 90 11 39 4b 3b 24 17 12 64 &0ce0 9a 58 34 ff 33 0d 80 4f 92 4a 7a 5b 60 97 3c 7c ; drain_energy_string &0cf0 12 00 03 ; GCOL 0, 3 &0cf3 19 45 b8 01 df 01 ; PLOT &01b8, &01df (x value is modified) &0cf9 19 45 b8 01 db 01 ; PLOT &01b8, &01db (x value is modified) &0cff 0d ; Objects ; ======= ; object 0: type &00 (PASSPROG ), room &1a (&c, &1) at (&07, &48) ; object 1: type &01 (LEVER ), room &48 (&2, &5) at (&11, &48) ; object 2: type &02 (5 DRACHMA ), room &2f (&5, &3) at (&18, &18) ; object 3: type &03 (WHISTLE ), room &46 (&0, &5) at (&0c, &58) ; object 4: type &04 (BOARD PASS), room &1f (&3, &2) at (&10, &58) ; object 5: type &05 (LASER CARD), room &1c (&0, &2) at (&18, &40) ; object 6: type &06 (LASER GUN ), room &98 (&c, &a) at (&04, &48) ; object 7: type &07 (TICKET ), room &90 (&4, &a) at (&19, &58) ; object 8: type &08 (CHOCOSNACK), room &11 (&3, &1) at (&0a, &48) ; object 9: type &09 (INFOHOLDER), room &39 (&1, &4) at (&1e, &48) ; object 10: type &0a (FLAG ), room &4b (&5, &5) at (&02, &58) ; object 11: type &0b (DUTY FREE ), room &3b (&3, &4) at (&1e, &48) ; object 12: type &0c (EMPTY CAN ), room &24 (&8, &2) at (&19, &58) ; object 13: type &0d (QUADLINK ), room &17 (&9, &1) at (&18, &28) ; object 14: type &0e (POWER CUBE), room &12 (&4, &1) at (&02, &48) ; object 15: type &0f (PROTECTOR ), room &64 (&2, &7) at (&07, &58) ; object 16: type &10 (LIFTPASS 1), room &9a (&0, &b) at (&0c, &58) ; object 17: type &11 (RELAY ), room &58 (&4, &6) at (&0b, &38) ; object 18: type &12 (TELEPORTER), room &34 (&a, &3) at (&07, &48) ; object 19: type &13 (NOTHING ), room &ff (carried) ; object 20: type &14 (CORE PIECE), room &33 (&9, &3) at (&18, &50) ; object 21: type &14 (CORE PIECE), room &0d (&d, &0) at (&1e, &28) ; object 22: type &14 (CORE PIECE), room &80 (&2, &9) at (&02, &48) ; object 23: type &14 (CORE PIECE), room &4f (&9, &5) at (&06, &30) ; object 24: type &14 (CORE PIECE), room &92 (&6, &a) at (&09, &48) ; object 25: type &14 (CORE PIECE), room &4a (&4, &5) at (&04, &58) ; object 26: type &14 (CORE PIECE), room &7a (&a, &8) at (&18, &58) ; object 27: type &14 (CORE PIECE), room &5b (&7, &6) at (&08, &38) ; object 28: type &14 (CORE PIECE), room &60 (&c, &6) at (&15, &40) ; object 29: type &14 (CORE PIECE), room &97 (&b, &a) at (&0c, &48) ; object 30: type &14 (CORE PIECE), room &3c (&4, &4) at (&1b, &48) ; object 31: type &14 (CORE PIECE), room &7c (&c, &8) at (&0a, &58) ; objects_type &0d00 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f &0d10 10 11 12 13 14 14 14 14 14 14 14 14 14 14 14 14 ; objects_x &0d20 07 11 18 0c 10 18 04 19 0a 1e 02 1e 19 18 02 07 &0d30 0c 0b 07 00 18 1e 02 06 09 04 18 08 15 0c 1b 0a ; objects_y &0d40 48 48 18 58 58 40 48 58 48 48 58 48 58 28 48 58 &0d50 58 38 48 00 50 28 48 30 48 58 58 38 40 48 48 58 ; objects_room &0d60 1a 48 2f 46 1f 1c 98 90 11 39 4b 3b 24 17 12 64 &0d70 9a 58 34 ff 33 0d 80 4f 92 4a 7a 5b 60 97 3c 7c ; sprite_to_tile_table ; 0 1 2 3 4 5 6 7 8 9 a b c d e f # Low nibble is top half, high nibble is bottom half &0d80 44 44 44 44 44 11 11 44 44 44 44 11 10 14 14 11 ; &00 # 1: TILE_WALL &0d90 11 44 24 44 44 44 11 44 44 44 44 44 44 44 44 44 ; &10 # 2: TILE_PLATFORM &0da0 44 44 11 11 11 11 11 11 11 04 40 44 44 44 44 24 ; &20 # 4: TILE_BACKGROUND &0db0 11 11 02 44 44 44 44 44 44 44 44 44 44 44 11 22 ; &30 # a: TILE_HARMFUL &0dc0 bb 14 aa 24 01 41 11 11 44 aa 44 44 11 bb aa 42 ; &40 # b: TILE_LIFT &0dd0 44 44 02 04 44 44 41 14 44 44 11 44 44 44 44 11 ; &50 &0de0 11 44 11 11 01 aa 40 11 11 11 11 44 11 11 44 44 ; &60 &0df0 11 11 11 44 11 44 11 11 44 44 44 12 00 0c 1a aa ; &70 ; room_types # Top bit set when room visited ; x 0 1 2 3 4 5 6 7 8 9 a b c d y &0e00 2d 4d 02 03 4d 5f 60 03 5f 60 06 5f 60 07 ; 0 &0e0e 08 09 61 0b 0c 0d 0e 0f 10 11 61 00 12 13 ; 1 &0e1c 14 15 61 16 0d 59 61 18 19 1a 61 1b 1c 1d ; 2 &0e2a 1e 1f 20 62 67 23 61 24 25 26 27 64 6a 2a ; 3 &0e38 2b 63 64 63 2e 2f 30 31 32 62 33 34 64 35 ; 4 &0e46 36 37 38 39 3a 3b 62 64 3c 3d 64 3e 62 3f ; 5 &0e54 40 41 42 43 44 45 6d 47 48 62 49 65 46 00 ; 6 &0e62 00 4e 4b 0d 10 4c 53 00 4e 00 00 00 00 00 ; 7 &0e70 00 4f 64 50 65 52 53 00 4e 54 55 00 56 00 ; 8 &0e7e 57 58 62 62 6c 5a 5b 10 5c 5d 68 68 04 05 ; 9 &0e8c 0a 21 2c 64 28 51 66 22 5e 69 5f 60 29 00 ; a &0e9a 36 6b 0d 17 10 4a ; b # Uses first eight bytes character definitions ; character_definitions &0ea0 ff 81 81 81 81 81 81 ff ; &94 MAP_UNVISITED &0ea8 00 7e 7e 7e 7e 7e 7e 00 ; &95 MAP_VISITED &0eb0 f7 94 95 95 b5 00 5c de ; &96 LOGO_TOP_LEFT &0eb8 dd 51 55 51 5d 00 dc de ; &97 LOGO_TOP_MIDDLE &0ec0 ee 02 6e 2a aa 00 dc de ; &98 LOGO_TOP_RIGHT &0ec8 c6 c6 c6 c6 c6 c6 de 5c ; &99 LOGO_BOTTOM_LEFT &0ed0 c6 c6 ce dc d8 cc c6 c6 ; &9a LOGO_BOTTOM_MIDDLE &0ed8 c6 c6 dc dc c6 c6 de dc ; &9b LOGO_BOTTOM_RIGHT ; enemy_types_flips ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &0ee0 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ; &00 &0ef0 01 01 01 01 01 01 01 02 01 01 01 02 02 01 01 01 ; &10 ; tile_table &0f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0f10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0f30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 # &0f46 - &0f49 set to &01 at line 16858 of OMEGA2 ; clear_loader_text_window_string # &0f50 - &0f56 set at line 15870 of OMEGA2 &0f50 00 00 00 00 00 00 00 #0f50 1c 12 04 13 00 ; define text window x:(&12, &13), y:(&00, &04) #0f55 0c ; CLS #0f56 1a ; restore default windows ; unused &0f57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0f67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0f77 00 00 00 00 00 00 00 00 00 ; initialise_screen_string # &0f80 - &0f9b set at line 15870 of OMEGA2 &0f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0f90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 #0f80 1c 00 0d 13 00 ; define text window x:(&00, &13), y:(&00, &0d) #0f85 0c ; CLS #0f86 1a ; restore default windows #0f87 17 00 06 12 00 00 00 00 00 00 00 00 ; set R6: Vertical displayed register #0f93 17 00 07 1c 00 00 00 00 00 00 00 00 ; set R7: Vertical sync position #0f9f 00 ; unused &0fa0 00 00 00 00 00 00 00 00 ; clear_room_string &0fa8 1c 01 0d 12 00 ; define text window x:(&01, &12), y:(&00, &0d) &0fad 0c ; CLS &0fae 1a ; restore default windows ; unused &0faf 00 ; clear_logo_string (N%) &0fb0 1c 08 10 12 0f ; define text window x:(&08, &12), y:(&0f, &10) &0fb5 0c ; CLS &0fb6 1a ; restore default windows &0fb7 0d ; unused &0fb8 00 00 00 00 00 00 00 00 ; enemy_types_y_velocities ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &0fc0 04 04 04 04 02 02 02 01 04 04 04 04 04 04 01 04 ; &00 &0fd0 04 04 04 04 03 01 04 02 02 02 02 02 02 02 04 04 ; &10 ; unused &0fe0 1c 00 0f 03 00 ; define text window x:(&00, &03), y:(&00, &0f) &0fe5 1f 00 00 ; TAB(&00, &00) &0fe8 11 03 ; COLOUR 3 &0fea 2e ; "." &0feb 1e ; home &0fec 0b ; cursor up &0fed 1a ; restore default windows ; unused &0fee 00 00 00 00 00 00 00 00 ; suppress_collecting_object &0ff6 00 ; player_could_collect_object &0ff7 00 ; energy_beam_timer &0ff8 11 ; first_enemy_to_update &0ff9 01 ; unused &0ffa f3 f4 f5 f6 f7 0d ; font_letters &1000 00 00 00 00 00 00 00 00 ; "@", actually " " &1008 ee ee aa ee ee aa aa 00 ; "A" &1010 ee ee aa cc aa ee ee 00 ; "B" &1018 ee ee 88 88 88 ee ee 00 ; "C" &1020 cc ee aa aa aa ee cc 00 ; "D" &1028 ee ee 88 cc 88 ee ee 00 ; "E" &1030 ee ee 88 cc 88 88 88 00 ; "F" &1038 ee ee 88 aa aa ee ee 00 ; "G" &1040 aa aa ee ee aa aa aa 00 ; "H" &1048 ee ee 44 44 44 ee ee 00 ; "I" &1050 ee ee 22 22 22 ee cc 00 ; "J" &1058 aa aa ee cc ee aa aa 00 ; "K" &1060 88 88 88 88 88 ee ee 00 ; "L" &1068 aa ee ee ee aa aa aa 00 ; "M" &1070 ee ee aa aa aa aa aa 00 ; "N" &1078 ee ee aa aa aa ee ee 00 ; "O" &1080 ee ee aa ee ee 88 88 00 ; "P" &1088 ee ee aa aa aa cc ee 00 ; "Q" &1090 ee ee aa ee cc ee aa 00 ; "R" &1098 ee ee 88 ee 22 ee ee 00 ; "S" &10a0 ee ee 44 44 44 44 44 00 ; "Y" &10a8 aa aa aa aa aa ee ee 00 ; "U" &10b0 aa aa aa aa ee 44 44 00 ; "V" &10b8 aa aa aa ee ee ee aa 00 ; "W" &10c0 aa aa ee 44 ee aa aa 00 ; "X" &10c8 aa aa ee ee 44 44 44 00 ; "Y" &10d0 ee ee 22 44 88 ee ee 00 ; "Z" &10d8 00 88 cc ee cc 88 00 00 ; "[", actually prompt &10e0 00 44 44 00 44 44 00 00 ; "\", actually ":" &10e8 88 88 88 88 00 88 88 00 ; "]", actually "!" &10f0 ee ee 22 66 44 00 44 00 ; "^", actually "?" &10f8 cc cc cc cc cc cc cc cc ; "_", actually cursor # &6980 - &6e7f is read from OMEGAORB5 ; OMEGAORB5 ; 006980 000b80 000500 ; status_panel_sprite &6980 00 00 11 33 76 74 fc f8 00 00 ff ff f0 f0 f0 00 # Loaded directly into screen memory &6990 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &69a0 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &69b0 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &69c0 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &69d0 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &69e0 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 11 &69f0 00 00 00 88 cc c4 e2 e0 00 00 11 33 76 74 fc f8 &6a00 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a10 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a20 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a30 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a40 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a50 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a60 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a70 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a80 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6a90 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6aa0 00 00 ff ff f0 f0 f0 00 00 00 ff ff f0 f0 f0 00 &6ab0 00 00 ff ff f0 f0 f0 00 00 00 88 cc e6 e2 f0 f8 &6ac0 e8 e8 e8 00 ee e8 00 ee 66 e8 64 64 64 64 60 00 &6ad0 dd d9 d9 d9 d9 fb 70 00 bb b2 b2 b2 b2 b2 30 00 &6ae0 cc e2 64 ec c0 00 00 00 00 88 cc ee cc 88 00 00 &6af0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6b10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6b20 00 11 11 11 11 11 00 00 ee f1 f0 5a 5a f0 e0 00 &6b30 e8 e8 e8 00 ee e8 00 ee e8 e8 e8 00 ee e8 00 ee &6b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6b50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6b70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6b90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6bb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6bd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6bf0 00 00 00 00 00 00 00 00 74 74 74 00 77 74 00 77 &6c00 e8 00 ee e8 00 ee e8 e8 77 f8 c8 c8 c8 fb 70 00 &6c10 77 74 64 75 74 64 60 00 88 d5 fa d8 80 d5 50 00 &6c20 ee e0 ee e0 64 e8 c0 00 00 88 cc ee cc 88 00 00 &6c30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6c50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6c70 e8 00 ee e8 00 ee e8 e8 e8 00 ee e8 00 ee e8 e8 &6c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6c90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6cb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6cd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6cf0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6d10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &6d30 00 00 00 00 00 00 00 00 74 00 77 74 00 77 74 74 &6d40 e8 e8 f9 f9 70 70 30 10 0f 0f 00 ff ff f0 f0 f0 &6d50 0f 0f 00 ff ff f0 f0 f0 0f 0f 00 ff ff f0 f0 f0 &6d60 0f 0f 00 ff ff f0 f0 f0 0f 0f 00 ff ff f0 f0 f0 &6d70 0f 0f 00 ff ff f0 f0 f0 0f 0f 00 ff ff f0 f0 f0 &6d80 0f 0f 00 ff ff f0 f0 f0 0f 0f 00 ff ff f0 f0 f0 &6d90 0f 0f 00 ff ff f0 f0 f0 0f 0f 00 ff ff f0 f0 f0 &6da0 0f 0f 00 ff ff f0 f0 f0 0e 0e 11 ff fe f0 f0 f0 &6db0 e8 e8 e8 e0 c0 c0 80 00 e8 e8 f9 f9 70 70 30 10 &6dc0 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6dd0 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6de0 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6df0 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6e00 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6e10 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6e20 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6e30 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6e40 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6e50 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6e60 00 0f 00 ff ff f0 f0 f0 00 0f 00 ff ff f0 f0 f0 &6e70 00 0f 00 ff ff f0 f0 f0 74 74 fc f8 e0 e0 c0 80 # &6e80 - &7fff is read from OMEGAORB2 ; OMEGAORB2 ; 006e80 000b80 001180 ; large_room_sprites_top_left_table &6e80 11 16 14 13 16 0c 8d 0c 19 0f 07 23 24 22 25 25 &6e90 07 08 29 2a ff 2e 22 25 24 25 23 23 24 24 3a 40 &6ea0 ff c0 0b 0b 0b 0b 33 0b 0b c6 48 4d 4f 16 ff cd &6eb0 50 52 0b 54 57 22 24 25 59 5c 5e 5a ff d7 57 22 &6ec0 62 60 67 2b ff 07 3c 62 d6 25 2d 5c 6e 6e 60 78 &6ed0 f8 3b 4f 62 62 50 22 76 ; unused &6ed8 00 00 00 00 ; text_colour_masks &6edc 00 0f f0 ff ; large_room_sprites_top_right_table &6ee0 91 16 ff 18 8e 0d 8c 0e 7f 8f 09 22 25 28 31 25 &6ef0 29 2a 09 0a ff ae 22 25 25 31 28 28 31 31 3c c0 &6f00 40 ff 0b 0b 46 0b 33 0b 0b 0b c8 cd 16 cf 4d ff &6f10 52 d0 0b d4 22 d7 25 31 d9 dc de 5a 57 ff 22 d7 &6f20 60 e2 e7 ff 2c 87 3c e2 25 56 ad dc ee ee 60 f8 &6f30 78 75 cf e2 e2 d0 22 f6 ; unused &6f38 00 00 00 00 ; vertical_barriers_state &6f3c 00 00 00 00 ; large_room_sprites_bottom_left_table &6f40 12 10 15 13 10 0b 0b 0b 1a 0b 08 24 26 25 30 25 &6f50 2b ff ff 9e 2d 2f 25 30 24 25 26 24 24 26 3b 40 &6f60 41 16 44 45 0b 0b 33 4b 44 c6 48 4d ff cd 41 16 &6f70 51 ff 45 55 24 25 d6 30 ff 5d 5e 1e 57 25 d6 30 &6f80 62 60 68 08 2a 08 3d 1e ff 56 73 6e 6e 5d 60 f8 &6f90 ff 1a 5b 62 5d 51 30 77 ; unused &6f98 00 00 00 00 ; vertical_barriers_x &6f9c 06 06 0f 1b ; large_room_sprites_bottom_right_table &6fa0 92 10 ff ff 0b 0b 0b 0b ff 0b 0a 25 30 31 27 25 &6fb0 ff 1e 2c ff ad af 25 30 25 31 27 31 31 27 3d c0 &6fc0 16 c1 c4 44 46 0b 33 4b c5 0b c8 cd 4d ff 16 c1 &6fd0 ff d1 53 d5 25 31 30 56 ff dd de 9e 25 d7 30 56 &6fe0 60 e2 e8 2a 0a 88 3d 9e d6 ff ae ee ee dd 60 78 &6ff0 ff ff db e2 dd d1 30 f7 ; unused &6ff8 00 00 00 00 ; Vertical barriers ; ================= ; vertical barrier 0: room type &3e (room &51, (&b, &5)) at x:&06 ; vertical barrier 1: room type &58 (room &7f, (&1, &9)) at x:&06 ; vertical barrier 2: room type &2e (room &3c, (&4, &4)) at x:&0f ; vertical barrier 3: room type &49 (room &5e, (&a, &6)) at x:&1b ; vertical_barriers_room_type &6ffc 3e 58 2e 49 ; start_animation &7000 a2 63 LDX #&63 ; unplot_hatch_loop &7002 8e 7b 70 STX &707b ; unplot_hatch_string + &7 &7005 8e 81 70 STX &7081 ; unplot_hatch_string + &d &7008 8e 70 70 STX &7070 ; sound_6 + 4 (pitch) &700b a0 00 LDY #&00 ; plot_line_loop &700d b9 74 70 LDA &7074,Y ; unplot_hatch_string &7010 20 ee ff JSR &ffee ; OSWRCH &7013 c8 INY &7014 c0 0f CPY #&0f &7016 d0 f5 BNE &700d ; plot_line_loop &7018 a2 6c LDX #&6c ; &706c = sound_6 &701a a0 70 LDY #&70 &701c a9 07 LDA #&07 ; Generate a sound &701e 20 f1 ff JSR &fff1 ; OSWORD &7021 a2 09 LDX #&09 &7023 a0 00 LDY #&00 &7025 a9 81 LDA #&81 ; Wait for input character &7027 20 f4 ff JSR &fff4 ; OSBYTE &702a ad 70 70 LDA &7070 ; sound_6 + 4 (pitch) &702d 38 SEC &702e e9 04 SBC #&04 &7030 aa TAX &7031 e0 23 CPX #&23 &7033 d0 cd BNE &7002 ; unplot_hatch_loop &7035 a2 00 LDX #&00 &7037 8a TXA ; wipe_player_buffer_loop &7038 9d 20 01 STA &0120,X ; player_buffer &703b e8 INX &703c e0 40 CPX #&40 &703e d0 f8 BNE &7038 ; wipe_player_buffer_loop ; raise_player_loop &7040 a5 64 LDA &64 ; player_x &7042 8d f4 0f STA &0ff4 ; previous_player_x &7045 a5 65 LDA &65 ; player_y &7047 8d f5 0f STA &0ff5 ; previous_player_y &704a 86 65 STX &65 ; player_y &704c 8e 70 70 STX &7070 ; sound_6 + 4 (pitch) &704f 20 ba 15 JSR &15ba ; replot_player &7052 a2 6c LDX #&6c ; &706c = sound_6 &7054 a0 70 LDY #&70 &7056 a9 07 LDA #&07 ; Generate a sound &7058 20 f1 ff JSR &fff1 ; OSWORD &705b a0 00 LDY #&00 &705d a2 0a LDX #&0a &705f a9 81 LDA #&81 ; Wait for input character &7061 20 f4 ff JSR &fff4 ; OSBYTE &7064 a6 65 LDX &65 ; player_y &7066 ca DEX &7067 e0 27 CPX #&27 &7069 d0 d5 BNE &7040 ; raise_player_loop &706b 60 RTS ; sound_6 # Start animation ; chan vol pitch dur &706c 00 00 03 00 63 00 02 00 ; unplot_hatch_string &7074 12 00 00 ; GCOL 0, 0 &7077 19 45 68 03 63 03 ; PLOT &0368, &0363 (y value is modified) &707d 19 05 d0 03 63 03 ; DRAW &03d0, &0363 (y value is modified) ; seen_string &7083 53 45 45 4e 5c 0d ; "SEEN\" ; unused &7089 45 44 40 5c 0d ; "ED@\" ; percent_string &708e 40 50 45 52 43 45 4e 54 0d ; "PERCENT" ; no_entry_string &7097 4e 4f 40 45 4e 54 52 59 0d ; "NO@ENTRY" ; unused &70a0 4c 2e 0d ; "L." ; command_strings &70a3 43 4f 52 45 0d 00 00 ; "CORE" # Handled at line 3000 of BASIC &70aa 47 52 4f 56 45 4c 0d ; "GROVEL" # Handled at line 3010 of BASIC &70b1 49 4e 46 4f 0d 00 00 ; "INFO" # Handled at line 3020 of BASIC &70b8 48 45 4c 50 0d 00 00 ; "HELP" # Handled at line 3030 of BASIC &70bf 43 4f 44 45 0d 00 00 ; "CODE" # Handled at line 3040 of BASIC &70c6 42 55 59 0d 00 00 00 ; "BUY" # Handled at line 3050 of BASIC &70cd 53 45 4c 4c 0d 00 00 ; "SELL" # Handled at line 3060 of BASIC &70d4 55 53 45 0d 00 00 00 ; "USE" # Handled at line 3070 of BASIC &70db 4d 41 50 0d 00 00 00 ; "MAP" # Handled at line 3080 of BASIC &70e2 49 4e 50 55 54 0d 00 ; "INPUT" # Handled at line 3090 of BASIC &70e9 50 4f 52 54 0d 00 00 ; "PORT" # Handled at line 3100 of BASIC ; clear_status_section_text # Used in BASIC &70f0 1c 08 10 12 0f ; define text window x:(&08, &12), y:(&0f, &10) &70f5 0a ; cursor down &70f6 0a ; cursor down &70f7 1a ; restore default windows &70f8 0d ; unused &70fa 00 00 00 00 00 00 00 ; regular_bounce_frames &7100 01 02 02 03 03 03 03 02 02 01 00 00 00 00 00 00 &7110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a ; regular_bounce_velocities &7120 00 78 00 78 78 78 78 00 78 00 fe fd fe fe fe fe &7130 fe ff ff 00 00 00 01 01 02 02 02 02 02 03 0a 00 ; hyper_bounce_frames &7140 01 02 02 03 03 02 02 01 00 00 00 00 00 00 00 00 &7150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a ; hyper_bounce_velocities &7160 00 78 00 78 78 00 78 00 fd fd fc fd fd fe fe fe &7170 fe ff 00 00 00 01 02 02 02 02 03 03 03 03 04 0a ; Terminals ; ========= ; terminal 0: room type &02 (room &02, (&2, &0)) at (&01, &38), provides code 4071 ; terminal 1: room type &5a (room &83, (&5, &9)) at (&10, &30), provides code 29205 ; terminal 2: room type &37 (room &47, (&1, &5)) at (&16, &30), provides code 17877 ; terminal 3: room type &17 (room &9d, (&3, &b)) at (&10, &38), provides code 44073 ; terminal 4: room type &42 (room &56, (&2, &6)) at (&03, &40) ; terminal 5: room type &2c (room &8e, (&2, &a)) at (&05, &30) ; terminal 6: room type &4c (room &67, (&5, &7)) at (&13, &38) ; terminal 7: room type &3b (room &4b, (&5, &5)) at (&10, &48) ; terminal 8: room type &45 (room &59, (&5, &6)) at (&19, &40) ; terminal 9: room type &28 (room &90, (&4, &a)) at (&08, &40) ; terminal 10: room type &05 (room &8b, (&d, &9)) at (&10, &20) ; terminal 11: room type &30 (room &3e, (&6, &4)) at (&10, &38) ; terminal 12: room type &0b (room &11, (&3, &1)) at (&1c, &38) ; terminal 13: room type &22 (room &93, (&7, &a)) at (&04, &30) ; terminal 14: room type &09 (room &0f, (&1, &1)) at (&19, &30) ; terminal 15: room type &47 (room &5b, (&7, &6)) at (&1c, &50) ; terminal 16: room type &3e (room &51, (&b, &5)) at (&19, &38), requires code 4071 ; terminal 17: room type &58 (room &7f, (&1, &9)) at (&19, &36), requires code 29205 ; terminal 18: room type &2e (room &3c, (&4, &4)) at (&07, &38), requires code 17877 ; terminal 19: room type &49 (room &5e, (&a, &6)) at (&04, &20), requires code 44073 ; terminal 20: room type &06 (room &0a, (&a, &0)) at (&07, &28), teleports to room &27 (&b, &2) at (&0d, &38) ; terminal 21: room type &1b (room &27, (&b, &2)) at (&0d, &38), teleports to room &0a (&a, &0) at (&07, &28) ; terminal 22: room type &2b (room &38, (&0, &4)) at (&10, &38), teleports to room &54 (&0, &6) at (&16, &40) ; terminal 23: room type &40 (room &54, (&0, &6)) at (&16, &40), teleports to room &38 (&0, &4) at (&10, &38) ; terminal 24: room type &16 (room &1f, (&3, &2)) at (&04, &38), teleports to room &15 (&7, &1) at (&10, &20) ; terminal 25: room type &0f (room &15, (&7, &1)) at (&10, &20), teleports to room &1f (&3, &2) at (&04, &38) ; terminal 26: room type &3c (room &4e, (&8, &5)) at (&0a, &30), teleports to room &95 (&9, &a) at (&0a, &40) ; terminal 27: room type &69 (room &95, (&9, &a)) at (&0a, &40), teleports to room &4e (&8, &5) at (&0a, &30) ; terminal 28: room type &5b (room &84, (&6, &9)) at (&0d, &58), teleports to room &76 (&6, &8) at (&0d, &50) ; terminal 29: room type &ff (unused) ; terminal 30: room type &4a (room &9f, (&5, &b)) at (&13, &58), teleports to room &91 (&5, &a) at (&13, &58) ; terminal 31: room type &1a (room &25, (&9, &2)) at (&07, &48), teleports to room &17 (&9, &1) at (&03, &50) ; terminals_x ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &7180 01 10 16 10 03 05 13 10 19 08 10 10 1c 04 19 1c ; &00 &7190 19 19 07 04 07 0d 10 16 04 10 0a 0a 0d 13 13 07 ; &00 ; terminals_y ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &71a0 38 30 30 38 40 30 38 48 40 40 20 38 38 30 30 50 ; &00 &71b0 38 36 38 20 28 38 38 40 38 20 30 40 58 58 58 48 ; &10 ; terminals_room_type ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &71c0 02 5a 37 17 42 2c 4c 3b 45 28 05 30 0b 22 09 47 ; &00 &71d0 3e 58 2e 49 06 1b 2b 40 16 0f 3c 69 5b ff 4a 1a ; &10 ; teleports_x ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &71e0 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &00 &71f0 00 00 00 00 0d 07 16 10 10 04 0a 0a 0d 13 13 03 ; &10 ; teleports_y ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &7200 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &00 &7210 00 00 00 00 38 28 40 38 20 38 40 30 50 58 58 50 ; &10 ; teleports_room_x ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &7220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; &00 &7230 00 00 00 00 0b 0a 00 00 07 03 09 08 06 0c 05 09 ; &10 ; terminal_codes ; teleports_room_y ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &7240 17 a5 65 f9 00 00 00 00 00 00 00 00 00 00 00 00 ; &00 # First four bytes are used for terminal codes &7250 00 00 00 00 02 00 06 04 01 02 0a 05 08 09 0a 01 ; &10 ; Barriers ; ======== ; barrier 0: room type &02 (room &02, (&2, &0)) at (&06, &60), size (&60, &01) ; barrier 1: room type &5a (room &83, (&5, &9)) at (&00, &20), size (&18, &05) ; barrier 2: room type &37 (room &47, (&1, &5)) at (&09, &10), size (&18, &03) ; barrier 3: room type &17 (room &9d, (&3, &b)) at (&1e, &10), size (&18, &09) ; barrier 4: room type &42 (room &56, (&2, &6)) at (&0c, &10), size (&30, &03) ; barrier 5: room type &2c (room &8e, (&2, &a)) at (&18, &20), size (&30, &07) ; barrier 6: room type &4c (room &67, (&5, &7)) at (&06, &20), size (&30, &05) ; barrier 7: room type &3b (room &4b, (&5, &5)) at (&03, &30), size (&30, &05) ; barrier 8: room type &45 (room &59, (&5, &6)) at (&0f, &10), size (&18, &07) ; barrier 9: room type &28 (room &90, (&4, &a)) at (&0c, &38), size (&18, &02) ; barrier 10: room type &05 (room &8b, (&d, &9)) at (&06, &00), size (&18, &05) ; barrier 11: room type &30 (room &3e, (&6, &4)) at (&03, &20), size (&18, &05) ; barrier 12: room type &0b (room &11, (&3, &1)) at (&15, &10), size (&18, &09) ; barrier 13: room type &22 (room &93, (&7, &a)) at (&12, &10), size (&78, &09) ; barrier 14: room type &09 (room &0f, (&1, &1)) at (&00, &10), size (&18, &07) ; barrier 15: room type &47 (room &5b, (&7, &6)) at (&0c, &30), size (&30, &01) ; barriers_room_type ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &7260 02 5a 37 17 42 2c 4c 3b 45 28 05 30 0b 22 09 47 ; unused &7270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; barriers_x ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &7280 06 00 09 1e 0c 18 06 03 0f 0c 06 03 15 12 00 0c ; barriers_y ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &7290 60 20 10 10 10 20 20 30 10 38 00 20 10 10 10 30 ; barriers_width ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &72a0 60 18 18 18 30 30 30 30 18 18 18 18 18 78 18 30 ; barriers_height ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &72b0 01 05 03 09 03 07 05 05 07 02 05 05 09 09 07 01 ; enemy_types_sprite_addresses_low ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &72c0 90 c0 f0 20 50 80 b0 e0 10 40 70 a0 d0 30 90 f0 ; &00 &72d0 50 b0 10 58 a0 e8 30 78 78 c0 08 c0 08 50 e0 70 ; &10 ; enemy_types_sprite_addresses_high ; 0 1 2 3 4 5 6 7 8 9 a b c d e f &72e0 77 77 77 78 78 78 78 78 79 79 79 79 79 7a 7a 7a ; &00 &72f0 7b 7b 57 7c 7c 7c 7d 7d 7d 7d 7e 7d 7e 7e 7e 7f ; &10 ; object_sprites ; object_sprite_00 # PASSPROG &7300 f0 f0 f0 a0 e0 f0 e1 e1 e0 ee ee e0 e0 e0 e0 e0 ; object_sprite_01 # LEVER &7310 00 08 0c 06 03 10 77 ff 00 00 00 00 00 80 ee ff ; object_sprite_02 # 5 DRACHMA &7320 33 74 e9 da da 79 34 03 cc e2 69 e5 e5 e9 c2 0c ; object_sprite_03 # WHISTLE &7330 33 77 ff 32 11 11 11 00 cc ee ff f7 f3 f3 e2 cc ; object_sprite_04 # BOARD PASS &7340 ff eb ef eb ef eb eb ff ff 3f df 9f bf df 9f ff ; object_sprite_05 # LASER CARD &7350 88 8b 8b 89 cd 01 0f 0f 00 0f f0 0f f0 0f 0f 0f ; object_sprite_06 # LASER GUN &7360 81 e1 61 a9 cd dd cc cc 04 a4 b5 a4 04 00 00 00 ; object_sprite_07 # TICKET &7370 00 00 77 ab ff bb bb ee 33 ff 1f 3f 3f 6e cc 00 ; object_sprite_08 # CHOCOSNACK &7380 77 69 4f 4b 4f 4b 6f 70 ee 2d 2f e1 ef 2d 2f e0 ; object_sprite_09 # INFOHOLDER &7390 01 02 07 0f 7f f8 f7 70 0f 13 3e 7d fa e4 c8 80 ; object_sprite_0a # FLAG &73a0 1e 35 36 35 36 24 04 04 90 f9 f6 f9 f6 60 00 00 ; object_sprite_0b # DUTY FREE &73b0 40 04 14 15 1b 1b 1f 04 00 11 d0 dc dc 1e 1e 1e ; object_sprite_0c # EMPTY CAN &73c0 03 35 7a 7a 7b 78 36 03 0e a7 7f 7f 5d 7f a7 0e ; object_sprite_0d # QUADLINK &73d0 15 1c 31 eb eb 31 1c 15 8a 83 c8 7d 7d c8 83 8a ; object_sprite_0e # POWER CUBE &73e0 03 07 0f f0 87 b4 f7 f0 0f 1f 3f f3 7b fb ea c0 ; object_sprite_0f # PROTECTOR &73f0 07 8f 0f 08 7f 0f 0f 07 0e 07 8b cd ef cf 8f 0e ; object_sprite_10 # LIFTPASS 1 &7400 30 60 d1 b3 b3 d1 60 30 82 06 02 07 88 20 60 c0 ; object_sprite_11 # RELAY &7410 75 32 01 01 01 01 32 75 ee cc 08 08 08 08 cc ee ; object_sprite_12 # TRANSPORTER &7420 ee ee 44 45 45 01 07 07 00 0f 6d 0f 65 0f 65 0f ; object_sprite_13 # NOTHING &7430 33 33 bb ff ff 77 33 11 cc cc dd ff ff ee cc 88 ; object_sprite_14 # CORE PIECE &7440 ff ff 8f bc bc ff 8f 0f ff ef 0f e3 e3 ef 0f 0f ; object_descriptions &7450 50 41 53 53 50 52 4f 47 40 40 0d ; "PASSPROG@@" &745b 4c 45 56 45 52 40 40 40 40 40 0d ; "LEVER@@@@@" &7466 35 40 44 52 41 43 48 4d 41 40 0d ; "5@DRACHMA@" &7471 57 48 49 53 54 4c 45 40 40 40 0d ; "WHISTLE@@@" &747c 42 4f 41 52 44 40 50 41 53 53 0d ; "BOARD@PASS" &7487 4c 41 53 45 52 40 43 41 52 44 0d ; "LASER@CARD" &7492 4c 41 53 45 52 40 47 55 4e 40 0d ; "LASER@GUN@" &749d 54 49 43 4b 45 54 40 40 40 40 0d ; "TICKET@@@@" &74a8 43 48 4f 43 4f 53 4e 41 43 4b 0d ; "CHOCOSNACK" &74b3 49 4e 46 4f 48 4f 4c 44 45 52 0d ; "INFOHOLDER" &74be 46 4c 41 47 40 40 40 40 40 40 0d ; "FLAG@@@@@@" &74c9 44 55 54 59 40 46 52 45 45 40 0d ; "DUTY@FREE@" &74d4 45 4d 50 54 59 40 43 41 4e 40 0d ; "EMPTY@CAN@" &74df 51 55 41 44 4c 49 4e 4b 40 40 0d ; "QUADLINK@@" &74ea 50 4f 57 45 52 40 43 55 42 45 0d ; "POWER@CUBE" &74f5 50 52 4f 54 45 43 54 4f 52 40 0d ; "PROTECTOR@" &7500 4c 49 46 54 50 41 53 53 40 31 0d ; "LIFTPASS@1" &750b 52 45 4c 41 59 40 40 40 40 40 0d ; "RELAY@@@@@" &7516 54 45 4c 45 50 4f 52 54 45 52 0d ; "TELEPORTER" &7521 4e 4f 54 48 49 4e 47 40 40 40 0d ; "NOTHING@@@" &752c 43 4f 52 45 40 50 49 45 43 45 0d ; "CORE@PIECE" ; logo_string &7537 1f 10 0f ; TAB(&10, &0f) &753a 11 01 ; COLOUR 1 &753c 96 97 98 ; LOGO_TOP_LEFT LOGO_TOP_MIDDLE LOGO_TOP_RIGHT &753f 1f 10 10 ; TAB(&10, 10) &7542 99 9a 9b ; LOGO_BOTTOM_LEFT LOGO_BOTTOM_MIDDLE LOGO_BOTTOM_RIGHT &7545 0d ; unused &7546 00 00 00 00 00 00 ; terminal_tune_pitch &754c 7b 6f 7c 88 ; terminal_tune_duration &7550 02 02 03 02 ; 900c_credited_string &7554 39 30 30 43 40 43 52 45 44 49 54 45 44 0d ; "900C@CREDITED" ; unused &7562 00 00 00 00 00 00 ; explosion_sprite &7568 00 00 44 44 20 20 00 00 44 44 40 40 00 00 00 00 &7578 00 00 44 44 80 80 00 00 00 00 00 c8 c8 00 00 00 &7588 00 00 00 00 00 00 00 00 00 00 00 62 62 00 00 00 &7598 00 20 20 44 44 00 00 00 00 00 00 00 40 40 44 44 &75a8 00 80 80 44 44 00 00 00 ; initialise_game_variables &75b0 a0 00 LDY #&00 &75b2 8c e0 0f STY &0fe0 ; unused # Unnecessary code &75b5 84 85 STY &85 ; fire_present &75b7 84 7e STY &7e ; bounce_frames_table_address_low &75b9 84 75 STY &75 ; player_state &75bb 84 73 STY &73 ; enemies_frame &75bd 8c bc 08 STY &08bc ; enemies_frame_fraction &75c0 8c f6 0f STY &0ff6 ; suppress_collecting_object &75c3 8c f7 0f STY &0ff7 ; player_could_collect_object &75c6 8c f8 0f STY &0ff8 ; energy_beam_timer &75c9 c8 INY &75ca c8 INY &75cb 84 72 STY &72 ; player_x_fraction &75cd a0 13 LDY #&13 ; OBJECT_NOTHING &75cf 84 77 STY &77 ; carried_object &75d1 a0 14 LDY #&14 # Set player moving down &75d3 84 84 STY &84 ; bounce_frame &75d5 a0 20 LDY #&20 ; &7120 = regular_bounce_velocities &75d7 84 80 STY &80 ; bounce_velocities_table_address_low &75d9 a0 71 LDY #&71 ; &7100 = regular_bounce_frames &75db 84 7f STY &7f ; bounce_frames_table_address_high &75dd 84 81 STY &81 ; bounce_velocities_table_address_high &75df 84 8a STY &8a ; player_energy &75e1 60 RTS ; play_sound_for_collecting_object # Called with X = &e9 &75e2 a0 75 LDY #&75 &75e4 a9 07 LDA #&07 ; Generate a sound &75e6 4c f1 ff JMP &fff1 ; OSWORD ; chan vol pitch dur ; sound_7 # Collecting object &75e9 13 00 04 00 80 00 01 00 ; unused &75f1 00 00 00 00 00 00 00 ; clear_loading_screen &75f8 a2 00 LDX #&00 ; clear_loader_text_window_loop &75fa bd 50 0f LDA &0f50,X ; clear_loader_text_window_string &75fd 20 ee ff JSR &ffee ; OSWRCH &7600 e8 INX &7601 e0 07 CPX #&07 &7603 d0 f5 BNE &75fa ; clear_loader_text_window_loop &7605 20 b0 75 JSR &75b0 ; initialise_game_variables &7608 a9 01 LDA #&01 &760a 8d 00 11 STA &1100 ; suppress_player_input ; wait_for_space &760d 20 e5 14 JSR &14e5 ; update_player &7610 a2 00 LDX #&00 &7612 a0 00 LDY #&00 &7614 a9 81 LDA #&81 ; Wait for input character &7616 20 f4 ff JSR &fff4 ; OSBYTE &7619 e0 20 CPX #&20 ; " " &761b d0 f0 BNE &760d ; wait_for_space &761d ce 00 11 DEC &1100 ; suppress_player_input &7620 a2 00 LDX #&00 ; initialise_screen_loop &7622 bd 80 0f LDA &0f80,X ; initialise_screen_string &7625 20 ee ff JSR &ffee ; OSWRCH &7628 e8 INX &7629 e0 20 CPX #&20 &762b d0 f5 BNE &7622 ; initialise_screen_loop &762d 60 RTS ; unused &762e 00 00 ; column_offsets_low_table &7630 00 08 10 18 20 28 30 38 40 48 50 58 60 68 70 78 &7640 80 88 90 98 a0 a8 b0 b8 c0 c8 d0 d8 e0 e8 f0 f8 &7650 00 08 10 18 20 28 30 38 ; column_offsets_high_table &7658 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &7668 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &7678 01 01 01 01 01 01 01 01 ; room_colour_ula_data &7680 a4 b4 e4 f4 81 91 c1 d1 # &00: Set colour 3 to yellow, colour 2 to cyan &7688 a0 b0 e0 f0 84 94 c4 d4 # &08: Set colour 3 to white, colour 2 to yellow &7690 a0 b0 e0 f0 85 95 c5 d5 # &10: Set colour 3 to white, colour 2 to green &7698 a4 b4 e4 f4 85 95 c5 d5 # &18: Set colour 3 to yellow, colour 2 to green &76a0 a0 b0 e0 f0 81 91 c1 d1 # &20: Set colour 3 to white, colour 2 to cyan &76a8 a4 b4 e4 f4 82 92 c2 d2 # &28: Set colour 3 to yellow, colour 2 to magenta ; task_completed_string &76b0 54 41 53 4b 40 43 4f 4d 50 4c 45 54 45 44 5d 0d ; "TASK@COMPLETED]" ; initialise_game_state &76c0 a9 13 LDA #&13 ; OBJECT_NOTHING &76c2 85 77 STA &77 ; carried_object &76c4 a9 00 LDA #&00 # Set to zero to indicate object hasn't been used &76c6 aa TAX ; initialise_objects_used_loop &76c7 9d 80 08 STA &0880,X ; objects_used &76ca e8 INX &76cb e0 20 CPX #&20 &76cd d0 f8 BNE &76c7 ; initialise_objects_used_loop &76cf aa TAX ; initialise_object_data_loop &76d0 bd 90 0c LDA &0c90,X ; initial_objects_data &76d3 9d 20 0d STA &0d20,X ; objects_x &76d6 e8 INX &76d7 e0 60 CPX #&60 &76d9 d0 f5 BNE &76d0 ; initialise_object_data_loop &76db a2 00 LDX #&00 ; initialise_basic_integers_loop &76dd bd e9 76 LDA &76e9,X ; initial_basic_integers &76e0 9d 0c 04 STA &040c,X ; basic_integers + 3 * 4 &76e3 e8 INX &76e4 e0 1c CPX #&1c &76e6 d0 f5 BNE &76dd ; initialise_basic_integers_loop &76e8 60 RTS ; initial_basic_integers &76e9 00 00 00 00 ; C% (player_room_x) &76ed 00 00 00 00 ; D% (player_room_y) &76f1 19 00 00 00 ; E% (player_x) &76f5 28 00 00 00 ; F% (player_y) &76f9 00 00 00 00 ; G% (score) &76fd 36 00 00 00 ; H% (lives) # Player starts with 6 lives &7701 f4 01 00 00 ; I% (credits) # Player starts with 500 credits ; unused &7705 00 &7706 34 00 00 00 # Previously started with 4 lives &770a f4 01 00 00 # and 500 credits ; unused &770e 43 ; "C" ; unused &770f 43 4f 4d 50 4c 45 54 45 5d 0d ; "COMPLETE]" &7719 0d ; nothing_to_sell_string &771a 4e 4f 54 48 49 4e 47 40 54 4f 40 53 45 4c 4c 5d ; "NOTHING@TO@SELL]" &772a 0d ; used_250c_credited_string &772b 55 53 45 44 5d 40 32 35 30 43 40 43 52 45 44 49 ; "USED]@250C@CREDITED" &773b 54 45 44 0d ; unused &773f 00 ; initialise_memory (G% prior to initialise_game_state) &7740 a2 90 LDX #&90 ; plot_hit_space_to_start_loop # Copy &0900 - &0a1f to &5f80 - &609f &7742 bd ff 08 LDA &08ff,X ; hit_space_to_start_sprite - 1 &7745 9d 7f 5f STA &5f7f,X ; screen_memory + &780 - 1 &7748 bd 8f 09 LDA &098f,X ; hit_space_to_start_sprite + &90 -1 &774b 9d 0f 60 STA &600f,X ; screen_memory + &810 - 1 &774e ca DEX &774f d0 f1 BNE &7742 ; plot_hit_space_to_start_loop &7751 a2 00 LDX #&00 &7753 86 60 STX &60 ; target_address_low &7755 a9 8c LDA #&8c ; Select Tape FS &7757 20 f4 ff JSR &fff4 ; OSBYTE &775a a2 6f LDX #&6f ; move_0a80_to_0aee_loop # Move &0a80 - &0aee to &0380 - &03ee &775c bd 7f 0a LDA &0a7f,X &775f 9d 7f 03 STA &037f,X &7762 ca DEX &7763 d0 f7 BNE &775c ; move_0a80_to_0aee_loop ; move_6180_to_637f # Move &6180 - &697f to &0900 - &10ff &7765 a9 09 LDA #&09 &7767 85 61 STA &61 ; target_address_high &7769 a9 80 LDA #&80 &776b 85 62 STA &62 ; source_address_high &776d a9 61 LDA #&61 &776f 85 63 STA &63 ; source_address_low ; move_6180_to_637f_page_loop &7771 a0 00 LDY #&00 ; move_6180_to_637f_loop &7773 b1 62 LDA (&62),Y ; source_address &7775 91 60 STA (&60),Y ; target_address &7777 c8 INY &7778 d0 f9 BNE &7773 ; move_6180_to_637f_loop &777a e6 61 INC &61 ; target_address_high &777c e6 63 INC &63 ; source_address_low &777e a5 61 LDA &61 ; target_address_high &7780 c9 11 CMP #&11 &7782 d0 ed BNE &7771 ; move_6180_to_637f_page_loop &7784 4c f8 75 JMP &75f8 ; clear_loading_screen ; unused &7787 00 00 00 ; enemies_horizontal_cooldown &778a 00 00 00 00 00 00 ; enemy_sprite_00 &7790 62 f7 ff ff 66 11 72 f5 00 74 72 74 f8 e4 c0 c1 &77a0 00 00 80 c0 40 20 28 1c fa f4 72 b0 c8 74 32 00 &77b0 e0 e0 f0 f0 f0 00 f0 f0 18 30 60 d0 30 e0 c0 00 ; enemy_sprite_01 &77c0 07 09 60 73 91 e6 e6 e6 0f 0e 1c 14 14 2e 3f 1f &77d0 0c a0 f0 a0 a0 44 ff ff 66 91 f7 73 39 1c 06 03 &77e0 0f 03 cd ee ee d4 50 19 0f 0f 0f 06 88 cc 88 00 ; enemy_sprite_02 &77f0 44 44 44 30 70 70 c0 b3 06 0f 2f 17 83 83 c1 60 &7800 00 00 88 4c ae 5f 0f 0f b3 b3 b3 40 33 33 77 ff &7810 70 70 70 30 54 44 aa dd 07 80 f0 f0 e0 c0 00 00 ; enemy_sprite_03 &7820 91 e0 f0 f0 60 a8 cc 66 ff aa 41 41 e0 e0 e0 e0 &7830 ee 00 d2 0f 00 ff ff ff 77 22 10 30 70 00 77 00 &7840 51 40 f0 f0 f0 00 ff 00 ff ee 66 80 c0 00 cc 00 ; enemy_sprite_04 &7850 00 00 00 00 00 00 00 00 00 40 40 40 40 40 e0 e0 &7860 00 00 00 00 00 00 00 00 00 10 10 10 10 00 00 00 &7870 e0 f0 70 70 30 e0 00 00 00 00 00 00 00 00 00 00 ; reset_new_game &7880 20 c0 76 JSR &76c0 ; initialise_game_state &7883 20 b0 75 JSR &75b0 ; initialise_game_variables &7886 a2 00 LDX #&00 ; reset_visited_rooms_loop &7888 bd 00 0e LDA &0e00,X ; room_types &788b 29 7f AND #&7f # Clear top bit to indicate room hasn't been visited &788d 9d 00 0e STA &0e00,X ; room_types &7890 e8 INX &7891 e0 a0 CPX #&a0 &7893 d0 f3 BNE &7888 ; reset_visited_rooms_loop &7895 60 RTS ; reset_drain_energy &7896 a2 00 LDX #&00 ; reset_drain_energy_loop &7898 bd a4 78 LDA &78a4,X ; initial_drain_energy_string &789b 9d f4 0c STA &0cf4,X ; drain_energy_string + 4 &789e e8 INX &789f e0 0c CPX #&0c &78a1 d0 f5 BNE &7898 ; reset_drain_energy_loop &78a3 60 RTS ; initial_drain_energy_string &78a4 45 b8 01 df 01 ; ... &01b8, &01df &78a9 19 45 b8 01 db 01 ; PLOT &01b8, &01db &78af 0d ; enemy_sprite_06 &78b0 ff ff f0 c0 a3 91 a1 c0 ff ff f0 00 64 42 64 00 &78c0 ff ff f0 30 94 50 9c 30 f0 f5 f0 c6 f0 f0 0f 0f &78d0 f0 f0 f0 4d f0 f0 0f 0f f0 50 f0 9c f0 f0 0f 0f ; enemy_sprite_07 &78e0 00 11 32 32 64 64 f9 74 ff f0 a0 00 0d 0d 22 fd &78f0 00 80 c0 40 28 28 74 e8 f8 0b 0b 50 0b 0b 50 20 &7900 f0 0f 0f f0 0f 0f f0 f0 f0 0d 0d a0 0d 0d a0 40 ; enemy_sprite_08 &7910 f0 93 f0 b7 a7 f0 a6 f0 f0 96 f0 b2 94 f0 b2 f0 &7920 f0 5c f0 3e 7e f0 9c f0 87 c0 c2 c1 c1 c0 b7 f0 &7930 0f 00 02 05 05 08 ff f0 1e 30 30 34 34 38 de f0 ; enemy_sprite_09 &7940 ff 88 8a 99 98 b8 9b 98 ff 00 68 04 ba 10 60 0a &7950 ff 11 95 11 d9 11 9d 51 a8 a8 99 8a 88 ff 9d ff &7960 72 28 04 dc 00 ff fe ff 11 d9 19 9d 11 ff 93 ff ; enemy_sprite_0a &7970 0f 6a 0f 1b 1f 5f 1f 5b 0f fa 0f ff 50 a0 05 ff &7980 0f 63 0f af 8f ad 8f 8d 0f 19 2e 08 0f 39 18 0f &7990 0f 11 aa 44 0f e8 96 0f 0f 01 cf 01 0f 63 e7 0f ; enemy_sprite_0b &79a0 00 57 ff fa f0 f0 f0 f0 88 9d f7 f2 f0 f0 f0 f0 &79b0 11 11 ba 7e 7c f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 &79c0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 ; enemy_sprite_0c_frame_0 &79d0 40 e0 c0 80 04 04 02 02 00 00 00 00 00 00 00 00 &79e0 20 70 30 10 02 02 04 04 01 01 00 11 32 32 00 76 &79f0 00 00 62 f7 ff ff 00 ff 08 08 00 88 cc cc 00 ee ; enemy_sprite_0c_frame_1 &7a00 40 e2 d1 91 04 04 02 02 22 77 55 cc 88 00 00 00 &7a10 20 74 b8 98 02 02 04 04 01 01 00 11 32 32 00 76 &7a20 00 00 62 f7 ff ff 00 ff 08 08 00 88 cc cc 00 ee ; enemy_sprite_0d_frame_0 &7a30 ff ff 8f 8f 8c 9c bc ac ff ff 0f 0f c0 90 30 60 &7a40 ff ef 0f 2f e3 a3 23 63 8c 9c bc ac bf ff 8f 0f &7a50 c0 90 30 60 ff cc 0c 0f e3 a3 23 63 ef 23 03 0f ; enemy_sprite_0c_frame_1 &7a60 ff ff 8f 8f bc ac 8c 9c ff ff 0f 0f 30 60 c0 90 &7a70 ff ef 0f 2f 23 63 e3 a3 bc ac 8c 9c bf ff 8f 0f &7a80 30 60 c0 90 ff cc 0c 0f 23 63 e3 a3 ef 23 03 0f ; enemy_sprite_0e_frame_0 &7a90 ff 06 04 04 ff e9 e9 e9 00 01 45 02 40 00 40 ff &7aa0 00 04 2a 08 20 00 20 ff 0f ff e9 e9 0f 04 03 00 &7ab0 8f bc ac 8c 9c bc ff 0f 0f 23 63 e3 a3 23 ef 0f ; enemy_sprite_0c_frame_1 &7ac0 ff 06 04 04 ff e9 e9 e9 00 00 47 00 40 00 40 ff &7ad0 00 08 26 00 20 00 20 ff 0f ff e9 e9 0f 04 03 00 &7ae0 8f 8c 9c bc ac 8c ff 0f 0f e3 a3 23 63 e3 ef 0f ; enemy_sprite_0f_frame_0 &7af0 00 11 22 45 03 07 0e 15 55 ff cc 54 2a 15 3b 66 &7b00 00 88 00 c0 00 cc cc 00 b3 d1 c0 41 89 66 77 33 &7b10 dd ee 54 0a 0e 04 aa cc 88 00 c0 c0 80 00 00 00 ; enemy_sprite_0f_frame_1 &7b20 00 00 00 11 00 01 03 01 11 77 bb 15 0e 0d 0a 55 &7b30 44 ee 00 70 88 77 ff 88 20 30 30 10 22 11 11 00 &7b40 ff 77 11 06 07 89 ee ff 66 88 70 38 28 00 88 00 ; enemy_sprite_10_frame_0 &7b50 00 11 32 74 74 f8 f8 d8 06 bf f0 f0 80 22 90 f0 &7b60 0c 08 00 80 00 88 40 c0 a8 60 60 70 b8 b8 54 00 &7b70 f0 30 00 00 00 c0 f0 70 c0 80 00 00 00 00 40 80 ; enemy_sprite_10_frame_1 &7b80 00 00 00 11 11 32 32 32 01 67 f8 f0 e0 c0 e0 70 &7b90 0b ce c0 e0 00 aa 50 f0 22 10 10 10 22 22 11 00 &7ba0 b0 80 80 c0 e0 f0 30 00 f0 e0 00 00 10 e0 c0 00 ; enemy_sprite_11_frame_0 &7bb0 04 04 15 67 f9 f8 f8 e9 77 f8 c3 e2 79 3c 4f fb &7bc0 88 c4 0c 00 cc 84 0c 00 e9 cb 37 ed db 36 01 00 &7bd0 f8 f8 1e ef d3 d3 3e 01 88 08 08 cc 84 84 84 08 ; enemy_sprite_11_frame_1 &7be0 01 01 01 11 32 32 32 32 11 32 74 bc d6 c3 d3 b6 &7bf0 ee f1 0f 88 f7 e1 0f cc 32 32 01 33 32 01 00 00 &7c00 b6 3e cf b7 7c f8 07 00 e2 c2 4a bf 6d 6d e9 06 ; define_text_window_for_terminal &7c10 a6 LDX &5a ; terminal_number &7c12 a9 1c LDA #&1c # Define text window &7c14 20 ee ff JSR &ffee ; OSWRCH &7c17 bd 80 71 LDA &7180,X ; terminals_x &7c1a 6a ROR A &7c1b 18 CLC &7c1c 69 01 ADC #&01 &7c1e 20 ee ff JSR &ffee ; OSWRCH # left &7c21 bd a0 71 LDA &71a0,X ; terminals_y &7c24 29 f8 AND #&f8 &7c26 6a ROR A &7c27 6a ROR A &7c28 6a ROR A &7c29 69 02 ADC #&02 &7c2b 85 5f STA &5f ; terminal_bottom &7c2d 20 ee ff JSR &ffee ; OSWRCH # bottom &7c30 bd 80 71 LDA &7180,X ; terminals_x &7c33 6a ROR A &7c34 18 CLC &7c35 69 03 ADC #&03 &7c37 20 ee ff JSR &ffee ; OSWRCH # right &7c3a a9 00 LDA #&00 &7c3c 4c ee ff JMP &ffee ; OSWRCH # top ; unused &7c3f 00 ; omega_orb_string &7c40 4f 4d 45 47 41 40 4f 52 42 0d ; "OMEGA@ORB" ; by_p_scott_string &7c4a 42 59 40 50 40 53 43 4f 54 54 0d ; "BY@P@SCOTT" ; unused &7c55 54 54 0d ; "TT" ; enemy_sprite_13 &7c58 00 03 25 07 4b 0f 4b 07 ff 66 66 09 0f 09 66 66 &7c68 00 0c 4a 0e 2d 0f 2d 0e 88 ff 77 07 33 55 64 e8 &7c78 ff ff ff 0f ff ff ff ff 11 ff ee 0e cc aa 62 71 &7c88 f8 f8 00 f8 0a 05 00 02 66 00 00 00 00 00 00 00 &7c98 f1 f1 00 f1 04 09 02 08 ; enemy_sprite_14 &7ca0 00 44 cc 8c 8f 8b 00 01 00 00 00 00 01 0f 09 60 &7cb0 44 66 37 1d 08 00 00 08 20 70 70 c0 33 ef ee 33 &7cc0 f0 f0 00 ff ff 0c 03 ff 40 e0 e0 30 cc 77 7f cc &7cd0 c0 70 70 30 31 10 00 00 ff 00 f0 f0 f0 f0 f0 00 &7ce0 30 e0 e0 c0 c8 80 00 00 ; enemy_sprite_15 &7ce8 00 60 86 1f 1d c0 0c 0c 00 44 ee bb 11 00 00 60 &7cf8 00 60 9e 8f 03 30 03 03 1c 29 43 87 0e 0c 0c 2c &7d08 96 0f 0f 06 99 90 90 00 83 49 2c 1e 07 03 03 43 &7d18 1e 0f 07 17 03 12 01 00 f0 0f 0f 06 0f 06 0f 06 &7d28 87 0f 0e 86 0c 8c 08 00 ; enemy_sprite_16 &7d30 0c 0e 02 03 03 01 01 21 00 00 00 00 00 60 6f 69 &7d40 00 00 04 06 0f 0d 08 48 21 72 72 72 f4 74 38 04 &7d50 f0 f0 f0 f0 f0 f0 f0 f0 48 6c e4 e4 f2 e2 c1 02 &7d60 83 c4 72 72 31 31 10 00 00 5f 00 f0 f0 f9 f6 60 &7d70 1c 32 e4 e4 c8 c8 80 00 ; enemy_sprite_17 ; enemy_sprite_18 &7d78 00 00 00 00 00 11 22 55 00 00 11 66 99 77 ee 98 &7d88 33 00 bb 37 bb bf bf bf bb 66 dc a9 b8 b8 ed fe &7d98 70 d2 f0 f0 f0 f0 f0 f0 bf bf bf bf bf bf bf bf &7da8 77 33 11 00 00 00 00 00 d2 f8 fe ff 77 11 00 00 &7db8 bf bf bf bf bf bb 33 33 ; enemy_sprite_19 ; enemy_sprite_1b &7dc0 00 0f 08 0d 0a 01 00 00 00 08 0c 07 07 03 cd 66 &7dd0 01 07 0f 07 0b 0d 0e 0f 00 00 0a 0f 0f 07 08 0f &7de0 3b 1d 06 03 0d 0e 07 0b 07 01 06 07 09 0e 07 09 &7df0 0f 07 07 07 00 55 bb bb 0b 03 05 02 03 03 8b 89 &7e00 0e 0f 0e 01 0f 0f 0f 0f ; enemy_sprite_1a ; enemy_sprite_1c &7e08 60 30 10 00 ff f8 70 88 11 f3 f7 67 11 ee f1 f0 &7e18 dd 7f 0f 0f 8f 77 88 77 f8 f8 74 74 74 22 10 32 &7e28 00 74 74 74 32 b2 b2 b1 f8 10 e0 f1 f0 f1 f0 fd &7e38 32 32 11 22 77 33 22 00 90 a2 33 98 88 dd 88 00 &7e48 f0 71 88 ff f0 ff f0 77 ; enemy_sprite_1d_frame_0 &7e50 80 30 00 11 11 33 77 66 00 00 c0 10 88 00 00 08 &7e60 00 00 00 00 00 00 00 00 ee ee cd cd cd ee 66 3b &7e70 0e 0f 0c 28 18 1c 0e 06 00 00 80 40 40 00 04 0c &7e80 0c 07 0b 04 07 03 01 00 0f 0f 0f 0e 01 0f 0f 06 &7e90 0c 0c 08 04 08 08 00 00 ; enemy_sprite_1d_frame_1 &7e98 00 10 00 00 00 00 11 11 00 40 20 44 66 cc cc 8a &7ea8 00 00 80 00 00 00 00 00 11 33 33 33 33 33 11 02 &7eb8 8b 8b 07 06 06 8b 8b cd 08 0c 20 90 50 40 09 0b &7ec8 03 01 02 01 01 00 00 00 03 0f 0f 03 0c 0f 07 01 &7ed8 0f 0f 0e 09 06 0e 0c 08 ; enemy_sprite_1e &7ee0 00 00 00 00 00 11 33 22 40 40 40 00 ff ff 0f 0a &7ef0 00 00 00 00 00 88 cc 4c 22 22 33 15 06 15 77 ff &7f00 0f 0b 0c ff 00 ff ff ff 4c 4c cc 8a 66 ff ff ff &7f10 ff ee ee dd dd dd 99 51 ff ff ff ff ff ff ff ff &7f20 bb bb bb bb bb aa 40 60 ; now_showing_string &7f28 4e 4f 57 40 53 48 4f 57 49 4e 47 0d ; "NOW@SHOWING" ; thunderstruck_iii_string &7f34 54 48 55 4e 44 45 52 53 54 52 55 43 4b 40 49 49 ; "THUNDERSTRUCK@III" &7f44 49 0d ; consider_plotting_random_pixels &7f46 a5 62 LDA &62 ; sprite &7f48 c9 04 CMP #&04 ; ANIMATED_BACKGROUND_RANDOM_PIXELS &7f4a f0 03 BEQ &7f4f ; plot_random_pixels &7f4c 4c bc 19 JMP &19bc ; plot_enemy_skipping_offset ; plot_random_pixels &7f4f 20 01 11 JSR &1101 ; calculate_screen_address &7f52 20 55 7f JSR &7f55 ; plot_random_pixels_group ; plot_random_pixels_group &7f55 a0 00 LDY #&00 ; plot_random_pixels_group_loop &7f57 20 a6 14 JSR &14a6 ; rnd &7f5a 29 0f AND #&0f ; 1111 # Set pixels randomly in colour 1 &7f5c 85 60 STA &60 ; sprite_address_low &7f5e 18 CLC &7f5f 2a ROL A # Convert random pixels to colour 3 &7f60 2a ROL A &7f61 2a ROL A &7f62 2a ROL A &7f63 65 60 ADC &60 ; sprite_address_low &7f65 91 69 STA (&69),Y ; screen_address &7f67 c8 INY &7f68 c0 18 CPY #&18 &7f6a d0 eb BNE &7f57 ; plot_random_pixels_group_loop &7f6c 4c 4b 11 JMP &114b ; move_down_a_group ; unused &7f6f 00 ; replot_animated_background &7f70 c6 7a DEC &7a ; enemy_is_tall # Set to zero to indicate regular height sprite &7f72 b5 97 LDA &97,X ; enemies_direction &7f74 18 CLC &7f75 2a ROL A &7f76 2a ROL A &7f77 2a ROL A &7f78 69 c0 ADC #&c0 ; &7fc0 = animated_background_sprites &7f7a 85 60 STA &60 ; sprite_address_low &7f7c a9 7f LDA #&7f &7f7e 85 61 STA &61 ; sprite_address_high &7f80 a5 73 LDA &73 ; enemies_frame &7f82 6a ROR A &7f83 18 CLC &7f84 6a ROR A &7f85 a8 TAY &7f86 b1 60 LDA (&60),Y ; sprite_address &7f88 85 62 STA &62 ; sprite &7f8a a9 20 LDA #&20 ; &7fe0 = animated_background_flips &7f8c 20 69 11 JSR &1169 ; add_to_sprite_address &7f8f b1 60 LDA (&60),Y ; sprite_address &7f91 85 78 STA &78 ; sprite_flip &7f93 a4 62 LDY &62 ; sprite &7f95 c8 INY &7f96 a9 d0 LDA #&d0 ; &3fd0 = room_sprites - &30 &7f98 85 60 STA &60 ; sprite_address_low &7f9a a9 3f LDA #&3f &7f9c 85 61 STA &61 ; sprite_address_high ; calculate_enemy_sprite_address_loop &7f9e a9 30 LDA #&30 &7fa0 20 69 11 JSR &1169 ; add_to_sprite_address &7fa3 88 DEY &7fa4 d0 f8 BNE &7f9e ; calculate_enemy_sprite_address_loop &7fa6 20 57 17 JSR &1757 ; use_enemy_x_and_y &7fa9 20 46 7f JSR &7f46 ; consider_plotting_random_pixels &7fac 4c cc 17 JMP &17cc ; consider_replotting_generator ; request_refused_string &7faf 52 45 51 55 45 53 54 40 52 45 46 55 53 45 44 0d ; "REQUEST@REFUSED" ; unused &7fbf 00 ; animated_background_sprites &7fc0 00 00 01 01 00 01 00 00 ; 0 &7fc8 02 03 03 02 02 03 03 02 ; 1 &7fd0 04 04 05 05 05 04 05 05 ; 2 &7fd8 04 04 04 04 04 04 04 04 ; 3 ; animated_background_flips &7fe0 01 01 01 02 02 01 01 02 ; 0 &7fe8 01 01 02 02 01 01 02 02 ; 1 &7ff0 01 02 01 01 01 01 01 01 ; 2 &7ff8 01 01 02 02 01 01 02 01 ; 3