Bonecruncher disassembly ======================== Bonecruncher was written by Andreas Kemnitz and Martyn Howard and published by Superior Software for the BBC Micro in 1987. It is a puzzle game where the player must collect skeletons to make soap for bathing sea monsters. 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 loader is notable for its use of sampled sounds. The game uses a double buffered screen. The first buffer starts at &3f00 and continues to the start of the status area at &5800. The second buffer starts at &6700 and wraps around at &7fff to use the same status area. The level view is completely redrawn every frame. There are twenty four levels. A set of six levels is loaded into memory at any time. In the tape version, the level sets are stored in a stream. Loader disassembly ================== ; BONECRUNCH ; ff1900 ff1900 000229 &1900 0d &1910 00 0a 0b ee 85 e5 8d 54 5e 40 0d ; 10ONERRORGOTO30 &191b 00 14 0c 2a 46 58 32 30 30 2c 32 0d ; 20*FX200,2 # Clear memory on BREAK &1918 00 1e 07 ee 85 41 0d ; 30ONERRORA &191f 00 28 0a 2a 54 56 32 35 35 0d ; 40*TV255 &1929 00 32 39 eb 37 3a e3 49 25 3d 30 b8 34 33 36 88 ; 50MODE7: &1939 34 3a 49 25 21 93 3d 49 25 21 b8 50 3a ed 3a ef ; FORI%=0TO436STEP4: # Copy superior_logo to screen memory &1949 32 38 2c 31 2c 32 33 2c 33 39 2c 31 33 2c 33 30 ; I%!HIMEM=I%!TOP: &1959 3a 2a 4f 50 54 32 2c 31 0d ; NEXT: ; VDU28,1,23,39,13,30: # Define text window, cursor to home ; *OPT2,1 &1962 00 3c 10 d0 3d 26 30 45 30 30 3a 2a 52 55 4e 0d ; 60PAGE=&0E00: ; *RUN # *RUN Crunch &1972 ff ; superior_logo &1973 84 9d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1983 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1993 20 20 20 20 20 20 20 20 84 9d 81 9d 94 ff ff ff &19a3 bf a1 97 e0 fe ff bf a1 9d 94 85 20 20 20 20 20 &19b3 20 20 20 20 20 20 20 20 20 84 9d 87 9d 84 9d 20 &19c3 84 9d 81 9d 94 ff ff a7 20 97 f8 ff ff a7 20 20 &19d3 9d 94 20 20 85 53 55 50 45 52 49 4f 52 20 20 20 &19e3 20 84 9d 87 9d 84 9d 20 84 9d 81 9d 94 ff ff f4 &19f3 20 97 ab ff ff f4 20 20 9d 94 20 20 85 53 4f 46 &1a03 54 57 41 52 45 20 20 20 20 84 9d 87 9d 84 9d 20 &1a13 84 9d 81 9d 94 ff ff ff fd b0 97 a2 ef ff fd b0 &1a23 9d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1a33 20 84 9d 87 9d 84 9d 20 84 9d 81 9d 94 ff ff ff &1a43 bf a1 97 e0 fe ff bf a1 9d 20 20 20 86 50 52 45 &1a53 53 45 4e 54 53 20 20 20 20 84 9d 87 9d 84 9d 20 &1a63 84 9d 81 9d 94 ff ff a7 20 97 f8 ff ff a7 20 20 &1a73 9d 94 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1a83 20 84 9d 87 9d 84 9d 20 84 9d 81 9d 84 9d ff a7 &1a93 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1aa3 20 20 20 20 20 20 20 20 20 20 9d 87 9d 84 9d 20 &1ab3 84 9d 81 9d 84 9d 20 9c 83 8d 20 20 20 20 42 4f &1ac3 4e 45 43 52 55 4e 43 48 45 52 0d 20 20 20 20 20 &1ad3 0d 84 9d 87 9d 84 9d 20 84 9d 81 9d 84 9d 20 9c &1ae3 83 8d 20 20 20 20 42 4f 4e 45 43 52 55 4e 43 48 &1af3 45 52 0d 20 20 20 20 20 0d 84 9d 87 9d 84 9d 20 &1b03 84 9d 20 9d 20 20 20 20 20 20 20 20 20 20 20 20 &1b13 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1b23 20 20 20 20 20 20 ; Crunch ; ff0900 ff0900 ff0100 &0900 ad 3f 09 LDA &093f ; load_state &0903 d0 0f BNE &0914 ; relocate_and_run_main_binary &0905 ee 3f 09 INC &093f ; load_state &0908 a9 0c LDA #&0c ; CLS &090a 20 ee ff JSR &ffee ; OSWRCH &090d a2 38 LDX #&38 &090f a0 09 LDY #&09 ; &0938 = run_bone_string &0911 4c f7 ff JMP &fff7 ; OSCLI # First, *RUN Bone ; relocate_and_run_main_binary # Then, after Bone2 is loaded, &0914 a0 00 LDY #&00 ; relocate_loop &0916 b9 00 0e LDA &0e00,Y # Move &0e00 - &6bff to &0d00 - &6aff # actually LDA source_address,Y &0919 99 00 0d STA &0d00,Y # actually LDA target_address,Y &091c c8 INY &091d d0 f7 BNE &0916 ; relocate_loop &091f ee 18 09 INC &0918 ; source_address_low &0922 ee 1b 09 INC &091b ; target_address_high &0925 ad 1b 09 LDA &091b ; target_address_high &0928 c9 6b CMP #&6b &092a d0 ea BNE &0916 ; relocate_loop &092c a9 90 LDA #&90 &092e a2 ff LDX #&ff &0930 a0 01 LDY #&01 &0932 20 f4 ff JSR &fff4 ; OSBYTE &0935 4c e7 68 JMP &68e7 ; main_binary_entry_point ; run_bone_string &0938 2a 2f 42 6f 6e 65 0d ; "*/Bone" ; load_state &093f 00 ; unused &0940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &0990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &09a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &09b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &09d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &09e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &09f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; Bone ; ff1900 ff1900 000780 ; entry_point &1900 a9 03 LDA #&03 # Enable ESCAPE, clear memory on BREAK &1902 8d 58 02 STA &0258 ; ESCAPE/BREAK effect &1905 8d 59 02 STA &0259 ; econet_keyboard_disable &1908 a9 04 LDA #&04 ; Define action of cursor editing keys &190a a2 01 LDX #&01 ; Cursor keys return ASCII values 135-139 &190c 20 f4 ff JSR &fff4 ; OSBYTE &190f a9 4c LDA #&4c ; JMP &1911 8d 01 02 STA &0201 ; break_handler &1914 a2 01 LDX #&01 ; &0201 = break_handler # Set break instruction to cause an infinite loop &1916 8e 02 02 STX &0202 ; brk_vector_low &1919 e8 INX &191a 8e 03 02 STX &0203 ; brk_vector_high &191d a9 16 LDA #&16 # Change to MODE 7 &191f 20 ee ff JSR &ffee ; OSWRCH &1922 a9 07 LDA #&07 &1924 20 ee ff JSR &ffee ; OSWRCH &1927 a2 0a LDX #&0a # R10: Cursor start register &1929 a9 20 LDA #&20 # Disable cursor &192b 20 fb 19 JSR &19fb ; set_video_register &192e a2 00 LDX #&00 ; copy_screen_data_loop # Copy closed mouth graphics &1930 bd 80 1a LDA &1a80,X ; screen_data &1933 9d 00 7c STA &7c00,X ; screen_memory &1936 bd 80 1b LDA &1b80,X ; screen_data + &100 &1939 9d 00 7d STA &7d00,X ; screen_memory + &100 &193c bd 80 1c LDA &1c80,X ; screen_data + &200 &193f 9d 00 7e STA &7e00,X ; screen_memory + &200 &1942 bd 80 1d LDA &1d80,X ; screen_data + &300 &1945 9d 00 7f STA &7f00,X ; screen_memory + &300 &1948 e8 INX &1949 d0 e5 BNE &1930 ; copy_screen_data_loop &194b a9 96 LDA #&96 # Wait for 150 frames ; delay_loop &194d 48 PHA &194e a9 13 LDA #&13 ; Wait for Vertical Retrace &1950 20 f4 ff JSR &fff4 ; OSBYTE &1953 68 PLA &1954 38 SEC &1955 e9 01 SBC #&01 &1957 d0 f4 BNE &194d ; delay_loop &1959 aa TAX ; copy_open_mouth_screen_data_loop # Copy open mouth graphics &195a bd 80 1e LDA &1e80,X ; open_mouth_screen_data &195d 9d 00 7e STA &7e00,X ; screen_memory + &200 &1960 bd 80 1f LDA &1f80,X ; open_mouth_screen_data + &100 &1963 9d 00 7f STA &7f00,X ; screen_memory + &300 &1966 e8 INX &1967 d0 f1 BNE &195a ; copy_open_mouth_screen_data_loop &1969 a2 04 LDX #&04 ; write_mode_7_text_window_string_loop # Set text window to inside of mouth &196b bd 12 1a LDA &1a12,X ; mode_7_text_window_string &196e 20 ee ff JSR &ffee ; OSWRCH &1971 ca DEX &1972 10 f7 BPL &196b ; write_mode_7_text_window_string_loop &1974 a2 0a LDX #&0a # R10: Cursor start register &1976 a9 00 LDA #&00 # Enable cursor &1978 20 fb 19 JSR &19fb ; set_video_register &197b a2 ec LDX #&ec &197d a0 19 LDY #&19 ; &19ec = load_echo_string &197f 20 f7 ff JSR &fff7 ; OSCLI # *LOAD ECHO 1E00 &1982 a9 0c LDA #&0c ; CLS &1984 20 ee ff JSR &ffee ; OSWRCH # Clear text window &1987 a2 0a LDX #&0a &1989 a9 20 LDA #&20 &198b 20 fb 19 JSR &19fb ; set_video_register &198e 20 00 1e JSR &1e00 ; echo_entry_point # Play sampled speech &1991 a9 32 LDA #&32 # Wait for fifty frames ; second_delay_loop &1993 48 PHA &1994 a9 13 LDA #&13 ; Wait for Vertical Retrace &1996 20 f4 ff JSR &fff4 ; OSBYTE &1999 68 PLA &199a 38 SEC &199b e9 01 SBC #&01 &199d d0 f4 BNE &1993 ; second_delay_loop &199f a9 16 LDA #&16 # Change to MODE 5 &19a1 20 ee ff JSR &ffee ; OSWRCH &19a4 a9 05 LDA #&05 &19a6 20 ee ff JSR &ffee ; OSWRCH &19a9 a2 06 LDX #&06 # R6: Vertical displayed register &19ab a9 0e LDA #&0e &19ad 20 fb 19 JSR &19fb ; set_video_register &19b0 a2 07 LDX #&07 # R7: Vertical sync position &19b2 a9 20 LDA #&20 &19b4 20 fb 19 JSR &19fb ; set_video_register &19b7 a2 0c LDX #&0c # R12: Displayed screen start address register (high) &19b9 a9 0d LDA #&0d &19bb 20 fb 19 JSR &19fb ; set_video_register &19be a2 0d LDX #&0d # R13: Displayed screen start address register (low) &19c0 a9 d0 LDA #&d0 # Set screen start address to &6e80 &19c2 20 fb 19 JSR &19fb ; set_video_register &19c5 a2 0f LDX #&0f ; set_palette_registers_loop &19c7 bd 02 1a LDA &1a02,X ; palette_register_data &19ca 8d 21 fe STA &fe21 ; video ULA palette register &19cd ca DEX &19ce 10 f7 BPL &19c7 ; set_palette_registers_loop &19d0 a2 04 LDX #&04 ; write_mode_5_text_window_string_loop &19d2 bd 17 1a LDA &1a17,X ; mode_5_text_window_string &19d5 20 ee ff JSR &ffee ; OSWRCH &19d8 ca DEX &19d9 10 f7 BPL &19d2 ; write_mode_5_text_window_string_loop &19db a2 e2 LDX #&e2 &19dd a0 19 LDY #&19 ; &19e2 = run_bone2_string &19df 4c f7 ff JMP &fff7 ; OSCLI # *RUN BONE2 ; run_bone2_string &19e2 52 55 4e 22 42 4f 4e 45 32 22 ; "RUN"BONE2"" ; load_echo_string &19ec 4c 4f 41 44 22 45 43 48 4f 22 31 45 30 30 0d ; "LOAD"ECHO"1E00" ; set_video_register &19fb 8e 00 fe STX &fe00 ; video register number &19fe 8d 01 fe STA &fe01 ; video register value &1a01 60 RTS ; palette_register_data ; K R G W &1a02 07 17 47 57 26 36 66 76 85 95 c5 d5 a0 b0 e0 f0 ; mode_7_text_window_string &1a12 11 19 13 0c 1c ; define text window x:(&0c, &19), y:(&11, &13) ; mode_5_text_window_string &1a17 12 13 1c 00 1c ; define text window x:(&00, &13), y:(&12, &1c) ; unused # Source code fragment, corresponds to &193c - &194f &1a1c 2c 58 3a 4c 44 41 20 26 31 43 38 30 2c 58 3a 53 ; ,X:LDA &1C80,X:STA &7E00,X:LDA &1D80,X:STA &7F00,X:INX:BNE dispscr1 &1a2c 54 41 20 26 37 45 30 30 2c 58 3a 4c 44 41 20 26 &1a3c 31 44 38 30 2c 58 3a 53 54 41 20 26 37 46 30 30 &1a4c 2c 58 3a 49 4e 58 3a 42 4e 45 20 64 69 73 70 73 &1a5c 63 72 31 0d &1a60 00 50 42 4c 44 41 20 23 31 35 30 3a 2e 64 65 6c ; 80LDA #150:.dellp:PHA:LDA #19:J &1a70 6c 70 3a 50 48 41 3a 4c 44 41 20 23 31 39 3a 4a ; screen_data &1a80 91 a0 a0 e0 fc f0 b0 a0 a0 a0 a0 a0 a0 a0 a0 a0 &1a90 a0 f8 fc b0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 &1aa0 a0 a0 f0 f0 f0 a0 a0 a0 91 20 a0 ef ff a1 ff e0 &1ab0 f0 f0 e0 b0 e0 20 f0 b0 ea b7 20 a1 f0 b0 e0 a0 &1ac0 b0 b0 e0 20 f0 20 f0 e0 a0 f0 ea b5 eb b4 20 20 &1ad0 91 20 20 e0 ff be b5 ff ab b7 fe fd ea ea ac 20 &1ae0 ef b5 20 b0 f7 ba ea b0 b5 ff ea ea a1 a5 bf ee &1af0 ea ac a2 fd fe a5 20 20 91 a0 a0 fe ff e0 ff ea &1b00 fc ff ea a7 ff ea fd be aa ff fc b5 b7 ff aa fd &1b10 a1 b5 bf aa f5 b4 b5 fe ea bc ea bf ef b4 84 84 &1b20 91 20 aa af a3 af a1 20 20 20 20 20 20 20 20 20 &1b30 20 a3 a3 20 20 20 20 20 20 20 20 20 20 20 20 20 &1b40 20 20 aa a5 20 af 20 20 92 20 a0 20 20 20 20 20 &1b50 95 f8 ef ed b0 20 92 f8 fe ff ff ff ff ff fc f0 &1b60 20 20 88 83 2a 20 89 96 20 e0 f0 b0 20 20 20 20 &1b70 95 ff ff fc fc b0 20 20 20 ab fe be a1 92 f8 ff &1b80 ff ff ff ff ff ff ff ff fd b0 20 20 20 20 89 96 &1b90 e8 ff fc a2 b4 20 20 20 95 ff ff ff ff ff b4 20 &1ba0 92 20 20 20 20 fe ff ff ff ff ff ff ff ff ff ff &1bb0 ff fd 20 20 20 20 89 96 aa ff ff f5 a5 20 20 20 &1bc0 95 ff ff ff af ff ff 92 e8 b4 a0 e0 fe ff ff ff &1bd0 ff ff ff ff ff ff ff ff ff ff f5 20 a0 20 e0 ff &1be0 96 a2 a3 a1 20 20 20 20 95 ff b7 a0 a0 fa ff 92 &1bf0 20 ff a0 fe ff ff ff af af ff ff ff ff ff af af &1c00 ff ff ff b4 a0 a0 fe b5 20 97 b8 ba fb f9 f4 a0 &1c10 95 fa f0 f0 fc ff ff 20 92 ff a5 fa ff ff a1 97 &1c20 b0 92 ef ff ff 97 e0 92 a2 ff ff ff a0 fa ff 20 &1c30 97 ea e6 fe ff ff ff f5 95 ff ff ff ff ff a5 92 &1c40 ea ff a0 ff ff b5 a0 94 fd 92 ea ff b5 94 ea b4 &1c50 92 ea ff f1 fe ff b5 20 97 ff af af bf af ef ff &1c60 95 ff ff af af a1 92 20 ff bf a0 af af ff b0 a0 &1c70 a0 a0 ba af e5 a0 a0 a0 b0 ff ff ff ff a3 ff 20 &1c80 97 ff f0 f8 ed f0 fa ff 20 92 20 20 20 20 20 fa &1c90 a7 f8 ff ff ff fc fe b3 af f3 fe ff fd f3 af ef &1ca0 ff fc ff ff ff b5 bf 20 97 a2 b7 ad fd af eb a1 &1cb0 97 88 86 2a 89 20 92 af e8 ff ff ff ff ff ff ea &1cc0 bf a3 eb ff b7 a3 ef b5 ff ff ff b7 ff f3 a5 20 &1cd0 97 a0 a2 fc f0 fc a1 a0 93 e0 f0 f0 a0 92 92 f8 &1ce0 fc ff ff ff ff ff ff fd fd fc ff ff ff fc fe fe &1cf0 ff ff ff ff f6 ff ff b5 97 20 20 a0 a3 a0 a0 a0 &1d00 93 b7 20 a2 b5 92 92 ef ff ff ff ff f3 a0 a2 af &1d10 af ff ff ff ff ff ff bf a7 a0 fc ff ff ba ef ff &1d20 97 20 f0 ff fd a0 a0 a0 93 f5 20 e0 b5 20 92 a2 &1d30 ff ff ff ff ff b5 e8 ff fd fc f2 f3 f3 f3 f0 fc &1d40 fd a0 ff ff ff ff a0 ff 97 fe ff ff b7 a0 a0 a0 &1d50 93 a2 eb a3 92 a0 92 e8 ff ff ff ff ff ff fe ff &1d60 ff ff ff ff ff ff ff ff ff fe ff ff ff ff a0 97 &1d70 ea ff bf ff ff f4 a0 a0 93 a8 ee 89 92 20 20 ff &1d80 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff &1d90 ff ff ff ff ff ff b5 a0 97 a3 20 a2 ef ff a0 a0 &1da0 93 e2 fb 20 20 92 20 ef ff ff ff ff ff ff ff eb &1db0 ff ff ff ff ff ff ff b7 ff ff ff ff ff ff b5 a0 &1dc0 97 20 20 a0 a0 ab a0 a0 93 a0 a0 20 20 92 20 20 &1dd0 af ff ff ff ff ff a5 ff ff ff ff ff ff ff ff ff &1de0 a2 ef ff ff bf a7 a0 88 85 20 20 20 a0 a0 a0 a0 &1df0 81 53 55 50 45 52 49 4f 52 20 20 92 a3 a1 a0 eb &1e00 ff ff ff ff ff ff ff b7 a0 20 20 20 20 20 20 20 &1e10 85 88 2a 20 20 a0 a0 a0 81 53 4f 46 54 57 41 52 &1e20 45 20 20 20 92 20 20 20 ab ff ff ff ff ff a7 20 &1e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &1e60 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 &1e70 00 00 00 00 00 00 00 00 00 00 00 00 00 48 2a 48 ; open_mouth_screen_data &1e80 97 ff f0 f8 ed f0 fa ff 20 92 20 20 20 20 20 fa &1e90 a7 f8 ff ff ff fc fe b3 af f3 fe ff fd f3 af ef &1ea0 ff fc ff ff ff b5 bf 20 97 a2 b7 ad fd af eb a1 &1eb0 97 88 86 2a 89 20 92 af e8 ff ff ff ff ff ff ea &1ec0 bf a3 eb ff b7 a3 ef b5 ff ff ff b7 ff f3 a5 20 &1ed0 97 a0 a2 fc f0 fc a1 a0 93 e0 f0 f0 a0 92 92 f8 &1ee0 fc ff ff ff ff ff ff fd fd fc ff ff ff fc fe fe &1ef0 ff ff ff ff f6 ff ff b5 97 20 20 a0 a3 a0 a0 a0 &1f00 93 b7 20 a2 b5 92 92 ef ff ff a0 a0 a2 a3 ab af &1f10 af af af af af af af af a7 a3 a0 a0 ff ba ef ff &1f20 97 20 f0 ff fd a0 a0 a0 93 f5 20 e0 b5 20 92 ea &1f30 ff ff a0 83 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 &1f40 a0 a0 92 a0 ff ff a0 ff 97 fe ff ff b7 a0 a0 a0 &1f50 93 a2 eb a3 92 a0 92 ff ff ff b5 83 a0 a0 a0 a0 &1f60 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 92 ea ff ff b4 97 &1f70 ea ff bf ff ff f4 a0 a0 93 a8 ee 89 92 20 20 ff &1f80 ff ff ff 83 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 &1f90 a0 a0 92 ff ff ff b5 a0 97 a3 20 a2 ef ff a0 a0 &1fa0 93 e2 fb 20 20 92 20 ea ff ff ff ff b0 a0 a0 a0 &1fb0 a0 a0 a0 a0 a0 a0 a0 a0 a0 e0 ff ff ff ff a1 a0 &1fc0 97 20 20 a0 a0 ab a0 a0 93 a0 a0 20 20 92 20 20 &1fd0 a3 ff ff ff ff fc f0 f0 a0 a0 a0 a0 a0 a0 f0 f0 &1fe0 fc ff ff ff ff a7 a0 88 85 20 20 20 a0 a0 a0 a0 &1ff0 81 53 55 50 45 52 49 4f 52 92 ab ef ff ff ff ff &2000 ff ff ff ff ff ff ff ff ff ff ff af a3 20 20 20 &2010 85 88 2a 20 20 a0 a0 a0 81 53 4f 46 54 57 41 52 &2020 45 20 92 a0 a3 af ff ff ff ff ff ff ff ff ff ff &2030 af a3 a0 20 20 20 20 20 20 20 20 20 20 20 20 20 &2040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &2050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &2060 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 &2070 00 00 00 00 00 00 00 00 00 00 00 00 00 48 2a 48 ; Echo ; ff1e00 ff1e00 005d00 ; echo_entry_point &1e00 20 2a 20 JSR &202a ; initialise_interrupts_and_sounds &1e03 a9 26 LDA #&26 ; &2600 = bonecruncher_sample_data &1e05 20 3e 1e JSR &1e3e ; play_sectioned_sample # Play "It's time to play Bonecruncher" &1e08 20 fa 20 JSR &20fa ; play_growls &1e0b a9 22 LDA #&22 ; &2200 = die_monsters_sample_data &1e0d 20 3e 1e JSR &1e3e ; play_sectioned_sample # Play "Now you die, monsters" &1e10 a2 30 LDX #&30 # Sample runs from &2b00 - &5aff (&30 pages) &1e12 a0 2b LDY #&2b ; &2b00 = growls_one_sample_data &1e14 a9 c8 LDA #&c8 ; 200 # Set speed of playback &1e16 20 9e 20 JSR &209e ; play_raw_sample_forwards &1e19 a2 0a LDX #&0a # Sample runs from &34ff - &2b00 (&a pages) &1e1b a0 34 LDY #&34 ; &34ff = growls_one_sample_data + &9ff &1e1d a9 b4 LDA #&b4 ; 180 # Set speed of playback &1e1f 20 c9 20 JSR &20c9 ; play_raw_sample_backwards &1e22 a2 0a LDX #&0a # Sample runs from &7aff - &7100 (&a pages) &1e24 a0 7a LDY #&7a ; &7aff = growls_two_sample_data + &1fff &1e26 a9 ff LDA #&ff ; 255 # Set speed of playback &1e28 20 c9 20 JSR &20c9 ; play_raw_sample_backwards &1e2b a2 0a LDX #&0a # Sample runs from &7100 - &7aff (&a pages) &1e2d a0 71 LDY #&71 ; &7100 = growls_two_sample_data + &1600 &1e2f a9 ff LDA #&ff ; 255 # Set speed of playback &1e31 20 9e 20 JSR &209e ; play_raw_sample_forwards &1e34 a9 40 LDA #&40 &1e36 8d 6e fe STA &fe6e ; User VIA interrupt enable register # Disable User VIA timer 1 interrupt &1e39 8d 6d fe STA &fe6d ; User VIA interrupt flag register # Clear User VIA timer 1 interrupt &1e3c 58 CLI &1e3d 60 RTS ; play_sectioned_sample &1e3e 85 4c STA &4c ; section_address_high &1e40 a9 00 LDA #&00 &1e42 85 4b STA &4b ; section_address_low &1e44 20 f2 1f JSR &1ff2 ; initialise_sectioned_sample &1e47 20 ae 1f JSR &1fae ; use_first_section ; play_sectioned_sample_loop &1e4a a0 00 LDY #&00 &1e4c b1 4b LDA (&4b),Y ; section_address # First byte of section is duration of section &1e4e 85 4d STA &4d ; section_duration &1e50 a0 0d LDY #&0d ; play_section_backwards_loop &1e52 b1 4b LDA (&4b),Y ; section_address &1e54 29 0f AND #&0f &1e56 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use low nibble to set volume &1e59 20 99 1f JSR &1f99 ; consider_moving_to_next_section # Can pop out to play_sectioned_sample_loop &1e5c c6 4d DEC &4d ; section_duration &1e5e f0 ea BEQ &1e4a ; play_sectioned_sample_loop &1e60 b1 4b LDA (&4b),Y ; section_address &1e62 4a LSR A &1e63 4a LSR A &1e64 4a LSR A &1e65 4a LSR A &1e66 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use high nibble to set volume &1e69 20 99 1f JSR &1f99 ; consider_moving_to_next_section # Can pop out to play_sectioned_sample_loop &1e6c c6 4d DEC &4d ; section_duration &1e6e f0 da BEQ &1e4a ; play_sectioned_sample_loop &1e70 88 DEY &1e71 d0 df BNE &1e52 ; play_section_backwards_loop &1e73 c8 INY &1e74 b1 4b LDA (&4b),Y ; section_address &1e76 29 0f AND #&0f &1e78 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use low nibble to set volume &1e7b 20 99 1f JSR &1f99 ; consider_moving_to_next_section # Can pop out to play_sectioned_sample_loop &1e7e c6 4d DEC &4d ; section_duration &1e80 f0 c8 BEQ &1e4a ; play_sectioned_sample_loop &1e82 a0 02 LDY #&02 ; play_section_forwards_loop &1e84 b1 4b LDA (&4b),Y ; section_address &1e86 4a LSR A &1e87 4a LSR A &1e88 4a LSR A &1e89 4a LSR A &1e8a 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use high nibble to set volume &1e8d 20 99 1f JSR &1f99 ; consider_moving_to_next_section # Can pop out to play_sectioned_sample_loop &1e90 c6 4d DEC &4d ; section_duration &1e92 f0 b6 BEQ &1e4a ; play_sectioned_sample_loop &1e94 b1 4b LDA (&4b),Y ; section_address &1e96 29 0f AND #&0f &1e98 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use low nibble to set volume &1e9b 20 99 1f JSR &1f99 ; consider_moving_to_next_section # Can pop out to play_sectioned_sample_loop &1e9e c6 4d DEC &4d ; section_duration &1ea0 f0 a8 BEQ &1e4a ; play_sectioned_sample_loop &1ea2 c8 INY &1ea3 c0 0e CPY #&0e &1ea5 d0 dd BNE &1e84 ; play_section_forwards_loop ; play_padding_loop &1ea7 a5 57 LDA &57 ; value &1ea9 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use previous value to set volume &1eac 20 99 1f JSR &1f99 ; consider_moving_to_next_section # Can pop out to play_sectioned_sample_loop &1eaf c6 4d DEC &4d ; section_duration &1eb1 d0 f4 BNE &1ea7 ; play_padding_loop &1eb3 4c 4a 1e JMP &1e4a ; play_sectioned_sample_loop ; play_section_forwards_and_backwards &1eb6 a5 52 LDA &52 ; rnd_2 # Get random sign, +1 or -1 &1eb8 29 01 AND #&01 &1eba 0a ASL A &1ebb 38 SEC &1ebc e9 01 SBC #&01 &1ebe 85 4e STA &4e ; section_direction # Use this to determine initial direction of playback ; play_section_direction_loop &1ec0 a9 0a LDA #&0a &1ec2 85 50 STA &50 ; section_count &1ec4 20 20 1f JSR &1f20 ; rnd # Choose a random starting position in the section &1ec7 29 0f AND #&0f &1ec9 85 4d STA &4d ; section_offset &1ecb e6 4d INC &4d ; section_offset ; play_section_loop &1ecd a5 4d LDA &4d ; section_offset &1ecf 18 CLC &1ed0 65 4e ADC &4e ; section_direction # Move forward or backward a byte &1ed2 85 4d STA &4d ; section_offset &1ed4 d0 07 BNE &1edd ; not_zero &1ed6 18 CLC &1ed7 69 0d ADC #&0d # Ensure section_offset stays between &1 and &d &1ed9 85 4d STA &4d ; section_offset &1edb d0 09 BNE &1ee6 ; found_position # Always branches ; not_zero &1edd c9 0e CMP #&0e &1edf 90 05 BCC &1ee6 ; found_position &1ee1 38 SEC &1ee2 e9 0d SBC #&0d # Ensure section_offset stays between &1 and &d &1ee4 85 4d STA &4d ; section_offset ; found_position &1ee6 a4 4d LDY &4d ; section_offset &1ee8 b1 4b LDA (&4b),Y ; section_address # Get corresponding byte from section &1eea 4a LSR A &1eeb 4a LSR A &1eec 4a LSR A &1eed 4a LSR A &1eee 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use high nibble to set volume &1ef1 c6 54 DEC &54 ; section_cooldown &1ef3 a5 54 LDA &54 ; section_cooldown &1ef5 f0 1c BEQ &1f13 ; end_of_section &1ef7 b1 4b LDA (&4b),Y ; section_address &1ef9 29 0f AND #&0f &1efb 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use low nibble to set volume &1efe c6 54 DEC &54 ; section_cooldown &1f00 a5 54 LDA &54 ; section_cooldown &1f02 f0 0f BEQ &1f13 ; end_of_section &1f04 c6 50 DEC &50 ; section_count &1f06 d0 c5 BNE &1ecd ; play_section_loop &1f08 a5 4e LDA &4e ; section_direction # Flip direction every ten bytes &1f0a 49 ff EOR #&ff &1f0c 85 4e STA &4e ; section_direction &1f0e e6 4e INC &4e ; section_direction &1f10 4c c0 1e JMP &1ec0 ; play_section_direction_loop # Now play the section the other way ; end_of_section &1f13 68 PLA &1f14 68 PLA &1f15 ad 89 20 LDA &2089 ; loop_return_address_high # Return to play_sectioned_sample_loop &1f18 48 PHA &1f19 ad 88 20 LDA &2088 ; loop_return_address_low &1f1c 48 PHA &1f1d 4c 9f 1f JMP &1f9f ; move_to_next_section ; rnd &1f20 a5 51 LDA &51 ; rnd_1 &1f22 29 48 AND #&48 &1f24 69 3d ADC #&3d &1f26 0a ASL A &1f27 0a ASL A &1f28 26 53 ROL &53 ; rnd_3 &1f2a 26 52 ROL &52 ; rnd_2 &1f2c 26 51 ROL &51 ; rnd_1 &1f2e a5 51 LDA &51 ; rnd_1 &1f30 60 RTS ; set_volumes_from_buffer_after_interrupt &1f31 84 5a STY &5a ; tmp_y &1f33 a0 00 LDY #&00 &1f35 85 57 STA &57 ; value &1f37 48 PHA &1f38 b1 fb LDA (&fb),Y ; buffer_address &1f3a 85 5c STA &5c ; volume_for_channel_one # Previous value is used for channel one &1f3c 68 PLA ; wait_for_interrupt &1f3d ae 6d fe LDX &fe6d ; User VIA interrupt flag register &1f40 10 fb BPL &1f3d ; wait_for_interrupt &1f42 8e 6d fe STX &fe6d ; User VIA interrupt flag register &1f45 20 61 1f JSR &1f61 ; set_volumes # Current value is used for channels two and three &1f48 a5 57 LDA &57 ; value &1f4a a0 00 LDY #&00 &1f4c 91 fb STA (&fb),Y ; buffer_address &1f4e e6 fb INC &fb ; buffer_address_low &1f50 d0 0c BNE &1f5e ; skip_wraparound &1f52 e6 fc INC &fc ; buffer_address_high &1f54 a5 fc LDA &fc ; buffer_address_high &1f56 c9 18 CMP #&18 &1f58 d0 04 BNE &1f5e ; skip_wraparound &1f5a a9 13 LDA #&13 &1f5c 85 fc STA &fc ; buffer_address_high ; skip_wraparound &1f5e a4 5a LDY &5a ; tmp_y &1f60 60 RTS ; set_volumes &1f61 a0 08 LDY #&08 # &08 to set sound chip write pin high &1f63 85 5d STA &5d ; volume_for_channels_two_and_three &1f65 09 90 ORA #&90 ; 1 001 0000 # Set channel 3 volume &1f67 a2 00 LDX #&00 # &00 to set sound chip write pin low &1f69 8d 41 fe STA &fe41 ; System VIA output register A # Write byte to sound chip &1f6c 8e 40 fe STX &fe40 ; System VIA port B input/output register # Set sound chip write pin low &1f6f ea NOP &1f70 ea NOP &1f71 ea NOP &1f72 ea NOP &1f73 8c 40 fe STY &fe40 ; System VIA port B input/output register # Set sound chip write pin high &1f76 a5 5d LDA &5d ; volume_for_channels_two_and_three &1f78 09 b0 ORA #&b0 ; 1 011 # Set channel 2 volume &1f7a 8d 41 fe STA &fe41 ; System VIA output register A # Write byte to sound chip &1f7d 8e 40 fe STX &fe40 ; System VIA port B input/output register # Set sound chip write pin low &1f80 ea NOP &1f81 ea NOP &1f82 ea NOP &1f83 ea NOP &1f84 8c 40 fe STY &fe40 ; System VIA port B input/output register # Set sound chip write pin high &1f87 a5 5c LDA &5c ; volume_for_channel_one &1f89 09 d0 ORA #&d0 ; 1 101 0000 # Set channel 1 volume &1f8b 8d 41 fe STA &fe41 ; System VIA output register A # Write byte to sound chip &1f8e 8e 40 fe STX &fe40 ; System VIA port B input/output register # Set sound chip write pin low &1f91 ea NOP &1f92 ea NOP &1f93 ea NOP &1f94 ea NOP &1f95 8c 40 fe STY &fe40 ; System VIA port B input/output register # Set sound chip write pin high &1f98 60 RTS ; consider_moving_to_next_section &1f99 84 58 STY &58 ; tmp_y &1f9b c6 54 DEC &54 ; section_cooldown &1f9d d0 52 BNE &1ff1 ; leave ; move_to_next_section &1f9f a5 4b LDA &4b ; section_address &1fa1 18 CLC &1fa2 69 0e ADC #&0e # Sample sections are 14 bytes long &1fa4 85 4b STA &4b ; section_address_low &1fa6 90 02 BCC &1faa ; skip_page &1fa8 e6 4c INC &4c ; section_address_high ; skip_page ; check_for_padding_section &1faa c6 56 DEC &56 ; sections_in_sample # Is this the end of the sample? &1fac f0 2c BEQ &1fda ; play_silence # If so, end with silence ; use_first_section &1fae a0 00 LDY #&00 &1fb0 b1 4b LDA (&4b),Y ; section_address # Get first byte of sample section &1fb2 d0 1c BNE &1fd0 ; not_zero ; is_zero # If zero, then do a section of padding &1fb4 a5 57 LDA &57 ; value &1fb6 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt # Use previous value to set volume &1fb9 c6 54 DEC &54 ; section_cooldown &1fbb d0 f7 BNE &1fb4 ; is_zero &1fbd e6 4b INC &4b ; section_address_low # Move forward a byte &1fbf d0 02 BNE &1fc3 ; skip_page &1fc1 e6 4c INC &4c ; section_address_high ; skip_page &1fc3 68 PLA &1fc4 68 PLA &1fc5 ad 89 20 LDA &2089 ; loop_return_address_high # Return to play_sectioned_sample_loop &1fc8 48 PHA &1fc9 ad 88 20 LDA &2088 ; loop_return_address_low &1fcc 48 PHA &1fcd 4c aa 1f JMP &1faa ; check_for_padding_section ; not_zero &1fd0 c9 ff CMP #&ff # If not &ff, play section backwards then forwards &1fd2 d0 03 BNE &1fd7 ; leave_with_y &1fd4 4c b6 1e JMP &1eb6 ; play_section_forwards_and_backwards # If &ff, play section forwards and backwards at random ; leave_with_y &1fd7 a4 58 LDY &58 ; tmp_y &1fd9 60 RTS ; play_silence &1fda a9 06 LDA #&06 &1fdc 85 59 STA &59 ; silence_length_high &1fde a9 00 LDA #&00 &1fe0 85 58 STA &58 ; silence_length_low ; play_silence_loop &1fe2 a9 00 LDA #&00 &1fe4 20 31 1f JSR &1f31 ; set_volumes_from_buffer_after_interrupt &1fe7 c6 58 DEC &58 ; silence_length_low &1fe9 d0 f7 BNE &1fe2 ; loop &1feb c6 59 DEC &59 ; silence_length_high &1fed d0 f3 BNE &1fe2 ; loop &1fef 68 PLA # Pop consider_moving_to_next_section off stack &1ff0 68 PLA # i.e. leave play_sectioned_sample on return ; leave &1ff1 60 RTS ; initialise_sectioned_sample &1ff2 a9 00 LDA #&00 &1ff4 85 fb STA &fb ; buffer_address_low &1ff6 85 fd STA &fd ; buffer_start_address_low # Unused variable &1ff8 a9 13 LDA #&13 ; &1300 = buffer &1ffa 85 fc STA &fc ; buffer_address_high &1ffc 85 fe STA &fe ; buffer_start_address_high # Unused variable &1ffe a0 00 LDY #&00 &2000 b1 4b LDA (&4b),Y ; section_address # First byte of sample is number of sections &2002 85 56 STA &56 ; sections_in_sample &2004 a9 8c LDA #&8c ; 140 # Set speed of playback &2006 8d 66 fe STA &fe66 ; User VIA timer 1 latch LSB &2009 a9 00 LDA #&00 &200b 85 54 STA &54 ; section_cooldown &200d a5 4b LDA &4b ; section_address_low &200f 18 CLC &2010 69 02 ADC #&02 &2012 85 4b STA &4b ; section_address_low &2014 a5 4c LDA &4c ; section_address_high &2016 69 00 ADC #&00 &2018 85 4c STA &4c ; section_address_high &201a a9 4a LDA #&4a &201c 38 SEC &201d e9 01 SBC #&01 &201f 8d 88 20 STA &2088 ; loop_return_address_low &2022 a9 1e LDA #&1e ; &1e4a = play_sectioned_sample_loop &2024 e9 00 SBC #&00 &2026 8d 89 20 STA &2089 ; loop_return_address_high &2029 60 RTS ; initialise_interrupts_and_sounds &202a 78 SEI &202b a9 40 LDA #&40 # Set User VIA timer 1 to generate repeated interrupts &202d 8d 6b fe STA &fe6b ; User VIA auxiliary control register &2030 a9 c0 LDA #&c0 # Enable User VIA timer 1 interrupt &2032 8d 6e fe STA &fe6e ; User VIA interrupt enable register &2035 a9 8c LDA #&8c ; 140 # Set speed of playback; unnecessary, reset later &2037 8d 66 fe STA &fe66 ; User VIA timer 1 latch LSB &203a a9 00 LDA #&00 &203c 8d 65 fe STA &fe65 ; User VIA timer 1 counter MSB &203f a9 ff LDA #&ff # Set all bits to to output &2041 8d 43 fe STA &fe43 ; System VIA data direction register A &2044 a2 00 LDX #&00 # &00 to set sound chip write pin low &2046 a0 08 LDY #&08 # &08 to set sound chip write pin high &2048 a9 c1 LDA #&c1 ; 1 100 0001 # Set channel 1 frequency &204a 20 16 21 JSR &2116 ; write_byte_to_sound_chip &204d a9 00 LDA #&00 ; 0 0000000 # to 1 &204f 20 16 21 JSR &2116 ; write_byte_to_sound_chip &2052 a9 81 LDA #&81 ; 1 000 0001 # Set channel 3 frequency &2054 20 16 21 JSR &2116 ; write_byte_to_sound_chip &2057 a9 00 LDA #&00 ; 0 0000000 # to 1 &2059 20 16 21 JSR &2116 ; write_byte_to_sound_chip &205c a9 a2 LDA #&a2 ; 1 010 0010 # Set channel 2 frequency &205e 20 16 21 JSR &2116 ; write_byte_to_sound_chip &2061 a9 00 LDA #&00 ; 0 0000000 # to 2 &2063 20 16 21 JSR &2116 ; write_byte_to_sound_chip &2066 a9 cb LDA #&cb # Initialise random number generator &2068 85 52 STA &52 ; rnd_2 &206a a9 89 LDA #&89 &206c 85 51 STA &51 ; rnd_1 &206e a9 00 LDA #&00 &2070 85 58 STA &58 ; wipe_address_low &2072 a9 13 LDA #&13 ; &1300 = buffer # Wipe &1300 - &17ff &2074 85 59 STA &59 ; wipe_address_high ; wipe_buffer_loop &2076 a9 00 LDA #&00 &2078 a8 TAY &2079 91 58 STA (&58),Y ; wipe_address &207b e6 58 INC &58 ; wipe_address_low &207d d0 f7 BNE &2076 ; wipe_buffer_loop &207f e6 59 INC &59 ; wipe_address_high &2081 a5 59 LDA &59 ; wipe_address_high &2083 c9 18 CMP #&18 &2085 d0 ef BNE &2076 ; wipe_buffer_loop &2087 60 RTS ; loop_return_address_low &2088 49 ; loop_return_address_high &2089 1e ; unused &208a 00 00 ; set_volumes_after_interrupt &208c 84 5a STY &5a ; tmp_y ; wait_for_interrupt &208e ae 6d fe LDX &fe6d ; User VIA interrupt flag register # &80 set if an interrupt has occurred &2091 10 fb BPL &208e ; wait_for_interrupt &2093 8e 6d fe STX &fe6d ; User VIA interrupt flag register # Clear interrupt condition &2096 85 5c STA &5c ; volume_for_channel_one &2098 20 61 1f JSR &1f61 ; set_volumes &209b a4 5a LDY &5a ; tmp_y &209d 60 RTS ; play_raw_sample_forwards &209e 86 56 STX &56 ; sample_length &20a0 84 59 STY &59 ; raw_sample_address_high &20a2 8d 66 fe STA &fe66 ; User VIA timer 1 latch LSB # Set playback speed &20a5 a9 00 LDA #&00 &20a7 85 58 STA &58 ; raw_sample_address_low &20a9 8d 65 fe STA &fe65 ; User VIA timer 1 counter MSB &20ac a0 00 LDY #&00 ; play_raw_sample_forwards_loop &20ae b1 58 LDA (&58),Y ; raw_sample_address &20b0 48 PHA &20b1 29 0f AND #&0f &20b3 20 8c 20 JSR &208c ; set_volumes_after_interrupt # Use low nibble to set volume &20b6 68 PLA &20b7 4a LSR A &20b8 4a LSR A &20b9 4a LSR A &20ba 4a LSR A &20bb 20 8c 20 JSR &208c ; set_volumes_after_interrupt # Use high nibble to set volume &20be e6 58 INC &58 ; raw_sample_address_low &20c0 d0 ec BNE &20ae ; play_raw_sample_forwards_loop &20c2 e6 59 INC &59 ; raw_sample_address_low &20c4 c6 56 DEC &56 ; sample_length &20c6 d0 e6 BNE &20ae ; play_raw_sample_forwards_loop &20c8 60 RTS ; play_raw_sample_backwards &20c9 86 56 STX &56 ; sample_length &20cb 84 59 STY &59 ; raw_sample_address_low &20cd 8d 66 fe STA &fe66 ; User VIA timer 1 latch LSB # Set playback speed &20d0 a9 00 LDA #&00 &20d2 8d 65 fe STA &fe65 ; User VIA timer 1 counter MSB &20d5 a9 ff LDA #&ff &20d7 85 58 STA &58 ; raw_sample_address_low &20d9 a0 00 LDY #&00 ; play_raw_sample_backwards_loop &20db b1 58 LDA (&58),Y ; raw_sample_address &20dd 48 PHA &20de 4a LSR A &20df 4a LSR A &20e0 4a LSR A &20e1 4a LSR A &20e2 20 8c 20 JSR &208c ; set_volumes_after_interrupt # Use high nibble to set volume &20e5 68 PLA &20e6 29 0f AND #&0f &20e8 20 8c 20 JSR &208c ; set_volumes_after_interrupt # Use low nibble to set volume &20eb c6 58 DEC &58 ; raw_sample_address_low &20ed a5 58 LDA &58 ; raw_sample_address_low &20ef c9 ff CMP #&ff &20f1 d0 e8 BNE &20db ; play_raw_sample_backwards_loop &20f3 c6 59 DEC &59 ; raw_sample_address_low &20f5 c6 56 DEC &56 ; sample_length &20f7 d0 e2 BNE &20db ; play_raw_sample_backwards_loop &20f9 60 RTS ; play_growls &20fa a2 09 LDX #&09 # Sample runs from &6500 - &6dff (&09 pages) &20fc a0 65 LDY #&65 ; &6500 = growls_two_sample_data + &a00 &20fe a9 c8 LDA #&c8 ; 200 # Set speed of playback &2100 20 9e 20 JSR &209e ; play_raw_sample_forwards &2103 a2 12 LDX #&12 # Sample runs from &6dff - &5c00 (&12 pages) &2105 a0 6d LDY #&6d ; &6dff = growls_two_sample_data + &12ff &2107 a9 c8 LDA #&c8 ; 200 # Set speed of playback &2109 20 c9 20 JSR &20c9 ; play_raw_sample_backwards &210c a2 20 LDX #&20 # Sample runs from &5b00 - &7aff (&20 pages) &210e a0 5b LDY #&5b ; &5b00 = growls_two_sample_data &2110 a9 ff LDA #&ff ; 255 # Set speed of playback &2112 20 9e 20 JSR &209e ; play_raw_sample_forwards &2115 60 RTS ; write_byte_to_sound_chip &2116 8d 41 fe STA &fe41 ; System VIA output register A # Write byte to sound chip &2119 8e 40 fe STX &fe40 ; System VIA port B input/output register # Set sound chip write pin low (X = &00 at &2044) &211c ea NOP &211d ea NOP &211e ea NOP &211f ea NOP &2120 8c 40 fe STY &fe40 ; System VIA port B input/output register # Set sound chip write pin high (X = &08 at &2046) &2123 60 RTS ; unused # Copy of &5324 - &53fe (part of growls_one_sample_data) &2124 88 88 78 88 77 67 66 76 66 66 66 77 66 67 77 67 &2134 77 66 66 86 88 a9 aa aa 99 88 88 77 77 77 67 77 &2144 66 76 76 66 75 58 67 57 76 66 67 66 75 76 98 a9 &2154 ab aa 89 78 76 76 76 77 76 67 76 68 77 57 65 57 &2164 67 58 78 57 5a 96 68 96 76 87 75 88 86 88 97 98 &2174 99 a9 af bb 58 67 75 78 77 68 77 67 77 77 77 76 &2184 76 87 77 77 88 88 88 87 88 88 88 88 88 88 88 89 &2194 98 98 89 98 89 98 88 88 88 88 77 88 77 78 77 77 &21a4 77 77 77 77 77 77 77 67 66 66 56 55 55 76 a7 bb &21b4 ba 8a 77 56 66 76 88 88 88 87 67 77 76 66 66 56 &21c4 55 55 67 66 67 76 57 76 77 77 77 77 88 89 89 89 &21d4 99 89 89 88 78 78 68 77 77 77 77 77 78 76 68 76 &21e4 76 76 67 77 76 87 77 78 76 79 76 68 77 68 87 78 &21f4 99 88 9a 98 88 87 78 87 68 87 77 ; unused &21ff 20 ; die_monsters_sample_data &2200 47 87 6b 87 77 76 65 55 54 44 44 44 44 44 44 44 &2210 69 88 88 77 65 65 45 44 44 44 44 44 44 44 6b d8 &2220 88 77 54 44 33 34 44 55 55 55 55 55 75 fa 87 76 &2230 42 45 55 55 65 44 44 43 45 55 75 f9 65 55 65 45 &2240 76 63 34 54 44 55 54 44 60 fc 74 34 67 76 66 54 &2250 33 35 66 54 33 44 57 fb 74 24 78 88 65 54 22 35 &2260 77 63 11 24 5d fb 73 03 78 98 66 55 33 35 78 64 &2270 21 24 67 fd 84 00 46 77 66 77 53 21 35 78 75 42 &2280 73 fc 84 10 24 67 87 76 54 33 34 66 76 54 71 fb &2290 85 21 02 45 67 77 76 54 32 23 45 67 79 eb 86 43 &22a0 22 23 34 55 67 77 65 43 33 33 7d ba 88 65 54 33 &22b0 33 34 45 55 55 55 55 54 70 d9 88 87 65 34 32 33 &22c0 33 44 45 55 55 55 65 d6 79 75 86 47 43 44 24 33 &22d0 34 33 44 45 60 e7 7a 85 86 46 53 54 24 43 44 34 &22e0 44 45 5d e9 9a 97 86 55 33 43 23 32 33 34 44 55 &22f0 54 eb aa 98 86 55 43 32 22 23 33 34 44 44 4d fc &2300 ba 98 87 65 43 32 21 11 22 23 33 44 4a 88 87 77 &2310 66 55 55 44 44 44 44 44 44 44 51 77 76 66 65 55 &2320 55 44 44 44 44 44 44 44 65 65 65 55 55 55 55 55 &2330 44 44 44 44 44 44 00 63 a7 87 77 56 44 34 43 54 &2340 44 45 44 45 44 63 fc db 87 72 24 02 22 45 46 66 &2350 76 66 54 52 fe a8 54 31 03 58 98 86 53 20 02 46 &2360 78 4f fc 96 33 45 67 78 86 41 12 35 77 66 43 4a &2370 fd 96 33 47 77 65 54 43 23 34 55 54 33 49 fd 95 &2380 43 56 87 75 43 43 44 44 44 44 44 46 fd 95 43 57 &2390 87 64 44 44 44 44 45 44 44 48 fc 97 54 56 76 65 &23a0 54 43 33 44 44 44 44 4b fc 86 34 57 87 65 55 44 &23b0 33 34 55 54 33 53 fb 86 45 66 66 67 65 33 34 55 &23c0 44 44 44 5d f9 76 56 53 57 76 54 55 33 45 65 44 &23d0 54 6c d8 67 65 43 56 55 65 43 44 44 45 55 44 73 &23e0 b7 77 64 44 44 45 55 55 44 44 44 45 55 7a 97 77 &23f0 65 54 44 44 44 55 55 55 45 44 44 7d 87 77 65 54 &2400 44 44 44 44 45 55 55 55 54 7b 87 77 65 55 44 44 &2410 44 44 44 55 55 55 54 74 76 66 66 55 55 44 44 44 &2420 44 44 44 44 44 76 76 66 66 55 55 44 44 44 44 44 &2430 44 44 44 84 76 66 55 55 55 44 44 44 44 44 44 44 &2440 44 71 87 76 65 55 55 44 44 44 44 44 44 44 44 73 &2450 c9 86 42 23 45 66 55 44 55 55 54 44 44 6f c9 85 &2460 32 23 56 66 54 44 45 55 44 44 45 75 b9 86 44 44 &2470 54 54 55 55 54 44 44 55 55 69 87 76 66 65 54 44 &2480 44 44 44 44 44 44 44 67 87 77 66 65 54 44 44 44 &2490 44 44 44 44 44 68 87 77 66 65 55 44 44 44 44 44 &24a0 44 44 44 ff 45 55 55 45 45 44 45 45 44 45 45 46 &24b0 45 ff 45 45 44 45 45 36 37 37 37 27 37 27 36 ff &24c0 35 45 35 45 45 55 54 54 63 64 53 53 64 00 00 ff &24d0 45 55 55 55 55 55 54 54 54 44 54 44 44 73 a8 88 &24e0 76 53 33 33 33 44 55 55 55 55 55 72 b9 87 76 43 &24f0 33 33 34 55 55 55 55 44 44 6e c9 87 65 42 22 33 &2500 44 56 66 55 54 33 33 6c c9 87 65 42 22 34 45 67 &2510 76 66 54 32 33 61 c9 88 65 42 23 34 45 66 66 65 &2520 44 33 33 5d e9 88 65 41 22 24 45 67 77 56 53 33 &2530 23 57 ca 98 76 42 23 34 45 66 65 55 44 33 33 51 &2540 c9 98 76 54 33 33 44 55 55 55 44 33 33 4c ca a8 &2550 87 54 33 33 33 44 44 44 44 44 44 4d ca a9 87 64 &2560 32 21 11 22 33 44 55 55 55 51 a8 88 77 65 54 43 &2570 33 33 33 34 44 44 55 57 98 88 77 65 54 44 43 44 &2580 44 44 44 44 44 65 86 76 67 55 55 54 44 44 44 44 &2590 54 55 55 6b a3 74 65 55 54 54 54 45 45 44 44 44 &25a0 45 6b 83 65 56 45 45 44 44 54 54 54 45 45 45 ff &25b0 54 44 44 44 44 55 45 55 45 45 55 55 55 ; unused # Source code fragment, corresponds to &2096 - &20a2 &25bd 54 41 54 45 32 3a 4a 53 52 76 6f 6c 0d ; ... TATE2:JSRvol &25ca 07 14 0e 20 4c 44 59 74 79 3a 52 54 53 0d ; 1812 LDYty:RTS &25d8 07 cf 05 20 0d ; 1999 &25dd 07 d0 09 2e 64 69 67 69 0d ; 2000 .digi &25e6 07 d1 05 20 0d ; 2001 &25eb 07 e4 21 20 53 54 58 6c 65 3a 53 54 59 54 45 2b ; 2020 STXle:STYTE+1:STA &25fb 31 3a 53 54 41 ; bonecruncher_sample_data &2600 5e 87 50 d6 78 75 65 43 44 33 44 45 54 55 55 55 &2610 57 f8 7b 74 63 32 24 42 56 45 65 55 54 44 5a f8 &2620 89 75 51 43 13 53 46 56 65 65 34 43 63 86 66 66 &2630 55 55 44 44 44 44 44 44 44 44 ff 55 55 55 55 55 &2640 54 44 44 44 45 45 55 55 ff 55 45 44 45 45 45 45 &2650 45 45 45 55 45 54 ff 45 45 45 45 45 55 54 54 54 &2660 54 54 54 54 00 00 ff 44 54 54 44 54 54 54 54 54 &2670 54 54 54 44 ff 54 45 44 55 54 55 45 56 35 46 44 &2680 54 44 51 b7 86 55 54 55 55 54 54 45 44 55 54 44 &2690 4b f9 85 43 45 66 65 55 44 44 44 55 55 44 46 f9 &26a0 94 32 47 67 54 44 45 44 34 45 55 54 40 fb 96 44 &26b0 45 65 44 34 33 32 23 44 55 44 3e fd a7 55 54 43 &26c0 44 44 32 34 44 44 55 55 40 fb 97 66 42 24 45 33 &26d0 44 43 45 55 55 55 46 f9 98 76 43 43 34 34 44 44 &26e0 44 44 55 55 46 d8 89 76 54 43 33 33 43 44 34 44 &26f0 44 45 47 c8 88 76 64 43 33 33 33 33 33 44 44 55 &2700 4a b8 88 76 64 43 32 22 22 33 33 34 44 45 4d 98 &2710 88 76 65 44 33 33 33 33 34 44 44 45 52 98 87 76 &2720 65 55 44 43 33 33 44 44 44 44 54 98 88 77 65 55 &2730 44 44 44 44 44 44 44 44 59 88 87 76 66 55 44 44 &2740 44 44 44 44 44 44 ff 44 44 44 44 44 44 44 44 44 &2750 44 44 44 44 ff 54 54 45 45 45 63 54 54 45 54 64 &2760 45 55 ff 45 44 45 55 45 55 54 55 55 55 55 54 55 &2770 4a a9 98 87 75 54 43 33 33 33 33 44 44 55 50 88 &2780 88 77 66 55 44 33 33 33 33 34 44 44 50 65 55 55 &2790 55 55 54 44 44 44 44 44 44 44 00 ff 35 55 55 55 &27a0 55 44 44 55 45 55 55 55 44 5b b8 88 77 54 53 33 &27b0 34 44 55 56 56 65 55 60 88 87 76 54 44 33 34 44 &27c0 44 55 55 55 55 72 c8 76 53 22 44 45 66 55 54 33 &27d0 33 45 66 7a c8 67 53 22 44 46 76 65 54 33 44 45 &27e0 66 7c c8 67 53 22 44 46 76 55 54 33 44 45 66 88 &27f0 a7 57 53 33 44 45 65 55 44 43 44 45 55 89 a6 56 &2800 53 33 44 46 65 56 44 43 34 45 55 80 b7 67 53 33 &2810 34 45 65 56 44 44 44 45 55 6b b7 67 63 43 33 45 &2820 55 56 54 54 44 44 44 60 c7 68 64 44 32 34 45 66 &2830 56 65 44 43 34 54 b8 88 65 53 33 33 44 55 55 54 &2840 44 44 44 4b b9 88 75 43 22 22 23 34 55 56 66 65 &2850 55 3f b8 88 76 53 22 11 12 23 45 56 66 66 66 3d &2860 e7 89 65 63 23 11 22 23 45 66 67 76 66 3b a7 88 &2870 66 64 33 22 33 33 44 45 55 55 55 3a 97 88 66 64 &2880 44 33 33 33 34 44 45 55 55 39 a8 88 76 64 43 33 &2890 33 33 44 45 55 55 55 4c 66 66 55 55 55 55 45 45 &28a0 54 44 44 44 44 61 65 55 55 55 55 54 44 44 44 44 &28b0 44 44 44 6b 66 55 55 55 55 55 44 44 44 44 44 44 &28c0 44 73 65 55 55 55 55 55 54 44 44 44 44 44 44 6c &28d0 66 65 55 55 55 55 44 44 44 44 44 44 44 4a fc a8 &28e0 64 43 32 22 45 66 54 44 44 43 33 45 ff b7 42 11 &28f0 22 24 67 77 54 33 33 44 45 3f fe b8 63 10 00 01 &2900 25 67 87 76 54 43 22 34 fe c9 75 32 10 00 22 45 &2910 66 77 76 66 55 36 ec b9 75 43 22 22 22 33 45 55 &2920 66 65 55 3a da a8 86 54 33 22 23 33 44 45 55 55 &2930 55 3d ba 98 86 65 44 33 22 22 33 33 44 44 55 41 &2940 98 88 76 65 54 33 33 22 23 33 34 44 45 48 98 87 &2950 66 65 54 44 33 33 33 33 33 44 45 4c 98 77 66 65 &2960 54 44 33 33 33 34 44 44 45 51 88 87 66 65 55 44 &2970 44 44 44 44 44 44 44 54 87 77 66 65 55 44 44 44 &2980 44 44 44 44 44 63 86 55 55 55 55 44 55 44 44 44 &2990 44 44 44 ff 44 44 44 44 55 55 55 54 44 44 44 55 &29a0 55 ff 45 55 55 55 55 55 45 45 55 55 45 55 55 57 &29b0 87 66 65 55 54 44 44 44 44 45 55 54 45 5b ca 87 &29c0 65 43 32 23 45 55 55 55 54 44 44 64 d9 86 44 43 &29d0 23 46 76 55 54 43 33 45 55 61 d8 67 55 53 35 55 &29e0 54 55 43 44 44 44 55 5e 87 77 66 65 55 44 44 44 &29f0 44 44 44 44 44 61 87 77 66 65 55 44 44 44 44 44 &2a00 44 44 44 63 77 76 66 65 55 54 44 44 44 44 44 44 &2a10 44 40 76 66 65 55 55 55 44 44 44 44 44 44 44 ff &2a20 55 45 55 55 55 55 55 55 45 55 55 55 55 ff 34 55 &2a30 45 53 73 55 53 73 37 43 55 36 44 ff 54 54 44 54 &2a40 45 54 46 45 65 45 54 56 45 5e a8 88 76 65 44 33 &2a50 33 34 44 55 55 55 55 6c c8 88 75 42 23 33 45 56 &2a60 66 65 44 43 33 85 b7 65 43 32 34 55 66 66 54 33 &2a70 34 45 56 8d 97 65 44 43 24 56 66 56 54 33 34 45 &2a80 56 8b b8 76 43 32 23 56 76 55 54 33 34 55 56 92 &2a90 c8 75 43 32 24 56 76 55 54 33 34 55 55 a8 a8 65 &2aa0 43 43 34 56 65 55 44 44 44 55 55 af a8 65 43 33 &2ab0 34 56 65 44 44 44 45 55 55 bf a8 64 44 44 34 56 &2ac0 65 44 44 44 45 55 54 a3 76 55 55 55 45 55 54 44 &2ad0 54 44 45 44 44 66 65 55 55 55 55 55 55 45 55 55 &2ae0 55 44 45 90 55 55 55 55 55 55 55 55 55 55 55 55 &2af0 55 80 55 55 55 55 55 55 55 55 55 55 55 55 55 ; unused &2aff 4a ; growls_one_sample_data &2b00 99 89 78 88 99 9a 89 78 77 67 55 54 65 77 77 77 &2b10 98 a9 99 88 88 99 99 88 77 77 77 66 65 76 98 99 &2b20 89 88 99 88 67 55 65 77 88 78 77 88 88 88 88 98 &2b30 a9 9a 89 78 67 66 55 55 76 98 aa aa aa 9a 89 78 &2b40 66 76 77 77 77 77 88 98 99 88 88 88 78 66 66 76 &2b50 77 77 87 88 99 88 88 88 78 67 66 66 66 77 77 88 &2b60 98 99 99 88 88 88 77 77 77 77 88 88 88 99 99 88 &2b70 88 88 88 88 78 77 88 88 88 88 88 88 88 88 78 77 &2b80 77 77 88 77 77 88 88 88 78 77 77 77 77 77 87 88 &2b90 88 77 77 67 66 55 55 55 55 55 76 87 99 aa aa aa &2ba0 99 78 56 55 44 44 54 65 77 a9 ba bb bb ab 89 46 &2bb0 23 01 00 10 32 64 97 ba cb bc bb 9a 78 56 55 55 &2bc0 65 66 77 87 88 88 88 99 89 88 88 88 88 88 99 a9 &2bd0 aa aa 9a aa 99 89 88 88 88 88 88 88 88 99 99 99 &2be0 99 99 89 78 77 77 77 77 87 98 99 99 99 88 77 66 &2bf0 66 87 a9 aa 9a 89 78 56 45 23 22 32 54 76 a9 cb &2c00 dd dd bc 8a 67 44 34 33 44 65 76 98 99 99 99 ba &2c10 cc bc 9b 68 45 12 00 00 00 10 42 86 ca fd ff ef &2c20 ac 89 45 22 11 21 53 76 87 78 77 77 77 77 a8 db &2c30 fe ff ef ad 68 24 00 00 00 10 53 a7 fd ff ff ff &2c40 be 48 02 00 00 00 10 73 b9 ed ff ff ff ce 9a 57 &2c50 24 01 00 10 53 97 db ff ff ff ce 8a 25 00 00 00 &2c60 20 43 75 97 a9 aa aa aa 99 99 78 56 55 55 65 66 &2c70 97 ba ed ee de bc 9a 68 45 54 97 aa 68 45 44 45 &2c80 13 00 10 53 77 87 a8 db ff df 9b 78 67 45 12 10 &2c90 32 54 55 65 97 a9 aa ba dc ee de bc 9a 88 56 24 &2ca0 01 00 21 32 54 97 db fe ff ff ce 9b 48 02 00 00 &2cb0 31 43 75 a9 dc dd bc aa aa 99 78 66 66 76 67 56 &2cc0 76 a8 bb ab 89 78 56 24 00 10 53 97 aa cb cc ab &2cd0 58 24 11 43 75 b9 fd ff ff ff ad 58 13 00 00 00 &2ce0 52 b7 fe ff ff ff ae 48 02 00 00 00 20 53 76 a9 &2cf0 bb dc bc 9a 78 56 44 33 43 54 76 98 ba cb dd ee &2d00 ee de cd 9a 46 22 52 86 99 78 77 77 46 12 00 10 &2d10 32 54 76 b9 fd ff df ac 89 46 13 00 00 31 75 98 &2d20 a9 db fe ff ef dd de bd 69 45 54 55 34 22 53 87 &2d30 99 99 ba fd ff ff cd 9a 58 04 00 00 00 00 52 a7 &2d40 ec ff ff ff df 9b 46 22 22 43 75 a8 db dd dd bc &2d50 aa 9a 78 56 55 65 77 56 44 44 65 66 66 77 a9 ba &2d60 aa aa aa 89 46 23 22 21 43 96 fc ff ff ff ff ae &2d70 15 00 00 00 00 a4 ff ff ff ff df 49 00 00 00 00 &2d80 00 93 fe ff ff ff cf 49 00 00 00 00 00 51 fb ff &2d90 ff ff ff ff 4a 00 00 00 00 00 b2 ff ff ff ff ff &2da0 2a 00 00 00 00 00 70 fd ff ff ff ff 6d 00 00 00 &2db0 00 00 71 ff ff ff ff ff ff 18 00 00 00 00 50 ff &2dc0 ff ff ff ff 2a 00 00 00 00 00 b3 ff ff ff ff ff &2dd0 2a 00 00 00 00 00 d5 ff ff ff ff ff 8f 00 00 00 &2de0 00 00 70 ff ff ff ff ff 0a 00 00 00 00 00 d5 ff &2df0 ff ff ff 8e 01 00 00 00 00 72 fe ff ff ff ff cf &2e00 08 00 00 00 00 50 fd ff ff ff ff 09 00 00 00 00 &2e10 00 f6 ff ff ff ff 9f 02 00 00 00 00 70 fd ff ff &2e20 ff ff cf 05 00 00 00 00 70 ff ff ff ff cf 04 00 &2e30 00 00 00 30 fb ff ff ff ff 29 00 00 00 00 50 fb &2e40 ff ff ff ff cf 28 00 00 00 00 63 fa ff ff ff ef &2e50 28 00 00 00 00 30 f9 ff ff ff ef 18 00 00 00 00 &2e60 70 fd ff ff ff ef 48 01 00 00 51 da fe df cd bb &2e70 ed ac 49 22 01 00 00 10 53 97 b9 fd ce 8a 54 45 &2e80 01 00 00 63 b9 ec ff ff ad a9 89 67 76 b9 bc 8a &2e90 55 55 66 d8 fe ef 9b 47 00 00 00 10 74 db ff ff &2ea0 cf 59 04 00 00 00 93 fd ff ff ff 8d 35 02 00 62 &2eb0 fb ff ff ef ad b9 7a 56 11 12 00 00 51 98 ba cc &2ec0 dd 8b 56 33 24 00 00 62 a9 db ff ff ce 59 75 45 &2ed0 54 b7 ff ef bd ba fd 9d 26 00 00 00 00 93 ba dc &2ee0 fd cf 58 02 22 00 00 70 cb bc fd ff af 78 75 67 &2ef0 67 b9 ed ad 9a a9 fb ce ac 57 03 00 00 30 74 da &2f00 dd ad 56 24 22 11 51 95 fd fe ff ff cf 49 54 55 &2f10 75 ea ff ef ac 68 96 78 89 44 14 00 00 30 54 87 &2f20 77 68 55 24 43 02 20 71 a9 ca dd fe 9d 59 64 45 &2f30 76 da ff ff ad 68 45 a7 ba cf 8a 04 00 00 41 b6 &2f40 ee ee 9d 68 02 00 10 95 fc ff ff bf 58 22 22 52 &2f50 ea ff ff df 8b 04 00 70 ff ff af 28 00 00 00 b7 &2f60 ff ff ef 08 00 00 30 fa ff ff 9e 04 00 00 b3 ff &2f70 ff ff 6c 02 00 50 b7 fb ff ff 28 22 00 00 b0 8d &2f80 11 74 5a 00 73 fe 6b fa ee 2a f5 ff ff 27 00 00 &2f90 00 d7 ff bf ff 08 00 50 b7 ff ff af 00 00 01 70 &2fa0 fd ff 8f 04 00 00 b5 ff ff cf 04 00 00 43 fb ff &2fb0 cf 68 04 00 60 ab 56 65 47 01 a3 ff ff ff 0d 00 &2fc0 00 00 d1 ff ff ff 0f 00 00 00 f3 ff ef 04 00 00 &2fd0 b0 ff ff ff ed ff 20 30 f6 00 ff ff 04 c3 50 10 &2fe0 fb 9f 5e a7 04 70 e5 bf fd 8f 18 50 25 a5 fb af &2ff0 86 45 14 71 aa 9b 96 6a 34 51 bb ab 8a 6a 12 32 &3000 87 b9 bc 9a 66 73 96 ba ba 9a ff 08 00 00 00 a3 &3010 cb 68 aa 05 00 10 33 a7 bb fc ff 04 00 00 10 fe &3020 cf 06 01 00 70 dd aa 69 12 f7 2e 00 00 00 b0 ff &3030 59 49 00 00 00 00 00 00 00 fb 08 00 44 30 ff ef &3040 9a df 62 fe ff fe ff 9a fb ff ff ff ff ff ff ff &3050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff &3060 ff ff ff ff ff ff ff ff ff ff ff ff ff df 8c 45 &3070 23 22 22 01 00 00 00 00 00 00 00 f2 0f 00 00 00 &3080 70 4f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3090 00 00 00 00 00 20 53 26 00 00 00 10 43 55 95 ba &30a0 00 00 00 70 df 78 56 04 70 ce bc ff bf 8b 00 00 &30b0 f5 ff ff cf 00 50 ff ff ef 28 f2 ff ff ff 7a ba &30c0 fd ff ff ef ab fc ff ff ef bc fc ff ff ff ff ff &30d0 be 89 58 f6 ff ff ff 5d 65 da fd ff ff ff 08 50 &30e0 47 f5 ff 28 75 02 f7 ff 78 48 52 fa af 89 24 52 &30f0 ca bb 6a 14 61 77 77 45 45 76 97 9a 28 00 00 51 &3100 fb ce fd 0e 00 63 56 ff 04 00 14 b1 ae 04 30 20 &3110 fd ff 02 00 10 f7 df 0a 00 10 ea df 28 00 60 eb &3120 9c 05 10 94 cc 8a 04 20 96 aa 58 23 53 a7 9a 48 &3130 22 75 9a 89 56 34 65 88 87 78 b7 8c 24 02 40 d9 &3140 bd fb ff 00 70 ac f7 0f 00 d3 98 ff 04 20 71 fb &3150 ff 0c 00 d1 ff ff 2a 30 da ff ae 15 73 ed fc 6c &3160 54 f7 ee ad 47 74 ba db 6a 30 fd ef 46 00 30 fd &3170 df 38 11 b3 de 8d 56 54 ba 8b 54 fb 8f 02 21 61 &3180 fe 8d 32 22 a5 cc 58 54 76 b9 8b 45 75 98 89 76 &3190 67 77 97 59 55 75 88 89 56 64 9a 78 65 45 85 88 &31a0 77 67 65 97 69 55 54 97 89 67 77 b9 ba 5a 01 70 &31b0 ca cd 8b f9 0f 00 d7 5a ef 04 71 af 64 8a 76 fb &31c0 ff 00 f0 ef f5 0e 00 f7 5f 66 04 b0 ff 28 63 76 &31d0 fb 8d 22 86 d9 cf 25 62 a6 ed 08 f0 ff 00 70 ae &31e0 d9 4f 00 f7 9f 67 05 71 ff 5a 54 97 b9 6a 44 a7 &31f0 aa 9a 8a 22 42 97 ba 68 96 fe 18 00 50 f7 cf fa &3200 ef 00 f3 af 70 28 50 ff 08 60 89 d6 8d 00 c5 8b &3210 87 26 73 bd 24 72 d9 a8 54 64 b7 9a 46 65 97 89 &3220 56 75 99 88 56 76 88 78 76 77 77 88 78 77 88 77 &3230 87 78 77 77 77 88 78 77 87 88 77 77 77 77 87 88 &3240 77 88 77 77 87 aa 68 86 78 a7 9a 56 a7 89 75 8b &3250 67 a7 aa 48 b7 68 75 8a 97 98 9c 88 96 4a 43 a5 &3260 de 9b fd 00 f0 cf 30 ef 66 fb 08 71 8e b5 cf 56 &3270 cb 06 50 bc bb cf fd 00 f3 ef 70 45 03 f7 4f 10 &3280 8f 74 78 11 f7 ff fc 0c 70 ff 08 41 53 f0 8f 40 &3290 f5 58 8b 05 b3 ff 8f 00 f1 ef 00 20 14 ff 08 71 &32a0 8f b6 28 50 ff 0f 00 b6 ab 68 32 fb cf 00 f7 8f &32b0 00 70 fe 8f 00 b2 ae 26 62 fb dd 8f 00 f7 0f 00 &32c0 f5 ef 2d 00 70 ee 4d f7 ff 00 f7 0f b0 1a b5 8f &32d0 00 f7 8f 50 67 d7 8f 00 d7 dd ad 08 60 87 79 8a &32e0 f7 8f 00 ff 0f 20 30 ff 0f 03 30 ff 0f 70 ff 4e &32f0 00 f0 ff 28 0f 30 ff 0c 70 72 f6 cf 70 8f 00 ff &3300 0a d1 0c 70 ef 58 fe 0c 70 ff 32 54 73 8d 02 f7 &3310 cf 72 8f 00 f7 0e 50 14 f3 af 64 cf 00 f7 0f b0 &3320 6a 33 05 f7 cf f2 0f 30 ff 08 a1 4a 43 37 ab af &3330 f8 0c 50 ff 08 00 e7 ff 08 fb 08 f0 8f 30 8d 10 &3340 f5 8e 89 ff 00 f3 8f 50 67 b7 8f 00 b5 ef 58 72 &3350 ff 08 70 5e d7 38 f4 ff 00 f0 cf 30 04 93 c7 47 &3360 36 fd ff 00 a3 6c a9 34 f7 ff 00 f3 8f 30 00 f7 &3370 8f 00 d3 ff 08 70 ff 0c 00 d5 ff 19 f5 cf 00 fb &3380 0e a2 24 f7 0f 00 77 ff 28 b0 ff 04 30 d7 ef 28 &3390 f7 0f 30 ff 08 87 52 fd 0a 70 fc 9f 25 f3 cf 00 &33a0 73 d6 cf 14 ff 0f 30 ff 18 27 70 ff 08 70 df 58 &33b0 30 ea 8f 64 f9 0c 73 45 72 9f 64 fb 0f 30 ff 18 &33c0 47 70 fd 08 51 fb 9c d6 0f 30 cf 04 a7 55 f7 8e &33d0 ff 00 f3 8f 70 8a d7 8f 00 a6 58 a9 98 ff 0f f0 &33e0 ff 00 27 e3 ef 00 f5 8f 24 63 eb 4c 51 b7 8a 56 &33f0 87 aa 89 89 05 50 bb 78 f8 ff 00 ff 0f 90 58 fa &3400 0e 60 dd 58 45 95 df 04 72 9b 78 66 86 89 45 86 &3410 89 77 87 8a 46 22 94 ac 98 ff 00 f7 0f 70 5a db &3420 0e 50 fe 3a 44 95 cd 18 73 ab 78 55 a7 8b 72 a9 &3430 68 99 89 56 34 75 ab 98 ff 00 f3 8f 70 4a ea 4f &3440 30 fb 2a 66 a5 db 14 b7 aa cd 00 f7 2c a6 98 ff &3450 00 f1 8f 30 37 fb 0f 30 fd 4c 44 a5 cd 18 73 ab &3460 89 55 a7 9a 56 96 9a 67 87 98 78 56 eb 9d 00 72 &3470 bd 68 b6 ff 00 f7 0f 70 35 f9 0f 50 f7 8c 36 f7 &3480 cf 00 fd 0f 85 73 fb 0a 71 db 79 45 b7 ad 24 74 &3490 aa 89 65 d9 2c 30 a6 ba 49 d5 8f 00 95 99 8a fa &34a0 cf 10 ff 0e 71 b7 da 04 f7 cf fa 00 f7 0f 50 99 &34b0 bb 0a 70 ee 48 54 b7 8b 34 96 ab 56 65 99 68 64 &34c0 97 79 76 a9 4a 54 55 97 8a b7 ef 00 f7 2f 71 76 &34d0 fd 08 70 fd 4a 32 fa 2c 10 b7 cd 38 f7 0c 97 14 &34e0 f5 5e f6 8f 10 ff 08 c7 b5 ff 08 f0 af 50 38 ff &34f0 0f 30 ff 5d 32 f7 4a 02 a5 cd 58 99 34 76 65 99 &3500 b8 ad 00 b5 49 b4 ff 0f f0 ff 00 46 f7 8c 00 f7 &3510 8e 21 73 bc 08 62 dd 9a 57 00 d7 28 e7 ff 00 f7 &3520 0f 60 66 eb 0a 70 bd 48 44 b7 8a 74 8a 67 66 75 &3530 88 fb 0e 70 ff 14 75 d7 8f 00 f7 8d 75 fd 08 f3 &3540 8f 70 8c bb 08 70 bd 68 97 89 66 65 a8 9b a9 48 &3550 74 89 97 9a bb 08 93 8a 98 88 db 0f 50 ff 2a 97 &3560 b7 8a 32 b7 ab 98 58 74 8a 76 aa ba 49 72 9a 88 &3570 99 cb 08 93 8a 66 f9 8f 00 ff 0c 71 e5 ef 00 e5 &3580 ae 34 74 db 49 73 9a 68 76 a7 8a 77 89 66 76 98 &3590 88 b9 29 73 88 98 78 da 09 a1 8d 54 ba ab 48 31 &35a0 a9 58 f7 ff 00 ff 0f 60 97 ef 08 d2 cf 48 64 db &35b0 6b 53 b9 8b 55 b7 9c 45 95 9a 78 ff 08 f3 8f 70 &35c0 59 fb 0c 70 dd 69 46 d7 6b 23 b7 9c 77 89 55 68 &35d0 75 99 d7 ef 00 ff 0d 91 74 df 04 d2 ce 48 74 bb &35e0 48 73 ba 7a 75 78 77 76 98 9a 89 45 87 88 98 98 &35f0 8b 32 97 88 99 a7 ad 22 a7 58 76 fa 8f 10 ff 0a &3600 83 d4 cf 00 e7 ac 46 63 ed 49 74 99 89 66 a7 9a &3610 68 65 87 78 98 99 8a 34 87 78 98 88 bb 08 a3 8b &3620 66 97 ba 6a 55 65 97 58 b5 ff 0f f0 ef 00 57 f9 &3630 4e 00 d7 8c 35 b5 bf 15 73 99 89 66 ca 28 52 76 &3640 98 68 fb 8f 10 ef 08 85 b6 af 02 a3 ab 58 75 eb &3650 28 51 97 89 67 b7 8c 22 76 98 89 76 db 08 61 88 &3660 77 79 d7 ff 08 f1 8f 50 77 eb 4b 30 a9 8a 56 b5 &3670 ce 05 73 98 89 66 d9 8d 12 86 88 88 76 eb 5c 10 &3680 a7 58 66 f7 ff 00 f7 4f 50 35 fd 0a 70 cd 49 22 &3690 c5 8d 46 b6 8d 34 65 98 79 76 da 4c 50 8a 54 99 &36a0 87 98 fd 0c f0 9f 30 67 e7 8d 53 56 87 46 95 ab &36b0 99 8a 01 95 58 65 b7 ff 0c f0 ef 00 15 f5 8f 00 &36c0 f7 8e 14 71 ff 28 61 ba 8b 44 b7 9b 56 75 99 68 &36d0 76 87 78 76 77 87 99 aa 49 53 77 77 67 97 ba ed &36e0 08 f0 8f 10 55 eb 2a 71 cf 06 50 b9 5a 44 b7 aa &36f0 49 10 a5 69 54 b7 ff 0d 70 ff 08 51 e6 8f 02 b5 &3700 88 68 77 d7 ff ff ff ff 4d 00 00 00 00 f7 ff ff &3710 ff ff ff ff cf ff 08 01 00 00 00 00 00 ff ff ff &3720 08 00 00 00 00 f7 ff ff ff ff ff ff 0f 00 00 00 &3730 00 23 08 00 01 f8 ff ff cf 5e 00 74 ff ff ff ef &3740 00 00 00 10 80 0c 20 00 00 00 00 00 00 f0 ff ff &3750 ff ff ff ff de 05 00 00 00 a8 0d 00 00 00 00 00 &3760 70 77 fe ff ff ff ff ff ff ff ff ff ff ff ff ff &3770 9c ff ff ff ff 08 00 00 00 00 00 00 00 00 10 ff &3780 ff ff ff ff ff ff ff ff 08 00 00 00 00 00 00 10 &3790 fb ef 09 00 00 00 00 00 30 ff ff ff ff ff ff ff &37a0 ff f0 ff ff 8f 03 04 00 00 00 00 00 00 00 00 00 &37b0 00 00 00 f7 ff ff df 0a 00 00 00 f9 ff ff 00 00 &37c0 f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff &37d0 c4 81 07 07 01 00 10 04 00 00 00 00 00 00 00 00 &37e0 00 00 07 01 00 00 f7 08 04 10 ff 0c 00 f0 ff ef &37f0 70 00 ff cf 00 00 ff 8f 00 b5 ff 0e 70 ff af 00 &3800 f3 ce 0c f1 ff 4a 00 f3 c5 00 00 47 0e 00 00 f6 &3810 ff 00 f0 ff 04 00 f7 0f 00 ff 0f 00 fb 0e 00 f0 &3820 0f 00 f0 8f 00 70 0f 05 00 fa 30 40 83 0e 00 5f &3830 00 f2 cd 00 c0 8b 05 03 ff 0f 30 ff 2c 00 f3 0c &3840 70 50 c9 00 71 49 87 0a 20 07 1f 14 70 e0 f4 04 &3850 b0 ff 08 86 7b ff 3c f0 cf 53 8f 8f ff fe da fb &3860 f8 cf bc 8f ff fb f8 fb cf dd ff 9f ff ff cb f5 &3870 ff 09 ff ff bc ff ff ff ff ff a3 cf 8f ef ff 6a &3880 f6 cf cd af 16 77 bf ea e8 fe ff ff bc fe cc cb &3890 fb 9f 74 ac fe 58 87 00 e7 1a a3 ff 08 f5 8e f2 &38a0 ff 08 e1 df 2e ff ff 00 70 8f 06 f6 7e 00 f7 af &38b0 b9 ff 0a f0 ff e9 ff 4f 00 f7 28 30 ff 0b 00 fb &38c0 8f 74 ff 0c 70 ff 6a db fe 8f 00 70 02 00 f5 0f &38d0 00 a7 00 f0 f0 e0 03 cf 0f 1b 7f 38 70 00 00 40 &38e0 02 b0 af 00 b0 0e 00 b0 cf 00 f3 08 00 00 8c 00 &38f0 b1 8f 00 fb 0c 00 cb 00 00 44 00 78 07 ff 00 c0 &3900 08 00 f0 08 00 8d 01 30 51 fe 58 00 f0 0a 00 00 &3910 00 00 00 00 70 4f 70 1f fc 33 f8 fc 70 ff 0f 00 &3920 f1 08 00 ff 0f 10 ff 0f 00 8b 00 00 f8 00 f0 ff &3930 08 70 8f 22 f7 ff cf ff ff 00 f1 0f 00 10 fc 00 &3940 f0 ff 78 f3 cf f3 ff fd ff 0f 30 ff ff 0c 70 ff &3950 00 00 f3 cc 00 f0 ff 07 f0 ff 8f fd ff ff 5a f5 &3960 df 08 f0 ff 00 00 75 0d 00 f7 0e 30 ff fb ff 0f &3970 70 ff 0f 00 f7 0c 00 f3 8f 00 ff ff ff ff ff ec &3980 07 e4 00 00 00 00 00 f0 ff 30 fe ff c8 ff ff 7b &3990 f5 ff ff f0 f0 f0 e0 31 f0 ff 00 93 df 00 60 ff &39a0 8f 0f 00 00 b0 00 73 87 8f 0f 77 ff 0f 30 ff 8f &39b0 00 ff 8f 00 f0 ff 00 f0 8f 00 30 ef 00 00 ff 0b &39c0 c7 ff 8f 0f f0 ff 08 10 ff 08 00 f7 0c 00 f3 8f &39d0 00 b1 ef ed 00 70 9b 08 b0 ff 0b f0 ff 08 00 f7 &39e0 0f 70 ff 0f 00 70 0f 34 f3 f8 fc f0 fc ff 51 c5 &39f0 cf 37 33 88 7c bb fd ff 0c 00 ff 2f 00 ff 0a 00 &3a00 f0 4b 00 b0 0a 30 e6 ff ff ee ff 8f 00 f3 fc 00 &3a10 b0 fe 00 40 ff 09 00 fd 9f 02 f7 ff 0f 00 ff 0e &3a20 00 f3 0f 00 f0 cf 00 70 fc fc 5a f1 cf 40 f3 ff &3a30 00 a0 ff 0a 00 ff 0f 00 f3 0f 00 f7 ff 02 90 ef &3a40 01 74 fb ae 03 00 fb 08 70 fd 0e 00 ff ff 00 f0 &3a50 ff 00 30 ff 0f 00 fe 78 f0 f7 ef 40 f5 ff 6b b5 &3a60 ff af 77 fb 9f 48 d9 ef 5a 74 aa 48 42 96 67 54 &3a70 b7 bc 89 b9 dd dc ef ff e0 00 70 ff 0f 00 f7 08 &3a80 00 f7 8f 00 ff ff 02 f7 cf 00 70 ff 0e 70 f0 1f &3a90 40 f7 07 00 73 8b 04 73 df 4c 73 db 8c 44 d7 8d &3aa0 24 a5 ac 35 51 56 04 20 65 56 f7 ff 0f 00 87 00 &3ab0 00 f0 ee 30 f0 1f 08 ff ff 00 f0 0f 00 f0 ff 00 &3ac0 70 cf 04 30 ff 2e 21 fc 83 3f 80 ff 1f 80 fe 37 &3ad0 00 a4 7a 11 82 cc ff ff 00 00 f2 40 30 f7 8f 01 &3ae0 ff 1f 00 ff 8c 00 f0 ff 00 00 ff af 30 ff ef 01 &3af0 f7 0f 00 70 ec 03 7a 0f 00 ff 8f 7c d0 ff 3b 80 &3b00 ff 2d 20 fe 8f 00 f7 8f 00 70 ff 0f 00 70 ff 00 &3b10 70 ff 00 70 ff 08 10 ff ef 74 ff cf 00 20 ff 00 &3b20 30 fb 08 70 ff 04 c5 ff ef 5a ff ff 98 ff 08 00 &3b30 00 00 00 a1 ab 25 67 06 00 00 f5 ff ac 60 f3 ff &3b40 8e 77 ff cf 00 d0 4e 00 b0 ff 88 01 ff ff 00 f0 &3b50 ff 00 70 ff 0f 00 f7 8f 00 f7 ff 08 f0 ff e8 70 &3b60 f8 df 0e 00 50 30 b7 ff ff ff bf 3c 04 00 a2 ff &3b70 ff 0f 00 f3 8f 00 70 ff 9f 30 ff cf 0f 72 ff 8f &3b80 00 fb 8f 00 70 ff 08 00 f7 ff ff ff ff 1a 00 b3 &3b90 8f 00 f7 8f 00 00 00 50 f3 ff ff 8f 03 84 04 ff &3ba0 ff ef 0f 57 4e 06 10 e9 ff dc fe ff fd ff ad 06 &3bb0 07 06 02 00 00 25 ba ff ff ff fe ff fd ff ff 09 &3bc0 00 00 00 00 10 ff ff ff ff 0e 00 00 e0 ff ef 17 &3bd0 c0 ff 4d 00 b0 ff af 65 fb ff 8e e7 ff ff af 04 &3be0 00 00 00 00 d5 ff ff ff ff 09 00 00 00 00 00 a0 &3bf0 ff ff 8f a1 ff ff 0a 72 ff ff 4c b5 ee 08 00 30 &3c00 87 02 40 da 5a 31 f7 ff ff ff ff cf 00 00 00 00 &3c10 00 b0 ff 18 f7 ff ff ff ff 1c 00 f0 ff 20 00 a0 &3c20 cc 47 21 b7 ad 48 56 db ef 2a 14 97 8f 0f 07 00 &3c30 00 06 14 ff ff 7f 00 f5 ff 0c 00 40 02 00 00 00 &3c40 00 ff ff ff ff ff ff 28 a3 fd 8e 00 10 e7 ef 04 &3c50 50 89 04 00 10 98 8a 9a dc bb aa ca 5c 00 00 00 &3c60 11 46 44 e3 ff ff cf 9b ff ff 4d 00 73 ab 48 22 &3c70 55 fa c8 00 20 33 01 11 73 a7 ab 89 b9 dd 9c ef &3c80 07 0f 0e 3f fe ff 0c 00 30 73 00 00 00 00 40 f7 &3c90 ff 8f 07 f7 ff ef 30 f0 fe 08 00 30 9b 08 b1 ff &3ca0 4f 00 00 c5 c8 01 51 cc bf 07 51 ff 7f 00 30 fb &3cb0 ff 09 40 8b 00 00 00 02 00 f4 ff 87 ff ff bf 68 &3cc0 dc 8e 03 20 44 24 00 ba bb fc fc e8 c3 fb ff 14 &3cd0 70 8d 03 00 00 00 10 33 d7 ff ef ff ab ff bf 59 &3ce0 68 bb 9c 56 40 72 a5 33 31 a7 8a 02 30 b7 28 00 &3cf0 00 60 ed 8f bb fd ff 8c 24 75 67 02 00 02 34 02 &3d00 52 74 a8 99 75 97 9a 69 66 87 68 45 54 55 24 00 &3d10 20 43 34 74 ff 0f 30 ff 8f 00 00 50 40 30 d7 0f &3d20 ff 7f c8 ee fa 77 11 00 40 a7 bb 77 66 a8 cc bc &3d30 99 77 88 f8 a7 89 29 57 24 00 00 13 24 12 00 00 &3d40 f1 ff df a5 ff ff 0d 40 f3 8b 00 00 e9 7f 00 70 &3d50 fe af 34 b5 ff 8c 54 ea df 6d 17 76 f8 79 60 b7 &3d60 55 02 22 77 9a 58 76 ca ce ab a9 bb 9a 9b ff 8f &3d70 02 00 11 70 f7 cb 3a 00 70 a8 b8 40 b4 d9 ff 5a &3d80 93 fe ae bb bb cf 5b 15 02 25 03 10 42 c8 aa 44 &3d90 96 cd 88 7b f7 bf 5c 76 fe 44 00 10 01 00 73 ef &3da0 8e 24 b1 ef 4a 64 a9 26 00 f0 ff 8f 01 53 5c 02 &3db0 00 96 59 22 73 da ab a8 da cc 89 77 f9 bb b9 09 &3dc0 00 80 8f 08 00 c7 7b 15 b7 df 55 72 fb cf a9 e9 &3dd0 cf 08 11 00 10 31 86 b7 eb ee ff ff cf 48 54 77 &3de0 56 74 a7 79 33 52 22 21 77 87 a8 bb aa ac 89 66 &3df0 b7 ff ff 5d 01 84 37 00 00 34 45 76 99 ab cb ed &3e00 ee ee de cd dc 9c 68 87 ca 8a 46 11 00 31 75 fa &3e10 ff ff ef ce 68 a8 88 aa 98 dc ca ee 8c 25 20 31 &3e20 20 75 a7 dd bb cc bd 67 a8 88 88 88 a9 ab 88 99 &3e30 58 56 77 a8 db ed ff ff ff df 89 47 42 97 d9 bc &3e40 ed ad 7a 54 98 8c b9 fe ff df ed ff ff ab ec ad &3e50 ab 77 99 aa 6a 66 35 36 3a b9 fd fd ff ff cc 7b &3e60 61 15 72 97 dc 88 b9 9b 05 00 00 18 a5 ff ff ff &3e70 ff 8e 05 00 33 62 a7 ff 8d a9 cb 5a 00 03 0a 27 &3e80 f7 ff ff ff ff 28 00 30 01 72 fd ce b8 fd 8e 02 &3e90 00 83 41 f5 ff ff ff ff ff 02 00 00 74 d7 fb ff &3ea0 ff ff 0a 00 00 10 74 ff ff ff ff 8f 00 00 00 40 &3eb0 f7 ff ff ff 4f 00 00 00 01 47 ff ff ff ff cf 08 &3ec0 00 00 00 b0 fe df be cc 45 00 00 10 70 b4 ff ff &3ed0 ff ff 8f 00 00 00 00 d3 ed 5a 78 4a 02 00 00 00 &3ee0 70 fc ff ff ff ff 8e 00 00 00 20 e7 ff ff 7c 17 &3ef0 04 00 00 00 34 df ff ff ff ff cf 00 00 00 00 f3 &3f00 ff ce 78 16 41 07 00 00 51 bf ff ff ff ff ff 08 &3f10 00 00 00 30 fd ff ab 58 33 b9 0c 00 00 70 fd ff &3f20 ff ff ff ef 00 00 00 00 20 ff ff fb fd 9f 5a 0b &3f30 00 00 10 fb ff ff ff ff ff 04 00 00 00 f1 ef ff &3f40 0b 00 00 80 cf 00 00 d0 fb ff ff ff ff ff 0f 00 &3f50 00 00 a0 8f 04 00 00 00 f0 ff 8f 00 30 d7 ff ff &3f60 ff ff ff ef 00 00 00 00 00 00 00 00 00 20 ff bf &3f70 d4 ff ff ff ff ff ff ff 2f 00 00 00 00 00 00 00 &3f80 00 00 a5 0c 00 f3 ff ff ff ff ff ff ff 8f 00 00 &3f90 00 00 00 00 00 70 ff ff ff 08 00 00 b3 ff ff ff &3fa0 ff ff 0e 00 00 00 00 00 00 00 00 10 ff ff cf 04 &3fb0 30 12 b5 ff ff ff ff cf 00 00 00 00 00 00 00 00 &3fc0 20 fd ff ff ef 00 00 00 00 fb ff ff ff ff 00 00 &3fd0 00 00 00 00 00 00 00 f0 ff ff ff 8f 00 00 00 10 &3fe0 ff ff ff ff 0f 00 00 00 00 20 00 00 00 73 ff ff &3ff0 ff ff 0f 00 00 00 30 ff ff ff ff ef 00 00 00 00 &4000 00 00 10 42 00 f7 ff ff ff ff cf 00 00 00 00 f5 &4010 ff ff ff ff 02 00 00 00 00 00 60 18 33 fd ff ff &4020 ff ff ff 0e 00 00 00 f0 ff ff ff ff ff 48 00 00 &4030 00 00 a0 74 ac 8f eb ff ff ff ff ff ef 00 00 00 &4040 00 ff ff ff ff ff 8f 00 00 00 00 a6 16 b7 08 b0 &4050 fe fe ff ff ff ff ef 08 00 00 00 e7 ff ff ff ff &4060 df 04 00 00 00 06 02 a5 22 70 8c fe ff ff ff ff &4070 ff 0e 00 00 00 10 ef ff ff ff ff 0c 00 00 00 20 &4080 00 02 00 00 00 f1 ff ff ff ff ff 8f 04 00 00 00 &4090 00 f0 ff ff ff ff ff 00 00 00 00 00 00 00 00 00 &40a0 00 e5 fc ff ff ff ff 78 00 00 00 00 00 00 f0 b8 &40b0 ff ff ff 8f 00 00 00 00 00 00 00 00 00 00 60 fa &40c0 ff ff ff ff 2a 00 00 00 00 00 00 30 bd ff ff ff &40d0 ff 08 02 00 00 00 00 00 00 00 00 10 f5 ff ff ff &40e0 ff ff cf 48 01 10 00 00 20 50 fa ff ff ff ff ff &40f0 79 25 52 57 75 57 22 02 00 00 20 95 fb ff ff ff &4100 ff ff 6c 01 00 00 00 00 00 10 73 b9 ff ff ff cf &4110 58 14 11 23 22 01 00 00 00 00 00 30 74 fb ff ff &4120 ff ff cf 48 12 10 01 00 00 00 00 31 a7 fa ff ff &4130 ff af 9a 66 77 56 45 23 22 11 10 22 54 b9 fd ff &4140 ff ff ff ff cf aa 89 89 8a 78 56 14 20 23 53 b9 &4150 fb ff ff ff ff cf aa 9a 88 68 45 34 12 10 21 43 &4160 96 eb ff ff ff ff ff ac 78 88 77 89 78 57 54 24 &4170 01 00 40 10 72 8b fd ff ff ff de af a9 8a 55 46 &4180 01 00 00 00 10 63 a9 fd ff ff df 8b 57 66 65 67 &4190 66 66 65 55 23 44 02 00 00 20 61 58 dd ef ff cc &41a0 bd 8a cb bb bb 78 56 13 23 21 32 65 a7 db fe ee &41b0 bd 8a 88 77 97 78 78 56 33 02 00 00 11 52 97 da &41c0 fe ff df bc 9a 77 67 35 13 00 00 00 10 74 b7 ff &41d0 ff ff cf 6a 23 12 21 65 86 aa a9 aa 8a 89 77 65 &41e0 25 23 00 25 32 c7 b8 ff ef ff ac dd ba ef aa 8d &41f0 43 24 00 00 00 41 72 db fd ff ff cf 78 47 54 66 &4200 95 ab ba 9b 78 68 44 44 00 50 02 75 89 fa ff ff &4210 af cb 9a d9 8a 9a 18 23 00 00 00 20 63 fa ff ff &4220 ff df 8a 45 54 56 a6 ab da bd 99 89 77 34 14 00 &4230 60 10 a4 8d ff ff fe 9d 9d 6a cb a8 67 00 02 00 &4240 00 00 22 83 ff ff ff ff 6c 24 01 30 22 75 88 bb &4250 8a 67 34 12 00 00 00 03 30 c7 f8 ff ff cf b7 9a &4260 a5 6c 67 05 00 00 00 00 51 a7 ff ff ff ff af 24 &4270 02 00 33 74 cb fc cf aa 49 43 03 01 00 00 02 63 &4280 eb fb ff ff af bb 88 b5 8a 79 04 00 00 00 00 73 &4290 fa ff ff ff ff 8d 00 00 00 21 94 bb ff ce ab 25 &42a0 43 02 12 00 00 11 51 f8 fe ff ff ff ca 88 75 6a &42b0 67 04 00 00 00 00 52 fa ff ff ff ef 5c 00 00 00 &42c0 40 a6 fd ff ef 9a 26 00 00 00 00 00 00 00 74 df &42d0 ff ff ff bf 9d 59 a7 65 34 00 00 00 00 00 d7 ff &42e0 ff ff ff 6d 00 00 00 30 b6 ff ff ef ac 48 23 24 &42f0 42 66 65 12 00 00 00 d7 ee ff ff ff de 8e 56 25 &4300 20 00 00 00 00 00 a2 ff ff ff ff 8f 00 00 00 10 &4310 a5 ff ff ff ef 69 34 10 33 63 89 27 02 00 10 30 &4320 fb fe ff ff ef aa 14 10 00 11 00 00 00 00 00 72 &4330 ff ff ff ff 2a 00 00 00 50 ea ff ff ff cf 5a 24 &4340 42 54 65 46 46 00 00 10 30 f7 ff ff ff ef 89 03 &4350 00 00 10 00 00 00 00 00 50 fb ff ff ff 9f 02 00 &4360 00 50 f7 ff ff ff ef 8c 44 32 42 77 57 68 14 00 &4370 00 01 70 ff ff ff ff cf 69 02 20 00 33 10 03 00 &4380 00 10 b4 ff ff ff ff 1c 00 00 00 30 f9 ff ff ff &4390 af 78 24 52 99 bb bc 8a 06 00 00 02 f3 ff ff ff &43a0 ff 4a 05 00 01 20 00 00 00 00 00 30 f7 ff ff ff &43b0 af 00 00 00 00 f3 ff ff ff ff 89 68 72 59 e9 9d &43c0 bd 38 04 00 00 00 b0 ff ff ff ff 2d 04 00 00 10 &43d0 10 00 00 00 00 00 f6 ff ff ff cf 00 00 00 20 f7 &43e0 ff ff ff ff 8c 21 33 86 db ef de 46 00 00 00 00 &43f0 fd ff ff ff ff 48 00 00 00 00 00 00 00 00 10 b7 &4400 ff ff ff ff 2c 00 00 00 40 f7 ff ff ff bf 48 01 &4410 10 60 c9 ed dd 5a 25 00 00 10 30 ff ff ff ff 9f &4420 05 00 00 00 00 00 00 00 00 00 73 ff ff ff ff 4f &4430 00 00 00 00 f7 ff ff ff cf 4a 00 00 40 b8 fd fd &4440 df 58 04 00 00 01 f3 ff ff ff ff 8e 05 00 00 00 &4450 00 31 21 00 00 52 d7 ff ff ff ff 8e 00 00 00 00 &4460 b5 ff ff ff cf 28 00 00 12 75 c8 bc 99 6a 44 25 &4470 00 00 80 70 ff ff ff ff ac 78 12 25 63 55 32 02 &4480 00 00 20 92 ee ff ff ff ff 6d 00 00 00 21 d7 ff &4490 ff ff ac 56 12 11 52 99 eb fc bd 8a 46 33 23 02 &44a0 00 a1 d0 ff ff df de 78 54 56 b9 dc dc 78 05 01 &44b0 00 40 32 89 db ff ff ff ef 8c 47 22 33 75 89 cb &44c0 dd ab 89 45 25 63 76 99 9a aa 88 57 46 a6 b8 ac &44d0 8b 58 00 47 b0 db ff df de 99 66 34 8a d9 dc aa &44e0 28 04 01 31 53 87 a9 9a 98 77 a8 ba dc ac 8b 76 &44f0 54 64 45 77 77 97 76 68 77 69 88 75 47 65 56 99 &4500 b7 bd cb 8a 04 70 30 b9 ef ff fe ad 68 47 64 99 &4510 db cd 9a 57 25 33 54 75 97 9a a9 9a 99 98 98 78 &4520 99 86 6a a7 78 68 78 88 a9 98 58 45 52 65 75 aa &4530 db cb 89 15 00 0d d5 fd fd af 8f 47 63 72 7a be &4540 ad 97 34 04 13 53 94 96 79 6b 97 76 65 56 89 97 &4550 86 44 55 75 cb fb bc 6a 44 11 21 34 72 45 93 d8 &4560 b9 be a9 59 00 0f f3 ff ff 8f 57 01 71 75 9e 8a &4570 26 10 00 53 97 db 99 78 55 56 87 9a aa 6a 86 55 &4580 75 ba d9 db 8c 34 00 00 61 b9 ef 94 30 bb be af &4590 04 00 f0 f8 ff ff 8f 00 10 b5 df aa 06 20 20 a7 &45a0 9b 8a 27 45 73 e9 99 ae 75 8b 73 af 70 4e 71 48 &45b0 70 71 50 ff df 8c 00 30 cb ff af 01 00 70 ff ff &45c0 8f 00 10 f5 ff 4a 00 30 f9 cf 29 20 63 b9 aa 58 &45d0 54 4a 87 87 48 75 5a 89 56 77 65 a5 7a a8 54 47 &45e0 70 a9 74 8c 6b 46 00 45 10 ff af c9 02 f7 8f 56 &45f0 74 a9 a8 9f 05 73 97 8a 36 50 98 68 89 14 73 1a &4600 72 ff 5c 40 a5 8d 45 53 b3 58 46 87 b7 79 55 87 &4610 8b 54 56 00 f0 ff 0a 67 45 e7 ae 54 66 54 67 01 &4620 70 ff 0a 75 ab db 8a 74 7a 02 73 48 53 89 a6 97 &4630 b7 a9 9a 98 9a 9b 77 d9 8f 35 ba 46 75 74 54 24 &4640 4f 48 8b 89 f2 e9 78 ea 8d 35 a7 89 42 d9 18 72 &4650 9d 58 bb 8a 77 76 47 57 8a f2 0c 70 ef 04 fa 6f &4660 13 87 28 71 8a 24 d4 4f 30 ff 48 e9 8c 65 a8 7a &4670 86 89 58 44 86 8a 16 b7 08 b1 cb f4 bb 61 99 58 &4680 97 9a 9a 8a 67 78 86 58 35 b4 59 74 78 38 37 bb &4690 23 bb e5 48 f1 4f 70 bf 11 b7 38 74 46 44 99 66 &46a0 a9 58 ee 88 ba 87 7a 87 79 87 79 65 88 66 77 76 &46b0 f8 4b e8 03 a2 73 16 d7 0c f0 8f f0 bf 70 73 44 &46c0 41 88 77 88 68 97 8a 57 88 77 87 78 87 79 87 88 &46d0 77 88 77 88 78 87 88 88 88 88 88 88 88 88 78 87 &46e0 78 78 77 f8 37 c0 7f 04 72 97 20 ff 02 fe 0b f4 &46f0 3f 80 bf 44 eb 48 b6 6b 75 8a 65 97 57 86 57 75 &4700 8a 66 97 66 b8 8b 78 53 18 b5 1d 30 73 77 9a 78 &4710 a7 68 95 8a 75 89 56 97 68 86 68 76 88 66 87 67 &4720 77 77 77 78 77 b9 68 a7 8b 4a 37 86 58 76 08 3f &4730 88 7f 88 ba 89 a9 8b 88 9b 68 99 89 87 89 77 89 &4740 77 88 88 d8 8f a1 8f 10 ab 10 47 0f 5f ac 1b e8 &4750 3f c8 7f 83 bc 67 98 77 88 78 77 76 87 66 77 77 &4760 87 78 96 77 a8 d8 04 f7 1a b4 bf 9f 48 a5 02 70 &4770 37 a3 6a b9 89 8f 75 fd 24 d9 58 d9 28 d6 8b 98 &4780 69 97 48 73 04 50 15 72 35 96 77 84 ba 68 bb 89 &4790 bc 89 8a 87 a9 99 bb aa aa 99 8a 57 65 77 46 9a &47a0 b6 fb 03 fa 09 e5 0f b0 8f 81 ac 71 bb 44 72 25 &47b0 20 02 55 75 c6 df 65 eb 2a f7 28 f4 2f e0 5f 70 &47c0 8f a3 ae 85 9b 43 26 00 33 30 31 54 76 88 a7 7c &47d0 75 8a 88 89 76 77 77 66 99 77 98 8a 8a 86 97 56 &47e0 55 77 84 79 c7 6c ff 04 f7 08 f6 08 00 30 88 31 &47f0 0c f0 0f 70 08 70 88 70 8f 74 bf b8 ef ba ae f8 &4800 bd fd 05 a5 04 e5 9d b9 4b 64 26 21 10 55 00 44 &4810 3f e0 2f 30 cf 40 ff 48 fd 5a b7 3f 40 3f 40 fb &4820 58 f8 49 da 02 57 42 53 7a 98 49 ba 8f 32 f4 0b &4830 fc 8c 75 8e b3 8f 31 86 03 84 01 e3 04 74 47 db &4840 8c a7 06 e3 0f f0 0f f0 8f 73 ff 76 ff 01 ff 08 &4850 c7 0c 3c 00 93 88 64 9e 73 0a 93 9f 90 9f 40 9f &4860 02 77 58 95 be a9 bd 77 88 57 44 77 76 77 79 44 &4870 ba 88 bb af e9 bb ef 6a 87 28 63 44 54 14 73 88 &4880 86 48 30 26 00 70 77 dc fd ef dd ab 7a b8 ce 68 &4890 db 89 78 65 77 a9 bb bb ab 88 48 54 77 56 65 32 &48a0 b2 07 a1 05 84 0c e2 0f 50 f7 00 81 5a e4 ef d9 &48b0 0e 7f c0 9f 88 df 6a a7 8c 75 8a 65 ba ba 9a 25 &48c0 54 02 65 04 37 40 bb 98 fb 8e 72 88 35 82 6a 75 &48d0 aa 65 96 78 a5 bd 88 b9 68 fb 8f fa af 75 cd 15 &48e0 a5 58 75 69 d7 8c 54 75 53 78 53 a9 8a 66 ec 48 &48f0 d8 2a 60 4a 72 33 11 00 00 e2 8e ff 9f bd 9d 85 &4900 bb 9a b9 b8 89 77 99 b8 df 9a bb 4a 76 46 53 34 &4910 32 46 42 35 34 96 55 73 8b ba ff fb cf 00 a6 00 &4920 f7 ef fd 8d 12 22 33 42 68 74 55 7a a8 ba 8b ca &4930 9c a8 bb 88 55 8c 32 86 16 61 aa 51 57 20 93 fb &4940 07 f7 8f 10 0a 00 e1 7b ff 8f 98 04 00 ba b7 ef &4950 5a 33 33 85 fa ff 5e 78 66 67 87 35 47 b2 cf 00 &4960 f7 08 f1 5f 71 af 00 f7 0e f0 8f 10 ff 02 e3 08 &4970 50 8f 74 ff af fb bf ad 09 20 67 b6 dd fb cd 68 &4980 55 03 20 24 32 14 61 4b 58 f9 8b 9b bd 88 a9 89 &4990 c7 4f 50 6d 42 96 56 42 02 10 97 db ff df ca 9b &49a0 66 a8 68 c9 ef 5a fd af eb 9c 52 24 20 43 22 64 &49b0 14 34 44 76 87 66 99 5a 76 89 76 b5 7a 76 a8 55 &49c0 a8 66 8a 66 a4 56 44 32 77 bc ff cf a9 9b 76 77 &49d0 a7 bb aa a9 57 e8 ff 00 f5 04 70 0e 20 7d 20 97 &49e0 48 d7 1d 70 57 12 a6 38 b6 6a 86 97 8c d9 9a bb &49f0 08 b3 4a 56 6a 15 34 ab 59 9a 8a 97 cb 9a ba 79 &4a00 a7 b9 fd cf 10 ce 00 86 04 20 04 30 57 b5 ef 79 &4a10 ca 58 b7 48 77 89 67 b7 58 b6 8a f7 7a b5 48 74 &4a20 cf 04 f7 0f b0 8f 60 ce 48 d7 5a a5 ab ea 08 20 &4a30 44 73 ff cf ab 08 30 65 97 ba 68 88 c7 ee 8a 96 &4a40 38 75 37 78 77 89 78 95 78 96 79 a7 99 54 b6 07 &4a50 74 ca 26 e9 6a 95 ac 66 c9 8a fd 0f 60 07 00 fe &4a60 be ff 0d 60 04 30 ab 76 bb 48 95 68 96 9b 56 ed &4a70 5a 97 88 99 79 66 67 45 65 67 66 67 07 72 49 46 &4a80 b9 5a 96 9b 66 a9 68 b7 eb ff 00 77 00 00 47 75 &4a90 ff 9b bd 48 33 78 63 8b 78 a7 49 a6 89 77 a8 99 &4aa0 89 88 a7 ab 99 87 59 a6 47 76 45 e0 8b 74 e9 07 &4ab0 d0 8e 62 db 38 95 49 f7 cf 10 c7 00 40 04 d0 ff &4ac0 ea cf 24 52 26 a3 ad 78 ba 59 a5 69 75 87 57 97 &4ad0 79 76 bb ac 68 75 8a 33 aa 24 a5 48 73 88 34 c6 &4ae0 47 a5 8b 74 9a 68 a7 ab fa 8f 30 89 00 f1 4a f5 &4af0 ff 74 cf 04 b1 4c a2 ad 56 b9 48 95 89 76 b9 68 &4b00 c9 ce 78 88 16 93 7d 54 87 48 a5 68 54 95 3a 77 &4b10 a9 58 96 89 66 98 68 96 9a f9 1f 70 2b 00 70 3e &4b20 fb ff 78 47 00 70 6a e7 cf 58 97 26 95 9b 98 fc &4b30 9d b8 89 44 56 46 54 86 57 76 78 75 99 74 da 08 &4b40 77 c9 57 d9 9b a8 dd ba ff 3c 82 04 00 00 70 ff &4b50 ff ff 4a 40 24 72 cb ab aa 58 65 66 76 ea ff ad &4b60 58 34 34 24 24 52 33 77 98 76 8d bc 84 17 64 43 &4b70 87 87 47 64 77 76 86 78 66 89 88 68 46 73 c5 fb &4b80 ff bd 6c 12 44 65 a9 8a 67 45 d7 ff df 8c 02 00 &4b90 20 55 66 67 66 87 67 85 57 69 96 5a 55 dc 56 b7 &4ba0 8a 75 ab 88 77 99 f7 af e4 8e 00 00 40 ff ff ff &4bb0 4c 00 00 a2 ff ff ff 09 00 00 00 41 12 53 46 65 &4bc0 7a 87 9b 68 99 48 75 69 76 48 15 00 d0 ff 04 f7 &4bd0 8f b8 bd 79 86 56 77 45 64 42 56 33 44 41 75 b8 &4be0 ef df bd 9b 88 77 88 78 77 77 fc bf bc 38 02 01 &4bf0 00 53 46 64 48 54 46 54 55 74 89 76 88 78 99 38 &4c00 61 6b 74 a9 f8 4d 22 8b 04 b7 08 a4 0a 10 da 99 &4c10 ff df ba 8b 74 89 53 ff ff ff 0a 00 01 00 12 00 &4c20 42 23 95 89 a8 8a aa 8a 98 88 76 9b 38 42 c4 57 &4c30 85 cf 5a fb 4c b7 4a 54 47 00 53 42 75 98 79 a9 &4c40 8a 78 45 74 ba ec ef 9c 67 45 54 55 76 f8 fe dd &4c50 89 58 42 33 44 43 67 66 77 97 99 44 66 65 55 77 &4c60 99 b8 89 bc b8 88 b4 4c f0 ef 94 ed a7 8c 52 87 &4c70 26 87 07 71 4b 10 77 00 a5 08 f3 9f f9 cf 54 8b &4c80 22 c7 5a b7 5a 74 89 54 ba f9 ff 8c 22 63 22 95 &4c90 46 75 89 55 a9 48 95 9a 44 b7 48 63 f7 28 f5 af &4ca0 64 cb 25 f7 cf 10 df 04 b3 08 d3 8f d7 8f 44 8a &4cb0 13 87 7c a1 2b 74 67 75 99 78 a9 6a 96 99 77 99 &4cc0 a8 ab 8a 78 96 68 75 88 45 86 68 55 6a 57 87 45 &4cd0 b7 88 76 aa 66 b9 fb cf 72 89 00 c3 04 40 02 b4 &4ce0 cf bc 8e 34 66 34 b7 8a a9 6a 65 68 65 87 9a 98 &4cf0 98 87 9a 88 b9 ab b9 79 ba 45 b6 55 74 88 45 72 &4d00 cf 10 f8 1b b3 8c 42 aa 68 b7 bb ff 2d 92 08 00 &4d10 03 30 cb b9 ff 4a b7 36 93 7b 96 ab 78 aa 58 97 &4d20 58 97 8a 97 9a 78 98 79 a7 bc 88 78 98 66 88 67 &4d30 77 57 75 aa 36 a7 48 73 9a 66 a7 69 95 aa bf 08 &4d40 df 08 a1 08 40 07 70 ef bb de 03 75 24 d6 8c a7 &4d50 8b 53 66 55 a7 69 98 88 86 b8 db bc 89 86 76 55 &4d60 65 75 66 77 88 7a 9f 22 8d 02 f7 2e f5 ef bd 8c &4d70 34 35 31 24 01 00 00 c5 fd ff be 68 44 63 b9 ba &4d80 aa 8a 67 77 76 87 99 98 e9 dd dc 88 55 66 65 63 &4d90 56 65 57 76 56 77 88 67 88 78 f7 45 a3 88 80 aa &4da0 76 b7 8a 97 9a 78 f9 48 f2 07 70 cf b9 df 24 45 &4db0 00 95 68 c9 49 63 45 73 aa a9 ab 78 fd bd dd 5a &4dc0 55 27 22 43 24 53 85 77 ab 76 aa a8 bb 98 eb 6a &4dd0 b7 8c 77 8a 25 97 44 75 79 75 76 56 64 a7 ba ec &4de0 bb ba fb 5a 71 26 70 9b 98 8c 34 55 44 a7 89 ff &4df0 9f 9b 28 53 26 42 46 53 56 55 86 66 85 64 57 89 &4e00 65 a7 88 97 ab b8 bf 98 5a 42 56 44 44 54 87 9a &4e10 db be a9 89 76 98 99 aa 79 67 55 a6 fd ff be 48 &4e20 45 14 22 24 42 55 65 67 66 87 45 45 35 77 68 a5 &4e30 59 b5 8b 6a ba 9b da ad 77 ab 56 99 48 55 87 b9 &4e40 dd ab 98 58 75 87 98 99 77 97 78 b8 bb aa 9a 78 &4e50 67 59 9f 00 9b 08 b7 29 b6 59 c7 4a 95 08 71 48 &4e60 72 48 32 47 01 21 21 fb ff ff 8c 76 76 b7 bc aa &4e70 8a 67 67 76 88 88 88 88 ed bd 8c 56 45 54 44 43 &4e80 25 35 66 87 79 79 f7 8e f0 8e b0 fe 28 a5 04 60 &4e90 06 00 20 b7 ff ff 8d 24 52 96 db ad 68 34 53 76 &4ea0 a9 9a 78 56 65 76 a9 9a 88 d7 fd dd 9a 44 44 23 &4eb0 44 54 45 43 95 66 76 99 77 8a 98 aa 46 d9 6b aa &4ec0 7c 96 78 44 46 34 55 56 a9 9b bb ab aa 9a 88 a9 &4ed0 ab 28 87 15 a5 89 b7 59 64 46 74 8a 87 89 56 97 &4ee0 dd bd 8c 66 67 45 64 34 63 46 66 59 76 78 96 99 &4ef0 77 8a 9f 9a 9c 69 86 36 74 26 74 56 53 67 23 74 &4f00 c7 db de ab 58 55 76 88 99 58 55 45 65 87 88 78 &4f10 66 de ce ad 48 65 44 42 44 52 55 64 46 55 47 54 &4f20 a7 78 a7 79 a8 a8 77 98 89 79 88 89 88 67 77 46 &4f30 14 87 18 b5 4c b6 8d 75 bc 78 ca 79 b9 8a 97 9a &4f40 ae 55 57 44 87 77 89 45 65 55 db ad aa 48 b5 43 &4f50 65 64 45 57 77 57 a7 68 97 78 76 77 b8 ff 3a c9 &4f60 18 a7 06 83 26 62 16 61 25 31 46 75 de dc df 88 &4f70 89 76 a9 99 9a 68 66 66 97 89 eb cf cb 59 64 45 &4f80 53 34 43 55 54 72 77 97 9a 76 a8 47 b8 48 97 8a &4f90 77 aa 68 a9 58 77 04 e1 4b 73 cd 45 db 38 c7 6a &4fa0 b7 8c b7 df 00 9b 00 f7 38 fa 08 93 06 a3 4a 97 &4fb0 7a 74 69 96 ea aa ba 88 65 78 75 67 66 67 86 67 &4fc0 77 97 97 89 78 88 75 66 d7 8f 70 8f 70 8f 30 8b &4fd0 10 45 20 43 75 fd cc ad 46 66 75 b9 99 89 66 65 &4fe0 66 98 89 99 68 c7 cb dc 8a 66 56 54 44 53 87 55 &4ff0 99 66 87 88 a7 67 a7 76 a9 56 a9 48 17 8d 42 9f &5000 56 ab 58 a7 58 97 58 86 79 87 ab ba ef 18 87 00 &5010 d5 58 fd 38 66 14 75 58 a7 69 75 68 75 89 87 9d &5020 99 8a 77 88 65 97 44 95 39 a5 59 75 aa 78 d8 cf &5030 64 8a 32 87 44 89 55 46 22 02 10 65 d7 ff de 8a &5040 65 66 97 ab aa 8a 65 55 75 88 98 89 77 77 b7 cd &5050 bb 68 87 44 45 24 85 45 87 87 87 78 65 97 67 97 &5060 87 78 68 97 5a 96 25 d3 59 97 6a 97 8a 77 89 76 &5070 99 98 ba db af 31 2a 30 8b a5 ad 54 57 42 87 66 &5080 9b 66 98 66 97 78 99 89 b9 9a a9 98 77 68 86 47 &5090 96 58 86 89 76 88 97 89 76 68 67 67 77 aa fb 8b &50a0 cb 66 a9 58 46 02 31 54 b9 cb ab 68 55 55 97 99 &50b0 99 68 66 66 87 98 89 88 77 77 77 88 cf bd ab 66 &50c0 75 55 55 44 66 55 66 47 79 66 98 78 8a 76 b8 86 &50d0 87 69 a7 78 87 59 77 58 67 74 88 96 99 77 99 88 &50e0 99 99 a9 99 99 99 7b 43 47 52 89 76 89 55 56 55 &50f0 77 77 78 67 77 a7 aa aa 8a 77 58 66 56 55 66 66 &5100 76 67 86 67 97 88 98 89 77 68 77 78 75 9a d7 af &5110 95 2e 70 08 60 26 93 69 c7 8c a9 69 97 68 a7 79 &5120 98 68 87 78 98 89 99 a8 ba bb ab 78 67 55 56 54 &5130 66 66 87 66 67 77 67 89 67 97 89 97 aa 87 89 98 &5140 78 a7 68 a7 58 97 57 67 74 88 97 99 99 99 99 99 &5150 88 88 88 87 88 88 88 88 88 8a 55 67 54 87 76 89 &5160 76 67 66 77 97 aa 99 8a 77 67 76 65 76 66 8a 56 &5170 79 56 88 56 86 58 b7 68 a7 77 a9 78 87 77 67 76 &5180 67 55 55 64 87 b9 bc bb 9a 88 78 77 78 66 67 77 &5190 77 77 88 87 89 a8 89 87 67 77 66 76 66 87 69 97 &51a0 7a a9 88 86 89 97 89 86 8a 67 7a 78 87 97 67 8a &51b0 76 88 57 97 47 77 8a 68 8a 66 98 78 99 88 f9 5c &51c0 d4 28 93 38 b7 5a a7 46 75 55 97 97 bb 99 8a 66 &51d0 66 65 66 65 56 66 75 77 77 78 77 78 77 78 98 a9 &51e0 9a 97 8a a7 6a a7 58 86 45 55 44 66 76 99 a9 aa &51f0 aa 9a 88 67 66 66 66 77 88 99 89 89 88 88 78 66 &5200 76 66 77 76 66 66 67 66 66 77 78 98 89 a9 9a a9 &5210 89 99 78 7a 78 78 88 87 89 96 69 97 89 96 89 a6 &5220 69 96 59 76 16 87 77 ed bb cc 78 89 76 99 98 8a &5230 88 88 87 67 86 58 76 76 76 87 97 e9 68 87 42 57 &5240 52 46 74 9a fb bd ab 78 77 76 68 76 67 76 68 86 &5250 66 67 77 68 77 68 97 99 a9 aa aa 9a 89 98 a9 9d &5260 77 6a 76 58 76 56 77 55 56 54 55 54 55 76 99 ba &5270 bb bb 9a 89 98 78 77 56 57 65 66 75 67 66 56 55 &5280 56 76 98 ba bb ab aa 89 89 88 88 77 67 66 66 66 &5290 66 67 67 67 76 66 67 76 76 77 77 87 88 99 aa aa &52a0 9a 99 88 88 78 77 67 66 77 76 77 76 66 57 77 65 &52b0 75 75 b9 db cd ab 89 77 77 87 87 67 67 67 59 65 &52c0 47 67 58 77 66 78 76 68 8e b7 48 75 54 66 75 9a &52d0 da ab 9a 67 67 76 77 87 67 67 66 56 65 66 76 75 &52e0 57 66 67 77 76 77 76 77 97 99 aa 9a 99 78 78 76 &52f0 67 77 66 77 67 77 77 78 77 4d a6 58 97 64 57 64 &5300 36 75 76 ba ca ac aa 68 66 65 77 98 99 99 88 78 &5310 77 77 67 56 55 55 66 77 77 66 66 66 65 66 76 98 &5320 ba bb ab 99 88 88 78 88 77 67 66 76 66 66 66 77 &5330 66 67 77 67 77 66 66 86 88 a9 aa aa 99 88 88 77 &5340 77 77 67 77 66 76 76 66 75 58 67 57 76 66 67 66 &5350 75 76 98 a9 ab aa 89 78 76 76 76 77 76 67 76 68 &5360 77 57 65 57 67 58 78 57 5a 96 68 96 76 87 75 88 &5370 86 88 97 98 99 a9 af bb 58 67 75 78 77 68 77 67 &5380 77 77 77 76 76 87 77 77 88 88 88 87 88 88 88 88 &5390 88 88 88 89 98 98 89 98 89 98 88 88 88 88 77 88 &53a0 77 78 77 77 77 77 77 77 77 77 77 67 66 66 56 55 &53b0 55 76 a7 bb ba 8a 77 56 66 76 88 88 88 87 67 77 &53c0 76 66 66 56 55 55 67 66 67 76 57 76 77 77 77 77 &53d0 88 89 89 89 99 89 89 88 78 78 68 77 77 77 77 77 &53e0 78 76 68 76 76 76 67 77 76 87 77 78 76 79 76 68 &53f0 77 68 87 78 99 88 9a 98 88 87 78 87 68 87 77 97 &5400 76 87 76 88 76 78 87 67 77 78 95 68 96 59 98 78 &5410 89 77 69 77 68 56 65 75 98 ba cb bc 8a 68 66 76 &5420 87 98 99 89 78 77 77 77 87 88 88 88 77 77 87 88 &5430 88 88 88 88 78 87 98 a9 99 99 78 77 77 77 67 66 &5440 65 56 56 66 76 66 77 76 77 67 77 56 46 65 87 ba &5450 db cc 9a 68 66 66 77 98 99 89 78 66 66 76 77 88 &5460 88 88 77 77 77 87 88 88 88 88 88 87 99 a9 aa aa &5470 89 78 77 77 77 67 66 66 66 66 77 77 77 77 77 78 &5480 77 67 45 67 97 cb db cd aa 68 66 66 87 98 9a 89 &5490 68 66 56 76 77 88 88 88 77 67 77 77 88 88 88 77 &54a0 77 88 99 aa 9a 89 67 77 77 77 66 66 65 66 66 67 &54b0 76 67 77 77 67 67 56 94 95 d9 db dd aa 69 66 66 &54c0 87 98 9a 89 78 66 66 76 77 88 88 78 77 77 77 87 &54d0 88 88 88 77 77 77 8a aa 9a 8a 68 67 76 77 66 56 &54e0 65 55 65 66 77 77 77 76 67 67 56 74 76 d9 cb ce &54f0 aa 69 66 66 97 98 aa 89 78 66 66 77 87 88 88 78 &5500 77 77 77 88 88 88 78 77 77 77 77 98 99 aa 99 88 &5510 77 77 77 67 66 66 65 66 77 66 77 76 77 78 78 77 &5520 67 56 85 97 cb dc bc 9a 68 66 77 97 99 99 88 77 &5530 66 77 87 88 88 88 77 77 77 87 88 88 88 77 77 77 &5540 87 88 88 78 88 99 99 99 88 77 77 77 67 66 66 66 &5550 66 66 67 87 68 87 67 77 66 77 56 75 78 b9 bb bd &5560 9a 68 65 66 97 99 99 88 67 66 76 87 88 88 78 77 &5570 66 77 87 88 88 88 77 77 77 77 88 88 78 77 77 77 &5580 77 89 99 9a 88 77 77 76 77 67 66 66 77 66 76 76 &5590 68 87 77 88 76 68 66 47 87 99 db cb ab 88 68 76 &55a0 78 99 99 89 78 77 76 77 88 88 88 77 77 77 88 88 &55b0 88 88 78 77 77 88 88 88 88 78 77 87 88 88 88 78 &55c0 88 99 99 88 78 77 77 77 77 77 66 77 66 67 66 77 &55d0 66 78 77 78 77 68 67 65 88 b9 bb bb 8a 88 66 77 &55e0 98 99 99 88 77 67 77 88 88 88 78 77 77 77 88 88 &55f0 88 78 77 77 77 88 88 78 77 77 77 77 88 88 88 77 &5600 77 97 98 99 89 89 77 77 77 77 77 67 66 66 66 76 &5610 66 77 77 77 77 77 67 66 56 74 78 ca bc ac 89 67 &5620 75 87 98 9a 89 67 66 66 87 88 89 78 67 66 77 87 &5630 88 88 78 77 77 77 87 88 88 77 77 77 77 88 88 a8 &5640 a8 aa 89 78 77 77 77 67 66 66 66 66 66 66 77 76 &5650 77 76 77 66 66 55 74 78 da bd cd 79 67 65 77 a8 &5660 9a 89 67 65 65 77 88 89 78 66 66 66 87 88 88 77 &5670 77 76 77 88 88 88 77 77 77 87 99 aa 9a 89 77 77 &5680 77 77 66 66 66 66 66 66 77 77 77 77 67 66 66 45 &5690 33 5a d7 dd ec 8a 67 55 87 a8 ab 99 68 55 55 87 &56a0 98 99 78 66 65 76 97 99 88 78 66 76 77 88 88 78 &56b0 67 66 76 99 aa 9a 89 77 76 76 67 66 56 55 55 56 &56c0 66 66 66 76 76 67 56 45 34 12 5a f9 de ec 6a 66 &56d0 55 97 a9 ab 88 56 55 65 97 99 89 67 56 65 77 98 &56e0 89 78 66 66 77 88 88 88 77 66 77 87 a8 a9 aa 99 &56f0 88 77 77 77 67 66 66 66 66 66 66 77 77 76 67 67 &5700 56 44 23 71 98 fd bd ad 56 56 95 ab ba 8a 66 45 &5710 76 98 aa 88 67 55 66 87 99 89 67 66 76 87 98 88 &5720 77 67 77 77 88 88 78 77 99 a9 9a 89 78 77 77 77 &5730 67 67 76 77 66 66 66 66 66 76 77 77 67 45 44 33 &5740 a7 da ef bb 69 65 77 b9 ab 9a 56 65 76 99 99 79 &5750 66 55 76 98 99 78 67 66 77 88 88 78 67 76 87 88 &5760 88 77 77 77 87 88 88 77 87 98 99 99 88 77 77 77 &5770 77 77 77 77 77 77 66 66 76 67 66 76 77 77 66 45 &5780 33 62 a9 eb cd 89 57 75 a9 bb 9a 68 55 76 98 9a &5790 88 66 65 76 98 89 78 66 76 87 98 88 77 66 77 88 &57a0 88 78 77 76 77 88 88 77 77 77 77 88 78 77 77 77 &57b0 88 88 78 77 77 77 77 77 87 88 98 89 88 78 77 77 &57c0 78 77 77 77 77 77 77 77 77 77 76 77 77 67 76 67 &57d0 76 56 34 52 98 db cd 99 58 76 a9 ba 9a 78 66 86 &57e0 99 9a 78 66 66 87 99 89 78 77 77 98 99 88 77 77 &57f0 87 98 88 78 77 77 88 88 88 78 87 88 88 88 78 77 &5800 88 88 88 88 88 88 88 88 88 78 77 88 88 88 88 88 &5810 88 88 88 88 88 88 88 88 88 78 77 77 88 88 88 77 &5820 88 88 89 88 77 77 77 77 77 77 77 77 77 77 77 77 &5830 77 77 77 77 77 77 77 77 77 77 77 66 66 55 55 97 &5840 ba ab 89 78 87 a9 aa 89 77 77 87 99 88 78 76 77 &5850 87 88 78 77 77 87 88 88 77 77 87 88 88 78 77 77 &5860 87 88 88 77 77 87 88 88 77 77 77 88 88 88 77 77 &5870 87 88 88 78 77 77 88 88 88 77 77 87 88 88 77 77 &5880 77 87 88 88 88 88 77 77 87 77 77 77 77 77 77 77 &5890 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &58a0 77 67 55 55 75 a9 aa 9a 78 77 98 aa 9a 78 66 77 &58b0 98 99 78 67 76 87 88 88 77 77 77 88 88 78 77 77 &58c0 87 88 78 77 77 77 87 88 77 77 77 87 88 77 77 77 &58d0 77 77 77 77 77 77 87 78 77 88 88 88 88 77 77 77 &58e0 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &58f0 77 77 76 77 77 88 77 77 66 56 55 65 97 aa aa 8a &5900 78 88 a9 aa 89 78 76 87 98 89 78 77 77 87 88 88 &5910 77 77 77 88 88 78 77 77 87 88 78 77 77 77 87 78 &5920 77 77 77 77 77 77 77 77 77 87 88 88 88 77 77 77 &5930 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &5940 77 77 77 77 77 77 77 77 77 66 56 55 75 a9 bb ab &5950 89 88 88 a9 aa 89 78 77 87 99 89 78 77 77 88 88 &5960 88 77 77 87 88 88 88 77 77 88 88 88 77 77 77 88 &5970 88 78 77 77 87 88 77 77 77 77 87 88 78 77 88 88 &5980 88 88 78 77 77 77 77 77 77 77 77 77 77 77 77 77 &5990 77 77 87 77 77 77 88 88 77 77 77 77 77 87 88 77 &59a0 77 67 56 55 76 a9 aa aa 89 77 98 aa aa 89 77 77 &59b0 98 99 89 78 77 87 88 89 88 77 77 88 88 88 78 77 &59c0 87 88 88 88 77 77 87 88 88 77 77 77 87 88 77 77 &59d0 77 77 87 78 77 77 77 87 77 77 77 77 77 88 88 88 &59e0 88 88 88 88 88 77 77 77 77 77 77 77 77 77 88 78 &59f0 77 77 77 78 77 77 77 77 87 77 77 77 77 77 87 88 &5a00 77 78 77 66 55 76 87 a9 9a 99 78 87 98 a9 89 88 &5a10 77 77 88 88 88 77 77 77 88 88 77 77 77 88 88 78 &5a20 77 77 87 88 88 77 77 77 88 88 78 77 77 87 88 88 &5a30 88 77 88 88 88 88 88 88 88 88 88 88 88 77 77 77 &5a40 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &5a50 77 77 77 77 77 77 77 77 77 67 56 65 66 97 99 aa &5a60 89 88 88 99 99 89 78 77 87 88 88 77 76 77 87 88 &5a70 78 77 77 87 88 78 77 77 77 87 78 77 77 77 77 77 &5a80 77 77 77 77 77 77 77 77 88 98 88 78 77 77 77 77 &5a90 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &5aa0 77 77 77 77 77 77 77 77 77 76 77 67 67 56 66 66 &5ab0 77 88 99 aa 99 88 88 99 99 99 78 77 87 88 88 78 &5ac0 77 77 87 88 78 77 77 77 88 78 77 77 77 77 77 77 &5ad0 77 77 87 99 89 78 77 77 77 77 66 66 66 77 76 77 &5ae0 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &5af0 77 77 77 77 77 77 77 77 66 66 66 66 66 66 76 97 ; growls_two_sample_data &5b00 99 99 a9 99 99 88 78 77 77 77 77 77 77 67 66 66 &5b10 66 66 66 66 66 66 55 55 75 cb dd cc bc 8a 45 44 &5b20 55 65 97 bb aa 89 77 46 44 65 87 98 a9 aa 89 67 &5b30 66 56 66 87 99 98 88 88 67 66 76 87 98 99 99 89 &5b40 77 56 55 65 76 77 87 88 78 77 67 66 77 77 77 77 &5b50 77 67 66 66 66 66 56 65 76 87 a9 aa aa 9a 78 67 &5b60 66 77 88 99 99 89 78 66 66 66 76 87 98 aa aa 9a &5b70 88 67 66 66 77 88 88 77 66 55 44 44 54 55 65 76 &5b80 67 76 ca ed cd cc ab 58 44 55 66 76 b9 bb 8a 78 &5b90 67 45 54 76 98 99 a9 9a 78 77 98 99 99 a9 89 67 &5ba0 55 55 45 44 54 55 44 54 55 55 76 98 99 aa aa bb &5bb0 bb aa 99 78 66 66 76 77 88 99 88 78 66 66 66 76 &5bc0 87 98 ba cc ab 89 68 45 44 54 55 55 55 55 44 44 &5bd0 55 55 66 66 96 ec ff de cc 9b 46 33 54 76 97 ba &5be0 bc 8a 66 56 45 54 86 a9 9a a9 bb ac 8a 78 78 56 &5bf0 55 65 56 44 44 55 55 55 65 66 55 44 74 eb ff ee &5c00 dd ac 46 22 43 55 76 b9 cd 9a 68 56 45 44 75 99 &5c10 99 aa aa 99 99 89 99 89 88 67 55 34 22 43 55 55 &5c20 65 77 56 45 23 73 fb ee ff df ad 26 21 43 54 76 &5c30 ba dd 9b 78 56 44 44 75 a9 aa aa aa aa 89 77 97 &5c40 aa 89 77 56 24 11 42 55 55 76 77 56 34 31 d7 de &5c50 fd ff de 6b 12 42 44 65 a7 db bd 89 77 56 44 54 &5c60 97 aa aa ba cc ab 89 78 78 56 44 44 44 44 54 55 &5c70 65 56 44 34 22 e7 ff fe ff cd 6b 02 42 55 75 a9 &5c80 db bd 69 66 55 44 54 97 aa aa ca ee 8c 67 76 77 &5c90 46 32 54 56 44 54 66 55 44 44 44 95 fe ff ef de &5ca0 8b 25 10 53 76 97 cb cc 8a 55 55 45 54 86 ba bb &5cb0 ec ef 8b 56 55 44 22 32 65 56 55 65 56 34 22 22 &5cc0 74 fd ff ff de 8b 25 10 52 76 97 cb cd 8a 56 44 &5cd0 44 44 76 a9 db fe df 8a 56 24 02 11 53 76 67 66 &5ce0 66 35 11 22 11 d6 ff ff ff ce 59 02 20 64 77 b9 &5cf0 ed ad 58 34 44 34 54 b8 fd ff df 8a 35 02 00 31 &5d00 75 77 88 88 57 12 32 23 10 d6 ff ff de cd 5a 02 &5d10 10 75 88 b9 fd be 58 33 54 44 53 d7 ff ef 8a 57 &5d20 03 00 10 75 89 77 99 58 24 21 33 22 42 f7 ff df &5d30 ed cf 49 01 40 77 88 b9 ed ad 47 54 45 44 b7 ff &5d40 df 89 68 25 00 10 a5 9a 77 98 69 02 21 54 55 45 &5d50 32 f9 ff ce dd ce 49 11 53 76 77 b8 ee 8b 56 55 &5d60 55 75 fb ff 9b 88 25 00 00 93 bb 89 98 89 25 11 &5d70 63 68 24 54 02 c4 ff ef ff cf 6a 02 31 65 87 ca &5d80 ee 9c 78 56 85 db ab 8a 46 12 22 42 75 98 9a 67 &5d90 66 44 64 77 86 79 45 24 00 70 fd ff ef ff 5c 02 &5da0 10 64 97 c9 fe ad 58 96 ed 8c 45 45 02 30 b7 ac &5db0 68 b7 8a 14 31 86 57 75 ba 48 12 32 34 74 ff ff &5dc0 ef 9b 68 03 20 76 a9 bb cb 9c 25 64 fa ff 5a 75 &5dd0 67 02 00 73 9a 99 bb 8a 14 32 64 77 77 99 26 00 &5de0 20 75 fb ff ff de 5a 02 21 63 ba cb dd 9b 68 96 &5df0 fe 8e 33 97 27 00 71 ab 48 a6 cd 4a 00 73 67 54 &5e00 b7 6a 02 00 40 fb ff ff ff 6f 00 20 22 73 fb ff &5e10 8d 55 c8 be 68 97 48 02 30 ca 4a 74 db 8b 13 52 &5e20 9a 15 62 77 24 00 20 b5 ff ff ff bd 28 00 52 65 &5e30 b8 ed cd 6a 75 fd 8d 35 43 04 20 da 6a 75 ca 8c &5e40 01 a4 9b 45 33 85 06 00 31 22 f7 ff ff bd aa 06 &5e50 00 73 a9 ba db ce 68 d9 cf 48 11 41 55 33 96 9b &5e60 68 87 68 44 63 b9 49 01 53 15 00 00 71 ff ff df &5e70 ee 4b 00 31 75 99 da ee bc fb cf 16 10 12 41 55 &5e80 54 97 99 a9 ec 9d 24 52 57 02 52 46 24 01 32 b5 &5e90 ff ff ff df 49 00 41 76 a9 db fe ff ef 28 00 12 &5ea0 00 64 35 a4 bb a9 dd 9b 9a 25 42 14 20 63 66 03 &5eb0 00 b3 ff ef fd ff 2a 00 63 56 75 fb ff ff ff 08 &5ec0 00 00 00 11 51 fa ef de bb 69 13 62 79 45 56 43 &5ed0 45 01 00 10 fb ff ef ff 8f 01 30 76 88 b7 ff ff &5ee0 cf 29 00 00 00 30 b7 de 6a 98 87 c9 bb cc 59 44 &5ef0 23 21 02 20 35 00 b1 ff bf e8 ff 2a 00 62 89 45 &5f00 fa ff ef 6c 01 00 00 40 b9 dc dd ce 25 74 97 ec &5f10 bf cc 5b 01 00 10 02 00 20 fb ff ff ff af 02 31 &5f20 64 77 e8 ff ff af 04 00 00 00 61 da ff 8c 78 35 &5f30 64 77 fb df 8a 69 01 00 00 00 10 fd ff cf ff 8f &5f40 00 20 a7 79 fa ff ff 8c 15 00 00 10 85 99 da cf &5f50 48 65 97 9a 96 fe 8d 44 36 00 00 00 f7 ff ff ff &5f60 8f 00 00 64 66 f9 ff ff af 04 00 00 10 53 a6 ff &5f70 af 78 13 84 99 d9 ff 8d 14 02 00 00 70 ff ff ff &5f80 ff 0a 00 30 65 a6 ff ff ff ac 05 00 00 20 55 b6 &5f90 ff af 35 75 87 99 97 ee 2a 00 00 00 30 ff ff ff &5fa0 ff 0c 00 40 a7 a9 ff ff cf 46 04 00 00 72 57 75 &5fb0 e9 9f 23 b7 89 bc 77 da 1a 00 01 00 70 ff ff fd &5fc0 ff 0c 00 70 ba 99 fd ff 8e 55 04 00 00 51 46 53 &5fd0 e9 bf 58 b7 88 99 b9 ad 25 21 01 00 50 ff ff fd &5fe0 ff 0d 00 b7 59 74 fd ff 8c 99 05 00 00 32 44 77 &5ff0 c9 bd 99 ab 98 7a a8 ab 58 56 13 00 00 f3 ff ef &6000 ff ef 01 30 db 6a f9 ff df 58 56 00 00 20 55 75 &6010 88 96 cb 8b a7 ee 6b a8 8b 25 00 42 00 00 f7 ff &6020 df ff cf 00 70 dd 68 f9 ff af 66 57 00 00 20 44 &6030 75 c9 ad 78 b7 ab 78 a7 bc 69 44 26 00 00 70 ff &6040 ff ff ff 08 00 76 14 b4 ff ff ac 28 00 00 00 11 &6050 30 ea 19 70 ed 8a 76 eb af 55 a9 05 30 97 02 00 &6060 01 00 f3 ff ff ff cf 00 30 cb ec ff ff cf 04 00 &6070 00 00 53 76 d7 ef 25 c6 ad a8 ff ef bd 89 26 00 &6080 74 15 00 00 b3 ff ff ff ff 06 20 55 74 ff ff ff &6090 ff 09 00 00 00 00 a3 ab ba db 8c 74 a9 ec df ac &60a0 27 00 11 00 00 30 ff ff f9 ff 08 00 d7 dd fc ff &60b0 df 6a 25 00 00 10 03 30 f7 ad 35 fa 2f 20 ff cf &60c0 ba dd 1a 00 51 05 10 66 00 30 ff ff fd ff 0a 00 &60d0 86 34 fb ff ff bf 05 00 00 00 00 d3 ff 8a a8 58 &60e0 24 95 ff ff df 8c 02 00 75 04 30 04 00 b0 ff ff &60f0 ff ff 04 10 55 b6 ff ff ff 4a 00 00 00 00 71 ff &6100 cf 78 aa 16 30 fb ff fe ff 08 10 23 12 31 44 02 &6110 00 70 ff ff ff ff 08 10 44 74 ff ff ff bf 00 00 &6120 00 00 50 ff af 54 eb 08 50 fd 9c fd ff 3c 20 46 &6130 00 10 12 00 00 f5 ff ff ff 8f 00 70 28 72 ff ff &6140 ff cf 02 00 00 00 70 ff 8f 74 ed 08 50 ff 59 fa &6150 ff 28 52 46 00 10 46 00 50 ff ff ff ff 08 10 87 &6160 34 f7 ff ff ff 0c 00 00 00 00 f5 ff 99 fd 5c 20 &6170 b7 8a ea ff cf 6a 44 04 00 42 01 00 00 f0 ff ef &6180 ff 8f 00 70 59 b5 ff ff ed ff 00 00 00 00 00 f7 &6190 af 77 ff 2b b4 bf 88 b7 ca ad b7 ae 00 00 01 00 &61a0 00 00 70 ff ff ff ef 00 10 97 76 fe ff ef ff 0c &61b0 00 00 00 00 b3 df 78 fc 6d 44 b7 ac b7 ff cf 24 &61c0 77 02 00 40 04 00 70 ff ff ff ff 0c 00 75 55 fd &61d0 ff ff ff 09 00 00 00 00 b3 ce 78 d9 ae 56 b8 bd &61e0 ba dd ac 58 65 25 62 77 24 00 00 00 70 ff ff ff &61f0 ef 04 00 74 b8 ff ff ef 9b 02 00 00 00 10 a7 48 &6200 76 fe df c7 ff 08 b3 ff 59 c5 af 00 70 2b 00 77 &6210 00 00 00 f1 ff ff ff 4f 00 70 78 fb ff ff cf 08 &6220 00 00 00 00 30 95 fd dd ff df dc 9d 65 67 96 9b &6230 76 9a 02 10 23 72 89 04 00 00 70 ff ff ff ef 00 &6240 70 49 f5 ff ff 8c 4a 00 00 00 00 60 47 40 fb ff &6250 cf fd af 00 51 15 70 ff 6d 96 6a 00 20 06 20 47 &6260 00 00 f7 ff ff ff 0f 00 d7 04 fb ff af c9 08 00 &6270 00 00 00 62 15 a4 fb ff ff fa 5f 00 70 a8 dd de &6280 5a 00 32 33 74 9a 05 00 00 00 f7 ff ff ff 0e 00 &6290 d7 38 fb ff cf 74 08 00 00 00 00 d5 5b 94 ff ff &62a0 ef bd 28 00 71 89 a7 bb 9a 36 01 00 50 db 48 02 &62b0 00 00 ff ff fd ff 00 30 4b 70 ff ff 6e 67 00 00 &62c0 00 00 10 14 40 ff ff ff ff bf 04 00 50 98 fb cf &62d0 8a 15 00 00 51 fa 8d 00 00 00 ff ff fd ff 00 70 &62e0 0f 70 ff ff 54 8d 00 00 23 00 40 06 70 ff ff ff &62f0 ff 4a 00 00 30 e7 ff ad 69 03 00 52 66 45 54 02 &6300 00 f0 ff ef ff 8f 00 f0 0a f0 ff cf 73 0a 00 00 &6310 06 00 60 02 70 ff ff ff ff 29 00 00 20 94 ff 8e &6320 96 ab 05 30 67 31 a9 06 00 00 ff ff f8 ff 0c 00 &6330 ff 00 ff ff 08 93 00 00 91 00 00 01 20 fb ff ff &6340 ff ff 0a 00 00 30 b7 dd cb 8c 76 aa 57 a7 0a 00 &6350 00 00 00 ff ff f4 ff 08 00 ff 00 ff ff 00 e7 00 &6360 00 f7 00 10 09 00 f0 ff ff ff 4f 00 00 00 b0 ff &6370 8c a6 8b 02 73 ff 7d c8 3c 00 00 00 00 f7 ff 9c &6380 ff 0f 00 f7 18 ff ff 00 73 00 00 a1 08 10 27 00 &6390 d0 ff ff ff ef 00 00 00 70 fd de dd 5a 01 71 8b &63a0 a6 dd 48 01 41 04 00 70 ff df f5 ff 00 70 cf f4 &63b0 ff 8f 00 05 00 20 8b 00 70 06 00 30 b5 ff ff ff &63c0 5f 00 00 20 b9 ed ad 46 01 10 95 99 99 8a 35 45 &63d0 12 a5 7c 00 00 00 ff ff fe ff 08 30 cd fd ff af &63e0 00 00 00 00 43 11 53 02 00 53 74 fb ff ff ff 3b &63f0 00 00 61 a8 ec 8c 02 00 60 fb ff ff 2a 10 00 74 &6400 86 aa 28 00 00 f7 ff ff ff 0c 00 b2 ff ff ff 08 &6410 00 00 00 31 33 12 10 00 61 77 b8 ff af b9 ed bd &6420 da 9f 00 62 25 73 cb 58 45 22 75 a9 ec df 8c 47 &6430 00 32 33 22 23 71 ff ff ff ff 48 a7 26 d4 ef 68 &6440 55 03 00 10 01 20 44 00 d5 4b 74 bd 8a a7 ff 9b &6450 ec ad 48 65 46 53 77 88 56 86 16 20 67 74 fc bf &6460 02 76 01 00 71 ff ff ff ff 15 65 02 f5 ef 48 45 &6470 00 00 51 15 20 45 02 40 77 95 ec ff ff ff ef 89 &6480 25 21 53 77 44 34 75 24 74 a9 58 85 8b 21 97 02 &6490 73 5a 02 00 00 10 fb ff ff ff 0a 70 ff ff ef 29 &64a0 00 00 00 00 65 04 52 47 54 d7 9e d7 8e 33 ea 8d &64b0 a5 ff 4c 74 9b 33 ea 5b 64 68 12 52 36 a4 ce 26 &64c0 22 01 20 65 76 fd ff ff fd ef 88 ff 4d 00 01 00 &64d0 40 04 00 22 10 75 45 a5 8b 98 db bc db ac a8 db &64e0 49 75 28 00 85 06 40 bc 13 f7 8c 75 87 28 11 88 &64f0 01 40 35 f5 ff ff ff 6b a7 db ff ff 4c 00 00 00 &6500 20 54 03 00 10 22 a4 ed 8b ca 9b 98 db ac cb ab &6510 68 34 44 55 75 cd 58 55 45 11 a5 37 84 29 00 60 &6520 28 70 ff ff ff ff 04 f7 8d f7 ff 2a 00 00 00 50 &6530 15 00 22 00 70 59 74 fb af 76 ce 79 fa 8e 86 38 &6540 42 03 40 b7 88 aa 56 56 13 74 89 98 15 20 00 00 &6550 e0 ff ff ff 9f 02 51 b7 ff ff 4a 02 00 00 53 45 &6560 34 00 20 57 61 ff af db 8b 64 d7 de cc de 08 10 &6570 23 52 bb 58 56 65 57 42 96 de 27 98 05 00 00 10 &6580 f7 ff ff ff 2c 42 76 fa ff af 08 00 00 20 65 04 &6590 10 00 52 54 fb af a6 cf 54 fd 8c b7 ac 77 25 a5 &65a0 09 30 ba 58 67 12 42 97 56 87 05 30 77 02 30 c3 &65b0 ff ff ff af 24 64 da ff cf 04 00 00 30 57 02 00 &65c0 00 21 73 ee 9a db 6c b7 cd bb ff 4a 95 08 10 66 &65d0 34 d7 5b 40 77 22 77 a8 ad 05 62 37 40 25 00 f3 &65e0 ff ff ff 8f f8 ff 8a fb 5b 22 24 00 43 01 20 00 &65f0 40 35 73 db 8c a7 8a 76 fb ad ec 8d 04 61 04 50 &6600 be 02 b6 04 70 cf 75 ff 0a 70 2c 50 ff 1a 62 00 &6610 00 13 f5 ff ff ff 08 30 fd ff ff 0e 00 00 60 8a &6620 54 46 00 70 4a f3 ff 68 ed 08 f3 df d7 df 14 d7 &6630 08 71 89 c9 8c 65 48 30 9a 23 97 65 a9 08 a0 3d &6640 70 09 00 f5 ff ff ff 28 23 31 fb ff af 04 00 00 &6650 30 97 04 00 53 24 d6 ad 88 db 69 d9 ac fb 8d 76 &6660 88 76 47 32 65 65 66 68 21 b7 58 e7 8f 00 87 04 &6670 f3 4e 00 45 00 f7 ff ff cf 54 6a 31 ff bf fd 0a &6680 00 40 54 57 02 00 00 a4 7a f9 8f 75 77 b9 bc dc &6690 ce 58 97 56 87 56 34 52 67 34 95 48 a7 08 70 17 &66a0 b4 8d 32 55 22 53 66 47 00 f7 ff ff ff 8a 67 95 &66b0 fd ef 5b 00 20 34 52 aa 00 30 08 70 ff 04 f7 08 &66c0 f3 af f6 ef 04 95 9a 89 76 57 22 54 44 a7 15 d6 &66d0 4a f6 8f 30 9b 52 ff 08 d3 08 70 0b 00 97 b6 ff &66e0 ff ff 8f f6 ff bf ac 02 00 42 b6 8d 00 20 00 b1 &66f0 8f 70 df 24 fa 6c d7 8c b7 ad 45 c7 49 b5 8b 55 &6700 ba 05 72 8b 56 99 03 f2 af 00 73 00 20 47 f3 ff &6710 af 96 08 60 ff ff ff 04 00 00 b0 8d 25 00 00 20 &6720 97 a9 ab 58 52 97 ba cb 8c a7 6b 52 99 34 d7 8c &6730 87 16 40 d9 bd 68 13 42 77 44 56 00 00 40 ff ff &6740 ff 0b 00 f5 ff ff ef 04 00 00 d3 5c 44 00 00 71 &6750 db cc 8c 22 b5 cc ed 5d 92 8d 74 bd 14 a5 4a 93 &6760 8c 75 8a 32 77 34 a6 5b 20 23 02 00 70 ff ff bd &6770 08 00 f7 ff ff ef 00 30 00 f5 4c 00 00 00 b3 88 &6780 dd 28 62 88 b6 ef 9c a9 59 a6 69 77 86 47 a6 8a &6790 45 65 77 87 68 34 85 05 b3 0a 00 00 00 ff ff df &67a0 4d 00 f1 ff ff ff 0e 00 00 30 ff 08 00 00 50 dd &67b0 dc 8e 01 93 ca ff af 45 77 44 c9 6a a5 8a 76 68 &67c0 43 99 65 aa 04 75 a6 9e 44 03 00 00 f5 ff ff 46 &67d0 00 70 ff ff ff ff 0c 70 0c 00 8b 00 21 00 d1 8d &67e0 b9 68 65 a8 eb be 88 38 93 9d 86 48 41 55 76 a9 &67f0 28 61 48 93 6d 50 8d 00 eb 02 20 00 f5 ff ce 2f &6800 00 f6 ff ff bb ff 0a d2 04 70 0c 10 08 00 e7 58 &6810 fb 2c d5 8c b6 df 78 99 25 95 58 b7 8b 75 49 72 &6820 8b 75 49 10 a7 34 b5 0a 70 05 00 70 ff ff 5a 04 &6830 00 f7 ff cf b6 df a8 cb 04 40 04 70 09 00 e7 14 &6840 fb 0a f3 8f f6 8f 95 ab 45 87 34 b7 58 a7 48 32 &6850 66 b7 8c 46 04 a1 8d 10 47 00 10 ff ff 4f 05 00 &6860 f7 ff ff 04 f3 ff fd 0f 00 00 30 ab 04 30 69 a6 &6870 bb 79 a8 69 b6 be b8 8b 12 75 66 db 58 57 00 65 &6880 87 99 34 24 73 cd 02 00 00 f0 ff ef 01 00 70 ff &6890 ff 0c b1 9f fb 8f 00 00 20 56 12 01 51 97 cd 26 &68a0 b7 9a e9 af 97 69 b7 6a 75 66 57 75 68 55 66 65 &68b0 48 72 8a 71 ae 00 00 00 f1 ff cf 04 00 f0 ff ff &68c0 08 72 cc ff 8f 00 00 00 61 03 32 42 75 db 5a 75 &68d0 87 da ac 66 ab 68 cb 18 b5 2a 72 48 c7 0a a0 49 &68e0 b5 5a 65 00 71 02 00 70 ff cf 88 00 d0 ff ff 08 &68f0 f0 ff ff 0f 00 30 43 86 02 00 72 fb cf 56 57 73 &6900 ed 9c 78 77 a9 9a a7 8b 55 23 95 78 88 54 57 73 &6910 8b 74 2b 10 85 06 00 00 f3 ff df 08 10 e7 ff ef &6920 89 25 f6 df 6a 02 00 00 31 33 10 87 52 ef 55 cb &6930 68 a9 67 ba 46 76 aa 98 8a 64 89 77 48 63 26 73 &6940 56 cb 28 77 01 02 00 00 f0 ff ee 0f 00 f7 ff cf &6950 88 56 fb ef 2a 00 00 51 27 00 02 71 8f a8 8a 33 &6960 c6 ad b8 48 74 cd 99 4a 52 97 ea 8a 28 10 8a 51 &6970 ee 02 85 42 47 52 02 00 f0 ff ff 8f 00 e3 ff ff &6980 df 08 d7 bd 9b 14 00 00 34 62 28 74 75 8b 72 8f &6990 70 8f 91 5d 95 68 5a a3 8e b3 5f d3 0c c1 08 d5 &69a0 28 64 55 74 5a 00 02 00 30 ff df 8d 00 a1 ff ef &69b0 59 00 ff fe 8f 00 00 82 47 26 00 32 f3 cf 76 28 &69c0 63 da ce 59 74 48 b3 5e b1 2f b1 2c e5 6e 64 24 &69d0 53 25 b0 8f 10 2d 00 48 00 00 ff 9f ff 00 93 fe &69e0 ef 79 a5 ff ff 0c 00 10 a7 14 02 10 67 f7 4f 70 &69f0 2d f2 4f d5 28 a7 54 bb 76 9a 64 bb 78 a7 58 75 &6a00 15 83 68 97 66 47 64 00 40 00 f3 ff ce 0c 00 fb &6a10 ff af 04 f3 ff ff 04 00 20 bb 25 00 20 b7 ef 68 &6a20 66 31 d7 8c aa 05 d2 89 fc 2a 75 89 a8 5b 60 47 &6a30 b5 8d 20 8c 50 8c 34 05 00 45 00 f0 ff cf 4f 10 &6a40 fb ff df ca 37 fb 8a 9d 00 43 00 22 01 70 7a 73 &6a50 38 70 bc 89 89 25 b6 48 fb 08 b7 24 db b9 7c 14 &6a60 30 9b c8 4f 30 17 b0 8d 36 00 00 20 ff ff 7d 00 &6a70 d1 ff ff 8c 57 f7 ef 5a 00 00 72 4a 00 00 70 cf &6a80 78 15 50 aa eb 5c 20 77 b7 cd 6b 54 97 cb cc 04 &6a90 71 32 ff 08 81 12 c7 69 02 30 00 f0 ff ff 08 00 &6aa0 f7 ff cf 78 8d f8 9f 22 01 52 55 01 10 23 f7 8d &6ab0 02 a3 55 ff 28 85 34 c7 df 14 86 74 df 8c 04 51 &6ac0 31 ff 22 3a 10 b7 4b a5 02 10 00 63 ff ef 45 31 &6ad0 b7 ff bf 75 ba fe cf 04 00 52 57 12 00 70 98 cb &6ae0 38 14 d2 6b fb 18 47 73 68 eb 54 cb 75 6c 87 58 &6af0 87 75 59 b5 06 87 94 4a 83 00 02 00 f2 ff af 06 &6b00 50 fa ff 9f 28 d7 ff 8f 00 00 b3 4a 02 00 50 fd &6b10 8e 04 60 bd eb 59 36 72 bc 4c b3 4c d3 8d 34 a9 &6b20 24 ed 48 b7 37 f6 08 63 55 48 75 01 10 76 f8 ff &6b30 4e 32 a5 ff ff 7d f9 bf ac 15 20 87 34 01 00 70 &6b40 8d d8 08 70 ef bb 89 05 b3 8c aa 49 73 98 99 7a &6b50 73 88 76 9a 02 b7 76 ce 02 73 06 a3 5c 00 00 f0 &6b60 ff ef 04 20 fa ff cf 34 a6 fe 8f 02 00 62 27 01 &6b70 00 75 fb 2c 57 30 ef ea 38 27 d0 6f fb 08 63 fb &6b80 7b 88 50 88 56 ac 57 a9 79 41 45 72 fd 08 40 00 &6b90 e6 8c 00 f7 ff af 68 77 ff ff 4d 00 a5 ff 48 25 &6ba0 00 33 a6 25 00 51 88 be 66 15 b7 77 ec 4a 71 5a &6bb0 95 98 9b 88 24 d7 8e d5 09 71 96 9f 33 06 71 57 &6bc0 44 02 00 20 fd ff 0c 52 d7 ff ff 2e 61 ba ef 49 &6bd0 02 52 04 31 00 56 b5 08 a2 47 b7 99 58 a6 56 dd &6be0 4a 36 87 73 ec 58 65 65 fd 7a 57 24 b3 2c f3 0e &6bf0 00 70 5b 15 00 f5 ff cf 29 50 ff ff 8f 01 70 ee &6c00 ad 04 20 20 67 02 10 77 05 66 10 db aa 5a 52 74 &6c10 db 99 48 53 a8 be 65 88 45 d7 89 ca 04 50 fd 08 &6c20 eb 10 27 a3 58 06 00 02 ff ef 8e 70 fd ff 8f 04 &6c30 70 ed af 00 00 61 78 05 00 55 8b 54 05 b3 99 cd &6c40 64 24 da 89 af 40 9b b6 ad 78 46 75 4b a4 8b 78 &6c50 71 08 f7 5a 04 10 32 47 00 d0 ff af 7d e8 ff ff &6c60 48 12 a3 ff 0a 31 00 b6 49 00 00 73 cc 24 00 d6 &6c70 f9 af 45 33 6b f5 9e 85 68 77 88 98 bd 48 51 88 &6c80 85 48 a3 7a 67 00 11 ca 38 03 00 f5 ff 7f 72 ff &6c90 ff 8f 00 62 bb 89 00 72 32 37 00 72 65 58 15 51 &6ca0 78 a5 8c 45 88 99 dd 88 72 97 a8 8d 45 77 76 b9 &6cb0 3a 20 75 cf 31 6c 30 8a 88 16 00 10 f0 ff 9f ec &6cc0 ff fc cf 88 36 46 a5 29 53 00 40 ed 04 30 21 d5 &6cd0 8f 23 76 67 da 6b 52 76 fb 4b b6 47 fa 29 57 84 &6ce0 b6 df 44 45 32 fe 0a a1 08 a1 cf 00 04 31 41 55 &6cf0 ff ff cb ff fe ff 02 43 87 db 08 30 30 aa 04 00 &6d00 97 b4 4c 03 b0 4a fa 1a b0 bd 8a 76 47 ba cc 4a &6d10 b1 2a f7 0c b7 1a c1 3f 70 8f 70 0d 60 aa 06 70 &6d20 08 ff ff af ff 9d ff 78 26 c7 75 09 20 76 4a 40 &6d30 02 71 68 8a 20 54 47 74 8e 88 95 35 f7 8d ac 33 &6d40 84 99 9a 16 c5 8d 75 24 b4 9a a9 08 53 98 48 16 &6d50 00 50 b7 fd ff cb ec ff ff 08 96 76 b7 08 50 49 &6d60 71 4d 00 93 24 fb 0a 50 c9 74 8e 73 ef 28 87 50 &6d70 cd b6 af 95 ae 04 93 a8 ff 00 70 dc fd 0e 00 a5 &6d80 bd 7a 00 50 87 dc ef fd ff ff 9b 89 a9 bd 16 30 &6d90 24 54 14 75 24 01 70 8b 76 45 77 c9 28 72 9d 94 &6da0 8d c5 de 59 85 18 f5 8f 70 4d 00 fb 2c e7 1a 31 &6db0 87 34 dd 00 00 73 b3 ff 8c ff 9b ff af 78 99 98 &6dc0 8a 22 53 37 63 25 10 44 74 ca 06 70 da ad 59 40 &6dd0 b7 ec 5d 45 30 ff ff 05 41 b4 ff 8b 00 f7 08 c5 &6de0 6d 30 8e 00 97 a8 7a 02 32 c7 ff ff ff af cd 57 &6df0 ca 9b 45 23 31 89 34 22 23 51 66 87 56 45 a5 9a &6e00 88 35 88 7a 64 cd b1 8f b6 00 b7 b8 af 04 70 89 &6e10 f8 0e 70 2d 40 f7 08 74 02 62 35 64 fb 9e ff ff &6e20 ed 8a b6 ef 18 44 20 b7 3a 30 01 72 85 4b 60 07 &6e30 e1 8c 88 22 55 d7 9d 75 48 52 98 db 8c 78 67 54 &6e40 eb 08 f3 0c b0 9d 34 97 35 c7 08 41 56 03 71 fe &6e50 ff ff af 76 db fd 8d 01 72 86 9a 04 21 22 65 68 &6e60 34 55 73 8a b7 48 73 8b 74 ba 9e 52 ba 8b 67 77 &6e70 63 fb 2a 73 47 d6 8e 74 27 41 74 ef 58 05 70 bb &6e80 9d 23 b4 ff ff af 58 a6 dd 89 36 53 45 a9 16 10 &6e90 62 89 24 75 46 d7 4b 75 58 a6 6a 85 36 d4 df 97 &6ea0 9b 01 d7 c9 8c 24 72 8b b8 8b 00 ca 26 e7 18 50 &6eb0 48 10 b7 98 aa fe ff ff ca 59 c6 bf 45 36 31 76 &6ec0 04 50 05 30 aa 06 50 8a b5 8b 66 75 48 f5 5c c7 &6ed0 58 69 95 4a f7 4a f7 08 b5 8c 55 c9 16 73 c9 8c &6ee0 10 01 90 7d 24 70 ff fd ff ff ff cf 9b 57 74 cb &6ef0 58 45 00 52 56 44 04 20 54 97 ab 16 73 67 fc ac &6f00 5b 52 8a d8 ad 28 30 8b b4 af 30 cb 48 63 9a 74 &6f10 8f 30 48 75 58 46 00 10 71 ff fd ff ff df cc 7a &6f20 87 56 97 58 54 14 10 63 26 51 46 31 75 9a 97 26 &6f30 95 99 cd 89 88 75 87 98 89 a9 29 71 ab 98 8b 52 &6f40 9b 24 65 b7 69 64 48 51 99 47 22 23 71 ff ff ff &6f50 8f 74 bb a8 ce 28 21 22 63 89 01 53 02 61 48 30 &6f60 89 42 cb 38 75 79 a7 df 18 a5 16 f7 2c 70 8d 74 &6f70 8b 64 eb 28 d7 39 41 b7 2a 70 ac 56 87 04 30 96 &6f80 36 74 fd ff ff af 58 75 eb 8c 77 02 60 78 67 15 &6f90 20 56 43 66 35 b5 8c 53 76 97 dc 8b 12 c7 4a a5 &6fa0 6b a5 8b 55 d9 6d b5 0c 70 8f 70 8d 52 cb 18 70 &6fb0 6b 50 8c 00 44 72 dd fb ff ff ef 89 b7 ac 67 56 &6fc0 33 95 28 20 56 32 97 15 63 67 44 d7 6a 97 98 b9 &6fd0 dd 28 73 58 f7 5e 60 ad 00 fb 28 b7 5a 31 ff 08 &6fe0 f7 0c f0 0f 30 aa 04 d3 0a 60 48 51 cb fb ff cf &6ff0 98 48 d5 ef 6a 47 00 72 69 54 46 10 44 32 77 55 &7000 97 46 33 b7 69 d7 8e 73 8d 64 a9 26 d6 2c 70 8f &7010 30 ff 04 f7 4c b3 6b 32 a7 b9 ab 14 32 65 78 35 &7020 65 12 f7 ff ff cf 48 75 dd bc 8b 02 52 65 87 35 &7030 12 11 64 57 74 9b 34 87 01 f7 4c c6 6c 75 89 77 &7040 a9 36 b7 5a 72 8b 74 cd 48 76 76 9a 56 75 8a 43 &7050 87 75 77 88 26 53 02 b5 8e 96 eb fe ff af 78 69 &7060 96 cd 68 45 32 44 64 57 22 22 54 74 ab 45 66 52 &7070 ba 98 ad 66 8a 97 bb 68 77 44 75 97 79 97 8b 21 &7080 fa 5a a7 46 75 56 96 6b 20 67 01 75 34 64 b9 fb &7090 ff df de 6a a7 8a 98 8a 24 75 25 74 26 52 46 54 &70a0 76 56 a6 69 a7 4a 20 a7 b9 cd 58 76 88 97 aa 89 &70b0 35 73 8a a6 ce 46 77 53 db 58 99 25 a6 69 45 55 &70c0 23 41 87 76 b9 da ff ff bf 68 57 73 ba 8b 35 33 &70d0 12 64 77 35 53 45 64 67 64 89 97 59 74 aa a9 89 &70e0 76 a7 9a 58 55 75 bb 78 57 41 fa 8d 87 88 56 75 &70f0 69 95 7b 42 56 74 68 54 67 76 fa ff ff ef 59 86 &7100 68 a7 8b 55 66 44 55 35 53 66 65 46 54 66 76 8a &7110 76 47 74 ab 88 a9 89 87 58 43 a9 78 89 45 55 95 &7120 59 b6 4c 50 8a 64 8a 76 06 61 47 75 36 74 da ff &7130 ff ef 9a aa aa aa 57 76 46 75 48 32 45 42 56 65 &7140 57 54 55 66 a7 58 b6 8c 54 aa 66 fb 5c 85 46 95 &7150 ac 56 96 48 a5 7b 54 99 68 a6 8b 12 97 02 71 49 &7160 41 fa be fb cf fd af d8 af 88 58 65 55 86 56 86 &7170 02 30 55 65 88 25 52 97 68 97 89 76 99 88 ba 8a &7180 55 a7 68 c7 4b 30 97 99 9a 57 75 59 73 9b 78 77 &7190 13 63 66 55 24 43 d7 ff ff ce fa ff bb ef 48 65 &71a0 45 65 66 44 76 04 71 48 51 87 45 96 58 75 ac 55 &71b0 a9 48 b7 8b 98 99 58 65 97 aa 69 76 56 96 6a 74 &71c0 99 68 a6 8c 00 51 46 64 56 65 d9 ff dd dd cc dd &71d0 cb dd 8a 78 34 65 66 56 44 44 54 45 43 55 65 56 &71e0 76 55 a7 79 98 69 76 77 a8 8b 76 68 64 a9 9a 58 &71f0 67 66 97 68 76 68 64 89 24 63 46 22 65 64 fd ef &7200 dc ae 79 97 aa fd ff bb 8b 12 75 56 54 56 33 55 &7210 14 73 46 74 8a 55 87 46 85 aa 89 88 88 97 89 76 &7220 99 78 87 56 77 56 a7 9a 78 66 66 66 45 33 54 55 &7230 45 13 72 fe ff ff 8d 88 67 86 ba fd ff 8b 69 02 &7240 73 57 65 55 24 32 45 53 87 56 75 89 56 65 66 a7 &7250 ab 9a 98 9a 67 88 67 97 99 68 86 89 66 56 85 48 &7260 94 4a 00 43 22 d5 ff df ff 8c 75 9a 88 cb 8b 97 &7270 eb ce bb 6a 23 54 44 44 55 34 53 55 55 55 66 56 &7280 65 88 68 77 68 96 aa 88 99 68 75 88 98 89 67 67 &7290 65 89 66 66 45 44 65 45 52 d9 ef ed ef 8a 98 78 &72a0 76 ba 8a 97 aa da ff 9c 67 34 32 54 34 53 66 34 &72b0 64 56 44 76 57 74 89 55 97 68 97 9a 89 88 89 56 &72c0 97 68 76 77 66 77 67 56 44 33 53 55 d7 ef dd ce &72d0 58 96 89 98 ba 79 76 78 86 db ee be 89 46 22 33 &72e0 43 65 45 54 66 45 65 66 55 87 68 66 77 76 98 ba &72f0 79 66 97 68 65 78 65 a9 48 64 67 44 96 8a 97 bb &7300 9a b9 ab 89 a9 9a 88 99 67 86 89 98 db dd ac 89 &7310 56 43 55 55 55 45 54 65 55 65 56 55 76 68 65 67 &7320 86 9a 77 89 66 87 88 89 66 76 68 56 55 66 87 99 &7330 99 aa aa aa a9 aa 99 99 89 77 77 77 87 a9 ba bb &7340 9a 78 67 55 55 55 45 54 55 55 66 55 66 56 66 56 &7350 65 77 87 78 66 87 89 a9 89 78 45 55 44 75 a9 bb &7360 bb ab 9a 88 99 98 aa 9a 99 78 77 77 88 88 99 89 &7370 88 88 77 66 66 56 55 55 55 65 66 45 65 56 76 77 &7380 66 76 98 99 aa 89 77 87 88 87 9a 67 98 68 76 77 &7390 66 66 45 01 00 52 b7 fe ff ef ac 58 34 75 98 ca &73a0 cd 9b 88 78 77 a9 aa 99 78 45 33 33 33 54 66 66 &73b0 56 45 54 66 76 a9 9a 99 88 77 a9 99 a9 99 88 77 &73c0 77 76 77 67 25 00 00 70 ff ff ff 8f 34 24 10 94 &73d0 fd de dd 6b 22 43 54 b7 fe ff ad 59 02 31 54 65 &73e0 77 56 23 22 22 64 88 88 89 68 44 76 77 a8 bb 8a &73f0 58 44 54 96 fd ff de 8b 46 43 54 97 bb bb 9a 57 &7400 44 54 75 98 ba ab 68 67 75 eb bd aa 6a 24 33 33 &7410 54 65 66 66 56 34 43 65 76 88 68 66 67 66 97 99 &7420 a9 aa 99 89 78 77 87 88 99 aa 89 98 88 88 98 88 &7430 88 88 88 88 88 88 77 67 56 45 44 44 54 65 77 77 &7440 66 66 45 65 56 55 14 b3 ff dc ff 5e 53 45 42 96 &7450 fd ad b9 6a 11 63 56 a7 cb ab 68 66 34 74 99 98 &7460 bb 8a 56 55 55 75 a9 8a ca ad 66 88 56 76 99 89 &7470 87 88 56 76 57 54 66 55 55 45 44 54 65 76 98 99 &7480 99 99 88 88 99 88 99 99 88 88 88 99 99 99 88 77 &7490 67 77 87 98 88 88 78 77 77 77 77 77 77 67 56 44 &74a0 44 44 55 55 54 45 02 a2 ff dd ff 8f 43 56 32 75 &74b0 eb bd 99 8a 04 51 56 96 cb ac 79 66 45 53 a7 9a &74c0 b9 9b 56 55 55 66 97 aa 89 88 57 55 76 77 98 99 &74d0 89 67 67 55 76 88 98 89 78 66 66 76 77 98 88 88 &74e0 78 a8 9b 76 9a 56 76 67 76 87 88 78 87 68 66 77 &74f0 67 77 77 77 76 77 66 76 67 66 66 55 54 65 87 a8 &7500 ba aa 9a 89 88 98 99 a9 9a 89 77 67 77 77 88 88 &7510 88 78 77 77 77 87 88 88 78 77 77 77 77 87 88 78 &7520 77 77 77 77 87 88 88 78 77 77 77 77 88 88 78 77 &7530 77 77 77 77 88 ea 8d 65 77 24 74 77 78 97 9a 57 &7540 76 67 65 97 78 77 88 67 55 77 66 76 77 56 55 45 &7550 54 76 99 ba bb ab 89 88 67 87 a9 99 99 89 67 66 &7560 77 77 98 89 78 77 67 66 77 88 88 88 78 77 77 66 &7570 77 88 88 88 77 67 76 77 77 88 88 77 77 77 77 77 &7580 88 88 78 77 77 77 77 77 98 aa 88 88 56 65 66 77 &7590 87 88 78 77 67 66 77 77 77 88 77 77 67 76 77 78 &75a0 77 88 77 76 66 76 77 66 66 45 54 76 a9 bb cc 9a &75b0 88 67 66 97 99 99 9a 78 66 66 66 77 98 89 88 77 &75c0 66 76 77 88 98 88 78 66 66 76 87 88 88 88 67 67 &75d0 77 77 87 88 88 77 77 77 77 87 88 88 88 77 77 77 &75e0 77 87 88 88 77 77 77 77 77 88 b8 dd 89 77 56 34 &75f0 73 88 77 a9 89 66 76 56 75 99 78 87 78 66 76 87 &7600 77 87 78 55 56 44 44 55 97 cb cd bb 9a 68 65 76 &7610 87 aa aa 89 67 56 55 76 88 98 89 68 66 66 66 87 &7620 99 89 88 77 66 66 77 87 98 88 78 67 66 77 87 88 &7630 88 88 77 77 77 77 88 88 88 77 77 97 aa 99 99 68 &7640 66 66 76 77 98 88 88 77 66 76 77 77 88 78 77 77 &7650 77 77 87 77 77 67 66 66 56 45 44 64 d9 cd db cd &7660 59 54 56 65 a9 bb 9a 88 57 44 75 88 98 aa 89 66 &7670 66 65 76 98 99 89 88 56 65 77 77 99 99 88 77 66 &7680 66 77 88 88 88 78 66 77 77 87 88 88 78 77 66 97 &7690 99 aa 89 78 55 66 66 76 88 88 77 77 66 76 77 77 &76a0 88 77 67 66 76 77 87 88 77 67 66 66 66 66 55 44 &76b0 65 87 b9 cc bb 9a 68 66 76 87 a9 9a 89 67 56 65 &76c0 76 98 99 99 78 66 66 76 87 98 89 78 67 66 76 77 &76d0 87 88 88 77 67 76 77 87 88 88 78 77 76 77 77 88 &76e0 88 88 77 77 77 77 88 88 88 77 77 77 77 77 77 88 &76f0 a9 7a 87 68 55 76 66 77 87 78 66 77 66 76 77 77 &7700 77 77 77 77 66 76 77 77 77 77 67 77 77 77 77 77 &7710 67 66 56 44 75 98 aa bb ab 89 77 77 77 a9 9a 99 &7720 89 67 66 76 77 98 99 88 77 77 66 87 88 88 88 78 &7730 67 77 77 87 88 88 78 77 77 77 87 88 88 88 77 77 &7740 77 77 87 88 78 77 77 77 77 77 77 78 77 77 77 77 &7750 77 87 88 78 77 77 77 77 77 77 77 77 77 77 77 77 &7760 77 77 77 77 77 77 77 87 88 88 77 77 77 77 87 88 &7770 88 88 88 88 ea bf 44 77 14 52 87 88 99 9a 57 65 &7780 67 66 97 9a 88 89 68 66 77 88 88 98 78 66 77 56 &7790 66 56 65 a7 aa aa aa 78 66 77 78 98 aa 89 77 67 &77a0 56 76 88 88 88 78 66 66 77 77 88 88 78 77 67 76 &77b0 77 87 88 88 78 77 77 77 87 88 88 77 77 77 77 77 &77c0 77 88 78 77 77 77 77 88 88 88 88 77 77 77 88 88 &77d0 88 88 88 77 77 87 88 88 88 78 77 77 77 87 88 88 &77e0 77 77 77 77 77 77 87 99 99 89 88 67 65 66 76 87 &77f0 88 78 77 77 66 76 77 77 78 77 66 66 66 77 77 77 &7800 77 67 66 66 56 45 54 77 98 ba ab 99 88 66 76 87 &7810 98 99 89 78 66 66 66 87 88 88 78 67 66 76 87 88 &7820 88 88 67 76 77 77 88 88 88 77 77 77 77 87 88 88 &7830 77 77 77 77 87 88 88 78 77 77 77 77 77 88 78 77 &7840 77 77 77 87 88 78 77 77 77 77 77 87 78 77 77 77 &7850 77 77 98 99 99 89 78 66 66 76 77 88 88 77 77 77 &7860 77 77 77 88 78 77 77 67 77 77 77 77 77 66 66 66 &7870 45 54 87 99 ba ab 9a 88 67 76 87 99 99 89 78 56 &7880 66 76 87 98 88 77 67 66 76 87 88 88 78 67 66 76 &7890 77 88 88 78 77 77 76 77 88 88 88 78 77 77 77 87 &78a0 88 88 88 77 77 77 87 88 88 88 77 77 77 77 88 88 &78b0 88 78 77 77 77 88 88 88 88 78 77 77 88 88 88 88 &78c0 78 87 99 99 99 89 67 66 66 76 87 88 88 77 77 66 &78d0 77 77 77 77 77 77 77 77 77 78 77 77 66 55 55 44 &78e0 75 ca ab cb 9c 56 65 56 86 aa aa 89 67 56 55 87 &78f0 89 98 9a 68 66 66 76 98 99 89 78 77 66 76 88 88 &7900 99 78 77 77 77 87 88 88 88 77 67 76 87 88 88 88 &7910 77 77 77 77 77 88 78 77 77 77 77 77 87 88 77 77 &7920 77 77 77 77 77 77 77 77 77 77 77 78 78 77 77 77 &7930 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &7940 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &7950 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &7960 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &7970 77 77 77 77 77 77 77 77 77 77 78 a8 ed 8c 56 55 &7980 14 72 89 76 99 68 55 65 77 66 98 68 55 56 55 a7 &7990 bb ba bb 89 56 76 77 98 aa 9a 78 77 56 75 98 88 &79a0 99 88 67 66 77 87 98 99 88 77 67 66 87 88 88 88 &79b0 78 77 77 77 87 88 88 77 77 77 77 87 88 88 78 77 &79c0 77 77 77 87 88 77 77 77 77 77 88 88 88 78 77 77 &79d0 77 87 88 88 77 77 77 77 88 88 88 78 77 77 77 77 &79e0 88 88 78 77 77 77 77 77 77 77 77 77 77 77 77 77 &79f0 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &7a00 77 77 77 77 77 77 77 77 77 77 77 77 88 99 9a 89 &7a10 78 66 66 76 77 88 88 78 77 77 77 77 77 77 67 66 &7a20 66 66 77 77 67 66 45 54 97 ba cc bc 9a 68 66 76 &7a30 97 aa 9a 89 67 56 65 77 98 99 89 67 66 66 77 88 &7a40 99 88 77 66 66 76 87 88 88 78 66 66 77 77 88 88 &7a50 77 67 66 77 77 88 88 78 77 77 77 77 87 88 78 77 &7a60 77 77 77 77 88 78 78 77 77 77 88 88 88 78 77 77 &7a70 77 87 88 88 78 77 77 77 77 77 77 77 77 77 77 98 &7a80 99 9a 88 67 56 66 76 77 88 78 77 66 66 77 77 78 &7a90 77 77 66 66 76 67 66 56 44 54 97 bb bb bb 8a 66 &7aa0 66 76 98 aa 8a 78 66 55 65 87 88 88 78 66 65 76 &7ab0 77 98 89 78 67 66 66 77 88 88 78 67 66 76 77 87 &7ac0 88 88 77 77 77 77 88 88 88 78 77 77 77 88 88 88 &7ad0 88 77 77 77 88 88 88 88 77 77 77 88 88 88 88 78 &7ae0 77 87 88 88 88 88 88 77 87 88 88 88 88 78 77 77 &7af0 77 87 88 77 77 77 77 77 77 77 77 77 77 77 77 77 Game disassembly ================ ; Bone2 ; ff0e00 ff0900 005cb4 # &0e00 - &6ab3 is moved to &0d00 - &69b3 at &0916 ; load_from_tape &0d00 20 7c 66 JSR &667c ; clear_screen # X = 0 here, so black background &0d03 20 d2 2f JSR &2fd2 ; plot_text &0d06 80 d2 f0 &0d09 1c 28 24 35 26 2b 2c 31 2a 40 29 32 35 ; "Searching for" &0d16 81 4e f0 &0d18 0f 32 38 31 27 ; "Found" &0d1e ff &0d1f a9 89 LDA #&89 ; Cassette motor control # Start tape &0d21 a2 01 LDX #&01 ; relay on &0d23 a0 01 LDY #&01 ; read &0d25 20 f4 ff JSR &fff4 ; OSBYTE &0d28 a9 02 LDA #&02 ; Specify input stream &0d2a a2 01 LDX #&01 ; Use the serial circuit for input &0d2c 20 f4 ff JSR &fff4 ; OSBYTE &0d2f a2 00 LDX #&00 &0d31 86 5e STX &5e ; load_address_low &0d33 a9 33 LDA #&33 ; &3300 = levelset_data &0d35 85 5f STA &5f ; load_address_high ; load_levelset_block_loop &0d37 a9 00 LDA #&00 &0d39 a0 07 LDY #&07 ; + &0700 &0d3b 20 d4 0d JSR &0dd4 ; set_text_screen_address_from_A_Y &0d3e a5 60 LDA &60 ; levelset_to_load &0d40 20 ca 0d JSR &0dca ; plot_character_preserving_registers # Plot expected levelset &0d43 a9 3f LDA #&3f ; "." &0d45 20 ca 0d JSR &0dca ; plot_character_preserving_registers &0d48 8a TXA &0d49 20 ca 0d JSR &0dca ; plot_character_preserving_registers # Plot expected block ; find_start_of_block_loop &0d4c a0 08 LDY #&08 # Blocks start with eight sequential &ff bytes ; find_start_of_block_inner_loop &0d4e a5 ec LDA &ec ; os_most_recently_pressed_key &0d50 c9 f0 CMP #&f0 ; ESCAPE &0d52 f0 5d BEQ &0db1 ; stop_loading_levelset &0d54 20 e0 ff JSR &ffe0 ; OSRDCH &0d57 c9 ff CMP #&ff &0d59 d0 f1 BNE &0d4c ; find_start_of_block_loop &0d5b 88 DEY &0d5c d0 f0 BNE &0d4e ; find_start_of_block_inner_loop &0d5e a9 a0 LDA #&a0 &0d60 a0 0a LDY #&0a ; + &0aa0 &0d62 20 d4 0d JSR &0dd4 ; set_text_screen_address_from_A_Y &0d65 20 e0 ff JSR &ffe0 ; OSRDCH # Then one byte for levelset and block number &0d68 48 PHA &0d69 29 0f AND #&0f # low nibble is levelset &0d6b 20 ca 0d JSR &0dca ; plot_character_preserving_registers # Plot found levelset &0d6e a9 3f LDA #&3f ; "." &0d70 20 ca 0d JSR &0dca ; plot_character_preserving_registers &0d73 68 PLA &0d74 48 PHA &0d75 4a LSR A # high nibble is block number &0d76 4a LSR A &0d77 4a LSR A &0d78 4a LSR A &0d79 85 2a STA &2a ; block_number &0d7b 20 ca 0d JSR &0dca ; plot_character_preserving_registers # Plot found block &0d7e 68 PLA &0d7f e4 2a CPX &2a ; block_number # Is this the expected block? &0d81 d0 3f BNE &0dc2 ; unexpected_block &0d83 29 0f AND #&0f &0d85 c5 60 CMP &60 ; levelset_to_load &0d87 d0 39 BNE &0dc2 ; unexpected_block &0d89 a9 40 LDA #&40 ; " " &0d8b 20 ca 0d JSR &0dca ; plot_character_preserving_registers # Indicate data is loading &0d8e a0 00 LDY #&00 &0d90 84 2a STY &2a ; load_address_offset ; load_levelset_byte_loop # If so, read 256 bytes for a page of screen data &0d92 20 e0 ff JSR &ffe0 ; OSRDCH &0d95 91 5e STA (&5e),Y ; load_address &0d97 18 CLC &0d98 65 2a ADC &2a ; load_address_offset &0d9a 85 2a STA &2a ; load_address_offset &0d9c c8 INY &0d9d d0 f3 BNE &0d92 ; load_levelset_byte_loop &0d9f 20 e0 ff JSR &ffe0 ; OSRDCH # followed by a zero byte to mark end of block &0da2 c5 2a CMP &2a ; load_address_offset &0da4 d0 91 BNE &0d37 ; load_levelset_block_loop &0da6 e6 5f INC &5f ; load_address_high &0da8 e8 INX # Look for next block &0da9 e0 0c CPX #&0c &0dab f0 03 BEQ &0db0 ; finished_loading_levelset # Levelsets are 6 * &200 = &c00 bytes in length &0dad 4c 37 0d JMP &0d37 ; load_levelset_block_loop ; finished_loading_levelset &0db0 18 CLC # Leave with carry clear to indicate load successful ; stop_loading_levelset &0db1 08 PHP &0db2 a9 89 LDA #&89 ; Cassette motor control # Stop tape &0db4 a2 00 LDX #&00 ; relay off &0db6 20 f4 ff JSR &fff4 ; OSBYTE &0db9 a9 02 LDA #&02 ; Specify input stream &0dbb a2 00 LDX #&00 ; Use the keyboard for input &0dbd 20 f4 ff JSR &fff4 ; OSBYTE &0dc0 28 PLP &0dc1 60 RTS ; unexpected_block &0dc2 a9 3e LDA #&3e ; "!" &0dc4 20 ca 0d JSR &0dca ; plot_character_preserving_registers # Indicate data is not loading &0dc7 4c 37 0d JMP &0d37 ; load_levelset_block_loop ; plot_character_preserving_registers &0dca 48 PHA &0dcb 86 2b STX &2b ; tmp_x &0dcd 20 68 2f JSR &2f68 ; plot_character # Y is preserved by plot_character &0dd0 a6 2b LDX &2b ; tmp_x &0dd2 68 PLA &0dd3 60 RTS ; set_text_screen_address_from_A_Y &0dd4 85 53 STA &53 ; text_screen_address_low &0dd6 98 TYA &0dd7 18 CLC &0dd8 65 0b ADC &0b ; buffer_start_address_high &0dda 85 54 STA &54 ; text_screen_address_high &0ddc 60 RTS ; unused &0ddd 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f &0ded 4c 4f 41 44 20 3a 30 2e 53 43 52 45 45 4e 34 ; "LOAD :0.SCREEN4" &0dfc 00 00 00 00 ; sprite_data ; sprite_01 (SPRITE_WALL_HORIZONTAL) &0e00 04 0e 0e 0c 04 01 0c 0e 0c 0e 0e 08 01 0c 0e 07 &0e10 0c 0f 0f 03 08 0c 05 01 04 06 06 02 00 0d 0d 08 &0e20 00 77 11 55 cc 99 bb 22 02 88 dd 99 00 22 77 66 &0e30 00 dd 88 aa bb 33 11 44 00 ee ff 00 33 11 44 66 &0e40 00 bb 99 dd dd dd 44 00 00 66 33 bb 88 99 cc 00 &0e50 ee 66 44 00 66 ff ee 00 22 88 cc ee 66 66 22 00 &0e60 06 07 0f 01 04 04 06 06 03 07 06 00 05 0d 0c 06 &0e70 0b 02 00 0d 09 0b 0b 03 03 06 06 00 0a 0b 03 06 ; sprite_02 (SPRITE_WALL_VERTICAL) &0e80 04 0e 07 01 0c 0e 07 04 11 55 44 66 66 66 44 11 &0e90 00 99 bb 33 11 cc 66 33 03 06 04 01 03 07 04 00 &0ea0 01 0b 0f 06 00 07 0f 0c 33 77 66 00 44 66 77 22 &0eb0 bb 11 44 ee ee 77 77 33 03 07 06 04 01 03 07 04 &0ec0 00 03 09 0c 0f 07 03 08 00 55 77 22 00 33 77 66 &0ed0 00 55 77 33 aa 88 33 77 01 03 06 04 01 03 01 04 &0ee0 08 0d 0d 05 01 0c 07 01 44 11 33 77 00 33 77 44 &0ef0 11 44 66 77 44 11 77 44 07 06 04 01 03 07 06 00 ; sprite_03 (SPRITE_WALL) &0f00 04 0f 0e 0f 0d 0f 0f 0b 0e 0e 0a 0e 0e 07 0f 04 &0f10 07 0f 0d 0f 07 07 06 03 0c 07 0f 0d 0f 0e 0a 0f &0f20 0f 0d 0f 0b 0f 06 02 08 19 33 77 66 55 dd cc dd &0f30 89 cc ee 22 aa dd 99 dd 0f 0e 0a 0f 07 07 05 07 &0f40 0e 0e 0b 0f 0f 0d 0f 0e dd cc 66 66 77 3b 19 08 &0f50 33 bb 33 bb 66 ee 88 03 07 07 05 07 0f 0b 0f 05 &0f60 0b 0f 0d 0f 0e 0e 06 04 0a 07 05 07 0f 0d 0f 0f &0f70 07 0f 0d 0f 07 0e 0f 08 07 0b 0b 0d 0c 0e 0f 0e ; sprite_04 (SPRITE_SEA) &0f80 88 00 44 aa 00 20 11 66 90 00 22 80 77 cc 22 00 &0f90 40 33 dd 00 20 00 91 22 11 40 00 54 aa 00 10 c8 &0fa0 80 00 11 a0 00 11 66 88 b3 55 88 00 51 00 88 54 &0fb0 a8 00 cc 00 20 44 aa 11 33 00 80 66 bb 00 20 99 &0fc0 00 51 66 00 31 80 44 10 00 98 33 55 88 20 00 66 &0fd0 11 66 88 20 88 66 99 00 20 00 54 aa 00 40 22 11 &0fe0 44 33 00 90 00 00 66 99 aa 11 00 54 aa 00 20 00 &0ff0 b1 22 66 00 11 66 cc 10 88 66 80 10 aa 88 a8 77 ; sprite_05 (SPRITE_CAULDRON) &1000 00 00 00 00 00 00 11 22 00 00 00 00 00 c8 f5 fa &1010 00 00 00 00 00 32 f5 fa 00 00 00 00 00 00 88 44 &1020 22 22 11 11 11 22 66 77 31 cc 77 77 77 bb bb 55 &1030 c4 33 ee ee ee dd dd aa 44 44 88 88 88 44 66 ee &1040 77 ff ff ff ff ff ff ff 66 bb dd ee ff ff ff ff &1050 66 dd bb 77 ff ff ff ff ee ff ff ff ff ff ff ff &1060 77 77 33 33 11 00 00 00 ff ff ff ff ff ff 33 00 &1070 ff ff ff ff ff ff cc 00 ee ee cc cc 88 00 00 00 ; sprite_06 (SPRITE_STAIRS_RIGHT) &1080 00 00 00 00 00 10 10 1c 00 00 00 02 02 82 82 80 &1090 01 01 cd c5 cd c8 c5 cd 77 77 77 77 77 77 77 00 &10a0 1c 1c 1c 0c 00 10 1c 1c 82 82 82 00 02 82 82 82 &10b0 01 01 cc c4 c9 c5 c9 00 00 77 77 77 77 77 77 00 &10c0 1c 1c 10 00 0c 1c 1c 1c 82 82 80 02 02 82 82 82 &10d0 01 cd c9 c4 cd c9 01 01 00 77 77 77 77 77 77 00 &10e0 10 10 00 00 00 00 00 00 80 82 02 02 00 00 00 00 &10f0 c4 c8 c5 c9 cd 01 01 00 00 77 77 77 77 77 77 77 ; sprite_07 (SPRITE_STAIRS_LEFT) &1100 ee ee ee ee ee ee ee 00 08 08 3a 3b 3a 31 3b 39 &1110 00 00 00 04 04 10 14 14 00 00 00 00 00 80 80 83 &1120 00 ee ee ee ee ee ee 00 08 08 31 32 3b 39 3b 00 &1130 14 14 14 04 04 14 14 10 83 83 83 03 00 80 83 83 &1140 00 ee ee ee ee ee ee 00 08 3a 39 32 3b 39 08 08 &1150 14 14 10 04 04 14 14 14 83 83 80 00 03 83 83 83 &1160 00 ee ee ee ee ee ee ee 32 31 3a 39 3b 08 08 00 &1170 10 14 04 04 00 00 00 00 80 80 00 00 00 00 00 00 ; sprite_08 (SPRITE_STAIRS_UP) &1180 ff ff ff ff ff 00 0e 00 77 77 77 77 77 00 0f 00 &1190 ee ee ee ee ee 00 07 00 ff ff ff ff ff 00 07 00 &11a0 72 75 76 00 06 00 30 30 ba b1 ba 00 0d 00 b0 b0 &11b0 d9 d5 dd 00 0b 00 d0 d0 e4 ea e6 00 06 00 c0 c0 &11c0 30 00 03 00 10 10 10 00 b0 00 06 00 d0 d0 d0 00 &11d0 d0 00 0e 00 b0 b0 b0 00 c0 00 0c 00 80 80 80 00 &11e0 01 00 00 00 00 00 00 00 0d 00 0f 0f 0f 00 0d 00 &11f0 0d 00 07 07 07 00 0b 00 08 00 00 00 00 00 00 00 ; sprite_09 (SPRITE_STAIRS_DOWN) &1200 00 00 00 00 00 00 00 01 00 0d 00 0f 0f 0f 00 0d &1210 00 0b 00 07 07 07 00 0d 00 00 00 00 00 00 00 08 &1220 00 10 10 10 00 03 00 30 00 d0 d0 d0 00 06 00 b0 &1230 00 b0 b0 b0 00 0e 00 d0 00 80 80 80 00 0c 00 c0 &1240 30 30 00 06 00 76 75 72 b0 b0 00 0d 00 b9 ba bb &1250 d0 d0 00 0b 00 d4 dd d5 c0 c0 00 06 00 ec ea e4 &1260 00 0e 00 ff ff ff ff ff 00 0f 00 77 77 77 77 77 &1270 00 07 00 ee ee ee ee ee 00 07 00 ff ff ff ff ff ; sprite_0a (SPRITE_DOOR) &1280 00 10 10 50 50 c0 e0 80 90 b0 a0 b0 90 c0 00 01 &1290 90 d0 40 c0 90 30 00 04 00 80 a0 20 70 40 10 30 &12a0 20 e0 40 01 51 d1 d1 90 11 15 55 55 77 fc d1 55 &12b0 44 45 55 dd f7 71 54 55 70 70 20 04 54 dc d4 70 &12c0 11 51 d1 81 63 e3 41 11 55 55 76 3d 15 15 1d 55 &12d0 55 dd f3 74 55 55 55 55 44 54 74 fc d0 44 74 74 &12e0 91 d1 d1 50 11 d1 c0 50 55 76 f9 d5 44 10 50 d0 &12f0 dd f3 74 55 11 00 b0 b0 44 54 fc f0 54 44 10 b0 ; sprite_0b (SPRITE_KEY) &1300 00 00 11 11 33 33 33 33 03 cf ee 88 00 00 00 44 &1310 08 6e ff 33 11 11 11 11 00 00 00 00 88 88 88 88 &1320 22 55 22 00 00 00 00 00 88 55 aa 55 bb 33 33 33 &1330 bb 77 ee dd aa 88 88 88 88 00 00 00 00 00 00 00 &1340 00 00 00 00 00 00 00 11 13 13 13 13 13 13 13 df &1350 88 88 88 88 88 88 88 88 00 00 00 00 00 00 00 00 &1360 11 00 00 00 00 11 11 00 df df 57 57 ff df ff 11 &1370 88 88 88 88 88 88 88 00 00 00 00 00 00 00 00 00 ; sprite_0c (SPRITE_TRAPDOOR) &1380 00 00 01 03 00 06 06 02 00 00 0b 0b 0b 0b 00 d0 &1390 00 00 02 06 07 0b 00 b0 00 00 08 0c 04 06 06 00 &13a0 00 06 06 04 00 06 06 02 d0 00 ff dd dd 99 99 00 &13b0 b0 00 ff bb bb 22 22 00 00 06 06 04 00 02 06 06 &13c0 04 06 06 02 00 04 06 06 44 44 dd dd ff 00 d0 d0 &13d0 99 99 bb bb ff 00 b0 b0 04 02 06 06 02 00 04 06 &13e0 02 03 01 00 00 00 00 00 00 04 06 06 00 00 00 00 &13f0 00 0e 0e 0c 00 00 00 00 06 0e 0c 0c 00 00 00 00 ; sprite_0d (SPRITE_EARTH) &1400 44 11 00 aa 00 00 22 00 11 00 44 00 00 aa 00 00 &1410 00 00 44 11 88 22 00 88 88 11 00 44 00 22 88 11 &1420 55 00 88 22 00 00 22 88 44 11 00 22 88 00 44 11 &1430 00 55 00 22 88 00 44 00 00 00 44 00 99 00 00 88 &1440 00 44 00 aa 00 11 44 00 00 88 22 00 44 00 55 00 &1450 44 00 11 88 00 11 44 00 22 00 00 44 00 11 00 88 &1460 22 88 00 00 22 88 00 11 22 88 00 44 11 00 44 00 &1470 00 22 88 11 44 00 99 00 22 00 44 11 00 44 00 00 ; sprite_0e (SPRITE_SKELETON) &1480 00 00 00 00 00 00 22 33 33 77 ff dd 99 ff 66 33 &1490 88 cc ee 66 22 ee cc 88 00 00 00 00 00 00 00 00 &14a0 55 55 cc 88 88 99 aa ee 55 66 bb 00 dd aa 22 44 &14b0 44 cc 88 00 66 aa 99 55 00 00 00 00 cc ee 22 bb &14c0 cc 55 00 55 ee aa aa bb cc 22 88 44 22 88 88 66 &14d0 55 88 22 44 99 22 22 cc 11 99 33 aa 00 22 77 dd &14e0 99 55 44 66 22 22 55 aa 00 88 ee 44 00 88 00 88 &14f0 11 33 ee 44 00 00 11 00 bb 22 66 44 cc 88 ee 99 ; sprite_0f (SPRITE_SKELETON_FRAME_TWO) &1500 00 00 00 00 00 00 22 33 33 77 ff dd 99 ff 66 33 &1510 88 cc ee 66 22 ee cc 88 00 00 00 00 00 00 00 00 &1520 55 55 cc 88 88 99 aa ee 55 44 ee 33 cc bb 22 44 &1530 44 44 cc 88 66 aa 99 55 00 00 00 00 cc ee 22 bb &1540 cc 55 00 55 ee aa aa bb cc 22 88 44 22 88 88 66 &1550 55 88 22 44 99 22 22 cc 11 99 33 aa 00 22 77 dd &1560 99 55 44 66 22 22 55 aa 00 88 ee 44 00 88 00 88 &1570 11 33 ee 44 11 33 11 00 bb 66 44 cc 88 22 cc 00 ; sprite_10 (SPRITE_GLOOK) &1580 00 00 00 11 11 22 22 44 11 55 55 66 bb ff ff ff &1590 44 44 55 99 77 ee ff ff 00 00 00 00 00 88 88 cc &15a0 55 55 77 ff bb ff bb ff ff ff ff dd bb 77 77 dd &15b0 ff ff ff 77 bb dd ff bb cc cc cc ee ee ee ee ee &15c0 ff ff ff ff ff ff 77 77 99 17 17 17 99 ff ff ff &15d0 33 1d 1d 1d 33 ff ff ff ee ee ee ee ee ee cc cc &15e0 77 77 33 33 11 11 00 00 ff ff ff ff ff ff ff 33 &15f0 ff ff ff ff ff ff ee 88 cc cc 88 88 00 00 00 00 ; sprite_11 (SPRITE_GLOOK_EXCITED) &1600 00 00 00 00 22 33 22 66 00 22 aa aa dd 22 ff 99 &1610 88 aa aa aa 66 bb ff 33 00 00 00 00 88 88 88 cc &1620 55 55 55 ff bb ff bb ff 77 99 11 13 17 17 17 99 &1630 dd 33 11 19 1d 1d 1d 33 cc cc cc ee ee ee ee ee &1640 ff ff ff ff ff ff 77 77 ff ff ff ff ff ff ff ff &1650 ff ff ff ff ff ff ff ff ee ee ee ee ee ee cc cc &1660 77 77 33 33 11 11 00 00 ff ff ff ff ff ff ff 33 &1670 ff ff ff ff ff ff ee 88 cc cc 88 88 00 00 00 00 ; sprite_12 (SPRITE_GLOOK_STRAINING) &1680 00 00 00 22 33 22 33 77 22 aa aa bb 55 ee ff ff &1690 88 88 aa aa 66 dd ff ff 00 00 00 88 88 88 88 cc &16a0 55 55 55 99 bb bb ff bb ff dd 99 33 77 ff bb dd &16b0 ff 77 33 99 dd ff bb 77 cc cc cc ee ee ee ee ee &16c0 ff ff ff ff ff ff 77 77 99 99 ff dd bb ff ff ff &16d0 33 33 ff 77 bb ff ff ff ee ee ee ee ee ee cc cc &16e0 77 77 33 33 11 11 00 00 ff ff ff ff ff ff ff 33 &16f0 ff ff ff ff ff ff ee 88 cc cc 88 88 00 00 00 00 ; sprite_13 (SPRITE_MONSTER) &1700 00 00 00 10 00 00 00 10 00 00 00 80 b0 70 f6 d6 &1710 00 00 00 30 a0 c0 ec 7c 00 00 00 00 00 00 00 00 &1720 30 30 60 51 51 51 20 10 d4 f2 f0 50 70 30 00 f0 &1730 74 f8 e0 51 d1 91 00 f0 00 80 80 40 40 40 80 00 &1740 00 10 30 20 50 50 50 50 f0 70 b0 f0 f0 f0 f0 e0 &1750 e0 d0 b0 e0 f0 f0 f0 f0 00 00 80 80 40 40 40 40 &1760 20 00 00 00 00 00 30 10 f0 b0 40 c0 c0 80 80 80 &1770 e0 a0 60 60 60 20 30 30 80 00 00 00 00 00 80 00 ; sprite_14 (SPRITE_MONSTER_FRAME_TWO) &1780 00 00 10 00 00 00 00 10 00 00 00 80 b0 70 f6 f6 &1790 00 00 00 30 a0 c0 ec fc 00 00 00 00 00 00 00 00 &17a0 10 30 30 70 70 60 20 10 d6 d0 f0 f0 50 b8 88 88 &17b0 7c 70 f0 f0 50 a2 22 32 00 80 80 c0 c0 c0 80 00 &17c0 00 10 30 70 50 90 90 80 f0 70 b0 f0 f0 f0 e0 f0 &17d0 e0 d0 b0 d0 d0 d0 e0 e0 00 00 00 00 00 00 00 00 &17e0 00 10 10 10 30 30 00 00 f0 b0 80 00 80 00 00 00 &17f0 80 c0 c0 40 40 40 70 60 00 00 00 00 00 00 00 00 ; sprite_15 (SPRITE_MONSTER_FRAME_THREE) &1800 00 00 00 10 00 00 00 10 00 00 00 80 b0 70 f6 d6 &1810 00 00 10 20 a0 c0 ec 7c 00 00 00 00 00 00 00 00 &1820 30 30 30 60 51 51 51 20 d4 f2 f0 f0 50 70 00 80 &1830 74 f8 f0 e0 51 d1 11 20 00 80 80 c0 40 40 40 80 &1840 00 10 10 10 10 10 10 10 f0 30 d0 70 70 f0 70 a0 &1850 e0 90 70 f0 f0 f0 f0 e0 00 00 80 c0 40 20 20 00 &1860 00 00 00 00 00 00 10 00 b0 70 60 40 40 40 c0 c0 &1870 e0 b0 30 10 30 10 00 00 00 00 00 00 80 80 00 00 ; sprite_16 (SPRITE_SPIDER) &1880 00 00 00 00 00 40 60 70 00 00 00 01 07 0f 0f 0f &1890 00 00 00 08 0e 0f 0f 0f 00 00 00 00 00 20 60 e0 &18a0 50 41 41 41 41 41 40 60 0f 4f ab ab 4f 0f 09 03 &18b0 0f 2f 5d 5d 2f 0f 09 0c a0 28 28 28 28 28 20 60 &18c0 20 20 20 20 20 20 20 20 02 02 00 00 00 00 00 00 &18d0 04 04 00 00 00 00 00 00 40 40 40 40 40 40 c0 80 &18e0 60 40 40 40 40 40 40 40 00 00 00 00 00 00 00 00 &18f0 00 00 00 10 10 10 10 10 80 80 80 80 00 00 00 00 ; sprite_17 (SPRITE_SPIDER_FRAME_TWO) &1900 00 00 00 00 00 20 30 30 00 00 00 00 03 07 07 87 &1910 00 00 00 0c 0f 0f 0f 0f 00 00 00 00 00 18 38 78 &1920 20 20 20 20 20 20 20 30 87 2f 5d 5d 2f 07 07 01 &1930 0f 1f 2e 2e 1f 0f 0f 02 58 1c 9c 9c 1c 18 18 30 &1940 10 10 10 10 00 00 00 00 01 00 00 80 80 80 80 80 &1950 02 0c 00 00 00 00 00 00 20 20 20 20 20 20 20 20 &1960 00 00 00 00 00 00 00 00 80 80 c0 40 40 40 40 40 &1970 00 00 00 00 00 00 00 00 20 20 30 10 10 10 10 10 ; sprite_18 (SPRITE_FOZZY) &1980 11 33 33 22 22 11 03 07 01 8e 06 05 8f 0f 0f 0f &1990 0c 0b 0b 0d 0f 0f 0f 0f 44 ee 66 22 aa 4c 0e 0f &19a0 05 06 03 01 00 00 01 03 0f 07 01 08 0c 0f 0f 07 &19b0 0f 0f 0c 00 01 0f 0f 0f 0d 03 06 0c 08 08 0c 0e &19c0 06 0d 0f 0f 07 08 0f 07 0b 01 0d 0d 0d 0d 03 0f &19d0 0d 08 0b 0b 0b 0b 0c 0f 06 0b 0f 0f 0e 01 0f 0f &19e0 07 03 03 01 00 03 03 01 0f 0f 0f 0f 03 0d 0e 0e &19f0 0f 0f 0f 0f 0c 0b 07 07 0e 0e 0c 08 00 0c 0c 08 ; sprite_19 (SPRITE_FOZZY_FRAME_TWO) &1a00 11 33 33 22 22 11 03 07 01 8e 06 05 8f 0f 0f 0f &1a10 0c 0b 0b 0d 0f 0f 0f 0f 44 ee 66 22 aa 4c 0e 0f &1a20 05 06 03 01 00 00 01 03 0f 03 00 08 0e 0f 0f 07 &1a30 0f 0f 0c 00 03 0f 0f 0f 0f 0f 02 0c 08 08 0c 0e &1a40 06 0d 0f 0f 07 08 0f 07 09 0d 0d 0d 0d 03 0f 0f &1a50 0f 0f 0f 0f 0f 0f 0f 0f 0e 0d 0d 0d 0d 03 07 03 &1a60 07 03 02 01 03 03 01 00 0f 0f 07 0b 0d 0d 0e 0e &1a70 0e 0e 0e 0f 0e 09 03 03 0e 0e 0c 02 04 08 0c 0c ; sprite_1a (SPRITE_FOZZY_FRAME_THREE) &1a80 11 33 33 22 22 11 03 07 01 8e 06 05 8f 0f 0f 0f &1a90 0c 0b 0b 0d 0f 0f 0f 0f 44 ee 66 22 aa 4c 0e 0f &1aa0 07 07 02 01 00 00 01 03 0f 0f 03 08 0e 0f 0f 0f &1ab0 0f 0e 08 01 07 0f 0f 0e 0d 03 06 0c 08 08 0c 0e &1ac0 07 0b 0b 0b 0b 0c 0e 04 0f 0f 0f 0f 0f 0f 0f 0f &1ad0 09 0b 0b 0b 0b 0c 0f 0f 06 0b 0f 0f 0e 01 0f 0f &1ae0 07 03 03 00 00 00 01 01 07 07 07 0f 03 0d 0e 0e &1af0 0f 0f 0e 0d 0d 0b 03 03 0e 0e 02 08 0c 0c 0c 08 ; sprite_1b (SPRITE_BONO_DEAD) &1b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &1b10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &1b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &1b30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &1b40 00 00 00 00 00 40 60 60 00 00 00 00 00 00 00 10 &1b50 00 00 00 00 00 00 00 c0 00 00 00 00 00 10 30 30 &1b60 70 70 70 70 30 30 30 10 30 70 70 b0 90 f0 c0 00 &1b70 e0 f0 f0 e0 c0 f0 10 00 70 70 70 f0 e0 e0 e0 40 ; sprite_1c (SPRITE_BONO_RIGHT) &1b80 00 00 00 00 00 00 00 00 10 10 50 50 60 70 70 f0 &1b90 00 40 62 73 e2 d1 e0 f0 00 00 00 00 00 00 00 80 &1ba0 00 00 00 00 00 00 00 00 f0 f0 e0 f0 70 70 30 30 &1bb0 f0 e0 d1 11 d1 b3 b2 e0 00 80 80 00 c0 80 00 00 &1bc0 00 00 00 00 00 00 00 00 70 70 50 50 60 60 70 30 &1bd0 f0 f0 70 70 b0 c0 60 60 00 00 80 80 80 80 80 80 &1be0 00 00 00 00 00 00 00 00 30 30 10 00 00 10 10 10 &1bf0 90 e0 c0 c0 c0 40 70 70 00 00 00 00 00 00 80 00 ; sprite_1d (SPRITE_BONO_RIGHT_FRAME_TWO) &1c00 00 00 00 00 00 00 00 00 00 10 10 50 50 60 70 70 &1c10 00 00 40 62 73 e2 d1 e0 00 00 00 00 00 00 00 00 &1c20 00 00 00 00 00 00 00 00 f0 f0 f0 e0 f0 70 70 30 &1c30 f0 f0 e0 d1 11 d1 b3 b2 80 00 80 80 00 c0 80 00 &1c40 00 00 00 00 00 00 00 00 70 70 50 50 60 60 70 30 &1c50 d0 f0 70 40 a0 e0 00 f0 00 00 80 a0 a0 a0 80 00 &1c60 00 00 00 00 00 00 00 00 30 30 10 00 30 60 70 30 &1c70 f0 e0 c0 c0 60 60 30 b0 00 00 00 00 00 40 c0 80 ; sprite_1e (SPRITE_BONO_RIGHT_FRAME_THREE) &1c80 00 00 00 00 00 00 00 00 00 10 10 50 50 60 70 70 &1c90 00 00 40 62 73 e2 d1 e0 00 00 00 00 00 00 00 00 &1ca0 00 00 00 00 00 00 00 00 f0 f0 f0 e0 f0 70 70 30 &1cb0 f0 f0 e0 d1 11 d1 b3 b2 80 00 80 80 00 c0 80 00 &1cc0 00 00 00 00 00 00 00 00 70 70 50 60 60 70 70 30 &1cd0 d0 f0 70 a0 90 60 90 f0 00 80 40 c0 c0 00 80 80 &1ce0 00 00 00 00 00 00 00 00 30 30 10 10 30 70 70 10 &1cf0 f0 e0 80 a0 30 10 90 c0 00 00 00 00 00 20 e0 c0 ; sprite_1f (SPRITE_BONO_LEFT) &1d00 00 00 00 00 00 00 00 00 00 00 11 33 11 22 10 70 &1d10 20 a0 a0 a0 d0 f0 f0 f0 00 00 80 80 80 80 80 c0 &1d20 00 00 00 00 00 00 00 00 30 50 62 22 e2 71 31 10 &1d30 f0 f0 d0 30 f0 70 70 f0 c0 c0 c0 c0 80 80 00 00 &1d40 00 00 00 00 00 00 00 00 20 30 70 70 70 40 50 50 &1d50 f0 f0 a0 a0 50 d0 b0 b0 00 80 80 80 80 80 80 80 &1d60 00 00 00 00 00 00 00 00 20 10 00 00 00 00 70 30 &1d70 70 f0 e0 c0 e0 a0 a0 60 00 00 00 00 00 00 00 00 ; sprite_20 (SPRITE_BONO_LEFT_FRAME_TWO) &1d80 00 00 00 00 00 00 00 00 00 00 00 11 33 11 22 10 &1d90 00 20 a0 a0 a0 d0 f0 f0 00 00 00 80 80 80 80 80 &1da0 00 00 00 00 00 00 00 00 70 30 50 62 22 e2 73 31 &1db0 f0 f0 f0 d0 30 f0 70 70 c0 c0 c0 c0 c0 80 80 00 &1dc0 00 00 00 10 10 10 00 00 20 30 70 40 50 50 40 30 &1dd0 f0 f0 a0 a0 50 d0 30 f0 00 80 80 80 80 80 80 80 &1de0 00 00 00 00 00 00 00 00 30 10 00 00 10 90 f0 70 &1df0 f0 f0 e0 c0 b0 90 30 70 00 00 00 00 00 80 80 00 ; sprite_21 (SPRITE_BONO_LEFT_FRAME_THREE) &1e00 00 00 00 00 00 00 00 00 00 00 00 11 33 11 22 10 &1e10 00 20 a0 a0 a0 d0 f0 f0 00 00 00 80 80 80 80 80 &1e20 00 00 00 00 00 00 00 00 70 30 50 62 22 e2 73 31 &1e30 f0 f0 f0 d0 30 f0 70 70 c0 c0 c0 c0 c0 80 80 00 &1e40 00 00 00 00 00 00 00 00 60 70 b0 d0 e0 30 40 70 &1e50 f0 f0 a0 50 50 b0 70 f0 00 80 80 80 80 80 80 80 &1e60 00 00 00 00 00 10 10 00 30 10 00 10 30 20 e0 e0 &1e70 f0 f0 60 60 30 30 70 e0 00 00 00 00 00 80 80 00 ; sprite_22 (SPRITE_BONO_VERTICAL) &1e80 00 00 10 10 30 20 20 30 00 00 00 20 64 fe ba aa &1e90 00 00 10 90 d4 ee aa ba 00 00 00 00 80 80 80 80 &1ea0 10 10 30 30 30 20 10 00 54 b0 d0 f0 70 88 fc f4 &1eb0 54 b0 70 f0 d0 22 f6 e4 00 00 a0 a0 a0 a0 20 60 &1ec0 20 70 70 d0 90 90 90 90 f0 30 d0 f0 f0 f0 f0 b0 &1ed0 e0 90 70 f0 e0 f0 b0 20 c0 80 80 00 00 00 00 00 &1ee0 10 00 00 00 00 10 70 30 80 c0 c0 60 e0 c0 80 00 &1ef0 70 30 10 00 00 00 00 00 00 80 80 c0 00 00 00 00 ; sprite_23 (SPRITE_BONO_VERTICAL_FRAME_TWO) &1f00 00 00 10 10 30 20 20 30 00 00 00 20 64 fe ba aa &1f10 00 00 10 90 d4 ee aa ba 00 00 00 00 80 80 80 80 &1f20 10 10 30 b0 b0 a0 90 c0 54 b0 d0 f0 70 88 fc f4 &1f30 54 b0 70 f0 d0 22 f6 e4 00 00 80 80 80 80 00 00 &1f40 60 70 30 10 00 10 10 00 f0 30 d0 f0 f0 f0 b0 90 &1f50 e0 90 70 f0 f0 f0 f0 b0 80 c0 40 60 20 20 20 20 &1f60 10 30 30 60 00 00 00 00 c0 80 00 00 00 00 00 00 &1f70 30 60 60 c0 e0 70 30 10 20 00 00 00 00 00 c0 80 ; sprite_24 (SPRITE_BONO_YAWNING) &1f80 00 10 10 30 20 20 30 10 00 00 20 60 f0 f4 fe 10 &1f90 00 10 90 d0 e0 e4 fe 10 00 00 00 80 80 80 80 00 &1fa0 10 30 20 20 20 20 10 00 f0 d0 f8 88 89 8b 03 81 &1fb0 f0 70 e2 22 22 2a 18 20 00 80 80 80 80 80 00 00 &1fc0 30 70 50 d0 90 90 90 90 c0 f0 f0 f0 f0 f0 b0 80 &1fd0 70 f0 f0 f0 f0 f0 b0 30 80 c0 40 60 20 20 20 20 &1fe0 c0 40 00 10 30 30 70 40 c0 c0 60 e0 c0 80 00 00 &1ff0 60 60 c0 f0 70 30 10 00 60 40 00 00 80 80 c0 40 ; sprite_25 (SPRITE_BONO_SLEEPY) &2000 00 00 10 10 30 20 20 30 00 00 00 20 60 f0 fe aa &2010 00 00 10 90 d0 e0 ee ba 00 00 00 00 80 80 80 80 &2020 10 10 30 30 30 20 10 00 54 b0 d0 f0 70 88 fc f4 &2030 54 b0 70 f0 d0 22 f6 e4 00 00 80 80 80 80 00 00 &2040 20 70 50 d0 90 90 90 90 f0 30 d0 f0 f0 f0 b0 80 &2050 e0 90 70 f0 f0 f0 b0 30 80 c0 40 60 20 20 20 20 &2060 c0 40 00 10 30 30 70 40 c0 c0 60 e0 c0 80 00 00 &2070 60 60 c0 f0 f0 70 00 00 60 40 00 00 c0 c0 00 00 ; sprite_26 (SPRITE_BONO_WINKING) &2080 00 00 10 10 30 20 20 30 00 00 00 20 64 fe ba aa &2090 00 00 10 90 d0 e0 e0 f0 00 00 00 00 80 80 80 80 &20a0 30 b0 90 d0 d0 c0 90 80 54 b0 d0 f0 70 88 fc f4 &20b0 10 f0 70 d0 b2 76 f4 e0 00 80 80 80 80 00 00 00 &20c0 80 b0 f0 f0 70 10 10 10 f0 30 d0 f0 f0 f0 b0 80 &20d0 e0 90 70 f0 f0 f0 b0 30 80 c0 40 60 20 20 20 20 &20e0 00 00 00 10 30 30 70 40 c0 c0 60 e0 c0 80 00 00 &20f0 60 60 c0 f0 70 30 10 00 60 40 00 00 80 80 c0 40 ; sprite_27 (SPRITE_BONO_PICKING_NOSE) &2100 00 00 10 10 30 20 20 30 00 00 00 20 64 fe ba aa &2110 00 00 10 90 d4 ee aa ba 00 00 00 00 80 80 80 80 &2120 10 10 30 30 30 10 00 00 74 a0 d0 a0 60 40 d0 d0 &2130 d4 f0 70 70 d0 22 f6 e4 00 00 80 80 80 80 00 00 &2140 20 50 70 60 50 10 10 10 b0 b0 50 f0 f0 f0 b0 80 &2150 e0 90 70 f0 f0 f0 b0 30 80 c0 40 60 20 20 20 20 &2160 00 00 00 10 30 30 70 40 c0 c0 60 e0 c0 80 00 00 &2170 60 60 c0 f0 70 30 10 00 60 40 00 00 80 80 c0 40 ; sprite_28 (SPRITE_BONO_WAITING) &2180 00 00 10 10 30 20 20 30 00 00 00 20 64 fe ba aa &2190 00 00 10 90 d4 ee aa ba 00 00 00 00 80 80 80 80 &21a0 10 10 30 30 30 20 10 00 54 b0 d0 f0 70 88 fc f4 &21b0 54 b0 70 f0 d0 22 f6 e4 00 00 80 80 80 80 00 00 &21c0 20 70 50 d0 90 90 90 90 f0 30 d0 f0 f0 f0 b0 80 &21d0 e0 90 70 f0 f0 f0 b0 30 80 c0 40 60 20 20 20 20 &21e0 c0 40 00 10 30 30 70 40 c0 c0 60 e0 c0 80 00 00 &21f0 60 60 c0 f0 70 30 10 00 60 40 00 00 80 80 c0 40 ; swap_buffer_address &2200 a9 3f LDA #&3f # Screen buffers are at &3700 &2202 c5 0b CMP &0b ; buffer_start_address_high &2204 d0 02 BNE &2208 ; leave &2206 a9 67 LDA #&67 # and &6700 ; leave &2208 60 RTS ; clip_sprite_to_left_edge_of_screen &2209 49 ff EOR #&ff &220b 0a ASL A &220c 0a ASL A &220d 0a ASL A &220e 69 08 ADC #&08 &2210 85 51 STA &51 ; sprite_start &2212 88 DEY &2213 8a TXA &2214 e9 d7 SBC #&d7 &2216 aa TAX &2217 b0 1c BCS &2235 ; plot_sprite_after_clipping # Always branches ; clip_sprite_to_right_edge_of_screen &2219 49 3f EOR #&3f &221b 0a ASL A &221c 0a ASL A &221d 0a ASL A &221e 69 28 ADC #&28 &2220 85 52 STA &52 ; sprite_width &2222 d0 11 BNE &2235 ; plot_sprite_after_clipping # Branches unless sprite_x is &24 (so always branches) ; plot_sprite # Called with A = sprite, X = sprite_x, Y = sprite_y &2224 84 50 STY &50 ; group &2226 a9 00 LDA #&00 &2228 85 51 STA &51 ; sprite_start &222a a9 20 LDA #&20 &222c 85 52 STA &52 ; sprite_width &222e 8a TXA &222f 30 d8 BMI &2209 ; clip_sprite_to_left_edge_of_screen &2231 c9 21 CMP #&21 &2233 b0 e4 BCS &2219 ; clip_sprite_to_right_edge_of_screen ; plot_sprite_after_clipping &2235 18 CLC &2236 98 TYA &2237 69 03 ADC #&03 &2239 a8 TAY &223a a9 00 LDA #&00 &223c 85 49 STA &49 ; screen_address_high &223e 8a TXA &223f 0a ASL A &2240 0a ASL A &2241 0a ASL A &2242 26 49 ROL &49 ; screen_address_high &2244 85 48 STA &48 ; screen_address_low &2246 84 28 STY &28 ; sprite_y &2248 a9 00 LDA #&00 &224a 46 28 LSR &28 ; sprite_y &224c 6a ROR A &224d 46 28 LSR &28 ; sprite_y &224f 6a ROR A &2250 65 48 ADC &48 ; screen_address_low &2252 85 48 STA &48 ; screen_address_low &2254 98 TYA &2255 65 28 ADC &28 ; sprite_y &2257 65 49 ADC &49 ; screen_address_high &2259 65 0b ADC &0b ; buffer_start_address_high &225b 85 49 STA &49 ; screen_address_high &225d a5 48 LDA &48 ; screen_address_low &225f e9 af SBC #&af &2261 85 48 STA &48 ; screen_address_low &2263 a5 49 LDA &49 ; screen_address_high &2265 e9 03 SBC #&03 &2267 85 49 STA &49 ; screen_address_high &2269 20 7b 22 JSR &227b ; plot_sprite_group &226c 20 99 22 JSR &2299 ; move_to_next_group_of_sprite_and_screen &226f 20 7b 22 JSR &227b ; plot_sprite_group &2272 20 99 22 JSR &2299 ; move_to_next_group_of_sprite_and_screen &2275 20 7b 22 JSR &227b ; plot_sprite_group &2278 20 99 22 JSR &2299 ; move_to_next_group_of_sprite_and_screen ; plot_sprite_group &227b a5 50 LDA &50 ; group &227d c9 14 CMP #&14 &227f b0 0f BCS &2290 ; leave # Don't plot if above or below screen &2281 a4 51 LDY &51 ; start_offset &2283 a5 41 LDA &41 ; sprite_address_high # Zero if plotting SPRITE_EMPTY &2285 f0 0a BEQ &2291 ; wipe_sprite_byte_loop ; plot_sprite_byte_loop &2287 b1 40 LDA (&40),Y ; sprite_address &2289 91 48 STA (&48),Y ; screen_address &228b c8 INY &228c c4 52 CPY &52 ; sprite_width &228e d0 f7 BNE &2287 ; plot_sprite_byte_loop &2290 60 RTS ; wipe_sprite_byte_loop &2291 91 48 STA (&48),Y ; screen_address &2293 c8 INY &2294 c4 52 CPY &52 ; sprite_width &2296 d0 f9 BNE &2291 ; wipe_sprite_byte_loop &2298 60 RTS ; move_to_next_group_of_sprite_and_screen &2299 e6 50 INC &50 ; group &229b 18 CLC &229c a5 40 LDA &40 ; sprite_address_low &229e 69 20 ADC #&20 &22a0 85 40 STA &40 ; sprite_address_low ; move_to_next_group_of_screen &22a2 18 CLC &22a3 a5 48 LDA &48 ; screen_address_low &22a5 69 40 ADC #&40 &22a7 85 48 STA &48 ; screen_address_low &22a9 a5 49 LDA &49 ; screen_address_high &22ab 69 01 ADC #&01 &22ad 85 49 STA &49 ; screen_address_high &22af 60 RTS ; calculate_sprite_address &22b0 c9 00 CMP #&00 ; SPRITE_EMPTY &22b2 f0 0c BEQ &22c0 ; leave_with_zero # sprite_address_high is zero for SPRITE_EMPTY &22b4 e9 01 SBC #&01 &22b6 4a LSR A &22b7 48 PHA &22b8 a9 00 LDA #&00 &22ba 6a ROR A &22bb 85 40 STA &40 ; sprite_address_low &22bd 68 PLA &22be 69 0e ADC #&0e ; &0e00 = sprite_data # Sprite address is &e00 + &80 * (sprite - 1) ; leave_with_zero &22c0 85 41 STA &41 ; sprite_address_high &22c2 60 RTS ; plot_completion_text &22c3 20 7c 66 JSR &667c ; clear_screen &22c6 20 d2 2f JSR &2fd2 ; plot_text &22c9 80 7f ff &22cc 0b 35 2c 2f 2f 2c 24 31 37 3e ; "Brilliant" &22d6 80 f4 f0 &22d9 22 32 38 40 2b 24 39 28 40 26 32 30 33 2f 28 37 ; "You have completed every screen!" &22e9 28 27 40 28 39 28 35 3c 40 36 26 35 28 28 31 3e &22f9 ff &22fa 60 RTS ; completed_without_passwords &22fb a2 18 LDX #&18 # Diagonal dots background &22fd 20 c3 22 JSR &22c3 ; plot_completion_text &2300 20 d2 2f JSR &2fd2 ; plot_text &2303 81 f3 0f &2306 22 32 38 35 40 19 24 36 36 3a 32 35 27 ; "Your Password" &2313 82 45 0f &2316 2c 36 40 &2319 0d 1e 17 10 0e 18 17 ; "DUNGEON" &2320 ff &2321 4c 53 23 JMP &2353 ; wait_for_key_press_and_return_to_title_screen ; completion_screen &2324 a5 21 LDA &21 ; first_level_number_as_bcd &2326 c9 01 CMP #&01 # Did the player start from the first screen? &2328 f0 d1 BEQ &22fb ; completed_without_passwords &232a a2 10 LDX #&10 # Wavy background &232c 20 c3 22 JSR &22c3 ; plot_completion_text &232f 20 d2 2f JSR &2fd2 ; plot_text &2332 81 e8 0f &2335 0b 38 37 40 31 32 3a 40 37 35 3c 40 3a 2c 37 2b ; "But now try without passwords" &2345 32 38 37 40 33 24 36 36 3a 32 35 27 36 &2352 ff ; wait_for_key_press_and_return_to_title_screen &2353 20 99 30 JSR &3099 ; wait_for_keypress &2356 4c 2d 24 JMP &242d ; title_screen ; initialise_level &2359 a5 19 LDA &19 ; levelset &235b c9 05 CMP #&05 # Display completion screen after fourth levelset &235d f0 c5 BEQ &2324 ; completion_screen &235f c5 1a CMP &1a ; loaded_levelset &2361 f0 03 BEQ &2366 ; skip_load &2363 20 6f 2e JSR &2e6f ; load_levelset ; skip_load &2366 a0 00 LDY #&00 &2368 84 28 STY &28 ; levelset_address_low &236a 84 2b STY &2b ; tile_y &236c 84 2c STY &2c ; active_level_data_address_low &236e 84 2e STY &2e ; levelset_address_nibble &2370 a5 18 LDA &18 ; level_in_set &2372 0a ASL A # Packed level data is &200 bytes per level &2373 69 33 ADC #&33 ; &3300 = levelset_data # at &3300, &3500, &3700, &3900, &3b00 or &3d00 &2375 85 29 STA &29 ; levelset_address_high &2377 69 01 ADC #&01 &2379 8d 82 23 STA &2382 ; level_colour_address_high &237c a9 04 LDA #&04 ; &0400 = active_level_data &237e 85 2d STA &2d ; active_level_data_address_high &2380 ad ff ff LDA &ffff # Last byte of packed level data is level base colour # actually LDA level_colour_address # at &34ff, &36ff, &38ff, &3aff, &3cff or &3eff &2383 a2 01 LDX #&01 &2385 20 79 30 JSR &3079 ; set_colour # Change colour 1 to level base colour &2388 c8 INY ; unpack_level_y_loop &2389 84 2a STY &2a; tile_x ; unpack_level_x_loop &238b 20 0d 24 JSR &240d ; get_nibble_of_levelset_data # One nibble per tile &238e c9 0f CMP #&0f &2390 d0 06 BNE &2398 ; not_special_tile &2392 20 0d 24 JSR &240d ; get_nibble_of_levelset_data # except special tiles, which are two nibbles &2395 18 CLC &2396 69 0f ADC #&0f ; not_special_tile &2398 aa TAX &2399 bd f7 23 LDA &23f7,X ; nibble_to_tile_table &239c 91 2c STA (&2c),Y ; active_level_data_address &239e e0 14 CPX #&14 # &14 if Bono, &15 if volcano &23a0 90 13 BCC &23b5 ; not_bono_or_volcano &23a2 08 PHP &23a3 a5 2a LDA &2a ; tile_x &23a5 a6 2b LDX &2b ; tile_y &23a7 28 PLP &23a8 18 CLC &23a9 d0 06 BNE &23b1 ; is_volcano &23ab 85 00 STA &00 ; bono_x &23ad 86 01 STX &01 ; bono_y &23af 90 04 BCC &23b5 ; not_bono_or_volcano ; is_volcano &23b1 85 10 STA &10 ; volcano_x &23b3 86 11 STX &11 ; volcano_y ; not_bono_or_volcano &23b5 e6 2c INC &2c ; active_level_data_address_low &23b7 d0 02 BNE &23bb ; skip_page &23b9 e6 2d INC &2d ; active_level_data_address_high ; skip_page &23bb a5 2a LDA &2a ; tile_x &23bd 69 04 ADC #&04 &23bf 85 2a STA &2a ; tile_x &23c1 c9 a0 CMP #&a0 ; &28 * 4 # Levels are 40 tiles wide &23c3 d0 c6 BNE &238b ; unpack_level_x_loop &23c5 a5 2b LDA &2b ; tile_y &23c7 69 03 ADC #&03 &23c9 85 2b STA &2b ; tile_y &23cb c9 64 CMP #&64 ; &19 * 4 # Levels are 25 tiles high &23cd d0 ba BNE &2389 ; unpack_level_y_loop ; copy_active_level_to_checkpoint # Copy state of game to checkpoint &23cf a2 00 LDX #&00 ; copy_active_level_to_checkpoint_loop &23d1 bd 00 04 LDA &0400,X ; active_level_data &23d4 9d 00 09 STA &0900,X ; checkpoint_level_data &23d7 bd 00 05 LDA &0500,X ; active_level_data + &100 &23da 9d 00 0a STA &0a00,X ; checkpoint_level_data + &100 &23dd bd 00 06 LDA &0600,X ; active_level_data + &200 &23e0 9d 00 0b STA &0b00,X ; checkpoint_level_data + &200 &23e3 bd 00 07 LDA &0700,X ; active_level_data + &300 &23e6 9d 00 0c STA &0c00,X ; checkpoint_level_data + &300 &23e9 e8 INX &23ea d0 e5 BNE &23d1 ; copy_active_level_to_checkpoint_loop &23ec a2 08 LDX #&08 # Store bono_x, bono_y, keys_carried, skeletons_carried, ; copy_active_level_variables_to_checkpoint_loop # soap_carried, soap_required, aroma_change_countdown, &23ee b5 00 LDA &00,X ; active_level_variables # aroma_direction and fozzy_energy, but not fozzy_lives &23f0 9d e8 0c STA &0ce8,X ; checkpoint_level_variables &23f3 ca DEX &23f4 10 f8 BPL &23ee ; copy_active_level_variables_to_checkpoint_loop &23f6 60 RTS ; nibble_to_tile_table ; nibble tile &23f7 00 ; &00 : TILE_SPACE &23f8 01 ; &01 : TILE_WALL_HORIZONTAL &23f9 02 ; &02 : TILE_WALL_VERTICAL &23fa 03 ; &03 : TILE_WALL &23fb 05 ; &04 : TILE_CAULDRON &23fc 0a ; &05 : TILE_DOOR &23fd 0b ; &06 : TILE_KEY &23fe 0d ; &07 : TILE_EARTH &23ff 0c ; &08 : TILE_TRAPDOOR &2400 04 ; &09 : TILE_SEA &2401 80 ; &0a : TILE_MOVER | TILE_GLOOK &2402 0e ; &0b : TILE_SKELETON &2403 90 ; &0c : TILE_MOVER | TILE_MONSTER &2404 a0 ; &0d : TILE_MOVER | TILE_SPIDER &2405 00 ; &0e : TILE_SPACE # Unused &2406 b0 ; &0f (&0f &00) : TILE_MOVER | TILE_FOZZY &2407 06 ; &10 (&0f &01) : TILE_STAIRS_RIGHT &2408 07 ; &11 (&0f &02) : TILE_STAIRS_LEFT &2409 08 ; &12 (&0f &03) : TILE_STAIRS_UP &240a 09 ; &13 (&0f &04) : TILE_STAIRS_DOWN &240b 0f ; &14 (&0f &05) : TILE_BONO &240c 0d ; &15 (&0f &06) : TILE_EARTH # Used for volcano ; get_nibble_of_levelset_data &240d e6 2e INC &2e ; levelset_address_nibble &240f a5 2e LDA &2e ; levelset_address_nibble &2411 4a LSR A &2412 90 05 BCC &2419 ; use_high_nibble &2414 b1 28 LDA (&28),Y ; levelset_address &2416 29 0f AND #&0f # Use low nibble &2418 60 RTS ; use_high_nibble &2419 b1 28 LDA (&28),Y ; levelset_address &241b 4a LSR A # then high nibble &241c 4a LSR A &241d 4a LSR A &241e 4a LSR A &241f e6 28 INC &28 ; levelset_address_low # Move to next byte of data &2421 d0 02 BNE &2425 ; skip_page &2423 e6 29 INC &29 ; levelset_address_high ; skip_page &2425 60 RTS ; disable_vsync_event &2426 a9 0d LDA #&0d ; Disable event &2428 a2 04 LDX #&04 ; v-sync event &242a 4c f4 ff JMP &fff4 ; OSBYTE # Disable music ; title_screen &242d a2 ff LDX #&ff &242f 9a TXS &2430 20 26 24 JSR &2426 ; disable_vsync_event &2433 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &2436 85 0b STA &0b ; buffer_start_address_high &2438 a2 00 LDX #&00 # Black background &243a 20 7c 66 JSR &667c ; clear_screen &243d 20 d2 2f JSR &2fd2 ; plot_text &2440 80 2f fa &2443 1c 38 33 28 35 2c 32 35 40 1c 32 29 37 3a 24 35 ; "Superior Software Presents" &2453 28 40 19 35 28 36 28 31 37 36 &245d 80 a9 ff &2460 0b 40 18 40 17 40 0e 40 0c 40 1b 40 1e 40 17 40 ; "B O N E C R U N C H E R" &2470 0c 40 11 40 0e 40 1b &2477 81 2a f0 &247a 0b 32 31 32 ; "Bono" &247e 82 38 f0 &2481 20 35 2c 37 37 28 31 40 25 3c 40 16 24 35 37 3c ; "Written by Martyn Howard" &2491 31 40 11 32 3a 24 35 27 &2499 82 84 f0 &249c 10 24 30 28 40 27 28 36 2c 2a 31 28 27 40 25 3c ; "Game designed by Andreas Kemnitz" &24ac 40 0a 31 27 35 28 24 36 40 14 28 30 31 2c 37 3d &24bc 82 dc 0f &24bf 19 35 28 36 36 40 1c 33 24 26 28 40 32 35 40 19 ; "Press Space or P" &24d0 a9 04 LDA #&04 ; DIRECTION_NONE &24d2 85 1b STA &1b ; bono_facing &24d4 a9 3c LDA #&3c &24d6 85 20 STA &20 ; bono_boredom_level &24d8 20 1d 2d JSR &2d1d ; plot_bono &24db a9 87 LDA #&87 &24dd 20 ba 66 JSR &66ba ; fade_buffer # Fade in title screen ; title_screen_loop &24e0 a2 03 LDX #&03 ; delay_loop &24e2 8a TXA &24e3 48 PHA &24e4 a9 13 LDA #&13 ; Wait for vertical retrace &24e6 20 f4 ff JSR &fff4 ; OSBYTE &24e9 68 PLA &24ea aa TAX &24eb ca DEX &24ec 10 f4 BPL &24e2 ; delay_loop &24ee 20 b0 22 JSR &22b0 ; calculate_sprite_address # A = 0 here, so use SPRITE_EMPTY &24f1 a2 10 LDX #&10 &24f3 a0 08 LDY #&08 &24f5 20 24 22 JSR &2224 ; plot_sprite # Wipe area behind Bono &24f8 20 1d 2d JSR &2d1d ; plot_bono # Replot Bono &24fb e6 0f INC &0f ; frame_counter &24fd a5 ec LDA &ec ; os_most_recently_pressed_key &24ff c9 e2 CMP #&e2 ; SPACE &2501 f0 0a BEQ &250d ; space_pressed &2503 c9 b7 CMP #&b7 ; P &2505 d0 d9 BNE &24e0 ; title_screen_loop ; p_pressed &2507 20 ba 2d JSR &2dba ; enter_password_screen &250a 4c 16 25 JMP &2516 ; start_game ; space_pressed &250d a2 01 LDX #&01 # Start on first level of first levelset &250f 86 17 STX &17 ; level_number_as_bcd &2511 86 19 STX &19 ; levelset &2513 ca DEX &2514 86 18 STX &18 ; level_in_set ; start_game &2516 a5 17 LDA &17 ; level_number_as_bcd &2518 85 21 STA &21 ; first_level_number_as_bcd &251a a9 00 LDA #&00 &251c 85 14 STA &14 ; score &251e 85 15 STA &15 ; score + 1 &2520 85 16 STA &16 ; score + 2 &2522 a9 03 LDA #&03 # Fozzy starts with three lives &2524 85 12 STA &12 ; fozzy_lives &2526 a9 05 LDA #&05 # Bono starts with five lives &2528 85 0a STA &0a ; bono_lives ; start_level &252a a9 00 LDA #&00 &252c 85 0c STA &0c ; move_steps_remaining_maybe &252e 85 0d STA &0d ; bono_moving &2530 85 02 STA &02 ; keys_carried &2532 85 03 STA &03 ; skeletons_carried &2534 85 04 STA &04 ; soap_carried &2536 85 06 STA &06 ; aroma_change_countdown &2538 85 1c STA &1c ; bono_frame &253a a9 03 LDA #&03 ; DIRECTION_DOWN # Aroma starts down &253c 85 07 STA &07 ; aroma_direction &253e a9 05 LDA #&05 &2540 85 05 STA &05 ; soap_required &2542 a9 99 LDA #&99 # Fozzy starts with 99 energy &2544 85 08 STA &08 ; fozzy_energy &2546 20 59 23 JSR &2359 ; initialise_level &2549 20 41 2c JSR &2c41 ; update_screen_after_initialising_bono &254c a9 ad LDA #&ad &254e 20 ba 66 JSR &66ba ; fade_buffer ; start_life &2551 a9 00 LDA #&00 # Set to zero to indicate Bono is alive &2553 85 0e STA &0e ; bono_killed &2555 20 16 2f JSR &2f16 ; plot_status ; main_game_loop &2558 a2 04 LDX #&04 ; v-sync event ; unnecessary_loop &255a a1 ff LDA (&ff,X) # Unclear; unnecessary code. &255c a9 0e LDA #&0e ; Enable event &255e ca DEX &255f e0 04 CPX #&04 &2561 d0 f7 BNE &255a ; unnecessary_loop &2563 20 f4 ff JSR &fff4 ; OSBYTE # Enable music &2566 20 52 29 JSR &2952 ; update_level &2569 a5 0e LDA &0e ; bono_killed &256b d0 1e BNE &258b ; skip_checking_for_keypresses # Can't start moving if Bono is dead &256d a5 0d LDA &0d ; bono_moving &256f d0 1a BNE &258b ; skip_checking_for_keypresses # Can't start moving if already moving &2571 a9 04 LDA #&04 ; DIRECTION_NONE &2573 c5 1b CMP &1b ; bono_facing &2575 f0 04 BEQ &257b ; skip_setting_facing # Unnecessary comparison &2577 85 1b STA &1b ; bono_facing # always sets bono_facing to DIRECTION_NONE ; skip_setting_facing &2579 85 20 STA &20 ; bono_boredom_level # Always sets bono_boredom_level to 4 &257b a5 ec LDA &ec ; os_most_recently_pressed_key &257d a6 ed LDX &ed ; os_first_pressed_key &257f 20 b8 26 JSR &26b8 ; check_for_keypresses # Returns carry clear if a key was pressed &2582 90 07 BCC &258b ; skip_checking_for_keypresses &2584 a5 ed LDA &ed ; os_first_pressed_key &2586 a6 ec LDX &ec ; os_most_recently_pressed_key &2588 20 b8 26 JSR &26b8 ; check_for_keypresses ; skip_checking_for_keypresses &258b 20 0c 29 JSR &290c ; move_bono &258e a5 0c LDA &0c ; move_steps_remaining_maybe &2590 d0 35 BNE &25c7 ; not_fully_in_tile &2592 85 0d STA &0d ; bono_moving # Set to zero to indicate Bono no longer moving &2594 a5 12 LDA &12 ; fozzy_lives &2596 d0 02 BNE &259a ; skip_fozzy &2598 c6 0e DEC &0e ; bono_killed # Kill Bono if Fozzy runs out of lives ; skip_fozzy &259a a6 00 LDX &00 ; bono_x &259c a4 01 LDY &01 ; bono_y &259e 20 26 29 JSR &2926 ; get_tile &25a1 c9 0c CMP #&0c ; TILE_TRAPDOOR &25a3 f0 1e BEQ &25c3 ; is_deadly_tile # Kill Bono if player moved into trapdoor &25a5 20 06 2a JSR &2a06 ; add_offset_to_tile_address # Sets tile_address to address of tile - &29 &25a8 a2 03 LDX #&03 ; check_directions_loop # For each of the tiles left, right, up and down of Bono &25aa b4 95 LDY &95,X ; directional_offsets &25ac b1 2a LDA (&2a),Y ; tile_address &25ae d5 99 CMP &99,X ; glooks_moving_in_opposite_direction &25b0 f0 0b BEQ &25bd ; neighbouring_glook &25b2 29 fc AND #&fc ; TILE_MOVER | TILE_MASK_MOVER_TYPE | TILE_MASK_SUBTILE &25b4 c9 90 CMP #&90 ; TILE_MOVER | TILE_MONSTER &25b6 f0 0b BEQ &25c3 ; is_deadly_tile # Kill Bono if neighbouring tile contains a monster &25b8 ca DEX &25b9 10 ef BPL &25aa ; check_directions_loop &25bb 30 1d BMI &25da ; consider_volcano # Always branches ; neighbouring_glook &25bd 45 07 EOR &07 ; aroma_direction &25bf 29 02 AND #&02 &25c1 d0 17 BNE &25da ; consider_volcano # Kill Bono if glook moves into tile ; is_deadly_tile &25c3 c6 0e DEC &0e ; bono_killed # Set to non-zero to kill Bono &25c5 d0 13 BNE &25da ; consider_volcano # Always branches ; not_fully_in_tile &25c7 c6 0c DEC &0c ; move_steps_remaining_maybe &25c9 c9 03 CMP #&03 &25cb d0 0d BNE &25da ; consider_volcano # Is Bono starting to leave a tile? &25cd a6 00 LDX &00 ; bono_x &25cf e8 INX &25d0 a4 01 LDY &01 ; bono_y &25d2 c8 INY &25d3 20 26 29 JSR &2926 ; get_tile &25d6 a9 00 LDA #&00 ; TILE_SPACE &25d8 91 2a STA (&2a),Y ; tile_address # If so, empty the tile Bono is leaving ; consider_volcano &25da a6 10 LDX &10 ; volcano_x &25dc a4 11 LDY &11 ; volcano_y &25de 20 26 29 JSR &2926 ; get_tile &25e1 d0 11 BNE &25f4 ; wipe_active_volcano_loop # Is the volcano tile empty? &25e3 a9 80 LDA #&80 ; TILE_GLOOK &25e5 91 2a STA (&2a),Y ; tile_address # If so, fill it with a glook &25e7 a2 1f LDX #&1f ; plot_active_volcano_loop &25e9 bd 80 01 LDA &0180,X ; active_volcano_sprite # and plot top of volcano &25ec 9d c8 59 STA &59c8,X ; volcano_top_screen_address &25ef ca DEX &25f0 10 f7 BPL &25e9 ; plot_active_volcano_loop &25f2 30 0a BMI &25fe ; check_for_level_completion # Always branches ; wipe_active_volcano_loop &25f4 a2 1f LDX #&1f # Otherwise, clear top of volcano &25f6 a9 00 LDA #&00 &25f8 9d c8 59 STA &59c8,X ; volcano_top_screen_address &25fb ca DEX &25fc 10 fa BPL &25f8 ; wipe_active_volcano_loop ; check_for_level_completion &25fe a5 05 LDA &05 ; soap_required &2600 f0 0f BEQ &2611 ; level_completed &2602 20 4b 2c JSR &2c4b ; update_screen &2605 20 ed 66 JSR &66ed ; display_buffer # Display previously hidden buffer &2608 e6 0f INC &0f ; frame_counter &260a a5 0e LDA &0e ; bono_killed # Non-zero if Bono was killed &260c d0 1e BNE &262c ; end_of_life &260e 4c 58 25 JMP &2558 ; main_game_loop ; level_completed &2611 f8 SED &2612 18 CLC &2613 a5 17 LDA &17 ; level_number_as_bcd &2615 69 01 ADC #&01 &2617 85 17 STA &17 ; level_number_as_bcd &2619 d8 CLD &261a aa TAX &261b e6 18 INC &18 ; level_in_set &261d a5 18 LDA &18 ; level_in_set &261f c9 06 CMP #&06 &2621 d0 06 BNE &2629 ; to_start_level &2623 a9 00 LDA #&00 &2625 85 18 STA &18 ; level_in_set &2627 e6 19 INC &19 ; levelset ; to_start_level &2629 4c 2a 25 JMP &252a ; start_level ; end_of_life &262c a9 07 LDA #&07 ; W &262e a2 00 LDX #&00 &2630 20 79 30 JSR &3079 ; set_colour # Change colour 0 to white &2633 20 a2 30 JSR &30a2 ; play_sound_for_bono_or_fozzy_dying &2636 a9 05 LDA #&05 ; DIRECTION_DEAD &2638 85 1b STA &1b ; bono_facing ; end_of_life_loop &263a 20 52 29 JSR &2952 ; update_level &263d a9 00 LDA #&00 ; K &263f aa TAX &2640 20 79 30 JSR &3079 ; set_colour # Change colour 0 to black &2643 20 4b 2c JSR &2c4b ; update_screen &2646 20 ed 66 JSR &66ed ; display_buffer &2649 e6 0f INC &0f ; frame_counter &264b c6 0e DEC &0e ; bono_killed &264d a5 0e LDA &0e ; bono_killed &264f c9 f0 CMP #&f0 # Update level for fifteen frames after Bono dies &2651 d0 e7 BNE &263a ; end_of_life_loop &2653 c6 0a DEC &0a ; bono_lives &2655 f0 36 BEQ &268d ; game_over_screen &2657 a5 12 LDA &12 ; fozzy_lives &2659 f0 32 BEQ &268d ; game_over_screen &265b a2 00 LDX #&00 ; copy_checkpoint_to_active_level_loop # Restore state of game from checkpoint &265d bd 00 09 LDA &0900,X ; checkpoint_level_data &2660 9d 00 04 STA &0400,X ; active_level_data &2663 bd 00 0a LDA &0a00,X ; checkpoint_level_data + &100 &2666 9d 00 05 STA &0500,X ; active_level_data + &100 &2669 bd 00 0b LDA &0b00,X ; checkpoint_level_data + &200 &266c 9d 00 06 STA &0600,X ; active_level_data + &200 &266f bd 00 0c LDA &0c00,X ; checkpoint_level_data + &300 &2672 9d 00 07 STA &0700,X ; active_level_data + &300 &2675 e8 INX &2676 d0 e5 BNE &265d ; copy_checkpoint_to_active_level_loop &2678 a2 08 LDX #&08 ; copy_checkpoint_variables_to_active_level_loop &267a bd e8 0c LDA &0ce8,X ; checkpoint_level_variables &267d 95 00 STA &00,X ; variables &267f ca DEX &2680 10 f8 BPL &267a ; copy_checkpoint_variables_to_active_level_loop &2682 20 41 2c JSR &2c41 ; update_screen_after_initialising_bono &2685 a9 51 LDA #&51 &2687 20 ba 66 JSR &66ba ; fade_buffer &268a 4c 51 25 JMP &2551 ; start_life ; game_over_screen &268d 20 26 24 JSR &2426 ; disable_vsync_event &2690 20 16 2f JSR &2f16 ; plot_status &2693 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &2696 85 0b STA &0b ; buffer_start_address_high &2698 a2 10 LDX #&10 # Wavy background &269a 20 7c 66 JSR &667c ; clear_screen &269d 20 d2 2f JSR &2fd2 ; plot_text &26a0 81 77 ff &26a3 10 24 30 28 40 18 39 28 35 ; "Game Over" &26ac ff &26ad a9 13 LDA #&13 &26af 20 ba 66 JSR &66ba ; fade_buffer &26b2 20 99 30 JSR &3099 ; wait_for_keypress &26b5 4c 2d 24 JMP &242d ; title_screen ; check_for_keypresses # Called with A = first key, X = second key &26b8 86 2c STX &2c ; second_key_pressed &26ba a2 1e LDX #&1e ; check_for_keypresses_loop # For each action in table, &26bc dd d5 26 CMP &26d5,X ; key_table &26bf f0 07 BEQ &26c8 ; key_pressed # Was the key pressed? &26c1 ca DEX &26c2 ca DEX &26c3 ca DEX &26c4 10 f6 BPL &26bc ; check_for_keypresses &26c6 38 SEC # Leave with carry set to allow second check &26c7 60 RTS ; key_pressed &26c8 bd d6 26 LDA &26d6,X ; key_table + 1 # If so, call the associated routine &26cb 85 28 STA &28 ; action_address_low &26cd bd d7 26 LDA &26d7,X ; key_table + 2 &26d0 85 29 STA &29 ; action_address_high &26d2 6c 28 00 JMP (&0028) ; action_address ; key_table &26d5 b2 f6 26 ; D &26f6 = music_up &26d8 a1 ff 26 ; W &26ff = music_down &26db 90 08 27 ; Q &2708 = sound_off &26de d1 06 27 ; S &2706 = sound_on &26e1 f0 0d 27 ; ESCAPE &270d = end_life &26e4 b3 11 27 ; R &2711 = restart_game &26e7 e9 1b 27 ; COPY &271b = pause_game &26ea c2 26 27 ; X &2726 = consider_moving_right &26ed e1 35 27 ; Z &2735 = consider_moving_left &26f0 c8 45 27 ; ' &2745 = consider_moving_up &26f3 e8 55 27 ; / &2755 = consider_moving_down ; music_up &26f6 a5 1e LDA &1e ; tune_volume &26f8 c9 0f CMP #&0f &26fa b0 02 BCS &26fe ; leave &26fc e6 1e INC &1e ; tune_volume ; leave &26fe 60 RTS ; music_down &26ff a5 1e LDA &1e ; tune_volume &2701 f0 fb BEQ &26fe ; leave &2703 c6 1e DEC &1e ; tune_volume ; leave &2705 60 RTS ; sound_on &2706 a9 00 LDA #&00 ; sound_off &2708 8d 62 02 STA &0262 ; os_sound_suppression &270b 38 SEC # Leave with carry set to allow second check &270c 60 RTS ; end_life &270d c6 0e DEC &0e ; bono_killed # Set to non-zero to kill Bono ; leave_with_clear &270f 18 CLC &2710 60 RTS ; restart_game &2711 ad 5a 02 LDA &025a ; os_keyboard_status &2714 29 08 AND #&08 # Is SHIFT pressed? &2716 f0 f7 BEQ &270f ; leave_with_clear &2718 4c 2d 24 JMP &242d ; title_screen ; pause_game &271b 20 26 24 JSR &2426 ; disable_vsync_event # Disable music while paused &271e a9 d9 LDA #&d9 ; DELETE ; wait_for_delete &2720 c5 ec CMP &ec ; os_most_recently_pressed_key &2722 d0 fc BNE &2720 ; wait_for_delete &2724 38 SEC # Leave with carry set to allow second check &2725 60 RTS ; consider_moving_right &2726 a2 04 LDX #&04 # One tile right &2728 a0 00 LDY #&00 ; DIRECTION_RIGHT &272a 98 TYA &272b 20 65 27 JSR &2765 ; consider_moving # Returns carry clear if Bono can move &272e b0 04 BCS &2734 ; leave &2730 a9 01 LDA #&01 ; MOVE_RIGHT &2732 85 0d STA &0d ; bono_moving ; leave &2734 60 RTS ; consider_moving_left &2735 a2 fc LDX #&fc # One tile left &2737 a0 00 LDY #&00 &2739 a9 01 LDA #&01 ; DIRECTION_LEFT &273b 20 65 27 JSR &2765 ; consider_moving # Returns carry clear if Bono can move &273e b0 04 BCS &2744 ; leave &2740 a9 02 LDA #&02 ; MOVE_LEFT &2742 85 0d STA &0d ; bono_moving ; leave &2744 60 RTS ; consider_moving_up &2745 a2 00 LDX #&00 &2747 a0 fc LDY #&fc # One tile up &2749 a9 02 LDA #&02 ; DIRECTION_UP &274b 20 65 27 JSR &2765 ; consider_moving # Returns carry clear if Bono can move &274e b0 04 BCS &2754 ; leave &2750 a9 03 LDA #&03 ; MOVE_UP &2752 85 0d STA &0d ; bono_moving ; leave &2754 60 RTS ; consider_moving_down &2755 a2 00 LDX #&00 &2757 a0 04 LDY #&04 # One tile down &2759 a9 03 LDA #&03 ; DIRECTION_DOWN &275b 20 65 27 JSR &2765 ; consider_moving # Returns carry clear if Bono can move &275e b0 04 BCS &2764 ; leave &2760 a9 04 LDA #&04 ; MOVE_DOWN &2762 85 0d STA &0d ; bono_moving ; leave &2764 60 RTS ; consider_moving # Called with A = direction, X Y = tile offsets &2765 85 1b STA &1b ; bono_facing &2767 18 CLC &2768 8a TXA &2769 65 00 ADC &00 ; bono_x &276b aa TAX &276c a9 00 LDA #&00 # Change sprite even if Bono can't move &276e 85 1c STA &1c ; bono_frame &2770 18 CLC &2771 98 TYA &2772 65 01 ADC &01 ; bono_y &2774 a8 TAY &2775 20 26 29 JSR &2926 ; get_tile # Consider the tile Bono is moving into &2778 c9 0d CMP #&0d ; TILE_EARTH &277a d0 09 BNE &2785 ; use_bono # Is the Bono moving into earth? &277c a6 2c LDX &2c ; second_key_pressed &277e e0 c9 CPX #&c9 ; ENTER # If so, is ENTER being pressed? &2780 d0 03 BNE &2785 ; use_bono &2782 a2 00 LDX #&00 ; TILE_SPACE # If so, replace earth with space &2784 2c a2 0f BIT &0fa2 ; use_bono #2785 a2 0f LDX #&0f ; TILE_BONO # Otherwise, replace tile with Bono &2787 86 2d STX &2d ; replacement_tile &2789 aa TAX &278a f0 09 BEQ &2795 ; skip_tile_handler # If the tile isn't a space, &278c 84 38 STY &38 ; tmp_y &278e 20 a3 27 JSR &27a3 ; handle_moving_into_tile # Returns carry set if can't move into tile &2791 a4 38 LDY &38 ; tmp_y &2793 b0 0b BCS &27a0 ; leave ; skip_tile_handler &2795 a5 2d LDA &2d ; replacement_tile &2797 91 2a STA (&2a),Y ; tile_address # Set tile Bono is moving into &2799 f0 06 BEQ &27a1 ; leave_with_carry_set # Don't move if earth was replaced by space ; set_bono_moving &279b a9 03 LDA #&03 &279d 85 0c STA &0c ; move_steps_remaining_maybe # Otherwise, set Bono moving &279f 18 CLC # Leave with carry clear to allow movement ; leave &27a0 60 RTS ; leave_with_carry_set &27a1 38 SEC # Leave with carry set to prevent movement &27a2 60 RTS ; handle_moving_into_tile &27a3 c9 05 CMP #&05 ; TILE_SEA + 1 &27a5 90 fa BCC &27a1 ; leave_with_carry_set # Can't move into walls or sea &27a7 0a ASL A &27a8 b0 0a BCS &27b4 ; handle_moving_into_mover # Top bit set if tile contains a mover &27aa aa TAX &27ab bd ef 28 LDA &28ef,X ; handle_moving_into_tile_addresses_table - 10 &27ae 48 PHA # Otherwise, push address of tile handler onto stack &27af bd ee 28 LDA &28ee,X ; handle_moving_into_tile_addresses_table - 9 &27b2 48 PHA &27b3 60 RTS # Return via tile handler ; handle_moving_into_mover &27b4 6a ROR A &27b5 85 28 STA &28 ; mover &27b7 29 7c AND #&7c ; TILE_MASK_MOVER_TYPE | TILE_MASK_SUBTILE &27b9 d0 29 BNE &27e4 ; leave_with_carry_set # Is the mover a glook? If not, can't move into tile &27bb a5 07 LDA &07 ; aroma_direction &27bd 45 1b EOR &1b ; bono_facing &27bf 29 02 AND #&02 # Is Bono pushing a glook against the aroma direction? &27c1 f0 16 BEQ &27d9 ; strain_glooks # If so, make glooks strain; can't move into tile &27c3 20 06 2a JSR &2a06 ; add_offset_to_tile_address # Sets tile_address to address of tile - &29 &27c6 a5 1b LDA &1b ; bono_facing &27c8 20 60 2a JSR &2a60 ; check_if_glook_can_be_pushed # Returns carry set if tile beyond glook blocks push &27cb b0 0c BCS &27d9 ; strain_glooks &27cd 8a TXA &27ce 45 07 EOR &07 ; aroma_direction &27d0 29 02 AND #&02 &27d2 f0 05 BEQ &27d9 ; strain_glooks # Glooks can only be pushed sideways to aroma direction &27d4 20 18 2a JSR &2a18 ; start_mover_moving &27d7 a0 29 LDY #&29 ; &29 (central tile) # Unnecessary code ; strain_glooks &27d9 a5 0f LDA &0f ; frame_counter &27db 4a LSR A &27dc 29 03 AND #&03 &27de aa TAX &27df a9 12 LDA #&12 ; SPRITE_GLOOK_STRAINING &27e1 9d 31 2c STA &2c31,X ; mover_sprites ; leave_with_carry_set &27e4 38 SEC # Leave with carry set to prevent move &27e5 60 RTS ; handle_moving_into_cauldron &27e6 a5 03 LDA &03 ; skeletons_carried &27e8 c9 05 CMP #&05 # Five skeletons needed to make soap &27ea 90 b5 BCC &27a1 ; leave_with_carry_set &27ec e9 05 SBC #&05 &27ee 85 03 STA &03 ; skeletons_carried &27f0 e6 04 INC &04 ; soap_carried &27f2 a2 01 LDX #&01 &27f4 a9 00 LDA #&00 &27f6 20 00 2f JSR &2f00 ; increase_score # Score 100 for making soap &27f9 a9 4c LDA #&4c # Use channel 0, envelope 4 &27fb a2 0a LDX #&0a # Pitch &27fd a0 0f LDY #&0f # Duration &27ff 20 a8 30 JSR &30a8 ; play_sound &2802 38 SEC # Leave with carry set to prevent move &2803 60 RTS ; handle_moving_into_stairs &2804 a5 04 LDA &04 ; soap_carried &2806 f0 99 BEQ &27a1 ; leave_with_carry_set # One soap required to make delivery &2808 c6 04 DEC &04 ; soap_carried &280a c6 05 DEC &05 ; soap_required &280c 8a TXA &280d 4a LSR A &280e e9 05 SBC #&05 ; TILE_STAIRS_RIGHT - 1 &2810 85 09 STA &09 ; next_aroma_direction # Set next aroma direction to match direction of stairs &2812 a9 9a LDA #&9a &2814 85 06 STA &06 ; aroma_change_countdown # Aroma changes after 99 frames &2816 a2 10 LDX #&10 &2818 a9 00 LDA #&00 &281a 20 00 2f JSR &2f00 ; increase_score # Score 1000 for delivering soap &281d a9 45 LDA #&45 # Use channel 1, envelope 2 &281f a2 0a LDX #&0a # Pitch &2821 a0 1e LDY #&1e # Duration &2823 20 a8 30 JSR &30a8 ; play_sound &2826 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &2829 85 0b STA &0b ; buffer_start_address_high &282b a2 08 LDX #&08 # White pattern background &282d 20 7c 66 JSR &667c ; clear_screen &2830 a5 05 LDA &05 ; soap_required &2832 d0 4b BNE &287f ; not_end_of_level &2834 20 d2 2f JSR &2fd2 ; plot_text &2837 80 58 ff &283a 20 28 2f 2f 40 27 32 31 28 40 0b 32 31 32 3e ; "Well done Bono!" &2849 82 87 f0 &284c 22 32 38 35 40 19 24 36 36 3a 32 35 27 40 2c 36 ; "Your Password is " &285c 40 &285d ff &285e a6 17 LDX &17 ; level_number_as_bcd &2860 a0 ff LDY #&ff ; find_password_loop &2862 c8 INY &2863 b9 08 32 LDA &3208,Y ; passwords &2866 10 fa BPL &2862 ; find_password_loop &2868 f8 SED &2869 18 CLC &286a 8a TXA &286b 69 01 ADC #&01 &286d aa TAX &286e d8 CLD &286f e0 25 CPX #&25 &2871 d0 ef BNE &2862 ; find_password_loop ; plot_password_loop &2873 c8 INY &2874 b9 08 32 LDA &3208,Y ; passwords &2877 30 06 BMI &287f ; not_end_of_level &2879 20 68 2f JSR &2f68 ; plot_character &287c 4c 73 28 JMP &2873 ; plot_password_loop ; not_end_of_level &287f a2 03 LDX #&03 &2881 a9 06 LDA #&06 ; C &2883 20 79 30 JSR &3079 ; set_colour # Change colour 3 to cyan &2886 a9 a5 LDA #&a5 &2888 20 ba 66 JSR &66ba ; fade_buffer &288b 20 40 5e JSR &5e40 ; bathing_monster_screen &288e 20 cf 23 JSR &23cf ; copy_active_level_to_checkpoint &2891 a2 03 LDX #&03 &2893 a9 07 LDA #&07 ; W &2895 20 79 30 JSR &3079 ; set_colour # Change colour 3 to white &2898 38 SEC # Leave with carry set to prevent move &2899 60 RTS ; handle_moving_into_door &289a a5 02 LDA &02 ; keys_carried &289c f0 16 BEQ &28b4 ; leave_with_carry_set # One key needed to open door &289e c6 02 DEC &02 ; keys_carried &28a0 a9 00 LDA #&00 ; TILE_SPACE &28a2 91 2a STA (&2a),Y ; tile_address # Replace door with space &28a4 a2 01 LDX #&01 &28a6 a9 00 LDA #&00 &28a8 20 00 2f JSR &2f00 ; increase_score # Score 100 for opening door &28ab a9 4d LDA #&4d # Use channel 1, envelope 4 &28ad a2 a0 LDX #&a0 # Pitch &28af a0 0f LDY #&0f # Duration &28b1 20 a8 30 JSR &30a8 ; play_sound ; leave_with_carry_set &28b4 38 SEC # Leave with carry set to prevent move &28b5 60 RTS ; handle_moving_into_key &28b6 a5 02 LDA &02 ; keys_carried &28b8 c9 09 CMP #&09 &28ba b0 13 BCS &28cf ; leave # Can't carry more than nine keys &28bc e6 02 INC &02 ; keys_carried &28be a2 00 LDX #&00 &28c0 a9 10 LDA #&10 &28c2 20 00 2f JSR &2f00 ; increase_score # Score 10 for collecting key &28c5 a9 41 LDA #&41 # Use channel 1, envelope 1 &28c7 a2 78 LDX #&78 # Pitch &28c9 a0 08 LDY #&08 # Duration &28cb 20 a8 30 JSR &30a8 ; play_sound &28ce 18 CLC # Leave with carry clear to allow move ; leave &28cf 60 RTS ; handle_moving_into_trapdoor &28d0 68 PLA # Remove handle_moving_into_trapdoor from stack &28d1 68 PLA &28d2 4c 9b 27 JMP &279b ; set_bono_moving # Return without replacing trapdoor tile ; handle_moving_into_earth &28d5 a2 00 LDX #&00 &28d7 a9 01 LDA #&01 &28d9 20 00 2f JSR &2f00 ; increase_score # Score 1 for removing earth &28dc 18 CLC # Leave with carry clear to allow move ; leave &28dd 60 RTS ; handle_moving_into_skeleton &28de a5 03 LDA &03 ; skeletons_carried &28e0 c9 09 CMP #&09 &28e2 b0 13 BCS &28f7 ; leave # Can't carry more than nine skeletons &28e4 e6 03 INC &03 ; skeletons_carried &28e6 a2 00 LDX #&00 &28e8 a9 10 LDA #&10 &28ea 20 00 2f JSR &2f00 ; increase_score # Score 10 for collecting skeleton &28ed a9 41 LDA #&41 # Use channel 1, envelope 1 &28ef a2 46 LDX #&46 # Pitch &28f1 a0 08 LDY #&08 # Duration &28f3 20 a8 30 JSR &30a8 ; play_sound &28f6 18 CLC # Leave with carry clear to allow move ; leave &28f7 60 RTS ; handle_moving_into_tile_addresses_table &28f8 e5 27 ; &27e5 = handle_moving_into_cauldron - 1 : &05 TILE_CAULDRON &28fa 03 28 ; &2803 = handle_moving_into_stairs - 1 : &06 TILE_STAIRS_RIGHT &28fc 03 28 ; &2803 = handle_moving_into_stairs - 1 : &07 TILE_STAIRS_LEFT &28fe 03 28 ; &2803 = handle_moving_into_stairs - 1 : &08 TILE_STAIRS_UP &2900 03 28 ; &2803 = handle_moving_into_stairs - 1 : &09 TILE_STAIRS_DOWN &2902 99 28 ; &2899 = handle_moving_into_door - 1 : &0a TILE_DOOR &2904 b5 28 ; &28b5 = handle_moving_into_key - 1 : &0b TILE_KEY &2906 cf 28 ; &28cf = handle_moving_into_trapdoor - 1 : &0c TILE_TRAPDOOR &2908 d4 28 ; &28d4 = handle_moving_into_earth - 1 : &0d TILE_EARTH &290a dd 28 ; &28dd = handle_moving_into_skeleton - 1 : &0e TILE_SKELETON ; move_bono &290c a5 0d LDA &0d ; bono_moving &290e f0 cd BEQ &28dd ; leave &2910 c9 03 CMP #&03 ; MOVE_UP &2912 f0 0f BEQ &2923 ; move_bono_up &2914 b0 0a BCS &2920 ; move_bono_down &2916 c9 02 CMP #&02 ; MOVE_LEFT &2918 f0 03 BEQ &291d ; move_bono_left ; move_bono_right &291a e6 00 INC &00 ; bono_x &291c 60 RTS ; move_bono_left &291d c6 00 DEC &00 ; bono_x &291f 60 RTS ; move_bono_down &2920 e6 01 INC &01 ; bono_y &2922 60 RTS ; move_bono_up &2923 c6 01 DEC &01 ; bono_y &2925 60 RTS ; get_tile &2926 c0 64 CPY #&64 ; 25 * 4 &2928 b0 25 BCS &294f ; leave_with_sea # Leave with sea if tile is beyond top or bottom &292a e0 a0 CPX #&a0 ; 40 * 4 &292c b0 21 BCS &294f ; leave_with_sea # or left or right edges of level &292e a9 00 LDA #&00 &2930 85 2b STA &2b ; tile_address_high &2932 98 TYA &2933 29 fc AND #&fc &2935 0a ASL A &2936 85 2a STA &2a ; tile_address_low &2938 0a ASL A &2939 26 2b ROL &2b ; tile_address_high &293b 0a ASL A &293c 26 2b ROL &2b ; tile_address_high &293e 65 2a ADC &2a ; tile_address_low &2940 85 2a STA &2a ; tile_address_low &2942 a5 2b LDA &2b ; tile_address_high &2944 69 04 ADC #&04 ; &0400 = active_level_data &2946 85 2b STA &2b ; tile_address_high &2948 8a TXA &2949 4a LSR A &294a 4a LSR A &294b a8 TAY &294c b1 2a LDA (&2a),Y ; tile_address # Tile is stored at &0400 + X + (Y * &28) &294e 60 RTS ; leave_with_sea &294f a9 04 LDA #&04 ; TILE_SEA &2951 60 RTS ; update_level &2952 a2 04 LDX #&04 &2954 a0 00 LDY #&00 &2956 84 2e STY &2e ; active_level_data_address_low &2958 84 36 STY &36 ; glooks_are_excited # Set to positive to indicate glooks aren't excited &295a a9 08 LDA #&08 ; &0800 = active_level_data + &0400 &295c 85 2f STA &2f ; active_level_data_address_high &295e a9 20 LDA #&20 &2960 85 30 STA &30 ; snapshot_level_data_address_low &2962 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &2965 18 CLC &2966 69 04 ADC #&04 &2968 85 31 STA &31 ; snapshot_level_data_address_high ; copy_active_level_to_buffer_page_loop # Take snapshot of level into hidden buffer &296a c6 2f DEC &2f ; active_level_data_address_high &296c 38 SEC &296d a5 30 LDA &30 ; snapshot_level_data_address_low &296f e9 40 SBC #&40 &2971 85 30 STA &30 ; snapshot_level_data_address_low &2973 c6 31 DEC &31 ; snapshot_level_data_address_high ; copy_active_level_to_buffer_byte_loop &2975 b1 2e LDA (&2e),Y ; active_level_data_address &2977 91 30 STA (&30),Y ; snapshot_level_data_address &2979 c8 INY &297a d0 f9 BNE &2975 ; copy_active_level_to_buffer_byte_loop &297c ca DEX &297d d0 eb BNE &296a ; copy_active_level_to_buffer_page_loop &297f 84 2d STY &2d ; full_tile_y ; 0 # For each tile in the level, starting at the top left ; update_level_y_loop &2981 a2 00 LDX #&00 ; update_level_x_loop &2983 b1 30 LDA (&30),Y ; snapshot_level_data_address # Top bit set if tile contains a mover &2985 30 33 BMI &29ba ; tile_contains_mover ; update_next_tile &2987 c8 INY &2988 d0 0b BNE &2995 ; skip_page &298a e6 2f INC &2f ; active_level_data_address_high &298c 18 CLC &298d a5 30 LDA &30 ; snapshot_level_data_address_low # Skip edges of buffer to avoid overwriting border &298f 69 40 ADC #&40 &2991 85 30 STA &30 ; snapshot_level_data_address_low &2993 e6 31 INC &31 ; snapshot_level_data_address_high ; skip_page &2995 e8 INX &2996 e0 28 CPX #&28 ; 40 &2998 d0 e9 BNE &2983 ; update_level_x_loop &299a e6 2d INC &2d ; full_tile_y &299c a5 2d LDA &2d ; full_tile_y &299e c9 19 CMP #&19 ; 25 &29a0 d0 df BNE &2981 ; update_level_y_loop &29a2 a5 36 LDA &36 ; glooks_are_excited # Negative if glooks are excited &29a4 10 03 BPL &29a9 ; use_regular_glook_sprite &29a6 a9 11 LDA #&11 ; SPRITE_GLOOK_EXCITED # Animate glooks if glooks are excited &29a8 2c a9 10 BIT &10a9 ; use_regular_glook_sprite #29a9 a9 10 LDA #&10 ; SPRITE_GLOOK &29ab 8d 31 2c STA &2c31 ; mover_sprites &29ae 8d 33 2c STA &2c33 ; mover_sprites + 2 &29b1 a9 10 LDA #&10 ; SPRITE_GLOOK &29b3 8d 32 2c STA &2c32 ; mover_sprites + 1 &29b6 8d 34 2c STA &2c34 ; mover_sprites + 3 &29b9 60 RTS ; tile_contains_mover &29ba 85 28 STA &28 ; mover &29bc 24 28 BIT &28 ; mover &29be 29 0c AND #&0c ; TILE_MASK_SUBTILE &29c0 70 13 BVS &29d5 ; tile_contains_leaving_mover # &40 set (TILE_LEAVING) if mover is leaving this tile &29c2 f0 24 BEQ &29e8 ; mover_has_fully_entered_tile # &00 set (TILE_SUBTILE_4) if mover is fully in tile &29c4 a5 28 LDA &28 ; mover &29c6 38 SEC &29c7 e9 04 SBC #&04 # Change TILE_SUBTILE_(n) into TILE_SUBTILE_(n+1) &29c9 91 2e STA (&2e),Y ; active_level_data_address &29cb 29 f0 AND #&f0 ; TILE_MOVER | TILE_MASK_MOVER_TYPE &29cd c9 80 CMP #&80 ; TILE_MOVER | TILE_GLOOK &29cf d0 b6 BNE &2987 ; update_next_tile ; is_glook &29d1 85 36 STA &36 ; glooks_are_excited # Set to negative to indicate glooks are excited &29d3 f0 b2 BEQ &2987 ; update_next_tile # Always branches ; tile_contains_leaving_mover &29d5 c9 0c CMP #&0c ; TILE_SUBTILE_1 &29d7 f0 09 BEQ &29e2 ; mover_has_fully_left_tile &29d9 a5 28 LDA &28 ; mover &29db 18 CLC &29dc 69 04 ADC #&04 # Change TILE_SUBTILE_(n) into TILE_SUBTILE_(n-1) &29de 91 2e STA (&2e),Y ; active_level_data_address &29e0 90 a5 BCC &2987 ; update_next_tile # Always branches ; mover_has_fully_left_tile &29e2 a9 00 LDA #&00 ; TILE_SPACE &29e4 91 2e STA (&2e),Y ; active_level_data_address # If mover has fully left tile, replace with space &29e6 f0 9f BEQ &2987 ; update_next_tile # Always branches ; mover_has_fully_entered_tile # If mover has fully entered tile, consider next move &29e8 84 32 STY &32 ; mover_tile_y &29ea 86 33 STX &33 ; mover_tile_x &29ec a5 2e LDA &2e ; active_level_data_address_low &29ee 85 2a STA &2a ; tile_address_low &29f0 a5 2f LDA &2f ; active_level_data_address_high &29f2 85 2b STA &2b ; tile_address_high &29f4 20 06 2a JSR &2a06 ; add_offset_to_tile_address # Sets tile_address to address of tile - &29 &29f7 20 91 2a JSR &2a91 ; update_mover # Returns X = new direction, or carry set if can't move &29fa b0 03 BCS &29ff ; skip_starting_mover_moving &29fc 20 18 2a JSR &2a18 ; start_mover_moving ; skip_starting_mover_moving &29ff a6 33 LDX &33 ; mover_tile_x &2a01 a4 32 LDY &32 ; mover_tile_y &2a03 4c 87 29 JMP &2987 ; update_next_tile ; add_offset_to_tile_address &2a06 18 CLC &2a07 98 TYA &2a08 65 2a ADC &2a ; tile_address_low # Add Y to tile address &2a0a 90 03 BCC &2a0f ; skip_page &2a0c e6 2b INC &2b ; tile_address_high ; skip_page &2a0e 18 CLC &2a0f e9 28 SBC #&28 # then subtract &29 (one row + one column) &2a11 85 2a STA &2a ; tile_address_low &2a13 b0 02 BCS &2a17 ; leave &2a15 c6 2b DEC &2b ; tile_address_high ; leave &2a17 60 RTS ; start_mover_moving &2a18 86 29 STX &29 ; direction &2a1a b1 2a LDA (&2a),Y ; tile_address &2a1c c9 0c CMP #&0c ; TILE_TRAPDOOR &2a1e f0 0a BEQ &2a2a ; skip_entering_tile # If the mover is not moving into a trapdoor, &2a20 a5 28 LDA &28 ; mover &2a22 29 f0 AND #&f0 ; TILE_MOVER | TILE_MASK_MOVER_TYPE &2a24 05 29 ORA &29 ; direction &2a26 09 0c ORA #&0c ; TILE_SUBTILE_1 &2a28 91 2a STA (&2a),Y ; tile_address # set new tile to contain entering mover ; skip_entering_tile &2a2a a0 29 LDY #&29 ; &29 (central tile) &2a2c a5 28 LDA &28 ; mover &2a2e 29 f0 AND #&f0 ; TILE_MOVER | TILE_MASK_MOVER_TYPE &2a30 05 29 ORA &29 ; direction &2a32 09 44 ORA #&44 ; TILE_LEAVING | TILE_SUBTILE_3 &2a34 91 2a STA (&2a),Y ; tile_address # Set previous tile to contain leaving mover &2a36 60 RTS ; update_spider &2a37 a5 28 LDA &28 ; mover &2a39 29 03 AND #&03 # Consider the direction the spider is moving &2a3b a8 TAY &2a3c b6 60 LDX &60,Y ; spider_first_direction_table # Use that determine which tile to consider first ; check_tiles_for_spider_movement_loop &2a3e b4 63 LDY &63,X ; clockwise_offsets &2a40 b1 2a LDA (&2a),Y ; tile_address # Consider the next tile the spider could move into &2a42 f0 15 BEQ &2a59 ; set_spider_direction # Spider can move into empty tiles &2a44 c9 0e CMP #&0e ; TILE_SKELETON &2a46 f0 11 BEQ &2a59 ; set_spider_direction # Spider can remove skeletons &2a48 c9 0f CMP #&0f ; TILE_BONO &2a4a d0 06 BNE &2a52 ; skip_death &2a4c a5 0c LDA &0c ; move_steps_remaining_maybe # If Bono has finished moving, &2a4e d0 02 BNE &2a52 ; skip_death &2a50 c6 0e DEC &0e ; bono_killed # Spider can kill, but not move into Bono ; skip_death &2a52 e8 INX # Spider moves clockwise &2a53 e0 07 CPX #&07 &2a55 d0 e7 BNE &2a3e ; check_tiles_for_spider_movement_loop &2a57 38 SEC # Leave with carry set to indicate spider can't move &2a58 60 RTS ; set_spider_direction &2a59 b5 6a LDA &6a,X ; direction_table &2a5b aa TAX # Leave with new direction in X &2a5c 18 CLC # Leave with carry clear to indicate spider can move &2a5d 60 RTS ; update_glook &2a5e a5 07 LDA &07 ; aroma_direction ; check_if_glook_can_be_pushed &2a60 0a ASL A &2a61 0a ASL A &2a62 0a ASL A &2a63 aa TAX &2a64 b4 78 LDY &78,X ; glook_movement_table + 3 # Consider the tile below (in terms of aroma) the glook &2a66 b1 2a LDA (&2a),Y ; tile_address &2a68 f0 22 BEQ &2a8c ; set_glook_direction # If it empty, set glook moving into that tile &2a6a 29 f0 AND #&f0 ; TILE_MOVER | TILE_MASK_MOVER_TYPE &2a6c c9 80 CMP #&80 ; TILE_MOVER | TILE_GLOOK &2a6e d0 1a BNE &2a8a ; leave_with_carry_set # If that tile contains a glook, &2a70 e8 INX &2a71 b4 78 LDY &78,X ; glook_movement_table + 4 - 1 # Consider the tile below and to one side &2a73 b1 2a LDA (&2a),Y ; tile_address &2a75 d0 06 BNE &2a7d ; check_other_side &2a77 b4 79 LDY &79,X ; glook_movement_table + 5 - 1 # and the tile to one side &2a79 b1 2a LDA (&2a),Y ; tile_address &2a7b f0 0f BEQ &2a8c ; set_glook_direction # If both are empty, set glook moving that side ; check_other_side &2a7d b4 7a LDY &7a,X ; glook_movement_table + 6 - 1 # Consider the tile below and to the other side &2a7f b1 2a LDA (&2a),Y ; tile_address &2a81 d0 07 BNE &2a8a ; leave_with_carry_set &2a83 e8 INX &2a84 b4 7a LDY &7a,X ; glook_movement_table + 7 - 2 # and the tile to that side &2a86 b1 2a LDA (&2a),Y ; tile_address &2a88 f0 02 BEQ &2a8c ; set_glook_direction # If both are empty, set glook moving to that side ; leave_with_carry_set &2a8a 38 SEC # Leave with carry set to indicate glook can't move &2a8b 60 RTS ; set_glook_direction &2a8c b5 75 LDA &75,X ; glook_movement_table &2a8e aa TAX # Leave with new direction in X &2a8f 18 CLC # Leave with carry clear to indicate glook can move &2a90 60 RTS ; update_mover &2a91 a5 28 LDA &28 ; mover &2a93 29 30 AND #&30 ; TILE_MASK_MOVER_TYPE &2a95 f0 c7 BEQ &2a5e ; update_glook &2a97 c9 10 CMP #&10 ; TILE_MONSTER &2a99 f0 58 BEQ &2af3 ; update_monster &2a9b c9 20 CMP #&20 ; TILE_SPIDER &2a9d f0 98 BEQ &2a37 ; update_spider ; update_fozzy &2a9f a2 04 LDX #&04 ; STATUS_SPRITE_FOZZY_HOLDING &2aa1 86 13 STX &13 ; fozzy_status_sprite &2aa3 ca DEX ; check_tiles_around_fozzy &2aa4 b4 95 LDY &95,X ; directional_offsets # For each of the tiles to the left, right, up and down: &2aa6 b1 2a LDA (&2a),Y ; tile_address &2aa8 29 f0 AND #&f0 ; TILE_MOVER | TILE_MASK_MOVER_TYPE &2aaa c9 90 CMP #&90 ; TILE_MOVER | TILE_MONSTER # Does the tile contain a monster? &2aac f0 3a BEQ &2ae8 ; leave_with_carry_set # If so, stop Fozzy from moving &2aae ca DEX &2aaf 10 f3 BPL &2aa4 ; check_directions_for_monsters &2ab1 a5 28 LDA &28 ; mover &2ab3 29 03 AND #&03 # Consider the direction Fozzy is moving &2ab5 a8 TAY &2ab6 b6 71 LDX &71,Y ; fozzy_first_direction_table # Use that determine which tile to consider first ; check_tiles_for_fozzy_movement_loop &2ab8 b4 63 LDY &63,X ; clockwise_offsets &2aba b1 2a LDA (&2a),Y ; tile_address # Consider the next tile the spider could move into &2abc f0 2c BEQ &2aea ; set_fozzy_direction # Fozzy can move into empty tiles &2abe ca DEX # Fozzy moves anticlockwise &2abf 10 f7 BPL &2ab8 ; check_tiles_for_fozzy_movement_loop &2ac1 a9 02 LDA #&02 ; STATUS_SPRITE_FOZZY_TRAPPED # If none of the tiles are empty, Fozzy is trapped &2ac3 85 13 STA &13 ; fozzy_status_sprite &2ac5 a5 0f LDA &0f ; frame_counter &2ac7 29 07 AND #&07 &2ac9 d0 1d BNE &2ae8 ; leave_with_carry_set # Every eight frames that Fozzy is trapped, &2acb 38 SEC &2acc f8 SED &2acd a5 08 LDA &08 ; fozzy_energy &2acf e9 01 SBC #&01 # reduce Fozzy's energy by one &2ad1 85 08 STA &08 ; fozzy_energy &2ad3 d8 CLD &2ad4 d0 0f BNE &2ae5 ; to_plot_status # Is Fozzy out of energy? &2ad6 a9 0e LDA #&0e ; TILE_SKELETON &2ad8 a0 29 LDY #&29 ; &29 (central tile) &2ada 91 2a STA (&2a),Y ; tile_address # If so, replace Fozzy with a skeleton &2adc a9 06 LDA #&06 ; STATUS_SPRITE_FOZZY_DEAD &2ade 85 13 STA &13 ; fozzy_status_sprite &2ae0 c6 12 DEC &12 ; fozzy_lives &2ae2 20 a2 30 JSR &30a2 ; play_sound_for_bono_or_fozzy_dying ; to_plot_status &2ae5 20 16 2f JSR &2f16 ; plot_status ; leave_with_carry_set &2ae8 38 SEC # Leave with carry set to indicate Fozzy can't move &2ae9 60 RTS ; set_fozzy_direction_maybe &2aea b5 6a LDA &6a,X ; direction_table &2aec aa TAX # Leave with new direction in X &2aed a9 00 LDA #&00 ; STATUS_SPRITE_FOZZY_MOVING &2aef 85 13 STA &13 ; fozzy_status_sprite ; leave_with_carry_clear &2af1 18 CLC # Leave with carry clear to indicate Fozzy can move &2af2 60 RTS ; update_monster &2af3 a2 03 LDX #&03 ; check_tiles_around_monster_loop &2af5 b4 95 LDY &95,X ; directional_offsets # For each of the tiles to the left, right, up and down: &2af7 b1 2a LDA (&2a),Y ; tile_address &2af9 f0 17 BEQ &2b12 ; consider_moving_monster # Monster stays alive if tile contains a space &2afb 29 bc AND #&bc &2afd c9 90 CMP #&90 ; TILE_MOVER | TILE_MONSTER &2aff f0 11 BEQ &2b12 ; consider_moving_monster # Monster stays alive if tile contains another monster &2b01 ca DEX &2b02 10 f1 BPL &2af5 ; check_tiles_around_monster_loop &2b04 c8 INY &2b05 a9 0e LDA #&0e ; TILE_SKELETON &2b07 91 2a STA (&2a),Y ; tile_address # Otherwise, replace monster with skeleton &2b09 a2 01 LDX #&01 &2b0b a9 00 LDA #&00 &2b0d 20 00 2f JSR &2f00 ; increase_score # Score 100 for turning monster into skeleton &2b10 38 SEC &2b11 60 RTS ; consider_moving_monster &2b12 a5 33 LDA &33 ; mover_tile_x # Compare the monster and Bono's horizontal positions &2b14 0a ASL A &2b15 0a ASL A &2b16 c5 00 CMP &00 ; bono_x &2b18 90 26 BCC &2b40 ; consider_moving_monster_right &2b1a f0 0c BEQ &2b28 ; consider_moving_monster_vertically ; consider_moving_monster_left &2b1c a2 01 LDX #&01 ; DIRECTION_LEFT &2b1e a0 28 LDY #&28 ; &29 - 1 (one tile left) &2b20 b1 2a LDA (&2a),Y ; tile_address &2b22 f0 cd BEQ &2af1 ; leave_with_carry_clear ; check_for_trapdoor_then_consider_moving_monster_vertically &2b24 c9 0c CMP #&0c ; TILE_TRAPDOOR &2b26 f0 c9 BEQ &2af1 ; leave_with_carry_clear ; consider_moving_monster_vertically &2b28 a5 2d LDA &2d ; full_tile_y # Compare the monster and Bono's vertical positions &2b2a 0a ASL A &2b2b 0a ASL A &2b2c c5 01 CMP &01 ; bono_y &2b2e 90 19 BCC &2b49 ; consider_moving_monster_down &2b30 f0 0c BEQ &2b3e ; leave_with_carry_set ; consider_moving_monster_up &2b32 a2 02 LDX #&02 ; DIRECTION_UP &2b34 a0 01 LDY #&01 ; &29 - &28 (one tile up) &2b36 b1 2a LDA (&2a),Y ; tile_address &2b38 f0 b7 BEQ &2af1 ; leave_with_carry_clear ; check_for_trapdoor &2b3a c9 0c CMP #&0c ; TILE_TRAPDOOR &2b3c f0 b3 BEQ &2af1 ; leave_with_carry_clear ; leave_with_carry_set &2b3e 38 SEC # Leave with carry set to indicate monster can't move &2b3f 60 RTS ; consider_moving_monster_right &2b40 a2 00 LDX #&00 ; DIRECTION_RIGHT &2b42 a0 2a LDY #&2a ; &29 + 1 (one tile right) &2b44 b1 2a LDA (&2a),Y ; tile_address &2b46 d0 dc BNE &2b24 ; check_for_trapdoor_then_consider_moving_monster_vertically &2b48 60 RTS ; consider_moving_monster_down &2b49 a2 03 LDX #&03 ; DIRECTION_DOWN &2b4b a0 51 LDY #&51 ; &29 + &28 (one tile down) &2b4d b1 2a LDA (&2a),Y ; tile_address &2b4f d0 e9 BNE &2b3a ; check_for_trapdoor &2b51 60 RTS ; plot_mover_leaving_tile &2b52 29 18 AND #&18 ; TILE_SUBTILE_1 * 2 &2b54 85 51 STA &51 ; offset &2b56 a5 30 LDA &30 ; mover &2b58 29 03 AND #&03 &2b5a 49 01 EOR #&01 # Invert direction &2b5c 4c 8b 2b JMP &2b8b ; plot_clipped_mover ; plot_mover &2b5f 85 30 STA &30 ; mover &2b61 29 30 AND #&30 ; TILE_MASK_MOVER_TYPE &2b63 4a LSR A &2b64 4a LSR A &2b65 85 40 STA &40 ; mover_base_sprite &2b67 a5 0f LDA &0f ; frame_counter &2b69 4a LSR A &2b6a 29 03 AND #&03 &2b6c 05 40 ORA &40 ; mover_base_sprite &2b6e aa TAX &2b6f bd 31 2c LDA &2c31,X ; mover_sprites &2b72 20 b0 22 JSR &22b0 ; calculate_sprite_address &2b75 a5 30 LDA &30 ; mover # &40 set (TILE_LEAVING) if mover is leaving tile &2b77 0a ASL A &2b78 30 d8 BMI &2b52 ; plot_mover_leaving_tile &2b7a 29 18 AND #&18 ; TILE_SUBTILE_1 * 2 &2b7c d0 07 BNE &2b85 ; plot_mover_entering_tile ; plot_mover_fully_in_tile # If the mover is not clipped by any edges of the tile, &2b7e a6 2e LDX &2e ; tile_screen_x &2b80 a4 2f LDY &2f ; tile_screen_y &2b82 4c 24 22 JMP &2224 ; plot_sprite # plot as regular tile ; plot_mover_entering_tile &2b85 85 51 STA &51 ; offset &2b87 a5 30 LDA &30 ; mover &2b89 29 03 AND #&03 ; plot_clipped_mover # Otherwise, copy part of sprite into temporary buffer &2b8b 4a LSR A &2b8c b0 28 BCS &2bb6 ; plot_mover_clipped_to_left_or_top ; plot_mover_clipped_to_right_or_bottom &2b8e 4a LSR A &2b8f b0 5c BCS &2bed ; plot_mover_clipped_to_bottom ; plot_mover_clipped_to_right # If the sprite is clipped by the right edge of tile, &2b91 a2 00 LDX #&00 ; plot_mover_clipped_to_right_loop # For each group of the buffer, &2b93 a4 51 LDY &51 ; offset ; plot_mover_clipped_to_right_byte_loop # Copy left of sprite into right of buffer &2b95 b1 40 LDA (&40),Y ; sprite_address &2b97 9d 00 01 STA &0100,X ; sprite_buffer &2b9a e8 INX &2b9b c8 INY &2b9c c0 20 CPY #&20 &2b9e d0 f5 BNE &2b95 ; plot_mover_clipped_to_right_byte_loop &2ba0 a5 40 LDA &40 ; sprite_address_low &2ba2 69 1f ADC #&1f &2ba4 85 40 STA &40 ; sprite_address_low &2ba6 a4 51 LDY &51 ; offset &2ba8 a9 00 LDA #&00 ; wipe_left_of_buffer_loop # Wipe left of buffer &2baa 9d 00 01 STA &0100,X ; sprite_buffer &2bad e8 INX &2bae 88 DEY &2baf d0 f9 BNE &2baa ; wipe_left_of_buffer_loop &2bb1 8a TXA &2bb2 10 df BPL &2b93 ; plot_mover_clipped_to_right_loop &2bb4 30 6d BMI &2c23 ; plot_sprite_from_buffer # Always branches ; plot_mover_clipped_to_left_or_top &2bb6 4a LSR A &2bb7 b0 4f BCS &2c08 ; plot_mover_clipped_to_top ; plot_mover_clipped_to_left # If the mover is clipped by the left edge of tile, &2bb9 38 SEC &2bba a9 20 LDA #&20 &2bbc e5 51 SBC &51 ; offset &2bbe 85 51 STA &51 ; offset &2bc0 a5 40 LDA &40 ; sprite_address_low &2bc2 09 60 ORA #&60 &2bc4 85 40 STA &40 ; sprite_address_low &2bc6 a2 7f LDX #&7f ; plot_mover_clipped_to_left_loop # For each group of the buffer, &2bc8 a4 51 LDY &51 ; offset &2bca 88 DEY ; plot_mover_clipped_to_left_byte_loop # Copy right of sprite into left of buffer &2bcb b1 40 LDA (&40),Y ; sprite_address &2bcd 9d 00 01 STA &0100,X ; sprite_buffer &2bd0 ca DEX &2bd1 88 DEY &2bd2 10 f7 BPL &2bcb ; plot_mover_clipped_to_left_byte_loop &2bd4 38 SEC &2bd5 a5 40 LDA &40 ; sprite_address_low &2bd7 e9 20 SBC #&20 &2bd9 85 40 STA &40 ; sprite_address_low &2bdb a4 51 LDY &51 ; offset &2bdd a9 00 LDA #&00 ; wipe_right_of_buffer_loop # Wipe right of buffer &2bdf 9d 00 01 STA &0100,X ; sprite_buffer &2be2 ca DEX &2be3 c8 INY &2be4 c0 20 CPY #&20 &2be6 d0 f7 BNE &2bdf ; wipe_right_of_buffer_loop &2be8 8a TXA &2be9 10 dd BPL &2bc8 ; plot_mover_clipped_to_left_loop &2beb 30 36 BMI &2c23 ; plot_sprite_from_buffer # Always branches ; plot_mover_clipped_to_bottom # If the mover is clipped by the bottom edge of tile, &2bed a5 51 LDA &51 ; offset &2bef 0a ASL A &2bf0 0a ASL A &2bf1 a8 TAY &2bf2 a9 00 LDA #&00 &2bf4 aa TAX ; wipe_top_of_buffer_loop # Wipe top of buffer &2bf5 9d 00 01 STA &0100,X ; sprite_buffer &2bf8 e8 INX &2bf9 88 DEY &2bfa d0 f9 BNE &2bf5 ; wipe_top_of_buffer_loop &2bfc a8 TAY ; plot_mover_clipped_to_bottom_loop # Copy top of sprite into bottom of buffer &2bfd b1 40 LDA (&40),Y ; sprite_address &2bff 9d 00 01 STA &0100,X ; sprite_buffer &2c02 c8 INY &2c03 e8 INX &2c04 10 f7 BPL &2bfd ; plot_mover_clipped_to_bottom_loop &2c06 30 1b BMI &2c23 ; plot_sprite_from_buffer # Always branches ; plot_mover_clipped_to_top # If the mover is clipped by the top edge of tile, &2c08 a5 51 LDA &51 ; offset &2c0a 0a ASL A &2c0b 0a ASL A &2c0c a8 TAY &2c0d a2 7f LDX #&7f &2c0f a9 00 LDA #&00 ; wipe_bottom_of_buffer_loop # Wipe bottom of buffer &2c11 9d 00 01 STA &0100,X ; sprite_buffer &2c14 ca DEX &2c15 88 DEY &2c16 d0 f9 BNE &2c11 ; wipe_bottom_of_buffer_loop &2c18 a0 7f LDY #&7f ; plot_mover_clipped_to_top_loop # Copy bottom of sprite into top of buffer &2c1a b1 40 LDA (&40),Y ; sprite_address &2c1c 9d 00 01 STA &0100,X ; sprite_buffer &2c1f 88 DEY &2c20 ca DEX &2c21 10 f7 BPL &2c1a ; plot_mover_clipped_to_top_loop ; plot_sprite_from_buffer # Then use temporary buffer as sprite &2c23 a2 00 LDX #&00 &2c25 86 40 STX &40 ; sprite_address_low &2c27 e8 INX ; &0100 = sprite_buffer &2c28 86 41 STX &41 ; sprite_address_high &2c2a a6 2e LDX &2e ; tile_screen_x &2c2c a4 2f LDY &2f ; tile_screen_y &2c2e 4c 24 22 JMP &2224 ; plot_sprite ; mover_sprites &2c31 10 ; &00 : SPRITE_GLOOK &2c32 10 ; &01 : SPRITE_GLOOK &2c33 10 ; &02 : SPRITE_GLOOK &2c34 10 ; &03 : SPRITE_GLOOK &2c35 13 ; &04 : SPRITE_MONSTER &2c36 14 ; &05 : SPRITE_MONSTER_FRAME_TWO &2c37 13 ; &06 : SPRITE_MONSTER &2c38 15 ; &07 : SPRITE_MONSTER_FRAME_THREE &2c39 16 ; &08 : SPRITE_SPIDER &2c3a 16 ; &09 : SPRITE_SPIDER &2c3b 17 ; &0a : SPRITE_SPIDER_FRAME_TWO &2c3c 17 ; &0b : SPRITE_SPIDER_FRAME_TWO &2c3d 18 ; &0c : SPRITE_FOZZY &2c3e 19 ; &0d : SPRITE_FOZZY_FRAME_TWO &2c3f 18 ; &0e : SPRITE_FOZZY &2c40 1a ; &0f : SPRITE_FOZZY_FRAME_THREE ; update_screen_after_initialising_bono &2c41 a9 04 LDA #&04 ; DIRECTION_NONE &2c43 85 1b STA &1b ; bono_facing &2c45 a9 00 LDA #&00 &2c47 85 1c STA &1c ; bono_frame &2c49 85 20 STA &20 ; bono_boredom_level ; update_screen &2c4b a5 06 LDA &06 ; aroma_change_countdown &2c4d f0 23 BEQ &2c72 ; skip_aroma_change # Is the aroma direction set to change? &2c4f f8 SED &2c50 38 SEC &2c51 e9 01 SBC #&01 # If so, reduce aroma countdown by one &2c53 85 06 STA &06 ; aroma_change_countdown &2c55 d8 CLD &2c56 d0 04 BNE &2c5c ; skip_change &2c58 a6 09 LDX &09 ; next_aroma_direction # Change aroma direction when countdown reaches zero &2c5a 86 07 STX &07 ; aroma_direction ; skip_change &2c5c c9 08 CMP #&08 # When countdown reaches eight, &2c5e d0 12 BNE &2c72 ; skip_aroma_change &2c60 a9 49 LDA #&49 # Use channel 1, envelope 3 &2c62 a2 0a LDX #&0a # Pitch &2c64 a0 11 LDY #&11 # Duration &2c66 20 a8 30 JSR &30a8 ; play_sound # Play warning sound &2c69 a9 41 LDA #&41 # Use channel 1, envelope 1 &2c6b a2 01 LDX #&01 # Pitch &2c6d a0 08 LDY #&08 # Duration &2c6f 20 a8 30 JSR &30a8 ; play_sound ; skip_aroma_change &2c72 a5 06 LDA &06 ; aroma_change_countdown &2c74 a2 b8 LDX #&b8 &2c76 86 53 STX &53 ; text_screen_address_low &2c78 a2 5d LDX #&5d ; &5db8 = aroma_countdown_screen_address &2c7a 86 54 STX &54 ; text_screen_address_high &2c7c a2 0f LDX #&0f &2c7e 86 55 STX &55 ; text_colour_mask &2c80 20 5d 2f JSR &2f5d ; plot_two_digit_number # Plot aroma change countdown &2c83 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &2c86 85 0b STA &0b ; buffer_start_address_high ; plot_level &2c88 a5 01 LDA &01 ; bono_y &2c8a 38 SEC &2c8b e9 08 SBC #&08 # Start plotting eight subtiles above Bono &2c8d 85 2d STA &2d ; tile_level_y &2c8f a5 01 LDA &01 ; bono_y &2c91 29 03 AND #&03 &2c93 49 ff EOR #&ff &2c95 18 CLC &2c96 69 01 ADC #&01 &2c98 85 2f STA &2f ; tile_screen_y ; plot_level_y_loop &2c9a a5 00 LDA &00 ; bono_x &2c9c 38 SEC &2c9d e9 10 SBC #&10 # Start plotting sixteen subtiles left of Bono &2c9f 85 2c STA &2c ; tile_level_x &2ca1 a5 00 LDA &00 ; bono_x &2ca3 29 03 AND #&03 &2ca5 49 ff EOR #&ff &2ca7 18 CLC &2ca8 69 01 ADC #&01 &2caa 85 2e STA &2e ; tile_screen_x ; plot_level_x_loop &2cac a6 2c LDX &2c ; tile_level_x &2cae a4 2d LDY &2d ; tile_level_y &2cb0 20 26 29 JSR &2926 ; get_tile &2cb3 10 06 BPL &2cbb ; not_mover # Top bit set if tile contains mover &2cb5 20 5f 2b JSR &2b5f ; plot_mover # Plot mover &2cb8 4c da 2c JMP &2cda ; move_to_next_tile ; not_mover &2cbb c9 0f CMP #&0f ; TILE_BONO &2cbd 90 02 BCC &2cc1 ; not_bono &2cbf a9 00 LDA #&00 ; TILE_SPACE # Clear tile underneath Bono ; not_bono &2cc1 c9 0e CMP #&0e ; TILE_SKELETON &2cc3 d0 0b BNE &2cd0 ; not_skeleton &2cc5 aa TAX &2cc6 a5 0f LDA &0f ; frame_counter &2cc8 29 0f AND #&0f &2cca c9 05 CMP #&05 &2ccc b0 01 BCS &2ccf ; use_frame &2cce e8 INX # Skeleton raises leg five frames out of sixteen ; use_frame &2ccf 8a TXA ; not_skeleton &2cd0 a6 2e LDX &2e ; tile_screen_x &2cd2 a4 2f LDY &2f ; tile_screen_y &2cd4 20 b0 22 JSR &22b0 ; calculate_sprite_address &2cd7 20 24 22 JSR &2224 ; plot_sprite # Plot static tile ; move_to_next_tile &2cda 18 CLC &2cdb a5 2c LDA &2c ; tile_level_x &2cdd 69 04 ADC #&04 &2cdf 85 2c STA &2c ; tile_level_x &2ce1 18 CLC &2ce2 a5 2e LDA &2e ; tile_screen_x &2ce4 69 04 ADC #&04 &2ce6 85 2e STA &2e ; tile_screen_x &2ce8 c9 24 CMP #&24 # Plot sixteen subtiles right of Bono &2cea 90 c0 BCC &2cac ; plot_level_x_loop &2cec a5 2d LDA &2d ; tile_level_y &2cee 69 03 ADC #&03 &2cf0 85 2d STA &2d ; tile_level_y &2cf2 18 CLC &2cf3 a5 2f LDA &2f ; tile_screen_y &2cf5 69 04 ADC #&04 &2cf7 85 2f STA &2f ; tile_screen_y &2cf9 c9 14 CMP #&14 # Plot eight subtiles below Bono &2cfb 90 9d BCC &2c9a ; plot_level_y_loop ; plot_fozzy_status &2cfd a2 78 LDX #&78 &2cff a0 59 LDY #&59 ; &5978 = fozzy_status_screen_address &2d01 a5 0f LDA &0f ; frame_counter &2d03 4a LSR A &2d04 29 01 AND #&01 # Fozzy's status animates every other frame &2d06 05 13 ORA &13 ; fozzy_status_sprite &2d08 c9 07 CMP #&07 ; STATUS_SPRITE_FOZZY_DEAD + 1 # unless Fozzy is dead &2d0a 90 02 BCC &2d0e ; not_dead &2d0c a9 06 LDA #&06 ; STATUS_SPRITE_FOZZY_DEAD ; not_dead &2d0e 20 17 30 JSR &3017 ; plot_status_sprite # Plot Fozzy's status ; plot_aroma_direction &2d11 a5 07 LDA &07 ; aroma_direction &2d13 18 CLC &2d14 69 07 ADC #&07 ; STATUS_SPRITE_AROMA_RIGHT &2d16 a2 f0 LDX #&f0 &2d18 a0 59 LDY #&59 ; &59f0 = aroma_status_screen_address &2d1a 20 17 30 JSR &3017 ; plot_status_sprite # Plot aroma direction ; plot_bono &2d1d e6 1c INC &1c ; bono_frame &2d1f a5 1c LDA &1c ; bono_frame &2d21 a6 1b LDX &1b ; bono_facing &2d23 dd 9d 2d CMP &2d9d,X ; frames_per_direction &2d26 b0 0c BCS &2d34 ; reset_frame &2d28 e0 04 CPX #&04 ; DIRECTION_NONE &2d2a d0 0c BNE &2d38 ; skip_resetting_frame &2d2c a4 20 LDY &20 ; bono_boredom_level &2d2e c0 40 CPY #&40 &2d30 b0 06 BCS &2d38 ; skip_resetting_frame &2d32 e6 20 INC &20 ; bono_boredom_level ; reset_frame &2d34 a9 00 LDA #&00 &2d36 85 1c STA &1c ; bono_frame ; skip_resetting_frame &2d38 bc a2 2d LDY &2da2,X ; animation_speed_per_direction &2d3b f0 04 BEQ &2d41 ; skip_dividing_frame ; divide_frame_loop &2d3d 4a LSR A &2d3e 88 DEY &2d3f d0 fc BNE &2d3d ; divide_frame_loop ; skip_dividing_frame &2d41 18 CLC &2d42 7d a7 2d ADC &2da7,X ; bono_sprite_offsets &2d45 aa TAX &2d46 bd ad 2d LDA &2dad,X ; bono_sprites &2d49 c9 29 CMP #&29 ; SPRITE_BONO_RANDOM_BORED &2d4b d0 29 BNE &2d76 ; plot_bono_sprite &2d4d aa TAX # If Bono is bored, &2d4e a5 1c LDA &1c ; bono_frame &2d50 29 07 AND #&07 &2d52 d0 20 BNE &2d74 ; use_previous_bored_sprite # every eight frames ; shuffle_rnd &2d54 a0 07 LDY #&07 ; shuffle_rnd_loop &2d56 a5 22 LDA &22 ; rnd_1 &2d58 4a LSR A &2d59 4a LSR A &2d5a 4a LSR A &2d5b 45 23 EOR &23 ; rnd_2 &2d5d 6a ROR A &2d5e 26 22 ROL &22 ; rnd_1 &2d60 26 23 ROL &23 ; rnd_2 &2d62 88 DEY &2d63 d0 f1 BNE &2d56 ; shuffle_rnd_loop &2d65 a5 22 LDA &22 ; rnd_1 &2d67 a0 04 LDY #&04 ; choose_bored_sprite_loop # choose a sprite according to probabilities &2d69 ca DEX &2d6a d9 98 2d CMP &2d98,Y ; bored_probabilities &2d6d 88 DEY &2d6e 90 f9 BCC &2d69 ; choose_bored_sprite_loop &2d70 8a TXA &2d71 85 1d STA &1d ; bono_bored_sprite &2d73 2c a5 1d BIT &1da5 ; use_previous_bored_sprite #2d74 a5 1d LDA &1d ; bono_bored_sprite ; plot_bono_sprite &2d76 20 b0 22 JSR &22b0 ; calculate_sprite_address &2d79 a9 90 LDA #&90 # Bono is always in middle of screen &2d7b 85 48 STA &48 ; screen_address_low &2d7d 18 CLC &2d7e a5 0b LDA &0b ; buffer_start_address_high &2d80 69 0a ADC #&0a ; + &0a90 &2d82 85 49 STA &49 ; screen_address_high &2d84 a2 04 LDX #&04 ; plot_bono_group_loop &2d86 a0 1f LDY #&1f ; plot_bono_byte_loop &2d88 b1 40 LDA (&40),Y ; sprite_address # Plot Bono over tiles &2d8a 11 48 ORA (&48),Y ; screen_address &2d8c 91 48 STA (&48),Y ; screen_address &2d8e 88 DEY &2d8f 10 f7 BPL &2d88 ; plot_bono_byte_loop &2d91 20 99 22 JSR &2299 ; move_to_next_group_of_sprite_and_screen # Move down a group &2d94 ca DEX &2d95 d0 ef BNE &2d86 ; plot_bono_group_loop &2d97 60 RTS ; bored_probabilities # When Bono is bored, &2d98 00 ; &24 SPRITE_BONO_YAWNING # 39/256 chance of yawning &2d99 27 ; &25 SPRITE_BONO_SLEEPY # 76/256 chance of looking sleepy &2d9a 73 ; &26 SPRITE_BONO_WINKING # 18/256 chance of winking &2d9b 85 ; &27 SPRITE_BONO_PICKING_NOSE # 2/256 chance of picking nose &2d9c 87 ; &28 SPRITE_BONO_WAITING # 121/256 chance of waiting ; frames_per_direction &2d9d 04 ; right &2d9e 04 ; left &2d9f 04 ; up &2da0 04 ; down &2da1 10 ; none # 00 ; dead # Last byte shared with animation_speed_per_direction ; animation_speed_per_direction &2da2 00 ; right &2da3 00 ; left &2da4 01 ; up &2da5 01 ; down &2da6 03 ; none # 00 ; dead # Last byte shared with bono_sprite_offsets ; bono_sprite_offsets &2da7 00 ; right &2da8 04 ; left &2da9 08 ; up &2daa 08 ; down &2dab 0a ; none &2dac 0c ; dead ; bono_sprites &2dad 1e ; SPRITE_BONO_RIGHT_FRAME_THREE &0 (right) &2dae 1c ; SPRITE_BONO_RIGHT &1 &2daf 1d ; SPRITE_BONO_RIGHT_FRAME_THREE &2 &2db0 1c ; SPRITE_BONO_RIGHT &3 &2db1 21 ; SPRITE_BONO_LEFT_FRAME_THREE &4 (left) &2db2 1f ; SPRITE_BONO_LEFT &5 &2db3 20 ; SPRITE_BONO_LEFT_FRAME_TWO &6 &2db4 1f ; SPRITE_BONO_LEFT &7 &2db5 22 ; SPRITE_BONO_VERTICAL &8 (up and down) &2db6 23 ; SPRITE_BONO_VERTICAL_FRAME_TWO &9 &2db7 28 ; SPRITE_BONO_WAITING &a (none) &2db8 29 ; SPRITE_BONO_RANDOM_BORED &b &2db9 1b ; SPRITE_BONO_DEAD &c (dead) ; enter_password_screen &2dba a2 00 LDX #&00 # Black background &2dbc 20 7c 66 JSR &667c ; clear_screen &2dbf 20 d2 2f JSR &2fd2 ; plot_text &2dc2 81 74 ff &2dc5 0e 17 1d 0e 1b 40 19 0a 1c 1c 20 18 1b 0d ; "ENTER PASSWORD" &2dd3 81 c5 f0 &2dd6 ff &2dd7 a9 00 LDA #&00 &2dd9 85 2a STA &2a ; offset ; enter_password_character_loop &2ddb a9 f0 LDA #&f0 &2ddd a0 07 LDY #&07 &2ddf 91 53 STA (&53),Y ; text_screen_address # Plot cursor ; wait_for_valid_key &2de1 20 99 30 JSR &3099 ; wait_for_keypress &2de4 c9 f0 CMP #&f0 ; ESCAPE &2de6 d0 03 BNE &2deb ; key_pressed &2de8 4c 2d 24 JMP &242d ; title_screen ; key_pressed &2deb a2 1c LDX #&1c ; check_key_loop &2ded dd 80 08 CMP &0880,X ; password_key_table # Allow ENTER, SPACE, DELETE and A - Z &2df0 f0 05 BEQ &2df7 ; is_valid_key &2df2 ca DEX &2df3 10 f8 BPL &2ded ; check_key_loop &2df5 30 ea BMI &2de1 ; wait_for_valid_key # Always branches ; is_valid_key &2df7 8a TXA &2df8 f0 33 BEQ &2e2d ; is_enter &2dfa a6 2a LDX &2a ; offset &2dfc c9 02 CMP #&02 ; KEY_DELETE &2dfe f0 16 BEQ &2e16 ; is_delete &2e00 e0 0c CPX #&0c &2e02 f0 d7 BEQ &2ddb ; enter_password_character_loop # Passwords can't be more than twelve characters long &2e04 c9 01 CMP #&01 ; KEY_SPACE &2e06 d0 02 BNE &2e0a ; is_letter ; is_space &2e08 a9 39 LDA #&39 ; &40 - &06 ; is_letter &2e0a 69 06 ADC #&06 &2e0c 9d 00 01 STA &0100,X ; password_buffer &2e0f 20 68 2f JSR &2f68 ; plot_character &2e12 e6 2a INC &2a ; offset &2e14 d0 c5 BNE &2ddb ; enter_password_character_loop # Always branches ; is_delete &2e16 8a TXA &2e17 f0 c2 BEQ &2ddb ; enter_password_character_loop # Can't delete before start of password &2e19 c6 2a DEC &2a ; offset &2e1b a5 53 LDA &53 ; text_screen_address_low &2e1d e9 08 SBC #&08 # Move left a character on screen &2e1f 85 53 STA &53 ; text_screen_address_low &2e21 48 PHA &2e22 20 c7 2f JSR &2fc7 ; plot_space &2e25 20 c7 2f JSR &2fc7 ; plot_space &2e28 68 PLA &2e29 85 53 STA &53 ; text_screen_address_low &2e2b d0 ae BNE &2ddb ; enter_password_character_loop # Always branches ; is_enter &2e2d a6 2a LDX &2a ; offset &2e2f a9 ff LDA #&ff # Terminate entered password &2e31 9d 00 01 STA &0100,X ; password_buffer &2e34 a9 25 LDA #&25 # Start checking from last password &2e36 85 17 STA &17 ; level_number_as_bcd &2e38 a0 00 LDY #&00 # which corresponds to screen 0, set 5 (completion) &2e3a 84 18 STY &18 ; level_in_set &2e3c a9 05 LDA #&05 &2e3e 85 19 STA &19 ; levelset ; check_passwords_loop # For each password, &2e40 a2 00 LDX #&00 &2e42 86 28 STX &28 ; mismatches ; check_password_loop # Check each character in the password &2e44 b9 09 32 LDA &3209,Y ; passwords + 1 &2e47 dd 00 01 CMP &0100,X ; password_buffer &2e4a f0 02 BEQ &2e4e ; skip_mismatch &2e4c e6 28 INC &28 ; mismatches ; skip_mismatch &2e4e e8 INX &2e4f c8 INY &2e50 0a ASL A &2e51 90 f1 BCC &2e44 ; check_password_loop # Character with top bit set marks end of password &2e53 a5 28 LDA &28 ; mismatches # Zero if password matches &2e55 f0 17 BEQ &2e6e ; leave # If so leave &2e57 c6 18 DEC &18 ; level_in_set &2e59 10 06 BPL &2e61 ; not_start_of_set &2e5b a9 05 LDA #&05 &2e5d 85 18 STA &18 ; level_in_set &2e5f c6 19 DEC &19 ; levelset ; not_start_of_set &2e61 38 SEC &2e62 f8 SED &2e63 a5 17 LDA &17 ; level_number_as_bcd &2e65 e9 01 SBC #&01 &2e67 85 17 STA &17 ; level_number_as_bcd &2e69 d8 CLD &2e6a c9 01 CMP #&01 &2e6c d0 d2 BNE &2e40 ; check_passwords_loop ; leave &2e6e 60 RTS ; load_levelset &2e6f 20 ec 2e JSR &2eec ; prepare_addresses_for_levelset_backup ; backup_loaded_levelset_loop # Copy current level set to hidden buffer &2e72 b1 28 LDA (&28),Y ; loaded_levelset_address &2e74 91 2a STA (&2a),Y ; backup_levelset_address &2e76 c8 INY &2e77 d0 f9 BNE &2e72 ; backup_loaded_level_loop &2e79 20 bc 2e JSR &2ebc ; increment_addresses_for_levelset_backup &2e7c ca DEX &2e7d d0 f3 BNE &2e72 ; backup_loaded_level_loop ; backup_font_data_loop # Copy font data to allow OS workspace to be used &2e7f bd 00 03 LDA &0300,X ; font_data &2e82 9d 00 04 STA &0400,X ; copied_font_data &2e85 e8 INX &2e86 d0 f7 BNE &2e7f ; backup_font_data_loop &2e88 a5 19 LDA &19 ; levelset &2e8a 85 60 STA &60 ; levelset_to_load &2e8c 20 00 0d JSR &0d00 ; load_from_tape # Returns carry clear if load successful &2e8f b0 08 BCS &2e99 ; restore_loaded_levelset_loop &2e91 a5 19 LDA &19 ; levelset &2e93 85 1a STA &1a ; loaded_levelset &2e95 a2 00 LDX #&00 &2e97 f0 10 BEQ &2ea9 ; restore_font_data_loop # Always branches ; restore_loaded_levelset_loop # If load fails, restore previous level set from buffer &2e99 20 ec 2e JSR &2eec ; prepare_addresses_for_levelset_backup &2e9c b1 2a LDA (&2a),Y ; backup_levelset_address &2e9e 91 28 STA (&28),Y ; loaded_levelset_address &2ea0 c8 INY &2ea1 d0 f9 BNE &2e9c ; restore_loaded_levelset_loop &2ea3 20 bc 2e JSR &2ebc ; increment_addresses_for_levelset_backup &2ea6 ca DEX &2ea7 d0 f3 BNE &2e9c ; restore_loaded_levelset_loop ; restore_font_data_loop # Restore font data &2ea9 bd 00 04 LDA &0400,X ; copied_font_data &2eac 9d 00 03 STA &0300,X ; font_data &2eaf e8 INX &2eb0 d0 f7 BNE &2ea9 ; restore_font_data_loop &2eb2 a5 19 LDA &19 ; levelset &2eb4 c5 1a CMP &1a ; loaded_levelset &2eb6 f0 03 BEQ &2ebb ; leave &2eb8 4c 2d 24 JMP &242d ; title_screen ; leave &2ebb 60 RTS ; increment_addresses_for_levelset_backup &2ebc e6 29 INC &29 ; loaded_levelset_address_high &2ebe 18 CLC &2ebf a5 2a LDA &2a ; backup_levelset_address_low &2ec1 69 40 ADC #&40 # Move down a group &2ec3 85 2a STA &2a ; backup_levelset_address_low &2ec5 a5 2b LDA &2b ; backup_levelset_address_high &2ec7 69 01 ADC #&01 &2ec9 85 2b STA &2b ; backup_levelset_address_high &2ecb 60 RTS ; status_variables_data ; screen address variable address &2ecc 98 5b ff 97 ; &5b98, colour 3, &17 ; level_number_as_bcd &2ed0 e0 5c 0f 04 ; &5ce0, colour 1, &04 ; soap_carried &2ed4 20 5d f0 0a ; &5d20, colour 2, &0a ; bono_lives &2ed8 30 5d 0f 12 ; &5d30, colour 1, &12 ; fozzy_lives &2edc 40 5d 0f 88 ; &5d50, colour 1, &08 ; fozzy_energy &2ee0 60 5d ff 03 ; &5d60, colour 3, &03 ; skeletons_carried &2ee4 78 5d f0 02 ; &5d78, colour 2, &02 ; keys_carried &2ee8 20 5e 0f 05 ; &5e20, colour 1, &05 ; soap_required ; prepare_addresses_for_levelset_backup &2eec a0 00 LDY #&00 &2eee 84 28 STY &28 ; loaded_levelset_address_low &2ef0 a9 33 LDA #&33 &2ef2 85 29 STA &29 ; loaded_levelset_address_high &2ef4 a9 20 LDA #&20 # Offset to avoid overwriting border &2ef6 85 2a STA &2a ; backup_levelset_address_low &2ef8 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &2efb 85 2b STA &2b ; backup_levelset_address_high &2efd a2 0c LDX #&0c &2eff 60 RTS ; increase_score # Called with A = delta_low, X = delta_high &2f00 48 PHA &2f01 f8 SED &2f02 18 CLC &2f03 65 14 ADC &14 ; score &2f05 85 14 STA &14 ; score &2f07 8a TXA &2f08 65 15 ADC &15 ; score + 1 &2f0a 85 15 STA &15 ; score + 1 &2f0c 90 02 BCC &2f10 ; skip_overflow &2f0e e6 16 INC &16 ; score + 2 ; skip_overflow &2f10 d8 CLD &2f11 68 PLA &2f12 c9 01 CMP #&01 &2f14 f0 2f BEQ &2f45 ; plot_score # Don't plot status when collecting earth ; plot_status &2f16 98 TYA &2f17 48 PHA &2f18 a0 00 LDY #&00 # For each variable to plot, ; plot_status_loop &2f1a b9 cc 2e LDA &2ecc,Y ; status_variables_data # First two bytes are screen address &2f1d c8 INY &2f1e 85 53 STA &53 ; text_screen_address_low &2f20 b9 cc 2e LDA &2ecc,Y ; status_variables_data &2f23 c8 INY &2f24 85 54 STA &54 ; text_screen_address_high &2f26 b9 cc 2e LDA &2ecc,Y ; status_variables_data # Third byte is mask for text colour &2f29 c8 INY &2f2a 85 55 STA &55 ; text_colour_mask &2f2c be cc 2e LDX &2ecc,Y ; status_variables_data # Bottom seven bits of fourth byte are variable address &2f2f 30 08 BMI &2f39 ; is_double_digit_variable # Top bit of fourth byte is set for double digits &2f31 b5 00 LDA &00,X ; variables &2f33 20 68 2f JSR &2f68 ; plot_character &2f36 4c 3e 2f JMP &2f3e ; consider_next_variable ; is_double_digit_variable &2f39 b5 80 LDA &80,X ; variables + &80 # X has &80 set here; &80,X wraps around zero page &2f3b 20 5d 2f JSR &2f5d ; plot_two_digit_number ; consider_next_variable &2f3e c8 INY &2f3f c0 20 CPY #&20 &2f41 90 d7 BCC &2f1a ; plot_status_loop &2f43 68 PLA &2f44 a8 TAY ; plot_score &2f45 a9 38 LDA #&38 &2f47 85 53 STA &53 ; text_screen_address_low &2f49 a9 5a LDA #&5a ; &5a38 = score_screen_address &2f4b 85 54 STA &54 ; text_screen_address_high &2f4d a9 ff LDA #&ff ; colour 3 &2f4f 85 55 STA &55 ; text_colour_mask &2f51 a5 16 LDA &16 ; score + 2 &2f53 20 5d 2f JSR &2f5d ; plot_two_digit_number &2f56 a5 15 LDA &15 ; score + 1 &2f58 20 5d 2f JSR &2f5d ; plot_two_digit_number &2f5b a5 14 LDA &14 ; score ; plot_two_digit_number &2f5d 48 PHA &2f5e 4a LSR A &2f5f 4a LSR A &2f60 4a LSR A &2f61 4a LSR A &2f62 20 68 2f JSR &2f68 ; plot_character # Plot high digit, then low digit &2f65 68 PLA &2f66 29 0f AND #&0f ; plot_character # Called with A = character &2f68 84 29 STY &29 ; tmp_y &2f6a a0 00 LDY #&00 # Font data is at &0300 + (A * 4) &2f6c 0a ASL A &2f6d 0a ASL A &2f6e b0 57 BCS &2fc7 ; plot_space # &40 = space &2f70 aa TAX ; plot_character_loop &2f71 bd 00 03 LDA &0300,X ; font_data # Get a byte of font data &2f74 29 f0 AND #&f0 # Use high nibble for first screen byte &2f76 85 28 STA &28 ; nibble &2f78 4a LSR A &2f79 4a LSR A &2f7a 4a LSR A &2f7b 4a LSR A &2f7c 05 28 ORA &28 ; nibble # Convert to colour 3 &2f7e 25 55 AND &55 ; text_colour_mask # then change to selected colour &2f80 91 53 STA (&53),Y ; text_screen_address &2f82 c8 INY &2f83 bd 00 03 LDA &0300,X ; font_data &2f86 29 0f AND #&0f # Use low nibble for second screen byte &2f88 85 28 STA &28 ; nibble &2f8a 0a ASL A &2f8b 0a ASL A &2f8c 0a ASL A &2f8d 0a ASL A &2f8e 05 28 ORA &28 ; nibble # Convert to colour 3 &2f90 25 55 AND &55 ; text_colour_mas # then change to selected colour &2f92 91 53 STA (&53),Y ; text_screen_address &2f94 c8 INY &2f95 e8 INX &2f96 c0 08 CPY #&08 &2f98 90 d7 BCC &2f71 ; plot_character_loop ; move_one_character_right &2f9a 18 CLC &2f9b a5 53 LDA &53 ; text_screen_address_low &2f9d 69 08 ADC #&08 # Move four pixels right &2f9f 85 53 STA &53 ; text_screen_address_low &2fa1 90 03 BCC &2fa6 ; skip_page &2fa3 e6 54 INC &54 ; text_screen_address_high ; skip_page &2fa5 18 CLC &2fa6 e9 40 SBC #&40 # Calculate address for one group up &2fa8 85 3c STA &3c ; border_screen_address_low &2faa a5 54 LDA &54 ; text_screen_address_high &2fac e9 01 SBC #&01 &2fae 85 3d STA &3d ; border_screen_address_high &2fb0 a9 00 LDA #&00 &2fb2 a8 TAY &2fb3 91 3c STA (&3c),Y ; border_screen_address # Add one pixel black border above character &2fb5 e6 3d INC &3d ; border_screen_address_high &2fb7 a0 31 LDY #&31 ; add_border_loop &2fb9 b1 3c LDA (&3c),Y ; border_screen_address &2fbb 29 ee AND #&ee ; 3330 # Add one pixel black border to left of character &2fbd 91 3c STA (&3c),Y ; border_screen_address &2fbf c8 INY &2fc0 c0 39 CPY #&39 &2fc2 d0 f5 BNE &2fb9 ; add_border_loop &2fc4 a4 29 LDY &29 ; tmp_y &2fc6 60 RTS ; plot_space &2fc7 a0 07 LDY #&07 &2fc9 a9 00 LDA #&00 ; plot_space_loop &2fcb 91 53 STA (&53),Y ; text_screen_address &2fcd 88 DEY &2fce 10 fb BPL &2fcb ; plot_space_loop &2fd0 30 c8 BMI &2f9a ; move_one_character_right # Always branches ; plot_text &2fd2 68 PLA # Pop return address off stack and use as text address &2fd3 85 2a STA &2a ; text_address_low # i.e. text data immediately follows call to plot_text &2fd5 68 PLA &2fd6 85 2b STA &2b ; text_address_high &2fd8 a0 01 LDY #&01 ; plot_text_loop &2fda b1 2a LDA (&2a),Y ; text_address # Get a byte of text &2fdc 30 06 BMI &2fe4 ; set_position_and_colour &2fde 20 68 2f JSR &2f68 ; plot_character # If top bit unset, plot character &2fe1 c8 INY &2fe2 d0 f6 BNE &2fda ; plot_text_loop # Always branches ; set_position_and_colour &2fe4 c9 ff CMP #&ff # &ff marks end of text &2fe6 f0 22 BEQ &300a ; end_of_text &2fe8 85 29 STA &29 ; tmp # If top bit set, two bytes set screen address &2fea c8 INY &2feb b1 2a LDA (&2a),Y ; text_address &2fed 0a ASL A &2fee 26 29 ROL &29 ; tmp &2ff0 0a ASL A &2ff1 26 29 ROL &29 ; tmp &2ff3 0a ASL A &2ff4 26 29 ROL &29 ; tmp &2ff6 85 53 STA &53 ; text_screen_address_low &2ff8 a5 0b LDA &0b ; buffer_start_address_high &2ffa 65 29 ADC &29 ; tmp &2ffc 10 02 BPL &3000 ; skip_wraparound &2ffe e9 27 SBC #&27 ; skip_wraparound &3000 85 54 STA &54 ; text_screen_address_high &3002 c8 INY &3003 b1 2a LDA (&2a),Y ; text_address # and a third byte sets the text colour mask &3005 85 55 STA &55 ; text_colour_mask &3007 c8 INY &3008 d0 d0 BNE &2fda ; plot_text_loop # Always branches ; end_of_text &300a 38 SEC &300b 98 TYA &300c 65 2a ADC &2a ; text_address_low &300e 85 2a STA &2a ; text_address_low &3010 90 02 BCC &3014 ; skip_page &3012 e6 2b INC &2b ; text_address_high ; skip_page &3014 6c 2a 00 JMP (&002a) ; text_address # Return to code after end of text ; plot_status_sprite &3017 86 48 STX &48 ; screen_address_low &3019 84 49 STY &49 ; screen_address_high &301b 0a ASL A &301c 0a ASL A &301d 0a ASL A &301e 85 28 STA &28 ; tmp &3020 0a ASL A &3021 65 28 ADC &28 ; tmp &3023 85 40 STA &40 ; sprite_address_low &3025 a9 31 LDA #&31 ; &3100 = status_sprite_data # Status sprite X is at &3100 + (24 * X) &3027 85 41 STA &41 ; sprite_address_high &3029 a2 00 LDX #&00 &302b a0 04 LDY #&04 ; plot_status_sprite_top_loop # Plot half group at bottom of top group &302d 20 60 30 JSR &3060 ; plot_status_sprite_pair_of_bytes &3030 98 TYA &3031 29 03 AND #&03 &3033 d0 f8 BNE &302d ; plot_status_sprite_top_loop &3035 98 TYA &3036 09 04 ORA #&04 &3038 a8 TAY &3039 c0 1c CPY #&1c &303b d0 f0 BNE &302d ; plot_status_sprite_top_loop &303d 20 a2 22 JSR &22a2 ; move_to_next_group_of_screen &3040 a0 00 LDY #&00 ; plot_status_sprite_middle_loop # Plot full group in middle &3042 20 60 30 JSR &3060 ; plot_status_sprite_pair_of_bytes &3045 c0 18 CPY #&18 &3047 d0 f9 BNE &3042 ; plot_status_sprite_middle_loop &3049 20 a2 22 JSR &22a2 ; move_to_next_group_of_screen &304c a0 00 LDY #&00 ; plot_status_sprite_bottom_loop # Plot half group at top of bottom group &304e 20 60 30 JSR &3060 ; plot_status_sprite_pair_of_bytes &3051 98 TYA &3052 29 03 AND #&03 &3054 d0 f8 BNE &304e ; plot_status_sprite_bottom_loop &3056 98 TYA &3057 18 CLC &3058 69 04 ADC #&04 &305a a8 TAY &305b c0 18 CPY #&18 &305d d0 ef BNE &304e ; plot_status_sprite_bottom_loop &305f 60 RTS ; plot_status_sprite_pair_of_bytes &3060 a1 40 LDA (&40,X) ; sprite_address # Get a byte of sprite data &3062 29 f0 AND #&f0 # Use high nibble for first screen byte &3064 4a LSR A &3065 4a LSR A &3066 4a LSR A &3067 4a LSR A &3068 91 48 STA (&48),Y ; screen_address &306a c8 INY &306b a1 40 LDA (&40,X) ; sprite_address &306d 29 0f AND #&0f # Use low nibble for second screen byte &306f 91 48 STA (&48),Y ; screen_address &3071 c8 INY &3072 e6 40 INC &40 ; sprite_address_low # Move to next sprite byte &3074 d0 02 BNE &3078 ; skip_page &3076 e6 41 INC &41 ; sprite_address_high ; skip_page &3078 60 RTS ; set_colour &3079 86 36 STX &36 ; logical_colour &307b 85 37 STA &37 ; physical_colour &307d a9 00 LDA #&00 &307f 46 36 LSR &36 ; logical_colour &3081 6a ROR A &3082 4a LSR A &3083 46 36 LSR &36 ; logical_colour &3085 6a ROR A &3086 05 37 ORA &37 ; physical_colour &3088 49 07 EOR #&07 &308a a0 03 LDY #&03 ; set_colour_loop &308c 8d 21 fe STA &fe21 ; video ULA palette register &308f 79 95 30 ADC &3095,Y ; palette_register_offsets &3092 88 DEY &3093 10 f7 BPL &308c ; set_colour_loop ; palette_register_offsets &3095 60 RTS # Byte is used as code and data &3096 10 &3097 30 &3098 10 ; wait_for_keypress &3099 a5 ec LDA &ec ; os_most_recently_pressed_key &309b 30 fc BMI &3099 ; wait_for_keypress ; wait_for_key_release &309d a5 ec LDA &ec ; os_most_recently_pressed_key &309f 10 fc BPL &309d ; wait_for_key_release &30a1 60 RTS ; play_sound_for_bono_or_fozzy_dying &30a2 a9 40 LDA #&40 # Use channel 0, envelope 1 &30a4 a2 06 LDX #&06 # Pitch &30a6 a0 08 LDY #&08 # Duration ; play_sound &30a8 48 PHA &30a9 29 03 AND #&03 # A: ......21 channel &30ab 85 56 STA &56 ; sound_block (channel) &30ad 68 PLA &30ae 4a LSR A # A: 842184.. volume or envelope &30af 4a LSR A &30b0 38 SEC &30b1 e9 0f SBC #&0f &30b3 85 58 STA &58 ; sound_block + 2 (volume low) &30b5 86 5a STX &5a ; sound_block + 4 (pitch) # X = pitch &30b7 84 5c STY &5c ; sound_block + 6 (duration) # Y = duration &30b9 a9 00 LDA #&00 &30bb a8 TAY &30bc e9 00 SBC #&00 &30be 85 59 STA &59 ; sound_block + 3 (volume high) &30c0 a2 56 LDX #&56 ; &0056 = sound_block &30c2 a5 56 LDA &56 ; sound_block (channel) &30c4 c9 01 CMP #&01 &30c6 d0 0c BNE &30d4 ; call_sound_osword &30c8 a5 58 LDA &58 ; sound_block + 2 (volume low) &30ca c9 01 CMP #&01 &30cc d0 06 BNE &30d4 ; call_sound_osword &30ce a9 03 LDA #&03 &30d0 85 58 STA &58 ; sound_block + 2 (volume low) &30d2 85 5c STA &5c ; sound_block + 6 (duration) ; call_sound_osword &30d4 a9 07 LDA #&07 ; Generate a sound (SOUND) &30d6 4c f1 ff JMP &fff1 ; OSWORD ; unused &30d9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &30e9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &30f9 00 00 00 00 00 00 00 ; status_sprite_data ; status_sprite_0 (STATUS_SPRITE_FOZZY_MOVING) &3100 06 53 0e 55 0c 48 32 27 63 56 fe 0f c5 4f 88 84 &3110 c8 4c 30 37 fd 38 88 c0 ; status_sprite_1 (STATUS_SPRITE_FOZZY_MOVING_FRAME_TWO) &3118 65 13 e5 5f c4 08 22 35 63 43 e0 ff 65 5e 88 8c &3128 c8 4c 03 70 f6 93 80 8c ; status_sprite_2 (STATUS_SPRITE_FOZZY_TRAPPED) &3130 26 63 44 e5 8c c8 33 36 ee b3 5f f4 ff ff 88 8c &3140 ea cc 32 37 fe 5f 88 8c ; status_sprite_3 (STATUS_SPRITE_FOZZY_TRAPPED_FRAME_TWO) &3148 26 63 44 e5 8c c8 33 32 26 67 5f f4 ee ef 88 88 &3158 8c cc 32 37 fe 5f 88 8c ; status_sprite_4 (STATUS_SPRITE_FOZZY_HOLDING) &3160 04 62 02 99 0d 2e 77 ed de ff 18 1f f0 dd 2c 6a &3170 7d 44 f4 33 90 8c 40 00 ; status_sprite_5 (STATUS_SPRITE_FOZZY_HOLDING_FRAME_TWO) &3178 04 62 00 a9 00 d2 77 ed de ff 18 1c f3 cd e4 ae &3188 75 c4 f4 33 91 8c 44 00 ; status_sprite_6 (STATUS_SPRITE_FOZZY_DEAD) &3190 00 00 00 00 00 00 00 01 5e e6 00 ff ff ff 00 08 &31a0 a7 76 60 00 00 00 60 00 ; status_sprite_7 (STATUS_SPRITE_AROMA_RIGHT) &31a8 00 00 00 69 00 00 07 8b b8 70 ab 3f f3 ba 84 ad &31b8 da 48 00 00 96 00 00 00 ; status_sprite_8 (STATUS_SPRITE_AROMA_LEFT) &31c0 00 01 06 95 00 00 25 bb 52 10 dc ff cd 59 e1 dd &31d0 1e 00 00 00 60 00 00 00 ; status_sprite_9 (STATUS_SPRITE_AROMA_UPT) &31d8 00 01 4a a5 00 00 12 25 54 31 5e ef f4 55 08 84 &31e8 44 80 11 10 55 1e 00 00 ; status_sprite_a (STATUS_SPRITE_AROMA_DOWN) &31f0 00 00 78 aa 08 88 12 22 11 00 a2 ff 77 aa c2 aa &3200 44 88 00 00 55 22 00 00 ; passwords &3208 ff &3209 0e 21 0c 0a 15 12 0b 1e 1b ff ; 25: "EXCALIBUR" &3213 0d 0a 1b 14 17 0e 1c 1c ff ; 24: "DARKNESS" &321c 1c 0a 0b 18 1d 0a 10 0e ff ; 23: "SABOTAGE" &3225 0f 0a 1d 12 10 1e 0e ff ; 22: "FATIGUE" &322d 0c 18 1e 17 1d 0d 18 20 17 ff ; 21: "COUNTDOWN" &3237 16 18 17 18 1d 18 17 0e ff ; 20: "MONOTONE" &3240 1e 15 1d 12 16 0a 1d 0e ff ; 19: "ULTIMATE" &3249 0a 16 0e 17 0d 16 0e 17 1d ff ; 18: "AMENDMENT" &3253 1d 18 1b 1d 1e 1b 0e ff ; 17: "TORTURE" &325b 10 0e 17 0e 1b 0a 1d 18 1b ff ; 16: "GENERATOR" &3265 0c 18 15 15 0a 19 1c 0e ff ; 15: "COLLAPSE" &326e 1e 17 0d 0e 1b 1d 0a 14 0e ff ; 14: "UNDERTAKE" &3278 19 0e 20 1d 0e 1b ff ; 13: "PEWTER" &327f 12 17 1d 0e 1b 0e 1c 1d ff ; 12: "INTEREST" &3288 0c 1b 18 1c 1c 20 18 1b 0d ff ; 11: "CROSSWORD" &3292 0c 1b 0a 23 22 40 0c 0a 1f 0e ff ; 10: "CRAZY CAVE" &329d 18 1f 0e 1b 15 18 1b 0d ff ; 9: "OVERLOAD" &32a6 1d 18 15 0e 1b 0a 17 0c 0e ff ; 8: "TOLERANCE" &32b0 0c 0a 0b 0b 0a 10 0e ff ; 7: "CABBAGE" &32b8 17 18 16 12 17 0a 15 ff ; 6: "NOMINAL" &32c0 0a 17 12 16 0a 15 ff ; 5: "ANIMAL" &32c7 0c 18 16 19 15 0e 21 ff ; 4: "COMPLEX" &32cf 0a 1d 18 16 12 0c ff ; 3: "ATOMIC" &32d6 0b 0e 10 12 17 17 0e 1b ff ; 2: "BEGINNER" ; unused &32df 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &32ef 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &32ff 00 ; levelset_data # First levelset (also SCREEN1) &3300 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 # Level 1 &3310 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 # &3320 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 # ######################################## &3330 99 99 99 13 93 99 99 99 99 99 99 99 99 39 11 11 # ######################################## &3340 31 99 99 99 99 99 99 72 1f 99 99 99 99 99 99 99 # ######################+-+############### &3350 99 99 72 77 77 92 99 99 99 99 99 39 37 11 11 11 # ###+-----+############|.>############### &3360 93 99 99 99 99 13 73 a7 77 92 39 31 3f 13 13 31 # ###|.....|############+.+------+######## &3370 77 6f 07 00 00 92 99 99 99 99 f2 50 5f 07 77 92 # #+-+..G..|##+-+^+-+--+..V. |######## &3380 29 2b 00 30 70 72 77 07 13 03 93 99 99 99 99 13 # #|FDB. ..|##|S| + .|.... +-+ +######## &3390 73 0c 77 92 29 2b 00 70 77 42 77 07 a2 00 37 99 # #+-+.M ..|##|S| ...|C... |G .+####### &33a0 99 99 99 99 62 77 77 13 31 35 00 30 77 13 11 03 # ###|K....+--+D+ +..+---+ |.+-+######## &33b0 72 13 93 99 99 99 99 99 72 77 bb 07 00 00 08 00 # ###|...SS. X GGSSSSS |.|########## &33c0 aa bb bb 0b 72 92 99 99 99 99 99 99 13 11 11 13 # ###+-----+--+.K...+--+GGG+-+ +---+^+#### &33d0 31 67 77 37 11 a3 aa 13 03 13 11 f3 33 99 99 99 # #############+.C.+..C|GG+MM| |#### &33e0 99 99 99 99 99 39 47 37 77 24 aa c3 2c 00 00 00 # ##############+-+....+-+MMM| .... |#### &33f0 20 99 99 99 99 99 99 99 99 99 13 73 77 37 31 cc # ################|S..SD.DMMM|S .M . |#### &3400 2c 00 77 77 20 99 99 99 99 99 99 99 99 99 99 b2 # ################|.GG++K+-+M|SS.... |#### &3410 77 5b 57 cc 2c 0b c7 70 20 99 99 99 99 99 99 99 # ################|SSS|G |M|CSS |#### &3420 99 99 99 72 aa 33 36 31 2c bb 77 77 20 99 99 99 # ################+v+-+--+ +M+-----+ +#### &3430 99 99 99 99 99 99 99 b2 bb a2 00 20 2c b4 0b 00 # #######################| C+... M+G +#### &3440 20 99 99 99 99 99 99 99 99 99 99 f3 34 31 11 03 # #######################| D... |.+##### &3450 c3 13 11 11 03 93 99 99 99 99 99 99 99 99 99 99 # #######################|S +.....+.|##### &3460 99 99 99 02 34 77 07 3c 0a 93 99 99 99 99 99 99 # #######################+SS| ...K..|##### &3470 99 99 99 99 99 99 99 02 50 77 07 20 37 99 99 99 # ######################## &3600 31 37 31 37 77 00 93 99 99 99 99 99 99 99 39 31 # ###################|M K.+--+G+-+----+.+# &3610 31 31 77 77 77 77 27 a7 77 07 1f 99 99 99 99 99 # ###################| ...|GGGGGG|....|.|# &3620 99 99 99 99 99 c2 60 37 11 a3 13 13 11 31 37 99 # ###################|....|GGGGGG+ G M|.|# &3630 99 99 99 99 99 99 99 99 99 02 77 27 aa aa aa 72 # ###################|G.C.|GGGGGG|.X..|.|# &3640 77 27 27 99 99 99 99 99 99 99 99 99 99 72 77 27 # ###################+--+.|GGGGGG|. ..|.|# &3650 aa aa aa 03 0a 2c 27 99 99 99 99 99 99 99 99 99 # ######################|K+GGGGGG+ +-+.|# &3660 99 a2 47 27 aa aa aa 72 78 27 27 99 99 99 99 99 # ######################|.DGGGGGGDS GS|.+# &3670 99 99 99 99 99 13 31 27 aa aa aa 72 70 27 27 99 # ######################+-+------+..+S+.G+ &3680 99 99 99 99 99 99 99 99 99 99 29 36 aa aa aa 03 # ###############################<.C|SS.+# &3690 30 31 27 99 99 99 99 99 99 99 99 99 99 99 29 57 # ###############################+--+---+# &36a0 aa aa aa b5 a0 2b 37 99 99 99 99 99 99 99 99 99 # ######################################## &36b0 99 99 39 31 11 11 11 73 37 3b a7 93 99 99 99 99 &36c0 99 99 99 99 99 99 99 99 99 99 99 2f 47 b2 7b 93 &36d0 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 39 &36e0 11 13 11 93 99 99 99 99 99 99 99 99 99 99 99 99 &36f0 99 99 99 99 99 99 99 99 00 00 00 00 00 00 00 05 # magenta &3700 13 11 31 11 11 11 11 11 11 11 11 11 11 11 11 31 # Level 3 (ATOMIC) &3710 99 99 99 99 f2 75 77 72 0c a0 77 77 77 77 77 bb # &3720 7b 77 77 77 92 99 99 99 29 77 fa 26 77 77 77 37 # +----+-------------------------+######## &3730 77 13 11 11 11 83 77 77 27 99 99 99 99 72 77 37 # |B...|.M G..........SSS.......|######## &3740 11 11 11 31 77 92 99 99 99 72 77 0c 26 99 99 99 # |..GV|.......+..+-------+X.....|######## &3750 99 72 77 2a 99 99 99 39 77 92 99 99 99 72 77 00 # |....+-------+..|#######|...M K|######## &3760 20 99 99 99 99 33 77 2c 99 99 99 f9 72 27 99 99 # |...G|#######+..|#######|... |######## &3770 99 29 77 07 b0 92 99 99 99 99 72 07 92 99 99 99 # ++..M|#######<..|#######|... S|######## &3780 73 27 99 99 99 39 11 11 11 93 99 99 99 99 72 07 # #|.. |#######+..|#######+------+######## &3790 13 11 11 11 73 27 99 99 99 99 99 99 99 99 99 99 # #|.. +-------+..|####################### &37a0 99 99 72 07 77 77 77 77 77 24 99 13 11 11 11 11 # #|.. ..........C|##+-------------^---+## &37b0 11 11 3f 11 31 99 29 7a 37 11 11 11 31 35 93 29 # #|G..+-------+D++##|.......... |## &37c0 77 77 77 77 77 00 00 00 20 99 29 7c 20 0a 00 37 # #|M. |G .+#|..|##|.......... |## &37d0 29 77 92 29 77 77 77 77 77 00 00 00 20 99 29 70 # #| .S|...M.+^|..|##|..........P S |## &37e0 2b 77 c7 37 3f 72 27 99 72 77 77 77 77 d7 00 0b # #|SSG|.......|..|##|..G M... |## &37f0 00 92 99 b2 ab 72 77 77 77 72 27 99 72 a7 00 c0 # ++-+D+......C|..|##|.......... |## &3800 77 07 00 00 00 92 39 13 53 73 77 77 47 72 27 99 # |GK..|.G M..|..|##|.................|## &3810 72 77 77 77 77 07 00 00 00 92 29 6a 77 72 0a c0 # |G.GG|......K|..|##|.................|## &3820 77 72 27 99 72 77 77 77 77 77 77 77 77 92 29 7a # |G..G|.G M..|..|##|....G M........|## &3830 aa 72 77 77 67 72 27 99 72 77 77 77 77 77 77 77 # |SGS.|.......|..|##|...........G M.|## &3840 77 92 29 7a a7 72 0a c0 77 72 27 99 72 77 a7 00 # |G.GG|.G M..|..|##|.................|## &3850 c0 77 77 77 77 92 29 ab 7b 72 77 77 77 72 27 99 # |....|.......+..+##|.................|## &3860 72 77 77 77 77 77 0a 00 7c 92 29 7a aa 72 0a c0 # |.G.G|.GG M.G...>##|..G M..........++# &3870 77 72 27 99 72 77 77 77 77 77 77 77 77 92 29 77 # |S..S|..+-------+--+---------+C.. |# &3880 77 72 77 77 77 73 37 99 72 77 77 77 77 77 77 77 # |.G..+--+G G G G G G G G +# &3890 77 92 29 a7 a7 72 aa c0 a7 77 f7 91 29 77 0a 00 # |.SG.DF . ># &38a0 7c 77 77 77 77 37 93 b2 77 2b 77 13 11 11 11 13 # +----+--------------------------------+# &38b0 31 11 11 11 11 31 74 07 00 00 92 72 7a 37 11 a3 &38c0 00 0a a0 00 0a a0 00 0a a0 00 00 0a 00 00 93 72 &38d0 ab 57 0f 70 00 00 00 00 00 00 00 00 00 00 00 00 &38e0 00 00 f0 91 13 11 31 11 11 11 11 11 11 11 11 11 &38f0 11 11 11 11 11 11 11 93 11 03 00 00 00 00 00 01 # red &3900 13 11 f1 13 11 93 99 99 99 99 13 11 11 11 11 31 # Level 4 (COMPLEX) &3910 99 13 3f 11 93 72 77 77 77 27 99 99 99 99 29 77 # &3920 a7 77 aa 77 1f 99 02 0f 00 92 72 77 77 77 27 99 # +----^---+#########+----------+##+-^--+# &3930 99 99 99 29 77 a7 77 7a 7a 13 31 70 06 92 72 87 # |........|#########|...G..GG..>##| F |# &3940 77 77 27 99 99 99 99 29 74 77 77 7a 77 b5 aa 00 # |........|#########|...G..G.G.+--+ .K |# &3950 04 92 72 77 c7 74 27 99 99 99 39 31 7a 77 77 a7 # |..X.....|#########|C.....G...DSGG C |# &3960 77 13 31 00 00 92 72 77 c7 77 27 99 99 99 29 77 # |....MC..|#######+-+G......G..+--+ |# &3970 77 77 a7 77 67 92 39 37 4f 31 29 77 77 77 77 92 # |....M...|#######|.......G...K|##+.+v-+# &3980 99 99 99 72 13 11 11 11 11 31 99 72 92 99 29 77 # |........|#######|.+----------+##|.|#### &3990 77 77 77 92 99 99 99 72 92 99 99 99 99 99 99 72 # |........|#######|.|#############|.|#### &39a0 92 99 29 77 77 77 7b 92 39 11 11 73 13 11 13 11 # |......S.|##+----+.+---+---------+.+---+ &39b0 11 11 11 73 13 11 23 77 cc 77 78 92 29 00 00 00 # |..MM..X.|##| |......S........| &39c0 00 00 72 77 77 b7 77 77 77 77 22 77 cc 77 77 92 # |..MM....|##| +-+..+-+ |...............| &39d0 29 30 31 77 13 03 72 77 77 77 77 77 77 77 22 77 # |........|##| |SSSSSS| |.K.............| &39e0 77 77 77 92 29 20 bb bb bb 02 72 76 77 77 77 77 # |... ....|##| |S B S| |. .M.......G M| &39f0 77 77 22 77 07 77 77 92 29 20 0b f0 05 2b 20 07 # |..SM....|##| |S S| |.M. ....+------+ &3a00 c7 77 77 77 a7 00 2c 72 b7 7c 77 27 99 02 b2 00 # |........|##| |SSSSSS| |. . ....D.V....| &3a10 00 2b 20 c7 07 77 77 13 11 11 31 72 77 77 77 27 # |.....MM.|##| +------+ |. .G....+---+..| &3a20 99 02 b2 bb bb 2b 20 07 07 77 77 75 6f 77 77 22 # |.....M .|##| P |.G.....S|###<.C| &3a30 77 77 c7 7c 92 29 30 11 11 11 03 72 70 7a 77 37 # |..X.....++^+----------+--------+---+..| &3a40 11 31 77 22 77 77 c7 70 92 29 00 00 0d 00 00 72 # |........|C..................SSSSSSS+..| &3a50 7a 77 77 2b 99 f9 72 24 72 87 77 77 37 f3 33 11 # |M.......++v+-+D+-+D+-----------+.... | &3a60 11 11 11 11 13 11 11 11 31 11 31 77 22 77 77 77 # |....MM..|####|G|#|G|###########| | &3a70 77 42 77 77 77 77 77 77 77 77 77 bb bb bb 3b 77 # |....M ..+----+.+-+.|###########| | &3a80 22 7c 77 77 77 33 4f 13 53 13 53 13 11 11 11 11 # |...................|###########|GG GG| &3a90 11 73 77 07 20 72 77 c7 7c 27 99 99 a2 92 a2 92 # +-------------------+###########|GGGGGG| &3aa0 99 99 99 99 99 02 00 00 20 72 77 c7 70 37 11 11 # ################################++-----+ &3ab0 73 13 73 92 99 99 99 99 99 02 00 00 20 72 77 77 &3ac0 77 77 77 77 77 77 77 92 99 99 99 99 99 a2 0a a0 &3ad0 2a 13 11 11 11 11 11 11 11 11 11 93 99 99 99 99 &3ae0 99 a2 aa aa 2a 99 99 99 99 99 99 99 99 99 99 99 &3af0 99 99 99 99 99 33 11 11 31 99 00 00 00 00 00 06 # cyan &3b00 13 11 f3 33 31 11 11 31 11 31 39 11 31 11 11 31 # Level 5 (ANIMAL) &3b10 11 11 11 11 23 77 d7 77 77 bb bb 2b 00 f0 91 02 # &3b20 00 05 00 00 00 00 00 00 2b 02 00 70 77 13 13 11 # +---+^+-+-----+---+#+---+-----+--------+ &3b30 03 00 13 03 00 03 00 00 13 11 03 00 20 03 00 7b # |...P....SSSSS| >#| D S| &3b40 74 77 b2 00 00 00 00 00 00 02 aa 0a 03 b7 02 00 # | ...+-+---+ +-+ + +---+ | &3b50 20 2f f0 05 70 77 a5 02 00 00 6f 77 77 77 20 aa # + S.C...|S | GGG + .S| | &3b60 a6 5a 70 3b 31 35 33 00 00 77 37 27 07 70 77 00 # < B ...DG| V...... |GGKGGD .S+-+D++ &3b70 77 77 37 11 11 31 03 07 00 00 22 00 30 3a 20 27 # + ...+.|. ... .....+-----++ . | &3b80 77 77 77 07 77 77 77 07 00 06 02 00 00 00 22 0f # | +G+ |.|....... ....... K | | &3b90 00 62 c2 02 73 07 7c 77 7c 07 7c 77 77 40 20 00 # |F |K|M| +.. M...M.. M..... C | S| &3ba0 00 00 2b 13 13 13 13 73 77 77 70 77 70 07 77 77 # +-+-+-+-+..... ... .. .... . | C | &3bb0 00 07 20 00 04 00 20 02 00 02 42 a2 77 77 70 77 # | | |C|G.... ...... ....M... |. +-+ | &3bc0 77 07 77 77 7c 77 20 07 30 31 20 02 03 02 03 a2 # | + | + |G........G............|.. |#< | &3bd0 77 77 77 77 7a 77 77 77 77 77 27 77 20 f9 02 22 # | | | |G....G......G....G..+-+...+---+ &3be0 20 20 00 20 7a 77 a7 77 77 77 7a 77 a7 77 13 73 # | | + + +-------------+------+G|.X. | &3bf0 77 13 11 23 20 30 30 30 11 11 11 11 11 11 31 11 # | | | |G.......+G...|G.. K|G|.. ...| &3c00 11 11 a3 72 78 00 00 22 20 00 20 20 7a 77 77 77 # | | +-+ |GG..G..GD..+.|..+.. +G| . MS| &3c10 a3 77 27 7a 07 60 a2 72 07 70 77 22 20 30 31 20 # | | | + |GG.GG.+.+..|.+..+M.. .| .. S | &3c20 aa 77 7a a7 75 37 27 77 73 07 a3 02 00 07 bc 22 # | +-+ |GG.G+-+....|...+ +-+.++.G+---+ &3c30 20 20 30 20 aa a7 7a 73 73 27 37 77 c3 77 70 02 # | | | + |GG.G|K +---+---+--+GGG.|.G| | &3c40 70 07 0b 22 30 31 00 20 aa a7 13 73 77 27 77 37 # +-+ | | |GG.G+ | ....K... D....++.| C | &3c50 00 13 73 33 a7 13 11 23 20 20 30 20 aa a7 62 30 # ##| + | |GG.... | .G. ...+-----+ +...| &3c60 11 31 11 31 11 a3 aa 27 a7 02 00 32 31 20 20 20 # +^+ | |GG.G+. |M....M..G.............| &3c70 aa a7 03 20 70 77 67 77 07 75 77 37 73 02 04 92 # |D| + |S|GG.G|. |.........S...S........| &3c80 29 30 20 20 aa 77 77 20 00 a7 07 70 77 13 11 11 # | + | |S+-+.++G.|..................M...| &3c90 03 73 77 32 3f 03 00 02 a2 7a 3a 07 c2 77 77 7c # | | |SS...... |.................. .G| &3ca0 a7 77 77 77 77 77 77 27 52 02 03 b2 a2 7a 2a 07 # +-+---+---------+-+v+------------------+ &3cb0 72 77 77 77 77 7b 77 7b 77 77 77 27 02 03 02 b2 &3cc0 13 73 33 7a 72 77 77 77 77 77 77 77 77 c7 77 27 &3cd0 02 00 02 b2 7b 77 77 07 72 77 77 77 77 77 77 77 &3ce0 77 07 70 2a 13 13 11 13 11 11 11 11 13 f3 34 11 &3cf0 11 11 11 11 11 11 11 11 03 00 00 00 00 00 00 01 # red &3d00 13 11 31 39 11 11 31 31 11 f3 33 11 11 11 11 11 # Level 6 (NOMINAL) &3d10 11 11 11 13 23 5f 70 26 29 7b 00 30 37 00 00 70 # &3d20 0a 00 00 00 07 0c 00 27 24 02 f0 70 13 b3 07 04 # +----+#+-----+-+--+^+----------------+-+ &3d30 70 0a 13 31 37 31 30 31 70 77 77 77 02 22 77 7a # |B .K|#|S. +.+ .G . M .|C| &3d40 00 5a d7 00 00 03 00 00 a7 00 20 0b 00 00 00 a7 # | F.+-+S. C .G +--+.+-+ +-+ .......| | &3d50 02 22 57 37 77 13 11 11 11 13 31 11 13 73 37 31 # |..G. GD.P + .G |S .G| | &3d60 37 11 31 70 03 22 37 20 77 77 00 00 30 70 26 07 # |.D.+..+-------+--+--+-+..+-+.+---+ .+ | &3d70 02 02 70 77 77 00 00 00 00 22 27 30 b7 37 f0 06 # |.+ |.... + .K|. | | ..... | &3d80 00 ab 77 b2 30 30 30 77 77 13 31 00 70 27 72 c2 # |.| +.S.+ V SG..|S + + +....+--+ ..| &3d90 77 77 02 00 13 13 11 33 70 7a 20 77 77 c2 20 00 # |.|M....| +-+---++ .G. |....|M | .G.| &3da0 a7 27 72 13 73 77 02 00 0a 02 00 20 30 11 31 31 # |.+-+...| G | | +---+-+ .| | ...| &3db0 70 02 20 00 77 27 b2 77 77 0c 02 00 07 02 04 20 # |S....M | . | C | |....G.. +--+ +--+ &3dc0 20 77 77 7a 07 13 31 00 13 31 72 7a 07 00 72 77 # |.G.. |.... | .+.|.G....G |SK| &3dd0 07 02 00 37 27 a7 77 77 0a 00 00 00 b2 26 72 77 # |.... X | M|S ...|...G.....G+G | | &3de0 07 08 02 00 c0 b2 00 77 27 77 a7 77 77 a7 a3 00 # +.......+-+---+.....G|G.GG+-+D+-+---+ + &3df0 02 20 73 77 77 77 13 13 11 73 77 77 2a 7a aa 13 # <...G.....|.....G..GG|.K.G|GGGGG|GGGG > &3e00 53 13 13 11 03 30 2f 77 a7 77 77 27 77 77 a7 77 # +...M.. |.....G..GG+----+GGGGG|GGGG + &3e10 aa 72 76 2a aa aa 2a aa aa 00 1f 73 77 7c 07 00 # |... .. C |.....G...G.....|GGSGG+----+ | &3e20 72 77 77 7a a7 3a 11 11 a3 aa aa a2 aa 0a 30 72 # |...... |.....G......GG.+-----+ | &3e30 77 70 07 04 72 77 77 7a 77 7a 77 77 a2 ba aa 13 # | M+----+.....G.+-----+ | &3e40 11 31 20 72 77 77 07 00 72 77 77 7a 77 77 a7 7a # |SS +... ......G.......| C | &3e50 13 11 11 03 00 00 20 02 00 3c 11 11 73 77 77 7a # |SSS D ......G..M ...+ | &3e60 13 11 11 03 00 00 00 00 00 00 20 b2 0b 30 77 07 # +----+..........G.. ...D........... | &3e70 77 77 77 7a 77 77 77 02 00 00 00 00 00 04 20 b2 # |........G......G...G...+.GM .GM .. | &3e80 bb 50 00 00 77 77 77 7a c7 70 77 03 00 00 00 00 # |..K....................|............ | &3e90 00 00 20 13 11 31 77 77 77 77 77 7a 07 70 77 75 # |.....G.................|.GM .GM ... | &3ea0 77 77 77 77 77 00 20 72 77 77 77 a7 77 77 77 7a # +-----------------+v+---+--------------+ &3eb0 77 7a 77 73 ca 00 a7 0c 70 07 20 72 67 77 77 77 &3ec0 77 77 77 77 77 77 77 72 77 77 77 77 77 07 20 72 &3ed0 77 77 7a 77 77 77 77 77 77 77 77 72 ca 00 a7 0c &3ee0 70 77 20 13 11 11 11 11 11 11 11 11 f3 34 11 31 &3ef0 11 11 11 11 11 11 11 03 00 00 00 00 00 00 00 01 # red ; screen_buffer_one # Raw MODE 5 screen data, &140 bytes per group &3f00 3f 1f 07 47 67 77 7f 7f 44 88 44 08 0c 0e 06 8a &3f10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3f30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3f50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3f70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3f90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3fb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3fd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &3ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4030 33 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4040 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &40a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &40b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &40c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &40d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &40e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &40f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4170 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4180 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &41a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &41b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &41c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &41d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &41e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &41f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &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 00 00 00 00 00 00 00 00 00 &4260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &42a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &42b0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &42c0 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &42d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &42e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &42f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &43a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &43b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &43c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &43d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &43e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &43f0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4400 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &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 &4480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &44a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &44b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &44c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &44d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &44e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &44f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4530 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4540 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &45a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &45b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &45c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &45d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &45e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &45f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4670 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4680 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &46a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &46b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &46c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &46d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &46e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &46f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &47a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &47b0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &47c0 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &47d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &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 00 00 00 00 00 00 00 &4800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &48a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &48b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &48c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &48d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &48e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &48f0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4900 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4910 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4970 00 00 00 00 00 00 00 00 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 &4990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &49a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &49b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &49c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &49d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &49e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &49f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4a10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4a30 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4a40 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4a50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4a70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4a90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ab0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ad0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4af0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4b10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4b30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4b50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4b70 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4b80 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4b90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4bb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4bd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4bf0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4c90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4cb0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4cc0 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4cd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4cf0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4d90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4db0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4dd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4df0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4e00 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4e10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4e30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4e50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4e70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4e90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4eb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ed0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ef0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4f10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4f30 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &4f40 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &4f50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4f70 00 00 00 00 00 00 00 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 &4f90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4fb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4fd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &4ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5070 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &5080 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &5090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &50a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &50b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &50c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &50d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &50e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &50f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &51a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &51b0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &51c0 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &51d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &51e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &51f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &52a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &52b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &52c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &52d0 00 00 00 00 00 00 00 00 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 &52f0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &5300 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &5310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &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 00 00 &5340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &53a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &53b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &53c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &53d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &53e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &53f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5430 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &5440 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &5450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5470 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &54a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &54b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &54c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &54d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &54e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &54f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5550 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5570 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &5580 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &5590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &55a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &55b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &55c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &55d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &55e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &55f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &56a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &56b0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd &56c0 3f 1f 07 47 67 77 7f 7f 46 88 44 08 0c 0e 06 8a &56d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &56e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &56f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5730 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5750 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5770 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &57a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &57b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &57c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &57d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &57e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &57f0 37 33 33 23 03 07 17 37 8b 8f 0e 0c 2a cc ab cd ; status_area_screen_data # Raw MODE 5 screen data, &140 bytes per group &5800 3f 1f 07 47 67 77 7f 7f 46 88 54 18 1c 0f 17 9b &5810 56 ef 67 b3 d1 d1 68 ac d1 d1 e0 68 68 bc bc 00 &5820 bc bc de de de 67 67 00 67 67 b3 b3 b3 d1 d1 00 &5830 d1 d1 68 68 68 bc bc 00 bc bc de de de 67 67 00 &5840 67 67 b3 b3 b3 d1 d1 00 d1 d1 68 68 68 bc bc 00 &5850 bc bc de de de 67 67 00 67 67 b3 b3 b3 d1 d1 00 &5860 d1 d1 68 68 68 bc bc 00 bc bc de de de 67 67 00 &5870 67 67 b3 b3 b3 d1 d1 00 d1 d1 68 68 68 bc bc 00 &5880 bc bc de de de 67 67 00 67 67 b3 b3 b3 d1 d1 00 &5890 00 00 68 78 78 bc bc 00 33 77 55 55 33 a2 b3 00 &58a0 88 cc 44 54 98 b8 b8 00 01 01 d3 d3 d3 b7 b7 00 &58b0 ee ee dc dc dc b8 b8 00 d3 d3 b7 b7 b7 6e 6e 00 &58c0 b8 b8 61 61 61 d3 d3 00 6e 6e dc dc dc b8 b8 00 &58d0 d3 d3 b7 b7 b7 6e 6e 00 b8 b8 61 61 61 d3 d3 00 &58e0 6e 6e dc dc dc b8 b8 00 d3 d3 b7 b7 b7 6e 6e 00 &58f0 b8 b8 61 61 61 d3 d3 00 6e 6e dc dc dc b8 b8 00 &5900 d3 d3 b7 b7 b7 6e 6e 00 b8 b8 61 61 61 d3 d3 00 &5910 6e 6e dc dc dc b8 b8 00 d3 d3 b7 b7 b7 6e 6e 00 &5920 b8 b8 70 61 61 d3 d3 00 a6 7f 6e dc b8 b8 61 53 &5930 37 33 b3 a3 83 0f 9f bf 8b 8f 0e 0c 2a cc ab cd &5940 3f 1f 07 47 67 77 7f 7f 57 88 54 18 1c 0f 17 9b &5950 ce ee 66 a2 c0 e0 68 ac 00 00 00 51 73 62 31 70 &5960 00 00 00 51 fb ea f1 f0 00 00 00 40 c8 c8 80 c0 &5970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5990 00 00 00 00 00 00 00 00 00 00 00 00 11 11 00 11 &59a0 00 00 00 ee 55 55 ee 55 00 00 00 00 00 00 00 00 &59b0 00 00 00 00 00 10 10 10 00 00 00 70 80 00 00 00 &59c0 00 00 00 00 80 40 40 40 00 00 00 00 00 00 00 00 &59d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &59e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &59f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5a00 00 00 00 00 00 00 00 00 33 22 22 33 00 00 33 00 &5a10 bb aa 22 aa aa aa bb 00 bb aa 22 22 22 22 bb 00 &5a20 bb aa aa bb bb aa aa 00 bb aa aa bb 22 aa bb 00 &5a30 88 aa 22 00 22 22 88 00 ee aa aa aa aa aa ee 00 &5a40 ee aa aa aa aa aa ee 00 ee aa aa aa aa aa ee 00 &5a50 ee aa aa aa aa aa ee 00 ee aa aa aa aa aa ee 00 &5a60 ee aa aa aa aa aa ee 00 37 77 66 54 30 70 61 53 &5a70 bf 33 b3 a3 83 0f 9f bf 8b 8f 0e 0c 2a cc ab cd &5a80 3f 1f 07 47 67 77 7f 7f 57 88 54 18 1c 0f 17 9b &5a90 ce ee 66 a2 c0 e0 68 ac 60 51 31 30 10 20 70 50 &5aa0 e0 15 f1 f0 f0 e0 f0 f0 c0 40 80 80 00 80 c0 40 &5ab0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5ad0 00 00 00 00 00 00 00 00 00 22 55 44 99 88 55 cc &5ae0 aa 44 11 aa 11 aa 11 aa 00 88 44 44 22 22 44 66 &5af0 00 00 00 00 00 00 00 00 80 70 20 20 20 20 20 20 &5b00 80 00 00 00 00 00 00 00 00 00 00 01 01 01 01 02 &5b10 00 00 0f 2d 0f 87 1c 0f 00 00 0a 85 0f 87 1e a5 &5b20 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 &5b30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5b50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5b60 88 88 88 88 88 88 ee 00 ee aa 88 cc 88 88 ee 00 &5b70 aa aa aa aa aa aa 44 00 ee aa 88 cc 88 88 ee 00 &5b80 88 88 88 88 88 88 ee 00 00 00 00 00 00 00 00 00 &5b90 00 22 22 00 22 22 00 00 ee aa aa aa aa aa ee 00 &5ba0 ee aa aa aa aa aa ee 00 37 77 66 54 30 70 61 53 &5bb0 bf 33 b3 a3 83 0f 9f bf 8b 8f 0e 0c 2a cc ab cd &5bc0 3f 1f 07 47 67 77 77 7f 57 88 54 18 1c 0f 9f 57 &5bd0 ce ee 66 a2 c0 e0 68 ac 50 50 10 10 30 70 00 00 &5be0 f0 50 10 b0 b0 10 00 00 40 40 00 00 80 c0 00 00 &5bf0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5c10 00 00 00 00 00 00 00 00 11 11 11 00 00 33 00 00 &5c20 11 11 11 aa aa 11 00 00 00 00 00 00 00 88 00 00 &5c30 00 00 00 00 00 00 00 00 e0 60 60 e0 20 00 00 00 &5c40 00 00 00 00 00 00 00 00 03 03 12 05 16 25 07 25 &5c50 14 25 1e 2d 1a 2d 05 83 5a a5 07 25 49 29 1a 29 &5c60 08 08 08 04 04 0c 0c 84 00 00 00 00 00 00 00 00 &5c70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5c80 00 00 00 00 00 00 00 00 00 00 00 00 00 11 22 44 &5c90 00 00 00 44 aa 11 22 55 00 00 00 00 00 00 00 00 &5ca0 0e 0a 08 08 08 08 0e 00 04 0a 0a 0e 0a 0a 0a 00 &5cb0 0e 0a 0a 0e 0c 0a 0a 00 0e 0a 0a 0e 0c 0a 0a 00 &5cc0 0b 0a 0a 0b 0a 0a 0b 00 0b 0a 02 02 02 02 0b 00 &5cd0 00 08 08 08 08 08 00 00 00 02 02 00 02 02 00 00 &5ce0 0e 0a 0a 0a 0a 0a 0e 00 37 77 66 54 30 70 61 53 &5cf0 bf 33 b3 a3 83 0f 9f bf 8b 8f 0e 0c 2a cc ab cd &5d00 7f 3f 1f 07 47 67 77 77 9b 44 98 54 18 0d 1f 17 &5d10 ce ee 66 a2 c0 e0 68 ac 00 00 00 00 00 00 00 00 &5d20 e0 a0 80 e0 20 20 e0 00 00 00 00 00 00 00 00 00 &5d30 0e 0a 02 06 02 02 0e 00 02 02 04 04 04 08 08 00 &5d40 0e 0a 0a 0e 02 0a 0e 00 0e 0a 0a 0e 02 0a 0e 00 &5d50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &5d60 ee aa aa aa aa aa ee 00 00 00 00 00 00 00 00 00 &5d70 00 00 00 00 00 00 00 00 e0 a0 a0 a0 a0 a0 e0 00 &5d80 00 00 00 00 01 01 01 00 1a 2c 4a 0d 5a 2d 0f 00 &5d90 0a a5 1a 2d 16 a1 0f 00 0f a5 1e 85 1a 87 0f 00 &5da0 4a 24 0a a4 49 87 0f 00 00 00 00 00 00 00 00 00 &5db0 0e 0a 0a 0a 0a 0a 0e 00 0e 0a 0a 0a 0a 0a 0e 00 &5dc0 0e 0a 0a 0a 0a 0a 0e 00 22 55 00 55 22 15 00 00 &5dd0 88 11 22 46 88 20 00 04 08 00 40 00 08 00 40 00 &5de0 0e 0a 0a 0e 0c 0a 0a 00 0e 0a 08 0c 08 08 0e 00 &5df0 0e 0a 0a 0a 0a 0c 02 00 0a 0a 0a 0a 0a 0a 0e 00 &5e00 0b 0a 0a 0b 0b 0a 0a 00 0b 0a 0a 0b 02 0a 0b 00 &5e10 0b 0a 02 02 02 02 0b 00 00 0a 0a 08 0a 0a 00 00 &5e20 0e 0a 0a 0a 0a 0a 0e 00 37 77 66 54 30 70 61 53 &5e30 bf 33 b3 a3 83 0f 9f bf 8b 8f 0e 0c 2a cc aa cc ; bathing_monster_screen &5e40 a9 d8 LDA #&d8 &5e42 85 48 STA &48 ; sprite_address_low &5e44 a9 5e LDA #&5e ; &5ed8 = bathing_monster_sprite &5e46 85 49 STA &49 ; sprite_address_high &5e48 a9 98 LDA #&98 &5e4a 85 40 STA &40 ; screen_address_low &5e4c a5 0b LDA &0b ; buffer_start_address_high &5e4e 18 CLC &5e4f 69 06 ADC #&06 ; + &0698 &5e51 85 41 STA &41 ; screen_address_high &5e53 a2 09 LDX #&09 ; plot_bathing_monster_group_loop &5e55 a0 00 LDY #&00 ; plot_bathing_monster_byte_loop &5e57 b1 48 LDA (&48),Y ; sprite_address &5e59 91 40 STA (&40),Y ; screen_address &5e5b c8 INY &5e5c c0 88 CPY #&88 &5e5e d0 f7 BNE &5e57 ; plot_bathing_monster_byte_loop &5e60 a5 48 LDA &48 ; sprite_address_low &5e62 69 87 ADC #&87 &5e64 85 48 STA &48 ; sprite_address_low &5e66 90 03 BCC &5e6b ; skip_page &5e68 e6 49 INC &49 ; sprite_address_high ; skip_page &5e6a 18 CLC &5e6b a5 40 LDA &40 ; screen_address_low &5e6d 69 40 ADC #&40 &5e6f 85 40 STA &40 ; screen_address_low &5e71 a5 41 LDA &41 ; screen_address_high &5e73 69 01 ADC #&01 &5e75 85 41 STA &41 ; screen_address_high &5e77 ca DEX &5e78 d0 db BNE &5e55 ; plot_bathing_monster_group_loop &5e7a a5 43 LDA &43 ; frame &5e7c 29 03 AND #&03 &5e7e d0 07 BNE &5e87 ; skip_animation # Animate bathing monster every four frames &5e80 a2 58 LDX #&58 ; bathing_monster_animation_section_2 &5e82 a9 6a LDA #&6a ; bathing_monster_animation_data_end - bathing_monster_animation_section_2 &5e84 20 9b 5e JSR &5e9b ; animate_bathing_monster ; skip_animation &5e87 20 c4 5e JSR &5ec4 ; wait_a_while_for_space_or_enter # Leaves with carry set if SPACE or ENTER pressed &5e8a b0 0e BCS &5e9a ; leave &5e8c a2 00 LDX #&00 ; bathing_monster_animation_section_1 - bathing_monster_animation_data &5e8e a9 58 LDA #&58 ; bathing_monster_animation_section_2 - bathing_monster_animation_section_1 &5e90 20 9b 5e JSR &5e9b ; animate_bathing_monster &5e93 e6 43 INC &43 ; frame &5e95 20 c4 5e JSR &5ec4 ; wait_a_while_for_space_or_enter # Leaves with carry set if SPACE or ENTER pressed &5e98 90 a6 BCC &5e40 ; bathing_monster_screen ; leave &5e9a 60 RTS ; animate_bathing_monster &5e9b 85 44 STA &44 ; total_size ; animate_bathing_monster_section_loop &5e9d bd a0 63 LDA &63a0,X ; bathing_monster_animation_data # First two bytes are screen address &5ea0 85 40 STA &40 ; screen_address_low &5ea2 e8 INX &5ea3 bd a0 63 LDA &63a0,X ; bathing_monster_animation_data &5ea6 18 CLC &5ea7 65 0b ADC &0b ; buffer_start_address_high &5ea9 85 41 STA &41 ; screen_address_high &5eab e8 INX &5eac bd a0 63 LDA &63a0,X ; bathing_monster_animation_data # Third byte is size of animated section in bytes &5eaf 85 42 STA &42 ; section_size &5eb1 a0 00 LDY #&00 &5eb3 e8 INX ; animate_bathing_monster_byte_loop &5eb4 bd a0 63 LDA &63a0,X ; bathing_monster_animation_data # Remaining bytes are sprite data &5eb7 e8 INX &5eb8 91 40 STA (&40),Y ; screen_address &5eba c8 INY &5ebb c4 42 CPY &42 ; section_size &5ebd d0 f5 BNE &5eb4 ; animate_bathing_monster_byte_loop &5ebf e4 44 CPX &44 ; total_size &5ec1 d0 da BNE &5e9d ; animate_bathing_monster_section_loop &5ec3 60 RTS ; wait_a_while_for_space_or_enter &5ec4 a0 72 LDY #&72 ; wait_a_while_for_space_or_enter_loop &5ec6 a5 ec LDA &ec ; os_most_recently_pressed_key &5ec8 c9 e2 CMP #&e2 ; SPACE &5eca f0 0b BEQ &5ed7 ; leave &5ecc c9 c9 CMP #&c9 ; ENTER &5ece f0 07 BEQ &5ed7 ; leave &5ed0 ca DEX &5ed1 d0 f3 BNE &5ec6 ; wait_a_while_for_space_or_enter_loop &5ed3 88 DEY &5ed4 d0 f0 BNE &5ec6 ; wait_a_while_for_space_or_enter_loop &5ed6 18 CLC # Leave with carry clear if SPACE or ENTER not pressed ; leave &5ed7 60 RTS ; bathing_monster_sprite &5ed8 00 00 00 33 22 22 22 22 00 00 00 ff 00 00 00 00 &5ee8 00 00 00 ff 66 00 00 00 00 00 00 ff ee 00 00 00 &5ef8 00 00 00 ff 11 11 00 00 00 00 00 ff dd 77 77 33 &5f08 00 00 00 ff cc 44 00 00 00 00 00 ff cc 66 88 00 &5f18 00 00 00 ff 00 11 00 00 00 00 00 ff ff 77 66 00 &5f28 00 00 00 ff ff cc 03 03 00 00 00 ff cc 00 0a 0c &5f38 00 00 00 ff 00 00 03 03 00 00 00 ff 00 00 0a 0c &5f48 00 00 00 ff 00 00 03 03 00 00 00 ff 55 22 0a 0c &5f58 00 00 00 cc 44 cc cc 44 22 22 22 22 22 22 22 22 &5f68 00 00 00 22 00 aa 00 88 00 00 00 00 44 88 55 88 &5f78 44 00 55 00 00 00 44 aa 00 00 00 00 00 22 44 00 &5f88 00 22 00 00 00 88 11 22 00 88 00 88 00 00 55 22 &5f98 00 00 00 00 00 77 77 22 44 aa 44 00 00 44 77 cc &5fa8 00 00 00 00 00 22 88 ee 03 03 03 03 03 88 47 03 &5fb8 0a 0c 01 0b 0b 0f 0f 0f 03 03 0f 0f 0e 0c 0f 0f &5fc8 0a 0c 0f 0f 0f 01 0b 0b 03 03 0f 0f 0f 0f 0f 0f &5fd8 0a 0c 09 0f 0f 08 0d 0d 44 44 4c 4c 4c 44 4c 4c &5fe8 33 22 22 22 33 33 33 33 00 aa 44 88 99 66 55 aa &5ff8 55 aa 00 22 88 cc ff 00 44 22 44 00 44 22 44 aa &6008 00 b8 71 70 70 f0 a0 f5 00 80 d9 e4 e0 e0 60 f0 &6018 44 00 55 aa 55 22 44 00 00 22 00 aa 55 aa 44 aa &6028 44 22 11 88 00 88 55 22 33 88 55 aa 00 00 55 aa &6038 03 8b 55 00 55 88 55 aa 0f 0c 01 02 45 8b 47 03 &6048 0f 00 05 0a 05 0f 0b 0b 0f 00 05 0a 05 0b 0b 0a &6058 0f 00 05 0a 05 0d 05 02 0f 00 05 0a 05 0e 0e 0f &6068 4c 44 44 4c 44 4c 44 44 33 22 33 33 22 22 22 22 &6078 98 20 50 30 30 3e de 3f 00 83 77 87 f3 c3 c0 e0 &6088 00 1c dc 1c a8 38 30 30 b9 b9 c8 a0 f0 00 f0 00 &6098 70 70 d8 60 90 70 f0 30 11 a2 80 83 b3 83 d1 c1 &60a8 55 00 50 50 90 f0 f0 70 55 22 19 8c 5d 8c 4c 15 &60b8 77 aa 55 aa 77 aa dd 66 ff ee 77 aa 55 aa 55 aa &60c8 47 8b 47 88 46 8a 46 8a 0b 0b 0b 00 0f 0f 0f 0f &60d8 0e 0c 0c 08 08 20 30 31 02 01 01 00 00 20 c0 e4 &60e8 0f 07 07 0b 0b 05 05 05 4c 4c 4c 4c 4c 4c 4c 4c &60f8 22 22 33 33 22 33 32 22 67 06 00 ff 00 f1 11 ec &6108 e0 70 70 20 98 30 30 74 00 b0 70 f0 f0 f0 f0 f0 &6118 f0 f0 f0 f0 f0 f0 f0 f0 c0 f0 f0 f0 f0 f0 f0 f0 &6128 c0 40 b0 f0 f0 f0 f0 f0 60 e0 c0 d1 91 b3 44 20 &6138 11 ff ff ff 10 64 73 00 dd ff ff ff 50 50 b1 b0 &6148 ff ff ff ff 11 b9 51 f2 cf 8b cf cc 47 03 cb 03 &6158 0f 0f 0d 0d 0d 0b 0b 0b 20 30 11 10 30 30 70 50 &6168 a0 e0 64 c0 c0 e0 f0 f0 05 05 05 05 05 05 04 05 &6178 4c 4c 4c 4c 4c 4c 44 4c 33 22 22 32 33 32 22 22 &6188 dc 40 64 80 cc 00 54 90 74 74 f4 fc f8 f8 f0 30 &6198 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 b0 b0 f0 f0 f0 f0 &61a8 f0 f0 f0 f0 f0 f0 f0 e0 f0 f0 f0 f0 f0 f0 30 d0 &61b8 40 30 20 90 80 b3 80 80 ee b8 00 c0 88 88 ee 20 &61c8 91 f7 10 80 73 10 20 40 b2 cc ba 00 c8 20 00 66 &61d8 43 03 83 03 80 03 03 03 0f 0f 0f 0f 03 0b 0b 0b &61e8 d0 90 0f 0f 00 00 0f 0f d0 d0 0f 0f 00 00 0d 0d &61f8 05 05 0d 0f 01 01 0f 0f 4c 4c 4c 4c 4c 4c 4c 4c &6208 33 22 33 22 32 22 22 22 cc 11 99 d5 11 55 55 91 &6218 d0 e0 e0 e0 e0 e0 e0 e0 f0 f0 f0 f0 f0 f0 f0 f0 &6228 f0 f0 f0 f0 f0 f0 f0 f0 e0 d1 d1 d1 d1 d1 d1 d1 &6238 c0 e0 e0 e0 e0 e0 e0 e0 80 80 80 00 10 00 00 00 &6248 20 d0 00 00 11 00 00 00 00 00 33 00 cc c4 77 00 &6258 00 00 88 cc 00 20 ff 00 03 03 83 00 00 20 10 00 &6268 0b 0f 0f 03 00 00 10 33 0f 0f 0f 0e 00 00 10 fb &6278 02 0e 0e 01 00 00 10 80 0f 0f 0f 0f 00 00 32 00 &6288 4c 4c 4c 4c 44 44 44 44 22 22 33 33 33 33 33 32 &6298 10 32 b2 32 32 32 30 98 d0 d0 d0 d1 d0 c0 c0 80 &62a8 f0 f0 f0 f8 f6 f1 30 00 f0 f0 f0 f0 f0 fe f0 00 &62b8 d1 d1 e0 e0 e0 e0 80 00 e8 e8 f8 f8 f8 f8 f8 e0 &62c8 40 00 00 22 22 22 22 44 ee a2 00 98 c8 88 88 88 &62d8 00 80 10 00 00 00 40 00 40 10 40 66 77 dd 00 20 &62e8 00 00 00 00 10 bb ee 00 64 00 00 40 80 cc b1 00 &62f8 90 80 00 40 00 11 99 11 00 00 90 00 20 00 00 c4 &6308 00 c0 ff 31 10 20 00 a8 c4 44 44 44 44 c4 44 44 &6318 22 32 32 22 33 00 00 00 88 c4 77 00 ff 00 00 00 &6328 11 51 00 00 ff 00 00 00 00 88 ff 00 ff 00 00 00 &6338 00 00 ff 00 ff 00 00 00 00 ee 88 88 ff 00 00 00 &6348 00 00 ff 20 ff 00 00 00 55 dd ff cc ff 00 00 00 &6358 a0 00 10 10 ff 00 00 00 00 10 ee 88 ff 00 00 00 &6368 00 00 00 00 ff 00 00 00 20 00 77 10 ff 00 00 00 &6378 00 10 00 00 ff 00 00 00 00 40 00 00 ff 00 00 00 &6388 f9 33 00 40 ff 00 00 00 b9 00 20 00 ff 00 00 00 &6398 44 cc 44 44 cc 00 00 00 ; bathing_monster_animation_data ; bathing_monster_animation_section_1 &63a0 27 09 01 ; &01 byte at + &0927 &63a3 bb &63a4 5c 0a 03 ; &03 bytes at + &0a5c &63a7 33 33 33 &63aa 60 0a 10 ; &10 bytes at + &0a60 &63ad 44 aa 44 89 9b ab 13 bb a0 a0 90 f0 f0 e1 e0 68 &63bd 91 0a 07 ; &07 bytes at + &0a91 &63c0 aa 00 1e ee 3c fc 3c &63c7 99 0a 07 ; &07 bytes at + &0a99 &63ca 00 a0 40 a1 d3 a7 82 &63d1 a3 0a 04 ; &04 bytes at + &0aa3 &63d4 22 33 2a 55 &63d8 98 0b 01 ; &01 byte at + &0b98 &63db 33 &63dc a0 0b 03 ; &03 bytes at + &0ba0 &63df 01 cc ff &63e2 a8 0b 04 ; &04 bytes at + &0ba8 &63e5 70 30 30 a8 &63e9 d0 0b 06 ; &06 bytes at + &0bd0 &63ec 70 f0 f0 e0 d1 91 &63f2 d8 0b 03 ; &03 bytes at + &0bd8 &63f5 80 33 77 ; bathing_monster_animation_section_2 &63f8 00 0c 05 ; &05 bytes at + &0c00 &63fb a0 b0 d1 50 70 &6400 06 0c 02 ; &02 bytes at + &0c06 &6403 30 10 &6405 40 0d 02 ; &02 bytes at + &0d40 &6408 10 10 ; bathing_monster_animation_data_end ; unused &640a 00 00 00 00 00 00 ; event_handler &6410 a5 1e LDA &1e ; tune_volume &6412 c5 1f CMP &1f ; previous_tune_volume &6414 f0 14 BEQ &642a ; skip_envelope &6416 85 1f STA &1f ; previous_tune_volume &6418 0a ASL A &6419 0a ASL A &641a 0a ASL A &641b 8d b2 64 STA &64b2 ; tune_envelope + 12 (ALA, attack amplitude target) &641e 8d b3 64 STA &64b3 ; tune_envelope + 13 (ALD, decay amplitude target) &6421 a2 a6 LDX #&a6 &6423 a0 64 LDY #&64 ; &64a6 = tune_envelope &6425 a9 08 LDA #&08 ; Define a sound envelope (ENVELOPE) &6427 20 f1 ff JSR &fff1 ; OSWORD ; skip_envelope &642a ce 7a 66 DEC &667a ; tune_cooldown &642d 10 53 BPL &6482 ; leave &642f a9 02 LDA #&02 &6431 8d 7a 66 STA &667a ; tune_cooldown &6434 ce 78 66 DEC &6678 ; tune_melody_cooldown &6437 10 16 BPL &644f ; skip_melody &6439 ae 76 66 LDX &6676 ; tune_melody_position &643c ee 76 66 INC &6676 ; tune_melody_position &643f bd ce 65 LDA &65ce,X ; tune_note_lengths &6442 29 0f AND #&0f # Low nibble of byte is length of melody note &6444 8d 78 66 STA &6678; tune_melody_cooldown &6447 bd b4 64 LDA &64b4,X ; tune_melody_notes &644a a2 02 LDX #&02 # Use channel 2 for melody &644c 20 83 64 JSR &6483 ; play_note ; skip_melody &644f ce 79 66 DEC &6679 ; tune_bass_cooldown &6452 10 18 BPL &646c ; skip_bass &6454 ae 77 66 LDX &6677 ; tune_bass_position &6457 ee 77 66 INC &6677 ; tune_bass_position &645a bd ce 65 LDA &65ce,X ; tune_note_lengths &645d 4a LSR A # High nibble of byte is length of bass note &645e 4a LSR A &645f 4a LSR A &6460 4a LSR A &6461 8d 79 66 STA &6679 ; tune_bass_cooldown &6464 bd 5c 65 LDA &655c,X ; tune_base_notes &6467 a2 03 LDX #&03 # Use channel 3 for bass &6469 20 83 64 JSR &6483 ; play_note ; skip_bass &646c ad 76 66 LDA &6676 ; tune_melody_position &646f c9 a8 CMP #&a8 # Is this the end of the melody &6471 d0 0f BNE &6482 ; leave &6473 ad 77 66 LDA &6677 ; tune_bass_position &6476 c9 72 CMP #&72 # and the bass? &6478 d0 08 BNE &6482 ; leave &647a a9 00 LDA #&00 # If so, start tune again &647c 8d 76 66 STA &6676 ; tune_melody_position &647f 8d 77 66 STA &6677 ; tune_bass_position ; leave &6482 60 RTS ; play_note # Called with X = channel, A = pitch / 2 &6483 a0 00 LDY #&00 &6485 0a ASL A &6486 90 01 BCC &6489 ; skip_amplitude_change # If top bit of pitch is set, &6488 c8 INY # increase amplitude during sustain phase ; skip_amplitude_change &6489 8d a2 64 STA &64a2 ; tune_envelope + 12 (ALA, attack amplitude target) &648c 8c a0 64 STY &64a0 ; tune_envelope + 10 (AS, sustain amplitude change) &648f 8a TXA &6490 09 10 ORA #&10 &6492 8d 9e 64 STA &649e ; tune_sound # Set channel &6495 a2 9e LDX #&9e &6497 a0 64 LDY #&64 ; &649e = tune_sound &6499 a9 07 LDA #&07 ; Generate a sound (SOUND) &649b 4c f1 ff JMP &fff1 ; OSWORD ; tune_sound ; chan vol pitch dur &649e 00 00 00 00 00 00 01 00 ; tune_envelope &64a6 01 01 00 00 00 00 00 00 7e ff ff ff 7f 7f ; tune_melody_notes &64b4 b0 ac aa ac b2 7f b6 b2 b0 b2 ba 7f bc ba b8 ba &64c4 c8 c4 c2 c4 c8 c4 c2 c4 ca c4 ca c0 c4 c8 c4 c0 &64d4 c4 c0 c4 c8 c4 c0 c4 c0 c4 c8 c4 c0 be ba b0 ac &64e4 aa ac b2 7f b6 b2 b0 b2 ba 7f bc ba b8 ba c8 c4 &64f4 c2 c4 c8 c4 c2 c4 ca c4 ca c0 c4 c8 c4 c0 c4 c0 &6504 c4 c8 c4 c0 c4 c0 c4 c8 c4 c0 be ba ba bc c0 c0 &6514 c4 c0 bc ba b6 ba bc c0 c0 c4 c0 bc ba b6 b2 b6 &6524 ba ba bc ba b6 b2 b0 b2 b6 ba ba bc ba b6 b2 b0 &6534 b0 ac aa ac b2 7f b6 b2 b0 b2 ba 7f bc ba b8 ba &6544 c8 c4 c2 c4 c8 c4 c2 c4 ca c4 c8 ca c8 c4 c2 c4 &6554 ba bc b6 b2 b0 ac b0 ac ; tune_base_notes &655c 7f 94 9a 9a 9a 94 9a 9a 9a 94 9a 9a 9a 94 9a 9a &656c 9a 8a 98 98 98 8a 98 98 98 8a 98 80 98 8a 7f 94 &657c 9a 9a 9a 94 9a 9a 9a 94 9a 9a 9a 94 9a 9a 9a 8a &658c 98 98 98 8a 98 98 98 8a 98 80 98 8a 7f 82 9a 8a &659c a2 90 7f 82 9a 8a a2 90 7f 82 94 82 9a 8a 7f 82 &65ac 94 82 9a 8a 7f 94 9a 9a 9a 94 9a 9a 9a 94 9a 9a &65bc 9a 8c 94 94 94 8a 94 86 8c 82 8a 86 8c 8a 8a 8a &65cc 8a 94 ; tune_note_lengths &65ce 71 31 31 31 33 33 31 31 31 31 33 33 31 31 31 31 &65de 31 31 31 31 31 31 31 31 37 33 31 30 30 73 73 33 &65ee 31 30 30 33 33 33 31 30 30 33 33 33 33 37 31 31 &65fe 31 31 33 33 31 31 31 31 33 33 31 71 71 31 31 31 &660e 31 71 71 31 31 31 37 73 71 30 30 33 33 73 71 30 &661e 30 33 33 73 71 30 30 33 33 33 33 37 33 33 33 33 &662e 31 31 31 31 37 33 33 33 33 31 31 31 31 37 33 33 &663e 33 73 f1 f1 f1 f1 f7 f3 f3 f3 f3 f1 f1 f1 f1 f7 &664e f1 f1 f1 f1 f3 f3 f1 f1 f1 f1 f3 f3 f1 f1 f1 f1 &665e f1 f1 f1 f1 f1 f1 f1 f1 f7 f3 f3 f3 f3 f3 f3 f3 &666e f3 f3 f3 f7 f5 f0 f0 f7 ; tune_melody_position &6676 00 ; tune_bass_position &6677 00 ; tune_melody_cooldown &6678 00 ; tune_bass_cooldown &6679 00 ; tune_cooldown &667a 00 ; unused &667b 00 ; clear_screen &667c 86 2c STX &2c ; background_style &667e a0 08 LDY #&08 &6680 84 28 STY &28 ; screen_address_low &6682 a5 0b LDA &0b ; buffer_start_address_high &6684 85 29 STA &29 ; screen_address_high &6686 a9 14 LDA #&14 &6688 85 2b STA &2b ; groups_to_clear ; clear_screen_group_loop &668a a9 02 LDA #&02 &668c 85 2a STA &2a ; bytes_to_clear_high &668e a9 20 LDA #&20 &6690 85 2d STA &2d ; bytes_to_clear_low ; clear_screen_byte_loop &6692 98 TYA &6693 29 07 AND #&07 &6695 05 2c ORA &2c ; background_style &6697 aa TAX &6698 bd a0 08 LDA &08a0,X ; backgrounds &669b 91 28 STA (&28),Y ; screen_address &669d c8 INY &669e d0 02 BNE &66a2 ; skip_page &66a0 e6 29 INC &29 ; screen_address_high ; skip_page &66a2 c6 2d DEC &2d ; bytes_to_clear_low &66a4 d0 ec BNE &6692 ; clear_screen_byte_loop &66a6 c6 2a DEC &2a ; bytes_to_clear_high &66a8 d0 e8 BNE &6692 ; clear_screen_byte_loop &66aa 18 CLC &66ab a5 28 LDA &28 ; screen_address_low &66ad 69 20 ADC #&20 &66af 85 28 STA &28 ; screen_address_low &66b1 90 02 BCC &66b5 ; skip_group_page &66b3 e6 29 INC &29 ; screen_address_high ; skip_group_page &66b5 c6 2b DEC &2b ; groups_to_clear &66b7 d0 d1 BNE &668a ; clear_screen_group_loop &66b9 60 RTS ; fade_buffer &66ba 85 2c STA &2c ; fade_offset &66bc a0 00 LDY #&00 &66be 84 28 STY &28 ; source_address_low &66c0 84 2a STY &2a ; target_address_low ; fade_buffer_outer_loop &66c2 a5 0b LDA &0b ; buffer_start_address_high &66c4 85 29 STA &29 ; source_address_high &66c6 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &66c9 85 2b STA &2b ; target_address_high ; fade_buffer_inner_loop &66cb b1 28 LDA (&28),Y ; source_address &66cd 91 2a STA (&2a),Y ; target_address &66cf e6 29 INC &29 ; source_address_high &66d1 30 04 BMI &66d7 ; reached_end_of_buffer &66d3 e6 2b INC &2b ; target_address_high &66d5 10 f4 BPL &66cb ; fade_buffer_inner_loop ; reached_end_of_buffer &66d7 98 TYA &66d8 a2 00 LDX #&00 &66da a0 04 LDY #&04 ; delay_loop &66dc e8 INX &66dd d0 fd BNE &66dc ; delay_loop &66df 88 DEY &66e0 d0 fa BNE &66dc ; delay_loop &66e2 18 CLC &66e3 65 2c ADC &2c ; fade_offset &66e5 a8 TAY &66e6 d0 da BNE &66c2 ; fade_buffer_outer_loop &66e8 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &66eb 85 0b STA &0b ; buffer_start_address_high ; display_buffer &66ed a9 13 LDA #&13 ; Wait for vertical retrace &66ef 20 f4 ff JSR &fff4 ; OSBYTE &66f2 a5 0b LDA &0b ; buffer_start_address_high # Display other buffer &66f4 4a LSR A &66f5 4a LSR A &66f6 4a LSR A &66f7 a2 0c LDX #&0c # R12: Displayed screen start address register (high) &66f9 8e 00 fe STX &fe00 ; video register number &66fc 8d 01 fe STA &fe01 ; video register value &66ff 60 RTS # &6700 - &673f is moved to &0060 - &003f at &6966 ; zero_page_data ; spider_first_direction_table &0060 00 ; if spider moving right &0061 02 ; if spider moving left &0062 03 ; if spider moving up # 01 : if spider moving down # Last byte shared with clockwise_offsets ; clockwise_offsets &0063 01 ; 0: &29 - &28 (one tile up) &0064 2a ; 1: &29 + 1 (one tile right) &0065 51 ; 2: &29 + &28 (one tile down) &0066 28 ; 3: &29 - 1 (one tile left) &0067 01 ; 4: &29 - &28 (one tile up) &0068 2a ; 5: &29 + 1 (one tile right) &0069 51 ; 6: &29 + &28 (one tile down) ; direction_table &006a 02 ; DIRECTION_UP &006b 00 ; DIRECTION_RIGHT &006c 03 ; DIRECTION_DOWN &006d 01 ; DIRECTION_LEFT &006e 02 ; DIRECTION_UP &006f 00 ; DIRECTION_RIGHT &0070 03 ; DIRECTION_DOWN ; fozzy_first_direction_table &0071 06 ; if Fozzy moving right &0072 04 ; if Fozzy moving left &0073 05 ; if Fozzy moving up &0074 03 ; if Fozzy moving down ; glook_movement_table &0075 00 ; r+0: DIRECTION_RIGHT (for +3) # When the aroma direction is right: &0076 02 ; r+1: DIRECTION_UP (for +4) &0077 03 ; r+2: DIRECTION_DOWN (for +5) &0078 2a ; r+3: &29 + 1 (one tile right) # Glook moves right if up tile empty &0079 02 ; r+4: &29 - &28 + 1 (one tile up, one tile right) &007a 01 ; r+5: &29 - &28 (one tile up) # Glook moves up if right and up-right tiles empty &007b 52 ; r+6: &29 + &28 + 1 (one tile down, one tile right) &007c 51 ; r+7: &29 + &28 (one tile down) # Glook moves down if right and down-right tiles empty ; &007d 01 ; l+0: DIRECTION_LEFT (for +3) # When the aroma direction is left: &007e 02 ; l+1: DIRECTION_UP (for +4) &007f 03 ; l+2: DIRECTION_DOWN (for +5) &0080 28 ; l+3: &29 - 1 (one tile left) # Glook moves left if up tile empty &0081 00 ; l+4: &29 - &28 - 1 (one tile up, one tile left) &0082 01 ; l+5: &29 - &28 (one tile up) # Glook moves up if left and up-left tiles empty &0083 50 ; l+6: &29 + &28 - 1 (one tile down, one tile left) &0084 51 ; l+7: &29 + &28 (one tile down) # Glook moves down if left and down-left tiles empty ; &0085 02 ; u+0: DIRECTION_UP (for +3) # When the aroma direction is up: &0086 01 ; u+1: DIRECTION_LEFT (for +4) &0087 00 ; u+2: DIRECTION_RIGHT (for +5) &0088 01 ; u+3: &29 - &28 (one tile up) # Glook moves up if up tile empty &0089 00 ; u+4: &29 - &28 - 1 (one tile up, one tile left) &008a 28 ; u+5: &29 - 1 (one tile left) # Glook moves left if left and up-left tiles empty &008b 02 ; u+6: &29 - &28 + 1 (one tile up, one tile right) &008c 2a ; u+7: &29 + 1 (one tile right) # Glook moves right if right and up-right tiles empty ; &008d 03 ; d+0: DIRECTION_DOWN (for +3) # When the aroma direction is down: &008e 01 ; d+1: DIRECTION_LEFT (for +4) &008f 00 ; d+2: DIRECTION_RIGHT (for +5) &0090 51 ; d+3: &29 + &28 (one tile down) # Glook moves down if down tile empty &0091 50 ; d+4: &29 + &28 - 1 (one tile down, one tile left) &0092 28 ; d+5: &29 - 1 (one tile left) # Glook moves left if left and down-left tiles empty &0093 52 ; d+6: &29 + &28 + 1 (one tile down, one tile right) &0094 2a ; d+7: &29 + 1 (one tile right) # Glook moves right if right and down-right tiles empty ; directional_offsets &0095 28 ; &29 - 1 (one tile left) &0096 2a ; &29 + 1 (one tile right) &0097 51 ; &29 + &28 (one tile down) &0098 01 ; &29 - &28 (one tile up) ; glooks_moving_in_opposite_direction &0099 84 ; TILE_GLOOK | DIRECTION_RIGHT &009a 85 ; TILE_GLOOK | DIRECTION_LEFT &009b 86 ; TILE_GLOOK | DIRECTION_UP &009c 87 ; TILE_GLOOK | DIRECTION_DOWN ; unused &009d 00 &009e 00 &009f 00 # &6740 - &675f is moved to &0180 - &019f at &6970 ; active_volcano_sprite &0180 00 00 04 04 02 02 10 10 00 09 09 09 04 14 14 00 &0190 00 02 02 02 04 04 04 10 00 00 04 04 08 08 00 00 # &6760 - &685f is moved to &0300 - &03ff at &697a ; font_data &0300 ea aa aa e0 ; &00 "0" &0304 4c 44 44 e0 ; &01 "1" &0308 ea 2e 88 e0 ; &02 "2" &030c ea 26 22 e0 ; &03 "3" &0310 88 8a ae 20 ; &04 "4" &0314 ea 8e 22 e0 ; &05 "5" &0318 ea 8e aa e0 ; &06 "6" &031c ea 26 44 40 ; &07 "7" &0320 ea ae aa e0 ; &08 "8" &0324 ea ae 2a e0 ; &09 "9" &0328 ea ae aa a0 ; &0a "A" &032c ca ac aa c0 ; &0b "B" &0330 ea 88 88 e0 ; &0c "C" &0334 ca aa aa c0 ; &0d "D" &0338 ea 8c 88 e0 ; &0e "E" &033c ea 8c 88 80 ; &0f "F" &0340 e8 8a aa e0 ; &10 "G" &0344 aa ae aa a0 ; &11 "H" &0348 e4 44 44 e0 ; &12 "I" &034c 62 22 aa e0 ; &13 "J" &0350 aa cc aa a0 ; &14 "K" &0354 88 88 8a e0 ; &15 "L" &0358 ae ea aa a0 ; &16 "M" &035c ea aa aa a0 ; &17 "N" &0360 ea aa aa e0 ; &18 "O" &0364 ea ae 88 80 ; &19 "P" &0368 ea aa ac 20 ; &1a "Q" &036c ea ae ca a0 ; &1b "R" &0370 ea 8e 22 e0 ; &1c "S" &0374 e4 44 44 40 ; &1d "T" &0378 aa aa aa e0 ; &1e "U" &037c aa aa a4 40 ; &1f "V" &0380 aa aa ee a0 ; &20 "W" &0384 aa 44 4a a0 ; &21 "X" &0388 aa ae 2a e0 ; &22 "Y" &038c ea 24 8a e0 ; &23 "Z" &0390 00 e2 ea e0 ; &24 "a" &0394 88 ea aa e0 ; &25 "b" &0398 00 ea 88 e0 ; &26 "c" &039c 22 ea aa e0 ; &27 "d" &03a0 00 ea e8 e0 ; &28 "e" &03a4 ea 8c 88 80 ; &29 "f" &03a8 00 ea ae 2e ; &2a "g" &03ac 88 ea aa a0 ; &2b "h" &03b0 40 c4 44 e0 ; &2c "i" &03b4 20 22 22 ae ; &2d "j" &03b8 88 aa ca a0 ; &2e "k" &03bc c4 44 44 e0 ; &2f "l" &03c0 00 ae aa a0 ; &30 "m" &03c4 00 ea aa a0 ; &31 "n" &03c8 00 ea aa e0 ; &32 "o" &03cc 00 ea ae 88 ; &33 "p" &03d0 00 ea ae 22 ; &34 "q" &03d4 00 ea 88 80 ; &35 "r" &03d8 00 e8 e2 e0 ; &36 "s" &03dc 44 e4 44 60 ; &37 "t" &03e0 00 aa aa e0 ; &38 "u" &03e4 00 aa aa 40 ; &39 "v" &03e8 00 aa ae a0 ; &3a "w" &03ec 00 aa 4a a0 ; &3b "x" &03f0 00 aa ae 2e ; &3c "y" &03f4 00 e2 48 e0 ; &3d "z" &03f8 44 44 40 40 ; &3e "!" &03fc 00 00 04 40 ; &3f "." # &6860 - &68df is moved to &0880 - &08ff at &6980 ; password_key_table ; EN SP DE A B C D E F G H I J K L M # &00 = ENTER, &01 = SPACE, &02 = DELETE &0880 c9 e2 d9 c1 e4 d2 b2 a2 c3 d3 d4 a5 c5 c6 d6 e5 # &03 - &1c = A - Z ; N O P Q R S T U V W X Y Z &0890 d5 b6 b7 90 b3 d1 a3 b5 e3 a1 c2 c4 e1 00 00 00 # Last three bytes are unused ; backgrounds &08a0 00 00 00 00 00 00 00 00 ; &00 = black &08a8 55 ff f7 dd aa ff fe ee ; &08 = white pattern &08b0 08 04 02 01 01 02 04 08 ; &10 = wavy &08b8 41 00 82 00 14 00 28 00 ; &18 = diagonal dots ; envelope_1 # Bono or Fozzy dying, key, skeleton, aroma warning &08c0 03 00 00 00 00 00 00 6e fb fd fd 73 1a 00 00 00 # (overwritten by tune envelope at &6427) ; envelope_2 # Stairs &08d0 01 e2 f2 00 08 03 00 7e ff ff ff 7e 7e 00 00 00 ; envelope_3 # Aroma warning &08e0 02 38 0a 00 01 05 00 7f 00 00 81 5a 5a 00 00 00 ; envelope_4 # Cauldron &08f0 01 10 f0 00 10 10 00 7e ff ff 81 7e 7e 00 00 00 ; unused_entry_point &68e0 a9 8c LDA #&8c ; Select Tape FS &68e2 a2 0c LDX #&0c ; 1200 baud &68e4 20 f4 ff JSR &fff4 ; OSBYTE ; main_entry_point &68e7 a2 0a LDX #&0a # R10: Cursor start register &68e9 a9 20 LDA #&20 &68eb 20 9d 69 JSR &699d ; set_video_register &68ee a2 0c LDX #&0c # R12: Displayed screen start address register (high) &68f0 a9 07 LDA #&07 &68f2 20 9d 69 JSR &699d ; set_video_register &68f5 e8 INX # R13: Displayed screen start address register (low) &68f6 a9 e0 LDA #&e0 # Set screen start address to &3f00 = screen_buffer_one &68f8 20 9d 69 JSR &699d ; set_video_register &68fb a2 06 LDX #&06 # R6: Vertical displayed register &68fd a9 19 LDA #&19 &68ff 20 9d 69 JSR &699d ; set_video_register &6902 a2 07 LDX #&07 # R7: Vertical sync position &6904 a9 20 LDA #&20 &6906 20 9d 69 JSR &699d ; set_video_register &6909 a2 0f LDX #&0f ; set_palette_registers_loop &690b bd a4 69 LDA &69a4,X ; palette_register_data &690e 8d 21 fe STA &fe21 ; video ULA palette register &6911 ca DEX &6912 10 f7 BPL &690b ; set_palette_registers_loop &6914 a9 00 LDA #&00 &6916 aa TAX ; wipe_variables_loop # Wipe &0000 - &007f &6917 95 00 STA &00,X ; variables &6919 e8 INX &691a 10 fb BPL &6917 ; wipe_variables_loop &691c a8 TAY &691d a9 0a LDA #&0a &691f 85 1e STA &1e ; tune_volume &6921 ad 68 fe LDA &fe68 ; User VIA timer 2 counter LSB # Randomly seed random number generator &6924 85 22 STA &22 ; rnd_1 &6926 85 23 STA &23 ; rnd_2 &6928 a9 03 LDA #&03 # Enable ESCAPE, clear memory on BREAK &692a 8d 58 02 STA &0258 ; ESCAPE/BREAK effect &692d 8d 59 02 STA &0259 ; Econet keyboard disable &6930 a9 04 LDA #&04 ; Define action of cursor editing keys &6932 a2 01 LDX #&01 ; Cursor keys return ASCII values 135-139 &6934 86 1a STX &1a ; loaded_levelset &6936 20 f4 ff JSR &fff4 ; OSBYTE &6939 a9 2d LDA #&2d &693b 8d 02 02 STA &0202 ; brk_vector_low &693e a9 24 LDA #&24 ; &242d = title_screen &6940 8d 03 02 STA &0203 ; brk_vector_high &6943 a9 10 LDA #&10 &6945 8d 20 02 STA &0220 ; event_vector_low &6948 a9 64 LDA #&64 ; &6410 = event_handler &694a 8d 21 02 STA &0221 ; event_vector_high &694d a9 40 LDA #&40 # Give RS423 control of serial system &694f 8d 5d 02 STA &025d ; RS423/cassette selection flag &6952 a9 07 LDA #&07 ; Set RS423 receive rate &6954 a2 03 LDX #&03 ; 300 baud &6956 a0 00 LDY #&00 &6958 20 f4 ff JSR &fff4 ; OSBYTE &695b a9 9c LDA #&9c ; Read/write 6850 ACIA registers # Set receive rate to 1200 baud &695d a2 01 LDX #&01 &695f a0 fc LDY #&fc &6961 20 f4 ff JSR &fff4 ; OSBYTE &6964 a2 3f LDX #&3f ; move_6700_loop # Move &6700 - &673f to &0060 - &009f &6966 bd 00 67 LDA &6700,X ; unrelocated_zero_page_data &6969 95 60 STA &60,X ; zero_page_data &696b ca DEX &696c 10 f8 BPL &6966 ; move_6700_loop &696e a2 1f LDX #&1f ; move_6740_loop # Move &6740 - &675f to &0180 - &019f &6970 bd 40 67 LDA &6740,X ; unrelocated_active_volcano_sprite &6973 9d 80 01 STA &0180,X ; active_volcano_sprite &6976 ca DEX &6977 10 f7 BPL &6970 ; move_6740_loop &6979 e8 INX ; move_6760_and_6860_loop &697a bd 60 67 LDA &6760,X ; unrelocated_font_data # Move &6760 - &685f to &0300 - &03ff &697d 9d 00 03 STA &0300,X ; font_data &6980 bd 60 68 LDA &6860,X ; unrelocated_password_key_table # Move &6860 - &695f to &0880 - &0980 &6983 9d 80 08 STA &0880,X ; password_key_table # (only &0880 - &08ff is used) &6986 e8 INX &6987 d0 f1 BNE &697a ; move_6760_and_6860_loop ; copy_screen_buffer_loop # Would copy &3f00 - &57ff to &6700 - &7fff &6989 bd 00 3f LDA &3f00,X ; screen_buffer_one # but actually moves &3f00 - &418e to &6700 - &698e # actually LDA source_address,X # overwriting, and calling break handler to &242d &698c 9d 00 67 STA &6700,X ; screen_buffer_two # actually STA target_address,X &698f e8 INX &6990 d0 f7 BNE &6989 ; copy_screen_buffer_loop &6992 ee 8b 69 INC &698b ; source_address_high &6995 ee 8e 69 INC &698e ; target_address_high &6998 10 ef BPL &6989 ; copy_screen_buffer_loop &699a 4c 2d 24 JMP &242d ; title_screen # Start game ; set_video_register &699d 8e 00 fe STX &fe00 ; video register number &69a0 8d 01 fe STA &fe01 ; video register value &69a3 60 RTS ; palette_register_data ; K R G W &69a4 07 17 47 57 26 36 66 76 85 95 c5 d5 a0 b0 e0 f0 Differences in the disk version =============================== ; load_levelset &2e6f 20 0e 2f JSR &2f0e ; prepare_addresses_for_workspace_backup ; backup_workspace_loop # Copy &0e00 - &1dff to hidden buffer &2e72 b1 28 LDA (&28),Y ; workspace_address &2e74 91 2a STA (&2a),Y ; backup_address &2e76 c8 INY &2e77 d0 f9 BNE &2e72 ; backup_workspace_loop &2e79 20 c2 2e JSR &2ec2 ; increment_addresses_for_workspace_backup &2e7c ca DEX &2e7d d0 f3 BNE &2e72 ; backup_workspace_loop &2e7f a0 00 LDY #&00 &2e81 84 28 STY &28 ; wipe_address_low &2e83 a9 0e LDA #&0e &2e85 85 29 STA &29 ; wipe_address_high &2e87 a2 0d LDX #&0d &2e89 98 TYA ; wipe_disk_workspace_loop # Wipe &0e00 - &1aff (disk workspace) &2e8a 91 28 STA (&28),Y ; wipe_address &2e8c c8 INY &2e8d d0 fb BNE &2e8a ; wipe_disk_workspace_loop &2e8f e6 29 INC &29 ; wipe_address_high &2e91 ca DEX &2e92 d0 f6 BNE &2e8a ; wipe_disk_workspace_loop &2e94 a2 e9 LDX #&e9 &2e96 a0 2e LDY #&2e ; &2ee9 = disk_string &2e98 20 f7 ff JSR &fff7 ; OSCLI # *DISK &2e9b a5 19 LDA &19 ; levelset &2e9d 09 30 ORA #&30 ; "0" &2e9f 8d e2 2e STA &2ee2 ; load_screens_string + &10 # Poke levelset number into filename &2ea2 a2 d2 LDX #&d2 &2ea4 a0 2e LDY #&2e ; &2ed2 = load_screens_string &2ea6 20 f7 ff JSR &fff7 ; OSCLI # *LOAD :0.$.SCREEN[n] 3300 &2ea9 a5 19 LDA &19 ; levelset &2eab 85 1a STA &1a ; loaded_levelset &2ead a9 8c LDA #&8c ; Select Tape FS # *TAPE &2eaf 20 f4 ff JSR &fff4 ; OSBYTE &2eb2 20 0e 2f JSR &2f0e ; prepare_addresses_for_workspace_backup ; restore_workspace_loop # Restore &0e00 - &1dff from hidden buffer &2eb5 b1 2a LDA (&2a),Y ; backup_address &2eb7 91 28 STA (&28),Y ; workspace_address &2eb9 c8 INY &2eba d0 f9 BNE &2eb5 ; restore_workspace_loop &2ebc 20 c2 2e JSR &2ec2 ; increment_addresses_for_workspace_backup &2ebf ca DEX &2ec0 d0 f3 BNE &2eb5 ; restore_workspace_loop # Unnecessary fall through ; increment_addresses_for_workspace_backup &2ec2 e6 29 INC &29 ; workspace_address_high &2ec4 18 CLC &2ec5 a5 2a LDA &2a ; backup_address_low &2ec7 69 40 ADC #&40 # Move down a group &2ec9 85 2a STA &2a ; backup_address_low &2ecb a5 2b LDA &2b ; backup_address_high &2ecd 69 01 ADC #&01 &2ecf 85 2b STA &2b ; backup_address_high &2ed1 60 RTS ; load_screens_string &2ed2 4c 4f 41 44 22 3a 30 2e 24 2e 53 43 52 45 45 4e ; "LOAD":0.$.SCREEN1"3300" &2ee2 31 22 33 33 30 30 0d ; disk_string &2ee9 44 49 53 4b 0d ; "DISK" ; status_variables_data ; screen address variable address &2eee 98 5b ff 97 ; &5b98, colour 3, &17 ; level_number_as_bcd &2ef2 e0 5c 0f 04 ; &5ce0, colour 1, &04 ; soap_carried &2ef6 20 5d f0 0a ; &5d20, colour 2, &0a ; bono_lives &2efa 30 5d 0f 12 ; &5d30, colour 1, &12 ; fozzy_lives &2efe 40 5d 0f 88 ; &5d50, colour 1, &08 ; fozzy_energy &2f02 60 5d ff 03 ; &5d60, colour 3, &03 ; skeletons_carried &2f06 78 5d f0 02 ; &5d78, colour 2, &02 ; keys_carried &2f0a 20 5e 0f 05 ; &5e20, colour 1, &05 ; soap_required ; prepare_addresses_for_workspace_backup &2f0e a0 00 LDY #&00 &2f10 84 28 STY &28 ; workspace_address_low &2f12 a9 0e LDA #&0e ; &0e00 &2f14 85 29 STA &29 ; workspace_address_high &2f16 a9 20 LDA #&20 &2f18 85 2a STA &2a ; backup_address_low &2f1a 20 00 22 JSR &2200 ; swap_buffer_address # Returns hidden buffer address &2f1d 85 2b STA &2b ; backup_address_high &2f1f a2 10 LDX #&10 &2f21 60 RTS The code at &2f00 - &30d8 in the tape version is located at &2f22 - &30fa in the disk version. Calls to the following functions use different addresses: &2f22 increase_score &2f7f plot_two_digit_number &2f8a plot_character &2ff4 plot_text &3039 plot_status_sprite &3082 plot_status_sprite_pair_of_bytes &3079 set_colour &30bb wait_for_keypress Screen data =========== ; SCREEN2 # Second levelset ; 005000 005000 000c00 &3300 13 11 11 13 11 11 11 11 11 f3 33 11 11 11 11 11 # Level 7 (CABBAGE) &3310 11 11 11 11 23 5f a7 77 05 a7 77 7a 77 a7 77 72 # &3320 0a 00 00 00 00 a0 aa 7a 27 72 77 77 03 a0 70 77 # +-----+-----------+^+------------------+ &3330 7a 3a a7 72 3a 00 80 00 30 70 a7 7a 27 a2 07 77 # |B.G..D .G..G....G..|.G GGGG..| &3340 02 3a 11 31 7a 2a 7a 72 2a 00 00 77 27 77 77 7b # |.....+ G ...G.G+.G|.G+ X + ..GG..| &3350 27 c2 07 77 02 03 d0 20 7a 2a a7 72 2a 30 11 73 # |G. ..| G+---+G.G|G.|.G| ...|....S..| &3360 38 11 11 11 31 02 f7 00 26 30 0a 06 a2 a7 a3 27 # |M. ..| + P |G.G|.G|.G| +--+.X+-------+ &3370 a7 13 a3 26 06 c5 cc cc cc 32 11 11 31 70 07 00 # | .F K| +G K |G.G+G.|.G+-+GK|K DMMMMMMM| &3380 72 77 75 26 77 77 aa 2a 00 c3 cc cc cc 22 0c 00 # +-----+ .. |...D.K|....GGG| +MMMMMMM| &3390 00 30 11 11 13 13 03 33 31 00 aa 2a 00 33 cc cc # |M +----+-+-+ ++-+ GGG| ++MMMMMM| &33a0 cc 32 11 11 73 24 a0 7a 06 a2 0c aa 3a 11 a3 33 # +----+.C| GG.K |GM GGG+--+G++ |MMMMMM| &33b0 00 20 cc cc cc 22 7a b7 73 30 a7 0a a0 a2 77 77 # |G..S+. +.GG G|G.....DDD D + |MMM | &33c0 57 55 50 30 00 20 cc 0c 00 22 77 73 aa 00 60 aa # |..+.GG KGG.G+-+ +-+---+ +M | V | &33d0 a7 13 03 13 13 11 03 c3 00 20 00 00 6f 20 02 20 # | |S+. + .G.GG D + + .| C | &33e0 3b 07 03 70 7a aa 00 00 50 00 03 00 03 70 02 00 # + +--+D| .GG.+-----+ .| + &33f0 04 20 03 30 11 53 02 70 aa 37 11 11 31 00 00 00 # &3400 00 70 02 00 00 30 2f 0a 73 0b 2a a0 70 67 b2 3b # +...+ +D+------+GGG..|S | K | | + &3410 67 02 30 11 31 11 31 11 03 00 1f 73 77 03 53 13 # |.....|..............+--+ + + +D+ K+-+D| &3420 11 11 31 aa 7a 27 0b 02 06 02 00 00 20 00 30 72 # |GM..K|.G. ..........| G | | G| &3430 77 77 72 77 77 77 77 77 77 37 11 03 03 03 53 03 # |. ...|........ ..+.G+....| +-+ | +----+ &3440 36 31 25 a2 7c 67 72 7a 00 00 00 77 77 77 77 77 # |.....|.G. .M..|+D++...| | | |....| &3450 02 0a 02 02 00 00 2a 72 70 77 72 77 77 77 07 77 # |.X.C.|...... .S..|.S.|...+-+ +-+...X| &3460 73 3a 77 77 02 13 03 02 13 11 31 72 77 77 72 7a # |.....|......M....|SSS|....S| . ..X..| &3470 00 00 c7 77 32 35 73 77 02 02 00 02 72 77 27 72 # +-----+......S....+---+.....| ..X..X..S| &3480 78 74 72 77 77 07 b7 77 72 7b 72 77 13 03 00 13 # |SSGGG....................C.| X...X....| &3490 73 77 28 72 77 77 72 77 77 c7 77 77 b2 bb 72 77 # |SGGGG......................| .....X..| &34a0 b7 02 07 00 77 78 27 13 11 11 73 77 77 b7 77 77 # +-----------------+v+-------+----------+ &34b0 13 11 73 77 77 02 77 78 87 77 2b b2 ab aa 77 77 &34c0 77 77 77 77 77 77 77 77 74 02 78 77 78 77 27 b2 &34d0 aa aa 77 77 77 77 77 77 77 77 77 77 77 02 70 77 &34e0 77 78 27 13 11 11 11 11 11 11 11 11 f3 34 11 11 &34f0 11 31 11 11 11 11 11 03 00 00 00 00 00 00 00 05 # magenta &3500 13 11 11 13 11 11 11 11 11 f3 33 11 11 31 31 99 # Level 8 (TOLERANCE) &3510 13 11 11 11 23 06 00 20 76 aa aa 07 00 3a a0 77 # &3520 aa 27 36 11 a3 7a 00 b0 22 00 3c 20 70 77 77 77 # +-----+-----------+^+-----+-+##+-------+ &3530 77 77 77 77 aa 2b 70 7a 70 07 30 35 23 00 20 35 # |K |K.GGGG. G+ G..GG.|K+--+GG. S| &3540 00 00 78 77 7a 77 07 70 ba 24 3b 3a 11 31 20 b0 # | M+ | ...............GGS| .G. .. +D++ &3550 22 00 20 00 70 a0 77 77 77 77 07 a0 aa 27 00 07 # | |D+ X...G.... .GSC|S+G+---+ | S| &3560 00 20 20 08 32 31 35 31 77 13 11 11 11 11 31 35 # | | . G......... GGG.| . | |X | &3570 11 31 31 3a 31 20 20 00 22 77 a0 2a 00 72 76 77 # +-+D+-+..+----------+D+---+-+G+-+ | | | &3580 00 77 27 00 0a 00 20 2a 2b 20 20 40 32 31 30 31 # |.. GG| |.K... ...| G |G|S| | | C| &3590 00 a2 a7 77 70 77 26 0a 77 70 26 2a 27 20 20 00 # +-+ +-+ |G.G.. ...K|G .. .K|G|.| | | | &35a0 92 29 00 20 00 a2 a7 77 b7 b7 6f 72 c0 07 07 a2 # ##| | |G.G...S.SV|. M. . |G|.| | |X | &35b0 72 02 02 82 20 13 03 07 03 20 7a 7a 3a 11 53 13 # +-+ . + |G.G.G+--+D+--+.M. |G|.| | |S | &35c0 31 c7 07 a2 72 02 02 b2 20 a2 02 70 c7 20 7a 7a # |G| ..M |G.G.G| |... |G|.| | ++ | &35d0 2a 00 00 00 20 77 07 a2 72 02 02 33 20 a2 33 77 # |G++..+ |G.G.G| .....M|G.M |G|.| | X| | &35e0 03 20 7a 7a 2a 70 77 77 2c 7a 0c a2 72 02 02 28 # +GG|..| |G.G.G+ . . +... |G|.| | | + &35f0 20 a3 2a 77 02 20 7a 7a 3a 70 00 70 30 77 07 a2 # &3600 72 02 02 20 30 2f aa 72 20 00 a2 ab a7 05 07 5f # +.++. | +G.G.G+ . K . +----+G+.+D| | + &3610 0f 07 05 00 20 2a 27 20 08 02 1f 73 33 07 02 30 # | . | GGG...| ..... | ... + X| | &3620 7a 7a 3a 70 60 70 30 11 11 a3 73 53 02 20 30 02 # |D+. +----+---+ P | D | | &3630 00 07 02 a0 aa 77 27 70 77 77 20 00 00 77 07 00 # |.........K| C+--+D+--+ +---+.+--+X | | &3640 03 28 20 52 73 00 13 11 31 11 31 00 d0 00 20 00 # |.. ..... | +-+....G.. |GGGGGGGG+--+ | &3650 00 00 00 00 05 20 20 72 77 77 77 77 26 00 34 11 # |..M .G. C| ....+...... |GGGGGGGG|K | &3660 53 13 31 30 11 31 37 11 83 20 20 72 07 77 77 07 # |.......+--+ +-+.|..... .|GG.GGG.G| +--+ &3670 20 30 31 77 77 7a 07 20 aa aa aa aa 13 31 20 72 # |. .....| |S..|. .. |G..KG...| K| &3680 c7 00 a7 07 24 70 77 37 77 77 77 20 aa aa aa aa # |S M .G|M+--+---+ .. . +---+G+--+C+ | &3690 62 00 20 72 77 77 77 13 31 30 31 27 77 77 07 27 # |SS.....|......... . DSSSDGDKSD S| &36a0 aa a7 aa a7 02 13 31 72 70 77 77 02 00 20 7b 27 # +-------+---------+v+----+--------+----+ &36b0 07 77 00 20 7a 67 7a 77 02 00 26 b2 c0 00 a7 c2 &36c0 13 31 11 31 70 07 70 30 11 31 3a 11 43 03 20 b2 &36d0 7b 77 77 72 77 77 77 77 00 00 07 50 bb 5b 5a b6 &36e0 05 00 2b 13 11 11 11 13 11 11 11 11 f3 34 11 11 &36f0 13 11 11 11 31 11 11 03 00 00 00 00 00 00 00 01 # red &3700 13 11 11 13 13 11 31 11 11 93 13 11 11 11 11 11 # Level 9 (OVERLORD) &3710 11 11 13 31 a2 7a 00 b2 a2 07 20 00 00 1f f9 02 # &3720 77 77 77 77 77 77 77 02 20 72 74 03 b2 b3 3b 30 # +-----+-+----+----+#+---------------+--+ &3730 31 00 f3 33 70 77 77 77 77 77 77 27 00 22 00 20 # |GG. |S|G. | >#< ..............| | &3740 3b bb bb 02 a0 05 00 00 70 78 77 00 00 00 70 37 # |.C.+ |S+SS+ +-+ +^+ ..............| | &3750 03 22 30 20 bb bb bb 13 11 03 00 00 70 77 77 00 # | |S+SSSS| GD .X... ..++ | &3760 00 00 00 77 02 22 20 36 11 b3 bb 02 00 13 31 30 # | + |SSSSSS+---+ ..... ..| | &3770 11 31 77 00 b7 07 70 77 02 22 20 00 00 b2 bb 02 # | |K+--+SSS| +--+ +---+.. .S. ...| | &3780 03 72 77 50 aa 27 77 00 4b 0b 70 77 03 32 4f 03 # | | |SSS| + |... DGG.|.. SCS ...+ | &3790 03 30 11 31 20 30 11 11 73 77 72 07 70 7b 00 77 # +v+ + +---+ | +----+...|.. .S. .... | &37a0 77 20 99 02 02 00 00 00 20 50 00 00 b2 13 73 07 # ##| | | D |S+-+.. M...+G| &37b0 00 00 c0 77 37 2a 13 53 13 31 30 11 31 35 03 06 # +-+D+--+ +---+D++ K |K |.. M...|G| &37c0 62 00 72 07 00 00 c0 77 27 2a a2 aa aa 2a 20 07 # |GGGGGG| |. . .| +-+ |............|G| &37d0 70 70 02 00 13 03 72 77 77 77 77 77 27 2a a2 aa # |GGGGGG| |. . .| ... |..........+-+G| &37e0 aa 2a 20 07 70 70 02 00 77 07 72 77 77 77 77 37 # |GGGGGG+ +. . .| +--+G+-------+-++G|G| &37f0 31 2a a2 aa aa 3a 30 07 70 70 02 30 11 a3 13 11 # |GGGGGGG... .+V| ...G.+G. .>#|.K+G| &3800 11 11 13 33 2a 2a a2 aa aa aa 77 07 70 f3 26 00 # |GGGGGG+ +. . .| +-+ .....K..+#| .G| &3810 00 70 77 7a a3 07 f7 91 72 36 2a a2 aa aa 3a 30 # |GGGGGG| |. . .|C |^+---------+#| +.++ &3820 07 70 70 02 00 13 03 77 77 67 77 93 02 70 2a a2 # +D++---+-+----+-+---+ + G GG +-+ |..> &3830 aa aa 2a 20 07 70 70 42 00 f2 33 11 11 11 11 31 # |.+| P|SSSSSS| | +G+.+.. D |G.+ &3840 29 30 37 33 35 13 11 13 13 11 31 31 11 31 30 a0 # |..| |S+--+S| |S|GG.| +-+-+ +G.| &3850 00 aa 00 30 31 20 77 1f 72 23 00 2d bb bb bb 02 # |G.| |S|SSSS| +----+ |GG.| |#|S...| &3860 00 00 00 02 a3 73 73 07 05 00 a2 37 72 27 00 20 # |+ +...+S|S+--+ |GGFS| +G. +.+ |#+-+ .| &3870 3b 11 b3 02 00 00 00 b2 a2 7a 02 13 13 03 a3 27 # |. S|S|C |GGGS+ . KC| |#|^| C| &3880 a2 27 00 20 2b bb bb 02 30 11 11 03 a2 7a 02 00 # |........|S+---+ |GBG +.+---+ |#| + .| &3890 92 b2 77 27 32 30 77 37 2b 3b 11 03 20 aa 0f 2b # | M | |G . + S |#| .| &38a0 30 7a 30 37 20 39 31 70 22 07 00 00 b0 b2 42 00 # +--------+-------+--------------+#+----+ &38b0 00 a2 aa 3b 00 07 60 24 20 29 3f 02 24 72 77 77 &38c0 77 27 3b 11 31 20 fa a5 00 30 37 11 31 20 29 30 &38d0 70 22 c0 00 00 00 02 00 00 00 a2 70 30 00 b0 00 &38e0 00 20 29 00 70 32 11 11 11 11 13 11 11 11 13 11 &38f0 11 11 11 11 11 31 39 11 11 03 00 00 00 00 00 06 # cyan &3900 13 11 11 11 31 99 99 39 11 f3 33 31 31 39 11 11 # Level 10 (CRAZY CAVE) &3910 11 11 13 11 23 00 00 00 00 30 99 99 2f 00 00 00 # &3920 b5 92 02 00 00 00 30 cc 2c 02 13 13 11 03 30 99 # +--------+#####+--+^+-+-+#+--------+---+ &3930 39 00 60 00 b3 92 02 80 00 00 70 cc 2c 02 00 42 # | +####< DS|#| +MMM| &3940 00 00 00 93 29 00 00 00 b2 92 02 00 30 31 37 cc # | +-+---+ +###+ K +S|#| X .MMM| &3950 2c 02 03 13 11 13 03 92 29 00 00 40 b2 92 02 00 # | |C +##| |S|#| +-+.+MMM| &3960 20 aa 27 cc 2c 02 02 00 00 02 00 13 31 35 11 11 # | + +---+-+ |##| C|S|#| |GG.|MMM| &3970 b3 92 02 00 20 aa 27 cc 2c 02 13 11 73 f3 36 00 # | | | +--+D+----+S|#| |GG.|MMM| &3980 30 77 77 00 20 2b 29 00 00 a2 7a c2 cc 22 00 00 # | +---+.+V+ +.... |S|#| |GG.|MMM| &3990 20 2b 2b 00 70 7a 77 0c 20 3b 31 30 11 13 73 c3 # | |S|S| .G...M |S+-+ +--+-+.+MMM| &39a0 cc 32 4f 03 00 13 13 03 13 11 11 11 11 b3 02 00 # +v+ +-+-+ +---------+S| |G +KK| &39b0 a2 00 00 00 63 26 99 02 00 00 00 00 72 a7 77 77 # ##| |..G....SF|S+ +D+--------+ &39c0 fb 20 3b 00 30 35 11 11 11 11 33 3f 13 11 31 11 # +^+----+----+........S|SS |..........| &39d0 11 73 77 77 77 b7 b2 0b 00 72 77 77 77 77 27 2f # <....M +###|.. ......|G+D+-+.. M. M. M| &39e0 77 77 0c 30 99 29 77 70 77 77 27 3a 35 31 77 c0 # +.... +--+..M ..G..+-+ SS..+. .. .. | &39f0 07 7c c0 32 77 77 00 00 13 31 77 0c 77 7a 37 31 # |.B.. X ..G........|.GG+... .. .. | &3a00 b0 7b 37 07 77 70 07 22 f7 75 07 80 00 00 70 a7 # |.... +--+...... ..+G+---+..........| &3a10 77 77 77 77 72 aa 73 77 70 07 77 20 72 77 07 00 # |C... +...|.. ..+ ..|G.. P .....| &3a20 30 11 73 77 77 07 77 a3 13 11 73 77 77 77 77 27 # +------+... |.M .. M.K|.+----+.........| &3a30 42 77 07 00 73 77 72 07 77 03 77 a2 77 00 d0 00 # |......... M+----+G+--+ |+++.... ...| &3a40 00 77 77 27 13 11 11 31 77 07 72 0c 77 c0 67 72 # |.M..............|D S S| GG+G+v+ .| &3a50 13 11 31 77 77 77 77 27 72 77 77 77 77 c0 13 11 # |. . ............+------+-+.++GGG+< + &3a60 31 3a 11 03 32 33 77 77 00 00 77 27 72 7c 77 77 # |. . .. M ... ..............+GGGGG+ + +# &3a70 77 77 77 77 27 05 b0 b0 02 00 aa a3 f3 34 00 70 # |. .... ... .............+GGGGGGG+< ># &3a80 22 07 07 77 77 77 77 77 77 13 11 11 31 31 37 a3 # |............M ....M......+GGGGGGGGG+C+# &3a90 aa f3 02 00 30 72 70 70 07 0c 77 07 77 77 77 77 # |K................. ....+GGGGGGGGGGG+## &3aa0 77 77 77 a3 aa aa 03 03 93 72 00 70 77 07 77 07 # +-----------------------------------+### &3ab0 77 77 77 77 77 77 37 aa aa aa 3a 2f f0 91 72 77 &3ac0 77 77 77 77 c7 70 77 c7 77 77 77 a3 aa aa aa aa &3ad0 43 93 62 77 77 77 77 77 77 77 77 07 70 77 37 aa &3ae0 aa aa aa aa 3a 99 13 11 11 11 11 11 11 11 11 11 &3af0 11 11 11 11 11 11 11 11 93 99 00 00 00 00 00 04 # blue &3b00 13 11 11 13 13 11 11 11 11 11 11 13 11 31 11 11 # Level 11 (CROSSWORD) &3b10 11 11 11 31 02 00 00 05 f2 a2 aa 07 00 00 00 20 # &3b20 00 00 72 7a b0 50 a7 07 22 b7 13 31 30 a3 aa 07 # +-----+-+-------------+----+-----------+ &3b30 77 77 77 20 06 00 73 77 13 31 37 03 22 a7 7a 20 # | D |#|.|.....M+.+-+ |GG..| &3c00 62 00 20 aa b7 32 11 31 30 11 11 11 31 f0 91 72 # | M. | +-+.+-+..+GD.|#| +--+v+ &3c10 72 77 77 3c 37 31 00 a2 7a 27 02 c0 07 02 00 00 # | + | +-------+..S..|...+--+^+ | +### &3c20 00 00 13 73 13 73 37 5a 27 29 00 13 31 4f 23 00 # | C | | |GGGGGGGGGGGG.|G.. | >### &3c30 30 20 30 11 11 11 31 77 7b 27 77 37 11 f3 33 00 # |S | | |GGS........S.+----+------+ +--+ &3c40 02 93 99 02 04 02 02 a2 aa aa aa aa aa 7a a2 77 # |S | |M|GG.GGGGGGGGG.|GGGGGGGSSSM | &3c50 00 00 00 00 02 1f 99 29 0b 20 20 20 aa 7b 77 77 # |S | | |G............|GGG.GGG.S+......| &3c60 77 b7 37 11 11 13 11 11 31 30 11 23 0b 20 20 2c # | X | | |G..GS...GGGGG+GGG....KG|.GG...| &3c70 aa a7 aa aa aa aa 27 aa aa aa ba bb 0c 00 00 22 # | + | |G.GG.GGG..K..DGGG.GGGGG|...B..| &3c80 0b 20 20 20 7a 77 77 77 77 77 27 aa 7a aa 7a 3b # | . + |G.GG.....GGGG+G.G.GGGGG|.....C| &3c90 77 77 77 22 80 20 20 20 7a a7 7b 77 aa aa 3a aa # | . |GS...GGGGGGGG|G...GGGGG|......| &3ca0 7a 77 67 2a a7 7a 77 22 00 30 20 20 7a aa a7 aa # +---+---+-------------+---------+------+ &3cb0 77 76 57 aa 7a aa aa 2a 77 f7 75 27 02 00 07 03 &3cc0 a2 a7 7a 77 77 aa aa a3 a7 a7 aa aa 72 77 77 24 &3cd0 02 00 07 00 a2 7b 77 aa aa aa aa a2 77 a7 aa aa &3ce0 72 77 77 27 13 11 13 11 13 11 11 11 11 11 11 13 &3cf0 11 11 11 11 13 11 11 31 03 00 00 00 00 00 00 01 # red &3d00 13 11 11 31 11 11 11 11 11 13 11 11 11 11 11 11 # Level 12 (INTEREST) &3d10 11 11 11 31 72 7b 77 56 7a 00 00 7a 00 c5 00 00 # &3d20 00 00 00 00 00 a0 00 20 72 77 77 37 77 00 00 77 # +------+----------+--------------------+ &3d30 03 13 11 11 11 11 11 31 7d 70 00 20 72 77 77 27 # |.S...KDG. G. DM G | &3d40 00 40 00 77 02 00 00 00 00 c0 cc 2c 77 00 5f 00 # |......+.. ..+ +------------+P. . | &3d50 22 c7 00 77 02 30 11 03 20 00 00 00 00 00 c0 cc # |......| C ..| MMMM|.. B | &3d60 72 77 77 07 22 77 07 77 02 f0 91 f9 02 20 00 00 # |.M ..| +--+ | MMM|...... | &3d70 00 00 00 00 cc 72 77 77 07 22 77 77 77 02 30 11 # |... ..| >##< | MM|...... | &3d80 03 20 00 00 00 00 00 00 00 72 77 77 07 22 77 77 # |......| +--+ | |...... | &3d90 77 b2 00 00 00 20 00 00 00 00 00 00 00 13 11 11 # |......|S | +-----+ | &3da0 03 22 c0 00 00 b2 0b a0 7a 37 00 00 00 00 00 00 # | M |SS GG..+ . | | &3db0 00 00 00 07 02 22 77 77 77 b2 bb 70 aa 77 00 00 # |......|SSS .GG.. . | | &3dc0 00 00 00 00 00 00 00 07 02 22 77 77 77 b2 bb aa # |......|SSSGGGG.. +.....| | &3dd0 aa 77 00 00 00 00 00 00 00 73 77 77 02 22 77 77 # |......+---+--+K+--+-----------+GGG..| | &3de0 77 13 11 13 31 36 11 13 11 11 11 11 11 a3 aa 77 # |.......G..| G..KD KDGGGGG.| | &3df0 02 22 77 77 77 a7 77 02 00 7a 67 05 00 00 00 00 # |..........+---+D+-+ +------------+..| | &3e00 56 aa aa 7a 02 22 77 77 77 77 77 13 11 53 13 03 # |..........F +. GG|. | | &3e10 13 11 11 11 11 11 31 77 02 22 77 77 77 77 77 0f # |.......... +----------------+----+S | | &3e20 00 73 00 00 00 00 00 00 00 00 aa 72 20 20 72 77 # |..........G| |...... | | &3e30 77 77 77 07 13 11 11 11 11 11 11 11 31 11 11 b3 # |...........| ......V..... +......K| | &3e40 20 20 72 77 77 77 77 a7 02 00 00 00 00 00 00 00 # |... ..+.+ .............. D...G.. | | &3e50 20 77 77 77 20 20 72 77 77 77 77 77 02 70 77 77 # |......M..|.D +. .. .. .. .. +...... |M| &3e60 f7 76 77 77 00 73 77 77 67 02 22 77 07 00 70 37 # |.........+-+... .. .. .. ..S|...C...|K| &3e70 37 70 77 77 77 77 77 77 07 75 77 7a 07 02 22 77 # |..... .....|.KM .M . M. M..S+-------+-+ &3e80 77 77 7c 27 57 30 07 77 70 07 77 70 07 73 77 77 # |..... .....|...............S.. S .| &3e90 07 c2 22 77 77 77 77 37 31 77 07 77 70 07 77 70 # |... M ...|..................... ..| &3ea0 b7 72 77 74 77 62 22 77 77 07 77 77 27 67 0c c7 # +-----------+------------------------+v+ &3eb0 70 c0 07 7c b7 13 11 11 11 13 23 77 77 07 77 77 &3ec0 27 77 77 77 77 77 77 77 b7 77 00 00 0b 70 22 77 &3ed0 07 c0 00 77 27 77 77 77 77 77 77 77 77 77 77 07 &3ee0 00 77 32 11 11 11 11 11 31 11 11 11 11 11 11 11 &3ef0 11 11 11 11 11 f3 34 03 00 00 00 00 00 00 00 04 # blue ; SCREEN3 # Third levelset ; 005000 005000 000c00 &3300 13 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 # Level 13 (PEWTER) &3310 11 11 11 31 a2 aa 7a 77 77 a7 7a a7 7a 00 00 00 # &3320 00 00 00 00 00 00 00 20 a2 aa 7a aa aa a7 3a a3 # +--------------------------------------+ &3330 73 07 00 00 13 11 11 03 30 3c 3c 2c a2 aa 7a aa # |GGGG......GG..GG. | &3340 aa 77 77 77 13 31 73 73 c6 cc cc 02 00 03 03 27 # |GGGG.GGGG.GG++G+.. +-----+ +M+M+M| &3350 a2 ab 7a 7a aa a7 7a 77 77 26 0a c0 c7 cc cc 02 # |GGGG.GGGG......+--++.+.KMMMMM| + + .| &3360 00 00 07 20 a2 77 77 77 aa 37 11 11 11 31 35 31 # |GSGG.G.GG.GG.....K|G M.MMMMM| . | &3370 c3 cc cc 02 00 77 00 20 a2 a7 aa 7a aa 27 00 00 # |G......GG.+-------+D+-++MMMMM| .. | &3380 00 00 00 70 c2 cc cc 73 7a 77 7c 20 a2 a7 aa 7a # |G.GGGG.GG.| .|MMMMM+.G...M. | &3390 aa 2a 30 11 11 31 35 f0 26 cc cc 7c a7 87 07 00 # |G.GGGG.GGG| +-----+D+ V|MMMMM..G.X. | &33a0 22 7a b7 aa a7 aa 02 62 a7 07 d0 02 33 cc cc 3c # |G..SGG.GGG| |K.G. P| ++MMMMM+.G... | &33b0 a7 77 07 00 22 aa 7a aa aa aa 02 b2 b3 03 07 02 # |GGG.GGGGGG| |S+S+ . | .|MMMMM|..... | &33c0 27 cc cc 2c 77 77 07 00 22 7a 77 aa aa aa 02 b2 # |G...GGGGGG| |S| | | .|MMMMM|M.. . | &33d0 02 02 00 02 27 cc cc 2c 7c 07 00 07 22 7a aa aa # |G.GGGGGGGG| +-+ +---+ .|MMMMM| . | &33e0 aa aa 02 13 03 13 11 03 27 cc cc 2c 00 07 00 00 # |GS........| .|MMMMM+------+D+ &33f0 22 ba 77 77 77 77 02 00 00 00 00 00 27 cc cc 3c # |GGG.GGGGGG+-+ ++ +v++-----+SX | &3400 11 11 11 53 23 aa 7a aa aa aa 13 03 30 03 00 f3 # |GGGSGGGGGGGG| | >#< + XX+-+ &3410 34 13 11 11 b3 08 00 00 20 a2 aa ab aa aa aa 2a # |GG.....GG...| | +^+ S+-+ D | &3420 00 20 00 f0 91 2f 00 00 00 03 00 80 38 31 a2 7a # |GGGGGGS...G.| M| C | +---+ |G|X X+ | &3430 77 77 aa 77 27 00 20 00 30 3f 03 00 00 b0 13 03 # |GGGGGGGGG.G.| ++ | D..G| |G| . | | &3440 00 05 22 aa aa aa 7b 77 7a 02 c0 02 04 00 02 13 # |GGGGGGGGGG..| |.+.GM| +S+-+ | | &3450 11 03 a2 82 80 03 22 aa aa aa aa 7a 7a 02 30 03 # +---------+D++----+--+ |.|.G | S|#| |K| &3460 00 00 02 75 a7 02 a2 02 07 02 22 aa aa aa aa aa # |X.SSX S.G| S| |.|.. +-+S+^+ | | &3470 77 02 00 00 00 00 72 73 ca 02 b3 13 03 02 32 11 # |S X S X.G| C S | F |.|.. |G|S| | | &3480 11 11 11 31 35 13 11 31 11 03 72 72 0a 02 b0 92 # |X +-+-+G+ SM| +.|. +G+S+ + + | &3490 02 62 22 78 bb 08 7b 2a 00 00 00 2b 00 00 72 72 # |C >#| . S| |.B .K C | &34a0 07 13 b3 f3 33 20 20 b2 80 b0 80 a7 02 40 00 0b # +---+-+-------+v+-+------+---------+-+v+ &34b0 02 0f 00 72 72 07 a2 b2 02 00 02 22 08 30 31 31 &34c0 3a 00 00 b0 2c 00 00 73 72 00 a3 b3 03 03 03 22 &34d0 04 f0 91 02 70 00 00 00 b0 02 00 00 20 f7 05 70 &34e0 06 40 00 00 32 11 31 31 11 11 11 31 4f 13 13 11 &34f0 11 31 11 11 11 11 31 31 4f 03 00 00 00 00 00 06 # cyan &3500 13 11 11 11 11 11 31 11 11 11 11 11 11 11 11 31 # Level 14 (UNDERTAKE) &3510 39 11 11 31 b2 00 00 0b 00 bb 2b 00 76 37 00 03 # &3520 00 63 7a f0 91 02 00 00 22 b0 0c 0b 30 00 4b 72 # +------------+-----------------+#+-----+ &3530 33 5a 70 00 30 00 73 00 13 73 74 f3 34 02 70 77 # |S S SSS| K..+ + +KG. >#| | &3540 07 f2 34 31 b3 bb 03 03 03 00 03 30 03 00 77 77 # | SM S + SC|.++GD . + +. +-+.C.+v+ &3550 92 29 00 ab 07 20 29 20 b0 53 02 30 31 03 33 00 # | .... |v+-++SSS+ + + + ++ ....|## &3560 30 31 77 77 13 33 11 31 35 31 31 20 30 00 72 00 # | SG. |#| | S+D| +-++ ++ +-+....+-+ &3570 2d 00 00 30 20 20 77 77 b7 22 70 77 00 20 26 20 # +---+D+-+-+ | + |. P| + | |.....S| &3580 2c 30 11 11 31 37 30 31 30 20 77 77 77 22 00 00 # | ... |K| |M| +-----+.+ +-+ + |......| &3590 00 20 20 30 30 20 77 30 00 7a 03 0b 00 20 77 77 # | | | + + |.. + G.+ S |......| &35a0 77 22 30 37 31 20 20 00 70 20 a7 00 30 06 65 3a # | +.+-+ | | . |.G +K DKG+D+-+......| &35b0 35 31 77 77 77 22 20 77 27 20 30 31 30 31 37 13 # | |...| | +-+ +-+.++-----+--+..........| &35c0 11 11 13 31 77 77 77 77 77 22 20 77 2a 2b 00 20 # | |..G|S| | |.S S| |..... M..| &35d0 20 b7 b0 02 00 00 00 20 77 77 07 c0 77 22 20 77 # | |..G+-+-+ + |+F+S| +----+ |..... ....| &35e0 3a 31 31 30 20 f3 30 2b 30 11 11 03 72 77 77 70 # | |.GGKS|S| . + S|S+ |GGGG| |..........| &35f0 77 27 02 72 aa b6 b2 02 07 03 2b 3b 20 aa aa 02 # | |.GGGS| +-+G +GGG|GGGG| |..........| &3600 72 77 77 77 77 27 02 72 aa ba 02 13 a3 00 30 aa # | +-----+ >#+-+ |GGG|....| |.....G....| &3610 2a aa aa 02 72 77 77 77 77 27 02 13 11 11 03 1f # | ... ... +-+^+ ++G++--+.+G+-+V+-+.+--+ &3620 39 31 00 a2 aa 72 77 27 20 77 77 a7 77 77 22 70 # | . . C| C|GGGGGGG.GG|#< |#|.|##| &3630 77 70 77 30 31 3f 03 30 a3 33 11 73 a3 13 f3 36 # +---+ +-----+-+G++G.GGGGG.GG+-+ |#|.|##| &3640 31 37 11 23 00 70 70 00 00 24 00 40 a2 aa aa aa # |G.. M|M ..C..+G+|G.....G.GG| |#|.|##| &3650 a7 2a f9 02 92 72 92 29 13 11 03 13 11 11 13 a3 # |.... | .C.....+#|G.GGG.G.GG| K +-+.+--+ &3660 33 7a aa aa 7a aa 13 03 92 72 92 29 a2 77 c0 c2 # |...+-+C...C.C.|#|G.GB..G.GG| M| &3670 70 47 77 a3 23 7a 77 77 7a aa 02 00 92 72 92 29 # |G.. |..C.....+^|G.GGGGG.GG| +--------+ &3680 72 77 07 02 47 77 77 37 29 7a aa 7a 7a aa 02 06 # +---+ +.. C... +G.......GG+ +........| &3690 13 73 13 31 72 77 13 43 77 47 47 27 29 7a fa 75 # |GS.. .CM ..C. D.GGGGGGGGGD .........| &36a0 a7 a7 2a 00 00 00 00 c0 22 7a 07 20 77 74 77 77 # +-----+----------+----------+-+--------+ &36b0 f3 23 7a aa aa 7a aa 02 13 11 11 11 31 13 11 03 &36c0 73 07 40 77 07 30 7a 77 77 77 aa 03 73 77 77 77 &36d0 27 a2 7b 07 70 c4 70 47 07 50 a7 aa aa aa aa 05 &36e0 77 77 77 77 27 13 11 11 13 11 11 11 11 31 11 11 &36f0 11 11 11 13 13 11 11 11 31 00 00 00 00 00 00 05 # magenta &3700 13 11 11 11 11 11 11 11 11 31 11 11 11 31 11 11 # Level 15 (COLLAPSE) &3710 13 11 31 31 62 77 c7 70 77 77 77 c0 77 27 07 0c # &3720 77 57 70 7a 03 00 2a 20 72 0c 07 77 77 c7 70 70 # +------------------+-------+----+----+-+ &3730 77 27 07 77 77 37 7c a7 36 30 27 20 72 70 77 77 # |K...M ....... M...|. M ...D .G.+ G| | &3740 0c 07 77 77 77 37 77 77 77 07 73 a7 33 20 37 20 # |.M . .....M . ....|. .....+M..GK+ +.| | &3750 72 77 77 77 70 77 77 7a 77 b3 07 00 70 07 30 77 # |. .....M . .......+....... +..G++ |.+ | &3760 00 20 77 20 72 77 77 77 77 a7 13 53 13 31 c7 77 # |....... .....G...+S. .. +.. |.. | &3770 77 07 60 35 11 31 31 20 72 77 77 77 77 77 72 00 # |..........G+-+D+--+.M..... KD+---+-+ | &3780 00 20 77 77 77 67 00 20 00 00 00 2a 42 7a a7 77 # |...........|. |.......K | G| &3790 7a 77 02 13 03 23 77 77 77 77 0b 20 30 4f 03 a3 # |CG..G..G...| +-+ +|........S | +v+ +G| &37a0 32 11 31 73 13 11 31 00 00 60 72 77 77 77 37 53 # +---++.+----+ K|........++D+ >#< |G| &37b0 03 1f f9 02 a2 92 99 29 7a 92 99 29 30 11 11 73 # ####|G.|####| +----+.M......| | +^+ +-+ &37c0 7c 77 77 27 00 02 f3 33 30 31 99 99 33 30 99 99 # ####++ +####| | SSS. ...|.P| D | &37d0 02 02 b0 bb 07 00 70 77 72 2d 00 00 50 20 99 99 # #####| >#+##| | +--+-----+D+---+-----+ | &37e0 29 f0 91 93 29 20 30 11 13 11 11 53 13 11 13 11 # #####| +####| |SG+ | DS KKDG| &37f0 11 03 92 99 99 02 93 99 29 20 ab 03 00 00 00 02 # #####| |####| |SG+ +v+ | ...+ +-+-+D+ &3800 00 00 b5 00 66 a5 92 99 99 02 92 99 29 20 ab 03 # +----+D+----+G+S+S >#< | MMM| |X|SK | &3810 30 4f 03 20 00 77 37 30 31 31 35 13 11 31 35 11 # |...+G. F|G +^+ | MMM| | | + | &3820 11 a3 b3 b3 00 1f f9 02 20 00 cc 2c 20 28 6b 20 # |....+-+V...+-+ C+-----+ | | | | &3830 72 77 a3 07 00 f0 20 0a 00 00 30 3f 03 20 00 cc # |. M..........+---------+ | | | | &3840 2c 20 20 30 20 72 77 37 31 6f 77 37 31 00 00 00 # +. .... ......| G G D +------+ + + + &3850 00 40 13 11 11 03 02 02 02 22 07 7c 77 77 77 77 # <......M .....| ........+ |X | &3860 37 11 11 11 11 31 00 00 00 00 02 02 02 32 07 77 # +.............| + +G+ +.| +------+ | &3870 77 70 77 77 27 00 0a 00 a0 50 30 11 11 11 03 03 # |..M...M... ..| .M K M..|S|X CB | &3880 03 f3 72 77 77 c7 70 77 77 02 77 77 77 77 03 82 # |.. . ..M .| +.+.+.+.+-+------+ | &3890 00 00 00 00 00 20 73 77 77 77 77 77 77 02 03 a3 # |............C| M| &38a0 03 73 02 13 11 11 31 00 00 20 72 c7 77 c7 77 07 # +-------------+------------------+-----+ &38b0 77 02 c7 60 c0 77 b2 82 00 00 00 40 5f 00 22 77 &38c0 00 70 00 77 0c 27 30 37 37 37 37 31 11 11 11 03 &38d0 00 00 22 77 77 77 77 77 77 24 00 00 00 00 00 00 &38e0 00 00 00 00 00 c0 32 11 11 11 11 11 11 31 11 11 &38f0 11 11 11 11 11 11 11 13 11 11 03 00 00 00 00 01 # red &3900 13 31 3f 13 11 11 11 11 11 11 11 11 11 11 11 11 # Level 16 (GENERATOR) &3910 11 11 11 11 f3 02 00 d0 07 00 07 00 07 00 07 00 # &3920 00 00 00 00 00 00 00 00 20 b3 77 77 00 00 00 00 # +--+^+---------------------------------+ &3930 00 00 00 00 70 77 07 00 70 77 07 00 20 b2 f7 75 # < P. . . . | &3940 07 13 53 13 53 13 53 13 03 c7 60 00 00 07 6c 00 # +S.... .... .... | &3950 00 22 7b 74 07 c2 a2 c2 b2 c2 f2 20 2c 70 70 07 # |S.B.. +-+D+-+D+-+D+-+ .M K . MK | &3960 00 70 70 07 00 20 b2 77 77 20 30 37 30 3a 30 3a # |S.C.. |M|G|M|S|M|F|M| . .. . .. | &3970 20 70 77 07 00 70 77 07 00 20 b2 00 00 20 70 77 # |S.... | +.+ +G+ +G+ | .... .... | &3980 77 77 77 7c 20 00 00 70 77 07 00 77 77 20 13 11 # |S | .........M. | .... .... | &3990 31 31 c7 00 70 30 00 70 27 00 00 60 c0 07 00 07 # +----+-+.M . + ..| K M. . MK | &39a0 6c 20 c2 b0 f0 91 13 11 11 53 13 11 11 03 00 00 # |M S >#+-----+D+-----+ .. . . .. | &39b0 77 70 00 70 70 07 22 00 b4 93 99 99 99 02 92 99 # | CS+#######| |#####| .... G.... | &39c0 99 02 00 00 77 77 00 7a 77 07 22 bb bb 92 99 99 # |SSSS|#######| |#####| ... | &39d0 99 02 92 99 99 02 00 00 00 00 70 77 00 00 22 73 # |+...|#+-----+ +--+##| G G..G | &39e0 77 92 13 11 11 03 13 31 99 02 0a 00 00 00 7a a7 # |.SGS|#| +M|##+-+--------+------+ &39f0 00 00 22 b7 ba 92 02 00 00 00 30 2c 99 13 13 11 # +D+--+-+ S . +-+ | . . C|......| &3a00 11 11 31 11 11 11 33 35 11 13 03 0b 00 00 70 30 # <..G+GS| X + G +G+-+.. M..| &3a10 31 00 02 70 00 07 24 77 77 77 f2 72 a7 a3 2b 00 # + ....K+-----------+ +----+.... ...| &3a20 00 00 00 00 00 80 30 00 0a a3 13 73 07 7c 27 03 # | +---+C+ |K + |........| &3a30 77 77 36 11 11 11 11 11 31 00 00 30 11 11 73 77 # | . + . X +---+ +v+V +........| &3a40 07 77 27 02 13 11 43 03 00 00 00 00 20 06 30 00 # |.+G+G+ +-++.+-+ |.. D >#< D... M...| &3a50 00 00 72 77 77 77 27 02 70 30 00 00 00 07 00 80 # |.+. + |M+G.+ ++ |. .+ +^+ +... ....| &3a60 30 11 31 30 4f f3 06 73 77 77 77 27 72 a3 a3 03 # | . + |MMM. | +G+.| |........| &3a70 30 31 73 13 03 20 77 50 f0 91 2f 00 75 77 c0 77 # | + M+ +-+.+---+ .G|.+-+D+--+........| &3a80 27 72 73 00 03 20 3c 7a 03 33 20 07 37 30 3f 03 # | ..S+ .G|...G.|...........| &3a90 30 77 07 77 77 22 70 30 00 00 c2 cc 07 00 02 a3 # |C+..SS+ .|KG...|....G.....K| &3aa0 73 02 00 00 20 77 77 77 77 22 30 c0 03 00 13 73 # +-------+v+----------+-----+-----------+ &3ab0 13 11 03 a7 72 13 53 13 31 77 77 77 77 22 00 77 &3ac0 3b 00 00 00 00 00 00 a7 72 77 7a 72 77 77 77 77 &3ad0 77 22 34 77 bb 03 00 00 00 00 00 70 62 7a 77 72 &3ae0 77 a7 77 77 67 32 11 11 11 31 4f 13 11 11 11 11 &3af0 31 11 11 31 11 11 11 11 11 31 00 00 00 00 00 01 # red &3b00 13 11 11 11 11 11 11 11 11 11 11 11 31 3f 13 11 # Level 17 (TORTURE) &3b10 11 11 11 11 23 aa aa aa aa aa aa aa aa aa aa aa # &3b20 aa 72 77 87 87 77 73 77 22 aa 7b 77 77 77 77 77 # +------------------------+^+-----------+ &3b30 77 77 77 77 a7 a2 07 00 00 a7 1f 73 2a a2 7a aa # |GGGGGGGGGGGGGGGGGGGGGGGG|....X.X..+...| &3b40 aa aa aa aa aa aa aa aa 7a 2a 07 08 04 70 33 77 # |GGS....................G|G. .G>+.G| &3b50 27 a2 77 77 77 77 77 77 ab 7a aa aa 7a 2a 70 00 # |GG.GGGGGGGGGGGGGGGGGGG.G|. X C .++...| &3b60 00 08 70 77 27 a2 aa aa aa aa aa aa a7 7a b7 77 # |G............SGG.GGGGG.G| . X ....| &3b70 7a 2a 7c 77 77 77 77 77 27 a2 3a 31 77 77 77 77 # |GGGGGGGGGGGGG.GG..S..G.G|M............| &3b80 a7 7a aa 7a 7a 3a 00 00 77 77 37 77 27 a2 2a 6a # |GG+-+.........GG.GGG.G.G+ .....+...| &3b90 a7 aa aa aa aa 7a aa 7a 77 27 77 77 a3 00 20 77 # |GG|GK.GGGGGGGGGG.GGG....|....+G |...| &3ba0 27 a2 3a 37 77 77 7b 77 77 77 aa aa 77 37 11 11 # |GG+.+....S.......GGGG...+----+GG +...| &3bb0 a3 0a 30 77 27 a2 2a 27 a7 aa aa aa aa aa aa aa # |GG|.|.GGGGGGGGGGGGGGG.C >+ |GGG ....| &3bc0 47 f0 31 00 20 aa 0a 77 77 22 aa 72 72 77 77 77 # |GG|.|........S........ +S + +---+.+ | &3bd0 b7 77 77 77 77 00 b3 30 30 11 31 37 00 32 11 53 # +--+D+GGGGGGGGGGGGGGGG. D |.....|X.XG| &3be0 a3 aa aa aa aa aa aa aa 7a 00 05 20 77 77 27 78 # |C + +------------+------+.V|..G..|+.G.| &3bf0 a8 22 04 03 13 11 11 11 11 11 31 11 11 11 73 6f # |. ...... |BG |SG|..G..|X.G.| &3c00 72 a7 77 32 a7 27 72 00 00 00 70 77 77 07 00 f2 # |v+ G. G.GGGGG. +-+F++ +GG+.....|X.X | &3c10 a5 00 00 b2 2a 77 7a 27 78 7a 22 4f 03 00 7a a0 # +-+-+.++ +-----+G. | | G.M ....|X ..| &3c20 a7 aa aa 07 13 f3 30 03 a3 3a 77 77 27 78 08 32 # |S...MM| | .. | +-+.G......|.X.G| &3c30 31 31 37 03 13 11 11 a3 07 20 00 02 7a 0c 70 77 # +S.MMMM+ + +G+ | | .......|....| &3c40 27 08 77 22 7b 77 cc 02 02 00 00 77 00 20 00 13 # &3df0 77 23 77 77 72 3a 27 39 31 31 aa aa 0a 70 aa b7 # |S .C| G..|######+G+---------+ +.+.....+ &3e00 0b 77 87 77 74 1f b2 70 24 a0 77 92 99 99 39 3a # | S |.G+-++^+--+G+ S .SSSS |.......| &3e10 11 11 11 11 31 30 37 77 77 37 02 b0 20 a7 13 33 # +--+D|.G|... C .G +G++ +GGGG+ |.M | &3e20 3f 13 31 3a b0 00 70 bb bb 00 72 77 77 77 32 11 # < |.G+.++ +.+ ++ |GGGG| |...... | &3e30 53 72 2a 77 07 04 70 0a a3 33 30 aa aa 03 72 0c # +----+.G.GC| SSSG G.. |GGGG| |. ... | &3e40 00 00 f2 02 00 20 a7 73 33 00 00 73 03 33 00 a2 # | G+-----+----+G++G+..+GGGG| |. .... | &3e50 aa 2a 20 77 77 77 20 13 11 31 a7 a7 24 00 bb ab # | +S PDG| GS...G G + |. .... | &3e60 a0 77 00 a2 aa 2a 20 07 70 77 20 02 00 3a 11 11 # | | +-+--------+S+ ++.S++ +G.G|.M.... | &3e70 31 11 11 a3 33 3a 77 a3 aa 2a 20 07 77 77 20 02 # | G| | SG |-+..G|+G++. .... | &3e80 30 0b 00 00 00 00 d0 a5 02 ba 77 a7 a0 30 20 07 # | B|M +G+-+.+---+G+-+..S+-+K+ D ......| &3e90 77 77 20 02 20 30 31 11 11 11 11 b3 03 33 b7 33 # | |F+ S . SKDG KS. + | &3ea0 30 7a 2a c7 77 77 20 02 2a 00 20 00 00 00 00 b0 # +--+-+-----------+---------------------+ &3eb0 0a 20 31 77 2a a3 33 07 77 77 20 02 5f c2 00 a3 &3ec0 13 73 13 11 a3 13 73 b7 13 63 03 05 77 77 77 22 &3ed0 00 f2 30 00 0b 00 07 b0 56 0a 60 7b 00 00 00 30 &3ee0 00 00 00 20 13 31 31 11 11 11 11 11 31 11 11 11 &3ef0 11 11 11 11 11 11 11 31 00 00 00 00 00 00 00 01 # red ; SCREEN4 # Fourth levelset ; 005000 005000 000c00 &3300 13 f3 33 11 11 11 11 13 11 13 11 11 11 11 13 11 # Level 19 (ULTIMATE) &3310 11 11 11 11 23 00 20 bb aa 7a 77 02 0c 62 37 a7 # &3320 f0 05 20 0f c5 00 00 00 00 22 c0 20 bb aa 7a 77 # +-+^+--------+---+---------+-----------+ &3330 13 03 a2 7a a0 07 00 13 11 11 31 30 00 22 0a 30 # | |SSGGG...| M |K.+.G B |FDM | &3340 aa aa 7a 77 70 00 a3 13 11 03 07 00 00 00 00 20 # | M |SSGGG...+-+ |GG. G. +------+ + | &3350 08 22 aa 77 aa 7a 7a 77 00 03 72 77 77 07 00 00 # |G +GGGGG... . +G+---+ . |X | &3360 00 00 00 20 00 22 aa 73 aa 7a 7a 77 00 02 13 11 # |GG..GGG.G... + |...... | | &3370 11 03 30 11 11 11 11 31 11 23 aa 72 7a 7a 77 77 # |GG+.GGG.G... | +-----+ +---------+--+ &3380 40 02 00 00 00 00 20 99 99 99 99 99 99 29 77 72 # |GG|.G.G..... C| |############# &3390 7a 77 77 77 13 13 11 11 11 11 31 99 99 39 11 11 # |..|.G.......+-+----------+#####+------+ &33a0 11 23 aa 72 7a 77 77 00 00 92 99 99 99 99 99 99 # |GG|.G..... |################|SSSSSS| &33b0 99 29 bb bb bb 22 aa 72 77 77 00 00 00 13 13 11 # |GG|..... +-+--------------+..SSSS| &33c0 11 11 11 11 11 31 77 bb bb 22 a7 13 31 4f 13 11 # |.G+--+v+---+D+..| G P .+.G. SS| &33d0 53 73 27 00 0a 00 00 0d 00 37 a7 07 b0 2b a2 0a # |GG >#< + .++ +--+----+ +.... S| &33e0 00 1f f9 02 30 00 00 37 03 13 31 11 11 03 73 77 # |... +^+ D ..| | | .G. | &33f0 07 00 2b 72 77 00 f3 33 00 05 00 70 27 00 02 00 # | +-----+-+ | ++...+v+ | &3400 00 20 70 7a 00 00 00 22 00 00 00 00 00 13 11 11 # | +----+ |M | | . >#< | &3410 13 03 02 00 00 30 73 77 f3 34 00 20 02 13 11 31 # | |GKGG| | | | +-----+ +^+ | &3420 00 20 0c 00 00 20 20 00 00 00 00 07 f0 91 2f 00 # | | G | | | | +...G..+ C | &3430 20 02 a2 a6 2a 00 20 00 00 00 20 20 00 30 11 11 # | + + | | | |+.GG.+ | &3440 31 30 3f 03 00 22 20 a0 00 02 00 02 00 00 00 02 # | G G | | | M| G+G. | &3450 02 00 73 77 7a 37 00 00 04 22 30 00 00 03 00 02 # | +----+ | | | | +---++ | &3460 00 00 00 02 02 00 32 a7 7a 03 00 00 00 22 a0 00 # | | K| | | ..G+GG+--+..| &3470 00 0a 00 02 00 00 00 02 02 c0 02 3a 7a 00 00 00 # |.. C | K| | | .....KSSDG..| &3480 00 22 30 11 11 03 00 02 00 00 00 02 02 00 02 13 # |SS.. .. +.V+--+D+ + + +----------+..| &3490 11 33 00 00 00 22 00 00 00 00 00 02 00 00 60 02 # |SSS.....+ GG| | &34a0 02 00 02 77 3a aa 13 31 77 22 77 00 00 00 04 02 # +----------------------+---------------+ &34b0 00 00 60 02 02 00 02 77 77 67 bb a5 77 22 bb 77 &34c0 70 07 00 73 6f 13 31 35 30 30 30 11 11 11 11 11 &34d0 73 27 b2 bb 77 77 37 00 00 00 00 00 a0 2a 00 00 &34e0 00 00 00 00 00 20 13 11 11 11 11 11 11 11 11 11 &34f0 11 31 11 11 11 11 11 11 11 31 00 00 00 00 00 05 # magenta &3500 13 11 11 11 11 11 11 11 11 31 3f 13 11 11 11 11 # Level 20 (MONOTONE) &3510 31 11 11 11 23 a7 77 f7 76 77 77 77 77 77 77 77 # &3520 77 77 77 77 77 a5 bb bb 2b 72 77 77 77 77 77 77 # +------------------+^+----------+------+ &3530 77 77 77 77 77 77 77 77 77 13 11 11 31 72 77 70 # |.G...V.........................DGSSSSS| &3540 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 # |...............................+------+ &3550 27 f2 75 07 77 77 77 77 77 87 77 77 77 70 77 77 # |... ..................................| &3560 77 77 77 77 77 22 77 07 7c 77 77 78 77 77 77 77 # |B.. ...........X...... ...............| &3570 77 70 77 77 77 77 77 77 77 22 77 77 77 77 77 77 # |... M.....X........... ...............| &3580 77 77 77 77 77 0c 7b 77 77 77 77 77 77 22 77 77 # |......................M S.............| &3590 77 70 77 77 87 77 77 78 77 77 77 77 77 77 77 77 # |...... ......X....X...................| &35a0 77 22 77 77 07 7c 77 77 77 77 77 77 77 77 07 77 # |..... M.................. ............| &35b0 77 77 77 77 77 22 77 77 77 77 77 77 77 77 77 77 # |......................... ............| &35c0 77 77 07 77 77 77 77 77 77 22 77 70 77 77 77 77 # |.. ...................... M...........| &35d0 77 77 77 77 77 77 07 7c 77 77 77 77 77 22 77 0c # |..M ..........+---+...................| &35e0 77 77 77 77 77 13 11 73 77 77 77 77 77 77 77 77 # +..............| |......... .........+ &35f0 77 32 77 77 77 77 77 77 77 02 00 72 77 77 77 77 # <...... .......| |.... .... M........> &3600 70 77 77 77 77 f3 72 77 77 07 77 77 77 27 00 20 # +.....M .......| PF|.. M..............+ &3610 77 77 70 77 07 7c 77 77 77 f7 31 77 77 c7 70 77 # |..............+---+............ ......| &3620 77 77 02 fd 20 77 00 7c 77 77 77 77 77 77 37 72 # |............ M................. MK....| &3630 77 77 77 77 77 77 37 11 31 77 77 77 77 77 77 70 # |............. ........................| &3640 77 77 27 72 77 77 77 77 77 07 7c 77 77 77 77 77 # |. ........ ...........................| &3650 77 77 77 c0 76 77 27 72 77 77 77 77 77 77 70 77 # |. ...... M .................K.........| &3660 77 77 77 77 77 77 77 77 77 77 27 72 70 77 77 77 # |. M............... ......... ......+--+ &3670 07 77 77 77 77 77 77 77 77 77 77 77 77 77 27 72 # |................ M...... M......DSS| &3680 70 77 77 07 0c 77 77 77 77 77 77 77 77 67 77 77 # |...................................+SS| &3690 77 77 27 72 c0 77 77 77 77 77 77 77 07 77 77 77 # |...C...............................|SC| &36a0 77 07 77 77 77 13 31 72 77 77 77 77 77 77 77 07 # +------------------+v+--------------+--+ &36b0 c0 77 77 77 00 c0 77 77 77 b5 2b 72 77 77 77 77 &36c0 77 77 77 77 77 77 77 77 77 77 77 77 77 b3 2b 72 &36d0 77 74 77 77 77 77 77 77 77 77 77 77 77 77 77 77 &36e0 77 b2 24 13 11 11 11 11 11 11 11 11 31 4f 13 11 &36f0 11 11 11 11 11 31 11 03 31 00 00 00 00 00 00 01 # red &3700 13 11 11 11 11 31 13 11 11 11 11 11 11 31 3f 13 # Level 21 (COUNTDOWN) &3710 11 11 11 11 23 77 77 77 77 77 72 0b 77 77 77 77 # &3720 77 f7 76 77 77 77 77 00 20 32 37 37 37 37 35 b7 # +----------++--------------+^+---------+ &3730 70 73 b7 37 77 37 74 77 73 77 77 07 27 72 7a 7a # |..........|.S ...........V......... | &3740 7a 2a 77 3a 0c 77 77 77 77 77 77 77 77 77 77 77 # |+.+.+.+.+D+.S .+..S.+...+C...+...... .| &3750 27 32 37 3a 37 37 13 11 11 11 73 77 77 77 77 77 # |.G.G.G.G|..G+M .......................| &3760 77 77 77 77 27 72 7a 7a 7a 7a 42 00 00 00 72 07 # |+.+G+.+.++-------+....................| &3770 37 11 11 11 11 11 11 a3 27 32 37 3a 3a 3a 02 00 # |.G.G.G.G.|C |.. .+------------+G.| &3780 00 53 13 03 20 00 00 0a 00 00 00 72 27 72 27 77 # |+.+G+G+G+| +D+-+ | G |..| &3790 7a 7a 02 f3 34 20 bb 2b 06 02 77 73 03 70 77 27 # |..|..G.G.| +v+ |SSS|K | ..+.+ ....|G.| &37a0 7a 22 77 72 77 a3 23 f0 91 2f 20 b3 20 c7 c3 a0 # |..|...+G+| >#< |+S |.M+M G|D|......|..| &37b0 52 72 77 77 27 77 22 73 13 73 a7 27 30 3f 03 72 # |+.+-+..G.| +^+ |.. +-+ +--+D+......|.G| &37c0 07 13 03 13 31 35 77 77 77 72 2a 72 27 2a 37 3a # |..|G|.+G+|K |.. G GK |.. ..|G.| &37d0 62 00 00 72 07 0a a0 06 00 20 77 00 77 a2 27 72 # |.+|G|....+-----+-----+.+ |..M...|G.| &37e0 23 2a 77 77 13 11 11 13 11 11 73 03 00 20 77 7c # |..|G| +C +| G+-+ |......|..| &37f0 77 a2 27 72 27 2a 00 00 43 00 30 02 00 00 00 3a # |K.|K|S D >+S+M+G+ +. | |......|.G| &3800 31 20 77 77 77 72 27 62 27 26 0b 00 05 00 f0 31 # +--+D+SS ++----+GGG+C+. + |......|..| &3810 3b 3c 3a 30 07 02 72 77 77 27 a7 32 11 53 b3 0b # | |SS |K.S..|GGG|... .G D |.. ..|G.| &3820 33 11 11 a3 aa 43 73 00 00 03 72 77 77 27 77 22 # | +---+.+-+D++G+++v+ .. +-+...M..|..| &3830 00 00 b2 0b 62 b7 77 a2 aa 72 77 70 0a 05 72 07 # | X GG+G+K|....DS.F|#< ...|M ......|.G| &3840 70 27 7a 22 00 00 13 11 73 13 53 33 3a 33 4f 03 # | .. S G|MMM.+--++^+ .. | .......|..| &3850 77 30 31 77 c7 77 72 27 02 08 a0 3a 3a 26 77 77 # | +---+G|MMM.| S| .+-+ .....+-+..| &3860 b5 f7 20 f9 02 77 27 0c 77 77 77 72 2a 02 00 70 # | + +G+G+G+D+--+ | G.|K.......>#|G.| &3870 07 0b 2a cc 7c 13 31 f3 33 70 07 02 77 77 77 27 # | | . ...| +-+GGG|..... ..+-+..| &3880 77 22 00 00 13 11 a3 c2 cc 27 b0 02 00 70 13 03 # | + +-----+ K |KGG|... M ....+ | &3890 77 77 37 31 77 22 30 00 a3 a3 a3 53 13 31 00 02 # | B.. .P|KGG|C.........DGG| &38a0 00 7a 62 77 77 77 f7 91 a2 27 02 02 00 07 77 27 # +--------------------+---+-+--------+--+ &38b0 00 00 00 30 31 aa 2a 77 77 07 77 13 73 27 02 03 &38c0 30 11 11 31 00 00 00 60 20 a6 2a 77 07 0c 77 77 &38d0 03 20 02 5f 77 00 00 00 00 00 00 00 d7 62 aa 42 &38e0 77 77 77 77 57 aa 32 11 11 11 11 11 11 11 11 11 &38f0 11 13 11 13 13 11 11 11 31 11 03 00 00 00 00 06 # cyan &3900 13 11 11 31 99 13 11 11 93 13 11 11 11 11 11 11 # Level 22 (FATIGUE) &3910 11 11 11 31 62 77 aa 27 99 02 00 60 92 72 77 77 # &3920 77 77 77 77 77 77 77 27 72 aa aa 37 11 03 a0 00 # +------+##+-----+#+--------------------+ &3930 92 72 77 0c 70 77 77 77 77 07 c0 27 72 77 aa 57 # |K..GG.|##| K|#|....................| &3940 00 00 77 07 13 73 77 70 77 70 77 77 07 77 07 27 # |.GGGG.+--+ G |#|...M .......... M.| &3950 a2 f7 a5 4a 13 31 70 70 77 27 77 67 77 c7 70 77 # |...GG.D ... +-+... ... ...... ... .| &3960 c7 70 77 77 22 aa 77 77 92 29 74 c0 7b 27 77 77 # |G.BGGC+--+ . ....|...K...M ....M .....| &3970 77 77 77 77 77 77 77 77 32 11 11 11 13 31 31 35 # |GG....|##|C. MS..|....................| &3980 11 31 13 11 11 11 31 37 11 11 11 53 93 99 99 99 # +------+--+-+D+---++--------+.+------+D+ &3990 02 2d 29 2b 99 29 77 77 77 77 77 27 99 99 99 02 # #######| P|#|S|###|...........|######| | &39a0 92 99 99 99 f2 00 92 b2 13 93 72 77 c0 77 77 77 # #######|F |#|S+-+#|... M......|#+----+ | &39b0 92 13 11 31 20 13 31 3f 13 13 31 31 00 20 29 77 # +--+^+-+--+-+ |#|.... ......|#|S | &39c0 77 70 77 77 27 29 0b 00 00 22 00 00 00 1f 99 02 # | >##| |#|...........|#| +----+ &39d0 00 00 92 72 77 77 77 77 77 92 02 13 11 31 03 70 # + ... +--+ . +-+...........|#| |##### &39e0 77 30 11 03 70 00 13 73 77 77 77 77 77 92 02 92 # ##|.M K.|#|...........|#+----+ | &3a10 77 77 77 77 77 27 29 00 00 b0 22 bb 00 00 1f 99 # +--+v+-+##+-----+#+...... . |######| | &3a20 72 0c 76 92 72 77 77 77 77 77 92 13 11 31 20 13 # ###################+......M..M|#+----+ | &3a30 31 4f 13 93 39 11 11 31 39 77 77 77 00 07 20 99 # +--------------+-+^+..........|#|S | &3a40 99 99 02 92 99 99 99 99 99 99 99 99 99 73 77 77 # |............. |.+ |..........|#| +----+ &3a50 c7 77 2c 39 11 11 03 32 11 11 11 11 11 11 11 13 # +... M. M. M.. |.D |..........|#| |##### &3a60 f3 33 77 77 77 77 77 92 b2 00 00 20 72 77 77 77 # < C. .. .. ... +.+ +----------+#| +----+ &3a70 77 77 77 20 37 20 77 77 77 77 77 92 02 13 11 31 # +............. .G|KDKCG.....G.|#| | &3a80 73 77 c0 07 7c c0 77 20 57 20 77 77 77 77 77 92 # | V +.+ +.G.G.G...G+-+----+ | &3a90 02 92 99 99 2f 40 07 77 70 07 77 07 73 03 13 11 # |S |SD |......G... | &3aa0 11 11 11 31 29 30 11 11 33 77 77 77 77 77 77 07 # +--------------+-+v+-------------------+ &3ab0 a7 62 65 a4 77 77 a7 27 29 00 00 00 22 00 00 00 &3ac0 6f 00 00 00 30 37 30 a7 a7 a7 77 a7 13 13 11 31 &3ad0 20 b2 00 00 00 00 00 00 20 5b 20 77 77 77 7a 77 &3ae0 00 00 00 00 20 13 11 11 11 11 11 11 31 31 4f 13 &3af0 11 11 11 11 11 11 11 11 11 03 00 00 00 00 00 01 # red &3b00 13 11 11 11 11 31 11 31 11 f3 33 11 11 11 11 11 # Level 23 (SABOTAGE) &3b10 11 13 31 11 23 37 77 77 77 77 72 77 f2 76 00 30 # &3b20 aa c0 00 70 bb 00 77 02 f0 21 77 37 73 33 37 73 # +----------+---+--+^+------------+--+--+ &3b30 73 02 0f 03 00 3a 11 31 a7 0b 00 0a 02 30 13 73 # |.+........|...|V. +GG M .SS ..| > &3b40 37 11 73 77 37 31 00 02 a0 7a 00 70 aa 0a 00 07 # |...++.++.++.+.| F+ G+---+.GS G | + &3b50 82 20 72 77 77 77 33 37 31 57 00 a2 70 77 4d 70 # +-+..+--+....+-+ | GG. .GGG . |X | &3b60 77 07 70 0c 02 20 b2 37 73 73 62 37 77 37 00 13 # |.......++.+-+.D |G ...PC .... .M | | &3b70 11 31 31 31 11 31 30 03 03 20 b2 7b 77 77 13 73 # |S.++.+.|K.+...+ +----+-+-+---+ ++ + | &3b80 77 23 00 02 00 2c f9 02 05 0c 02 00 00 00 22 aa # |SS.....+-+...+| | M|#< D M | | &3b90 73 33 77 27 37 73 02 20 c0 77 13 03 13 11 13 11 # |GG+.++...|.++.| | M..+-+ +---+-----+D+ &3ba0 11 53 23 3a 11 11 31 27 77 73 02 20 77 00 00 00 # |G+-----+.|..+.| |.. GGGGDG M | &3bb0 aa aa a5 00 0c 00 22 aa 00 07 2c 37 73 77 02 20 # |GG . M|.++...| | . +--++--+ +--+ &3bc0 00 00 70 00 13 31 13 31 30 11 33 55 13 11 31 77 # +DD+----+..| +.| | +-+ .. |SKS| K | &3bd0 02 73 02 20 30 31 70 07 00 20 6b 2b 00 06 22 00 # | |.......+++.| | | | K | +--+D+ &3be0 72 77 77 77 33 73 02 20 20 20 00 00 60 20 00 30 # | |.+---+...|.| |C| +-+ +-+-+ +-+.. S| &3bf0 11 53 23 00 72 13 11 73 77 72 02 20 24 30 31 30 # | |.|.....+.|.| +-+ | | |#| |#|.G+-+ &3c00 31 31 30 31 77 b0 22 00 72 72 77 77 73 72 02 30 # | |.| .+--+.+.| +K+-+.+.| |#| |#|.G|C| &3c10 31 00 20 20 20 29 20 29 a7 13 23 00 72 02 37 11 # | |S|+....|...| G|M |...| |#| |#|.++ | &3c20 73 73 02 30 36 31 37 27 20 29 20 29 a7 42 22 00 # + +-+-+-+.++.+| .+-+ |...| +^| +-+ | &3c30 b2 32 77 77 72 77 02 2a 0c 20 77 27 20 29 20 29 # | +G+-+...| | |G.G|.. + ....| &3c40 37 03 32 00 13 13 13 73 33 37 02 37 31 20 77 27 # | . +-+v+ . | |...|G+ .......| &3c50 30 3f 02 13 03 00 20 02 00 00 30 3a 31 77 27 00 # | +-----+ >#| +-+ |.G.|GD.+.... G..| &3c60 00 02 a2 a7 72 07 03 00 70 77 27 02 00 00 00 07 # | M + +^+GG+ |...|S+G|....M...| &3c70 30 31 4f 03 70 20 20 77 27 3a 00 70 77 77 77 22 # | M + |GG. |..G|S|G|........| &3c80 00 13 11 11 03 00 1f 29 00 13 03 72 7a a2 75 73 # | B M .+X +GG+---+G..+S|S+-+......| &3c90 77 07 7a 27 02 00 00 c0 00 03 30 3f a3 3a 00 20 # | M +KS DGGDSSSS...DS|K C|......| &3ca0 77 27 3b 2a 77 77 7c 77 22 00 00 00 0c 00 03 00 # +--------+-----+----------+-+-+-+------+ &3cb0 a2 7a 00 20 77 2a 2b 2a 77 77 77 77 22 00 5f 00 &3cc0 c0 00 70 83 30 aa 13 11 a3 77 b3 b2 13 73 77 77 &3cd0 27 02 00 00 00 0c 63 0b 50 aa b5 bb 7b 77 b5 62 &3ce0 40 72 77 77 27 13 11 11 11 31 11 11 31 11 11 11 &3cf0 11 11 13 13 13 13 11 11 31 00 00 00 00 00 00 01 # red &3d00 13 31 3f 13 11 11 11 11 31 11 11 11 11 31 31 11 # Level 24 (DARKNESS) &3d10 11 13 11 11 23 74 77 77 77 77 77 77 27 00 00 00 # &3d20 00 f0 91 62 a3 3a 00 00 20 72 77 7b 77 77 77 77 # +--+^+----------+---------+-+----+-----+ &3d30 77 02 00 00 c0 00 f3 23 00 77 05 f0 75 2c 72 77 # |C..............| >#|K+GG+ | &3d40 7c 77 77 77 77 a7 02 00 00 00 30 b4 13 73 33 00 # |...S...........| M +^| ..D B.M| &3d50 00 20 72 77 00 77 77 77 7c 77 13 11 11 73 b3 b3 # |...M..........G| +CS+-+.++ | &3d60 bb 72 27 00 00 20 72 77 77 77 77 77 00 77 72 77 # |... ......M...+-----+.+S+SSS|..| | &3d70 77 07 b2 3b bb a2 37 3a 31 20 62 77 77 07 77 77 # |........... ..|...... |SS+SS|G.+G+-+ | &3d80 77 77 72 aa a3 07 b2 3b bb 72 27 77 77 27 02 77 # |K..... ........|.GG+G. |SS+SS|..|.....| &3d90 77 c7 70 77 77 77 03 13 11 11 b3 bb bb 72 27 77 # | .....M .......+ +-----+SSSSS|..|...+.| &3da0 37 27 c2 70 77 77 77 77 77 77 05 73 77 77 b7 bb # |M .............D +......SSSSS|.G|K..+.| &3db0 bb 72 2a 76 37 27 13 11 11 11 11 11 11 73 03 77 # +-------------+.+ ..+GGG...+--+.G+--+K++ &3dc0 a3 aa 77 37 11 73 3a 11 63 33 a2 aa 0a 00 00 00 # |GGGG | |GGGG.S| G | &3dd0 00 00 02 00 a2 aa 7a 2b 00 00 0a 00 00 20 72 77 # |.... C+----+---+------+-+ .+-+V+--+ &3de0 07 00 00 34 11 11 13 11 13 11 11 31 31 70 13 f3 # +.GG.......| D.........K |. DMMMM S| &3df0 36 11 33 a7 7a 77 77 77 02 00 50 77 77 77 77 67 # #< |G| D .K| &3e40 00 00 2b 13 11 11 53 13 31 3d 00 13 11 31 00 f3 # |..... ++.+-+----+ +^+ +G+ +----+D+ &3e50 34 30 2a 30 00 00 b0 32 00 00 00 00 00 f2 00 00 # |. M.+v+ +D.....SSSSS+ ... | &3e60 a2 aa aa 00 1f f9 02 a2 02 05 00 70 26 72 77 77 # |K C .>#< .+-------+SS+----+C+--------+ &3e70 00 00 30 73 13 13 11 31 00 f3 33 30 3a 30 11 11 # |.M .+^+ +G|S.SSSSSK+SSSSSSSSSSSSSSSSS| &3e80 53 23 07 c0 37 4f 03 53 77 77 b7 bb bb 03 00 00 # |..... +|S+--+--+-+---+------+---+S| &3e90 77 07 00 00 00 20 62 40 70 1f f9 02 70 13 11 11 # | X |SSSSSSSSSSSSSSSSSSSSSSSSSS| &3ea0 11 b3 3b 11 11 43 13 11 11 11 31 72 0c 70 f3 33 # +-----------+---+----+--+-----+---+----+ &3eb0 30 2a 7b bb bb 6b b3 bb bb bb bb bb bb bb bb 22 &3ec0 77 77 07 00 00 23 3b 11 13 31 31 11 31 11 11 11 &3ed0 13 11 b3 22 80 00 00 00 00 20 bb bb bb bb bb bb &3ee0 bb bb bb bb bb bb bb 32 11 11 11 11 11 31 11 31 &3ef0 11 11 13 31 11 11 31 11 31 11 11 03 00 00 00 04 # blue