{"schema":1,"platform":"c64","game":"mr-hat","title":"Mr. Hat","build":"Commodore 64 Club issue 14, disk side B (a freezer backup of the title screen)","symbols_sha256":"3c3de03ae4a43b6467284b6f0e7ff86b58dcc5d7641872d2600dd357d5731010","index":[{"a":0,"n":"cpu_port_ddr","k":"variable","len":1,"c":true},{"a":1,"n":"cpu_port_banks","k":"variable","len":1,"c":true},{"a":2,"n":"flag_obj_0002","k":"table","len":16,"c":true},{"a":18,"n":"flag_obj_0012","k":"table","len":10,"c":true},{"a":28,"n":"mon_zp_1c","k":"variable","len":1,"c":true},{"a":29,"n":"mon_zp_1d","k":"variable","len":1,"c":true},{"a":30,"n":"mon_zp_1e","k":"variable","len":1,"c":true},{"a":31,"n":"mon_zp_1f","k":"variable","len":1,"c":true},{"a":32,"n":"draw_rows","k":"variable","len":1,"c":true},{"a":33,"n":"mon_zp_21","k":"variable","len":1,"c":true},{"a":34,"n":"flag_obj_0022","k":"variable","len":1,"c":true},{"a":35,"n":"draw_width","k":"variable","len":1,"c":true},{"a":36,"n":"draw_dest_lo","k":"variable","len":1,"c":true},{"a":37,"n":"draw_dest_hi","k":"variable","len":1,"c":true},{"a":38,"n":"mon_zp_26","k":"variable","len":1,"c":true},{"a":39,"n":"draw_src_lo","k":"variable","len":1,"c":true},{"a":40,"n":"draw_src_hi","k":"variable","len":1,"c":true},{"a":41,"n":"mon_zp_29","k":"variable","len":1,"c":true},{"a":42,"n":"mon_zp_2a","k":"table","len":15,"c":true},{"a":57,"n":"flag_room1_item_mid","k":"table","len":7,"c":true},{"a":64,"n":"score_thousands","k":"table","len":5,"c":true},{"a":69,"n":"score_ten_thousands","k":"table","len":64,"c":true},{"a":144,"n":"kernal_status","k":"table","len":3,"c":true},{"a":147,"n":"kernal_verify_flag","k":"table","len":6,"c":true},{"a":153,"n":"jump_step","k":"table","len":9,"c":true},{"a":162,"n":"jiffy_clock_lo","k":"table","len":12,"c":true},{"a":174,"n":"kernal_end_lo","k":"variable","len":1,"c":true},{"a":175,"n":"kernal_end_hi","k":"table","len":8,"c":true},{"a":183,"n":"room1_zp_b7","k":"variable","len":2,"c":true},{"a":185,"n":"kernal_sec_addr","k":"variable","len":1,"c":true},{"a":186,"n":"kernal_device","k":"variable","len":1,"c":true},{"a":187,"n":"flag_obj_00bb","k":"variable","len":1,"c":true},{"a":188,"n":"kernal_name_hi","k":"variable","len":1,"c":true},{"a":189,"n":"flag_obj_00bd","k":"table","len":3,"c":true},{"a":192,"n":"mon_zp_c0","k":"variable","len":1,"c":true},{"a":193,"n":"mon_ptr_lo","k":"variable","len":1,"c":true},{"a":194,"n":"mon_ptr_hi","k":"variable","len":1,"c":true},{"a":195,"n":"mon_ptr2_lo","k":"variable","len":1,"c":true},{"a":196,"n":"mon_ptr2_hi","k":"variable","len":1,"c":true},{"a":197,"n":"kernal_last_key","k":"variable","len":2,"c":true},{"a":199,"n":"step_sound_count","k":"table","len":17,"c":true},{"a":216,"n":"game_state_d8","k":"table","len":29,"c":true},{"a":245,"n":"room_var_f5","k":"variable","len":1,"c":true},{"a":246,"n":"dying_flag","k":"variable","len":1,"c":true},{"a":247,"n":"stage_flag_f7","k":"variable","len":1,"c":true},{"a":248,"n":"frame_tick","k":"variable","len":1,"c":true},{"a":249,"n":"frame_tick_hi","k":"variable","len":1,"c":true},{"a":250,"n":"flag_fa","k":"variable","len":1,"c":true},{"a":251,"n":"walk_tick_or_fill_byte","k":"variable","len":1,"c":true},{"a":252,"n":"room1_door_flag_or_fill_width","k":"variable","len":1,"c":true},{"a":253,"n":"walk_frame_right_or_fill_rows","k":"variable","len":1,"c":true},{"a":254,"n":"zp_ptr_lo","k":"variable","len":1,"c":true},{"a":255,"n":"zp_ptr_hi_or_walk_frame_left","k":"variable","len":1,"c":true},{"a":528,"n":"mon_buf_0210","k":"variable","len":1,"c":true},{"a":529,"n":"mon_buf_0211","k":"table","len":40,"c":true},{"a":569,"n":"mon_reg_pc_hi","k":"variable","len":1,"c":true},{"a":570,"n":"mon_reg_pc_lo","k":"variable","len":1,"c":true},{"a":571,"n":"mon_reg_sr","k":"variable","len":1,"c":true},{"a":572,"n":"mon_reg_a","k":"variable","len":1,"c":true},{"a":573,"n":"mon_reg_x","k":"variable","len":1,"c":true},{"a":574,"n":"mon_reg_y","k":"variable","len":1,"c":true},{"a":575,"n":"mon_reg_sp","k":"table","len":64,"c":true},{"a":788,"n":"irq_vector_lo","k":"variable","len":1,"c":true},{"a":789,"n":"irq_vector_hi","k":"variable","len":1,"c":true},{"a":790,"n":"brk_vector_lo","k":"variable","len":1,"c":true},{"a":791,"n":"brk_vector_hi","k":"table","len":25,"c":true},{"a":816,"n":"load_vector","k":"variable","len":2,"c":true},{"a":818,"n":"save_vector","k":"table","len":64,"c":true},{"a":2049,"n":"basic_sys2157","k":"table","len":108,"c":true},{"a":2157,"n":"entry_sys2157","k":"routine","len":3,"c":true},{"a":2160,"n":"new_game","k":"routine","len":6,"c":true},{"a":2166,"n":"start_title","k":"routine","len":8,"c":true},{"a":2174,"n":"reset_game_vars","k":"routine","len":35,"c":true},{"a":2209,"n":"floor_check_if_hat_on","k":"routine","len":12,"c":true},{"a":2217,"n":"b_08A9","k":"branch","len":1,"c":false},{"a":2221,"n":"sprites_off_but_4_5","k":"routine","len":9,"c":true},{"a":2230,"n":"pad_08b6","k":"variable","len":2,"c":true},{"a":2232,"n":"gfx_cells_08b8","k":"table","len":24,"c":true},{"a":2256,"n":"gfx_cells_08d0","k":"table","len":8,"c":true},{"a":2264,"n":"f_08D8","k":"table","len":8,"c":true},{"a":2272,"n":"f_08E0","k":"table","len":8,"c":true},{"a":2280,"n":"f_08E8","k":"table","len":8,"c":true},{"a":2288,"n":"f_08F0","k":"table","len":8,"c":true},{"a":2296,"n":"f_08F8","k":"table","len":8,"c":true},{"a":2304,"n":"spr_24_walker","k":"table","len":64,"c":true},{"a":2368,"n":"spr_25_guardian_a","k":"table","len":64,"c":true},{"a":2432,"n":"spr_26_blade_right","k":"table","len":64,"c":true},{"a":2496,"n":"spr_27_hat_dying","k":"table","len":16,"c":true},{"a":2512,"n":"f_09D0","k":"table","len":16,"c":true},{"a":2528,"n":"f_09E0","k":"table","len":16,"c":true},{"a":2544,"n":"f_09F0","k":"table","len":16,"c":true},{"a":2560,"n":"spr_28_lift_cabin","k":"table","len":64,"c":true},{"a":2624,"n":"spr_29_walker_d","k":"table","len":64,"c":true},{"a":2688,"n":"spr_2a_hat_crouch","k":"table","len":64,"c":true},{"a":2752,"n":"spr_2b_trophy","k":"table","len":64,"c":true},{"a":2816,"n":"spr_2c_hat_right_1","k":"table","len":64,"c":true},{"a":2880,"n":"spr_2d_hat_right_2","k":"table","len":64,"c":true},{"a":2944,"n":"spr_2e_hat_right_3","k":"table","len":64,"c":true},{"a":3008,"n":"spr_2f_hat_left_1","k":"table","len":64,"c":true},{"a":3072,"n":"spr_30_hat_left_2","k":"table","len":64,"c":true},{"a":3136,"n":"spr_31_hat_left_3","k":"table","len":64,"c":true},{"a":3200,"n":"spr_32_hat_front_1","k":"table","len":64,"c":true},{"a":3264,"n":"spr_33_hat_front_2","k":"table","len":64,"c":true},{"a":3328,"n":"spr_34_blade_left","k":"table","len":64,"c":true},{"a":3392,"n":"spr_35_guardian_b","k":"table","len":64,"c":true},{"a":3456,"n":"spr_36_cherry_a","k":"table","len":41,"c":true},{"a":3497,"n":"skip_operand_0da9","k":"table","len":23,"c":true},{"a":3520,"n":"spr_37_cherry_b","k":"table","len":64,"c":true},{"a":3584,"n":"spr_38_cherry_c","k":"table","len":64,"c":true},{"a":3648,"n":"spr_39_cherry_d","k":"table","len":64,"c":true},{"a":3712,"n":"spr_3a_creature_a","k":"table","len":64,"c":true},{"a":3776,"n":"spr_3b_octopus_a","k":"table","len":64,"c":true},{"a":3840,"n":"spr_3c_octopus_b","k":"table","len":64,"c":true},{"a":3904,"n":"spr_3d_walker_b","k":"table","len":64,"c":true},{"a":3968,"n":"spr_3e_walker_c","k":"table","len":64,"c":true},{"a":4032,"n":"spr_3f_creature_b","k":"table","len":64,"c":true},{"a":4096,"n":"bytes_1000","k":"table","len":8,"c":true},{"a":4104,"n":"delay_count_1008","k":"variable","len":1,"c":true},{"a":4105,"n":"range_mode_1009","k":"variable","len":1,"c":true},{"a":4106,"n":"anim_count_100a","k":"variable","len":1,"c":true},{"a":4107,"n":"var_100b","k":"variable","len":1,"c":true},{"a":4108,"n":"room_number","k":"variable","len":1,"c":true},{"a":4109,"n":"anim_count_100d","k":"variable","len":2,"c":true},{"a":4111,"n":"flash_timer","k":"variable","len":2,"c":true},{"a":4113,"n":"sound_count_1011","k":"table","len":4,"c":true},{"a":4117,"n":"points_flag","k":"variable","len":1,"c":true},{"a":4118,"n":"points_flash_count","k":"variable","len":2,"c":true},{"a":4120,"n":"title_mode_flag","k":"variable","len":1,"c":true},{"a":4121,"n":"f1_toggle","k":"table","len":7,"c":true},{"a":4128,"n":"set_range_mode","k":"routine","len":17,"c":true},{"a":4145,"n":"room_draw_tail_1031","k":"routine","len":17,"c":true},{"a":4163,"n":"check_hazard_1043","k":"routine","len":57,"c":true},{"a":4196,"n":"r_1064","k":"branch","len":1,"c":false},{"a":4197,"n":"b_1065","k":"branch","len":1,"c":false},{"a":4218,"n":"r_107A","k":"branch","len":1,"c":false},{"a":4219,"n":"r_107B","k":"branch","len":1,"c":false},{"a":4224,"n":"room6_setup_part","k":"routine","len":50,"c":true},{"a":4274,"n":"pad_10b2","k":"table","len":23,"c":true},{"a":4297,"n":"gfx_cell_10c9","k":"table","len":8,"c":true},{"a":4305,"n":"gfx_hook_top","k":"table","len":16,"c":true},{"a":4321,"n":"gfx_hook_mid","k":"table","len":16,"c":true},{"a":4337,"n":"gfx_hook_bottom","k":"table","len":24,"c":true},{"a":4361,"n":"gfx_key_top","k":"table","len":8,"c":true},{"a":4369,"n":"gfx_key_bottom","k":"table","len":8,"c":true},{"a":4377,"n":"gfx_shelf","k":"table","len":24,"c":true},{"a":4401,"n":"pad_1131","k":"table","len":96,"c":true},{"a":4497,"n":"draw_pic_mc_sprite1","k":"routine","len":17,"c":true},{"a":4514,"n":"pad_11a2","k":"table","len":94,"c":true},{"a":4608,"n":"hat_x_past_255","k":"routine","len":8,"c":true},{"a":4616,"n":"hat_y_cmp_60","k":"routine","len":6,"c":true},{"a":4622,"n":"add_10000_points","k":"routine","len":11,"c":true},{"a":4624,"n":"b_1210","k":"branch","len":1,"c":false},{"a":4633,"n":"add_20000_points","k":"routine","len":11,"c":true},{"a":4635,"n":"b_121B","k":"branch","len":1,"c":false},{"a":4644,"n":"add_25000_points","k":"routine","len":11,"c":true},{"a":4646,"n":"b_1226","k":"branch","len":1,"c":false},{"a":4655,"n":"add_50000_points","k":"routine","len":11,"c":true},{"a":4657,"n":"b_1231","k":"branch","len":1,"c":false},{"a":4666,"n":"add_75000_points","k":"routine","len":22,"c":true},{"a":4668,"n":"b_123C","k":"branch","len":1,"c":false},{"a":4679,"n":"b_1247","k":"branch","len":1,"c":false},{"a":4688,"n":"start_invulnerable","k":"routine","len":17,"c":true},{"a":4709,"n":"irq_invulnerable_copy","k":"routine","len":28,"c":true},{"a":4735,"n":"b_127F","k":"branch","len":1,"c":false},{"a":4737,"n":"f_1281","k":"routine","len":21,"c":true},{"a":4755,"n":"b_1293","k":"branch","len":1,"c":false},{"a":4758,"n":"pad_1296","k":"table","len":30,"c":true},{"a":4788,"n":"gfx_unref_12b4","k":"table","len":189,"c":true},{"a":4977,"n":"object_flag_1371","k":"variable","len":1,"c":true},{"a":4978,"n":"object_flag_1372","k":"variable","len":1,"c":true},{"a":4979,"n":"object_flag_1373","k":"variable","len":1,"c":true},{"a":4980,"n":"object_flag_1374","k":"variable","len":1,"c":true},{"a":4981,"n":"object_flag_1375","k":"variable","len":1,"c":true},{"a":4982,"n":"object_flag_1376","k":"variable","len":1,"c":true},{"a":4983,"n":"object_flag_1377","k":"variable","len":1,"c":true},{"a":4984,"n":"object_flag_1378","k":"variable","len":1,"c":true},{"a":4985,"n":"object_flag_1379","k":"variable","len":1,"c":true},{"a":4986,"n":"object_flag_137a","k":"variable","len":1,"c":true},{"a":4987,"n":"object_flag_137b","k":"variable","len":1,"c":true},{"a":4988,"n":"object_flag_137c","k":"variable","len":1,"c":true},{"a":4989,"n":"object_flag_137d","k":"table","len":3,"c":true},{"a":4992,"n":"event_flag_1380","k":"variable","len":1,"c":true},{"a":4993,"n":"event_flag_1381","k":"variable","len":1,"c":true},{"a":4994,"n":"event_flag_1382","k":"variable","len":1,"c":true},{"a":4995,"n":"event_flag_1383","k":"variable","len":1,"c":true},{"a":4996,"n":"event_flag_1384","k":"variable","len":1,"c":true},{"a":4997,"n":"event_flag_1385","k":"variable","len":1,"c":true},{"a":4998,"n":"event_flag_1386","k":"variable","len":1,"c":true},{"a":4999,"n":"event_flag_1387","k":"variable","len":1,"c":true},{"a":5000,"n":"event_flag_1388","k":"variable","len":1,"c":true},{"a":5001,"n":"event_flag_1389","k":"table","len":40,"c":true},{"a":5041,"n":"gfx_unref_13b1","k":"table","len":64,"c":true},{"a":5105,"n":"gfx_post_left","k":"table","len":8,"c":true},{"a":5113,"n":"gfx_post_right","k":"table","len":8,"c":true},{"a":5121,"n":"pad_1401","k":"table","len":72,"c":true},{"a":5193,"n":"gfx_life_marks","k":"table","len":16,"c":true},{"a":5209,"n":"bytes_unref_1459","k":"table","len":32,"c":true},{"a":5241,"n":"gfx_score_top","k":"table","len":40,"c":true},{"a":5281,"n":"gfx_score_bottom","k":"table","len":40,"c":true},{"a":5321,"n":"gfx_room_top","k":"table","len":40,"c":true},{"a":5361,"n":"gfx_room_bottom","k":"table","len":32,"c":true},{"a":5393,"n":"gfx_stage_top","k":"table","len":40,"c":true},{"a":5433,"n":"gfx_stage_bottom","k":"table","len":47,"c":true},{"a":5480,"n":"gfx_score_zeros_top","k":"table","len":48,"c":true},{"a":5528,"n":"gfx_score_zeros_bottom","k":"table","len":48,"c":true},{"a":5576,"n":"gfx_unref_15c8","k":"table","len":56,"c":true},{"a":5632,"n":"digit_zero_top","k":"table","len":8,"c":true},{"a":5640,"n":"digit_zero_bottom","k":"table","len":8,"c":true},{"a":5648,"n":"digit_one_top","k":"table","len":8,"c":true},{"a":5656,"n":"digit_one_bottom","k":"table","len":8,"c":true},{"a":5664,"n":"digit_two_top","k":"table","len":8,"c":true},{"a":5672,"n":"digit_two_bottom","k":"table","len":8,"c":true},{"a":5680,"n":"digit_three_top","k":"table","len":8,"c":true},{"a":5688,"n":"digit_three_bottom","k":"table","len":8,"c":true},{"a":5696,"n":"digit_four_top","k":"table","len":8,"c":true},{"a":5704,"n":"digit_four_bottom","k":"table","len":8,"c":true},{"a":5712,"n":"digit_five_top","k":"table","len":8,"c":true},{"a":5720,"n":"digit_five_bottom","k":"table","len":8,"c":true},{"a":5728,"n":"digit_six_top","k":"table","len":8,"c":true},{"a":5736,"n":"digit_six_bottom","k":"table","len":8,"c":true},{"a":5744,"n":"digit_seven_top","k":"table","len":8,"c":true},{"a":5752,"n":"digit_seven_bottom","k":"table","len":8,"c":true},{"a":5760,"n":"digit_eight_top","k":"table","len":8,"c":true},{"a":5768,"n":"digit_eight_bottom","k":"table","len":8,"c":true},{"a":5776,"n":"digit_nine_top","k":"table","len":8,"c":true},{"a":5784,"n":"digit_nine_bottom","k":"table","len":8,"c":true},{"a":5792,"n":"title_after_blank","k":"routine","len":3,"c":true},{"a":5795,"n":"title_screen","k":"routine","len":79,"c":true},{"a":5815,"n":"b_16B7","k":"branch","len":1,"c":false},{"a":5817,"n":"b_16B9","k":"branch","len":1,"c":false},{"a":5860,"n":"b_16E4","k":"branch","len":1,"c":false},{"a":5874,"n":"pad_16f2","k":"table","len":14,"c":true},{"a":5888,"n":"lose_life_lower_marks","k":"routine","len":65,"c":true},{"a":5914,"n":"b_171A","k":"branch","len":1,"c":false},{"a":5940,"n":"b_1734","k":"branch","len":1,"c":false},{"a":5956,"n":"clear_screen_ram","k":"routine","len":20,"c":true},{"a":5958,"n":"b_1746","k":"branch","len":1,"c":false},{"a":5976,"n":"pad_1758","k":"table","len":24,"c":true},{"a":6000,"n":"wait_fire","k":"routine","len":25,"c":true},{"a":6032,"n":"delay_f1_debounce","k":"routine","len":13,"c":true},{"a":6034,"n":"b_1792","k":"branch","len":1,"c":false},{"a":6036,"n":"b_1794","k":"branch","len":1,"c":false},{"a":6045,"n":"pad_179d","k":"table","len":35,"c":true},{"a":6080,"n":"stand_then_room_loop","k":"routine","len":23,"c":true},{"a":6095,"n":"b_17CF","k":"branch","len":1,"c":false},{"a":6103,"n":"pad_17d7","k":"table","len":8,"c":true},{"a":6111,"n":"room1_setup","k":"routine","len":213,"c":true},{"a":6178,"n":"b_1822","k":"branch","len":1,"c":false},{"a":6194,"n":"b_1832","k":"branch","len":1,"c":false},{"a":6210,"n":"b_1842","k":"branch","len":1,"c":false},{"a":6252,"n":"b_186C","k":"branch","len":1,"c":false},{"a":6318,"n":"b_18AE","k":"branch","len":1,"c":false},{"a":6320,"n":"b_18B0","k":"branch","len":1,"c":false},{"a":6324,"n":"operand_18b4_lo","k":"routine","len":1,"c":true},{"a":6325,"n":"operand_18b5_hi","k":"routine","len":104,"c":true},{"a":6346,"n":"j_18CA","k":"branch","len":1,"c":false},{"a":6353,"n":"b_18D1","k":"branch","len":1,"c":false},{"a":6359,"n":"j_18D7","k":"branch","len":1,"c":false},{"a":6371,"n":"b_18E3","k":"branch","len":1,"c":false},{"a":6429,"n":"operand_191d","k":"routine","len":1,"c":true},{"a":6430,"n":"operand_191e","k":"routine","len":156,"c":true},{"a":6580,"n":"b_19B4","k":"branch","len":1,"c":false},{"a":6582,"n":"b_19B6","k":"branch","len":1,"c":false},{"a":6586,"n":"operand_19ba_lo","k":"routine","len":1,"c":true},{"a":6587,"n":"operand_19bb_hi","k":"routine","len":52,"c":true},{"a":6608,"n":"j_19D0","k":"branch","len":1,"c":false},{"a":6615,"n":"b_19D7","k":"branch","len":1,"c":false},{"a":6621,"n":"j_19DD","k":"branch","len":1,"c":false},{"a":6633,"n":"b_19E9","k":"branch","len":1,"c":false},{"a":6635,"n":"b_19EB","k":"branch","len":1,"c":false},{"a":6639,"n":"operand_19ef_lo","k":"routine","len":1,"c":true},{"a":6640,"n":"operand_19f0_hi","k":"routine","len":49,"c":true},{"a":6661,"n":"j_1A05","k":"branch","len":1,"c":false},{"a":6668,"n":"b_1A0C","k":"branch","len":1,"c":false},{"a":6674,"n":"j_1A12","k":"branch","len":1,"c":false},{"a":6689,"n":"draw_mr_hat_logo","k":"routine","len":8,"c":true},{"a":6698,"n":"room1_setup_status","k":"routine","len":372,"c":true},{"a":6738,"n":"b_1A52","k":"branch","len":1,"c":false},{"a":6754,"n":"b_1A62","k":"branch","len":1,"c":false},{"a":6767,"n":"b_1A6F","k":"branch","len":1,"c":false},{"a":6780,"n":"b_1A7C","k":"branch","len":1,"c":false},{"a":6793,"n":"b_1A89","k":"branch","len":1,"c":false},{"a":6806,"n":"b_1A96","k":"branch","len":1,"c":false},{"a":6819,"n":"b_1AA3","k":"branch","len":1,"c":false},{"a":6832,"n":"b_1AB0","k":"branch","len":1,"c":false},{"a":6845,"n":"b_1ABD","k":"branch","len":1,"c":false},{"a":6858,"n":"b_1ACA","k":"branch","len":1,"c":false},{"a":6871,"n":"b_1AD7","k":"branch","len":1,"c":false},{"a":6884,"n":"b_1AE4","k":"branch","len":1,"c":false},{"a":6900,"n":"b_1AF4","k":"branch","len":1,"c":false},{"a":7070,"n":"operand_1b9e","k":"routine","len":97,"c":true},{"a":7168,"n":"room1_irq","k":"routine","len":3,"c":true},{"a":7171,"n":"room1_move_guardians","k":"routine","len":15,"c":true},{"a":7186,"n":"sprite3_step_opcode","k":"routine","len":126,"c":true},{"a":7204,"n":"b_1C24","k":"branch","len":1,"c":false},{"a":7219,"n":"b_1C33","k":"branch","len":1,"c":false},{"a":7234,"n":"b_1C42","k":"branch","len":1,"c":false},{"a":7249,"n":"b_1C51","k":"branch","len":1,"c":false},{"a":7264,"n":"b_1C60","k":"branch","len":1,"c":false},{"a":7279,"n":"b_1C6F","k":"branch","len":1,"c":false},{"a":7297,"n":"b_1C81","k":"branch","len":1,"c":false},{"a":7312,"n":"irq_tick_then_sprite_frames","k":"routine","len":5,"c":true},{"a":7317,"n":"dead_jmp_7000","k":"routine","len":7,"c":true},{"a":7324,"n":"sprite3_turn_left_shape","k":"routine","len":8,"c":true},{"a":7332,"n":"sprite3_turn_right_shape","k":"routine","len":8,"c":true},{"a":7344,"n":"silence_voice1","k":"routine","len":18,"c":true},{"a":7346,"n":"b_1CB2","k":"branch","len":1,"c":false},{"a":7362,"n":"sound_stub_1cc2","k":"routine","len":1,"c":true},{"a":7378,"n":"sound_stub_1cd2","k":"routine","len":1,"c":true},{"a":7379,"n":"sound_dead_1cd3","k":"routine","len":15,"c":true},{"a":7394,"n":"sound_stub_1ce2","k":"routine","len":1,"c":true},{"a":7410,"n":"silence_voice2","k":"routine","len":18,"c":true},{"a":7412,"n":"b_1CF4","k":"branch","len":1,"c":false},{"a":7428,"n":"footstep_click","k":"routine","len":28,"c":true},{"a":7455,"n":"r_1D1F","k":"branch","len":1,"c":false},{"a":7456,"n":"dead_sound_1d20","k":"routine","len":19,"c":true},{"a":7475,"n":"room1_floor_dispatch","k":"routine","len":23,"c":true},{"a":7486,"n":"b_1D3E","k":"branch","len":1,"c":false},{"a":7494,"n":"b_1D46","k":"branch","len":1,"c":false},{"a":7498,"n":"dead_rts_1d4a","k":"routine","len":6,"c":true},{"a":7504,"n":"room1_kill_hat","k":"routine","len":3,"c":true},{"a":7507,"n":"old_kill_hat","k":"routine","len":26,"c":true},{"a":7533,"n":"respawn_at_entry","k":"routine","len":25,"c":true},{"a":7549,"n":"b_1D7D","k":"branch","len":1,"c":false},{"a":7558,"n":"lose_life_upper_marks","k":"routine","len":23,"c":true},{"a":7581,"n":"restore_hat_after_death","k":"routine","len":64,"c":true},{"a":7599,"n":"b_1DAF","k":"branch","len":1,"c":false},{"a":7605,"n":"b_1DB5","k":"branch","len":1,"c":false},{"a":7632,"n":"b_1DD0","k":"branch","len":1,"c":false},{"a":7645,"n":"show_death_frame","k":"routine","len":25,"c":true},{"a":7653,"n":"b_1DE5","k":"branch","len":1,"c":false},{"a":7671,"n":"delay_1df7","k":"routine","len":13,"c":true},{"a":7673,"n":"b_1DF9","k":"branch","len":1,"c":false},{"a":7675,"n":"b_1DFB","k":"branch","len":1,"c":false},{"a":7685,"n":"death_saved_frame","k":"variable","len":1,"c":true},{"a":7686,"n":"range_lo_or_column","k":"variable","len":1,"c":true},{"a":7687,"n":"range_hi_or_row","k":"variable","len":1,"c":true},{"a":7688,"n":"var_1e08","k":"table","len":10,"c":true},{"a":7698,"n":"table_1e12","k":"table","len":14,"c":true},{"a":7712,"n":"room1_bottom_floor","k":"routine","len":186,"c":true},{"a":7723,"n":"b_1E2B","k":"branch","len":1,"c":false},{"a":7734,"n":"b_1E36","k":"branch","len":1,"c":false},{"a":7736,"n":"b_1E38","k":"branch","len":1,"c":false},{"a":7745,"n":"b_1E41","k":"branch","len":1,"c":false},{"a":7759,"n":"b_1E4F","k":"branch","len":1,"c":false},{"a":7768,"n":"b_1E58","k":"branch","len":1,"c":false},{"a":7812,"n":"b_1E84","k":"branch","len":1,"c":false},{"a":7831,"n":"b_1E97","k":"branch","len":1,"c":false},{"a":7866,"n":"b_1EBA","k":"branch","len":1,"c":false},{"a":7870,"n":"b_1EBE","k":"branch","len":1,"c":false},{"a":7894,"n":"b_1ED6","k":"branch","len":1,"c":false},{"a":7898,"n":"room1_middle_floor","k":"routine","len":92,"c":true},{"a":7908,"n":"b_1EE4","k":"branch","len":1,"c":false},{"a":7927,"n":"b_1EF7","k":"branch","len":1,"c":false},{"a":7961,"n":"b_1F19","k":"branch","len":1,"c":false},{"a":7968,"n":"b_1F20","k":"branch","len":1,"c":false},{"a":7982,"n":"b_1F2E","k":"branch","len":1,"c":false},{"a":7990,"n":"room1_middle_edges","k":"routine","len":55,"c":true},{"a":8004,"n":"b_1F44","k":"branch","len":1,"c":false},{"a":8006,"n":"b_1F46","k":"branch","len":1,"c":false},{"a":8015,"n":"b_1F4F","k":"branch","len":1,"c":false},{"a":8029,"n":"b_1F5D","k":"branch","len":1,"c":false},{"a":8037,"n":"b_1F65","k":"branch","len":1,"c":false},{"a":8048,"n":"room1_guardian_touch","k":"routine","len":44,"c":true},{"a":8059,"n":"b_1F7B","k":"branch","len":1,"c":false},{"a":8067,"n":"b_1F83","k":"branch","len":1,"c":false},{"a":8075,"n":"b_1F8B","k":"branch","len":1,"c":false},{"a":8083,"n":"b_1F93","k":"branch","len":1,"c":false},{"a":8091,"n":"r_1F9B","k":"branch","len":1,"c":false},{"a":8092,"n":"clear_dying_sprites_off","k":"table","len":13,"c":true},{"a":8105,"n":"lift_start_check","k":"routine","len":18,"c":true},{"a":8123,"n":"lift_once_check","k":"routine","len":27,"c":true},{"a":8150,"n":"rts_1fd6","k":"routine","len":1,"c":true},{"a":8151,"n":"after_death_continue","k":"routine","len":12,"c":true},{"a":8159,"n":"b_1FDF","k":"branch","len":1,"c":false},{"a":8163,"n":"rts_1fe3","k":"variable","len":1,"c":true},{"a":8164,"n":"sound_stub_1fe4","k":"routine","len":1,"c":true},{"a":8165,"n":"junk_1fe5","k":"table","len":11,"c":true},{"a":8176,"n":"dead_lift_check_1ff0","k":"routine","len":16,"c":true},{"a":16128,"n":"bitmap_status_tail","k":"table","len":8,"c":true},{"a":16136,"n":"bitmap_life_marks_low","k":"table","len":16,"c":true},{"a":16152,"n":"bitmap_status_clear","k":"table","len":40,"c":true},{"a":16192,"n":"draw_count","k":"variable","len":1,"c":true},{"a":16193,"n":"bg_screen_byte","k":"variable","len":1,"c":true},{"a":16194,"n":"bg_colour_byte","k":"variable","len":1,"c":true},{"a":16195,"n":"bg_fill_ptr_lo","k":"variable","len":1,"c":true},{"a":16196,"n":"bg_fill_ptr_hi","k":"variable","len":1,"c":true},{"a":16197,"n":"saved_src_lo","k":"variable","len":1,"c":true},{"a":16198,"n":"saved_src_hi","k":"variable","len":1,"c":true},{"a":16199,"n":"rect_column","k":"variable","len":1,"c":true},{"a":16200,"n":"rect_row","k":"variable","len":1,"c":true},{"a":16201,"n":"rect_column_saved","k":"variable","len":1,"c":true},{"a":16202,"n":"rect_row_saved","k":"variable","len":1,"c":true},{"a":16203,"n":"rect_count","k":"variable","len":1,"c":true},{"a":16224,"n":"gfx_brick_pattern","k":"table","len":32,"c":true},{"a":16256,"n":"gfx_mr_hat_logo","k":"table","len":64,"c":true},{"a":16320,"n":"gfx_mr_hat_logo_low","k":"table","len":64,"c":true},{"a":16384,"n":"room1_lift_ride","k":"routine","len":11,"c":true},{"a":16395,"n":"lift_sta_07fc_operand","k":"routine","len":124,"c":true},{"a":16414,"n":"b_401E","k":"branch","len":1,"c":false},{"a":16425,"n":"lift_move_down","k":"branch","len":1,"c":false},{"a":16430,"n":"b_402E","k":"branch","len":1,"c":false},{"a":16438,"n":"b_4036","k":"branch","len":1,"c":false},{"a":16453,"n":"b_4045","k":"branch","len":1,"c":false},{"a":16463,"n":"b_404F","k":"branch","len":1,"c":false},{"a":16470,"n":"j_4056","k":"branch","len":1,"c":false},{"a":16477,"n":"b_405D","k":"branch","len":1,"c":false},{"a":16481,"n":"lift_move_up","k":"branch","len":1,"c":false},{"a":16486,"n":"b_4066","k":"branch","len":1,"c":false},{"a":16494,"n":"b_406E","k":"branch","len":1,"c":false},{"a":16509,"n":"b_407D","k":"branch","len":1,"c":false},{"a":16519,"n":"lift_dead_jmp","k":"routine","len":27,"c":true},{"a":16522,"n":"b_408A","k":"branch","len":1,"c":false},{"a":16536,"n":"b_4098","k":"branch","len":1,"c":false},{"a":16545,"n":"r_40A1","k":"branch","len":1,"c":false},{"a":16546,"n":"lift_step_inc_d021","k":"routine","len":4,"c":true},{"a":16550,"n":"dead_operand_40a6","k":"variable","len":1,"c":true},{"a":16551,"n":"dead_sound_40a7","k":"routine","len":14,"c":true},{"a":16565,"n":"b_40B5","k":"routine","len":3,"c":true},{"a":16568,"n":"unused_40b8","k":"table","len":3,"c":true},{"a":16571,"n":"scratch_40bb","k":"table","len":5,"c":true},{"a":16576,"n":"room1_top_floor","k":"routine","len":85,"c":true},{"a":16586,"n":"b_40CA","k":"branch","len":1,"c":false},{"a":16605,"n":"b_40DD","k":"branch","len":1,"c":false},{"a":16615,"n":"b_40E7","k":"branch","len":1,"c":false},{"a":16633,"n":"b_40F9","k":"branch","len":1,"c":false},{"a":16654,"n":"b_410E","k":"branch","len":1,"c":false},{"a":16661,"n":"room1_top_floor_stray_rts","k":"variable","len":1,"c":true},{"a":16662,"n":"room1_top_floor_right","k":"routine","len":35,"c":true},{"a":16676,"n":"b_4124","k":"branch","len":1,"c":false},{"a":16684,"n":"j_412C","k":"branch","len":1,"c":false},{"a":16697,"n":"b_4139","k":"routine","len":108,"c":true},{"a":16706,"n":"b_4142","k":"branch","len":1,"c":false},{"a":16716,"n":"b_414C","k":"branch","len":1,"c":false},{"a":16747,"n":"r_416B","k":"branch","len":1,"c":false},{"a":16748,"n":"b_416C","k":"branch","len":1,"c":false},{"a":16754,"n":"b_4172","k":"branch","len":1,"c":false},{"a":16765,"n":"b_417D","k":"branch","len":1,"c":false},{"a":16767,"n":"b_417F","k":"branch","len":1,"c":false},{"a":16775,"n":"b_4187","k":"branch","len":1,"c":false},{"a":16789,"n":"b_4195","k":"branch","len":1,"c":false},{"a":16797,"n":"b_419D","k":"branch","len":1,"c":false},{"a":16805,"n":"unused_41a5","k":"table","len":11,"c":true},{"a":16816,"n":"jump_step_sound","k":"routine","len":27,"c":true},{"a":16832,"n":"b_41C0","k":"branch","len":1,"c":false},{"a":16843,"n":"unused_41cb","k":"table","len":5,"c":true},{"a":16848,"n":"dead_delay_then_score","k":"routine","len":10,"c":true},{"a":16850,"n":"b_41D2","k":"branch","len":1,"c":false},{"a":16852,"n":"b_41D4","k":"branch","len":1,"c":false},{"a":16858,"n":"score_add_1000","k":"routine","len":3,"c":true},{"a":16860,"n":"b_41DC","k":"branch","len":1,"c":false},{"a":16861,"n":"score_thousands_glyph_top","k":"routine","len":6,"c":true},{"a":16867,"n":"score_thousands_glyph_bottom","k":"routine","len":50,"c":true},{"a":16902,"n":"b_4206","k":"branch","len":1,"c":false},{"a":16904,"n":"b_4208","k":"branch","len":1,"c":false},{"a":16917,"n":"score_tenthousands_glyph_top","k":"routine","len":6,"c":true},{"a":16923,"n":"score_tenthousands_glyph_bottom","k":"routine","len":64,"c":true},{"a":16972,"n":"b_424C","k":"branch","len":1,"c":false},{"a":16974,"n":"b_424E","k":"branch","len":1,"c":false},{"a":16987,"n":"score_hundredthousands_glyph_top","k":"routine","len":6,"c":true},{"a":16993,"n":"score_hundredthousands_glyph_bottom","k":"routine","len":41,"c":true},{"a":17034,"n":"unknown_data_428a","k":"table","len":86,"c":true},{"a":17120,"n":"delay_80x256","k":"routine","len":13,"c":true},{"a":17122,"n":"b_42E2","k":"branch","len":1,"c":false},{"a":17124,"n":"b_42E4","k":"branch","len":1,"c":false},{"a":17133,"n":"unused_42ed","k":"variable","len":2,"c":true},{"a":17135,"n":"room1_main_loop","k":"routine","len":162,"c":true},{"a":17144,"n":"b_42F8","k":"branch","len":1,"c":false},{"a":17188,"n":"b_4324","k":"branch","len":1,"c":false},{"a":17199,"n":"b_432F","k":"branch","len":1,"c":false},{"a":17201,"n":"b_4331","k":"branch","len":1,"c":false},{"a":17209,"n":"b_4339","k":"branch","len":1,"c":false},{"a":17217,"n":"b_4341","k":"branch","len":1,"c":false},{"a":17236,"n":"b_4354","k":"branch","len":1,"c":false},{"a":17272,"n":"b_4378","k":"branch","len":1,"c":false},{"a":17283,"n":"b_4383","k":"branch","len":1,"c":false},{"a":17285,"n":"b_4385","k":"branch","len":1,"c":false},{"a":17293,"n":"b_438D","k":"branch","len":1,"c":false},{"a":17297,"n":"room1_jump","k":"routine","len":190,"c":true},{"a":17312,"n":"b_43A0","k":"branch","len":1,"c":false},{"a":17344,"n":"b_43C0","k":"branch","len":1,"c":false},{"a":17370,"n":"b_43DA","k":"branch","len":1,"c":false},{"a":17394,"n":"b_43F2","k":"branch","len":1,"c":false},{"a":17397,"n":"b_43F5","k":"branch","len":1,"c":false},{"a":17402,"n":"b_43FA","k":"branch","len":1,"c":false},{"a":17437,"n":"b_441D","k":"branch","len":1,"c":false},{"a":17463,"n":"b_4437","k":"branch","len":1,"c":false},{"a":17487,"n":"room1_rejump_check","k":"routine","len":26,"c":true},{"a":17500,"n":"b_445C","k":"branch","len":1,"c":false},{"a":17510,"n":"b_4466","k":"branch","len":1,"c":false},{"a":17513,"n":"room1_gameover_check","k":"routine","len":12,"c":true},{"a":17522,"n":"b_4472","k":"branch","len":1,"c":false},{"a":17525,"n":"game_over","k":"routine","len":8,"c":true},{"a":17533,"n":"game_over_from_respawn","k":"routine","len":12,"c":true},{"a":17545,"n":"unused_4489","k":"variable","len":1,"c":true},{"a":17546,"n":"voice1_off","k":"routine","len":4,"c":true},{"a":17550,"n":"dead_operand_448e","k":"variable","len":1,"c":true},{"a":17551,"n":"dead_sound_448f","k":"routine","len":14,"c":true},{"a":17565,"n":"unused_449d","k":"variable","len":1,"c":true},{"a":17566,"n":"room1_timer_and_exit","k":"routine","len":27,"c":true},{"a":17581,"n":"b_44AD","k":"branch","len":1,"c":false},{"a":17590,"n":"b_44B6","k":"branch","len":1,"c":false},{"a":17593,"n":"room1_exit_by_f7","k":"routine","len":6,"c":true},{"a":17599,"n":"unused_44bf","k":"variable","len":1,"c":true},{"a":17600,"n":"room1_door_exit","k":"routine","len":17,"c":true},{"a":17617,"n":"unused_44d1","k":"table","len":4,"c":true},{"a":17621,"n":"set_d022_2a","k":"routine","len":9,"c":true},{"a":17630,"n":"unused_44de","k":"variable","len":2,"c":true},{"a":17632,"n":"timer_oneshot_44e0","k":"routine","len":41,"c":true},{"a":17672,"n":"r_4508","k":"branch","len":1,"c":false},{"a":17673,"n":"unused_4509","k":"variable","len":1,"c":true},{"a":17674,"n":"rts_stub_450a","k":"routine","len":1,"c":true},{"a":17675,"n":"unused_450b","k":"variable","len":1,"c":true},{"a":17676,"n":"dead_sid_clear_450c","k":"routine","len":11,"c":true},{"a":17687,"n":"voice1_off_b","k":"routine","len":7,"c":true},{"a":17694,"n":"rts_stub_451e","k":"routine","len":1,"c":true},{"a":17695,"n":"disabled_reveal_451f","k":"routine","len":8,"c":true},{"a":17700,"n":"b_4524","k":"branch","len":1,"c":false},{"a":17702,"n":"b_4526","k":"branch","len":1,"c":false},{"a":17703,"n":"reveal_colour_operand","k":"routine","len":173,"c":true},{"a":17740,"n":"b_454C","k":"branch","len":1,"c":false},{"a":17752,"n":"b_4558","k":"branch","len":1,"c":false},{"a":17781,"n":"b_4575","k":"branch","len":1,"c":false},{"a":17794,"n":"b_4582","k":"branch","len":1,"c":false},{"a":17876,"n":"unused_45d4","k":"variable","len":1,"c":true},{"a":17877,"n":"sprites_off_quiet_irq","k":"routine","len":4,"c":true},{"a":17881,"n":"unused_45d9","k":"table","len":28,"c":true},{"a":17909,"n":"room1_stand_and_loop","k":"routine","len":23,"c":true},{"a":17924,"n":"b_4604","k":"branch","len":1,"c":false},{"a":17932,"n":"unused_460c","k":"table","len":4,"c":true},{"a":17936,"n":"mrhat_cross_x256","k":"routine","len":35,"c":true},{"a":17957,"n":"b_4625","k":"branch","len":1,"c":false},{"a":17971,"n":"unused_4633","k":"table","len":6,"c":true},{"a":17977,"n":"room3_draw_picture","k":"routine","len":9,"c":true},{"a":17986,"n":"room3_setup","k":"routine","len":224,"c":true},{"a":17995,"n":"b_464B","k":"branch","len":1,"c":false},{"a":18015,"n":"b_465F","k":"branch","len":1,"c":false},{"a":18017,"n":"b_4661","k":"branch","len":1,"c":false},{"a":18037,"n":"j_4675","k":"branch","len":1,"c":false},{"a":18045,"n":"b_467D","k":"branch","len":1,"c":false},{"a":18050,"n":"j_4682","k":"branch","len":1,"c":false},{"a":18060,"n":"b_468C","k":"branch","len":1,"c":false},{"a":18062,"n":"b_468E","k":"branch","len":1,"c":false},{"a":18080,"n":"j_46A0","k":"branch","len":1,"c":false},{"a":18088,"n":"b_46A8","k":"branch","len":1,"c":false},{"a":18093,"n":"j_46AD","k":"branch","len":1,"c":false},{"a":18103,"n":"b_46B7","k":"branch","len":1,"c":false},{"a":18105,"n":"b_46B9","k":"branch","len":1,"c":false},{"a":18125,"n":"j_46CD","k":"branch","len":1,"c":false},{"a":18133,"n":"b_46D5","k":"branch","len":1,"c":false},{"a":18138,"n":"j_46DA","k":"branch","len":1,"c":false},{"a":18140,"n":"b_46DC","k":"branch","len":1,"c":false},{"a":18152,"n":"b_46E8","k":"branch","len":1,"c":false},{"a":18175,"n":"b_46FF","k":"branch","len":1,"c":false},{"a":18177,"n":"b_4701","k":"branch","len":1,"c":false},{"a":18197,"n":"j_4715","k":"branch","len":1,"c":false},{"a":18205,"n":"b_471D","k":"branch","len":1,"c":false},{"a":18210,"n":"room1_exit_to_room3","k":"routine","len":18,"c":true},{"a":18212,"n":"b_4724","k":"branch","len":1,"c":false},{"a":18228,"n":"unused_4734","k":"variable","len":1,"c":true},{"a":18229,"n":"room3_setup_2","k":"routine","len":205,"c":true},{"a":18231,"n":"b_4737","k":"branch","len":1,"c":false},{"a":18338,"n":"j_47A2","k":"branch","len":1,"c":false},{"a":18396,"n":"b_47DC","k":"branch","len":1,"c":false},{"a":18398,"n":"b_47DE","k":"branch","len":1,"c":false},{"a":18421,"n":"j_47F5","k":"branch","len":1,"c":false},{"a":18429,"n":"b_47FD","k":"branch","len":1,"c":false},{"a":18434,"n":"gfx_ladder_row","k":"table","len":24,"c":true},{"a":18458,"n":"room3_setup_3","k":"routine","len":32,"c":true},{"a":18470,"n":"b_4826","k":"branch","len":1,"c":false},{"a":18490,"n":"room3_exit_dispatch","k":"routine","len":18,"c":true},{"a":18500,"n":"b_4844","k":"branch","len":1,"c":false},{"a":18507,"n":"r_484B","k":"branch","len":1,"c":false},{"a":18508,"n":"unused_484c","k":"variable","len":2,"c":true},{"a":18510,"n":"room3_setup_4","k":"routine","len":37,"c":true},{"a":18547,"n":"dead_4873","k":"routine","len":9,"c":true},{"a":18556,"n":"room3_setup_5","k":"routine","len":50,"c":true},{"a":18578,"n":"b_4892","k":"branch","len":1,"c":false},{"a":18606,"n":"unused_48ae","k":"variable","len":2,"c":true},{"a":18608,"n":"room3_irq","k":"routine","len":62,"c":true},{"a":18635,"n":"b_48CB","k":"branch","len":1,"c":false},{"a":18647,"n":"b_48D7","k":"branch","len":1,"c":false},{"a":18667,"n":"b_48EB","k":"branch","len":1,"c":false},{"a":18670,"n":"unused_48ee","k":"variable","len":2,"c":true},{"a":18672,"n":"room3_climb_up","k":"routine","len":31,"c":true},{"a":18687,"n":"b_48FF","k":"branch","len":1,"c":false},{"a":18698,"n":"b_490A","k":"branch","len":1,"c":false},{"a":18703,"n":"unused_490f","k":"variable","len":1,"c":true},{"a":18704,"n":"room3_main_loop","k":"routine","len":13,"c":true},{"a":18717,"n":"room3_loop","k":"routine","len":390,"c":true},{"a":18756,"n":"b_4944","k":"branch","len":1,"c":false},{"a":18771,"n":"b_4953","k":"branch","len":1,"c":false},{"a":18807,"n":"b_4977","k":"branch","len":1,"c":false},{"a":18822,"n":"b_4986","k":"branch","len":1,"c":false},{"a":18833,"n":"b_4991","k":"branch","len":1,"c":false},{"a":18852,"n":"b_49A4","k":"branch","len":1,"c":false},{"a":18859,"n":"j_49AB","k":"branch","len":1,"c":false},{"a":18874,"n":"b_49BA","k":"branch","len":1,"c":false},{"a":18906,"n":"b_49DA","k":"branch","len":1,"c":false},{"a":18932,"n":"b_49F4","k":"branch","len":1,"c":false},{"a":18956,"n":"b_4A0C","k":"branch","len":1,"c":false},{"a":18959,"n":"b_4A0F","k":"branch","len":1,"c":false},{"a":18964,"n":"b_4A14","k":"branch","len":1,"c":false},{"a":18999,"n":"b_4A37","k":"branch","len":1,"c":false},{"a":19025,"n":"b_4A51","k":"branch","len":1,"c":false},{"a":19049,"n":"j_4A69","k":"branch","len":1,"c":false},{"a":19062,"n":"b_4A76","k":"branch","len":1,"c":false},{"a":19072,"n":"b_4A80","k":"branch","len":1,"c":false},{"a":19087,"n":"b_4A8F","k":"branch","len":1,"c":false},{"a":19092,"n":"j_4A94","k":"branch","len":1,"c":false},{"a":19101,"n":"b_4A9D","k":"branch","len":1,"c":false},{"a":19107,"n":"clear_died_flag","k":"routine","len":10,"c":true},{"a":19117,"n":"room3_step_checks","k":"routine","len":18,"c":true},{"a":19131,"n":"b_4ABB","k":"branch","len":1,"c":false},{"a":19135,"n":"unused_4abf","k":"variable","len":1,"c":true},{"a":19136,"n":"ladder_step_delay","k":"routine","len":9,"c":true},{"a":19138,"n":"b_4AC2","k":"branch","len":1,"c":false},{"a":19140,"n":"b_4AC4","k":"branch","len":1,"c":false},{"a":19145,"n":"ladder_delay_count","k":"routine","len":4,"c":true},{"a":19149,"n":"room_exit_code","k":"variable","len":1,"c":true},{"a":19150,"n":"guardian_touch_flag","k":"variable","len":1,"c":true},{"a":19151,"n":"unused_4acf","k":"variable","len":1,"c":true},{"a":19152,"n":"room3_top_floor","k":"routine","len":11,"c":true},{"a":19163,"n":"dead_4adb","k":"routine","len":31,"c":true},{"a":19171,"n":"b_4AE3","k":"branch","len":1,"c":false},{"a":19175,"n":"b_4AE7","k":"branch","len":1,"c":false},{"a":19179,"n":"b_4AEB","k":"branch","len":1,"c":false},{"a":19194,"n":"unused_4afa","k":"table","len":3,"c":true},{"a":19197,"n":"room3_climb_down","k":"routine","len":15,"c":true},{"a":19212,"n":"ladder_climb_with_collisions","k":"routine","len":19,"c":true},{"a":19226,"n":"b_4B1A","k":"branch","len":1,"c":false},{"a":19231,"n":"unused_4b1f","k":"variable","len":1,"c":true},{"a":19232,"n":"ladder_climb_step","k":"routine","len":107,"c":true},{"a":19268,"n":"b_4B44","k":"branch","len":1,"c":false},{"a":19284,"n":"b_4B54","k":"branch","len":1,"c":false},{"a":19320,"n":"b_4B78","k":"branch","len":1,"c":false},{"a":19335,"n":"b_4B87","k":"branch","len":1,"c":false},{"a":19339,"n":"unused_4b8b","k":"variable","len":2,"c":true},{"a":19341,"n":"room3_bottom_floor","k":"routine","len":26,"c":true},{"a":19357,"n":"b_4B9D","k":"branch","len":1,"c":false},{"a":19367,"n":"room3_exit_left_place","k":"routine","len":6,"c":true},{"a":19373,"n":"unused_4bad","k":"variable","len":2,"c":true},{"a":19375,"n":"room3_bottom_ladder_test","k":"routine","len":10,"c":true},{"a":19382,"n":"b_4BB6","k":"branch","len":1,"c":false},{"a":19385,"n":"unused_4bb9","k":"variable","len":1,"c":true},{"a":19386,"n":"b_4BBA","k":"routine","len":128,"c":true},{"a":19401,"n":"b_4BC9","k":"branch","len":1,"c":false},{"a":19435,"n":"b_4BEB","k":"branch","len":1,"c":false},{"a":19445,"n":"b_4BF5","k":"branch","len":1,"c":false},{"a":19459,"n":"b_4C03","k":"branch","len":1,"c":false},{"a":19489,"n":"r_4C21","k":"branch","len":1,"c":false},{"a":19490,"n":"b_4C22","k":"branch","len":1,"c":false},{"a":19514,"n":"unused_4c3a","k":"table","len":6,"c":true},{"a":19520,"n":"guardian_hit_check","k":"routine","len":18,"c":true},{"a":19530,"n":"b_4C4A","k":"branch","len":1,"c":false},{"a":19537,"n":"r_4C51","k":"branch","len":1,"c":false},{"a":19538,"n":"lose_life","k":"routine","len":33,"c":true},{"a":19571,"n":"lives_mark_remove","k":"routine","len":37,"c":true},{"a":19587,"n":"b_4C83","k":"branch","len":1,"c":false},{"a":19603,"n":"b_4C93","k":"branch","len":1,"c":false},{"a":19608,"n":"unused_4c98","k":"variable","len":2,"c":true},{"a":19610,"n":"room3_respawn_check","k":"routine","len":28,"c":true},{"a":19638,"n":"unused_4cb6","k":"variable","len":1,"c":true},{"a":19639,"n":"b_4CB7","k":"routine","len":14,"c":true},{"a":19653,"n":"unused_4cc5","k":"variable","len":2,"c":true},{"a":19655,"n":"room3_ladder_guardian_hit","k":"routine","len":46,"c":true},{"a":19666,"n":"b_4CD2","k":"branch","len":1,"c":false},{"a":19701,"n":"room3_place_mrhat","k":"routine","len":86,"c":true},{"a":19732,"n":"b_4D14","k":"branch","len":1,"c":false},{"a":19760,"n":"b_4D30","k":"branch","len":1,"c":false},{"a":19787,"n":"unused_4d4b","k":"table","len":5,"c":true},{"a":19792,"n":"room1_respawn_position","k":"routine","len":37,"c":true},{"a":19814,"n":"b_4D66","k":"branch","len":1,"c":false},{"a":19829,"n":"unused_4d75","k":"table","len":11,"c":true},{"a":19840,"n":"room2_setup","k":"routine","len":10,"c":true},{"a":19850,"n":"gfx_unused_4d8a","k":"table","len":22,"c":true},{"a":19872,"n":"show_room_digit_5","k":"routine","len":20,"c":true},{"a":19874,"n":"b_4DA2","k":"branch","len":1,"c":false},{"a":19892,"n":"unused_4db4","k":"table","len":4,"c":true},{"a":19896,"n":"room2_setup_2","k":"routine","len":87,"c":true},{"a":19983,"n":"room2_take_item","k":"routine","len":47,"c":true},{"a":19990,"n":"b_4E16","k":"branch","len":1,"c":false},{"a":20030,"n":"unused_4e3e","k":"table","len":48,"c":true},{"a":20078,"n":"room2_setup_3","k":"routine","len":51,"c":true},{"a":20088,"n":"b_4E78","k":"branch","len":1,"c":false},{"a":20090,"n":"b_4E7A","k":"branch","len":1,"c":false},{"a":20113,"n":"j_4E91","k":"branch","len":1,"c":false},{"a":20121,"n":"b_4E99","k":"branch","len":1,"c":false},{"a":20126,"n":"j_4E9E","k":"branch","len":1,"c":false},{"a":20128,"n":"b_4EA0","k":"branch","len":1,"c":false},{"a":20129,"n":"room2_cells_4f7_colour","k":"routine","len":105,"c":true},{"a":20169,"n":"b_4EC9","k":"branch","len":1,"c":false},{"a":20188,"n":"b_4EDC","k":"branch","len":1,"c":false},{"a":20234,"n":"room2_object_switches","k":"routine","len":1,"c":true},{"a":20235,"n":"room2_dummy_colour_4f0b","k":"routine","len":29,"c":true},{"a":20244,"n":"b_4F14","k":"branch","len":1,"c":false},{"a":20264,"n":"room2_patch_byte_4f28","k":"routine","len":70,"c":true},{"a":20333,"n":"b_4F6D","k":"branch","len":1,"c":false},{"a":20334,"n":"room2_colour_4f6e","k":"routine","len":16,"c":true},{"a":20350,"n":"room2_colour_4f7e","k":"routine","len":8,"c":true},{"a":20358,"n":"room2_dummy_colour_4f86","k":"routine","len":7,"c":true},{"a":20365,"n":"gfx_room2_row4","k":"table","len":24,"c":true},{"a":20389,"n":"gfx_room2_row5","k":"table","len":24,"c":true},{"a":20413,"n":"gfx_room2_unused_4fbd","k":"table","len":8,"c":true},{"a":20421,"n":"gfx_room2_row6","k":"table","len":8,"c":true},{"a":20429,"n":"room2_draw_shapes","k":"routine","len":46,"c":true},{"a":20431,"n":"b_4FCF","k":"branch","len":1,"c":false},{"a":20462,"n":"b_4FEE","k":"branch","len":1,"c":false},{"a":20475,"n":"gfx_room2_row18","k":"table","len":5,"c":true},{"a":20480,"n":"room2_cell_graphic_tail","k":"variable","len":1,"c":true},{"a":20481,"n":"f_5001","k":"table","len":10,"c":true},{"a":20491,"n":"room2_setup_finish","k":"routine","len":16,"c":true},{"a":20493,"n":"b_500D","k":"branch","len":1,"c":false},{"a":20507,"n":"walk_step_delay","k":"routine","len":13,"c":true},{"a":20509,"n":"b_501D","k":"branch","len":1,"c":false},{"a":20511,"n":"b_501F","k":"branch","len":1,"c":false},{"a":20520,"n":"hat_hit_by_sprite2_or_3","k":"routine","len":17,"c":true},{"a":20530,"n":"r_5032","k":"branch","len":1,"c":false},{"a":20531,"n":"b_5033","k":"branch","len":1,"c":false},{"a":20537,"n":"f_5039","k":"routine","len":2,"c":true},{"a":20539,"n":"d022_values_a","k":"table","len":8,"c":true},{"a":20547,"n":"d022_values_b","k":"table","len":7,"c":true},{"a":20554,"n":"set_d022_from_table","k":"routine","len":20,"c":true},{"a":20556,"n":"b_504C","k":"branch","len":1,"c":false},{"a":20574,"n":"bump_d022_twice","k":"routine","len":11,"c":true},{"a":20576,"n":"b_5060","k":"branch","len":1,"c":false},{"a":20585,"n":"clear_sprite0_position_unused","k":"routine","len":13,"c":true},{"a":20587,"n":"b_506B","k":"branch","len":1,"c":false},{"a":20598,"n":"room2_place_sprites","k":"routine","len":146,"c":true},{"a":20652,"n":"b_50AC","k":"branch","len":1,"c":false},{"a":20673,"n":"j_50C1","k":"branch","len":1,"c":false},{"a":20703,"n":"b_50DF","k":"branch","len":1,"c":false},{"a":20746,"n":"room2_irq","k":"routine","len":12,"c":true},{"a":20758,"n":"room2_guardian_step_op","k":"routine","len":1,"c":true},{"a":20759,"n":"room2_guardian_step_axis","k":"routine","len":96,"c":true},{"a":20790,"n":"b_5136","k":"branch","len":1,"c":false},{"a":20798,"n":"b_513E","k":"branch","len":1,"c":false},{"a":20821,"n":"b_5155","k":"branch","len":1,"c":false},{"a":20841,"n":"j_5169","k":"branch","len":1,"c":false},{"a":20854,"n":"b_5176","k":"branch","len":1,"c":false},{"a":20855,"n":"room2_guardian_turn_x","k":"routine","len":101,"c":true},{"a":20858,"n":"j_517A","k":"branch","len":1,"c":false},{"a":20871,"n":"b_5187","k":"branch","len":1,"c":false},{"a":20895,"n":"b_519F","k":"branch","len":1,"c":false},{"a":20914,"n":"b_51B2","k":"branch","len":1,"c":false},{"a":20934,"n":"b_51C6","k":"branch","len":1,"c":false},{"a":20944,"n":"b_51D0","k":"branch","len":1,"c":false},{"a":20952,"n":"j_51D8","k":"branch","len":1,"c":false},{"a":20956,"n":"room2_guardian_limit_x","k":"routine","len":22,"c":true},{"a":20962,"n":"b_51E2","k":"branch","len":1,"c":false},{"a":20965,"n":"j_51E5","k":"branch","len":1,"c":false},{"a":20975,"n":"b_51EF","k":"branch","len":1,"c":false},{"a":20980,"n":"room2_main_loop","k":"routine","len":275,"c":true},{"a":20989,"n":"b_51FD","k":"branch","len":1,"c":false},{"a":21008,"n":"b_5210","k":"branch","len":1,"c":false},{"a":21018,"n":"b_521A","k":"branch","len":1,"c":false},{"a":21028,"n":"b_5224","k":"branch","len":1,"c":false},{"a":21031,"n":"b_5227","k":"branch","len":1,"c":false},{"a":21042,"n":"j_5232","k":"branch","len":1,"c":false},{"a":21057,"n":"b_5241","k":"branch","len":1,"c":false},{"a":21089,"n":"b_5261","k":"branch","len":1,"c":false},{"a":21115,"n":"b_527B","k":"branch","len":1,"c":false},{"a":21139,"n":"b_5293","k":"branch","len":1,"c":false},{"a":21142,"n":"b_5296","k":"branch","len":1,"c":false},{"a":21147,"n":"b_529B","k":"branch","len":1,"c":false},{"a":21182,"n":"b_52BE","k":"branch","len":1,"c":false},{"a":21208,"n":"b_52D8","k":"branch","len":1,"c":false},{"a":21232,"n":"j_52F0","k":"branch","len":1,"c":false},{"a":21245,"n":"b_52FD","k":"branch","len":1,"c":false},{"a":21258,"n":"room2_exit_test","k":"routine","len":54,"c":true},{"a":21271,"n":"b_5317","k":"branch","len":1,"c":false},{"a":21281,"n":"b_5321","k":"branch","len":1,"c":false},{"a":21284,"n":"j_5324","k":"branch","len":1,"c":false},{"a":21294,"n":"b_532E","k":"branch","len":1,"c":false},{"a":21304,"n":"b_5338","k":"branch","len":1,"c":false},{"a":21312,"n":"walk_right","k":"routine","len":42,"c":true},{"a":21341,"n":"b_535D","k":"branch","len":1,"c":false},{"a":21360,"n":"walk_left","k":"routine","len":42,"c":true},{"a":21389,"n":"b_538D","k":"branch","len":1,"c":false},{"a":21408,"n":"room2_duck","k":"routine","len":24,"c":true},{"a":21412,"n":"b_53A4","k":"branch","len":1,"c":false},{"a":21432,"n":"room2_room_checks","k":"routine","len":23,"c":true},{"a":21440,"n":"b_53C0","k":"branch","len":1,"c":false},{"a":21451,"n":"b_53CB","k":"branch","len":1,"c":false},{"a":21456,"n":"room2_room_checks_2","k":"routine","len":39,"c":true},{"a":21468,"n":"b_53DC","k":"branch","len":1,"c":false},{"a":21492,"n":"b_53F4","k":"branch","len":1,"c":false},{"a":21496,"n":"room2_left_part_checks","k":"routine","len":18,"c":true},{"a":21514,"n":"empty_hands","k":"routine","len":8,"c":true},{"a":21523,"n":"room2_floor_ladder_test","k":"routine","len":11,"c":true},{"a":21534,"n":"room2_rts_filler","k":"table","len":9,"c":true},{"a":21543,"n":"room2_walls_and_objects","k":"routine","len":249,"c":true},{"a":21546,"n":"b_542A","k":"branch","len":1,"c":false},{"a":21554,"n":"b_5432","k":"branch","len":1,"c":false},{"a":21573,"n":"j_5445","k":"branch","len":1,"c":false},{"a":21580,"n":"b_544C","k":"branch","len":1,"c":false},{"a":21584,"n":"b_5450","k":"branch","len":1,"c":false},{"a":21595,"n":"b_545B","k":"branch","len":1,"c":false},{"a":21603,"n":"b_5463","k":"branch","len":1,"c":false},{"a":21616,"n":"b_5470","k":"branch","len":1,"c":false},{"a":21634,"n":"b_5482","k":"branch","len":1,"c":false},{"a":21649,"n":"b_5491","k":"branch","len":1,"c":false},{"a":21670,"n":"b_54A6","k":"branch","len":1,"c":false},{"a":21672,"n":"b_54A8","k":"branch","len":1,"c":false},{"a":21723,"n":"b_54DB","k":"branch","len":1,"c":false},{"a":21736,"n":"b_54E8","k":"branch","len":1,"c":false},{"a":21788,"n":"b_551C","k":"branch","len":1,"c":false},{"a":21792,"n":"room2_ladder_test","k":"routine","len":31,"c":true},{"a":21807,"n":"b_552F","k":"branch","len":1,"c":false},{"a":21811,"n":"b_5533","k":"branch","len":1,"c":false},{"a":21824,"n":"room2_ladder_climb","k":"routine","len":53,"c":true},{"a":21829,"n":"b_5545","k":"branch","len":1,"c":false},{"a":21846,"n":"b_5556","k":"branch","len":1,"c":false},{"a":21864,"n":"j_5568","k":"branch","len":1,"c":false},{"a":21870,"n":"b_556E","k":"branch","len":1,"c":false},{"a":21878,"n":"room2_ladder_bottom_exit","k":"routine","len":15,"c":true},{"a":21896,"n":"room2_ladder_x_test","k":"routine","len":8,"c":true},{"a":21904,"n":"hazards_and_pickups","k":"routine","len":29,"c":true},{"a":21925,"n":"r_55A5","k":"branch","len":1,"c":false},{"a":21926,"n":"b_55A6","k":"branch","len":1,"c":false},{"a":21936,"n":"hat_collision_test","k":"routine","len":67,"c":true},{"a":21946,"n":"b_55BA","k":"branch","len":1,"c":false},{"a":21953,"n":"b_55C1","k":"branch","len":1,"c":false},{"a":21960,"n":"b_55C8","k":"branch","len":1,"c":false},{"a":21967,"n":"b_55CF","k":"branch","len":1,"c":false},{"a":21974,"n":"b_55D6","k":"branch","len":1,"c":false},{"a":21981,"n":"b_55DD","k":"branch","len":1,"c":false},{"a":21988,"n":"r_55E4","k":"branch","len":1,"c":false},{"a":21989,"n":"j_55E5","k":"branch","len":1,"c":false},{"a":22005,"n":"kill_hat","k":"routine","len":3,"c":true},{"a":22032,"n":"room2_respawn_position","k":"routine","len":24,"c":true},{"a":22056,"n":"room2_respawn_if_off","k":"routine","len":20,"c":true},{"a":22064,"n":"b_5630","k":"branch","len":1,"c":false},{"a":22076,"n":"room2_respawn_on_ladder","k":"routine","len":32,"c":true},{"a":22084,"n":"b_5644","k":"branch","len":1,"c":false},{"a":22112,"n":"room2_stand_and_loop","k":"routine","len":23,"c":true},{"a":22127,"n":"b_566F","k":"branch","len":1,"c":false},{"a":22136,"n":"reset_room_objects","k":"routine","len":54,"c":true},{"a":22192,"n":"room_blank_and_fill","k":"routine","len":22,"c":true},{"a":22215,"n":"call_822e_and_flip_screen","k":"routine","len":7,"c":true},{"a":22224,"n":"flip_screen_if_climbing","k":"routine","len":20,"c":true},{"a":22238,"n":"b_56DE","k":"branch","len":1,"c":false},{"a":22253,"n":"fill_colour_rect","k":"routine","len":38,"c":true},{"a":22255,"n":"b_56EF","k":"branch","len":1,"c":false},{"a":22257,"n":"b_56F1","k":"branch","len":1,"c":false},{"a":22277,"n":"j_5705","k":"branch","len":1,"c":false},{"a":22285,"n":"b_570D","k":"branch","len":1,"c":false},{"a":22290,"n":"r_5712","k":"branch","len":1,"c":false},{"a":22291,"n":"copy_pattern_rows","k":"routine","len":5,"c":true},{"a":22293,"n":"b_5715","k":"branch","len":1,"c":false},{"a":22295,"n":"b_5717","k":"branch","len":1,"c":false},{"a":22296,"n":"pattern_src_lo","k":"routine","len":1,"c":true},{"a":22297,"n":"pattern_src_hi","k":"routine","len":35,"c":true},{"a":22318,"n":"j_572E","k":"branch","len":1,"c":false},{"a":22326,"n":"b_5736","k":"branch","len":1,"c":false},{"a":22331,"n":"r_573B","k":"branch","len":1,"c":false},{"a":22333,"n":"room5_setup","k":"routine","len":169,"c":true},{"a":22502,"n":"room5_object_colour","k":"routine","len":134,"c":true},{"a":22636,"n":"room5_item_colour","k":"routine","len":79,"c":true},{"a":22645,"n":"b_5875","k":"branch","len":1,"c":false},{"a":22715,"n":"cone_up_pattern","k":"table","len":16,"c":true},{"a":22731,"n":"cone_down_pattern","k":"table","len":16,"c":true},{"a":22748,"n":"room5_place_sprites","k":"routine","len":138,"c":true},{"a":22809,"n":"b_5919","k":"branch","len":1,"c":false},{"a":22827,"n":"j_592B","k":"branch","len":1,"c":false},{"a":22890,"n":"room5_irq","k":"routine","len":12,"c":true},{"a":22902,"n":"room5_guardian_step1_op","k":"routine","len":1,"c":true},{"a":22903,"n":"room5_guardian_step1_axis","k":"routine","len":2,"c":true},{"a":22905,"n":"room5_guardian_step2_op","k":"routine","len":1,"c":true},{"a":22906,"n":"room5_guardian_step2_axis","k":"routine","len":121,"c":true},{"a":22925,"n":"b_598D","k":"branch","len":1,"c":false},{"a":22933,"n":"b_5995","k":"branch","len":1,"c":false},{"a":22949,"n":"b_59A5","k":"branch","len":1,"c":false},{"a":22955,"n":"b_59AB","k":"branch","len":1,"c":false},{"a":22971,"n":"b_59BB","k":"branch","len":1,"c":false},{"a":22977,"n":"b_59C1","k":"branch","len":1,"c":false},{"a":22993,"n":"b_59D1","k":"branch","len":1,"c":false},{"a":22999,"n":"b_59D7","k":"branch","len":1,"c":false},{"a":23032,"n":"room5_guardian_turns","k":"routine","len":84,"c":true},{"a":23047,"n":"b_5A07","k":"branch","len":1,"c":false},{"a":23085,"n":"b_5A2D","k":"branch","len":1,"c":false},{"a":23113,"n":"b_5A49","k":"branch","len":1,"c":false},{"a":23136,"n":"room5_main_loop","k":"routine","len":278,"c":true},{"a":23145,"n":"b_5A69","k":"branch","len":1,"c":false},{"a":23164,"n":"b_5A7C","k":"branch","len":1,"c":false},{"a":23174,"n":"b_5A86","k":"branch","len":1,"c":false},{"a":23187,"n":"b_5A93","k":"branch","len":1,"c":false},{"a":23198,"n":"j_5A9E","k":"branch","len":1,"c":false},{"a":23213,"n":"b_5AAD","k":"branch","len":1,"c":false},{"a":23245,"n":"b_5ACD","k":"branch","len":1,"c":false},{"a":23271,"n":"b_5AE7","k":"branch","len":1,"c":false},{"a":23295,"n":"b_5AFF","k":"branch","len":1,"c":false},{"a":23298,"n":"b_5B02","k":"branch","len":1,"c":false},{"a":23303,"n":"b_5B07","k":"branch","len":1,"c":false},{"a":23338,"n":"b_5B2A","k":"branch","len":1,"c":false},{"a":23364,"n":"b_5B44","k":"branch","len":1,"c":false},{"a":23388,"n":"j_5B5C","k":"branch","len":1,"c":false},{"a":23401,"n":"b_5B69","k":"branch","len":1,"c":false},{"a":23414,"n":"room5_exit_test","k":"routine","len":26,"c":true},{"a":23427,"n":"b_5B83","k":"branch","len":1,"c":false},{"a":23437,"n":"b_5B8D","k":"branch","len":1,"c":false},{"a":23440,"n":"room5_exit_test_before_jump","k":"routine","len":24,"c":true},{"a":23453,"n":"b_5B9D","k":"branch","len":1,"c":false},{"a":23463,"n":"r_5BA7","k":"branch","len":1,"c":false},{"a":23472,"n":"room5_stand_and_loop","k":"routine","len":23,"c":true},{"a":23487,"n":"b_5BBF","k":"branch","len":1,"c":false},{"a":23496,"n":"room5_duck","k":"routine","len":24,"c":true},{"a":23500,"n":"b_5BCC","k":"branch","len":1,"c":false},{"a":23520,"n":"room5_checks_if_visible","k":"routine","len":12,"c":true},{"a":23528,"n":"b_5BE8","k":"branch","len":1,"c":false},{"a":23535,"n":"room5_lower_floor_checks","k":"routine","len":119,"c":true},{"a":23556,"n":"b_5C04","k":"branch","len":1,"c":false},{"a":23564,"n":"b_5C0C","k":"branch","len":1,"c":false},{"a":23583,"n":"b_5C1F","k":"branch","len":1,"c":false},{"a":23599,"n":"b_5C2F","k":"branch","len":1,"c":false},{"a":23609,"n":"b_5C39","k":"branch","len":1,"c":false},{"a":23632,"n":"b_5C50","k":"branch","len":1,"c":false},{"a":23653,"n":"r_5C65","k":"branch","len":1,"c":false},{"a":23654,"n":"room5_upper_floor_checks","k":"routine","len":149,"c":true},{"a":23665,"n":"b_5C71","k":"branch","len":1,"c":false},{"a":23673,"n":"b_5C79","k":"branch","len":1,"c":false},{"a":23691,"n":"b_5C8B","k":"branch","len":1,"c":false},{"a":23709,"n":"r_5C9D","k":"branch","len":1,"c":false},{"a":23710,"n":"b_5C9E","k":"branch","len":1,"c":false},{"a":23772,"n":"b_5CDC","k":"branch","len":1,"c":false},{"a":23783,"n":"b_5CE7","k":"branch","len":1,"c":false},{"a":23802,"n":"r_5CFA","k":"branch","len":1,"c":false},{"a":23808,"n":"room5_left_ladder","k":"routine","len":24,"c":true},{"a":23813,"n":"b_5D05","k":"branch","len":1,"c":false},{"a":23827,"n":"b_5D13","k":"branch","len":1,"c":false},{"a":23840,"n":"room5_right_ladder","k":"routine","len":34,"c":true},{"a":23845,"n":"b_5D25","k":"branch","len":1,"c":false},{"a":23859,"n":"b_5D33","k":"branch","len":1,"c":false},{"a":23877,"n":"respawn_left_if_off","k":"routine","len":45,"c":true},{"a":23885,"n":"b_5D4D","k":"branch","len":1,"c":false},{"a":23922,"n":"room5_exit_then_checks","k":"routine","len":3,"c":true},{"a":23925,"n":"room5_checks","k":"routine","len":7,"c":true},{"a":23932,"n":"room5_ladder_touch_test","k":"routine","len":24,"c":true},{"a":23955,"n":"r_5D93","k":"branch","len":1,"c":false},{"a":23957,"n":"room5_draw_down_cones","k":"routine","len":15,"c":true},{"a":23972,"n":"room5_draw_up_cones","k":"routine","len":15,"c":true},{"a":23994,"n":"unreferenced_5dba","k":"table","len":86,"c":true},{"a":24080,"n":"room6_setup","k":"routine","len":226,"c":true},{"a":24305,"n":"b_5EF1","k":"branch","len":1,"c":false},{"a":24306,"n":"room6_item_colour","k":"routine","len":64,"c":true},{"a":24315,"n":"b_5EFB","k":"branch","len":1,"c":false},{"a":24370,"n":"unreferenced_cells_5f32","k":"table","len":48,"c":true},{"a":24418,"n":"room6_setup_nops","k":"routine","len":28,"c":true},{"a":24448,"n":"room6_lit_objects","k":"routine","len":10,"c":true},{"a":24458,"n":"f_5F8A","k":"routine","len":16,"c":true},{"a":24474,"n":"f_5F9A","k":"routine","len":16,"c":true},{"a":24490,"n":"f_5FAA","k":"routine","len":15,"c":true},{"a":24506,"n":"room6_finish_setup","k":"routine","len":70,"c":true},{"a":24576,"n":"room6_place_sprites","k":"routine","len":123,"c":true},{"a":24587,"n":"b_600B","k":"branch","len":1,"c":false},{"a":24648,"n":"b_6048","k":"branch","len":1,"c":false},{"a":24671,"n":"j_605F","k":"branch","len":1,"c":false},{"a":24699,"n":"room6_fill_dark","k":"routine","len":7,"c":true},{"a":24706,"n":"room6_start_loop","k":"routine","len":8,"c":true},{"a":24714,"n":"room6_irq","k":"routine","len":12,"c":true},{"a":24726,"n":"a_6096","k":"routine","len":298,"c":true},{"a":24742,"n":"b_60A6","k":"branch","len":1,"c":false},{"a":24762,"n":"b_60BA","k":"branch","len":1,"c":false},{"a":24766,"n":"j_60BE","k":"branch","len":1,"c":false},{"a":24768,"n":"b_60C0","k":"branch","len":1,"c":false},{"a":24788,"n":"b_60D4","k":"branch","len":1,"c":false},{"a":24794,"n":"b_60DA","k":"branch","len":1,"c":false},{"a":24814,"n":"b_60EE","k":"branch","len":1,"c":false},{"a":24821,"n":"b_60F5","k":"branch","len":1,"c":false},{"a":24828,"n":"j_60FC","k":"branch","len":1,"c":false},{"a":24840,"n":"b_6108","k":"branch","len":1,"c":false},{"a":24852,"n":"b_6114","k":"branch","len":1,"c":false},{"a":24872,"n":"b_6128","k":"branch","len":1,"c":false},{"a":24901,"n":"b_6145","k":"branch","len":1,"c":false},{"a":24912,"n":"j_6150","k":"branch","len":1,"c":false},{"a":24922,"n":"b_615A","k":"branch","len":1,"c":false},{"a":24930,"n":"b_6162","k":"branch","len":1,"c":false},{"a":24946,"n":"b_6172","k":"branch","len":1,"c":false},{"a":24952,"n":"b_6178","k":"branch","len":1,"c":false},{"a":24968,"n":"b_6188","k":"branch","len":1,"c":false},{"a":24974,"n":"b_618E","k":"branch","len":1,"c":false},{"a":24990,"n":"b_619E","k":"branch","len":1,"c":false},{"a":25021,"n":"j_61BD","k":"branch","len":1,"c":false},{"a":25024,"n":"unused_61c0","k":"table","len":26,"c":true},{"a":25050,"n":"reset_rooms_6_8","k":"routine","len":38,"c":true},{"a":25088,"n":"room6_fill_and_room_digit","k":"routine","len":23,"c":true},{"a":25093,"n":"b_6205","k":"branch","len":1,"c":false},{"a":25111,"n":"unused_6217","k":"table","len":9,"c":true},{"a":25120,"n":"room6_main_loop","k":"routine","len":275,"c":true},{"a":25129,"n":"b_6229","k":"branch","len":1,"c":false},{"a":25148,"n":"b_623C","k":"branch","len":1,"c":false},{"a":25158,"n":"b_6246","k":"branch","len":1,"c":false},{"a":25171,"n":"b_6253","k":"branch","len":1,"c":false},{"a":25182,"n":"j_625E","k":"branch","len":1,"c":false},{"a":25197,"n":"b_626D","k":"branch","len":1,"c":false},{"a":25229,"n":"b_628D","k":"branch","len":1,"c":false},{"a":25255,"n":"b_62A7","k":"branch","len":1,"c":false},{"a":25279,"n":"b_62BF","k":"branch","len":1,"c":false},{"a":25282,"n":"b_62C2","k":"branch","len":1,"c":false},{"a":25287,"n":"b_62C7","k":"branch","len":1,"c":false},{"a":25322,"n":"b_62EA","k":"branch","len":1,"c":false},{"a":25348,"n":"b_6304","k":"branch","len":1,"c":false},{"a":25372,"n":"j_631C","k":"branch","len":1,"c":false},{"a":25385,"n":"b_6329","k":"branch","len":1,"c":false},{"a":25395,"n":"room6_unreached_jsr","k":"table","len":3,"c":true},{"a":25398,"n":"room6_exit_check","k":"routine","len":54,"c":true},{"a":25411,"n":"b_6343","k":"branch","len":1,"c":false},{"a":25421,"n":"b_634D","k":"branch","len":1,"c":false},{"a":25424,"n":"j_6350","k":"branch","len":1,"c":false},{"a":25434,"n":"b_635A","k":"branch","len":1,"c":false},{"a":25444,"n":"b_6364","k":"branch","len":1,"c":false},{"a":25452,"n":"unused_636c","k":"table","len":4,"c":true},{"a":25456,"n":"room6_stand","k":"routine","len":23,"c":true},{"a":25471,"n":"b_637F","k":"branch","len":1,"c":false},{"a":25479,"n":"unused_6387","k":"variable","len":1,"c":true},{"a":25480,"n":"room6_crouch","k":"routine","len":24,"c":true},{"a":25484,"n":"b_638C","k":"branch","len":1,"c":false},{"a":25504,"n":"unused_63a0","k":"table","len":16,"c":true},{"a":25520,"n":"room6_position_rules","k":"routine","len":317,"c":true},{"a":25528,"n":"b_63B8","k":"branch","len":1,"c":false},{"a":25557,"n":"b_63D5","k":"branch","len":1,"c":false},{"a":25565,"n":"b_63DD","k":"branch","len":1,"c":false},{"a":25580,"n":"b_63EC","k":"branch","len":1,"c":false},{"a":25588,"n":"b_63F4","k":"branch","len":1,"c":false},{"a":25606,"n":"b_6406","k":"branch","len":1,"c":false},{"a":25614,"n":"b_640E","k":"branch","len":1,"c":false},{"a":25633,"n":"b_6421","k":"branch","len":1,"c":false},{"a":25665,"n":"b_6441","k":"branch","len":1,"c":false},{"a":25676,"n":"j_644C","k":"branch","len":1,"c":false},{"a":25709,"n":"r_646D","k":"branch","len":1,"c":false},{"a":25710,"n":"b_646E","k":"branch","len":1,"c":false},{"a":25720,"n":"b_6478","k":"branch","len":1,"c":false},{"a":25727,"n":"b_647F","k":"branch","len":1,"c":false},{"a":25745,"n":"b_6491","k":"branch","len":1,"c":false},{"a":25760,"n":"b_64A0","k":"branch","len":1,"c":false},{"a":25764,"n":"b_64A4","k":"branch","len":1,"c":false},{"a":25768,"n":"r_64A8","k":"branch","len":1,"c":false},{"a":25769,"n":"b_64A9","k":"branch","len":1,"c":false},{"a":25785,"n":"b_64B9","k":"branch","len":1,"c":false},{"a":25795,"n":"b_64C3","k":"branch","len":1,"c":false},{"a":25823,"n":"r_64DF","k":"branch","len":1,"c":false},{"a":25824,"n":"b_64E0","k":"branch","len":1,"c":false},{"a":25837,"n":"scratch_64ed","k":"variable","len":1,"c":true},{"a":25838,"n":"room8_belt_phase","k":"variable","len":1,"c":true},{"a":25839,"n":"drift_counter","k":"variable","len":1,"c":true},{"a":25840,"n":"sprite0_anim_count","k":"variable","len":1,"c":true},{"a":25841,"n":"sprite1_anim_count","k":"variable","len":1,"c":true},{"a":25842,"n":"counter_64f2","k":"variable","len":1,"c":true},{"a":25843,"n":"value_64f3","k":"variable","len":1,"c":true},{"a":25844,"n":"counter_64f4","k":"variable","len":1,"c":true},{"a":25845,"n":"counter_64f5","k":"variable","len":1,"c":true},{"a":25846,"n":"value_64f6","k":"variable","len":1,"c":true},{"a":25847,"n":"shaft_arrival_flag","k":"variable","len":1,"c":true},{"a":25848,"n":"unused_64f8","k":"variable","len":1,"c":true},{"a":25849,"n":"tune_note_count","k":"variable","len":1,"c":true},{"a":25850,"n":"tune_note_length","k":"variable","len":1,"c":true},{"a":25851,"n":"unused_64fb","k":"table","len":4,"c":true},{"a":25855,"n":"value_64ff","k":"variable","len":1,"c":true},{"a":25856,"n":"room6_ladder","k":"routine","len":59,"c":true},{"a":25861,"n":"b_6505","k":"branch","len":1,"c":false},{"a":25875,"n":"b_6513","k":"branch","len":1,"c":false},{"a":25901,"n":"b_652D","k":"branch","len":1,"c":false},{"a":25908,"n":"b_6534","k":"branch","len":1,"c":false},{"a":25915,"n":"r_653B","k":"routine","len":1,"c":true},{"a":25916,"n":"unused_copy_loop","k":"table","len":20,"c":true},{"a":25936,"n":"room6_respawn","k":"routine","len":45,"c":true},{"a":25944,"n":"b_6558","k":"branch","len":1,"c":false},{"a":25981,"n":"room6_step_checks","k":"routine","len":7,"c":true},{"a":25988,"n":"room6_ladder_hit","k":"routine","len":24,"c":true},{"a":26011,"n":"r_659B","k":"branch","len":1,"c":false},{"a":26012,"n":"room6_upper_strip","k":"routine","len":11,"c":true},{"a":26023,"n":"hat_colour_reset","k":"routine","len":30,"c":true},{"a":26044,"n":"b_65BC","k":"branch","len":1,"c":false},{"a":26053,"n":"call_empty_450a","k":"routine","len":4,"c":true},{"a":26057,"n":"unused_sound_fragment","k":"table","len":23,"c":true},{"a":26080,"n":"room8_draw","k":"routine","len":129,"c":true},{"a":26209,"n":"a_6661","k":"routine","len":17,"c":true},{"a":26225,"n":"b_6671","k":"branch","len":1,"c":false},{"a":26226,"n":"a_6672","k":"routine","len":54,"c":true},{"a":26267,"n":"b_669B","k":"branch","len":1,"c":false},{"a":26280,"n":"belt_pattern_0","k":"table","len":8,"c":true},{"a":26288,"n":"belt_pattern_3","k":"table","len":8,"c":true},{"a":26296,"n":"belt_pattern_2","k":"table","len":8,"c":true},{"a":26304,"n":"belt_pattern_1","k":"table","len":8,"c":true},{"a":26312,"n":"unused_66c8","k":"table","len":24,"c":true},{"a":26336,"n":"room8_place_objects","k":"routine","len":1,"c":true},{"a":26337,"n":"a_66E1","k":"routine","len":158,"c":true},{"a":26495,"n":"unused_677f","k":"variable","len":2,"c":true},{"a":26497,"n":"room8_place_sprites","k":"routine","len":188,"c":true},{"a":26542,"n":"b_67AE","k":"branch","len":1,"c":false},{"a":26572,"n":"b_67CC","k":"branch","len":1,"c":false},{"a":26602,"n":"b_67EA","k":"branch","len":1,"c":false},{"a":26621,"n":"j_67FD","k":"branch","len":1,"c":false},{"a":26685,"n":"room8_irq","k":"routine","len":3,"c":true},{"a":26688,"n":"a_6840","k":"routine","len":3,"c":true},{"a":26691,"n":"a_6843","k":"routine","len":3,"c":true},{"a":26694,"n":"a_6846","k":"routine","len":3,"c":true},{"a":26697,"n":"a_6849","k":"routine","len":1,"c":true},{"a":26698,"n":"a_684A","k":"routine","len":91,"c":true},{"a":26715,"n":"b_685B","k":"branch","len":1,"c":false},{"a":26727,"n":"b_6867","k":"branch","len":1,"c":false},{"a":26742,"n":"b_6876","k":"branch","len":1,"c":false},{"a":26754,"n":"b_6882","k":"branch","len":1,"c":false},{"a":26763,"n":"b_688B","k":"branch","len":1,"c":false},{"a":26778,"n":"b_689A","k":"branch","len":1,"c":false},{"a":26786,"n":"j_68A2","k":"branch","len":1,"c":false},{"a":26789,"n":"room8_belt_unused","k":"routine","len":151,"c":true},{"a":26800,"n":"b_68B0","k":"branch","len":1,"c":false},{"a":26821,"n":"b_68C5","k":"branch","len":1,"c":false},{"a":26824,"n":"b_68C8","k":"branch","len":1,"c":false},{"a":26835,"n":"b_68D3","k":"branch","len":1,"c":false},{"a":26856,"n":"b_68E8","k":"branch","len":1,"c":false},{"a":26859,"n":"b_68EB","k":"branch","len":1,"c":false},{"a":26870,"n":"b_68F6","k":"branch","len":1,"c":false},{"a":26891,"n":"b_690B","k":"branch","len":1,"c":false},{"a":26894,"n":"b_690E","k":"branch","len":1,"c":false},{"a":26905,"n":"b_6919","k":"branch","len":1,"c":false},{"a":26926,"n":"b_692E","k":"branch","len":1,"c":false},{"a":26929,"n":"b_6931","k":"branch","len":1,"c":false},{"a":26937,"n":"j_6939","k":"branch","len":1,"c":false},{"a":26940,"n":"unused_693c","k":"table","len":104,"c":true},{"a":27044,"n":"stray_jmp_operand","k":"table","len":124,"c":true},{"a":27168,"n":"room8_main_loop","k":"routine","len":278,"c":true},{"a":27177,"n":"b_6A29","k":"branch","len":1,"c":false},{"a":27196,"n":"b_6A3C","k":"branch","len":1,"c":false},{"a":27206,"n":"b_6A46","k":"branch","len":1,"c":false},{"a":27219,"n":"b_6A53","k":"branch","len":1,"c":false},{"a":27230,"n":"j_6A5E","k":"branch","len":1,"c":false},{"a":27245,"n":"b_6A6D","k":"branch","len":1,"c":false},{"a":27277,"n":"b_6A8D","k":"branch","len":1,"c":false},{"a":27303,"n":"b_6AA7","k":"branch","len":1,"c":false},{"a":27327,"n":"b_6ABF","k":"branch","len":1,"c":false},{"a":27330,"n":"b_6AC2","k":"branch","len":1,"c":false},{"a":27335,"n":"b_6AC7","k":"branch","len":1,"c":false},{"a":27370,"n":"b_6AEA","k":"branch","len":1,"c":false},{"a":27396,"n":"b_6B04","k":"branch","len":1,"c":false},{"a":27420,"n":"j_6B1C","k":"branch","len":1,"c":false},{"a":27433,"n":"b_6B29","k":"branch","len":1,"c":false},{"a":27443,"n":"j_6B33","k":"branch","len":1,"c":false},{"a":27446,"n":"room8_exit_dispatch","k":"routine","len":32,"c":true},{"a":27456,"n":"b_6B40","k":"branch","len":1,"c":false},{"a":27463,"n":"b_6B47","k":"branch","len":1,"c":false},{"a":27470,"n":"b_6B4E","k":"branch","len":1,"c":false},{"a":27477,"n":"r_6B55","k":"branch","len":1,"c":false},{"a":27478,"n":"room8_exit_and_step_checks","k":"routine","len":3,"c":true},{"a":27481,"n":"room8_step_checks","k":"routine","len":7,"c":true},{"a":27488,"n":"room8_walk_right","k":"routine","len":42,"c":true},{"a":27517,"n":"b_6B7D","k":"branch","len":1,"c":false},{"a":27530,"n":"unused_6b8a","k":"table","len":6,"c":true},{"a":27536,"n":"room8_walk_left","k":"routine","len":42,"c":true},{"a":27565,"n":"b_6BAD","k":"branch","len":1,"c":false},{"a":27578,"n":"room8_step_delay","k":"routine","len":13,"c":true},{"a":27580,"n":"b_6BBC","k":"branch","len":1,"c":false},{"a":27582,"n":"b_6BBE","k":"branch","len":1,"c":false},{"a":27591,"n":"room8_jump_pause","k":"routine","len":13,"c":true},{"a":27593,"n":"b_6BC9","k":"branch","len":1,"c":false},{"a":27595,"n":"b_6BCB","k":"branch","len":1,"c":false},{"a":27604,"n":"room8_crouch","k":"routine","len":24,"c":true},{"a":27608,"n":"b_6BD8","k":"branch","len":1,"c":false},{"a":27628,"n":"unused_6bec","k":"variable","len":1,"c":true},{"a":27629,"n":"room8_upper_rules_jump","k":"routine","len":3,"c":true},{"a":27632,"n":"room8_position_rules","k":"routine","len":180,"c":true},{"a":27640,"n":"b_6BF8","k":"branch","len":1,"c":false},{"a":27685,"n":"b_6C25","k":"branch","len":1,"c":false},{"a":27693,"n":"b_6C2D","k":"branch","len":1,"c":false},{"a":27709,"n":"b_6C3D","k":"branch","len":1,"c":false},{"a":27727,"n":"b_6C4F","k":"branch","len":1,"c":false},{"a":27747,"n":"r_6C63","k":"branch","len":1,"c":false},{"a":27748,"n":"b_6C64","k":"branch","len":1,"c":false},{"a":27768,"n":"b_6C78","k":"branch","len":1,"c":false},{"a":27786,"n":"b_6C8A","k":"branch","len":1,"c":false},{"a":27804,"n":"b_6C9C","k":"branch","len":1,"c":false},{"a":27812,"n":"drift_push","k":"routine","len":230,"c":true},{"a":27833,"n":"b_6CB9","k":"branch","len":1,"c":false},{"a":27851,"n":"r_6CCB","k":"branch","len":1,"c":false},{"a":27852,"n":"b_6CCC","k":"branch","len":1,"c":false},{"a":27873,"n":"b_6CE1","k":"branch","len":1,"c":false},{"a":27884,"n":"b_6CEC","k":"branch","len":1,"c":false},{"a":27891,"n":"j_6CF3","k":"branch","len":1,"c":false},{"a":27916,"n":"b_6D0C","k":"branch","len":1,"c":false},{"a":27919,"n":"r_6D0F","k":"branch","len":1,"c":false},{"a":27920,"n":"b_6D10","k":"branch","len":1,"c":false},{"a":27936,"n":"b_6D20","k":"branch","len":1,"c":false},{"a":27944,"n":"b_6D28","k":"branch","len":1,"c":false},{"a":27948,"n":"b_6D2C","k":"branch","len":1,"c":false},{"a":27975,"n":"r_6D47","k":"branch","len":1,"c":false},{"a":27976,"n":"b_6D48","k":"branch","len":1,"c":false},{"a":27986,"n":"r_6D52","k":"branch","len":1,"c":false},{"a":27987,"n":"b_6D53","k":"branch","len":1,"c":false},{"a":28039,"n":"b_6D87","k":"branch","len":1,"c":false},{"a":28042,"n":"unused_6d8a","k":"table","len":6,"c":true},{"a":28048,"n":"room3_sprite_test","k":"routine","len":14,"c":true},{"a":28058,"n":"b_6D9A","k":"branch","len":1,"c":false},{"a":28062,"n":"unused_6d9e","k":"variable","len":2,"c":true},{"a":28064,"n":"room8_shaft_ride","k":"routine","len":78,"c":true},{"a":28069,"n":"j_6DA5","k":"branch","len":1,"c":false},{"a":28087,"n":"b_6DB7","k":"branch","len":1,"c":false},{"a":28094,"n":"b_6DBE","k":"branch","len":1,"c":false},{"a":28109,"n":"b_6DCD","k":"branch","len":1,"c":false},{"a":28117,"n":"b_6DD5","k":"branch","len":1,"c":false},{"a":28121,"n":"b_6DD9","k":"branch","len":1,"c":false},{"a":28142,"n":"unused_6dee","k":"variable","len":2,"c":true},{"a":28144,"n":"room8_shaft_ride_repeat","k":"routine","len":15,"c":true},{"a":28147,"n":"j_6DF3","k":"branch","len":1,"c":false},{"a":28156,"n":"b_6DFC","k":"branch","len":1,"c":false},{"a":28159,"n":"unused_6dff","k":"variable","len":1,"c":true},{"a":28160,"n":"room1_start_of_play","k":"routine","len":437,"c":true},{"a":28245,"n":"b_6E55","k":"branch","len":1,"c":false},{"a":28268,"n":"b_6E6C","k":"branch","len":1,"c":false},{"a":28283,"n":"b_6E7B","k":"branch","len":1,"c":false},{"a":28402,"n":"b_6EF2","k":"branch","len":1,"c":false},{"a":28488,"n":"b_6F48","k":"branch","len":1,"c":false},{"a":28513,"n":"b_6F61","k":"branch","len":1,"c":false},{"a":28576,"n":"b_6FA0","k":"branch","len":1,"c":false},{"a":28597,"n":"room1_fill_right_columns","k":"routine","len":38,"c":true},{"a":28635,"n":"room1_timer_checks","k":"routine","len":27,"c":true},{"a":28650,"n":"b_6FEA","k":"branch","len":1,"c":false},{"a":28659,"n":"b_6FF3","k":"branch","len":1,"c":false},{"a":28662,"n":"unused_copy_44b9","k":"table","len":6,"c":true},{"a":28668,"n":"check_sprites_08a1","k":"routine","len":4,"c":true},{"a":28672,"n":"irq_flip_guardian_frames","k":"routine","len":65,"c":true},{"a":28694,"n":"b_7016","k":"branch","len":1,"c":false},{"a":28699,"n":"b_701B","k":"branch","len":1,"c":false},{"a":28721,"n":"b_7031","k":"branch","len":1,"c":false},{"a":28726,"n":"j_7036","k":"branch","len":1,"c":false},{"a":28734,"n":"b_703E","k":"branch","len":1,"c":false},{"a":28737,"n":"room6_set_entry_38","k":"routine","len":9,"c":true},{"a":28759,"n":"room8_tick_guardian_counters","k":"routine","len":7,"c":true},{"a":28766,"n":"reset_room_state_new_game","k":"routine","len":48,"c":true},{"a":28816,"n":"room8_after_kill","k":"routine","len":8,"c":true},{"a":28832,"n":"room8_take_key","k":"routine","len":13,"c":true},{"a":28848,"n":"room8_upper_floor_colour","k":"routine","len":62,"c":true},{"a":28869,"n":"r_70C5","k":"branch","len":1,"c":false},{"a":28870,"n":"b_70C6","k":"branch","len":1,"c":false},{"a":28882,"n":"b_70D2","k":"branch","len":1,"c":false},{"a":28890,"n":"j_70DA","k":"branch","len":1,"c":false},{"a":28898,"n":"r_70E2","k":"branch","len":1,"c":false},{"a":28899,"n":"b_70E3","k":"branch","len":1,"c":false},{"a":28910,"n":"room8_respawn_hat","k":"routine","len":45,"c":true},{"a":28918,"n":"b_70F6","k":"branch","len":1,"c":false},{"a":28955,"n":"room8_setup_tail","k":"routine","len":13,"c":true},{"a":28968,"n":"room6_setup_tail","k":"routine","len":8,"c":true},{"a":28976,"n":"room8_choose_loop","k":"routine","len":13,"c":true},{"a":28986,"n":"b_713A","k":"branch","len":1,"c":false},{"a":28992,"n":"room9_setup","k":"routine","len":132,"c":true},{"a":29124,"n":"room9_upper_door_colour_op","k":"routine","len":161,"c":true},{"a":29285,"n":"room9_tv_bitmap","k":"table","len":192,"c":true},{"a":29477,"n":"room9_setup_part2","k":"routine","len":169,"c":true},{"a":29645,"n":"b_73CD","k":"branch","len":1,"c":false},{"a":29646,"n":"room9_treasure_colour_op_a","k":"routine","len":5,"c":true},{"a":29651,"n":"room9_treasure_colour_op_b","k":"routine","len":100,"c":true},{"a":29692,"n":"b_73FC","k":"branch","len":1,"c":false},{"a":29757,"n":"room9_skip_dark","k":"routine","len":3,"c":true},{"a":29760,"n":"room9_enter","k":"routine","len":154,"c":true},{"a":29914,"n":"room9_place_sprites","k":"routine","len":269,"c":true},{"a":29916,"n":"b_74DC","k":"branch","len":1,"c":false},{"a":29974,"n":"b_7516","k":"branch","len":1,"c":false},{"a":30004,"n":"b_7534","k":"branch","len":1,"c":false},{"a":30034,"n":"b_7552","k":"branch","len":1,"c":false},{"a":30053,"n":"j_7565","k":"branch","len":1,"c":false},{"a":30180,"n":"b_75E4","k":"branch","len":1,"c":false},{"a":30183,"n":"unused_fill_colour_d022_one","k":"routine","len":9,"c":true},{"a":30192,"n":"replay_bonus_state","k":"table","len":16,"c":true},{"a":30208,"n":"room9_irq","k":"routine","len":13,"c":true},{"a":30220,"n":"b_760C","k":"branch","len":1,"c":false},{"a":30221,"n":"room9_irq_d022_source_lo","k":"routine","len":26,"c":true},{"a":30247,"n":"room9_patrol_step_op_1","k":"routine","len":3,"c":true},{"a":30250,"n":"room9_patrol_step_op_2","k":"routine","len":117,"c":true},{"a":30276,"n":"b_7644","k":"branch","len":1,"c":false},{"a":30293,"n":"j_7655","k":"branch","len":1,"c":false},{"a":30317,"n":"b_766D","k":"branch","len":1,"c":false},{"a":30329,"n":"j_7679","k":"branch","len":1,"c":false},{"a":30344,"n":"b_7688","k":"branch","len":1,"c":false},{"a":30361,"n":"b_7699","k":"branch","len":1,"c":false},{"a":30367,"n":"room9_irq_dead_tail","k":"routine","len":15,"c":true},{"a":30379,"n":"j_76AB","k":"branch","len":1,"c":false},{"a":30384,"n":"room9_main","k":"routine","len":252,"c":true},{"a":30393,"n":"b_76B9","k":"branch","len":1,"c":false},{"a":30412,"n":"b_76CC","k":"branch","len":1,"c":false},{"a":30422,"n":"b_76D6","k":"branch","len":1,"c":false},{"a":30435,"n":"b_76E3","k":"branch","len":1,"c":false},{"a":30446,"n":"j_76EE","k":"branch","len":1,"c":false},{"a":30461,"n":"b_76FD","k":"branch","len":1,"c":false},{"a":30493,"n":"b_771D","k":"branch","len":1,"c":false},{"a":30519,"n":"b_7737","k":"branch","len":1,"c":false},{"a":30543,"n":"b_774F","k":"branch","len":1,"c":false},{"a":30546,"n":"b_7752","k":"branch","len":1,"c":false},{"a":30551,"n":"b_7757","k":"branch","len":1,"c":false},{"a":30586,"n":"b_777A","k":"branch","len":1,"c":false},{"a":30612,"n":"b_7794","k":"branch","len":1,"c":false},{"a":30636,"n":"room9_after_jump","k":"routine","len":23,"c":true},{"a":30649,"n":"b_77B9","k":"branch","len":1,"c":false},{"a":30662,"n":"room9_walk_done","k":"routine","len":3,"c":true},{"a":30688,"n":"room9_chain_jump","k":"routine","len":28,"c":true},{"a":30698,"n":"b_77EA","k":"branch","len":1,"c":false},{"a":30708,"n":"b_77F4","k":"branch","len":1,"c":false},{"a":30720,"n":"room9_stand_frame","k":"routine","len":23,"c":true},{"a":30735,"n":"b_780F","k":"branch","len":1,"c":false},{"a":30744,"n":"room9_crouch","k":"routine","len":24,"c":true},{"a":30748,"n":"b_781C","k":"branch","len":1,"c":false},{"a":30789,"n":"room9_floor_and_collide","k":"routine","len":7,"c":true},{"a":30797,"n":"room9_lower_floor_jmp","k":"routine","len":3,"c":true},{"a":30800,"n":"room9_floor_logic","k":"routine","len":19,"c":true},{"a":30807,"n":"b_7857","k":"branch","len":1,"c":false},{"a":30811,"n":"b_785B","k":"branch","len":1,"c":false},{"a":30822,"n":"room9_upper_floor","k":"routine","len":91,"c":true},{"a":30839,"n":"r_7877","k":"branch","len":1,"c":false},{"a":30840,"n":"b_7878","k":"branch","len":1,"c":false},{"a":30866,"n":"b_7892","k":"branch","len":1,"c":false},{"a":30888,"n":"b_78A8","k":"branch","len":1,"c":false},{"a":30913,"n":"room9_upper_door_opened","k":"routine","len":124,"c":true},{"a":30934,"n":"b_78D6","k":"branch","len":1,"c":false},{"a":30938,"n":"b_78DA","k":"branch","len":1,"c":false},{"a":30956,"n":"b_78EC","k":"branch","len":1,"c":false},{"a":30985,"n":"b_7909","k":"branch","len":1,"c":false},{"a":31003,"n":"b_791B","k":"branch","len":1,"c":false},{"a":31024,"n":"r_7930","k":"branch","len":1,"c":false},{"a":31025,"n":"b_7931","k":"branch","len":1,"c":false},{"a":31037,"n":"room9_door_sound_and_patch","k":"routine","len":9,"c":true},{"a":31046,"n":"room9_lower_door_colour","k":"routine","len":1,"c":true},{"a":31047,"n":"room9_lower_door_colour_op","k":"routine","len":7,"c":true},{"a":31054,"n":"room9_lower_floor","k":"routine","len":194,"c":true},{"a":31076,"n":"b_7964","k":"branch","len":1,"c":false},{"a":31095,"n":"b_7977","k":"branch","len":1,"c":false},{"a":31142,"n":"b_79A6","k":"branch","len":1,"c":false},{"a":31146,"n":"b_79AA","k":"branch","len":1,"c":false},{"a":31160,"n":"r_79B8","k":"branch","len":1,"c":false},{"a":31161,"n":"b_79B9","k":"branch","len":1,"c":false},{"a":31183,"n":"b_79CF","k":"branch","len":1,"c":false},{"a":31193,"n":"r_79D9","k":"branch","len":1,"c":false},{"a":31194,"n":"b_79DA","k":"branch","len":1,"c":false},{"a":31207,"n":"b_79E7","k":"branch","len":1,"c":false},{"a":31225,"n":"b_79F9","k":"branch","len":1,"c":false},{"a":31247,"n":"r_7A0F","k":"branch","len":1,"c":false},{"a":31248,"n":"room9_which_floor","k":"routine","len":23,"c":true},{"a":31259,"n":"b_7A1B","k":"branch","len":1,"c":false},{"a":31267,"n":"b_7A23","k":"branch","len":1,"c":false},{"a":31280,"n":"room9_floor_check","k":"routine","len":27,"c":true},{"a":31288,"n":"b_7A38","k":"branch","len":1,"c":false},{"a":31293,"n":"b_7A3D","k":"branch","len":1,"c":false},{"a":31298,"n":"b_7A42","k":"branch","len":1,"c":false},{"a":31303,"n":"b_7A47","k":"branch","len":1,"c":false},{"a":31312,"n":"room9_respawn_hat","k":"routine","len":101,"c":true},{"a":31332,"n":"b_7A64","k":"branch","len":1,"c":false},{"a":31376,"n":"b_7A90","k":"branch","len":1,"c":false},{"a":31424,"n":"room10_sink_and_die","k":"routine","len":17,"c":true},{"a":31441,"n":"delay_6x256","k":"routine","len":13,"c":true},{"a":31443,"n":"b_7AD3","k":"branch","len":1,"c":false},{"a":31445,"n":"b_7AD5","k":"branch","len":1,"c":false},{"a":31456,"n":"room9_climb_top_ladder","k":"routine","len":28,"c":true},{"a":31461,"n":"b_7AE5","k":"branch","len":1,"c":false},{"a":31479,"n":"b_7AF7","k":"branch","len":1,"c":false},{"a":31488,"n":"room9_climb_lower_ladder","k":"routine","len":5,"c":true},{"a":31493,"n":"room9_ladder_loop","k":"routine","len":26,"c":true},{"a":31514,"n":"b_7B1A","k":"branch","len":1,"c":false},{"a":31520,"n":"room9_ladder_collision","k":"routine","len":24,"c":true},{"a":31543,"n":"r_7B37","k":"branch","len":1,"c":false},{"a":31552,"n":"unused_crouch_and_die","k":"routine","len":39,"c":true},{"a":31577,"n":"b_7B59","k":"branch","len":1,"c":false},{"a":31579,"n":"b_7B5B","k":"branch","len":1,"c":false},{"a":31600,"n":"room9_chaser","k":"routine","len":115,"c":true},{"a":31608,"n":"b_7B78","k":"branch","len":1,"c":false},{"a":31611,"n":"b_7B7B","k":"branch","len":1,"c":false},{"a":31623,"n":"b_7B87","k":"branch","len":1,"c":false},{"a":31626,"n":"b_7B8A","k":"branch","len":1,"c":false},{"a":31639,"n":"j_7B97","k":"branch","len":1,"c":false},{"a":31657,"n":"b_7BA9","k":"branch","len":1,"c":false},{"a":31669,"n":"b_7BB5","k":"branch","len":1,"c":false},{"a":31677,"n":"j_7BBD","k":"branch","len":1,"c":false},{"a":31695,"n":"b_7BCF","k":"branch","len":1,"c":false},{"a":31707,"n":"b_7BDB","k":"branch","len":1,"c":false},{"a":31744,"n":"golden_hat_bitmap","k":"table","len":80,"c":true},{"a":31824,"n":"draw_golden_hat","k":"routine","len":31,"c":true},{"a":31856,"n":"irq_tail_f1_music_switch","k":"routine","len":30,"c":true},{"a":31873,"n":"b_7C81","k":"branch","len":1,"c":false},{"a":31883,"n":"b_7C8B","k":"branch","len":1,"c":false},{"a":31904,"n":"small_figure_bitmap","k":"table","len":16,"c":true},{"a":31920,"n":"small_figure_bitmap_bottom","k":"table","len":15,"c":true},{"a":31935,"n":"win_check_exit","k":"routine","len":1,"c":true},{"a":31936,"n":"win_check_golden_hat","k":"routine","len":54,"c":true},{"a":31994,"n":"old_irq_flash_border","k":"routine","len":6,"c":true},{"a":32001,"n":"old_ending_walk_left","k":"routine","len":53,"c":true},{"a":32037,"n":"b_7D25","k":"branch","len":1,"c":false},{"a":32046,"n":"b_7D2E","k":"branch","len":1,"c":false},{"a":32054,"n":"old_ending_walk_right","k":"routine","len":55,"c":true},{"a":32090,"n":"b_7D5A","k":"branch","len":1,"c":false},{"a":32099,"n":"b_7D63","k":"branch","len":1,"c":false},{"a":32112,"n":"old_ending_tune","k":"table","len":184,"c":true},{"a":32296,"n":"lupenio_congratulation_text","k":"table","len":409,"c":true},{"a":32705,"n":"lupenio_text_bonus_digit","k":"table","len":41,"c":true},{"a":32768,"n":"wait_f1_replay","k":"routine","len":29,"c":true},{"a":32789,"n":"b_8015","k":"branch","len":1,"c":false},{"a":32800,"n":"game_over_reset_bonus","k":"routine","len":13,"c":true},{"a":32813,"n":"start_score_by_bonus","k":"routine","len":71,"c":true},{"a":32834,"n":"b_8042","k":"branch","len":1,"c":false},{"a":32836,"n":"b_8044","k":"branch","len":1,"c":false},{"a":32884,"n":"unused_zero_8074","k":"table","len":12,"c":true},{"a":32896,"n":"set_walk_frames","k":"routine","len":9,"c":true},{"a":32905,"n":"draw_room_digit_8","k":"routine","len":20,"c":true},{"a":32907,"n":"b_808B","k":"branch","len":1,"c":false},{"a":32925,"n":"set_1e08_sprite3_blue","k":"routine","len":6,"c":true},{"a":32931,"n":"all_sprites_off","k":"routine","len":9,"c":true},{"a":32944,"n":"bonus_200k","k":"routine","len":21,"c":true},{"a":32946,"n":"b_80B2","k":"branch","len":1,"c":false},{"a":32968,"n":"room11_check_hat_off","k":"routine","len":22,"c":true},{"a":32989,"n":"r_80DD","k":"branch","len":1,"c":false},{"a":32992,"n":"room11_hat_to_ladder_top","k":"routine","len":32,"c":true},{"a":33024,"n":"draw_stage_digit_2","k":"routine","len":20,"c":true},{"a":33026,"n":"b_8102","k":"branch","len":1,"c":false},{"a":33044,"n":"draw_stage_digit_3","k":"routine","len":20,"c":true},{"a":33046,"n":"b_8116","k":"branch","len":1,"c":false},{"a":33064,"n":"stage2_status","k":"routine","len":8,"c":true},{"a":33072,"n":"room2_flash_stage2","k":"routine","len":7,"c":true},{"a":33079,"n":"room5_status","k":"routine","len":7,"c":true},{"a":33086,"n":"fill_then_stage3","k":"routine","len":7,"c":true},{"a":33093,"n":"sprite2_y35_clear99","k":"routine","len":10,"c":true},{"a":33103,"n":"clear99_face_right","k":"routine","len":8,"c":true},{"a":33111,"n":"room5_floor_dispatch","k":"routine","len":23,"c":true},{"a":33122,"n":"b_8162","k":"branch","len":1,"c":false},{"a":33130,"n":"b_816A","k":"branch","len":1,"c":false},{"a":33134,"n":"unref_sprite3_setup_816e","k":"routine","len":64,"c":true},{"a":33200,"n":"fill_d022_sprite0_black","k":"routine","len":17,"c":true},{"a":33217,"n":"fill_sprite0_y5f","k":"routine","len":9,"c":true},{"a":33226,"n":"unref_rts_81ca","k":"routine","len":3,"c":true},{"a":33229,"n":"fill_sprite0_y0","k":"routine","len":9,"c":true},{"a":33238,"n":"kill_if_cell_0460_zero","k":"routine","len":11,"c":true},{"a":33248,"n":"r_81E0","k":"branch","len":1,"c":false},{"a":33249,"n":"hide_room_second_digit","k":"routine","len":17,"c":true},{"a":33272,"n":"unref_silence_v1_81f8","k":"routine","len":7,"c":true},{"a":33280,"n":"sprites_off_irq_8215","k":"routine","len":21,"c":true},{"a":33301,"n":"irq_between_rooms","k":"routine","len":3,"c":true},{"a":33304,"n":"unused_zero_8218","k":"table","len":22,"c":true},{"a":33326,"n":"room11_lift_sprite","k":"routine","len":53,"c":true},{"a":33381,"n":"room11_lower_rules","k":"routine","len":136,"c":true},{"a":33416,"n":"j_8288","k":"branch","len":1,"c":false},{"a":33435,"n":"r_829B","k":"branch","len":1,"c":false},{"a":33436,"n":"b_829C","k":"branch","len":1,"c":false},{"a":33467,"n":"b_82BB","k":"branch","len":1,"c":false},{"a":33494,"n":"b_82D6","k":"branch","len":1,"c":false},{"a":33509,"n":"b_82E5","k":"branch","len":1,"c":false},{"a":33513,"n":"b_82E9","k":"branch","len":1,"c":false},{"a":33521,"n":"unref_noise_v1_82f1","k":"routine","len":6,"c":true},{"a":33527,"n":"unused_zero_82f7","k":"table","len":9,"c":true},{"a":33536,"n":"room10_setup","k":"routine","len":271,"c":true},{"a":33736,"n":"b_83C8","k":"branch","len":1,"c":false},{"a":33755,"n":"b_83DB","k":"branch","len":1,"c":false},{"a":33782,"n":"b_83F6","k":"branch","len":1,"c":false},{"a":33808,"n":"room10_loop","k":"routine","len":67,"c":true},{"a":33821,"n":"b_841D","k":"branch","len":1,"c":false},{"a":33849,"n":"b_8439","k":"branch","len":1,"c":false},{"a":33875,"n":"room10_fill_4ac9","k":"routine","len":12,"c":true},{"a":33887,"n":"room10_start","k":"routine","len":20,"c":true},{"a":33907,"n":"unused_zero_8473","k":"table","len":13,"c":true},{"a":33920,"n":"room11_setup","k":"routine","len":131,"c":true},{"a":34051,"n":"room11_block_colour","k":"routine","len":140,"c":true},{"a":34067,"n":"b_8513","k":"branch","len":1,"c":false},{"a":34086,"n":"b_8526","k":"branch","len":1,"c":false},{"a":34192,"n":"bonus_400k","k":"routine","len":21,"c":true},{"a":34194,"n":"b_8592","k":"branch","len":1,"c":false},{"a":34204,"n":"b_859C","k":"branch","len":1,"c":false},{"a":34213,"n":"room11_setup_pictures","k":"routine","len":33,"c":true},{"a":34246,"n":"unused_zero_85c6","k":"table","len":10,"c":true},{"a":34256,"n":"tune2_note_off","k":"routine","len":15,"c":true},{"a":34258,"n":"b_85D2","k":"branch","len":1,"c":false},{"a":34271,"n":"tune1_note_off","k":"routine","len":15,"c":true},{"a":34273,"n":"b_85E1","k":"branch","len":1,"c":false},{"a":34286,"n":"unused_zero_85ee","k":"table","len":18,"c":true},{"a":34304,"n":"room11_place_sprites","k":"routine","len":93,"c":true},{"a":34400,"n":"room11_irq","k":"routine","len":71,"c":true},{"a":34410,"n":"b_866A","k":"branch","len":1,"c":false},{"a":34418,"n":"b_8672","k":"branch","len":1,"c":false},{"a":34421,"n":"b_8675","k":"branch","len":1,"c":false},{"a":34441,"n":"b_8689","k":"branch","len":1,"c":false},{"a":34444,"n":"b_868C","k":"branch","len":1,"c":false},{"a":34462,"n":"j_869E","k":"branch","len":1,"c":false},{"a":34471,"n":"unused_zero_86a7","k":"table","len":9,"c":true},{"a":34480,"n":"room11_loop","k":"routine","len":62,"c":true},{"a":34489,"n":"b_86B9","k":"branch","len":1,"c":false},{"a":34508,"n":"b_86CC","k":"branch","len":1,"c":false},{"a":34518,"n":"b_86D6","k":"branch","len":1,"c":false},{"a":34531,"n":"b_86E3","k":"branch","len":1,"c":false},{"a":34542,"n":"room11_jump","k":"routine","len":190,"c":true},{"a":34557,"n":"b_86FD","k":"branch","len":1,"c":false},{"a":34589,"n":"b_871D","k":"branch","len":1,"c":false},{"a":34615,"n":"b_8737","k":"branch","len":1,"c":false},{"a":34639,"n":"b_874F","k":"branch","len":1,"c":false},{"a":34642,"n":"b_8752","k":"branch","len":1,"c":false},{"a":34647,"n":"b_8757","k":"branch","len":1,"c":false},{"a":34682,"n":"b_877A","k":"branch","len":1,"c":false},{"a":34708,"n":"b_8794","k":"branch","len":1,"c":false},{"a":34732,"n":"room11_fire_with_stick","k":"routine","len":23,"c":true},{"a":34745,"n":"b_87B9","k":"branch","len":1,"c":false},{"a":34755,"n":"dead_jsr_87c3","k":"routine","len":6,"c":true},{"a":34758,"n":"j_87C6","k":"branch","len":1,"c":false},{"a":34761,"n":"unused_zero_87c9","k":"table","len":23,"c":true},{"a":34784,"n":"room11_fire_jump_test","k":"routine","len":28,"c":true},{"a":34794,"n":"b_87EA","k":"branch","len":1,"c":false},{"a":34804,"n":"b_87F4","k":"branch","len":1,"c":false},{"a":34816,"n":"room11_stand_frame","k":"routine","len":23,"c":true},{"a":34831,"n":"b_880F","k":"branch","len":1,"c":false},{"a":34840,"n":"room11_crouch","k":"routine","len":24,"c":true},{"a":34844,"n":"b_881C","k":"branch","len":1,"c":false},{"a":34864,"n":"unref_rts_8830","k":"routine","len":1,"c":true},{"a":34865,"n":"unused_zero_8831","k":"table","len":12,"c":true},{"a":34877,"n":"unref_jmp_88db","k":"routine","len":3,"c":true},{"a":34880,"n":"room11_irq_flash","k":"routine","len":61,"c":true},{"a":34912,"n":"b_8860","k":"branch","len":1,"c":false},{"a":34938,"n":"b_887A","k":"branch","len":1,"c":false},{"a":34944,"n":"unref_irq_hide_hat_8880","k":"routine","len":23,"c":true},{"a":34964,"n":"b_8894","k":"branch","len":1,"c":false},{"a":34967,"n":"unused_zero_8897","k":"table","len":9,"c":true},{"a":34976,"n":"unref_irq_draw_7ca0_a","k":"routine","len":22,"c":true},{"a":34978,"n":"b_88A2","k":"branch","len":1,"c":false},{"a":34998,"n":"unref_irq_draw_7ca0_b","k":"routine","len":37,"c":true},{"a":35000,"n":"b_88B8","k":"branch","len":1,"c":false},{"a":35015,"n":"b_88C7","k":"branch","len":1,"c":false},{"a":35035,"n":"unref_irq_draw_7ca0_c","k":"routine","len":37,"c":true},{"a":35037,"n":"b_88DD","k":"branch","len":1,"c":false},{"a":35052,"n":"b_88EC","k":"branch","len":1,"c":false},{"a":35072,"n":"room11_step","k":"routine","len":3,"c":true},{"a":35080,"n":"room11_rules","k":"routine","len":10,"c":true},{"a":35087,"n":"b_890F","k":"branch","len":1,"c":false},{"a":35090,"n":"room11_position_rules","k":"routine","len":55,"c":true},{"a":35097,"n":"b_8919","k":"branch","len":1,"c":false},{"a":35100,"n":"r_891C","k":"branch","len":1,"c":false},{"a":35101,"n":"b_891D","k":"branch","len":1,"c":false},{"a":35130,"n":"b_893A","k":"branch","len":1,"c":false},{"a":35145,"n":"room11_ladder","k":"routine","len":88,"c":true},{"a":35173,"n":"b_8965","k":"branch","len":1,"c":false},{"a":35178,"n":"b_896A","k":"branch","len":1,"c":false},{"a":35203,"n":"j_8983","k":"branch","len":1,"c":false},{"a":35222,"n":"b_8996","k":"branch","len":1,"c":false},{"a":35232,"n":"r_89A0","k":"branch","len":1,"c":false},{"a":35233,"n":"room11_right_wall","k":"routine","len":15,"c":true},{"a":35244,"n":"j_89AC","k":"branch","len":1,"c":false},{"a":35248,"n":"unused_zero_89b0","k":"table","len":32,"c":true},{"a":35280,"n":"tune2_irq","k":"routine","len":48,"c":true},{"a":35298,"n":"b_89E2","k":"branch","len":1,"c":false},{"a":35301,"n":"b_89E5","k":"branch","len":1,"c":false},{"a":35308,"n":"b_89EC","k":"branch","len":1,"c":false},{"a":35328,"n":"tune2_entry","k":"routine","len":3,"c":true},{"a":35331,"n":"tune2_count","k":"routine","len":14,"c":true},{"a":35345,"n":"tune2_next_note","k":"routine","len":23,"c":true},{"a":35368,"n":"tune2_ptr_lo","k":"routine","len":6,"c":true},{"a":35374,"n":"tune2_ptr_hi","k":"routine","len":6,"c":true},{"a":35380,"n":"tune2_ptr_len","k":"routine","len":40,"c":true},{"a":35402,"n":"b_8A4A","k":"branch","len":1,"c":false},{"a":35417,"n":"b_8A59","k":"branch","len":1,"c":false},{"a":35424,"n":"tune2_freq_lo","k":"table","len":106,"c":true},{"a":35536,"n":"add_1000_flag_1015","k":"routine","len":9,"c":true},{"a":35545,"n":"unused_zero_8ad9","k":"table","len":39,"c":true},{"a":35584,"n":"tune2_freq_hi","k":"table","len":106,"c":true},{"a":35690,"n":"unused_zero_8b6a","k":"table","len":38,"c":true},{"a":35728,"n":"tune2_lengths","k":"table","len":84,"c":true},{"a":35812,"n":"tune2_len_b4f0","k":"table","len":28,"c":true},{"a":35840,"n":"tune1_irq","k":"routine","len":46,"c":true},{"a":35858,"n":"b_8C12","k":"branch","len":1,"c":false},{"a":35861,"n":"b_8C15","k":"branch","len":1,"c":false},{"a":35868,"n":"b_8C1C","k":"branch","len":1,"c":false},{"a":35888,"n":"unref_jmp_8c00","k":"routine","len":3,"c":true},{"a":35891,"n":"tune1_count","k":"routine","len":14,"c":true},{"a":35905,"n":"tune1_next_note","k":"routine","len":23,"c":true},{"a":35928,"n":"tune1_ptr_d022","k":"routine","len":6,"c":true},{"a":35934,"n":"tune1_ptr_hi","k":"routine","len":6,"c":true},{"a":35940,"n":"tune1_ptr_len","k":"routine","len":40,"c":true},{"a":35962,"n":"b_8C7A","k":"branch","len":1,"c":false},{"a":35977,"n":"b_8C89","k":"branch","len":1,"c":false},{"a":35984,"n":"tune1_d022_notes","k":"table","len":95,"c":true},{"a":36079,"n":"unused_zero_8cef","k":"table","len":65,"c":true},{"a":36144,"n":"tune1_freq_hi","k":"table","len":96,"c":true},{"a":36240,"n":"tune1_lengths","k":"table","len":120,"c":true},{"a":36360,"n":"pickups_after_4c40","k":"routine","len":7,"c":true},{"a":36368,"n":"collisions_and_pickups","k":"routine","len":3,"c":true},{"a":36371,"n":"room_object_pickups","k":"routine","len":403,"c":true},{"a":36421,"n":"r_8E45","k":"branch","len":1,"c":false},{"a":36422,"n":"b_8E46","k":"branch","len":1,"c":false},{"a":36455,"n":"r_8E67","k":"branch","len":1,"c":false},{"a":36456,"n":"b_8E68","k":"branch","len":1,"c":false},{"a":36503,"n":"r_8E97","k":"branch","len":1,"c":false},{"a":36504,"n":"b_8E98","k":"branch","len":1,"c":false},{"a":36551,"n":"r_8EC7","k":"branch","len":1,"c":false},{"a":36552,"n":"b_8EC8","k":"branch","len":1,"c":false},{"a":36585,"n":"r_8EE9","k":"branch","len":1,"c":false},{"a":36586,"n":"b_8EEA","k":"branch","len":1,"c":false},{"a":36633,"n":"r_8F19","k":"branch","len":1,"c":false},{"a":36634,"n":"b_8F1A","k":"branch","len":1,"c":false},{"a":36687,"n":"r_8F4F","k":"branch","len":1,"c":false},{"a":36688,"n":"b_8F50","k":"branch","len":1,"c":false},{"a":36721,"n":"r_8F71","k":"branch","len":1,"c":false},{"a":36722,"n":"b_8F72","k":"branch","len":1,"c":false},{"a":36769,"n":"r_8FA1","k":"branch","len":1,"c":false},{"a":36770,"n":"b_8FA2","k":"branch","len":1,"c":false},{"a":36776,"n":"draw_objects_8fa8","k":"routine","len":11,"c":true},{"a":36787,"n":"draw_objects_8fb3","k":"routine","len":15,"c":true},{"a":36802,"n":"unused_zero_8fc2","k":"table","len":46,"c":true},{"a":36848,"n":"to_room7_setup","k":"routine","len":12,"c":true},{"a":36860,"n":"enter_room4_or_7","k":"routine","len":4,"c":true},{"a":36864,"n":"room47_enter","k":"routine","len":35,"c":true},{"a":36899,"n":"room47_colour_rows","k":"routine","len":13,"c":true},{"a":36901,"n":"b_9025","k":"branch","len":1,"c":false},{"a":36912,"n":"room4_setup","k":"routine","len":149,"c":true},{"a":36924,"n":"b_903C","k":"branch","len":1,"c":false},{"a":37043,"n":"b_90B3","k":"branch","len":1,"c":false},{"a":37061,"n":"room47_start_play","k":"routine","len":58,"c":true},{"a":37120,"n":"room47_colour_block_at_99","k":"routine","len":99,"c":true},{"a":37219,"n":"copy_1191_to_35d8","k":"routine","len":8,"c":true},{"a":37221,"n":"b_9165","k":"branch","len":1,"c":false},{"a":37223,"n":"b_9167","k":"branch","len":1,"c":false},{"a":37227,"n":"copy_1191_src_lo","k":"routine","len":1,"c":true},{"a":37228,"n":"copy_1191_src_hi","k":"routine","len":36,"c":true},{"a":37257,"n":"b_9189","k":"branch","len":1,"c":false},{"a":37264,"n":"copy_1281_to_36c8","k":"routine","len":26,"c":true},{"a":37284,"n":"b_91A4","k":"branch","len":1,"c":false},{"a":37286,"n":"b_91A6","k":"branch","len":1,"c":false},{"a":37290,"n":"copy_1281_src_lo","k":"routine","len":1,"c":true},{"a":37291,"n":"copy_1281_src_hi","k":"routine","len":7,"c":true},{"a":37298,"n":"draw_7265_panel","k":"routine","len":134,"c":true},{"a":37432,"n":"irq_tail_anim_5039","k":"routine","len":13,"c":true},{"a":37444,"n":"b_9244","k":"branch","len":1,"c":false},{"a":37445,"n":"anim_5039_src_lo","k":"routine","len":29,"c":true},{"a":37471,"n":"b_925F","k":"branch","len":1,"c":false},{"a":37477,"n":"bitmap_mode_on","k":"routine","len":42,"c":true},{"a":37535,"n":"text_mode_call_a000","k":"routine","len":27,"c":true},{"a":37568,"n":"reset_patched_bytes","k":"routine","len":63,"c":true},{"a":37631,"n":"rts_92ff","k":"routine","len":1,"c":true},{"a":37632,"n":"room4_irq_tail","k":"routine","len":29,"c":true},{"a":37658,"n":"b_931A","k":"branch","len":1,"c":false},{"a":37661,"n":"room47_loop_start","k":"routine","len":3,"c":true},{"a":37664,"n":"room47_loop","k":"routine","len":62,"c":true},{"a":37673,"n":"b_9329","k":"branch","len":1,"c":false},{"a":37692,"n":"b_933C","k":"branch","len":1,"c":false},{"a":37702,"n":"b_9346","k":"branch","len":1,"c":false},{"a":37715,"n":"b_9353","k":"branch","len":1,"c":false},{"a":37726,"n":"room47_jump","k":"routine","len":190,"c":true},{"a":37741,"n":"b_936D","k":"branch","len":1,"c":false},{"a":37773,"n":"b_938D","k":"branch","len":1,"c":false},{"a":37799,"n":"b_93A7","k":"branch","len":1,"c":false},{"a":37823,"n":"b_93BF","k":"branch","len":1,"c":false},{"a":37826,"n":"b_93C2","k":"branch","len":1,"c":false},{"a":37831,"n":"b_93C7","k":"branch","len":1,"c":false},{"a":37866,"n":"b_93EA","k":"branch","len":1,"c":false},{"a":37892,"n":"b_9404","k":"branch","len":1,"c":false},{"a":37916,"n":"room47_fire_diagonal","k":"routine","len":23,"c":true},{"a":37929,"n":"b_9429","k":"branch","len":1,"c":false},{"a":37939,"n":"dead_jsr_9433","k":"routine","len":6,"c":true},{"a":37942,"n":"j_9436","k":"branch","len":1,"c":false},{"a":37968,"n":"room47_diagonal_jump_check","k":"routine","len":28,"c":true},{"a":37978,"n":"b_945A","k":"branch","len":1,"c":false},{"a":37988,"n":"b_9464","k":"branch","len":1,"c":false},{"a":38000,"n":"room47_loop_end","k":"routine","len":23,"c":true},{"a":38015,"n":"b_947F","k":"branch","len":1,"c":false},{"a":38024,"n":"hat_crouch_while_down","k":"routine","len":24,"c":true},{"a":38028,"n":"b_948C","k":"branch","len":1,"c":false},{"a":38048,"n":"room47_step_checks","k":"routine","len":7,"c":true},{"a":38055,"n":"room47_edges_exits","k":"routine","len":199,"c":true},{"a":38066,"n":"b_94B2","k":"branch","len":1,"c":false},{"a":38074,"n":"b_94BA","k":"branch","len":1,"c":false},{"a":38103,"n":"b_94D7","k":"branch","len":1,"c":false},{"a":38124,"n":"r_94EC","k":"branch","len":1,"c":false},{"a":38125,"n":"b_94ED","k":"branch","len":1,"c":false},{"a":38139,"n":"b_94FB","k":"branch","len":1,"c":false},{"a":38147,"n":"b_9503","k":"branch","len":1,"c":false},{"a":38155,"n":"b_950B","k":"branch","len":1,"c":false},{"a":38163,"n":"b_9513","k":"branch","len":1,"c":false},{"a":38171,"n":"b_951B","k":"branch","len":1,"c":false},{"a":38179,"n":"b_9523","k":"branch","len":1,"c":false},{"a":38187,"n":"b_952B","k":"branch","len":1,"c":false},{"a":38195,"n":"b_9533","k":"branch","len":1,"c":false},{"a":38199,"n":"r_9537","k":"branch","len":1,"c":false},{"a":38200,"n":"b_9538","k":"branch","len":1,"c":false},{"a":38214,"n":"b_9546","k":"branch","len":1,"c":false},{"a":38222,"n":"b_954E","k":"branch","len":1,"c":false},{"a":38230,"n":"b_9556","k":"branch","len":1,"c":false},{"a":38238,"n":"b_955E","k":"branch","len":1,"c":false},{"a":38246,"n":"b_9566","k":"branch","len":1,"c":false},{"a":38254,"n":"dead_cmp_956e","k":"routine","len":16,"c":true},{"a":38258,"n":"b_9572","k":"branch","len":1,"c":false},{"a":38262,"n":"b_9576","k":"branch","len":1,"c":false},{"a":38270,"n":"dead_cmp_957e","k":"routine","len":5,"c":true},{"a":38274,"n":"r_9582","k":"branch","len":1,"c":false},{"a":38275,"n":"clear_step_count_99","k":"routine","len":5,"c":true},{"a":38280,"n":"hat_y_floor_b4","k":"routine","len":6,"c":true},{"a":38288,"n":"clear_fb_12_99","k":"routine","len":9,"c":true},{"a":38304,"n":"room7_setup","k":"routine","len":221,"c":true},{"a":38316,"n":"b_95AC","k":"branch","len":1,"c":false},{"a":38504,"n":"b_9668","k":"branch","len":1,"c":false},{"a":38525,"n":"hat_reset_colour","k":"routine","len":12,"c":true},{"a":38537,"n":"set_d022_70","k":"routine","len":16,"c":true},{"a":38552,"n":"r_9698","k":"branch","len":1,"c":false},{"a":38553,"n":"edges_if_sprites_on","k":"routine","len":11,"c":true},{"a":38563,"n":"r_96A3","k":"branch","len":1,"c":false},{"a":38564,"n":"room47_loop_init","k":"routine","len":9,"c":true},{"a":38576,"n":"anim_5069_if_room_e0","k":"routine","len":20,"c":true},{"a":38595,"n":"b_96C3","k":"branch","len":1,"c":false},{"a":38596,"n":"anim_5069_src_lo","k":"routine","len":27,"c":true},{"a":38622,"n":"b_96DE","k":"branch","len":1,"c":false},{"a":38640,"n":"mon_setmsg_bank36","k":"routine","len":8,"c":true},{"a":38656,"n":"fill_9700","k":"table","len":237,"c":true},{"a":38893,"n":"mon_cold_start","k":"routine","len":18,"c":true},{"a":38911,"n":"mon_brk_entry","k":"routine","len":52,"c":true},{"a":38963,"n":"mon_inc_addr","k":"routine","len":11,"c":true},{"a":38973,"n":"r_983D","k":"branch","len":1,"c":false},{"a":38974,"n":"mon_getc","k":"routine","len":9,"c":true},{"a":38983,"n":"mon_prompt","k":"routine","len":57,"c":true},{"a":39004,"n":"b_985C","k":"branch","len":1,"c":false},{"a":39015,"n":"b_9867","k":"branch","len":1,"c":false},{"a":39017,"n":"b_9869","k":"branch","len":1,"c":false},{"a":39034,"n":"b_987A","k":"branch","len":1,"c":false},{"a":39040,"n":"mon_addr_to_pc","k":"routine","len":11,"c":true},{"a":39051,"n":"mon_hexdump_8","k":"routine","len":2,"c":true},{"a":39053,"n":"mon_hexdump_n","k":"routine","len":20,"c":true},{"a":39057,"n":"b_9891","k":"branch","len":1,"c":false},{"a":39073,"n":"mon_poke_byte","k":"routine","len":22,"c":true},{"a":39089,"n":"b_98B1","k":"branch","len":1,"c":false},{"a":39095,"n":"mon_point_regs","k":"routine","len":11,"c":true},{"a":39106,"n":"mon_newline_dot","k":"routine","len":11,"c":true},{"a":39117,"n":"mon_cmd_r","k":"routine","len":43,"c":true},{"a":39124,"n":"b_98D4","k":"branch","len":1,"c":false},{"a":39160,"n":"mon_cmd_m","k":"routine","len":62,"c":true},{"a":39187,"n":"b_9913","k":"branch","len":1,"c":false},{"a":39219,"n":"b_9933","k":"branch","len":1,"c":false},{"a":39222,"n":"mon_cmd_semicolon","k":"routine","len":13,"c":true},{"a":39230,"n":"b_993E","k":"branch","len":1,"c":false},{"a":39235,"n":"mon_cmd_colon","k":"routine","len":20,"c":true},{"a":39242,"n":"b_994A","k":"branch","len":1,"c":false},{"a":39244,"n":"b_994C","k":"branch","len":1,"c":false},{"a":39252,"n":"b_9954","k":"branch","len":1,"c":false},{"a":39255,"n":"mon_cmd_g","k":"routine","len":51,"c":true},{"a":39274,"n":"b_996A","k":"branch","len":1,"c":false},{"a":39306,"n":"mon_cmd_x","k":"routine","len":12,"c":true},{"a":39318,"n":"mon_parse_file_args","k":"routine","len":89,"c":true},{"a":39339,"n":"b_99AB","k":"branch","len":1,"c":false},{"a":39352,"n":"b_99B8","k":"branch","len":1,"c":false},{"a":39354,"n":"b_99BA","k":"branch","len":1,"c":false},{"a":39372,"n":"b_99CC","k":"branch","len":1,"c":false},{"a":39374,"n":"b_99CE","k":"branch","len":1,"c":false},{"a":39377,"n":"b_99D1","k":"branch","len":1,"c":false},{"a":39406,"n":"r_99EE","k":"branch","len":1,"c":false},{"a":39407,"n":"mon_call_load","k":"routine","len":3,"c":true},{"a":39410,"n":"mon_call_save","k":"routine","len":3,"c":true},{"a":39413,"n":"mon_cmd_l","k":"routine","len":24,"c":true},{"a":39437,"n":"mon_cmd_s","k":"routine","len":52,"c":true},{"a":39489,"n":"mon_print_addr","k":"routine","len":7,"c":true},{"a":39496,"n":"mon_print_hex","k":"routine","len":15,"c":true},{"a":39511,"n":"mon_print_xa","k":"routine","len":9,"c":true},{"a":39520,"n":"mon_nybble_char","k":"routine","len":9,"c":true},{"a":39528,"n":"r_9A68","k":"branch","len":1,"c":false},{"a":39529,"n":"mon_swap_c1_c3","k":"routine","len":16,"c":true},{"a":39531,"n":"b_9A6B","k":"branch","len":1,"c":false},{"a":39545,"n":"mon_read_addr","k":"routine","len":3,"c":true},{"a":39548,"n":"mon_read_addr_lo","k":"routine","len":12,"c":true},{"a":39552,"n":"b_9A80","k":"branch","len":1,"c":false},{"a":39559,"n":"r_9A87","k":"branch","len":1,"c":false},{"a":39560,"n":"mon_read_hex_byte","k":"routine","len":7,"c":true},{"a":39567,"n":"mon_read_hex_byte_a","k":"routine","len":32,"c":true},{"a":39580,"n":"b_9A9C","k":"branch","len":1,"c":false},{"a":39592,"n":"b_9AA8","k":"branch","len":1,"c":false},{"a":39599,"n":"mon_hex_digit","k":"routine","len":9,"c":true},{"a":39605,"n":"b_9AB5","k":"branch","len":1,"c":false},{"a":39608,"n":"mon_dec_c3","k":"routine","len":3,"c":true},{"a":39611,"n":"mon_dec_c1","k":"routine","len":17,"c":true},{"a":39623,"n":"b_9AC7","k":"branch","len":1,"c":false},{"a":39625,"n":"b_9AC9","k":"branch","len":1,"c":false},{"a":39627,"n":"r_9ACB","k":"branch","len":1,"c":false},{"a":39628,"n":"mon_skip_spaces","k":"routine","len":8,"c":true},{"a":39636,"n":"mon_read_first_addr","k":"routine","len":17,"c":true},{"a":39653,"n":"mon_read_addr_or_error","k":"routine","len":8,"c":true},{"a":39661,"n":"mon_error","k":"routine","len":17,"c":true},{"a":39678,"n":"mon_print_spaces","k":"routine","len":7,"c":true},{"a":39685,"n":"mon_inc_c3","k":"routine","len":7,"c":true},{"a":39691,"n":"r_9B0B","k":"branch","len":1,"c":false},{"a":39692,"n":"mon_swap_c1_27","k":"routine","len":16,"c":true},{"a":39694,"n":"b_9B0E","k":"branch","len":1,"c":false},{"a":39708,"n":"mon_branch_offset","k":"routine","len":12,"c":true},{"a":39720,"n":"mon_len_28","k":"routine","len":7,"c":true},{"a":39727,"n":"mon_len_c3","k":"routine","len":16,"c":true},{"a":39731,"n":"b_9B33","k":"branch","len":1,"c":false},{"a":39743,"n":"mon_cmd_t","k":"routine","len":84,"c":true},{"a":39766,"n":"b_9B56","k":"branch","len":1,"c":false},{"a":39787,"n":"b_9B6B","k":"branch","len":1,"c":false},{"a":39805,"n":"j_9B7D","k":"branch","len":1,"c":false},{"a":39827,"n":"mon_cmd_f","k":"routine","len":46,"c":true},{"a":39849,"n":"b_9BA9","k":"branch","len":1,"c":false},{"a":39867,"n":"b_9BBB","k":"branch","len":1,"c":false},{"a":39870,"n":"b_9BBE","k":"branch","len":1,"c":false},{"a":39873,"n":"mon_cmd_h","k":"routine","len":120,"c":true},{"a":39900,"n":"b_9BDC","k":"branch","len":1,"c":false},{"a":39917,"n":"b_9BED","k":"branch","len":1,"c":false},{"a":39925,"n":"b_9BF5","k":"branch","len":1,"c":false},{"a":39945,"n":"b_9C09","k":"branch","len":1,"c":false},{"a":39955,"n":"b_9C13","k":"branch","len":1,"c":false},{"a":39959,"n":"b_9C17","k":"branch","len":1,"c":false},{"a":39978,"n":"b_9C2A","k":"branch","len":1,"c":false},{"a":39993,"n":"mon_cmd_d","k":"routine","len":13,"c":true},{"a":40006,"n":"mon_disasm_page","k":"routine","len":36,"c":true},{"a":40020,"n":"b_9C54","k":"branch","len":1,"c":false},{"a":40042,"n":"mon_disasm_line","k":"routine","len":8,"c":true},{"a":40050,"n":"mon_disasm_line_body","k":"routine","len":80,"c":true},{"a":40073,"n":"b_9C89","k":"branch","len":1,"c":false},{"a":40081,"n":"b_9C91","k":"branch","len":1,"c":false},{"a":40095,"n":"b_9C9F","k":"branch","len":1,"c":false},{"a":40113,"n":"b_9CB1","k":"branch","len":1,"c":false},{"a":40117,"n":"b_9CB5","k":"branch","len":1,"c":false},{"a":40125,"n":"b_9CBD","k":"branch","len":1,"c":false},{"a":40130,"n":"mon_print_hex_keep_x","k":"routine","len":8,"c":true},{"a":40138,"n":"mon_next_instr","k":"routine","len":3,"c":true},{"a":40141,"n":"mon_add_offset","k":"routine","len":12,"c":true},{"a":40147,"n":"b_9CD3","k":"branch","len":1,"c":false},{"a":40152,"n":"r_9CD8","k":"branch","len":1,"c":false},{"a":40153,"n":"mon_decode_opcode","k":"routine","len":70,"c":true},{"a":40168,"n":"b_9CE8","k":"branch","len":1,"c":false},{"a":40179,"n":"b_9CF3","k":"branch","len":1,"c":false},{"a":40183,"n":"b_9CF7","k":"branch","len":1,"c":false},{"a":40187,"n":"b_9CFB","k":"branch","len":1,"c":false},{"a":40208,"n":"b_9D10","k":"branch","len":1,"c":false},{"a":40212,"n":"b_9D14","k":"branch","len":1,"c":false},{"a":40219,"n":"b_9D1B","k":"branch","len":1,"c":false},{"a":40223,"n":"mon_print_instr_bytes","k":"routine","len":22,"c":true},{"a":40230,"n":"b_9D26","k":"branch","len":1,"c":false},{"a":40245,"n":"mon_print_mnemonic","k":"routine","len":31,"c":true},{"a":40256,"n":"b_9D40","k":"branch","len":1,"c":false},{"a":40260,"n":"b_9D44","k":"branch","len":1,"c":false},{"a":40276,"n":"mon_print_space","k":"routine","len":3,"c":true},{"a":40279,"n":"mon_print_cr","k":"routine","len":5,"c":true},{"a":40284,"n":"mon_cmd_p","k":"routine","len":47,"c":true},{"a":40305,"n":"b_9D71","k":"branch","len":1,"c":false},{"a":40328,"n":"b_9D88","k":"branch","len":1,"c":false},{"a":40331,"n":"mon_cmd_comma","k":"routine","len":26,"c":true},{"a":40338,"n":"b_9D92","k":"branch","len":1,"c":false},{"a":40357,"n":"mon_print_unless_28","k":"routine","len":8,"c":true},{"a":40364,"n":"r_9DAC","k":"branch","len":1,"c":false},{"a":40365,"n":"mon_cmd_a","k":"routine","len":3,"c":true},{"a":40368,"n":"mon_assemble_next","k":"routine","len":264,"c":true},{"a":40376,"n":"b_9DB8","k":"branch","len":1,"c":false},{"a":40385,"n":"b_9DC1","k":"branch","len":1,"c":false},{"a":40391,"n":"b_9DC7","k":"branch","len":1,"c":false},{"a":40406,"n":"b_9DD6","k":"branch","len":1,"c":false},{"a":40437,"n":"b_9DF5","k":"branch","len":1,"c":false},{"a":40443,"n":"b_9DFB","k":"branch","len":1,"c":false},{"a":40451,"n":"b_9E03","k":"branch","len":1,"c":false},{"a":40455,"n":"b_9E07","k":"branch","len":1,"c":false},{"a":40482,"n":"b_9E22","k":"branch","len":1,"c":false},{"a":40490,"n":"b_9E2A","k":"branch","len":1,"c":false},{"a":40511,"n":"b_9E3F","k":"branch","len":1,"c":false},{"a":40526,"n":"b_9E4E","k":"branch","len":1,"c":false},{"a":40531,"n":"b_9E53","k":"branch","len":1,"c":false},{"a":40541,"n":"b_9E5D","k":"branch","len":1,"c":false},{"a":40572,"n":"b_9E7C","k":"branch","len":1,"c":false},{"a":40575,"n":"b_9E7F","k":"branch","len":1,"c":false},{"a":40582,"n":"b_9E86","k":"branch","len":1,"c":false},{"a":40586,"n":"b_9E8A","k":"branch","len":1,"c":false},{"a":40589,"n":"b_9E8D","k":"branch","len":1,"c":false},{"a":40594,"n":"b_9E92","k":"branch","len":1,"c":false},{"a":40632,"n":"mon_match_pair","k":"routine","len":1,"c":true},{"a":40633,"n":"mon_match_two","k":"routine","len":6,"c":true},{"a":40639,"n":"mon_match_one","k":"routine","len":2,"c":true},{"a":40641,"n":"mon_match_char","k":"routine","len":15,"c":true},{"a":40655,"n":"r_9ECF","k":"branch","len":1,"c":false},{"a":40656,"n":"mon_is_hex_char","k":"routine","len":9,"c":true},{"a":40663,"n":"b_9ED7","k":"branch","len":1,"c":false},{"a":40665,"n":"mon_mode_table","k":"table","len":68,"c":true},{"a":40733,"n":"mon_format_table","k":"table","len":13,"c":true},{"a":40746,"n":"mon_char1_base","k":"variable","len":1,"c":true},{"a":40747,"n":"mon_char1_table","k":"table","len":5,"c":true},{"a":40752,"n":"mon_char2_base","k":"variable","len":1,"c":true},{"a":40753,"n":"mon_char2_table","k":"table","len":6,"c":true},{"a":40759,"n":"mon_mnemonic_left","k":"table","len":64,"c":true},{"a":40823,"n":"mon_mnemonic_right","k":"table","len":64,"c":true},{"a":40887,"n":"mon_command_letters","k":"table","len":15,"c":true},{"a":40902,"n":"mon_command_table","k":"variable","len":1,"c":true},{"a":40903,"n":"mon_command_table_hi","k":"table","len":31,"c":true},{"a":40934,"n":"mon_brk_vector","k":"variable","len":1,"c":true},{"a":40935,"n":"mon_brk_vector_hi","k":"variable","len":1,"c":true},{"a":40936,"n":"mon_cold_start_ptr","k":"variable","len":2,"c":true},{"a":40938,"n":"mon_register_header","k":"table","len":22,"c":true},{"a":40960,"n":"zeroed_a000","k":"table","len":502,"c":true},{"a":40962,"n":"p_A002","k":"variable","len":1,"c":false},{"a":41462,"n":"lupenio_intro_text","k":"table","len":357,"c":true},{"a":41819,"n":"fill_a35b","k":"table","len":165,"c":true},{"a":41984,"n":"gfx_copy_block","k":"routine","len":46,"c":true},{"a":41986,"n":"b_A402","k":"branch","len":1,"c":false},{"a":41988,"n":"b_A404","k":"branch","len":1,"c":false},{"a":42013,"n":"b_A41D","k":"branch","len":1,"c":false},{"a":42029,"n":"r_A42D","k":"branch","len":1,"c":false},{"a":42030,"n":"gfx_repeat_row","k":"routine","len":35,"c":true},{"a":42032,"n":"b_A430","k":"branch","len":1,"c":false},{"a":42034,"n":"b_A432","k":"branch","len":1,"c":false},{"a":42064,"n":"r_A450","k":"branch","len":1,"c":false},{"a":42065,"n":"gfx_fill_cells","k":"routine","len":38,"c":true},{"a":42067,"n":"b_A453","k":"branch","len":1,"c":false},{"a":42069,"n":"b_A455","k":"branch","len":1,"c":false},{"a":42089,"n":"j_A469","k":"branch","len":1,"c":false},{"a":42097,"n":"b_A471","k":"branch","len":1,"c":false},{"a":42102,"n":"r_A476","k":"branch","len":1,"c":false},{"a":42103,"n":"gfx_fill_screen","k":"routine","len":20,"c":true},{"a":42123,"n":"gfx_fill_colour_ram","k":"routine","len":24,"c":true},{"a":42147,"n":"gfx_fill_screen_and_colour","k":"routine","len":7,"c":true},{"a":42154,"n":"gfx_fill_bitmap_pattern","k":"routine","len":83,"c":true},{"a":42171,"n":"b_A4BB","k":"branch","len":1,"c":false},{"a":42219,"n":"b_A4EB","k":"branch","len":1,"c":false},{"a":42237,"n":"display_toggle","k":"routine","len":3,"c":true},{"a":42240,"n":"display_toggle_plain","k":"routine","len":9,"c":true},{"a":42249,"n":"nop_a509","k":"routine","len":1,"c":true},{"a":42250,"n":"gfx_fill_cc_box","k":"routine","len":37,"c":true},{"a":42287,"n":"gfx_cc_box_a","k":"routine","len":68,"c":true},{"a":42313,"n":"b_A549","k":"branch","len":1,"c":false},{"a":42328,"n":"b_A558","k":"branch","len":1,"c":false},{"a":42336,"n":"j_A560","k":"branch","len":1,"c":false},{"a":42355,"n":"gfx_clear_room","k":"routine","len":74,"c":true},{"a":42380,"n":"j_A58C","k":"branch","len":1,"c":false},{"a":42401,"n":"b_A5A1","k":"branch","len":1,"c":false},{"a":42429,"n":"rts_a5bd","k":"routine","len":1,"c":true},{"a":42430,"n":"gfx_bitmap_mode_alt","k":"routine","len":30,"c":true},{"a":42460,"n":"gfx_cc_box_b","k":"routine","len":68,"c":true},{"a":42486,"n":"b_A5F6","k":"branch","len":1,"c":false},{"a":42501,"n":"b_A605","k":"branch","len":1,"c":false},{"a":42509,"n":"j_A60D","k":"branch","len":1,"c":false},{"a":42528,"n":"gfx_fill_cells_xy","k":"routine","len":14,"c":true},{"a":42542,"n":"gfx_fill_cells_rows","k":"routine","len":53,"c":true},{"a":42548,"n":"j_A634","k":"branch","len":1,"c":false},{"a":42562,"n":"j_A642","k":"branch","len":1,"c":false},{"a":42568,"n":"b_A648","k":"branch","len":1,"c":false},{"a":42573,"n":"b_A64D","k":"branch","len":1,"c":false},{"a":42591,"n":"b_A65F","k":"branch","len":1,"c":false},{"a":42595,"n":"colour_fill_disabled","k":"routine","len":1,"c":true},{"a":42596,"n":"colour_fill_remnant","k":"variable","len":1,"c":true},{"a":42597,"n":"colour_fill_dead","k":"routine","len":26,"c":true},{"a":42623,"n":"tile_colour_cells","k":"routine","len":7,"c":true},{"a":42630,"n":"tile_colour_cc","k":"routine","len":10,"c":true},{"a":42640,"n":"tile_draw","k":"routine","len":114,"c":true},{"a":42660,"n":"j_A6A4","k":"branch","len":1,"c":false},{"a":42676,"n":"j_A6B4","k":"branch","len":1,"c":false},{"a":42682,"n":"b_A6BA","k":"branch","len":1,"c":false},{"a":42687,"n":"b_A6BF","k":"branch","len":1,"c":false},{"a":42693,"n":"j_A6C5","k":"branch","len":1,"c":false},{"a":42713,"n":"b_A6D9","k":"branch","len":1,"c":false},{"a":42718,"n":"b_A6DE","k":"branch","len":1,"c":false},{"a":42727,"n":"j_A6E7","k":"branch","len":1,"c":false},{"a":42744,"n":"b_A6F8","k":"branch","len":1,"c":false},{"a":42754,"n":"draw_tile_3f80","k":"routine","len":31,"c":true},{"a":42785,"n":"colour_box_and_sprite7","k":"routine","len":22,"c":true},{"a":42807,"n":"colour_box_then_fb_cc","k":"routine","len":8,"c":true},{"a":42815,"n":"irq_flash_sprite7","k":"routine","len":35,"c":true},{"a":42842,"n":"b_A75A","k":"branch","len":1,"c":false},{"a":42847,"n":"b_A75F","k":"branch","len":1,"c":false},{"a":42851,"n":"draw_keyhole","k":"routine","len":31,"c":true},{"a":42882,"n":"draw_switch","k":"routine","len":29,"c":true},{"a":42911,"n":"draw_cone_down","k":"routine","len":29,"c":true},{"a":42940,"n":"draw_cone_up","k":"routine","len":29,"c":true},{"a":42969,"n":"draw_round_object","k":"routine","len":31,"c":true},{"a":43000,"n":"draw_oval_object","k":"routine","len":31,"c":true},{"a":43031,"n":"reenter_loop_42ef","k":"routine","len":6,"c":true},{"a":43037,"n":"reenter_loop_4910","k":"routine","len":6,"c":true},{"a":43043,"n":"reenter_loop_5a60","k":"routine","len":6,"c":true},{"a":43049,"n":"reenter_loop_6220","k":"routine","len":6,"c":true},{"a":43055,"n":"reenter_loop_6a20","k":"routine","len":6,"c":true},{"a":43061,"n":"reenter_loop_76b0","k":"routine","len":6,"c":true},{"a":43067,"n":"reenter_loop_9320","k":"routine","len":6,"c":true},{"a":43073,"n":"reenter_loop_86b0","k":"routine","len":6,"c":true},{"a":43079,"n":"reenter_loop_51f4","k":"routine","len":6,"c":true},{"a":43086,"n":"display_on_if_off","k":"routine","len":13,"c":true},{"a":43098,"n":"r_A85A","k":"branch","len":1,"c":false},{"a":43099,"n":"reenter_loop_8410","k":"routine","len":6,"c":true},{"a":43106,"n":"display_toggle_if_frame_32","k":"routine","len":20,"c":true},{"a":43120,"n":"b_A870","k":"branch","len":1,"c":false},{"a":43127,"n":"hat_death","k":"routine","len":40,"c":true},{"a":43152,"n":"b_A890","k":"branch","len":1,"c":false},{"a":43168,"n":"hat_sink_to_floor","k":"routine","len":53,"c":true},{"a":43175,"n":"j_A8A7","k":"branch","len":1,"c":false},{"a":43195,"n":"r_A8BB","k":"branch","len":1,"c":false},{"a":43196,"n":"b_A8BC","k":"branch","len":1,"c":false},{"a":43220,"n":"r_A8D4","k":"branch","len":1,"c":false},{"a":43222,"n":"hat_death_end","k":"routine","len":24,"c":true},{"a":43242,"n":"b_A8EA","k":"branch","len":1,"c":false},{"a":43248,"n":"hat_dissolve","k":"routine","len":60,"c":true},{"a":43250,"n":"b_A8F2","k":"branch","len":1,"c":false},{"a":43290,"n":"b_A91A","k":"branch","len":1,"c":false},{"a":43292,"n":"b_A91C","k":"branch","len":1,"c":false},{"a":43309,"n":"hat_flash","k":"routine","len":22,"c":true},{"a":43311,"n":"b_A92F","k":"branch","len":1,"c":false},{"a":43316,"n":"b_A934","k":"branch","len":1,"c":false},{"a":43332,"n":"sprite0_reenter_lane","k":"routine","len":28,"c":true},{"a":43350,"n":"b_A956","k":"branch","len":1,"c":false},{"a":43360,"n":"sprite1_reenter_lane","k":"routine","len":28,"c":true},{"a":43378,"n":"b_A972","k":"branch","len":1,"c":false},{"a":43388,"n":"hat_in_window","k":"routine","len":58,"c":true},{"a":43407,"n":"b_A98F","k":"branch","len":1,"c":false},{"a":43442,"n":"b_A9B2","k":"branch","len":1,"c":false},{"a":43444,"n":"b_A9B4","k":"branch","len":1,"c":false},{"a":43448,"n":"check_spot_c4_f4","k":"routine","len":25,"c":true},{"a":43472,"n":"r_A9D0","k":"branch","len":1,"c":false},{"a":43474,"n":"draw_painting","k":"routine","len":2,"c":true},{"a":43476,"n":"draw_painting_a","k":"routine","len":2,"c":true},{"a":43478,"n":"draw_painting_27","k":"routine","len":80,"c":true},{"a":43558,"n":"draw_television","k":"routine","len":31,"c":true},{"a":43589,"n":"draw_band_top","k":"routine","len":31,"c":true},{"a":43620,"n":"draw_band_bottom","k":"routine","len":31,"c":true},{"a":43651,"n":"draw_arrow_up","k":"routine","len":23,"c":true},{"a":43674,"n":"draw_arrow_down","k":"routine","len":23,"c":true},{"a":43698,"n":"irq_room1","k":"routine","len":61,"c":true},{"a":43730,"n":"b_AAD2","k":"branch","len":1,"c":false},{"a":43756,"n":"b_AAEC","k":"branch","len":1,"c":false},{"a":43760,"n":"keyhole_and_pause","k":"routine","len":52,"c":true},{"a":43791,"n":"b_AB0F","k":"branch","len":1,"c":false},{"a":43796,"n":"b_AB14","k":"branch","len":1,"c":false},{"a":43798,"n":"b_AB16","k":"branch","len":1,"c":false},{"a":43812,"n":"room_spots_ab24","k":"routine","len":23,"c":true},{"a":43825,"n":"b_AB31","k":"branch","len":1,"c":false},{"a":43835,"n":"dead_ab3b","k":"routine","len":47,"c":true},{"a":43841,"n":"j_AB41","k":"branch","len":1,"c":false},{"a":43843,"n":"b_AB43","k":"branch","len":1,"c":false},{"a":43856,"n":"b_AB50","k":"branch","len":1,"c":false},{"a":43878,"n":"b_AB66","k":"branch","len":1,"c":false},{"a":43888,"n":"draw_plant","k":"routine","len":4,"c":true},{"a":43892,"n":"draw_plant_27","k":"routine","len":27,"c":true},{"a":43919,"n":"draw_pot","k":"routine","len":4,"c":true},{"a":43923,"n":"draw_pot_27","k":"routine","len":4,"c":true},{"a":43927,"n":"draw_pot_size","k":"routine","len":23,"c":true},{"a":43950,"n":"draw_drawers","k":"routine","len":4,"c":true},{"a":43954,"n":"draw_drawers_a","k":"routine","len":4,"c":true},{"a":43958,"n":"draw_drawers_27","k":"routine","len":23,"c":true},{"a":43982,"n":"call_6ca4_get_x","k":"routine","len":7,"c":true},{"a":43989,"n":"colour_cells_and_dot","k":"routine","len":27,"c":true},{"a":44016,"n":"zero_abf0","k":"table","len":15,"c":true},{"a":44031,"n":"death_saved_y","k":"variable","len":1,"c":true},{"a":44032,"n":"tile_keyhole","k":"table","len":72,"c":true},{"a":44104,"n":"tile_switch","k":"table","len":16,"c":true},{"a":44120,"n":"tile_cone_down","k":"table","len":32,"c":true},{"a":44152,"n":"tile_cone_up","k":"table","len":48,"c":true},{"a":44200,"n":"tile_round_object","k":"table","len":32,"c":true},{"a":44232,"n":"tile_oval","k":"table","len":16,"c":true},{"a":44248,"n":"sprite_hat_death","k":"table","len":64,"c":true},{"a":44312,"n":"tile_painting","k":"table","len":131,"c":true},{"a":44443,"n":"painting_patch_1","k":"table","len":3,"c":true},{"a":44446,"n":"painting_patch_2","k":"table","len":34,"c":true},{"a":44480,"n":"tile_television","k":"table","len":192,"c":true},{"a":44672,"n":"tile_arrow_down","k":"table","len":16,"c":true},{"a":44688,"n":"tile_arrow_up","k":"table","len":16,"c":true},{"a":44704,"n":"tile_band_top","k":"table","len":32,"c":true},{"a":44736,"n":"tile_band_bottom","k":"table","len":32,"c":true},{"a":44768,"n":"tile_plant","k":"table","len":72,"c":true},{"a":44840,"n":"tile_pot","k":"table","len":24,"c":true},{"a":44864,"n":"tile_drawers","k":"table","len":128,"c":true},{"a":44992,"n":"tile_floor_lamp","k":"table","len":48,"c":true},{"a":45040,"n":"tile_hanging_lamp","k":"table","len":16,"c":true},{"a":45056,"n":"gfx_lamp_tail","k":"table","len":56,"c":true},{"a":45112,"n":"gfx_unused_b038","k":"table","len":56,"c":true},{"a":45168,"n":"gfx_sparkle_ball","k":"table","len":32,"c":true},{"a":45200,"n":"gfx_ring","k":"table","len":32,"c":true},{"a":45232,"n":"gfx_trophy","k":"table","len":48,"c":true},{"a":45280,"n":"gfx_invuln_object","k":"table","len":32,"c":true},{"a":45312,"n":"pickup_rooms_8_9","k":"routine","len":175,"c":true},{"a":45362,"n":"r_B132","k":"branch","len":1,"c":false},{"a":45363,"n":"b_B133","k":"branch","len":1,"c":false},{"a":45396,"n":"r_B154","k":"branch","len":1,"c":false},{"a":45397,"n":"b_B155","k":"branch","len":1,"c":false},{"a":45444,"n":"r_B184","k":"branch","len":1,"c":false},{"a":45445,"n":"b_B185","k":"branch","len":1,"c":false},{"a":45485,"n":"r_B1AD","k":"branch","len":1,"c":false},{"a":45486,"n":"r_B1AE","k":"branch","len":1,"c":false},{"a":45488,"n":"draw_room2_fixtures","k":"routine","len":41,"c":true},{"a":45504,"n":"b_B1C0","k":"branch","len":1,"c":false},{"a":45529,"n":"open_room2_barrier","k":"routine","len":18,"c":true},{"a":45543,"n":"b_B1E7","k":"branch","len":1,"c":false},{"a":45548,"n":"draw_room3_keyhole","k":"routine","len":18,"c":true},{"a":45562,"n":"b_B1FA","k":"branch","len":1,"c":false},{"a":45567,"n":"draw_room5_switch","k":"routine","len":20,"c":true},{"a":45583,"n":"b_B20F","k":"branch","len":1,"c":false},{"a":45588,"n":"draw_room6_switch_lock","k":"routine","len":23,"c":true},{"a":45604,"n":"b_B224","k":"branch","len":1,"c":false},{"a":45611,"n":"paint_room6_lock_open","k":"routine","len":27,"c":true},{"a":45634,"n":"b_B242","k":"branch","len":1,"c":false},{"a":45639,"n":"draw_room8_switch","k":"routine","len":20,"c":true},{"a":45655,"n":"b_B257","k":"branch","len":1,"c":false},{"a":45660,"n":"draw_room9_barriers","k":"routine","len":64,"c":true},{"a":45699,"n":"b_B283","k":"branch","len":1,"c":false},{"a":45724,"n":"open_room9_lower_barrier","k":"routine","len":18,"c":true},{"a":45738,"n":"b_B2AA","k":"branch","len":1,"c":false},{"a":45744,"n":"draw_room11_barrier","k":"routine","len":32,"c":true},{"a":45776,"n":"open_room11_barrier","k":"routine","len":15,"c":true},{"a":45790,"n":"r_B2DE","k":"branch","len":1,"c":false},{"a":45792,"n":"room2_switch_and_barrier","k":"routine","len":88,"c":true},{"a":45832,"n":"b_B308","k":"branch","len":1,"c":false},{"a":45836,"n":"b_B30C","k":"branch","len":1,"c":false},{"a":45869,"n":"b_B32D","k":"branch","len":1,"c":false},{"a":45873,"n":"b_B331","k":"branch","len":1,"c":false},{"a":45881,"n":"room3_take_keyhole","k":"routine","len":44,"c":true},{"a":45921,"n":"b_B361","k":"branch","len":1,"c":false},{"a":45926,"n":"room5_take_switch","k":"routine","len":44,"c":true},{"a":45966,"n":"b_B38E","k":"branch","len":1,"c":false},{"a":45971,"n":"room6_lock_and_switch","k":"routine","len":98,"c":true},{"a":46018,"n":"b_B3C2","k":"branch","len":1,"c":false},{"a":46025,"n":"b_B3C9","k":"branch","len":1,"c":false},{"a":46065,"n":"b_B3F1","k":"branch","len":1,"c":false},{"a":46070,"n":"room8_take_switch","k":"routine","len":44,"c":true},{"a":46110,"n":"b_B41E","k":"branch","len":1,"c":false},{"a":46115,"n":"room9_barriers","k":"routine","len":98,"c":true},{"a":46158,"n":"b_B44E","k":"branch","len":1,"c":false},{"a":46162,"n":"b_B452","k":"branch","len":1,"c":false},{"a":46169,"n":"b_B459","k":"branch","len":1,"c":false},{"a":46202,"n":"b_B47A","k":"branch","len":1,"c":false},{"a":46206,"n":"b_B47E","k":"branch","len":1,"c":false},{"a":46214,"n":"room11_barrier","k":"routine","len":54,"c":true},{"a":46257,"n":"b_B4B1","k":"branch","len":1,"c":false},{"a":46261,"n":"b_B4B5","k":"branch","len":1,"c":false},{"a":46272,"n":"sfx_raster_tone","k":"routine","len":37,"c":true},{"a":46286,"n":"j_B4CE","k":"branch","len":1,"c":false},{"a":46309,"n":"sfxa_op_raster_lo","k":"routine","len":6,"c":true},{"a":46315,"n":"sfxa_op_raster_lo2","k":"routine","len":6,"c":true},{"a":46321,"n":"sfxa_op_colour_src","k":"routine","len":40,"c":true},{"a":46343,"n":"b_B507","k":"branch","len":1,"c":false},{"a":46358,"n":"b_B516","k":"branch","len":1,"c":false},{"a":46363,"n":"sfx_raster_tone_restart","k":"routine","len":15,"c":true},{"a":46365,"n":"b_B51D","k":"branch","len":1,"c":false},{"a":46384,"n":"sfx_select","k":"routine","len":23,"c":true},{"a":46394,"n":"b_B53A","k":"branch","len":1,"c":false},{"a":46404,"n":"b_B544","k":"branch","len":1,"c":false},{"a":46411,"n":"sfx_noise_burst","k":"routine","len":89,"c":true},{"a":46425,"n":"j_B559","k":"branch","len":1,"c":false},{"a":46482,"n":"b_B592","k":"branch","len":1,"c":false},{"a":46497,"n":"b_B5A1","k":"branch","len":1,"c":false},{"a":46502,"n":"sfx_noise_restart","k":"routine","len":15,"c":true},{"a":46504,"n":"b_B5A8","k":"branch","len":1,"c":false},{"a":46518,"n":"sfx_score_or_tune","k":"routine","len":26,"c":true},{"a":46528,"n":"b_B5C0","k":"branch","len":1,"c":false},{"a":46531,"n":"j_B5C3","k":"branch","len":1,"c":false},{"a":46541,"n":"b_B5CD","k":"branch","len":1,"c":false},{"a":46545,"n":"sfx_score_tick","k":"routine","len":102,"c":true},{"a":46572,"n":"j_B5EC","k":"branch","len":1,"c":false},{"a":46629,"n":"b_B625","k":"branch","len":1,"c":false},{"a":46644,"n":"b_B634","k":"branch","len":1,"c":false},{"a":46649,"n":"sfx_score_tick_restart","k":"routine","len":15,"c":true},{"a":46651,"n":"b_B63B","k":"branch","len":1,"c":false},{"a":46665,"n":"sfx_score_tick_end","k":"routine","len":11,"c":true},{"a":46677,"n":"read_stick_if_screen_on","k":"routine","len":17,"c":true},{"a":46690,"n":"b_B662","k":"branch","len":1,"c":false},{"a":46694,"n":"check_hat_sprite7_hit","k":"routine","len":14,"c":true},{"a":46704,"n":"b_B670","k":"branch","len":1,"c":false},{"a":46709,"n":"restore_kernal_irq","k":"routine","len":13,"c":true},{"a":46723,"n":"draw_title_cast","k":"routine","len":317,"c":true},{"a":46753,"n":"b_B6A1","k":"branch","len":1,"c":false},{"a":46772,"n":"b_B6B4","k":"branch","len":1,"c":false},{"a":46791,"n":"b_B6C7","k":"branch","len":1,"c":false},{"a":46810,"n":"b_B6DA","k":"branch","len":1,"c":false},{"a":46829,"n":"b_B6ED","k":"branch","len":1,"c":false},{"a":46853,"n":"b_B705","k":"branch","len":1,"c":false},{"a":46872,"n":"b_B718","k":"branch","len":1,"c":false},{"a":46985,"n":"b_B789","k":"branch","len":1,"c":false},{"a":47004,"n":"b_B79C","k":"branch","len":1,"c":false},{"a":47040,"n":"dead_fire_wait_tail","k":"table","len":24,"c":true},{"a":47064,"n":"str_wonderful","k":"table","len":9,"c":true},{"a":47073,"n":"str_you_have_finished_your","k":"table","len":23,"c":true},{"a":47096,"n":"str_mission","k":"table","len":8,"c":true},{"a":47104,"n":"draw_obj_3x3_aff0","k":"routine","len":59,"c":true},{"a":47163,"n":"draw_obj_2x3_afc0","k":"routine","len":59,"c":true},{"a":47223,"n":"anim_sprite3_walk_left","k":"routine","len":47,"c":true},{"a":47254,"n":"b_B896","k":"branch","len":1,"c":false},{"a":47264,"n":"b_B8A0","k":"branch","len":1,"c":false},{"a":47271,"n":"setup_sprite0_then_room","k":"routine","len":16,"c":true},{"a":47288,"n":"wrap_hat_x","k":"routine","len":51,"c":true},{"a":47317,"n":"b_B8D5","k":"branch","len":1,"c":false},{"a":47344,"n":"hat_move_if_shown","k":"routine","len":22,"c":true},{"a":47363,"n":"b_B903","k":"branch","len":1,"c":false},{"a":47367,"n":"hat_up_pin_x","k":"routine","len":9,"c":true},{"a":47376,"n":"hat_down_pin_x","k":"routine","len":9,"c":true},{"a":47386,"n":"hat_upper_pose","k":"routine","len":11,"c":true},{"a":47398,"n":"set_room_6","k":"routine","len":6,"c":true},{"a":47405,"n":"anim_sprite7_shuffle","k":"routine","len":38,"c":true},{"a":47424,"n":"b_B940","k":"branch","len":1,"c":false},{"a":47437,"n":"b_B94D","k":"branch","len":1,"c":false},{"a":47444,"n":"init_sprite7","k":"routine","len":37,"c":true},{"a":47482,"n":"anim_sprite7_get_s0x","k":"routine","len":7,"c":true},{"a":47490,"n":"set_1e08_sprite3_col6","k":"routine","len":9,"c":true},{"a":47500,"n":"hat_sprite_enabled","k":"routine","len":6,"c":true},{"a":47507,"n":"anim_sprite0_frame","k":"routine","len":25,"c":true},{"a":47523,"n":"b_B9A3","k":"branch","len":1,"c":false},{"a":47533,"n":"irq_room4_or_7","k":"routine","len":13,"c":true},{"a":47543,"n":"b_B9B7","k":"branch","len":1,"c":false},{"a":47549,"n":"dead_inc_border","k":"table","len":3,"c":true},{"a":47552,"n":"room7_bounce_sprite3","k":"routine","len":3,"c":true},{"a":47555,"n":"room7_op_x_step2","k":"routine","len":3,"c":true},{"a":47558,"n":"room7_op_y_step1","k":"routine","len":3,"c":true},{"a":47561,"n":"room7_op_y_step2","k":"routine","len":1,"c":true},{"a":47562,"n":"room7_op_y_step2_reg","k":"routine","len":91,"c":true},{"a":47579,"n":"b_B9DB","k":"branch","len":1,"c":false},{"a":47591,"n":"b_B9E7","k":"branch","len":1,"c":false},{"a":47606,"n":"b_B9F6","k":"branch","len":1,"c":false},{"a":47618,"n":"b_BA02","k":"branch","len":1,"c":false},{"a":47627,"n":"b_BA0B","k":"branch","len":1,"c":false},{"a":47642,"n":"b_BA1A","k":"branch","len":1,"c":false},{"a":47650,"n":"j_BA22","k":"branch","len":1,"c":false},{"a":47654,"n":"sprite3_frame_by_y","k":"routine","len":25,"c":true},{"a":47670,"n":"b_BA36","k":"branch","len":1,"c":false},{"a":47680,"n":"store_d010_or_room7","k":"routine","len":35,"c":true},{"a":47693,"n":"b_BA4D","k":"branch","len":1,"c":false},{"a":47716,"n":"sprite3_clear_xhigh","k":"routine","len":12,"c":true},{"a":47729,"n":"set_hat_colour_init_s2","k":"routine","len":12,"c":true},{"a":47741,"n":"anim_sprite2_patrol","k":"routine","len":3,"c":true},{"a":47744,"n":"s2_op_step1","k":"routine","len":3,"c":true},{"a":47747,"n":"s2_op_step2","k":"routine","len":37,"c":true},{"a":47771,"n":"b_BA9B","k":"branch","len":1,"c":false},{"a":47783,"n":"r_BAA7","k":"branch","len":1,"c":false},{"a":47787,"n":"init_sprite2","k":"routine","len":37,"c":true},{"a":47824,"n":"anim_sprite2_frame","k":"routine","len":54,"c":true},{"a":47853,"n":"b_BAED","k":"branch","len":1,"c":false},{"a":47859,"n":"b_BAF3","k":"branch","len":1,"c":false},{"a":47872,"n":"b_BB00","k":"branch","len":1,"c":false},{"a":47877,"n":"r_BB05","k":"branch","len":1,"c":false},{"a":47878,"n":"set_sprite2_pointer","k":"routine","len":9,"c":true},{"a":47888,"n":"check_floor_hazards","k":"routine","len":429,"c":true},{"a":47929,"n":"b_BB39","k":"branch","len":1,"c":false},{"a":47950,"n":"r_BB4E","k":"branch","len":1,"c":false},{"a":47951,"n":"b_BB4F","k":"branch","len":1,"c":false},{"a":47985,"n":"r_BB71","k":"branch","len":1,"c":false},{"a":47986,"n":"b_BB72","k":"branch","len":1,"c":false},{"a":48007,"n":"r_BB87","k":"branch","len":1,"c":false},{"a":48008,"n":"b_BB88","k":"branch","len":1,"c":false},{"a":48049,"n":"r_BBB1","k":"branch","len":1,"c":false},{"a":48050,"n":"b_BBB2","k":"branch","len":1,"c":false},{"a":48071,"n":"r_BBC7","k":"branch","len":1,"c":false},{"a":48072,"n":"b_BBC8","k":"branch","len":1,"c":false},{"a":48093,"n":"r_BBDD","k":"branch","len":1,"c":false},{"a":48094,"n":"b_BBDE","k":"branch","len":1,"c":false},{"a":48115,"n":"r_BBF3","k":"branch","len":1,"c":false},{"a":48116,"n":"b_BBF4","k":"branch","len":1,"c":false},{"a":48150,"n":"r_BC16","k":"branch","len":1,"c":false},{"a":48151,"n":"b_BC17","k":"branch","len":1,"c":false},{"a":48185,"n":"r_BC39","k":"branch","len":1,"c":false},{"a":48186,"n":"b_BC3A","k":"branch","len":1,"c":false},{"a":48227,"n":"r_BC63","k":"branch","len":1,"c":false},{"a":48228,"n":"b_BC64","k":"branch","len":1,"c":false},{"a":48258,"n":"r_BC82","k":"branch","len":1,"c":false},{"a":48259,"n":"b_BC83","k":"branch","len":1,"c":false},{"a":48280,"n":"r_BC98","k":"branch","len":1,"c":false},{"a":48281,"n":"b_BC99","k":"branch","len":1,"c":false},{"a":48315,"n":"r_BCBB","k":"branch","len":1,"c":false},{"a":48316,"n":"r_BCBC","k":"branch","len":1,"c":false},{"a":48320,"n":"draw_sparkle_ball","k":"routine","len":31,"c":true},{"a":48351,"n":"draw_invuln_object","k":"routine","len":31,"c":true},{"a":48382,"n":"erase_2x2","k":"routine","len":31,"c":true},{"a":48413,"n":"erase_2x3","k":"routine","len":31,"c":true},{"a":48444,"n":"erase_3x3","k":"routine","len":31,"c":true},{"a":48475,"n":"clear_object_flags","k":"routine","len":13,"c":true},{"a":48477,"n":"b_BD5D","k":"branch","len":1,"c":false},{"a":48490,"n":"draw_room_objects","k":"routine","len":244,"c":true},{"a":48520,"n":"b_BD88","k":"branch","len":1,"c":false},{"a":48534,"n":"r_BD96","k":"branch","len":1,"c":false},{"a":48535,"n":"b_BD97","k":"branch","len":1,"c":false},{"a":48553,"n":"r_BDA9","k":"branch","len":1,"c":false},{"a":48554,"n":"b_BDAA","k":"branch","len":1,"c":false},{"a":48572,"n":"b_BDBC","k":"branch","len":1,"c":false},{"a":48586,"n":"r_BDCA","k":"branch","len":1,"c":false},{"a":48587,"n":"b_BDCB","k":"branch","len":1,"c":false},{"a":48605,"n":"r_BDDD","k":"branch","len":1,"c":false},{"a":48606,"n":"b_BDDE","k":"branch","len":1,"c":false},{"a":48630,"n":"b_BDF6","k":"branch","len":1,"c":false},{"a":48644,"n":"r_BE04","k":"branch","len":1,"c":false},{"a":48645,"n":"b_BE05","k":"branch","len":1,"c":false},{"a":48663,"n":"r_BE17","k":"branch","len":1,"c":false},{"a":48664,"n":"b_BE18","k":"branch","len":1,"c":false},{"a":48682,"n":"b_BE2A","k":"branch","len":1,"c":false},{"a":48696,"n":"r_BE38","k":"branch","len":1,"c":false},{"a":48697,"n":"b_BE39","k":"branch","len":1,"c":false},{"a":48715,"n":"b_BE4B","k":"branch","len":1,"c":false},{"a":48729,"n":"r_BE59","k":"branch","len":1,"c":false},{"a":48730,"n":"b_BE5A","k":"branch","len":1,"c":false},{"a":48736,"n":"draw_trophy","k":"routine","len":7,"c":true},{"a":48743,"n":"trophy_colour_op","k":"routine","len":68,"c":true},{"a":48811,"n":"draw_ring","k":"routine","len":7,"c":true},{"a":48818,"n":"ring_colour_op","k":"routine","len":68,"c":true},{"a":48887,"n":"draw_trophy_yellow","k":"routine","len":14,"c":true},{"a":48901,"n":"draw_ring_green","k":"routine","len":14,"c":true},{"a":48915,"n":"draw_trophy_cyan","k":"routine","len":14,"c":true},{"a":48944,"n":"irq_invuln_countdown","k":"routine","len":49,"c":true},{"a":48970,"n":"b_BF4A","k":"branch","len":1,"c":false},{"a":48990,"n":"b_BF5E","k":"branch","len":1,"c":false},{"a":48995,"n":"draw_barrier_open_top","k":"routine","len":31,"c":true},{"a":49026,"n":"draw_barrier_open_bottom","k":"routine","len":31,"c":true},{"a":49064,"n":"draw_ending_text","k":"routine","len":79,"c":true},{"a":49087,"n":"b_BFBF","k":"branch","len":1,"c":false},{"a":49106,"n":"b_BFD2","k":"branch","len":1,"c":false},{"a":49125,"n":"b_BFE5","k":"branch","len":1,"c":false},{"a":49152,"n":"str_title_mr_hat","k":"table","len":6,"c":true},{"a":49158,"n":"str_title_double_unused","k":"table","len":8,"c":true},{"a":49166,"n":"str_title_octopus","k":"table","len":7,"c":true},{"a":49173,"n":"str_title_octopussy_tail","k":"table","len":3,"c":true},{"a":49176,"n":"str_title_snaily","k":"table","len":6,"c":true},{"a":49182,"n":"str_title_dynky","k":"table","len":6,"c":true},{"a":49188,"n":"str_title_kniffy","k":"table","len":7,"c":true},{"a":49195,"n":"str_title_and_all_others","k":"table","len":14,"c":true},{"a":49209,"n":"str_title_systems_presents","k":"table","len":32,"c":true},{"a":49241,"n":"title_text_unused_fill","k":"table","len":39,"c":true},{"a":49280,"n":"music_restart","k":"routine","len":27,"c":true},{"a":49307,"n":"music_init","k":"routine","len":11,"c":true},{"a":49318,"n":"music_load_pattern_sound","k":"routine","len":9,"c":true},{"a":49327,"n":"music_irq","k":"routine","len":84,"c":true},{"a":49335,"n":"b_C0B7","k":"branch","len":1,"c":false},{"a":49366,"n":"b_C0D6","k":"branch","len":1,"c":false},{"a":49377,"n":"b_C0E1","k":"branch","len":1,"c":false},{"a":49380,"n":"b_C0E4","k":"branch","len":1,"c":false},{"a":49397,"n":"b_C0F5","k":"branch","len":1,"c":false},{"a":49411,"n":"music_song_end","k":"routine","len":25,"c":true},{"a":49436,"n":"music_pad_c11c","k":"variable","len":1,"c":true},{"a":49437,"n":"music_set_sid_sound","k":"routine","len":102,"c":true},{"a":49539,"n":"music_start_position","k":"routine","len":9,"c":true},{"a":49548,"n":"music_start_pattern","k":"routine","len":38,"c":true},{"a":49586,"n":"music_block_pointer","k":"routine","len":29,"c":true},{"a":49591,"n":"b_C1B7","k":"branch","len":1,"c":false},{"a":49612,"n":"j_C1CC","k":"branch","len":1,"c":false},{"a":49615,"n":"music_key_voice_select","k":"routine","len":45,"c":true},{"a":49627,"n":"b_C1DB","k":"branch","len":1,"c":false},{"a":49635,"n":"b_C1E3","k":"branch","len":1,"c":false},{"a":49643,"n":"b_C1EB","k":"branch","len":1,"c":false},{"a":49651,"n":"b_C1F3","k":"branch","len":1,"c":false},{"a":49653,"n":"b_C1F5","k":"branch","len":1,"c":false},{"a":49657,"n":"b_C1F9","k":"branch","len":1,"c":false},{"a":49660,"n":"music_play_step","k":"routine","len":209,"c":true},{"a":49666,"n":"b_C202","k":"branch","len":1,"c":false},{"a":49692,"n":"b_C21C","k":"branch","len":1,"c":false},{"a":49706,"n":"b_C22A","k":"branch","len":1,"c":false},{"a":49722,"n":"b_C23A","k":"branch","len":1,"c":false},{"a":49731,"n":"b_C243","k":"branch","len":1,"c":false},{"a":49757,"n":"b_C25D","k":"branch","len":1,"c":false},{"a":49771,"n":"b_C26B","k":"branch","len":1,"c":false},{"a":49790,"n":"b_C27E","k":"branch","len":1,"c":false},{"a":49799,"n":"b_C287","k":"branch","len":1,"c":false},{"a":49825,"n":"b_C2A1","k":"branch","len":1,"c":false},{"a":49839,"n":"b_C2AF","k":"branch","len":1,"c":false},{"a":49858,"n":"b_C2C2","k":"branch","len":1,"c":false},{"a":49866,"n":"b_C2CA","k":"branch","len":1,"c":false},{"a":49869,"n":"music_next_block","k":"routine","len":11,"c":true},{"a":49880,"n":"music_hook_irq","k":"routine","len":13,"c":true},{"a":49893,"n":"music_pad_c2e5","k":"table","len":6,"c":true},{"a":49899,"n":"music_first_irq","k":"routine","len":43,"c":true},{"a":49942,"n":"music_pad_c316","k":"table","len":5,"c":true},{"a":49947,"n":"music_block_hi_clear","k":"routine","len":9,"c":true},{"a":49956,"n":"music_retrigger_v1","k":"routine","len":17,"c":true},{"a":49973,"n":"music_retrigger_v2","k":"routine","len":17,"c":true},{"a":49990,"n":"music_retrigger_v3","k":"routine","len":17,"c":true},{"a":50007,"n":"music_step_keys","k":"routine","len":13,"c":true},{"a":50015,"n":"b_C35F","k":"branch","len":1,"c":false},{"a":50020,"n":"music_step_mode","k":"routine","len":16,"c":true},{"a":50033,"n":"b_C371","k":"branch","len":1,"c":false},{"a":50036,"n":"music_freq_lo","k":"table","len":95,"c":true},{"a":50131,"n":"music_freq_hi","k":"table","len":95,"c":true},{"a":50226,"n":"music_freq_tail_unused","k":"variable","len":1,"c":true},{"a":50227,"n":"music_position","k":"variable","len":1,"c":true},{"a":50228,"n":"music_pattern","k":"variable","len":1,"c":true},{"a":50229,"n":"music_block","k":"variable","len":1,"c":true},{"a":50230,"n":"music_step","k":"variable","len":1,"c":true},{"a":50231,"n":"music_voice_mode","k":"variable","len":1,"c":true},{"a":50232,"n":"music_tick_count","k":"variable","len":1,"c":true},{"a":50233,"n":"music_keys_enabled","k":"variable","len":1,"c":true},{"a":50234,"n":"music_block_ptr","k":"variable","len":1,"c":true},{"a":50235,"n":"music_block_ptr_hi","k":"variable","len":1,"c":true},{"a":50236,"n":"music_block_len","k":"variable","len":1,"c":true},{"a":50237,"n":"music_song_len","k":"variable","len":1,"c":true},{"a":50238,"n":"music_vars_unused","k":"table","len":5,"c":true},{"a":50243,"n":"music_tempo","k":"table","len":64,"c":true},{"a":50307,"n":"music_v1_ctrl","k":"table","len":64,"c":true},{"a":50371,"n":"music_v2_ctrl","k":"table","len":64,"c":true},{"a":50435,"n":"music_v3_ctrl","k":"table","len":64,"c":true},{"a":50499,"n":"music_v1_ad","k":"table","len":64,"c":true},{"a":50563,"n":"music_v2_ad","k":"table","len":64,"c":true},{"a":50627,"n":"music_v3_ad","k":"table","len":64,"c":true},{"a":50691,"n":"music_v1_sr","k":"table","len":64,"c":true},{"a":50755,"n":"music_v2_sr","k":"table","len":64,"c":true},{"a":50819,"n":"music_v3_sr","k":"table","len":64,"c":true},{"a":50883,"n":"music_v1_pw_lo","k":"table","len":64,"c":true},{"a":50947,"n":"music_v2_pw_lo","k":"table","len":64,"c":true},{"a":51011,"n":"music_v3_pw_lo","k":"table","len":64,"c":true},{"a":51075,"n":"music_v1_pw_hi","k":"table","len":64,"c":true},{"a":51139,"n":"music_v2_pw_hi","k":"table","len":64,"c":true},{"a":51203,"n":"music_v3_pw_hi","k":"table","len":64,"c":true},{"a":51267,"n":"music_filter_res","k":"table","len":64,"c":true},{"a":51331,"n":"music_filter_mode_vol","k":"table","len":64,"c":true},{"a":51395,"n":"music_filter_cut_lo","k":"table","len":64,"c":true},{"a":51459,"n":"music_filter_cut_hi","k":"table","len":64,"c":true},{"a":51523,"n":"music_block_first","k":"table","len":64,"c":true},{"a":51587,"n":"music_block_last","k":"table","len":64,"c":true},{"a":51651,"n":"music_first_step","k":"table","len":64,"c":true},{"a":51715,"n":"music_last_step","k":"table","len":64,"c":true},{"a":51779,"n":"music_timer_lo","k":"table","len":64,"c":true},{"a":51843,"n":"music_timer_hi","k":"table","len":64,"c":true},{"a":51907,"n":"music_order_first","k":"variable","len":1,"c":true},{"a":51908,"n":"music_order_first_1","k":"table","len":23,"c":true},{"a":51931,"n":"music_order_last","k":"table","len":24,"c":true},{"a":51955,"n":"music_block0_leftover","k":"table","len":18,"c":true},{"a":51973,"n":"music_saved_irq","k":"variable","len":1,"c":true},{"a":51974,"n":"music_saved_irq_hi","k":"variable","len":1,"c":true},{"a":51975,"n":"music_restore_irq","k":"routine","len":13,"c":true},{"a":51988,"n":"music_save_irq","k":"routine","len":23,"c":true},{"a":52011,"n":"music_block1_lead","k":"table","len":8,"c":true},{"a":52019,"n":"music_block_1","k":"table","len":30,"c":true},{"a":52049,"n":"music_block_1_hook_target","k":"table","len":34,"c":true},{"a":52083,"n":"music_block_2","k":"table","len":64,"c":true},{"a":52147,"n":"music_block_3","k":"table","len":64,"c":true},{"a":52211,"n":"music_block_4","k":"table","len":64,"c":true},{"a":52275,"n":"music_block_5","k":"table","len":64,"c":true},{"a":52339,"n":"music_block_6","k":"table","len":64,"c":true},{"a":52403,"n":"music_block_7","k":"table","len":64,"c":true},{"a":52467,"n":"music_block_8","k":"table","len":64,"c":true},{"a":52531,"n":"music_block_9","k":"table","len":64,"c":true},{"a":52595,"n":"music_block_10","k":"table","len":64,"c":true},{"a":52659,"n":"music_tail_unused","k":"table","len":13,"c":true},{"a":52672,"n":"title_setup","k":"routine","len":61,"c":true},{"a":52677,"n":"b_CDC5","k":"branch","len":1,"c":false},{"a":52729,"n":"b_CDF9","k":"branch","len":1,"c":false},{"a":52733,"n":"title_setup_pad","k":"table","len":3,"c":true},{"a":52736,"n":"font_top_blank_a_g","k":"table","len":64,"c":true},{"a":52800,"n":"font_top_h_o","k":"table","len":64,"c":true},{"a":52864,"n":"font_top_p_w","k":"table","len":64,"c":true},{"a":52928,"n":"font_top_x_z_punct","k":"table","len":64,"c":true},{"a":52992,"n":"font_bot_blank_a_g","k":"table","len":64,"c":true},{"a":53056,"n":"font_bot_h_o","k":"table","len":64,"c":true},{"a":53120,"n":"font_bot_p_w","k":"table","len":64,"c":true},{"a":53184,"n":"font_bot_x_z_punct","k":"table","len":64,"c":true}],"records":[{"a":0,"l":"cpu_port_ddr","c":"6510 data-direction register for the port at $01. The game never writes it; the freezer's restore leaves it at $2F (orientation.md).","t":"byte","b":[0]},{"a":1,"l":"cpu_port_banks","c":"6510 port: memory banking. The game writes $36 (RAM at $A000-$BFFF, I/O at $D000, KERNAL ROM at $E000) at $0878 in the start-up and again at $9267 (bitmap-mode switch) and $92F9, and never changes it afterwards; the Supermon monitor's entry also writes $36, at $96F5.","t":"byte","b":[0],"x":[2168,37479,37625,38645]},{"a":2,"l":"flag_obj_0002","c":"Room 6's object flag: cleared at $61EA (the new-game reset of rooms 6 and 8), set to $20 at $645A when Mr Hat takes room 6's object (with $D8 = $50, $F5 = $28 and the status cells $07BE/$07E6 lit), tested for $20 at $6425 so the object can be taken only once. $0003-$0011 after it: BASIC workspace the game's traced code does not touch.","t":"byte","b":[0,170,177,145,179,34,0,0],"x":[25066,25637,25690]},{"a":10,"t":"byte","b":[0,76,0,0,0,4,0,0]},{"a":18,"l":"flag_obj_0012","c":"Room 6's interrupt counter: room 6's handler increments it every IRQ ($6099) and, while the room is lit, compares it with $40, $80 and $B0 ($615A-$6188) to time extra writes to $D022. Cleared at $681A (room 8's set-up) and $9594 ($9590, called from room 6's set-up end $5FBD). $0013-$001B after it: BASIC workspace, untouched.","t":"byte","b":[0,0,109,8,25,22,0,10],"x":[24729,24922,26650,38292]},{"a":26,"t":"byte","b":[118,163]},{"a":28,"l":"mon_zp_1c","c":"Used only by the Supermon monitor ($9C09-$9ECC: stx/cpx/ldx); not by the game.","t":"byte","b":[0],"x":[39945,39968,40130,40135,40641,40652]},{"a":29,"l":"mon_zp_1d","c":"Used only by the Supermon monitor ($988D-$9ECA), a count loaded with $08, $16 or $03 and stepped down; not by the game.","t":"byte","b":[0],"x":[39053,39068,39092,39242,39847,39858,40018,40030,40336,40457,40543,40643,40650]},{"a":30,"l":"mon_zp_1e","c":"Used only by the Supermon monitor ($9B36-$9E82); not by the game.","t":"byte","b":[0],"x":[39734,39740,39791,40568,40578]},{"a":31,"l":"mon_zp_1f","c":"Used only by the Supermon monitor ($9C8D-$9E86, an index); not by the game.","t":"byte","b":[0],"x":[40077,40138,40195,40233,40486,40550,40582]},{"a":32,"l":"draw_rows","c":"Drawing-routine parameter: the number of rows to fill or copy. Read as the outer loop limit by the block copy $A400, the pattern copy $A42E and the fill $A451 (cpx $20), set by every caller (values 1-5 for pictures, $16/$17 for whole-screen fills at $A477/$A48B). The Supermon monitor also writes it ($9C3C).","t":"byte","b":[0],"x":[6132,6151,24462,24481,31838,33683,39996,40346,41998,42044,42090,42117,42141,42177,42289,42462,42768,42865,42894,42923,42952,42983,43014,43494,43528,43552,43572,43603,43634,43657,43680,43781,43902,43933,43964,44010,45629,47124,47153,47183,47212,48334,48365,48396,48427,48458,48756,48794,48831,48869,49009,49040]},{"a":33,"l":"mon_zp_21","c":"Used only by the Supermon monitor ($9C40, $9D9E); not by the game.","t":"byte","b":[0],"x":[40000,40350]},{"a":34,"l":"flag_obj_0022","c":"Room 2's candle flag: set to $40 at $5519 when Mr Hat takes the candle in room 2 (after the sound call $1CE2), cleared at $61E1 by the new-game reset. Tested for $40 at $5ED8 and $5FC0 (room 6 drawn lit) and $7440 (room 9 lit), and for $00 at $8F1E (room 6's objects can be taken only with it) and $BDE2 (room 6's objects are drawn only with it).","t":"byte","b":[64],"x":[21785,24280,24512,25057,29760,36638,48610]},{"a":35,"l":"draw_width","c":"Drawing-routine parameter: the width of a row. In bytes for the fill $A451 and the block copies $A400/$A42E (cpy $23; $A400 also adds it to the source pointer each row). In cells for the rectangle routines: $A67F fills that many screen-RAM cells per row (through $A620 and $A451), and $A690 multiplies it by 8 in place ($A6DE-$A6FC) before its bitmap copy $A400. Set by every caller before $A67F/$A690/$A451 (e.g. $17F0, $1803). The Supermon monitor does not use it.","t":"byte","b":[163],"x":[6128,6147,24458,24477,31834,33679,41993,42005,42039,42074,42113,42137,42173,42292,42465,42718,42725,42732,42736,42744,42748,42764,42861,42890,42919,42948,42979,43010,43490,43524,43548,43568,43599,43630,43653,43676,43777,43898,43929,43960,44006,45625,47120,47149,47179,47208,48330,48361,48392,48423,48454,48752,48790,48827,48865,49005,49036]},{"a":36,"l":"draw_dest_lo","c":"Low byte of the drawing routines' destination pointer ($24/$25): screen RAM ($0400), colour RAM ($D800) or the bitmap ($2000), computed from a column and row by $A620 and $A690 and stepped by 40 (screen) or 320 (bitmap, adc #$40 plus inc $25) per row; written through with sta ($24),y at $A406, $A434, $A457.","t":"byte","b":[179],"x":[41990,42016,42020,42036,42051,42055,42071,42079,42083,42085,42105,42129,42182,42254,42270,42304,42319,42330,42344,42349,42477,42492,42503,42517,42522,42536,42554,42558,42580,42585,42613,42654,42668,42672,42702,42706]},{"a":37,"l":"draw_dest_hi","c":"High byte of the drawing routines' destination pointer $24/$25 (above): $04 screen, $D8 colour RAM, $20 bitmap as starting pages; incremented by the row stepping in $A41D-$A6D9.","t":"byte","b":[189],"x":[42013,42024,42048,42059,42097,42109,42133,42187,42259,42275,42277,42281,42308,42323,42334,42481,42496,42507,42540,42568,42589,42617,42658,42665,42682,42713]},{"a":38,"l":"mon_zp_26","c":"Used only by the Supermon monitor ($983B-$9E92, an index); not by the game.","t":"byte","b":[0],"x":[38971,38990,39192,39621,39766,39805,39849,39981,40447,40451,40459,40594]},{"a":39,"l":"draw_src_lo","c":"Drawing-routine parameter, two meanings: the fill byte for $A451 and for the rectangle routine $A67F (a screen-RAM colour pair such as $FF, $8C, $2C, $CC), or the low byte of the source pointer $27/$28 read with lda ($27),y by the block copies $A400/$A42E. Written by nearly every scenery routine (e.g. $17EC, $17FF). The Supermon monitor also uses $27,x.","t":"byte","b":[0],"x":[6124,6143,18304,22204,22617,22628,24454,24473,24499,26241,29232,29243,31826,31845,33642,33653,33671,34158,34176,34219,34230,34893,34904,34922,34933,38339,38350,38361,38372,38383,39697,39702,41988,42003,42007,42034,42069,42125,42226,42252,42365,42413,42597,42632,42756,42775,42853,42872,42882,42901,42911,42930,42940,42959,42971,42990,43002,43021,43476,43501,43520,43544,43560,43579,43591,43610,43622,43641,43664,43687,43711,43722,43740,43751,43773,43890,43909,43921,43940,43952,43971,43998,45617,47112,47131,47157,47171,47190,47216,48322,48341,48353,48372,48384,48403,48415,48434,48446,48465,48744,48763,48782,48801,48819,48838,48857,48876,48997,49016,49028,49047]},{"a":40,"l":"draw_src_hi","c":"Drawing-routine parameter: the high byte of the block copies' source pointer $27/$28 (e.g. $AC or $AD for pictures kept at $AC00-$ADFF, $3F for the picture at $3F60/$3F80), or the colour-RAM fill byte of the whole-screen colour fill $A48B (copied to $27 there). Callers also set it before the rectangle routine $A67F, whose colour-RAM half would have read it, but that half is switched off by the RTS at $A663. Also used by the Supermon monitor ($9B28-$9E5D).","t":"byte","b":[0],"x":[22208,31830,31849,33675,39720,40004,40249,40262,40298,40357,40443,40541,42011,42123,42231,42370,42418,42634,42760,42779,42857,42876,42886,42905,42915,42934,42944,42963,42975,42994,43006,43025,43486,43505,43564,43583,43595,43614,43626,43645,43668,43691,43894,43913,43925,43944,43956,43975,44002,45621,47116,47135,47175,47194,48326,48345,48357,48376,48388,48407,48419,48438,48450,48469,48748,48767,48786,48805,48823,48842,48861,48880,49001,49020,49032,49051]},{"a":41,"l":"mon_zp_29","c":"Used only by the Supermon monitor ($9B2A-$9E6A); not by the game.","t":"byte","b":[0],"x":[39722,40254,40260,40466,40554]},{"a":42,"l":"mon_zp_2a","c":"Used only by the Supermon monitor ($9A8A-$9E3F); not by the game. $002B-$0038 after it: BASIC pointers, not touched by the game.","t":"byte","b":[0,1,8,255,207,255,207,255],"x":[39562,39587,39595,40081,40095,40191,40464,40490,40511]},{"a":50,"t":"byte","b":[207,0,160,0,160,0,160]},{"a":57,"l":"flag_room1_item_mid","c":"Room 1 flag: cleared by the room's set-up at $1B9B, set to $40 at $1F17 when Mr Hat takes the item on the middle floor (the routine $1EDA, which also lights status cells $07BE/$07E6), tested at $4133. $003A-$003F after it: untouched BASIC workspace.","t":"byte","b":[10,0,0,0,0,8,0],"x":[7067,7959,16691]},{"a":64,"l":"score_thousands","c":"The score's thousands digit (0-9). The add-1,000-points routine $41DA redraws that digit from the digit glyphs at $1600 (status-line cells $3D38/$3E78, column 15), increments this count, and at 10 resets it ($4231) and carries into the ten-thousands digit ($45). Cleared by room 1's set-up at $1BBA. $0041-$0044: untouched.","t":"byte","b":[0,0,8,0,0],"x":[7098,16877,16879,16945]},{"a":69,"l":"score_ten_thousands","c":"The score's ten-thousands digit (0-9), counted by the carry code at $4243; at 10 it is reset ($4277) and the hundred-thousands digit (column 13, $3D28/$3E68) advances. That last digit has no counter: its glyph pointer $425B/$4261 is just stepped by $10, so past 999,000 points it would read beyond the digit table. Cleared at $1BBC. $0046-$0084 after it: BASIC workspace the game does not touch.","t":"byte","b":[0,0,36,0,4,0,0,0],"x":[7100,16963,16965,17015]},{"a":77,"t":"byte","b":[0,0,0,44,57,0,3,76]},{"a":85,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":93,"t":"byte","b":[0,0,0,0,140,0,0,8]},{"a":101,"t":"byte","b":[109,0,0,0,140,134,96,0]},{"a":109,"t":"byte","b":[0,0,0,0,5,163,230,122]},{"a":117,"t":"byte","b":[208,2,230,123,173,11,8,201]},{"a":125,"t":"byte","b":[58,176,10,201,32,240,239,56]},{"a":133,"t":"gap","n":11},{"a":144,"l":"kernal_status","c":"KERNAL I/O status byte (ST). Only the Supermon monitor touches it ($999F, $9A04); the game does not. $0091-$0092 after it: KERNAL workspace, untouched.","t":"byte","b":[64,255,0],"x":[39327,39428]},{"a":147,"l":"kernal_verify_flag","c":"KERNAL load/verify flag, written only by the Supermon monitor ($99A1). $0094-$0098: untouched.","t":"byte","b":[0,85,255,0,0,0],"x":[39329]},{"a":153,"l":"jump_step","c":"Jump step counter, reused by every room's movement code: each phase of a jump (up, across, down) counts it from 0 to $15 (21 steps) and clears it (room 1: $43A9-$444A; another copy at $49C3-$4A64; and in the other rooms' copies). Also read at $41BA/$41C0 (the jump sound) and, as a column, by the unreached routine $9100 ($9110-$914F). On a stock machine $99 is the KERNAL's input device number, which the game never uses.","t":"byte","b":[0,3,0,0,0,0,0,0],"x":[16826,16832,17321,17326,17334,17347,17352,17360,17376,17381,17389,17414,17419,17427,17440,17445,17453,17469,17474,17482,18883,18888,18896,18909,18914,18922,18938,18943,18951,18976,18981,18989,19002,19007,19015,19031,19036,19044,21066,21071,21079,21092,21097,21105,21121,21126,21134,21159,21164,21172,21185,21190,21198,21214,21219,21227,22865,23222,23227,23235,23248,23253,23261,23277,23282,23290,23315,23320,23328,23341,23346,23354,23370,23375,23383,25206,25211,25219,25232,25237,25245,25261,25266,25274,25299,25304,25312,25325,25330,25338,25354,25359,25367,26499,27254,27259,27267,27280,27285,27293,27309,27314,27322,27347,27352,27360,27373,27378,27386,27402,27407,27415,30470,30475,30483,30496,30501,30509,30525,30530,30538,30563,30568,30576,30589,30594,30602,30618,30623,30631,33066,33100,33105,33732,34566,34571,34579,34592,34597,34605,34621,34626,34634,34659,34664,34672,34685,34690,34698,34714,34719,34727,36862,37077,37136,37147,37169,37199,37750,37755,37763,37776,37781,37789,37805,37810,37818,37843,37848,37856,37869,37874,37882,37898,37903,37911,38277,38294]},{"a":161,"t":"byte","b":[3]},{"a":162,"l":"jiffy_clock_lo","c":"Low byte of the KERNAL jiffy clock ($A0-$A2), advanced by the KERNAL IRQ that the game chains to at $EA31; read only by the Supermon monitor ($9ABA). It is one of the two bytes that differ between restart-title.vsf and handover.vsf. $00A3-$00AD: KERNAL tape/serial workspace, untouched by the game.","t":"byte","b":[15,85,8,0,0,0,0,0],"x":[39610]},{"a":170,"t":"byte","b":[0,0,0,0]},{"a":174,"l":"kernal_end_lo","c":"KERNAL end-of-load pointer low byte, written only by the Supermon monitor ($9A26).","t":"byte","b":[255],"x":[39462]},{"a":175,"l":"kernal_end_hi","c":"KERNAL end-of-load pointer high byte, written only by the Supermon monitor ($9A2A). $00B0-$00B6: untouched.","t":"byte","b":[207,0,0,60,3,0,0,0],"x":[39466]},{"a":183,"l":"room1_zp_b7","c":"Cleared by the room-1 set-up at $1B97 and never read by the game's code (the KERNAL's file-name length on a stock machine). The Supermon monitor writes it ($999D) and increments it ($99C7) when it parses a file name.","t":"byte","b":[5,1],"x":[7063,39325,39367]},{"a":185,"l":"kernal_sec_addr","c":"KERNAL secondary address, written only by the Supermon monitor ($999A).","t":"byte","b":[96],"x":[39322]},{"a":186,"l":"kernal_device","c":"KERNAL device number, written only by the Supermon monitor ($9998, $99E7).","t":"byte","b":[8],"x":[39320,39399]},{"a":187,"l":"flag_obj_00bb","c":"Room 9's upper-door flag: cleared at $707E by the new-game reset, set to $26 at $78D3 once the upper door has been opened, and tested at $78DE, where $26 skips the door check (which otherwise opens the door when $F5 = $28, room 6's object, is carried). The Supermon monitor also uses it as the file-name pointer ($99A5, $99C5), its KERNAL meaning on a stock machine.","t":"byte","b":[251],"x":[28798,30931,30942,39333,39365]},{"a":188,"l":"kernal_name_hi","c":"KERNAL file-name pointer high byte, written only by the Supermon monitor ($99A9).","t":"byte","b":[159],"x":[39337]},{"a":189,"l":"flag_obj_00bd","c":"Room 1's exit flag: set to $60 at $410B when Mr Hat takes the object on room 1's top floor (handler $40C0), cleared at $1BDF (room-1 set-up) and at $6061, $67FF, $7567, $7CD7, $839A, $8635, $967F; tested for $60 by the room-1 bottom-floor check $1EC5, which at X = $50 then jumps to $44C0 (room 1's way out). $00BE-$00BF: untouched.","t":"byte","b":[0,0,0],"x":[7135,7877,16651,24673,26623,30055,31959,33690,34357,38527]},{"a":192,"l":"mon_zp_c0","c":"Supermon monitor workspace ($C0,x at $9A6B-$9B13); not used by the game.","t":"byte","b":[0],"x":[39531,39536,39694,39699]},{"a":193,"l":"mon_ptr_lo","c":"Supermon monitor's address pointer low byte ($C1/$C2, lda ($C1),y and the like, $9833-$9E99); not used by the game.","t":"byte","b":[0],"x":[38963,39040,39060,39080,39082,39097,39198,39460,39494,39557,39613,39625,39732,39775,39809,39860,39959,40026,40058,40085,40147,40223,40314,40348,40425,40429,40589,40596,40601]},{"a":194,"l":"mon_ptr_hi","c":"Supermon monitor's address pointer high byte ($9837-$9E9B); not used by the game.","t":"byte","b":[160],"x":[38967,39045,39101,39202,39464,39489,39534,39539,39550,39617,39623,39737,39998,40028,40141,40316,40352,40427,40586,40603]},{"a":195,"l":"mon_ptr2_lo","c":"Supermon monitor's second pointer low byte ($C3/$C4, $991C-$9B83); not used by the game.","t":"byte","b":[28],"x":[39196,39685,39708,39727,39777,39793,39795,39811]},{"a":196,"l":"mon_ptr2_hi","c":"Supermon monitor's second pointer high byte ($9920-$9B78); not used by the game.","t":"byte","b":[250],"x":[39200,39689,39710,39729,39798,39800]},{"a":197,"l":"kernal_last_key","c":"KERNAL: the matrix number of the key its scan last saw (64 for none). The game reads it at $7C70, where 4 (F1) toggles $1019, at $C35F, and in the unreferenced F1 wait at $8000.","t":"byte","b":[64,0],"x":[31856,32768,50015]},{"a":199,"l":"step_sound_count","c":"Footstep sound counter: $1D04, called on each walking step and each ladder step ($4B50, $4B84), increments it and every 11th call ($0B) plays a click on voice 2 and resets it to 0 (the KERNAL's reverse-mode flag on a stock machine). $00C8-$00D7: untouched KERNAL screen-editor workspace.","t":"byte","b":[0,3,0,3,64,1,2,32],"x":[7428,7430,7453]},{"a":207,"t":"byte","b":[0,0,0,4,0,0,39,0]},{"a":215,"t":"byte","b":[159]},{"a":216,"l":"game_state_d8","c":"Game state flag. $40 = no lives left: set by $1734 when the last life mark is gone; every room loop tests it ($4469, $4A94, $51F4, $5A60, $6220, $6A20, $6DF3, $76B0, $8424, $86B0, $9320) and jumps to the game over $4475 (room 10's loop first points the IRQ back at $8215), and $1FDA, after a respawn, jumps to its second entry $447D. $50 = an object carried: set when a room's object is taken ($4E3B, $5CC8, $6467, $6D7D) and tested by each of those four takes ($4E0F, $5CAC, $642C, $6D61), so only one object is carried at a time; $00 = cleared when it is used ($540F, $78CF, $7992, $82B2). $00D9-$00F4: the KERNAL screen line-link table, untouched by the game.","t":"byte","b":[0,132,132,132,132,132,132,132],"x":[5942,8154,17513,19092,19983,20027,20980,21519,23136,23724,23752,25120,25644,25703,27168,28001,28029,28147,30384,30927,31122,33458,33828,34480,37664]},{"a":224,"t":"byte","b":[133,133,133,133,133,133,134,134]},{"a":232,"t":"byte","b":[134,134,134,134,134,135,135,135]},{"a":240,"t":"byte","b":[135,135,135,0,216]},{"a":245,"l":"room_var_f5","c":"Which object Mr Hat carries (with $D8 = $50): set when it is taken to $20 (room 2, $4E18), $EE (room 5, $5CD9), $28 (room 6, $646B) or $AF (room 8, $70AA); read where it is used: $549C (room 2, for $20), $78A0 and $78E4 (room 9's upper door, for $28), $796F (room 9's lower floor, for $AF) and $82AA (room 11, for $EE). The unreferenced ending fragment at $7D68 increments it.","t":"byte","b":[129],"x":[19992,21660,23769,25707,28842,30880,30948,31087,32104,33450]},{"a":246,"l":"dying_flag","c":"Death-in-progress flag: $30 while Mr Hat is being killed (set at $4C71 and by the unreachable routine $1D53), $00 otherwise (cleared by the respawn $4D50 at $4D63, and at $4AA5, $5955, $1F9C, and by the loop at $50DF that clears $F6-$FE). Room 1's loop tests it at $42EF and then calls $1FD7 (respawn, or the title if no lives are left); room 3's loop tests it at $4C9A. The byte has other uses too: room 5's interrupt handler increments it every frame ($597C) and recolours the cones' cells at $40, $80, $B0 and $F0 ($598D-$59F8); the unreached routine $451F counts it up to $18 ($4542).","t":"byte","b":[235],"x":[7509,17135,17730,17732,19109,19569,19610,19811,19826,20705,22869,22908,22925]},{"a":247,"l":"stage_flag_f7","c":"Cleared by the start-up at $0887; when it reads $20 the room-1 code jumps to $44B9 ($44AD, $6FEA). Its only other user is room 6's interrupt handler, which counts it from $00 every frame ($609C) and puts it back to 0 when it reaches $20 ($60EE-$60F7), so nothing leaves it at $20 and the room-1 tests cannot match; what it stands for is open.","t":"byte","b":[0],"x":[2183,17581,24732,24734,24823,28650]},{"a":248,"l":"frame_tick","c":"Two uses. In room 1 it counts play frames: room 1's IRQ increments it at $1C90, and $1FAC-$1FB8/$449E-$44AA/$6FDB fire the event $44E0 when $F9:$F8 reaches $20:$F0. On ladders (the shared climbing step $4B20, used by rooms 2-11: $4B27-$4B6A) it is the animation delay, counted to 5 before $F9 steps. Cleared at $0889, $44C6, $4894.","t":"byte","b":[0],"x":[2185,7312,8114,17572,17606,18580,19239,19246,19254,19291,19298,19306,28641]},{"a":249,"l":"frame_tick_hi","c":"Two uses. Paired with $F8 as the room-1 timer (set to $20 at $44C2; the event at $44E0 fires at $20:$F0). On ladders it is Mr Hat's climbing frame, $32-$33, stepped by the shared climbing step $4B20 at $4B38/$4B6C and copied to $07FC; set to $32 at $489D and $33 at $50F2, and copied to $07FC by room 6's sprite set-up at $6040. Cleared at $088B; also written by the unreferenced $816E ($8173).","t":"byte","b":[0],"x":[2187,8108,17566,17602,18589,19241,19256,19258,19266,19293,19308,19310,19318,20722,24640,28635,33139]},{"a":250,"l":"flag_fa","c":"Cleared by the start-up at $088D and set to $20 by the timed event at $44F9 (and to 0 by the unreferenced $816E at $8175); no reader found in the traced code.","t":"byte","b":[0],"x":[2189,17657,33141]},{"a":251,"l":"walk_tick_or_fill_byte","c":"Several uses. In play: the walking animation delay, incremented each step and reset at 9, when the walk frame advances (room 1 at $4307/$435B; cleared by the set-up $1B85 and at $400F), and the lift's delay counter ($4036, $406E). In the room drawing routines: the fill byte of the screen-RAM rectangle fill $56ED (e.g. $CC at $6E17). In the title music ($C1FC): the low byte of the note pointer $FB/$FC (lda ($FB),y at $C214, $C255, $C299).","t":"byte","b":[98],"x":[7045,16399,16438,16494,17159,17166,17174,17243,17250,17258,18727,18734,18742,18778,18785,18793,19898,19940,21312,21319,21327,21360,21367,21375,22257,22353,22376,22399,22422,22503,22766,24097,24120,24143,24166,24528,24551,24574,24675,26097,26135,26158,26210,26625,27488,27495,27503,27536,27543,27551,28185,28222,28323,28344,28412,28618,29009,29043,29125,29579,29776,29810,29871,29886,30057,31048,31961,32008,32015,32023,32061,32068,32076,33553,33587,33692,33937,33960,33991,34052,34359,37126,37156,37180,37207,37385,37408,37512,38290,38529,42812,49672,49684,49737,49749,49805,49817]},{"a":252,"l":"room1_door_flag_or_fill_width","c":"Several uses. In room 1 it is the door flag: cleared by the set-up at $1B87, set to $20 when Mr Hat takes the object at X = $78 on the bottom floor ($1E79), and tested at $1E8F, where $20 lets him open the door at X = $A0. In the room drawing routines it is the width of the rectangle fill $56ED (cpy $FC). In the title music ($C1FC) it is the high byte of the note pointer $FB/$FC ($C20F, $C250, $C294).","t":"byte","b":[203],"x":[7047,7801,7823,19910,19929,19952,19971,22262,22301,22357,22380,22403,22426,22445,22474,22507,22672,24101,24124,24147,24170,24189,24218,24532,24555,24578,26101,26120,26139,26162,26181,26214,26373,28193,28230,28335,28352,28375,28416,28614,29013,29047,29081,29129,29159,29487,29583,29617,29713,29780,29814,29875,29890,33561,33576,33614,33945,33968,33983,34011,34044,34119,37130,37160,37190,37211,37308,37389,37412,37516,49679,49744,49812]},{"a":253,"l":"walk_frame_right_or_fill_rows","c":"Four uses. In play: Mr Hat's current walking-right sprite frame, $2C-$2E, advanced when $FB reaches 9 and copied to $07FC (room 1 at $4309-$4322; set to $2C at $1B8B). In the drawing routines: the number of rows of the rectangle fill $56ED (cpx $FD), the row count of copy_pattern_rows $5713 (cpx $FD at $572F), and the background colour argument of the room prologue $56B0 (ldy $FD at $56B8; for example $6E at $6E05, $98 at $65E2).","t":"byte","b":[0],"x":[7051,17161,17176,17178,17186,17988,18715,18729,18744,18746,18754,19842,19914,19933,19956,19975,20714,21314,21329,21331,21339,22200,22278,22319,22338,22361,22384,22407,22430,22449,22478,22511,22676,22857,24082,24105,24128,24151,24174,24193,24222,24536,24559,24582,26082,26105,26143,26166,26185,26218,26377,26629,27490,27505,27507,27515,28167,28189,28226,28337,28348,28379,28420,28610,28994,29017,29051,29066,29085,29110,29133,29163,29491,29587,29717,29784,29818,29833,29879,29894,30061,31965,32063,32078,32080,32088,32898,33538,33557,33580,33591,33618,33696,33922,33941,33964,33987,34015,34048,34123,34363,36914,37069,37134,37164,37188,37213,37312,37393,37416,38306]},{"a":254,"l":"zp_ptr_lo","c":"Low byte of the pointer $FE/$FF used by the title's bitmap clear $16B1-$16BB (sta ($FE),y) and by the room drawing routines ($56ED and many others) for screen addresses. Cleared by the room-1 set-up at $1B93.","t":"byte","b":[0],"x":[5809,5819,7059,18007,18019,18027,18031,18033,18052,18064,18072,18076,18095,18107,18115,18119,18121,18167,18179,18187,18191,18193,18388,18401,18411,18415,18417,19902,19921,19944,19963,20080,20093,20103,20107,20109,22259,22267,22271,22273,22298,22308,22312,22314,22345,22368,22391,22414,22437,22466,22495,22547,22558,22574,22664,22693,23962,23977,24089,24112,24135,24158,24181,24210,24239,24250,24271,24520,24543,24566,26089,26112,26127,26150,26173,26206,26365,26394,26405,26426,28177,28204,28215,28234,28327,28356,28367,28424,28435,28602,28625,29001,29024,29035,29058,29073,29102,29117,29140,29151,29180,29201,29212,29479,29508,29524,29540,29595,29602,29609,29634,29705,29734,29768,29791,29802,29825,29863,29902,29909,33549,33572,33599,33606,33929,33952,33975,34003,34036,34111,37138,37151,37173,37203,37300,37329,37345,37361,37377,37400,37552]},{"a":255,"l":"zp_ptr_hi_or_walk_frame_left","c":"Two uses. High byte of the pointer $FE/$FF ($16B5: $20, stepped to $3F by the bitmap clear). In play: Mr Hat's current walking-left sprite frame, $2F-$31, advanced like $FD and copied to $07FC (room 1 at $435D-$4376; set to $2F at $1B8F).","t":"byte","b":[63],"x":[5813,5824,5826,7055,17245,17260,17262,17270,18011,18045,18056,18088,18099,18133,18171,18205,18392,18409,18429,18711,18780,18795,18797,18805,19906,19925,19948,19967,20084,20101,20121,20718,21362,21377,21379,21387,22285,22306,22326,22349,22372,22395,22418,22441,22470,22499,22551,22562,22578,22668,22697,22861,23966,23981,24093,24116,24139,24162,24185,24214,24243,24254,24275,24524,24547,24570,26093,26116,26131,26154,26177,26202,26369,26398,26409,26430,26633,27538,27553,27555,27563,28181,28200,28211,28238,28331,28360,28371,28428,28439,28606,28629,29005,29028,29039,29062,29077,29106,29121,29144,29155,29184,29205,29216,29483,29512,29528,29544,29591,29613,29638,29709,29738,29772,29795,29806,29829,29867,29898,30065,31969,32010,32025,32027,32035,32902,33545,33568,33595,33610,33700,33933,33956,33979,34007,34040,34115,34367,37073,37122,37145,37184,37197,37304,37333,37349,37365,37381,37404,37556]},{"a":256,"t":"gap","n":272,"x":[39638,39917]},{"a":528,"l":"mon_buf_0210","c":"BASIC input buffer ($0200-$0258), used only by the Supermon monitor ($9BDC-$9EC5: its command-line and hex-assembly workspace, $0210,x). The game does not use it; the snapshot holds leftovers of a file name there ($0206: 'O\"' and spaces, 'PRG' at $0214).","t":"byte","b":[32],"x":[39900,39925,39961,40395,40433,40437,40645]},{"a":529,"l":"mon_buf_0211","c":"Supermon monitor workspace inside the BASIC input buffer ($9DB3, $9DC8, rotated with $0210 when it packs a number); not used by the game.","t":"byte","b":[32,32,32,80,82,71,0,82],"x":[40371,40392]},{"a":537,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":545,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":553,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":561,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":569,"l":"mon_reg_pc_hi","c":"Supermon monitor's saved registers, $0239-$023F (written on entry at $9801-$9822, printed and restored at $9969-$998F): $0239 is the program counter high byte. Not used by the game.","t":"byte","b":[0],"x":[38942,39047,39140,39284]},{"a":570,"l":"mon_reg_pc_lo","c":"Supermon monitor: saved program counter low byte ($9818, $9882, $98EA, $9978). Not used by the game.","t":"byte","b":[0],"x":[38936,39042,39146,39288]},{"a":571,"l":"mon_reg_sr","c":"Supermon monitor: saved status register ($980D, $997C). Not used by the game.","t":"byte","b":[0],"x":[38925,39292]},{"a":572,"l":"mon_reg_a","c":"Supermon monitor: saved accumulator ($9809, $9980). Not used by the game.","t":"byte","b":[0],"x":[38921,39296]},{"a":573,"l":"mon_reg_x","c":"Supermon monitor: saved X register ($9805, $9983). Not used by the game.","t":"byte","b":[0],"x":[38917,39299]},{"a":574,"l":"mon_reg_y","c":"Supermon monitor: saved Y register ($9801, $9986). Not used by the game.","t":"byte","b":[0],"x":[38913,39302]},{"a":575,"l":"mon_reg_sp","c":"Supermon monitor: saved stack pointer ($9822, $996F-$9AED). Not used by the game. $0240-$0258: rest of the input buffer, unused.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[38946,39279,39311,39661]},{"a":583,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":591,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":599,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":607,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":615,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":623,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":631,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":639,"t":"gap","n":149},{"a":788,"l":"irq_vector_lo","c":"KERNAL IRQ vector, low byte (CINV, with $0315). The game points it at its own interrupt routines: $EA31 (KERNAL only) at $16A6, $177A and $B678 (from $7CE8, after the last room), room 1's $1C00 at $1BF3, the other rooms' routines at $48A2 ($48B0), $50FC ($510A), $595A ($596A), $606F ($608A), $6831 ($683D), $75D1 ($7600), $820B/$842D/$8462 ($8215), $8647 ($8660), $90F3 ($B9AD); for the title music, $CB14 saves it and installs $C2EB ($CB22), which installs $C0AF at $C30A, and $CB0A puts the saved vector back. In the snapshot it holds $C0AF.","t":"byte","b":[175],"x":[5798,6010,7155,18594,20732,22874,24687,26673,30161,33291,33837,33890,34375,37107,46712,49930,51978,51988,52002]},{"a":789,"l":"irq_vector_hi","c":"KERNAL IRQ vector, high byte; written together with $0314 by each of the installers listed there (with SEI/CLI around the pair in most of them).","t":"byte","b":[192],"x":[5803,6015,7160,18599,20737,22879,24692,26678,30166,33296,33842,33895,34380,37112,46717,49935,51984,51994,52007]},{"a":790,"l":"brk_vector_lo","c":"KERNAL BRK vector, low byte: set to $66 (with $0317 = $FE: the KERNAL's warm start $FE66) at $92EF, and by the Supermon monitor at $97F0.","t":"byte","b":[102],"x":[37615,38896]},{"a":791,"l":"brk_vector_hi","c":"KERNAL BRK vector, high byte: $FE, written at $92EA and by the monitor at $97F6 (see $0316). $0318-$0353: the other KERNAL vectors (NMI, OPEN, ..., LOAD, SAVE), not written by the game's traced code.","t":"byte","b":[254,71,254,74,243,145,242,14],"x":[37610,38902]},{"a":799,"t":"byte","b":[242,80,242,51,243,87,241,202]},{"a":807,"t":"byte","b":[241,237,246,62,241,47,243,102]},{"a":815,"t":"byte","b":[254]},{"a":816,"l":"load_vector","c":"KERNAL LOAD vector (ILOAD). Only the Supermon monitor uses it, jumping through it at $99EF; the game never loads anything.","t":"byte","b":[165,244],"x":[39407]},{"a":818,"l":"save_vector","c":"KERNAL SAVE vector (ISAVE). Only the Supermon monitor jumps through it ($99F2).","t":"byte","b":[237,245,0,0,0,0,0,0],"x":[39410]},{"a":826,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":834,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":842,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":850,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":858,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":866,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":874,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":882,"t":"gap","n":1167},{"a":1024,"t":"note","l":"room_marker_cell","note":"outside the tracked image","x":[5960,35851,38081,38103,38576,43168,43231]},{"a":1977,"t":"note","l":"lives_mark_1","c":"The four lives marks are colour cells of the status line: $07B9 and $07BA (row 23, columns 33-34) and $07E1 and $07E2 (row 24), set by room 1's start of play ($6E6E, $6E71). A mark shows while its cell holds $BC and is hidden by $CC, grey on grey. $1D86, at the end of every death ($A8E6) and from $1D79/$1D82, takes the upper ones ($07B9, then $07BA at $1DB5) and then calls $1700 for the lower ones; room 3's $4C73 tests the upper cells for $6C, which never matches, and so goes straight to $1700; $1734 sets $D8 = $40 when the last is gone.","note":"outside the tracked image","x":[7558,7567,19571,19580,28270]},{"a":1978,"t":"note","l":"lives_mark_2","note":"outside the tracked image","x":[7605,7614,19587,19596]},{"a":1982,"t":"note","l":"carried_item_cell_top","note":"outside the tracked image","x":[7951,20007,23761,25695,28260,28834]},{"a":2017,"t":"note","l":"lives_mark_3","note":"outside the tracked image","x":[5888,5897,28273]},{"a":2018,"t":"note","l":"lives_mark_4","note":"outside the tracked image","x":[5914,5923]},{"a":2022,"t":"note","l":"carried_item_cell_bottom","note":"outside the tracked image","x":[7954,20010,23764,25698,28263,28837]},{"a":2040,"t":"note","l":"spr0_pointer","c":"Sprite pointers $07F8-$07FF (screen $0400 + $3F8): shape number x 64 in VIC bank 0, so $24-$3F are the shapes at $0900-$0FFF. $07FC is Mr Hat's (sprite 4), the most-written byte of the game: walking $2C-$2E and $2F-$31, climbing $32/$33, crouching $2A, dying $27; room 3 also gives him $22 (the bytes at $0880, inside the start-up code) as he steps onto its ladder ($48F2, $4AFF).","note":"outside the tracked image","x":[4263,6939,28679,28688,28696,31651,31663,31689,31701,47016,47516,47525]},{"a":2041,"t":"note","l":"spr1_pointer","note":"outside the tracked image","x":[6942,28706,28715,28723,47021]},{"a":2042,"t":"note","l":"spr2_pointer","note":"outside the tracked image","x":[6947,18568,47026,47794,47840,47859,47878]},{"a":2043,"t":"note","l":"spr3_pointer","note":"outside the tracked image","x":[6952,7326,7334,17979,18465,22829,30102,30270,30290,33153,34352,34438,34459,36985,47031,47236,47245,47256,47663,47672]},{"a":2044,"t":"note","l":"hat_sprite_pointer","note":"outside the tracked image","x":[6080,6089,6097,6957,7513,7595,7601,7645,7666,16394,17163,17213,17222,17233,17247,17297,17306,17341,17367,17399,17434,17460,17909,17918,17926,18674,18731,18782,18829,18835,18849,18859,18868,18903,18929,18961,18996,19022,19072,19081,19089,19113,19199,19243,19295,19728,19756,19780,19806,19821,20646,20662,21042,21051,21086,21112,21144,21179,21205,21316,21364,21408,21417,21428,22052,22104,22112,22121,22129,22224,22803,22824,23198,23207,23242,23268,23300,23335,23361,23472,23481,23489,23496,23505,23516,23892,24642,24668,25182,25191,25226,25252,25284,25319,25345,25456,25465,25473,25480,25489,25500,25897,25951,26518,26548,26578,26608,27230,27239,27274,27300,27332,27367,27393,27492,27540,27604,27613,27624,28925,29950,29980,30010,30040,30446,30455,30490,30516,30548,30583,30609,30720,30729,30737,30744,30753,30764,31359,31396,31572,32012,32065,33002,33722,33869,34306,34542,34551,34586,34612,34644,34679,34705,34816,34825,34833,34840,34849,34860,35147,35280,35840,37037,37058,37726,37735,37770,37796,37828,37863,37889,38000,38009,38017,38024,38033,38044,38498,38519,43106,47036,47388]},{"a":2045,"t":"note","l":"spr5_pointer","note":"outside the tracked image","x":[6962,33359]},{"a":2046,"t":"note","l":"spr6_pointer","note":"outside the tracked image","x":[7112,30125]},{"a":2047,"t":"note","l":"spr7_pointer","note":"outside the tracked image","x":[18323,18366,30128,42803,42827,42836,42844,47417,47430,47446]},{"a":2049,"l":"basic_sys2157","c":"The game's own BASIC program, as the freezer found it: the line 10 SYS 2157 ($0801-$080C, tokens 9E '2157'), then the text ' SYSTEM EDITOR<<<E **' at $0810 and, from $0828 to $0866, the tokenised tail of an older BASIC loader (SYS(PEEK(43)+256*PEEK(44)+127) at $084F), then $AA fill at $0868-$086C. Nothing reads these bytes; SYS 2157 enters at $086D.","t":"byte","b":[12,8,10,0,158,32,50,49]},{"a":2057,"t":"byte","b":[53,55,0,0,0,0,0,32]},{"a":2065,"t":"byte","b":[83,89,83,84,69,77,32,69]},{"a":2073,"t":"byte","b":[68,73,84,79,82,60,60,60]},{"a":2081,"t":"byte","b":[69,32,42,42,0,0,0,89]},{"a":2089,"t":"byte","b":[0,0,0,0,0,0,0,83]},{"a":2097,"t":"byte","b":[0,0,0,0,0,0,86,69]},{"a":2105,"t":"byte","b":[82,84,73,77,69,78,164,33]},{"a":2113,"t":"byte","b":[33,172,0,0,0,49,44,49]},{"a":2121,"t":"byte","b":[50,0,102,8,130,0,158,40]},{"a":2129,"t":"byte","b":[194,40,52,51,41,170,50,53]},{"a":2137,"t":"byte","b":[54,172,194,40,52,52,41,170]},{"a":2145,"t":"byte","b":[49,50,55,41,0,0,0,170]},{"a":2153,"t":"byte","b":[170,170,170,170]},{"a":2157,"l":"entry_sys2157","c":"Game entry, reached by SYS 2157. Calls the title $0876 (which returns when fire is pressed), falls into the new-game start $0870. Called once; the rest of the game re-enters at $0870.","t":"code","b":[32,118,8],"m":"jsr","oa":2166,"o":"start_title"},{"a":2160,"l":"new_game","c":"Start a new game: $9265 switches the screen to bitmap mode, then $087E resets the game variables and enters room 1. Jumped to at game over ($802A, at the end of $8020, which $4486 reaches after the title), after the win ($7CF3), from $5BA4 (room 5, a path whose reachability is open), and from $8012/$801A in the F1 wait $8000, which only the dead Lupenio ending reaches ($7E24).","t":"code","b":[32,101,146],"m":"jsr","oa":37477,"o":"bitmap_mode_on","x":[23460,31987,32786,32794,32810]},{"a":2163,"t":"code","b":[76,126,8],"m":"jmp","oa":2174,"o":"reset_game_vars"},{"a":2166,"l":"start_title","c":"Banks the memory ($01 = $36: RAM at $A000-$BFFF, I/O, KERNAL) and runs the title routine $16A3, which returns once fire has been pressed.","t":"code","b":[169,54],"m":"lda","o":"#$36","x":[2157]},{"a":2168,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"cpu_port_banks"},{"a":2170,"t":"code","b":[32,163,22],"m":"jsr","oa":5795,"o":"title_screen"},{"a":2173,"t":"code","b":[96],"m":"rts"},{"a":2174,"l":"reset_game_vars","c":"Resets the start-of-game variables and jumps to the play set-up $6E00: silences SID voice 3 ($D40F frequency high = 0), clears $F7-$FA, sets $44E0 to $20 (restores the JSR opcode of the one-shot routine $44E0, which rewrites itself to RTS when it runs) and clears the sprite animation counters $64F0/$64F1.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[2163]},{"a":2176,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":2179,"t":"code","b":[234],"m":"nop"},{"a":2180,"t":"code","b":[234],"m":"nop"},{"a":2181,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2183,"t":"code","b":[133,247],"m":"sta","oa":247,"o":"stage_flag_f7"},{"a":2185,"t":"code","b":[133,248],"m":"sta","oa":248,"o":"frame_tick"},{"a":2187,"t":"code","b":[133,249],"m":"sta","oa":249,"o":"frame_tick_hi"},{"a":2189,"t":"code","b":[133,250],"m":"sta","oa":250,"o":"flag_fa"},{"a":2191,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":2193,"t":"code","b":[141,224,68],"m":"sta","oa":17632,"o":"timer_oneshot_44e0"},{"a":2196,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2198,"t":"code","b":[141,240,100],"m":"sta","oa":25840,"o":"sprite0_anim_count"},{"a":2201,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2203,"t":"code","b":[141,241,100],"m":"sta","oa":25841,"o":"sprite1_anim_count"},{"a":2206,"t":"code","b":[76,0,110],"m":"jmp","oa":28160,"o":"room1_start_of_play"},{"a":2209,"l":"floor_check_if_hat_on","c":"Called from room 1's jump loops ($43AB-$443F, $4466), from $6FFC, and from the unreachable $1D20 ($1D30): when the sprite-enable register $D015 is $30 or more it runs the room-1 floor handler $1D33; otherwise it returns. The compare is on the whole register value, not on bit 4: it passes when sprites 4 and 5 are both on, or sprite 6 or 7 is on, and fails with Mr Hat (sprite 4) on alone.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[7472,17323,17349,17378,17416,17442,17471,17510,28668]},{"a":2212,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":2214,"t":"code","b":[176,1],"m":"bcs","oa":2217,"o":"b_08A9"},{"a":2216,"t":"code","b":[96],"m":"rts"},{"a":2217,"l":"b_08A9","t":"code","b":[32,51,29],"m":"jsr","oa":7475,"o":"room1_floor_dispatch","x":[2214]},{"a":2220,"t":"code","b":[96],"m":"rts"},{"a":2221,"l":"sprites_off_but_4_5","c":"Turns off every sprite but 4 (Mr Hat) and 5 ($D015 AND #$30). Its only caller, $45D0, is inside the unreached routine $451F, so it never runs.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[17872]},{"a":2224,"t":"code","b":[41,48],"m":"and","o":"#$30"},{"a":2226,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":2229,"t":"code","b":[96],"m":"rts"},{"a":2230,"l":"pad_08b6","c":"Two zero bytes after the routine at $08AD; nothing reads them.","t":"byte","b":[0,0]},{"a":2232,"l":"gfx_cells_08b8","c":"Bitmap graphics, three 8-byte cells ($08B8-$08CF, a shape sloping down to the left), read as one 24-byte block by $4573-$457E, which copies it to the bitmap at $36A0 (character row 18, columns 4-6); that copy is inside the unreached routine $451F.","t":"byte","b":[255,255,255,232,193,193,192,128],"x":[17781]},{"a":2240,"t":"byte","b":[255,255,247,243,194,0,0,0]},{"a":2248,"t":"byte","b":[255,243,195,129,1,1,0,0]},{"a":2256,"l":"gfx_cells_08d0","c":"Bitmap graphics, six 8-byte cells ($08D0-$08FF: the left and right edges of a picture, in pairs) that the loop $4580-$45A9 copies to the bitmap at $37E0/$37F0, $3920/$3930 and $3A60/$3A70: character rows 19-21, columns 4 and 6 (16 bytes apart, so column 5 between them is not written). The loop is inside the unreached routine $451F.","t":"byte","b":[192,224,240,240,248,252,240,224],"x":[17794]},{"a":2264,"l":"f_08D8","c":"Cell at $08D8 of the wedge picture ($08D0): the right half of its top row, copied to $37F0 by $4588.","t":"byte","b":[1,3,7,7,15,7,7,1],"x":[17800]},{"a":2272,"l":"f_08E0","c":"Cell at $08E0 of the wedge picture ($08D0): left half of the middle row, copied to $3920 by $458E.","t":"byte","b":[192,224,240,240,248,248,224,192],"x":[17806]},{"a":2280,"l":"f_08E8","c":"Cell at $08E8 of the wedge picture ($08D0): right half of the middle row, copied to $3930 by $4594.","t":"byte","b":[1,0,0,1,3,7,15,3],"x":[17812]},{"a":2288,"l":"f_08F0","c":"Cell at $08F0 of the wedge picture ($08D0): left half of the bottom row, copied to $3A60 by $459A.","t":"byte","b":[128,224,240,240,248,252,252,254],"x":[17818]},{"a":2296,"l":"f_08F8","c":"Cell at $08F8 of the wedge picture ($08D0): right half of the bottom row, copied to $3A70 by $45A0.","t":"byte","b":[3,1,0,0,1,3,7,15],"x":[17824]},{"a":2304,"l":"spr_24_walker","c":"Sprite shape $24 (64 bytes at $0900, multicolour): a figure with a round head and a long arm or stick held forward, legs below. Room 1's set-up puts it on sprite 6 ($1BC8); also set on sprite 2 at $BAB2/$BB06, where room 2's walker alternates it with $29 while walking right ($BAF3-$BB02).","t":"byte","b":[0,3,192,0,15,240,0,15]},{"a":2312,"t":"byte","b":[176,0,63,156,0,255,255,15]},{"a":2320,"t":"byte","b":[255,255,63,255,85,60,63,213]},{"a":2328,"t":"byte","b":[60,15,255,60,3,255,15,0]},{"a":2336,"t":"byte","b":[252,15,0,0,15,0,0,3]},{"a":2344,"t":"byte","b":[192,0,3,192,0,3,192,0]},{"a":2352,"t":"byte","b":[15,0,0,15,0,0,92,0]},{"a":2360,"t":"byte","b":[0,85,0,0,5,0,0,0]},{"a":2368,"l":"spr_25_guardian_a","c":"Sprite shape $25 (multicolour): a creature with a small head and a wide body on many short legs. Sprites 0 and 1 in room 1 ($1B19-$1B1E) and sprite 0 in room 6 ($10A7); the shared IRQ tail $7000, used by several rooms' handlers, alternates it with shape $35 for their animation ($7007-$7033). Also sprite 3 on the title ($B7B7).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2376,"t":"byte","b":[0,0,42,0,15,8,0,63]},{"a":2384,"t":"byte","b":[204,0,60,236,60,51,204,255]},{"a":2392,"t":"byte","b":[15,14,243,0,12,207,0,12]},{"a":2400,"t":"byte","b":[60,0,63,0,0,162,128,5]},{"a":2408,"t":"byte","b":[98,84,21,81,85,21,21,81]},{"a":2416,"t":"byte","b":[21,21,81,21,85,85,21,81]},{"a":2424,"t":"byte","b":[85,5,64,84,0,0,0,0]},{"a":2432,"l":"spr_26_blade_right","c":"Sprite shape $26 (multicolour): a small dagger-like shape pointing right. Sprite 3 in room 1 ($1B26), the IRQ swapping it with its mirror image $34 when the sprite turns ($1C9C, $1CA4); also sprite 3 in rooms 3 ($463B), 5 ($592D), 9 ($7596 and its IRQ) and 11 ($8630, $8686), and sprite 4 on the title ($B7BC).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2448,"t":"byte","b":[0,0,0,0,0,0,0,192]},{"a":2456,"t":"byte","b":[0,0,204,34,42,223,170,170]},{"a":2464,"t":"byte","b":[223,42,170,223,8,128,204,0]},{"a":2472,"t":"byte","b":[0,192,0,0,0,0,0,0]},{"a":2480,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2488,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2496,"l":"spr_27_hat_dying","c":"Sprite shape $27: Mr Hat's death frame, a work buffer. $1DDD copies a fresh 64-byte image into it from $ACD8 and points sprite 4 at it; $A8F0-$A913 then ANDs each of its bytes with the raster line $D012, so the figure crumbles away. The snapshot holds a partly worn copy.","t":"byte","b":[0,0,0,2,170,128,10,170],"x":[7656,43250,43256]},{"a":2504,"t":"byte","b":[160,10,170,160,10,170,160,10]},{"a":2512,"l":"f_09D0","c":"Bytes 16-31 of the death-frame buffer $09C0 (sprite rows 5-10), worn away by $A8FB-$A901.","t":"byte","b":[170,160,10,170,160,10,170,160],"x":[43259,43265]},{"a":2520,"t":"byte","b":[0,0,0,42,170,168,42,170]},{"a":2528,"l":"f_09E0","c":"Bytes 32-47 of the death-frame buffer $09C0 (sprite rows 10-15), worn away by $A904-$A90A.","t":"byte","b":[168,0,0,0,0,0,0,0],"x":[43268,43274]},{"a":2536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2544,"l":"f_09F0","c":"Bytes 48-63 of the death-frame buffer $09C0 (sprite rows 16-20 and the unused 64th byte), worn away by $A90D-$A913.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[43277,43283]},{"a":2552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2560,"l":"spr_28_lift_cabin","c":"Sprite shape $28 (multicolour): a cabin with a window above a patterned base, the lift cabin: sprite 5 in room 1 ($1B32), moved with Mr Hat by the lift $4000, and in room 11 ($824F, the lift between its floors).","t":"byte","b":[0,0,0,10,170,160,42,170]},{"a":2568,"t":"byte","b":[168,42,170,168,41,85,104,165]},{"a":2576,"t":"byte","b":[85,90,165,84,26,165,84,26]},{"a":2584,"t":"byte","b":[165,84,26,165,84,26,165,80]},{"a":2592,"t":"byte","b":[90,169,85,106,170,170,170,170]},{"a":2600,"t":"byte","b":[170,170,186,239,186,186,238,190]},{"a":2608,"t":"byte","b":[186,239,186,186,238,186,190,238]},{"a":2616,"t":"byte","b":[190,170,170,170,10,170,160,0]},{"a":2624,"l":"spr_29_walker_d","c":"Sprite shape $29 (multicolour): the walker of shape $24 drawn in another pose. Room 2's walker, sprite 2, alternates it with $24 while walking right ($BAF3-$BAFC, through set_sprite2_pointer $BB06, from room 2's IRQ at $5110 via $BA7D); no immediate store of $29 to $07F8-$07FF exists, which is why it looked unused.","t":"byte","b":[0,0,0,0,15,0,0,63]},{"a":2632,"t":"byte","b":[192,0,62,192,0,254,112,3]},{"a":2640,"t":"byte","b":[255,252,63,255,212,255,253,104]},{"a":2648,"t":"byte","b":[240,255,104,240,63,212,240,15]},{"a":2656,"t":"byte","b":[252,60,3,240,60,0,0,60]},{"a":2664,"t":"byte","b":[0,0,15,0,0,15,0,0]},{"a":2672,"t":"byte","b":[15,0,0,3,0,0,0,212]},{"a":2680,"t":"byte","b":[0,1,84,0,1,64,0,0]},{"a":2688,"l":"spr_2a_hat_crouch","c":"Sprite shape $2A: Mr Hat crouching, hat pulled down over a short body. Shown while the stick is held down ($4344 and the other rooms' copies).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2712,"t":"byte","b":[2,170,128,10,170,160,10,170]},{"a":2720,"t":"byte","b":[160,10,170,160,10,170,160,10]},{"a":2728,"t":"byte","b":[170,160,10,170,160,0,0,0]},{"a":2736,"t":"byte","b":[42,170,168,42,170,168,3,195]},{"a":2744,"t":"byte","b":[192,21,65,84,20,65,20,0]},{"a":2752,"l":"spr_2b_trophy","c":"Sprite shape $2B (multicolour): a cup or trophy on a stem, a guardian's shape. Sprite 2 in room 1 ($1B23) and in room 3 ($4888, a falling guardian), and sprite 6 in room 9 ($75AD/$75B0).","t":"byte","b":[21,85,80,5,85,64,10,170]},{"a":2760,"t":"byte","b":[128,10,170,128,10,160,128,10]},{"a":2768,"t":"byte","b":[160,128,10,160,128,10,130,128]},{"a":2776,"t":"byte","b":[2,170,0,2,170,0,0,0]},{"a":2784,"t":"byte","b":[0,0,168,0,1,85,0,2]},{"a":2792,"t":"byte","b":[170,0,0,168,0,0,0,0]},{"a":2800,"t":"byte","b":[2,0,128,32,0,0,2,34]},{"a":2808,"t":"byte","b":[8,0,0,0,8,2,0,0]},{"a":2816,"l":"spr_2c_hat_right_1","c":"Sprite shape $2C: Mr Hat facing right, first walking frame (hat over a brim, two legs). The standing right frame: set at $1B2B and on every respawn facing right. Frames $2C-$2E cycle in $FD.","t":"byte","b":[10,170,0,42,170,128,42,170]},{"a":2824,"t":"byte","b":[128,42,170,128,42,170,128,42]},{"a":2832,"t":"byte","b":[170,128,42,170,128,0,0,0]},{"a":2840,"t":"byte","b":[170,170,160,170,170,160,3,207]},{"a":2848,"t":"byte","b":[0,3,195,192,3,195,192,3]},{"a":2856,"t":"byte","b":[195,192,3,195,192,15,15,0]},{"a":2864,"t":"byte","b":[15,15,0,63,5,0,92,5]},{"a":2872,"t":"byte","b":[80,85,4,80,69,0,0,0]},{"a":2880,"l":"spr_2d_hat_right_2","c":"Sprite shape $2D: Mr Hat facing right, second walking frame; also the take-off frame of a jump to the right ($4398).","t":"byte","b":[10,170,0,42,170,128,42,170]},{"a":2888,"t":"byte","b":[128,42,170,128,42,170,128,42]},{"a":2896,"t":"byte","b":[170,128,42,170,128,0,0,0]},{"a":2904,"t":"byte","b":[170,170,160,170,170,160,3,252]},{"a":2912,"t":"byte","b":[0,3,207,0,3,207,0,15]},{"a":2920,"t":"byte","b":[15,0,31,15,0,20,15,0]},{"a":2928,"t":"byte","b":[20,60,0,5,60,0,5,21]},{"a":2936,"t":"byte","b":[0,0,21,80,0,17,80,0]},{"a":2944,"l":"spr_2e_hat_right_3","c":"Sprite shape $2E: Mr Hat facing right, third walking frame, body leaning; also the landing frame of a jump to the right ($43D5).","t":"byte","b":[0,0,0,10,170,0,42,170]},{"a":2952,"t":"byte","b":[128,42,170,128,42,170,128,42]},{"a":2960,"t":"byte","b":[170,128,42,170,128,42,170,128]},{"a":2968,"t":"byte","b":[0,0,0,170,170,160,170,170]},{"a":2976,"t":"byte","b":[160,15,255,0,15,255,0,15]},{"a":2984,"t":"byte","b":[255,0,15,252,0,15,252,0]},{"a":2992,"t":"byte","b":[63,240,0,63,240,0,85,64]},{"a":3000,"t":"byte","b":[0,85,84,0,68,84,0,0]},{"a":3008,"l":"spr_2f_hat_left_1","c":"Sprite shape $2F: Mr Hat facing left, first walking frame; the standing left frame. Frames $2F-$31 cycle in $FF.","t":"byte","b":[0,170,160,2,170,168,2,170]},{"a":3016,"t":"byte","b":[168,2,170,168,2,170,168,2]},{"a":3024,"t":"byte","b":[170,168,2,170,168,0,0,0]},{"a":3032,"t":"byte","b":[10,170,170,10,170,170,0,243]},{"a":3040,"t":"byte","b":[192,3,195,192,3,195,192,3]},{"a":3048,"t":"byte","b":[195,192,3,195,192,0,240,240]},{"a":3056,"t":"byte","b":[0,240,240,0,80,252,5,80]},{"a":3064,"t":"byte","b":[53,5,16,85,0,0,81,0]},{"a":3072,"l":"spr_30_hat_left_2","c":"Sprite shape $30: Mr Hat facing left, second walking frame; also the take-off frame of a jump to the left ($43F5).","t":"byte","b":[0,170,160,2,170,168,2,170]},{"a":3080,"t":"byte","b":[168,2,170,168,2,170,168,2]},{"a":3088,"t":"byte","b":[170,168,2,170,168,0,0,0]},{"a":3096,"t":"byte","b":[10,170,170,10,170,170,0,63]},{"a":3104,"t":"byte","b":[192,0,243,192,0,243,192,0]},{"a":3112,"t":"byte","b":[240,240,0,240,244,0,240,20]},{"a":3120,"t":"byte","b":[0,60,20,0,60,80,0,84]},{"a":3128,"t":"byte","b":[80,5,84,0,5,68,0,0]},{"a":3136,"l":"spr_31_hat_left_3","c":"Sprite shape $31: Mr Hat facing left, third walking frame; also the landing frame of a jump to the left ($4432).","t":"byte","b":[0,0,0,0,170,160,2,170]},{"a":3144,"t":"byte","b":[168,2,170,168,2,170,168,2]},{"a":3152,"t":"byte","b":[170,168,2,170,168,2,170,168]},{"a":3160,"t":"byte","b":[0,0,0,10,170,170,10,170]},{"a":3168,"t":"byte","b":[170,0,255,240,0,255,240,0]},{"a":3176,"t":"byte","b":[255,240,0,63,240,0,63,240]},{"a":3184,"t":"byte","b":[0,15,252,0,15,252,0,1]},{"a":3192,"t":"byte","b":[85,0,21,85,0,21,17,0]},{"a":3200,"l":"spr_32_hat_front_1","c":"Sprite shape $32: Mr Hat seen from the front, legs apart: his climbing frame on ladders, alternating with $33 in the shared climbing step $4B20 ($4B27-$4B76, through $F9); also set directly when he arrives on a ladder ($50B6, $753A, $8602 and others).","t":"byte","b":[0,0,0,2,170,128,10,170]},{"a":3208,"t":"byte","b":[160,10,170,160,10,170,160,10]},{"a":3216,"t":"byte","b":[170,160,10,170,160,10,170,160]},{"a":3224,"t":"byte","b":[0,0,0,42,170,168,42,170]},{"a":3232,"t":"byte","b":[168,3,195,192,15,0,240,15]},{"a":3240,"t":"byte","b":[0,240,15,3,192,15,7,192]},{"a":3248,"t":"byte","b":[3,197,0,3,193,64,3,209]},{"a":3256,"t":"byte","b":[64,1,80,0,5,64,0,0]},{"a":3264,"l":"spr_33_hat_front_2","c":"Sprite shape $33: Mr Hat from the front, second climbing frame (see $32).","t":"byte","b":[2,170,128,10,170,160,10,170]},{"a":3272,"t":"byte","b":[160,10,170,160,10,170,160,10]},{"a":3280,"t":"byte","b":[170,160,10,170,160,0,0,0]},{"a":3288,"t":"byte","b":[42,170,168,42,170,168,3,195]},{"a":3296,"t":"byte","b":[192,3,195,192,15,0,240,15]},{"a":3304,"t":"byte","b":[0,240,3,192,240,3,208,240]},{"a":3312,"t":"byte","b":[0,83,192,1,67,192,1,71]},{"a":3320,"t":"byte","b":[192,0,5,64,0,1,80,0]},{"a":3328,"l":"spr_34_blade_left","c":"Sprite shape $34 (multicolour): the dagger shape of $26 pointing left, set on sprite 3 by room 1's IRQ at $1CA4 when it turns, and by room 9's ($7652) and room 11's ($869B) handlers.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3344,"t":"byte","b":[0,0,0,0,0,3,0,0]},{"a":3352,"t":"byte","b":[51,0,0,247,168,136,247,170]},{"a":3360,"t":"byte","b":[170,247,170,168,51,2,32,3]},{"a":3368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3392,"l":"spr_35_guardian_b","c":"Sprite shape $35 (multicolour): the many-legged creature of $25 in its second frame ($7016, $7031).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3400,"t":"byte","b":[0,0,0,0,0,42,0,0]},{"a":3408,"t":"byte","b":[8,60,0,12,255,15,14,243]},{"a":3416,"t":"byte","b":[63,204,207,60,236,60,51,204]},{"a":3424,"t":"byte","b":[0,15,12,0,0,63,0,0]},{"a":3432,"t":"byte","b":[162,128,5,98,84,21,81,85]},{"a":3440,"t":"byte","b":[21,21,81,21,21,81,21,85]},{"a":3448,"t":"byte","b":[85,21,81,85,5,64,84,0]},{"a":3456,"l":"spr_36_cherry_a","c":"Sprite shape $36 (multicolour): a round body with a pointed tip, first of four such shapes $36-$39. They are room 9's upper-floor guardian, sprite 0, which walks towards Mr Hat: $36/$37 walking right, $38/$39 walking left (room 9's IRQ, $7BA3-$7BD5).","t":"byte","b":[3,0,0,15,192,0,63,240]},{"a":3464,"t":"byte","b":[0,63,240,0,63,240,0,63]},{"a":3472,"t":"byte","b":[240,0,63,240,0,15,192,0]},{"a":3480,"t":"byte","b":[47,228,64,103,102,64,102,102]},{"a":3488,"t":"byte","b":[16,102,102,80,38,100,64,6]},{"a":3496,"t":"byte","b":[64]},{"a":3497,"l":"skip_operand_0da9","c":"False symbol: the operand of the Supermon monitor's BIT $0DA9 at $9D56, the skip idiom that hides LDA #$0D. These bytes are part of sprite shape $36 ($0D80).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[40278]},{"a":3505,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3513,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":3520,"l":"spr_37_cherry_b","c":"Sprite shape $37 (multicolour): second frame of room 9's guardian walking right (with $36; stored at $7BAF).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3536,"t":"byte","b":[0,0,0,0,0,6,96,0]},{"a":3544,"t":"byte","b":[38,100,64,103,102,64,111,230]},{"a":3552,"t":"byte","b":[16,111,230,80,63,244,64,63]},{"a":3560,"t":"byte","b":[240,0,63,240,0,63,240,0]},{"a":3568,"t":"byte","b":[15,192,0,3,0,0,0,0]},{"a":3576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3584,"l":"spr_38_cherry_c","c":"Sprite shape $38 (multicolour): first frame of room 9's guardian walking left ($7BC9; see $36).","t":"byte","b":[0,0,192,0,3,240,0,15]},{"a":3592,"t":"byte","b":[252,0,15,252,0,15,252,0]},{"a":3600,"t":"byte","b":[15,252,0,15,252,0,11,240]},{"a":3608,"t":"byte","b":[1,27,248,1,153,217,4,153]},{"a":3616,"t":"byte","b":[153,5,153,153,1,25,152,0]},{"a":3624,"t":"byte","b":[9,144,0,0,0,0,0,0]},{"a":3632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3648,"l":"spr_39_cherry_d","c":"Sprite shape $39 (multicolour): second frame of room 9's guardian walking left ($7BD5; see $36).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3664,"t":"byte","b":[0,0,0,0,0,0,9,144]},{"a":3672,"t":"byte","b":[1,25,152,1,153,217,4,155]},{"a":3680,"t":"byte","b":[249,5,155,249,1,31,252,0]},{"a":3688,"t":"byte","b":[15,252,0,15,252,0,15,252]},{"a":3696,"t":"byte","b":[0,3,240,0,0,192,0,0]},{"a":3704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3712,"l":"spr_3a_creature_a","c":"Sprite shape $3A (multicolour): a creature with a cup-shaped body and two legs. Sprites 0 and 3 at $B99C and $BA2F, alternating with $3F.","t":"byte","b":[229,85,91,229,85,27,228,81]},{"a":3720,"t":"byte","b":[91,229,85,91,249,69,111,62]},{"a":3728,"t":"byte","b":[85,188,63,170,252,15,255,240]},{"a":3736,"t":"byte","b":[2,255,128,2,130,128,10,0]},{"a":3744,"t":"byte","b":[160,15,0,240,15,0,240,15]},{"a":3752,"t":"byte","b":[0,240,2,130,128,2,130,128]},{"a":3760,"t":"byte","b":[2,130,128,5,65,80,21,65]},{"a":3768,"t":"byte","b":[84,21,65,84,20,65,20,0]},{"a":3776,"l":"spr_3b_octopus_a","c":"Sprite shape $3B (multicolour): an octopus, eyes in a round head, tentacles below. Sprite 7 in room 1 ($A733), alternating with $3C in the IRQ chain at $A74B-$A75C; also sprite 3, the guardian stepped by $B877 (alternating with $3C every 5 frames) in rooms 3 ($4821), 4 ($9079) and 5 and wherever $B877 runs, and sprite 1 on the title ($B7AD).","t":"byte","b":[0,170,128,2,170,160,10,170]},{"a":3784,"t":"byte","b":[168,10,149,168,42,110,106,41]},{"a":3792,"t":"byte","b":[191,154,42,110,106,42,149,170]},{"a":3800,"t":"byte","b":[42,170,170,10,170,168,10,170]},{"a":3808,"t":"byte","b":[168,2,170,160,0,170,128,0]},{"a":3816,"t":"byte","b":[85,64,0,149,160,2,170,168]},{"a":3824,"t":"byte","b":[10,138,40,10,10,10,40,10]},{"a":3832,"t":"byte","b":[10,40,40,10,160,160,40,0]},{"a":3840,"l":"spr_3c_octopus_b","c":"Sprite shape $3C (multicolour): the octopus of $3B with its tentacles the other way.","t":"byte","b":[0,170,128,2,170,160,10,170]},{"a":3848,"t":"byte","b":[168,10,170,168,42,149,170,42]},{"a":3856,"t":"byte","b":[85,106,42,149,170,42,170,170]},{"a":3864,"t":"byte","b":[42,170,170,10,170,168,10,170]},{"a":3872,"t":"byte","b":[168,2,170,160,0,170,128,0]},{"a":3880,"t":"byte","b":[85,64,10,149,128,42,170,128]},{"a":3888,"t":"byte","b":[40,162,160,160,160,160,160,160]},{"a":3896,"t":"byte","b":[40,160,160,40,40,40,10,0]},{"a":3904,"l":"spr_3d_walker_b","c":"Sprite shape $3D (multicolour): the long-armed walker of $24/$29 in another frame; set on sprite 7 ($4793, $47BE, $B939, $B956) and sprite 2 ($B7B2), alternating with $3E; room 2's walker, sprite 2, also alternates $3D/$3E while walking left ($BAE0-$BAEF).","t":"byte","b":[3,192,0,15,240,0,14,240]},{"a":3912,"t":"byte","b":[0,54,252,0,255,255,0,255]},{"a":3920,"t":"byte","b":[255,240,85,255,252,87,252,60]},{"a":3928,"t":"byte","b":[255,240,60,255,192,60,63,0]},{"a":3936,"t":"byte","b":[240,0,0,240,0,0,240,0]},{"a":3944,"t":"byte","b":[3,192,0,3,192,0,3,192]},{"a":3952,"t":"byte","b":[0,0,240,0,0,240,0,0]},{"a":3960,"t":"byte","b":[53,0,0,85,0,0,80,0]},{"a":3968,"l":"spr_3e_walker_c","c":"Sprite shape $3E (multicolour): the walker's frame paired with $3D ($B946, and $BAED for room 2's sprite 2).","t":"byte","b":[0,0,0,0,240,0,3,252]},{"a":3976,"t":"byte","b":[0,3,188,0,13,191,0,63]},{"a":3984,"t":"byte","b":[255,192,23,255,252,41,127,255]},{"a":3992,"t":"byte","b":[41,255,15,23,252,15,63,240]},{"a":4000,"t":"byte","b":[15,15,192,60,0,0,60,0]},{"a":4008,"t":"byte","b":[0,60,0,0,240,0,0,240]},{"a":4016,"t":"byte","b":[0,0,240,0,0,192,0,23]},{"a":4024,"t":"byte","b":[0,0,21,64,0,1,64,0]},{"a":4032,"l":"spr_3f_creature_b","c":"Sprite shape $3F (multicolour): the cup-bodied creature of $3A, second frame ($B9A5, $BA38).","t":"byte","b":[0,0,0,229,85,91,229,85]},{"a":4040,"t":"byte","b":[27,228,81,91,229,85,91,249]},{"a":4048,"t":"byte","b":[69,111,62,85,188,63,170,252]},{"a":4056,"t":"byte","b":[15,255,240,2,255,128,10,130]},{"a":4064,"t":"byte","b":[160,252,0,63,252,0,63,40]},{"a":4072,"t":"byte","b":[0,40,1,65,64,5,65,80]},{"a":4080,"t":"byte","b":[5,0,80,5,0,80,5,0]},{"a":4088,"t":"byte","b":[80,0,0,0,0,0,0,0]},{"a":4096,"l":"bytes_1000","c":"Eight bytes ($F2 $F2 $F1 $02 $F1 $F1 $F2 $20) that no instruction in the traced code reads or writes by address; their purpose is unknown.","t":"byte","b":[242,242,241,2,241,241,242,32]},{"a":4104,"l":"delay_count_1008","c":"Counter of the delay loop at $AB0C-$AB21: set to 0, then incremented once per 65,536-iteration wait until it reaches 7.","t":"byte","b":[7],"x":[43788,43791,43804]},{"a":4105,"l":"range_mode_1009","c":"Low nibble of the mode byte passed in A to $A97C (stored by $1020). When it is 1, $A97C reports Mr Hat inside the X range without looking at the joystick; otherwise it also requires the stick held down ($DC00 = $7D).","t":"byte","b":[1],"x":[4136,43426]},{"a":4106,"l":"anim_count_100a","c":"Animation delay of sprite 3's octopus frames in the routine at $B87A: incremented each call, and at 5 the pointer $07FB swaps between $3B and $3C and the count restarts. Also the frame delay of room 2's walker, sprite 2: incremented at $BA86, tested for 5 at $BAD0 and cleared by $BB06 ($BB0B) when the frame changes. Cleared at $4EB4 and $906F.","t":"byte","b":[1],"x":[20148,36975,47226,47229,47250,47261,47750,47824,47883]},{"a":4107,"l":"var_100b","c":"Cleared at $906C; no reader was found in the traced code.","t":"byte","b":[0],"x":[36972]},{"a":4108,"l":"room_number","c":"The current room number, in BCD: each room's set-up stores its own ($6F21: $00 at the game's start; $4EAF $02, $478E $03, $907E $04, $57FD $05, $5EEA and $B928 $06, $95F6 $07, $668F $08, $7250 $09, $846D $10, $84ED $11). Read by the shared room code to pick room-specific behaviour ($8E13, $B100, $B2B0, $B53A, $B9AD, $BA41, $BB13, $BD73).","t":"byte","b":[4],"x":[18318,20143,22525,24298,26255,28449,29264,33901,34029,36371,36990,38390,45312,45744,46394,47400,47533,47681,47891,48499]},{"a":4109,"l":"anim_count_100d","c":"Animation counter of sprite 7's walker in the routine at $B92D: below 8 it shows frame $3D and moves the sprite left, below 15 frame $3E, and so on. Cleared at $47CE and $B972.","t":"byte","b":[13,0],"x":[18382,47405,47408,47439,47474]},{"a":4111,"l":"flash_timer","c":"Counts the frames of the flashing invulnerable spell set up by $1250 (which clears it): the IRQ routine $BF30 (and its unused copy $1265) increments it and flashes the sprite multicolours $D025/$D026 until it reaches $FE, then restores the kill routines. $1010 after it is unused.","t":"byte","b":[254,0],"x":[4701,4716,4719,48951,48954]},{"a":4113,"l":"sound_count_1011","c":"Counter used by the sound routines at $B4C0-$B616 (incremented and compared, then cleared at $B4F8, $B583, $B616). $1012-$1014 after it: unused.","t":"byte","b":[0,0,0,0],"x":[46272,46275,46328,46411,46414,46467,46558,46561,46614]},{"a":4117,"l":"points_flag","c":"Set to 1 by $8AD0 each time it adds points (before calling $41DA); while it is set the IRQ code at $B5B6/$B5C3 runs the score-tick effect $B5D1 instead of the in-play tune $8C00: for $40 frames counted in $1016 it restarts a voice-3 tone every tenth frame and steps $D022 (not shown in bitmap mode), then clears it ($B64B). Cleared at $6F26 at the game's start.","t":"byte","b":[0],"x":[28454,35538,46518,46531,46667]},{"a":4118,"l":"points_flash_count","c":"Frame counter of the score-tick effect that follows a score increase ($B5D4-$B5DA, ends at $40; cleared at $6F29 and $B64E). $1017 after it is unused.","t":"byte","b":[0,0],"x":[28457,46548,46551,46670]},{"a":4120,"l":"title_mode_flag","c":"Cleared at the game's start ($6F2C), set to 1 at $7CED just before the title is shown again from there; the title code at $CDEE calls $BFA8 when it is set and $B683 when it is clear.","t":"byte","b":[0],"x":[28460,31981,52718]},{"a":4121,"l":"f1_toggle","c":"Toggled between 0 and 1 by the F1 key: the code at $7C70 reads the KERNAL's last key $C5, and when it is 4 (F1) flips this flag and waits ($1790) so one press counts once. When the flag is 1, $7C84 leaves the interrupt chain at $EA31 instead of going on to $8C33. Cleared at $6F2F. $101A-$101F after it: unused zeros.","t":"byte","b":[0,0,0,0,0,0,0],"x":[28463,31862,31867,31873]},{"a":4128,"l":"set_range_mode","c":"Helper of the X-range test $A97C: stores the mode byte A into the scratch byte $40BB (in the zero padding after the RTS at $40B8) and reads it back, keeps its low nibble in $1009 and returns A = ($400B AND $F0). $400B is the byte $FC of the instruction STA $07FC at $400A, so it returns $F0, and $A97C's test for $10 never matches: the X high-bit check at $A986 is dead.","t":"code","b":[141,187,64],"m":"sta","oa":16571,"o":"scratch_40bb","x":[43389]},{"a":4131,"t":"code","b":[173,187,64],"m":"lda","oa":16571,"o":"scratch_40bb"},{"a":4134,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":4136,"t":"code","b":[141,9,16],"m":"sta","oa":4105,"o":"range_mode_1009"},{"a":4139,"t":"code","b":[173,11,64],"m":"lda","oa":16395,"o":"lift_sta_07fc_operand"},{"a":4142,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":4144,"t":"code","b":[96],"m":"rts"},{"a":4145,"l":"room_draw_tail_1031","c":"Tail of room 2's drawing code, jumped to from $4E0C (room2_setup_2): draws two pictures with $1191 (column $16, row $0E) and $A9D2 (column $1C, row $0E), then jumps on to $4E6E.","t":"code","b":[162,22],"m":"ldx","o":"#$16","x":[19980]},{"a":4147,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":4149,"t":"code","b":[32,145,17],"m":"jsr","oa":4497,"o":"draw_pic_mc_sprite1"},{"a":4152,"t":"code","b":[162,28],"m":"ldx","o":"#$1C"},{"a":4154,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":4156,"t":"code","b":[32,210,169],"m":"jsr","oa":43474,"o":"draw_painting"},{"a":4159,"t":"code","b":[76,110,78],"m":"jmp","oa":20078,"o":"room2_setup_3"},{"a":4162,"t":"gap","n":1},{"a":4162,"t":"note","c":"Unused zero byte at $1042, between the routines $1031 and $1043.","note":"outside the tracked image"},{"a":4163,"l":"check_hazard_1043","c":"Room 3's hazard check, called from $4ABB (room3_step_checks) when Mr Hat's Y is $5D or more (below the top floor): calls $4B8D, returns if his X is past 255 ($D010 bit 4), and otherwise, if his X lies in $68-$87 or in $38-$53 ($A97C with mode 1) while his Y is exactly $B4, kills him through $4C52.","t":"code","b":[32,141,75],"m":"jsr","oa":19341,"o":"room3_bottom_floor","x":[19131]},{"a":4166,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":4169,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":4171,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":4173,"t":"code","b":[240,44],"m":"beq","oa":4219,"o":"r_107B"},{"a":4175,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":4177,"t":"code","b":[162,104],"m":"ldx","o":"#$68"},{"a":4179,"t":"code","b":[160,136],"m":"ldy","o":"#$88"},{"a":4181,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":4184,"t":"code","b":[144,11],"m":"bcc","oa":4197,"o":"b_1065"},{"a":4186,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":4189,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":4191,"t":"code","b":[208,3],"m":"bne","oa":4196,"o":"r_1064"},{"a":4193,"t":"code","b":[32,82,76],"m":"jsr","oa":19538,"o":"lose_life"},{"a":4196,"l":"r_1064","t":"code","b":[96],"m":"rts","x":[4191]},{"a":4197,"l":"b_1065","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[4184]},{"a":4199,"t":"code","b":[162,56],"m":"ldx","o":"#$38"},{"a":4201,"t":"code","b":[160,84],"m":"ldy","o":"#$54"},{"a":4203,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":4206,"t":"code","b":[144,11],"m":"bcc","oa":4219,"o":"r_107B"},{"a":4208,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":4211,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":4213,"t":"code","b":[208,3],"m":"bne","oa":4218,"o":"r_107A"},{"a":4215,"t":"code","b":[32,82,76],"m":"jsr","oa":19538,"o":"lose_life"},{"a":4218,"l":"r_107A","t":"code","b":[96],"m":"rts","x":[4213]},{"a":4219,"l":"r_107B","t":"code","b":[96],"m":"rts","x":[4173,4206]},{"a":4220,"t":"gap","n":4},{"a":4220,"t":"note","c":"Unused zero bytes $107C-$107F, between the routines $1043 and $1080.","note":"outside the tracked image"},{"a":4224,"l":"room6_setup_part","c":"Part of a room set-up, called from $5EE5 in the set-up that stores room number 6: runs $5F80, draws pictures with $B800 (column $14, row $10), $A7D9 and $A7F8 (column 7, rows 5 and 7) and $B83B (column $1B, row $10), and makes sprite 0 a multicolour sprite with colour $0B and shape $25.","t":"code","b":[32,128,95],"m":"jsr","oa":24448,"o":"room6_lit_objects","x":[24293]},{"a":4227,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":4229,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":4231,"t":"code","b":[32,0,184],"m":"jsr","oa":47104,"o":"draw_obj_3x3_aff0"},{"a":4234,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":4236,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":4238,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":4241,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":4243,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":4245,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":4248,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":4251,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":4253,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":4256,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":4258,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":4261,"t":"code","b":[169,37],"m":"lda","o":"#$25"},{"a":4263,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":4266,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":4268,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":4270,"t":"code","b":[32,59,184],"m":"jsr","oa":47163,"o":"draw_obj_2x3_afc0"},{"a":4273,"t":"code","b":[96],"m":"rts"},{"a":4274,"l":"pad_10b2","c":"Unused zero bytes after the routine at $1080.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4282,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4290,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":4297,"l":"gfx_cell_10c9","c":"One 8-byte bitmap cell (vertical bars joined by short rungs) that no instruction in the traced code reads by address.","t":"byte","b":[73,93,73,65,73,93,73,0]},{"a":4305,"l":"gfx_hook_top","c":"Room 1 scenery: a seven-cell bitmap picture of a curved, hook-like shape, kept as three rows: $10D1 (2 cells, the top), $10E1 (2 cells) and $10F1 (3 cells, the bottom). The room-1 set-up draws it twice, at $2F80/$30C0/$31F8 (character rows 12-14, columns 15-17) and at $26E0/$2820/$2958 (rows 5-7, columns 19-21), loops $1820-$184E.","t":"byte","b":[0,0,0,0,28,38,127,247],"x":[6178]},{"a":4313,"t":"byte","b":[0,0,0,0,0,0,0,128]},{"a":4321,"l":"gfx_hook_mid","c":"Middle row (two cells) of the hook picture of $10D1, copied to $30C0 and $2820 by $1830-$183E.","t":"byte","b":[225,224,240,120,60,30,15,7],"x":[6194]},{"a":4329,"t":"byte","b":[134,73,48,0,0,0,0,128]},{"a":4337,"l":"gfx_hook_bottom","c":"Bottom row (three cells) of the hook picture of $10D1, copied to $31F8 and $2958 by $1840-$184E.","t":"byte","b":[0,0,0,0,0,16,9,7],"x":[6210]},{"a":4345,"t":"byte","b":[3,1,16,56,124,206,135,3]},{"a":4353,"t":"byte","b":[192,224,240,112,112,240,224,192]},{"a":4361,"l":"gfx_key_top","c":"A key, two bitmap cells one above the other: the ring here, the shaft and teeth at $1111. Drawn by $5873-$5882 (bitmap $25C0/$2700, character rows 4-5, column 24) and $5EFB-$5F08 ($25E8/$2728, column 29).","t":"byte","b":[24,60,102,195,195,102,60,24],"x":[22645,24315]},{"a":4369,"l":"gfx_key_bottom","c":"Lower cell of the key picture of $1109: the shaft with its teeth.","t":"byte","b":[24,24,24,30,28,28,30,24],"x":[22651,24321]},{"a":4377,"l":"gfx_shelf","c":"A three-cell bitmap picture, a wide tapering slab (a shelf or table top), 24 bytes: drawn by room 1's set-up at $186A-$1875 (bitmap $22D0, character row 2, columns 10-12) and by $4735-$473E at $2320 (row 2, columns 20-22).","t":"byte","b":[63,31,15,15,15,15,15,0],"x":[6252,18231]},{"a":4385,"t":"byte","b":[255,255,255,255,255,255,255,0]},{"a":4393,"t":"byte","b":[252,248,240,240,240,240,240,0]},{"a":4401,"l":"pad_1131","c":"Unused zero bytes up to the routine at $1191.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4409,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4417,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4425,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4433,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4441,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4449,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4457,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4465,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4473,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4481,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4489,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4497,"l":"draw_pic_mc_sprite1","c":"Draws a picture with $A9D2 at column X, row Y (a 5 x 4 cell rectangle filled with colour pair $9C, and more), then makes sprite 0 multicolour and gives sprite 1 colour $0B. Called from $1035. Its bytes are also read as graphics: room 1's set-up reads $1191-$1280 at $18B0 (its store, STA $2BF8, is not indexed, so of each 48-byte run only the last byte stays in the bitmap), and the uncalled leftover $9163 would copy them to the bitmap at $35D8.","t":"code","b":[32,210,169],"m":"jsr","oa":43474,"o":"draw_painting","x":[4149,6320,37223]},{"a":4500,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":4503,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":4505,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":4508,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":4510,"t":"code","b":[141,40,208],"m":"sta","o":"vic_sprite1_colour"},{"a":4513,"t":"code","b":[96],"m":"rts"},{"a":4514,"l":"pad_11a2","c":"Unused zero bytes, $11A2-$11FF.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4522,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4530,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4538,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4546,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4554,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4562,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4570,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4578,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4586,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4594,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4602,"t":"byte","b":[0,0,0,0,0,0]},{"a":4608,"l":"hat_x_past_255","c":"Returns with Z set (A = $10) when Mr Hat's X position is past 255, i.e. the X high bit of sprite 4 ($D010 bit 4) is set. Called 23 times by the room code at $8E9C-$B486 before its X-range tests.","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[36508,36726,45792,45832,45869,45876,45881,45921,45926,45966,45971,46014,46021,46025,46065,46070,46110,46115,46158,46165,46202,46209,46214]},{"a":4611,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":4613,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":4615,"t":"code","b":[96],"m":"rts"},{"a":4616,"l":"hat_y_cmp_60","c":"Compares Mr Hat's Y ($D009) with $60 and returns the flags: carry clear means he is above Y $60 (the top floor). Called 16 times by the room code ($8E1F-$B48B).","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[36383,36465,36513,36595,36649,36731,45324,45406,45797,45886,45931,45976,46030,46075,46120,46219]},{"a":4619,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":4621,"t":"code","b":[96],"m":"rts"},{"a":4622,"l":"add_10000_points","c":"Adds 10,000 points: calls the add-1,000 routine $8AD0 ten times. Called from $8E42 after an object is taken.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[36418]},{"a":4624,"l":"b_1210","t":"code","b":[32,208,138],"m":"jsr","oa":35536,"o":"add_1000_flag_1015","x":[4630]},{"a":4627,"t":"code","b":[200],"m":"iny"},{"a":4628,"t":"code","b":[192,10],"m":"cpy","o":"#$0A"},{"a":4630,"t":"code","b":[208,248],"m":"bne","oa":4624,"o":"b_1210"},{"a":4632,"t":"code","b":[96],"m":"rts"},{"a":4633,"l":"add_20000_points","c":"Adds 20,000 points ($8AD0 twenty times). Called from $8F16 and $8F4C.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[36630,36684]},{"a":4635,"l":"b_121B","t":"code","b":[32,208,138],"m":"jsr","oa":35536,"o":"add_1000_flag_1015","x":[4641]},{"a":4638,"t":"code","b":[200],"m":"iny"},{"a":4639,"t":"code","b":[192,20],"m":"cpy","o":"#$14"},{"a":4641,"t":"code","b":[208,248],"m":"bne","oa":4635,"o":"b_121B"},{"a":4643,"t":"code","b":[96],"m":"rts"},{"a":4644,"l":"add_25000_points","c":"Adds 25,000 points ($8AD0 25 times): the usual reward for an object, called from $8E64, $8EC4, $8EE6, $8F6E, $B12F and $B181.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[36452,36548,36582,36718,45359,45441]},{"a":4646,"l":"b_1226","t":"code","b":[32,208,138],"m":"jsr","oa":35536,"o":"add_1000_flag_1015","x":[4652]},{"a":4649,"t":"code","b":[200],"m":"iny"},{"a":4650,"t":"code","b":[192,25],"m":"cpy","o":"#$19"},{"a":4652,"t":"code","b":[208,248],"m":"bne","oa":4646,"o":"b_1226"},{"a":4654,"t":"code","b":[96],"m":"rts"},{"a":4655,"l":"add_50000_points","c":"Adds 50,000 points ($8AD0 fifty times). Called from $B1AA.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[45482]},{"a":4657,"l":"b_1231","t":"code","b":[32,208,138],"m":"jsr","oa":35536,"o":"add_1000_flag_1015","x":[4663]},{"a":4660,"t":"code","b":[200],"m":"iny"},{"a":4661,"t":"code","b":[192,50],"m":"cpy","o":"#$32"},{"a":4663,"t":"code","b":[208,248],"m":"bne","oa":4657,"o":"b_1231"},{"a":4665,"t":"code","b":[96],"m":"rts"},{"a":4666,"l":"add_75000_points","c":"Adds 75,000 points: $8AD0 25 times, then (past a NOP) 50 more times at $1245. Called from $B151.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[45393]},{"a":4668,"l":"b_123C","t":"code","b":[32,208,138],"m":"jsr","oa":35536,"o":"add_1000_flag_1015","x":[4674]},{"a":4671,"t":"code","b":[200],"m":"iny"},{"a":4672,"t":"code","b":[192,25],"m":"cpy","o":"#$19"},{"a":4674,"t":"code","b":[208,248],"m":"bne","oa":4668,"o":"b_123C"},{"a":4676,"t":"code","b":[234],"m":"nop"},{"a":4677,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":4679,"l":"b_1247","t":"code","b":[32,208,138],"m":"jsr","oa":35536,"o":"add_1000_flag_1015","x":[4685]},{"a":4682,"t":"code","b":[200],"m":"iny"},{"a":4683,"t":"code","b":[192,50],"m":"cpy","o":"#$32"},{"a":4685,"t":"code","b":[208,248],"m":"bne","oa":4679,"o":"b_1247"},{"a":4687,"t":"code","b":[96],"m":"rts"},{"a":4688,"l":"start_invulnerable","c":"Makes Mr Hat invulnerable for a while: bumps the background colour $D022, writes RTS ($60) over the first byte of the kill routine $A877 and of the hazard call $4C52, and clears the timer $100F. The IRQ routine $BF30 then flashes the sprite multicolours and, when $100F reaches $FE, puts back LDA ($AD) at $A877 and JSR ($20) at $4C52. Called from $8E94 and $8F9E.","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[36500,36766]},{"a":4691,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":4693,"t":"code","b":[141,119,168],"m":"sta","oa":43127,"o":"hat_death"},{"a":4696,"t":"code","b":[141,82,76],"m":"sta","oa":19538,"o":"lose_life"},{"a":4699,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":4701,"t":"code","b":[141,15,16],"m":"sta","oa":4111,"o":"flash_timer"},{"a":4704,"t":"code","b":[96],"m":"rts"},{"a":4705,"t":"gap","n":4},{"a":4705,"t":"note","c":"Unused zero bytes $1261-$1264, between $1250 and the unused copy at $1265.","note":"outside the tracked image"},{"a":4709,"l":"irq_invulnerable_copy","c":"An unused copy of the invulnerability IRQ routine at $BF30 (same bytes, but it exits through the KERNAL's $EA31 instead of $B54B/$B530): while $A877 holds RTS it counts $100F and steps $D025/$D026 each frame, and at $FE restores $4C52 = JSR and $A877 = LDA and the colours $0D/$02. Nothing refers to $1265 (byte scan for the address and for a LDA/STA pair making it a vector). Room 1's set-up reads $1281-$12B0 as bitmap graphics, so this copy sits on top of older picture data.","t":"code","b":[173,119,168],"m":"lda","oa":43127,"o":"hat_death"},{"a":4712,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":4714,"t":"code","b":[208,39],"m":"bne","oa":4755,"o":"b_1293"},{"a":4716,"t":"code","b":[238,15,16],"m":"inc","oa":4111,"o":"flash_timer"},{"a":4719,"t":"code","b":[173,15,16],"m":"lda","oa":4111,"o":"flash_timer"},{"a":4722,"t":"code","b":[201,254],"m":"cmp","o":"#$FE"},{"a":4724,"t":"code","b":[240,9],"m":"beq","oa":4735,"o":"b_127F"},{"a":4726,"t":"code","b":[238,38,208],"m":"inc","o":"vic_sprite_mc1"},{"a":4729,"t":"code","b":[238,37,208],"m":"inc","o":"vic_sprite_mc0"},{"a":4732,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":4735,"l":"b_127F","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[4724]},{"a":4737,"l":"f_1281","c":"Also read as graphics: the 48 bytes $1281-$12B0 (the end of this routine and zeros) are copied into the bitmap as six cells at $3238 by room 1's set-up ($18E1-$18EC), so those cells show the code's bit patterns. The copy at $91A4-$91AF names $1281 too, but it belongs to the uncalled leftover $9163 and its source operand is rewritten ($9190) before it runs.","t":"code","b":[141,82,76],"m":"sta","oa":19538,"o":"lose_life","x":[6371,37286]},{"a":4740,"t":"code","b":[169,173],"m":"lda","o":"#$AD"},{"a":4742,"t":"code","b":[141,119,168],"m":"sta","oa":43127,"o":"hat_death"},{"a":4745,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":4747,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":4750,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":4752,"t":"code","b":[141,37,208],"m":"sta","o":"vic_sprite_mc0"},{"a":4755,"l":"b_1293","t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31","x":[4714]},{"a":4758,"l":"pad_1296","c":"Unused zero bytes (read as the tail of the 48-byte graphics block at $1281 by room 1's set-up, $18E3).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4766,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4774,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4782,"t":"byte","b":[0,0,0,0,0,0]},{"a":4788,"l":"gfx_unref_12b4","c":"Bitmap cells, $12B4-$1370 (about 23 cells of curved and striped frame pieces), that no instruction in the traced code reads by address; probably picture data left from development.","t":"byte","b":[15,8,14,2,2,64,128,128]},{"a":4796,"t":"byte","b":[224,128,128,64,0,0,0,0]},{"a":4804,"t":"byte","b":[0,0,0,1,1,15,15,15]},{"a":4812,"t":"byte","b":[63,127,255,255,255,0,0,0]},{"a":4820,"t":"byte","b":[192,224,240,248,248,1,1,1]},{"a":4828,"t":"byte","b":[1,0,0,0,0,255,255,255]},{"a":4836,"t":"byte","b":[255,255,127,63,15,248,248,248]},{"a":4844,"t":"byte","b":[248,240,224,192,0,255,128,191]},{"a":4852,"t":"byte","b":[191,188,188,191,143,255,0,255]},{"a":4860,"t":"byte","b":[255,15,15,12,205,255,0,255]},{"a":4868,"t":"byte","b":[255,255,255,0,255,255,0,255]},{"a":4876,"t":"byte","b":[255,255,255,0,255,255,0,255]},{"a":4884,"t":"byte","b":[255,240,240,48,179,255,1,253]},{"a":4892,"t":"byte","b":[253,61,61,253,241,227,56,14]},{"a":4900,"t":"byte","b":[3,0,0,0,0,253,253,61]},{"a":4908,"t":"byte","b":[141,225,57,15,3,3,15,25]},{"a":4916,"t":"byte","b":[49,97,65,195,254,192,240,152]},{"a":4924,"t":"byte","b":[140,134,130,195,127,191,191,188]},{"a":4932,"t":"byte","b":[177,135,156,240,192,199,28,112]},{"a":4940,"t":"byte","b":[192,0,0,0,0,0,1,1]},{"a":4948,"t":"byte","b":[1,1,1,1,1,254,195,65]},{"a":4956,"t":"byte","b":[97,49,25,15,3,127,131,130]},{"a":4964,"t":"byte","b":[134,140,152,240,192,0,128,128]},{"a":4972,"t":"byte","b":[128,128,128,128,128]},{"a":4977,"l":"object_flag_1371","c":"First of the per-game progress flags $1371-$137D: each is 0 until Mr Hat takes the object it stands for, when the room checks ($8E24-$8F9E and $B11C-$B1A7, with the X-range test $A97C) set it to 1 and reward him, so an object counts only once: most add points ($1219, $1224 and the like), but $1373 and $1379 make him invulnerable instead ($1250 at $8E94, $8F9E). Other room code ($B1B0-$B2C9, $BD88-$BE4B) reads them. $1371: set at $8E3F, read at $8E2F and $B1E7. Cleared with the whole block $1371-$13B0 by $BD5B (from room 1's start of play, $6F1C) at the start of a game.","t":"byte","b":[1],"x":[36399,36415,45543,48479]},{"a":4978,"l":"object_flag_1372","c":"Room object flag $1372: 0 until set to 1 at $8E61, read at $8E51, $BD88. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[1],"x":[36433,36449,48520]},{"a":4979,"l":"object_flag_1373","c":"Room object flag $1373: 0 until set to 1 at $8E91 (that take makes Mr Hat invulnerable, $1250, instead of adding points), read at $8E81, $B1FA. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[1],"x":[36481,36497,45562]},{"a":4980,"l":"object_flag_1374","c":"Room object flag $1374: 0 until set to 1 at $8EC1, read at $8EB1, $BDAE. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[1],"x":[36529,36545,48558]},{"a":4981,"l":"object_flag_1375","c":"Room object flag $1375: 0 until set to 1 at $8EE3, read at $8ED3, $BDBC. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[1],"x":[36563,36579,48572]},{"a":4982,"l":"object_flag_1376","c":"Room object flag $1376: 0 until set to 1 at $8F13, read at $8F03, $B20F. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[1],"x":[36611,36627,45583]},{"a":4983,"l":"object_flag_1377","c":"Room object flag $1377: 0 until set to 1 at $8F49, read at $8F39, $B242. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[36665,36681,45634]},{"a":4984,"l":"object_flag_1378","c":"Room object flag $1378: 0 until set to 1 at $8F6B, read at $8F5B, $BDF6. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[36699,36715,48630]},{"a":4985,"l":"object_flag_1379","c":"Room object flag $1379: 0 until set to 1 at $8F9B (that take makes Mr Hat invulnerable, $1250, instead of adding points), read at $8F8B, $BE09. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[36747,36763,48649]},{"a":4986,"l":"object_flag_137a","c":"Room object flag $137A: 0 until set to 1 at $B12C, read at $B11C, $B257. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45340,45356,45655]},{"a":4987,"l":"object_flag_137b","c":"Room object flag $137B: 0 until set to 1 at $B14E, read at $B13E, $BE2A. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45374,45390,48682]},{"a":4988,"l":"object_flag_137c","c":"Room object flag $137C: 0 until set to 1 at $B17E, read at $B16E, $B2AA. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45422,45438,45738]},{"a":4989,"l":"object_flag_137d","c":"Last object flag ($137E-$137F after it unused). $137D: 0 until set to 1 at $B1A7, read at $B197, $BE4B. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0,0,0],"x":[45463,45479,48715]},{"a":4992,"l":"event_flag_1380","c":"First of a second group of progress flags, $1380-$1389, set by the room checks at $B2EA-$B4AB when Mr Hat touches a spot (mode $11 of $A97C); some require another flag first ($1381 needs $1383). $1380: 0 until set to 1 at $B2FE, read at $B1B0, $B2EA, $B4A2. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[1],"x":[45488,45802,45822,46242]},{"a":4993,"l":"event_flag_1381","c":"Room event flag $1381: 0 until set to 1 at $B327, read at $B1D2, $B30C. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45522,45836,45863]},{"a":4994,"l":"event_flag_1382","c":"Room event flag $1382: 0 until set to 1 at $B357, read at $B1EC, $B343, $B3AF. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[1],"x":[45548,45891,45911,45999]},{"a":4995,"l":"event_flag_1383","c":"Room event flag $1383: 0 until set to 1 at $B384, read at $B1FF, $B31E, $B370. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[1],"x":[45567,45854,45936,45956]},{"a":4996,"l":"event_flag_1384","c":"Room event flag $1384: 0 until set to 1 at $B3E7, read at $B214, $B3D3, $B43F. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45588,46035,46055,46143]},{"a":4997,"l":"event_flag_1385","c":"Room event flag $1385: 0 until set to 1 at $B3BB, read at $B224, $B39D. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45604,45981,46011]},{"a":4998,"l":"event_flag_1386","c":"Room event flag $1386: 0 until set to 1 at $B414, read at $B247, $B400, $B46B. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45639,46080,46100,46187]},{"a":4999,"l":"event_flag_1387","c":"Room event flag $1387: 0 until set to 1 at $B448, read at $B26E, $B42D. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45678,46125,46152]},{"a":5000,"l":"event_flag_1388","c":"Room event flag $1388: 0 until set to 1 at $B474, read at $B295, $B459. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0],"x":[45717,46169,46196]},{"a":5001,"l":"event_flag_1389","c":"Last event flag; $138A-$13B0 after it are unused zeros, cleared with the block. $1389: 0 until set to 1 at $B4AB, read at $B2C9, $B490. Cleared with the whole block $1371-$13B0 by $BD5B at the start of a game.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[45769,46224,46251]},{"a":5009,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5017,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5025,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5033,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5041,"l":"gfx_unref_13b1","c":"Bitmap cells $13B1-$13F0 (fan and frame shapes like those at $12B4) that no instruction in the traced code reads by address.","t":"byte","b":[254,195,65,97,49,25,15,3]},{"a":5049,"t":"byte","b":[127,195,130,134,140,152,240,192]},{"a":5057,"t":"byte","b":[192,240,156,135,177,188,191,191]},{"a":5065,"t":"byte","b":[0,0,0,0,192,112,28,199]},{"a":5073,"t":"byte","b":[1,1,1,1,1,1,1,0]},{"a":5081,"t":"byte","b":[3,15,25,49,97,65,195,254]},{"a":5089,"t":"byte","b":[192,240,152,140,134,130,195,127]},{"a":5097,"t":"byte","b":[128,128,128,128,128,128,128,0]},{"a":5105,"l":"gfx_post_left","c":"One bitmap cell, a 1-pixel vertical line at its right edge: room 1's set-up writes it 14 times ($19B2-$19D4), one under another from $2750 down column 34, character rows 5-18. Each pass raises the store's operand $19BA/$19BB by $138 and Y by 8, 320 bytes in all (one character row), so the cells make one vertical line.","t":"byte","b":[1,1,1,1,1,1,1,1],"x":[6582]},{"a":5113,"l":"gfx_post_right","c":"One bitmap cell, a 1-pixel vertical line at its left edge, written 14 times by $19E7-$1A0F one under another from $2768 down column 37, character rows 5-18, with the same 320-byte step as $13F1.","t":"byte","b":[128,128,128,128,128,128,128,128],"x":[6635]},{"a":5121,"l":"pad_1401","c":"Unused zero bytes, $1401-$1448.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5129,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5137,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5145,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5153,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5161,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5169,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5177,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5185,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5193,"l":"gfx_life_marks","c":"The life marks of the status line, two bitmap cells (16 bytes, each a small blob with a bar under it), copied by room 1's set-up ($1A50-$1A5E) to $3DC8 and $3F08: character rows 23 and 24, columns 33-34. The four cells are the four spare lives; a mark is shown or hidden by its screen-RAM colour byte ($07B9, $07BA, $07E1, $07E2: $BC shown, $CC hidden; $1D86, $1700).","t":"byte","b":[0,0,60,60,60,0,126,0],"x":[6738]},{"a":5201,"t":"byte","b":[0,0,60,60,60,0,126,0]},{"a":5209,"l":"bytes_unref_1459","c":"Bytes $1459-$1478 ($EE fill, then $20 $34 $56 $12 ... and $FE $FF $FF $FF $FE $FE $38) that no instruction in the traced code reads by address; purpose unknown.","t":"byte","b":[238,238,238,238,238,238,238,238]},{"a":5217,"t":"byte","b":[238,32,52,86,18,102,51,34]},{"a":5225,"t":"byte","b":[35,86,120,144,152,136,119,102]},{"a":5233,"t":"byte","b":[254,255,255,255,254,254,56,0]},{"a":5241,"l":"gfx_score_top","c":"Status-line word SCORE, top halves of five letters (40 bytes: the letters sit in the lower four pixel rows of each cell), copied by $1A7A-$1A85 to $3D00, character row 23, columns 8-12. Their bottom halves are at $14A1.","t":"byte","b":[0,0,0,0,108,198,240,124],"x":[6780]},{"a":5249,"t":"byte","b":[0,0,0,0,108,198,192,192]},{"a":5257,"t":"byte","b":[0,0,0,0,108,198,198,198]},{"a":5265,"t":"byte","b":[0,0,0,0,236,102,102,102]},{"a":5273,"t":"byte","b":[0,0,0,0,238,102,96,108]},{"a":5281,"l":"gfx_score_bottom","c":"Bottom halves of the letters of SCORE (40 bytes, the upper three pixel rows of each cell), copied by $1A87-$1A92 to $3E40, row 24, columns 8-12.","t":"byte","b":[14,198,108,0,0,0,0,0],"x":[6793]},{"a":5289,"t":"byte","b":[192,198,108,0,0,0,0,0]},{"a":5297,"t":"byte","b":[198,198,108,0,0,0,0,0]},{"a":5305,"t":"byte","b":[108,102,246,0,0,0,0,0]},{"a":5313,"t":"byte","b":[96,102,238,0,0,0,0,0]},{"a":5321,"l":"gfx_room_top","c":"Status-line word ROOM, top halves: a blank cell then R, O, O, M (40 bytes), copied by $1A94-$1A9F to $3D58, row 23, columns 19-23.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[6806]},{"a":5329,"t":"byte","b":[0,0,0,0,236,102,102,102]},{"a":5337,"t":"byte","b":[0,0,0,0,108,198,198,198]},{"a":5345,"t":"byte","b":[0,0,0,0,108,198,198,198]},{"a":5353,"t":"byte","b":[0,0,0,0,198,108,186,214]},{"a":5361,"l":"gfx_room_bottom","c":"Bottom halves of ROOM, the letters R, O, O, M in four cells. The loop $1AA1-$1AAC copies 41 bytes to $3EA0 (row 24, columns 20-24 and one byte more): the four letters, then the first cell of the STAGE table at $1511 into column 24, where the room digit's bottom half overwrites it next ($1AF2), and the byte $1519 (zero) at $3EC8.","t":"byte","b":[108,102,246,0,0,0,0,0],"x":[6819]},{"a":5369,"t":"byte","b":[198,198,108,0,0,0,0,0]},{"a":5377,"t":"byte","b":[198,198,108,0,0,0,0,0]},{"a":5385,"t":"byte","b":[198,198,198,0,0,0,0,0]},{"a":5393,"l":"gfx_stage_top","c":"Status-line word STAGE, top halves (40 bytes), copied by $1AAE-$1AB9 to $3D90, row 23, columns 26-30.","t":"byte","b":[0,0,0,0,108,198,240,124],"x":[6832]},{"a":5401,"t":"byte","b":[0,0,0,0,246,182,48,48]},{"a":5409,"t":"byte","b":[0,0,0,0,48,24,108,102]},{"a":5417,"t":"byte","b":[0,0,0,0,108,198,192,206]},{"a":5425,"t":"byte","b":[0,0,0,0,238,102,96,108]},{"a":5433,"l":"gfx_stage_bottom","c":"Bottom halves of STAGE, copied by $1ABB-$1AC6 to $3ED0, row 24, columns 26-30. The bytes $1561-$1566 after them ($66 $66 $66 $66 $7E $7E, the bottom of a 0) are not copied by this loop.","t":"byte","b":[14,198,108,0,0,0,0,0],"x":[6845]},{"a":5441,"t":"byte","b":[48,48,120,0,0,0,0,0]},{"a":5449,"t":"byte","b":[110,102,230,0,0,0,0,0]},{"a":5457,"t":"byte","b":[198,198,108,0,0,0,0,0]},{"a":5465,"t":"byte","b":[96,102,238,0,0,0,0,0]},{"a":5473,"t":"byte","b":[102,102,102,102,126,126,0]},{"a":5480,"l":"gfx_score_zeros_top","c":"Six digit 0 tops, the initial score 000000 (48 bytes), copied by $1AC8-$1AD3 to $3D28, row 23, columns 13-18.","t":"byte","b":[0,0,0,0,0,0,60,126],"x":[6858]},{"a":5488,"t":"byte","b":[0,0,0,0,0,0,60,126]},{"a":5496,"t":"byte","b":[0,0,0,0,0,0,60,126]},{"a":5504,"t":"byte","b":[0,0,0,0,0,0,60,126]},{"a":5512,"t":"byte","b":[0,0,0,0,0,0,60,126]},{"a":5520,"t":"byte","b":[0,0,0,0,0,0,60,126]},{"a":5528,"l":"gfx_score_zeros_bottom","c":"Six digit 0 bottoms of the initial score (48 bytes), copied by $1AD5-$1AE0 to $3E68, row 24, columns 13-18.","t":"byte","b":[102,102,102,102,126,60,0,0],"x":[6871]},{"a":5536,"t":"byte","b":[102,102,102,102,126,60,0,0]},{"a":5544,"t":"byte","b":[102,102,102,102,126,60,0,0]},{"a":5552,"t":"byte","b":[102,102,102,102,126,60,0,0]},{"a":5560,"t":"byte","b":[102,102,102,102,126,60,0,0]},{"a":5568,"t":"byte","b":[102,102,102,102,126,60,0,0]},{"a":5576,"l":"gfx_unref_15c8","c":"Bytes $15C8-$15FF: a narrow digit 1 shape at $15CE-$15D5, zeros, and at $15FB the bytes $BD $59 $10 $9D $D8 (LDA $1059,X / STA $D8..), a fragment of code. Nothing in the traced code reads them.","t":"byte","b":[0,0,0,0,0,0,24,56]},{"a":5584,"t":"byte","b":[24,24,24,24,24,60,0,0]},{"a":5592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5600,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5624,"t":"byte","b":[0,0,0,189,89,16,157,216]},{"a":5632,"l":"digit_zero_top","c":"Status-line digit 0, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit. Also used to reset a digit to 0 by the score carry ($4208, $424E), to draw the six zeros of a fresh score ($8044) and the 0 of room 10's ROOM number ($83DB).","t":"byte","b":[0,0,54,119,85,99,99,99],"x":[16904,16974,32836,33755]},{"a":5640,"l":"digit_zero_bottom","c":"Status-line digit 0, bottom half (the cell drawn in character row 24 under the top half at $1600).","t":"byte","b":[99,99,99,85,119,54,0,0],"x":[16910,16980,32857,33761]},{"a":5648,"l":"digit_one_top","c":"Status-line digit 1, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit. Room 1's set-up draws it as the first ROOM and STAGE number ($1AE2-$1B00, columns 24 and 31).","t":"byte","b":[0,0,15,27,47,54,54,38],"x":[6884,16916,33736,34086]},{"a":5656,"l":"digit_one_bottom","c":"Status-line digit 1, bottom half (the cell drawn in character row 24 under the top half at $1610).","t":"byte","b":[6,6,6,15,11,15,0,0],"x":[6900,16922,33742,34095]},{"a":5664,"l":"digit_two_top","c":"Status-line digit 2, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit.","t":"byte","b":[0,0,30,45,115,22,14,28],"x":[16986,20169,33026]},{"a":5672,"l":"digit_two_bottom","c":"Status-line digit 2, bottom half (the cell drawn in character row 24 under the top half at $1620).","t":"byte","b":[56,80,103,101,127,127,0,0],"x":[16992,20175,33032]},{"a":5680,"l":"digit_three_top","c":"Status-line digit 3, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit.","t":"byte","b":[0,0,127,95,115,5,14,28],"x":[18470,33046]},{"a":5688,"l":"digit_three_bottom","c":"Status-line digit 3, bottom half (the cell drawn in character row 24 under the top half at $1630).","t":"byte","b":[14,5,3,115,111,62,0,0],"x":[18476,33052]},{"a":5696,"l":"digit_four_top","c":"Status-line digit 4, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit.","t":"byte","b":[0,0,15,29,23,55,103,103],"x":[33782,34067,36924]},{"a":5704,"l":"digit_four_bottom","c":"Status-line digit 4, bottom half (the cell drawn in character row 24 under the top half at $1640).","t":"byte","b":[127,127,2,7,5,7,0,0],"x":[33788,34073,36930]},{"a":5712,"l":"digit_five_top","c":"Status-line digit 5, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit.","t":"byte","b":[0,0,127,125,103,96,96,92],"x":[19874]},{"a":5720,"l":"digit_five_bottom","c":"Status-line digit 5, bottom half (the cell drawn in character row 24 under the top half at $1650).","t":"byte","b":[62,3,99,119,58,28,0,0],"x":[19880]},{"a":5728,"l":"digit_six_top","c":"Status-line digit 6, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit.","t":"byte","b":[0,0,63,125,103,96,96,126],"x":[16860,25093]},{"a":5736,"l":"digit_six_bottom","c":"Status-line digit 6, bottom half (the cell drawn in character row 24 under the top half at $1660).","t":"byte","b":[125,103,99,99,93,62,0,0],"x":[16866,25099]},{"a":5744,"l":"digit_seven_top","c":"Status-line digit 7, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit.","t":"byte","b":[0,0,127,127,83,115,3,7],"x":[38316]},{"a":5752,"l":"digit_seven_bottom","c":"Status-line digit 7, bottom half (the cell drawn in character row 24 under the top half at $1670).","t":"byte","b":[14,20,24,24,20,28,0,0],"x":[38322]},{"a":5760,"l":"digit_eight_top","c":"Status-line digit 8, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit.","t":"byte","b":[0,0,28,54,85,99,54,28],"x":[32907]},{"a":5768,"l":"digit_eight_bottom","c":"Status-line digit 8, bottom half (the cell drawn in character row 24 under the top half at $1680).","t":"byte","b":[28,54,99,85,54,28,0,0],"x":[32913]},{"a":5776,"l":"digit_nine_top","c":"Status-line digit 9, top half: 8 bytes of a two-cell-high glyph (16 bytes per digit from $1600, the top cell then the bottom cell). The score code steps a self-modified pointer through this table by 16 to show the next digit.","t":"byte","b":[0,0,62,93,103,99,115,95],"x":[29916]},{"a":5784,"l":"digit_nine_bottom","c":"Status-line digit 9, bottom half (the cell drawn in character row 24 under the top half at $1690).","t":"byte","b":[63,3,3,119,95,62,0,0],"x":[29922]},{"a":5792,"l":"title_after_blank","c":"Second entry of the title: first toggles the screen-enable bit with $A500 ($D011 EOR #$10, which blanks the bitmap the room left on screen), then runs the title $16A3. Called at game over ($447D) and from $7CF0.","t":"code","b":[32,0,165],"m":"jsr","oa":42240,"o":"display_toggle_plain","x":[17533,31984]},{"a":5795,"l":"title_screen","c":"The title screen. Points the IRQ vector back at the KERNAL's $EA31, clears the bitmap $2000-$3EFF through $FE/$FF (it stops at page $3F, so $3F00-$3F3F, the last 64 bitmap bytes, keep their contents), turns all sprites off, sets border and background to grey ($0C), and calls $CDC0, which copies the title font to $2800 and sets up the title text and its music interrupt ($C0AF). If the screen is blanked ($D011 bit 4 clear) it calls $A500 to show it again, sets the sprite multicolours to $02/$0D, and waits for fire in $1770; it returns to its caller when fire is pressed.","t":"code","b":[120],"m":"sei","x":[2170]},{"a":5796,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":5798,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":5801,"t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":5803,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":5806,"t":"code","b":[88],"m":"cli"},{"a":5807,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":5809,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":5811,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":5813,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":5815,"l":"b_16B7","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[5830]},{"a":5817,"l":"b_16B9","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[5822]},{"a":5819,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":5821,"t":"code","b":[200],"m":"iny"},{"a":5822,"t":"code","b":[208,249],"m":"bne","oa":5817,"o":"b_16B9"},{"a":5824,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":5826,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":5828,"t":"code","b":[201,63],"m":"cmp","o":"#$3F"},{"a":5830,"t":"code","b":[208,239],"m":"bne","oa":5815,"o":"b_16B7"},{"a":5832,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":5834,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":5837,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":5839,"t":"code","b":[141,32,208],"m":"sta","o":"vic_border"},{"a":5842,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":5845,"t":"code","b":[32,192,205],"m":"jsr","oa":52672,"o":"title_setup"},{"a":5848,"t":"code","b":[173,17,208],"m":"lda","o":"vic_control1"},{"a":5851,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":5853,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":5855,"t":"code","b":[240,3],"m":"beq","oa":5860,"o":"b_16E4"},{"a":5857,"t":"code","b":[32,0,165],"m":"jsr","oa":42240,"o":"display_toggle_plain"},{"a":5860,"l":"b_16E4","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[5855]},{"a":5862,"t":"code","b":[141,37,208],"m":"sta","o":"vic_sprite_mc0"},{"a":5865,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":5867,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":5870,"t":"code","b":[32,112,23],"m":"jsr","oa":6000,"o":"wait_fire"},{"a":5873,"t":"code","b":[96],"m":"rts"},{"a":5874,"l":"pad_16f2","c":"Unused zero bytes $16F2-$16FF after the title routine.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5882,"t":"byte","b":[0,0,0,0,0,0]},{"a":5888,"l":"lose_life_lower_marks","c":"Removes one life mark from the lower status row, or ends the game: if the screen-RAM colour byte $07E1 (row 24, column 33) is $BC (mark shown) it becomes $CC (hidden); else the same for $07E2 (column 34); if both are already hidden it sets $D8 = $40, no lives left. Each branch also writes $D01E (AND #$EF, a write to the read-only collision register that has no effect), and the first two reset Mr Hat's colour $D02B to $0B. Called from $1DD0 after the upper marks $07B9/$07BA are gone, and from $4C93.","t":"code","b":[173,225,7],"m":"lda","oa":2017,"o":"lives_mark_3","x":[7632,19603]},{"a":5891,"t":"code","b":[201,188],"m":"cmp","o":"#$BC"},{"a":5893,"t":"code","b":[208,19],"m":"bne","oa":5914,"o":"b_171A"},{"a":5895,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":5897,"t":"code","b":[141,225,7],"m":"sta","oa":2017,"o":"lives_mark_3"},{"a":5900,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":5903,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":5905,"t":"code","b":[141,30,208],"m":"sta","o":"vic_sprite_collision"},{"a":5908,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":5910,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":5913,"t":"code","b":[96],"m":"rts"},{"a":5914,"l":"b_171A","t":"code","b":[173,226,7],"m":"lda","oa":2018,"o":"lives_mark_4","x":[5893]},{"a":5917,"t":"code","b":[201,188],"m":"cmp","o":"#$BC"},{"a":5919,"t":"code","b":[208,19],"m":"bne","oa":5940,"o":"b_1734"},{"a":5921,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":5923,"t":"code","b":[141,226,7],"m":"sta","oa":2018,"o":"lives_mark_4"},{"a":5926,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":5929,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":5931,"t":"code","b":[141,30,208],"m":"sta","o":"vic_sprite_collision"},{"a":5934,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":5936,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":5939,"t":"code","b":[96],"m":"rts"},{"a":5940,"l":"b_1734","t":"code","b":[169,64],"m":"lda","o":"#$40","x":[5919]},{"a":5942,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":5944,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":5947,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":5949,"t":"code","b":[141,30,208],"m":"sta","o":"vic_sprite_collision"},{"a":5952,"t":"code","b":[96],"m":"rts"},{"a":5953,"t":"gap","n":3},{"a":5953,"t":"note","c":"Unused zero bytes $1741-$1743 after the life routine.","note":"outside the tracked image"},{"a":5956,"l":"clear_screen_ram","c":"Clears screen RAM $0400-$07FF to zero, including the sprite pointers $07F8-$07FF. Called from $B69C and $BFBA before they write text to the screen.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[46748,49082]},{"a":5958,"l":"b_1746","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[5973]},{"a":5960,"t":"code","b":[157,0,4],"m":"sta","oa":1024,"o":"room_marker_cell,x"},{"a":5963,"t":"code","b":[157,0,5],"m":"sta","oa":1280,"o":"f_0500,x"},{"a":5966,"t":"code","b":[157,0,6],"m":"sta","oa":1536,"o":"f_0600,x"},{"a":5969,"t":"code","b":[157,0,7],"m":"sta","oa":1792,"o":"f_0700,x"},{"a":5972,"t":"code","b":[232],"m":"inx"},{"a":5973,"t":"code","b":[208,239],"m":"bne","oa":5958,"o":"b_1746"},{"a":5975,"t":"code","b":[96],"m":"rts"},{"a":5976,"l":"pad_1758","c":"Unused zero bytes $1758-$176F.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6000,"l":"wait_fire","c":"The title's fire wait: loops until $DC00 (joystick port 2) reads exactly $6F, fire alone with the stick centred (any direction held as well does not count), then points the IRQ vector at the KERNAL's $EA31, which stops the title's music interrupt, and sets the SID volume register $D418 to 0. Returns to $16EE. The freezer snapshot was taken inside this loop ($1773).","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[5870,6005]},{"a":6003,"t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":6005,"t":"code","b":[208,249],"m":"bne","oa":6000,"o":"wait_fire"},{"a":6007,"t":"code","b":[120],"m":"sei"},{"a":6008,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":6010,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":6013,"t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":6015,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":6018,"t":"code","b":[88],"m":"cli"},{"a":6019,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6021,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":6024,"t":"code","b":[96],"m":"rts"},{"a":6025,"t":"gap","n":7},{"a":6025,"t":"note","c":"Unused zero bytes $1789-$178F after the fire wait.","note":"outside the tracked image"},{"a":6032,"l":"delay_f1_debounce","c":"A fixed busy-wait of 64 x 256 loop passes (X counts to $40, Y wraps), used by $7C7E after the F1 key has toggled $1019 so that one press counts once.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[31870]},{"a":6034,"l":"b_1792","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[6042]},{"a":6036,"l":"b_1794","t":"code","b":[200],"m":"iny","x":[6037]},{"a":6037,"t":"code","b":[208,253],"m":"bne","oa":6036,"o":"b_1794"},{"a":6039,"t":"code","b":[232],"m":"inx"},{"a":6040,"t":"code","b":[224,64],"m":"cpx","o":"#$40"},{"a":6042,"t":"code","b":[208,246],"m":"bne","oa":6034,"o":"b_1792"},{"a":6044,"t":"code","b":[96],"m":"rts"},{"a":6045,"l":"pad_179d","c":"Unused zero bytes $179D-$17BF.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6053,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6061,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6069,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6077,"t":"byte","b":[0,0,0]},{"a":6080,"l":"stand_then_room_loop","c":"Jumped to from $6B33: turns Mr Hat's sprite to a standing frame, $2F if he was facing left (pointer $2F or above) or $2C if facing right, and continues with the room loop through $A82F (to $6A20).","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[27443]},{"a":6083,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":6085,"t":"code","b":[144,8],"m":"bcc","oa":6095,"o":"b_17CF"},{"a":6087,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":6089,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":6092,"t":"code","b":[76,47,168],"m":"jmp","oa":43055,"o":"reenter_loop_6a20"},{"a":6095,"l":"b_17CF","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[6085]},{"a":6097,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":6100,"t":"code","b":[76,47,168],"m":"jmp","oa":43055,"o":"reenter_loop_6a20"},{"a":6103,"l":"pad_17d7","c":"Unused zero bytes $17D7-$17DE.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6111,"l":"room1_setup","c":"Room 1's set-up, the second half of the game start (jumped to from $6FB2 after $6E00 has drawn the walls and floors). It draws the room's objects as bitmap pictures with their screen colours: $AA26 at column 2, row 18; a 3 x 2 colour block ($FF) at 3,19 and a 1 x 1 block ($8C) at 7,21 through $A67F; $AA45 at $22,$15; $AA64 at $22,2; then copies the hook picture $10D1 twice ($1820-$184E) and the slab $1119 to row 2 ($186A); the cone pictures $A79F/$A7BC with colour $7C at $1A,2/$1A,5 and with colour $2C at $14,$10/$14,$13; sets $D022; the odd copy loop at $18AC; the 48 bytes from $1281 to $3238; $A763 at 3,5; $A782 at $0B,$13; the 14-cell bar patterns from $13F1/$13F9 ($19B2-$1A1B); and goes on at $1A2A with the status line and the sprites. Long runs of NOPs ($1850-$1869, $18F5-$193F with a stray LDY #$34 at $191D, $1953-$19B1) do nothing.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[28594]},{"a":6113,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":6115,"t":"code","b":[32,38,170],"m":"jsr","oa":43558,"o":"draw_television"},{"a":6118,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":6120,"t":"code","b":[160,19],"m":"ldy","o":"#$13"},{"a":6122,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":6124,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":6126,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":6128,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":6130,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":6132,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":6134,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":6137,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":6139,"t":"code","b":[160,21],"m":"ldy","o":"#$15"},{"a":6141,"t":"code","b":[169,140],"m":"lda","o":"#$8C"},{"a":6143,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":6145,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":6147,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":6149,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":6151,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":6153,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":6156,"t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":6158,"t":"code","b":[160,21],"m":"ldy","o":"#$15"},{"a":6160,"t":"code","b":[32,69,170],"m":"jsr","oa":43589,"o":"draw_band_top"},{"a":6163,"t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":6165,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":6167,"t":"code","b":[32,100,170],"m":"jsr","oa":43620,"o":"draw_band_bottom"},{"a":6170,"t":"code","b":[234],"m":"nop"},{"a":6171,"t":"code","b":[234],"m":"nop"},{"a":6172,"t":"code","b":[234],"m":"nop"},{"a":6173,"t":"code","b":[234],"m":"nop"},{"a":6174,"t":"code","b":[234],"m":"nop"},{"a":6175,"t":"code","b":[234],"m":"nop"},{"a":6176,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6178,"l":"b_1822","t":"code","b":[189,209,16],"m":"lda","oa":4305,"o":"gfx_hook_top,x","x":[6190]},{"a":6181,"t":"code","b":[157,128,47],"m":"sta","oa":12160,"o":"f_2F80,x"},{"a":6184,"t":"code","b":[157,224,38],"m":"sta","oa":9952,"o":"f_26E0,x"},{"a":6187,"t":"code","b":[232],"m":"inx"},{"a":6188,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":6190,"t":"code","b":[208,242],"m":"bne","oa":6178,"o":"b_1822"},{"a":6192,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6194,"l":"b_1832","t":"code","b":[189,225,16],"m":"lda","oa":4321,"o":"gfx_hook_mid,x","x":[6206]},{"a":6197,"t":"code","b":[157,192,48],"m":"sta","oa":12480,"o":"f_30C0,x"},{"a":6200,"t":"code","b":[157,32,40],"m":"sta","oa":10272,"o":"f_2820,x"},{"a":6203,"t":"code","b":[232],"m":"inx"},{"a":6204,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":6206,"t":"code","b":[208,242],"m":"bne","oa":6194,"o":"b_1832"},{"a":6208,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6210,"l":"b_1842","t":"code","b":[189,241,16],"m":"lda","oa":4337,"o":"gfx_hook_bottom,x","x":[6222]},{"a":6213,"t":"code","b":[157,248,49],"m":"sta","oa":12792,"o":"f_31F8,x"},{"a":6216,"t":"code","b":[157,88,41],"m":"sta","oa":10584,"o":"f_2958,x"},{"a":6219,"t":"code","b":[232],"m":"inx"},{"a":6220,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":6222,"t":"code","b":[208,242],"m":"bne","oa":6210,"o":"b_1842"},{"a":6224,"t":"code","b":[234],"m":"nop"},{"a":6225,"t":"code","b":[234],"m":"nop"},{"a":6226,"t":"code","b":[234],"m":"nop"},{"a":6227,"t":"code","b":[234],"m":"nop"},{"a":6228,"t":"code","b":[234],"m":"nop"},{"a":6229,"t":"code","b":[234],"m":"nop"},{"a":6230,"t":"code","b":[234],"m":"nop"},{"a":6231,"t":"code","b":[234],"m":"nop"},{"a":6232,"t":"code","b":[234],"m":"nop"},{"a":6233,"t":"code","b":[234],"m":"nop"},{"a":6234,"t":"code","b":[234],"m":"nop"},{"a":6235,"t":"code","b":[234],"m":"nop"},{"a":6236,"t":"code","b":[234],"m":"nop"},{"a":6237,"t":"code","b":[234],"m":"nop"},{"a":6238,"t":"code","b":[234],"m":"nop"},{"a":6239,"t":"code","b":[234],"m":"nop"},{"a":6240,"t":"code","b":[234],"m":"nop"},{"a":6241,"t":"code","b":[234],"m":"nop"},{"a":6242,"t":"code","b":[234],"m":"nop"},{"a":6243,"t":"code","b":[234],"m":"nop"},{"a":6244,"t":"code","b":[234],"m":"nop"},{"a":6245,"t":"code","b":[234],"m":"nop"},{"a":6246,"t":"code","b":[234],"m":"nop"},{"a":6247,"t":"code","b":[234],"m":"nop"},{"a":6248,"t":"code","b":[234],"m":"nop"},{"a":6249,"t":"code","b":[234],"m":"nop"},{"a":6250,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6252,"l":"b_186C","t":"code","b":[189,25,17],"m":"lda","oa":4377,"o":"gfx_shelf,x","x":[6261]},{"a":6255,"t":"code","b":[157,208,34],"m":"sta","oa":8912,"o":"f_22D0,x"},{"a":6258,"t":"code","b":[232],"m":"inx"},{"a":6259,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":6261,"t":"code","b":[208,245],"m":"bne","oa":6252,"o":"b_186C"},{"a":6263,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":6265,"t":"code","b":[162,26],"m":"ldx","o":"#$1A"},{"a":6267,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":6269,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":6271,"t":"code","b":[32,159,167],"m":"jsr","oa":42911,"o":"draw_cone_down"},{"a":6274,"t":"code","b":[162,26],"m":"ldx","o":"#$1A"},{"a":6276,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":6278,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":6280,"t":"code","b":[32,188,167],"m":"jsr","oa":42940,"o":"draw_cone_up"},{"a":6283,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":6285,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":6287,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":6289,"t":"code","b":[32,159,167],"m":"jsr","oa":42911,"o":"draw_cone_down"},{"a":6292,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":6294,"t":"code","b":[160,19],"m":"ldy","o":"#$13"},{"a":6296,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":6298,"t":"code","b":[32,188,167],"m":"jsr","oa":42940,"o":"draw_cone_up"},{"a":6301,"t":"code","b":[234],"m":"nop"},{"a":6302,"t":"code","b":[234],"m":"nop"},{"a":6303,"t":"code","b":[234],"m":"nop"},{"a":6304,"t":"code","b":[234],"m":"nop"},{"a":6305,"t":"code","b":[234],"m":"nop"},{"a":6306,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":6308,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":6311,"t":"code","b":[169,35],"m":"lda","o":"#$23"},{"a":6313,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":6316,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":6318,"l":"b_18AE","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[6348]},{"a":6320,"l":"b_18B0","t":"code","b":[185,145,17],"m":"lda","oa":4497,"o":"draw_pic_mc_sprite1,y","x":[6330]},{"a":6323,"t":"code","b":[141,248,43],"m":"sta","oa":11256,"o":"a_2BF8"},{"a":6324,"t":"note","l":"operand_18b4_lo","c":"Low byte of the operand of STA $2BF8 at $18B3 (self-modified). The loop $18AC-$18D4 reads 48 bytes from $1191,Y (bytes that are also code: $1191 is the routine draw_pic_mc_sprite1) but stores them all to this one unindexed address, so only the last byte of each group of 48 ($11C0, $11F0, $1220, $1250, $1280) survives. After each group the high byte $18B5 is incremented and this low byte raised by $10 (one more increment of $18B5 on a carry), $110 in all, so the five survivors land at $2BF8, $2D08, $2E18, $2F28 and $3038. The same loop at $9167 has STA $35D8,Y, which with the index advancing places each group of 48 one character row ($140 bytes) below the last; here the index is missing. $18D7 puts the operand back to $2BF8.","note":"inside the item at $18B3","x":[6335,6341,6361]},{"a":6325,"t":"note","l":"operand_18b5_hi","c":"High byte of the self-modified store address of the loop at $18AC (see $18B4): incremented on each carry ($18D1) and once per group ($18BC), reset to $2B at $18DC.","note":"inside the item at $18B3","x":[6332,6353,6366]},{"a":6326,"t":"code","b":[232],"m":"inx"},{"a":6327,"t":"code","b":[200],"m":"iny"},{"a":6328,"t":"code","b":[224,48],"m":"cpx","o":"#$30"},{"a":6330,"t":"code","b":[208,244],"m":"bne","oa":6320,"o":"b_18B0"},{"a":6332,"t":"code","b":[238,181,24],"m":"inc","oa":6325,"o":"operand_18b5_hi"},{"a":6335,"t":"code","b":[173,180,24],"m":"lda","oa":6324,"o":"operand_18b4_lo"},{"a":6338,"t":"code","b":[24],"m":"clc"},{"a":6339,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":6341,"t":"code","b":[141,180,24],"m":"sta","oa":6324,"o":"operand_18b4_lo"},{"a":6344,"t":"code","b":[176,7],"m":"bcs","oa":6353,"o":"b_18D1"},{"a":6346,"l":"j_18CA","t":"code","b":[192,240],"m":"cpy","o":"#$F0","x":[6356]},{"a":6348,"t":"code","b":[208,224],"m":"bne","oa":6318,"o":"b_18AE"},{"a":6350,"t":"code","b":[76,215,24],"m":"jmp","oa":6359,"o":"j_18D7"},{"a":6353,"l":"b_18D1","t":"code","b":[238,181,24],"m":"inc","oa":6325,"o":"operand_18b5_hi","x":[6344]},{"a":6356,"t":"code","b":[76,202,24],"m":"jmp","oa":6346,"o":"j_18CA"},{"a":6359,"l":"j_18D7","t":"code","b":[169,248],"m":"lda","o":"#$F8","x":[6350]},{"a":6361,"t":"code","b":[141,180,24],"m":"sta","oa":6324,"o":"operand_18b4_lo"},{"a":6364,"t":"code","b":[169,43],"m":"lda","o":"#$2B"},{"a":6366,"t":"code","b":[141,181,24],"m":"sta","oa":6325,"o":"operand_18b5_hi"},{"a":6369,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6371,"l":"b_18E3","t":"code","b":[189,129,18],"m":"lda","oa":4737,"o":"f_1281,x","x":[6380]},{"a":6374,"t":"code","b":[157,56,50],"m":"sta","oa":12856,"o":"f_3238,x"},{"a":6377,"t":"code","b":[232],"m":"inx"},{"a":6378,"t":"code","b":[224,48],"m":"cpx","o":"#$30"},{"a":6380,"t":"code","b":[208,245],"m":"bne","oa":6371,"o":"b_18E3"},{"a":6382,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":6384,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":6386,"t":"code","b":[32,99,167],"m":"jsr","oa":42851,"o":"draw_keyhole"},{"a":6389,"t":"code","b":[234],"m":"nop"},{"a":6390,"t":"code","b":[234],"m":"nop"},{"a":6391,"t":"code","b":[234],"m":"nop"},{"a":6392,"t":"code","b":[234],"m":"nop"},{"a":6393,"t":"code","b":[234],"m":"nop"},{"a":6394,"t":"code","b":[234],"m":"nop"},{"a":6395,"t":"code","b":[234],"m":"nop"},{"a":6396,"t":"code","b":[234],"m":"nop"},{"a":6397,"t":"code","b":[234],"m":"nop"},{"a":6398,"t":"code","b":[234],"m":"nop"},{"a":6399,"t":"code","b":[234],"m":"nop"},{"a":6400,"t":"code","b":[234],"m":"nop"},{"a":6401,"t":"code","b":[234],"m":"nop"},{"a":6402,"t":"code","b":[234],"m":"nop"},{"a":6403,"t":"code","b":[234],"m":"nop"},{"a":6404,"t":"code","b":[234],"m":"nop"},{"a":6405,"t":"code","b":[234],"m":"nop"},{"a":6406,"t":"code","b":[234],"m":"nop"},{"a":6407,"t":"code","b":[234],"m":"nop"},{"a":6408,"t":"code","b":[234],"m":"nop"},{"a":6409,"t":"code","b":[234],"m":"nop"},{"a":6410,"t":"code","b":[234],"m":"nop"},{"a":6411,"t":"code","b":[234],"m":"nop"},{"a":6412,"t":"code","b":[234],"m":"nop"},{"a":6413,"t":"code","b":[234],"m":"nop"},{"a":6414,"t":"code","b":[234],"m":"nop"},{"a":6415,"t":"code","b":[234],"m":"nop"},{"a":6416,"t":"code","b":[234],"m":"nop"},{"a":6417,"t":"code","b":[234],"m":"nop"},{"a":6418,"t":"code","b":[234],"m":"nop"},{"a":6419,"t":"code","b":[234],"m":"nop"},{"a":6420,"t":"code","b":[234],"m":"nop"},{"a":6421,"t":"code","b":[234],"m":"nop"},{"a":6422,"t":"code","b":[234],"m":"nop"},{"a":6423,"t":"code","b":[234],"m":"nop"},{"a":6424,"t":"code","b":[234],"m":"nop"},{"a":6425,"t":"code","b":[234],"m":"nop"},{"a":6426,"t":"code","b":[234],"m":"nop"},{"a":6427,"t":"code","b":[234],"m":"nop"},{"a":6428,"t":"code","b":[234],"m":"nop"},{"a":6429,"l":"operand_191d","c":"The two bytes of a LDY #$34 left among the NOPs; $1940-$1947 rewrites them with the same values ($A0, $34), so the store has no effect.","t":"code","b":[160,52],"m":"ldy","o":"#$34","x":[6466]},{"a":6430,"t":"note","l":"operand_191e","c":"Second byte ($34) of the leftover LDY #$34 at $191D, rewritten unchanged by $1947.","note":"inside the item at $191D","x":[6471]},{"a":6431,"t":"code","b":[234],"m":"nop"},{"a":6432,"t":"code","b":[234],"m":"nop"},{"a":6433,"t":"code","b":[234],"m":"nop"},{"a":6434,"t":"code","b":[234],"m":"nop"},{"a":6435,"t":"code","b":[234],"m":"nop"},{"a":6436,"t":"code","b":[234],"m":"nop"},{"a":6437,"t":"code","b":[234],"m":"nop"},{"a":6438,"t":"code","b":[234],"m":"nop"},{"a":6439,"t":"code","b":[234],"m":"nop"},{"a":6440,"t":"code","b":[234],"m":"nop"},{"a":6441,"t":"code","b":[234],"m":"nop"},{"a":6442,"t":"code","b":[234],"m":"nop"},{"a":6443,"t":"code","b":[234],"m":"nop"},{"a":6444,"t":"code","b":[234],"m":"nop"},{"a":6445,"t":"code","b":[234],"m":"nop"},{"a":6446,"t":"code","b":[234],"m":"nop"},{"a":6447,"t":"code","b":[234],"m":"nop"},{"a":6448,"t":"code","b":[234],"m":"nop"},{"a":6449,"t":"code","b":[234],"m":"nop"},{"a":6450,"t":"code","b":[234],"m":"nop"},{"a":6451,"t":"code","b":[234],"m":"nop"},{"a":6452,"t":"code","b":[234],"m":"nop"},{"a":6453,"t":"code","b":[234],"m":"nop"},{"a":6454,"t":"code","b":[234],"m":"nop"},{"a":6455,"t":"code","b":[234],"m":"nop"},{"a":6456,"t":"code","b":[234],"m":"nop"},{"a":6457,"t":"code","b":[234],"m":"nop"},{"a":6458,"t":"code","b":[234],"m":"nop"},{"a":6459,"t":"code","b":[234],"m":"nop"},{"a":6460,"t":"code","b":[234],"m":"nop"},{"a":6461,"t":"code","b":[234],"m":"nop"},{"a":6462,"t":"code","b":[234],"m":"nop"},{"a":6463,"t":"code","b":[234],"m":"nop"},{"a":6464,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":6466,"t":"code","b":[141,29,25],"m":"sta","oa":6429,"o":"operand_191d"},{"a":6469,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":6471,"t":"code","b":[141,30,25],"m":"sta","oa":6430,"o":"operand_191e"},{"a":6474,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":6476,"t":"code","b":[160,19],"m":"ldy","o":"#$13"},{"a":6478,"t":"code","b":[169,178],"m":"lda","o":"#$B2"},{"a":6480,"t":"code","b":[32,130,167],"m":"jsr","oa":42882,"o":"draw_switch"},{"a":6483,"t":"code","b":[234],"m":"nop"},{"a":6484,"t":"code","b":[234],"m":"nop"},{"a":6485,"t":"code","b":[234],"m":"nop"},{"a":6486,"t":"code","b":[234],"m":"nop"},{"a":6487,"t":"code","b":[234],"m":"nop"},{"a":6488,"t":"code","b":[234],"m":"nop"},{"a":6489,"t":"code","b":[234],"m":"nop"},{"a":6490,"t":"code","b":[234],"m":"nop"},{"a":6491,"t":"code","b":[234],"m":"nop"},{"a":6492,"t":"code","b":[234],"m":"nop"},{"a":6493,"t":"code","b":[234],"m":"nop"},{"a":6494,"t":"code","b":[234],"m":"nop"},{"a":6495,"t":"code","b":[234],"m":"nop"},{"a":6496,"t":"code","b":[234],"m":"nop"},{"a":6497,"t":"code","b":[234],"m":"nop"},{"a":6498,"t":"code","b":[234],"m":"nop"},{"a":6499,"t":"code","b":[234],"m":"nop"},{"a":6500,"t":"code","b":[234],"m":"nop"},{"a":6501,"t":"code","b":[234],"m":"nop"},{"a":6502,"t":"code","b":[234],"m":"nop"},{"a":6503,"t":"code","b":[234],"m":"nop"},{"a":6504,"t":"code","b":[234],"m":"nop"},{"a":6505,"t":"code","b":[234],"m":"nop"},{"a":6506,"t":"code","b":[234],"m":"nop"},{"a":6507,"t":"code","b":[234],"m":"nop"},{"a":6508,"t":"code","b":[234],"m":"nop"},{"a":6509,"t":"code","b":[234],"m":"nop"},{"a":6510,"t":"code","b":[234],"m":"nop"},{"a":6511,"t":"code","b":[234],"m":"nop"},{"a":6512,"t":"code","b":[234],"m":"nop"},{"a":6513,"t":"code","b":[234],"m":"nop"},{"a":6514,"t":"code","b":[234],"m":"nop"},{"a":6515,"t":"code","b":[234],"m":"nop"},{"a":6516,"t":"code","b":[234],"m":"nop"},{"a":6517,"t":"code","b":[234],"m":"nop"},{"a":6518,"t":"code","b":[234],"m":"nop"},{"a":6519,"t":"code","b":[234],"m":"nop"},{"a":6520,"t":"code","b":[234],"m":"nop"},{"a":6521,"t":"code","b":[234],"m":"nop"},{"a":6522,"t":"code","b":[234],"m":"nop"},{"a":6523,"t":"code","b":[234],"m":"nop"},{"a":6524,"t":"code","b":[234],"m":"nop"},{"a":6525,"t":"code","b":[234],"m":"nop"},{"a":6526,"t":"code","b":[234],"m":"nop"},{"a":6527,"t":"code","b":[234],"m":"nop"},{"a":6528,"t":"code","b":[234],"m":"nop"},{"a":6529,"t":"code","b":[234],"m":"nop"},{"a":6530,"t":"code","b":[234],"m":"nop"},{"a":6531,"t":"code","b":[234],"m":"nop"},{"a":6532,"t":"code","b":[234],"m":"nop"},{"a":6533,"t":"code","b":[234],"m":"nop"},{"a":6534,"t":"code","b":[234],"m":"nop"},{"a":6535,"t":"code","b":[234],"m":"nop"},{"a":6536,"t":"code","b":[234],"m":"nop"},{"a":6537,"t":"code","b":[234],"m":"nop"},{"a":6538,"t":"code","b":[234],"m":"nop"},{"a":6539,"t":"code","b":[234],"m":"nop"},{"a":6540,"t":"code","b":[234],"m":"nop"},{"a":6541,"t":"code","b":[234],"m":"nop"},{"a":6542,"t":"code","b":[234],"m":"nop"},{"a":6543,"t":"code","b":[234],"m":"nop"},{"a":6544,"t":"code","b":[234],"m":"nop"},{"a":6545,"t":"code","b":[234],"m":"nop"},{"a":6546,"t":"code","b":[234],"m":"nop"},{"a":6547,"t":"code","b":[234],"m":"nop"},{"a":6548,"t":"code","b":[234],"m":"nop"},{"a":6549,"t":"code","b":[234],"m":"nop"},{"a":6550,"t":"code","b":[234],"m":"nop"},{"a":6551,"t":"code","b":[234],"m":"nop"},{"a":6552,"t":"code","b":[234],"m":"nop"},{"a":6553,"t":"code","b":[234],"m":"nop"},{"a":6554,"t":"code","b":[234],"m":"nop"},{"a":6555,"t":"code","b":[234],"m":"nop"},{"a":6556,"t":"code","b":[234],"m":"nop"},{"a":6557,"t":"code","b":[234],"m":"nop"},{"a":6558,"t":"code","b":[234],"m":"nop"},{"a":6559,"t":"code","b":[234],"m":"nop"},{"a":6560,"t":"code","b":[234],"m":"nop"},{"a":6561,"t":"code","b":[234],"m":"nop"},{"a":6562,"t":"code","b":[234],"m":"nop"},{"a":6563,"t":"code","b":[234],"m":"nop"},{"a":6564,"t":"code","b":[234],"m":"nop"},{"a":6565,"t":"code","b":[234],"m":"nop"},{"a":6566,"t":"code","b":[234],"m":"nop"},{"a":6567,"t":"code","b":[234],"m":"nop"},{"a":6568,"t":"code","b":[234],"m":"nop"},{"a":6569,"t":"code","b":[234],"m":"nop"},{"a":6570,"t":"code","b":[234],"m":"nop"},{"a":6571,"t":"code","b":[234],"m":"nop"},{"a":6572,"t":"code","b":[234],"m":"nop"},{"a":6573,"t":"code","b":[234],"m":"nop"},{"a":6574,"t":"code","b":[234],"m":"nop"},{"a":6575,"t":"code","b":[234],"m":"nop"},{"a":6576,"t":"code","b":[234],"m":"nop"},{"a":6577,"t":"code","b":[234],"m":"nop"},{"a":6578,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":6580,"l":"b_19B4","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[6610]},{"a":6582,"l":"b_19B6","t":"code","b":[189,241,19],"m":"lda","oa":5105,"o":"gfx_post_left,x","x":[6592]},{"a":6585,"t":"code","b":[153,80,39],"m":"sta","oa":10064,"o":"f_2750,y"},{"a":6586,"t":"note","l":"operand_19ba_lo","c":"Low byte of the operand of STA $2750,Y at $19B9 (self-modified): after each 8-byte cell the loop $19B2-$19DB adds $38 to it and increments the high byte $19BB (plus once more on a carry); with Y advancing by 8 each cell lands $140 = 320 bytes after the last, one character row lower in the same column. The 14 cells make a vertical bar in column 34, character rows 5-18 (bitmap $2750, $2890, ... $3790). Reset to $50 at $19DF.","note":"inside the item at $19B9","x":[6597,6603,6623]},{"a":6587,"t":"note","l":"operand_19bb_hi","c":"High byte of the STA $2750,Y operand (see $19BA): incremented on carry ($19D7) and once per cell ($19C2), reset to $27 at $19E4.","note":"inside the item at $19B9","x":[6594,6615,6628]},{"a":6588,"t":"code","b":[232],"m":"inx"},{"a":6589,"t":"code","b":[200],"m":"iny"},{"a":6590,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":6592,"t":"code","b":[208,244],"m":"bne","oa":6582,"o":"b_19B6"},{"a":6594,"t":"code","b":[238,187,25],"m":"inc","oa":6587,"o":"operand_19bb_hi"},{"a":6597,"t":"code","b":[173,186,25],"m":"lda","oa":6586,"o":"operand_19ba_lo"},{"a":6600,"t":"code","b":[24],"m":"clc"},{"a":6601,"t":"code","b":[105,56],"m":"adc","o":"#$38"},{"a":6603,"t":"code","b":[141,186,25],"m":"sta","oa":6586,"o":"operand_19ba_lo"},{"a":6606,"t":"code","b":[176,7],"m":"bcs","oa":6615,"o":"b_19D7"},{"a":6608,"l":"j_19D0","t":"code","b":[192,112],"m":"cpy","o":"#$70","x":[6618]},{"a":6610,"t":"code","b":[208,224],"m":"bne","oa":6580,"o":"b_19B4"},{"a":6612,"t":"code","b":[76,221,25],"m":"jmp","oa":6621,"o":"j_19DD"},{"a":6615,"l":"b_19D7","t":"code","b":[238,187,25],"m":"inc","oa":6587,"o":"operand_19bb_hi","x":[6606]},{"a":6618,"t":"code","b":[76,208,25],"m":"jmp","oa":6608,"o":"j_19D0"},{"a":6621,"l":"j_19DD","t":"code","b":[169,80],"m":"lda","o":"#$50","x":[6612]},{"a":6623,"t":"code","b":[141,186,25],"m":"sta","oa":6586,"o":"operand_19ba_lo"},{"a":6626,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":6628,"t":"code","b":[141,187,25],"m":"sta","oa":6587,"o":"operand_19bb_hi"},{"a":6631,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":6633,"l":"b_19E9","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[6663]},{"a":6635,"l":"b_19EB","t":"code","b":[189,249,19],"m":"lda","oa":5113,"o":"gfx_post_right,x","x":[6645]},{"a":6638,"t":"code","b":[153,104,39],"m":"sta","oa":10088,"o":"f_2768,y"},{"a":6639,"t":"note","l":"operand_19ef_lo","c":"Low byte of the operand of STA $2768,Y at $19EE, the second bar loop ($19E7-$1A1B, cells from $13F9), stepped like $19BA and reset to $68 at $1A14.","note":"inside the item at $19EE","x":[6650,6656,6676]},{"a":6640,"t":"note","l":"operand_19f0_hi","c":"High byte of the STA $2768,Y operand of the second bar loop, reset to $27 at $1A19.","note":"inside the item at $19EE","x":[6647,6668,6681]},{"a":6641,"t":"code","b":[232],"m":"inx"},{"a":6642,"t":"code","b":[200],"m":"iny"},{"a":6643,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":6645,"t":"code","b":[208,244],"m":"bne","oa":6635,"o":"b_19EB"},{"a":6647,"t":"code","b":[238,240,25],"m":"inc","oa":6640,"o":"operand_19f0_hi"},{"a":6650,"t":"code","b":[173,239,25],"m":"lda","oa":6639,"o":"operand_19ef_lo"},{"a":6653,"t":"code","b":[24],"m":"clc"},{"a":6654,"t":"code","b":[105,56],"m":"adc","o":"#$38"},{"a":6656,"t":"code","b":[141,239,25],"m":"sta","oa":6639,"o":"operand_19ef_lo"},{"a":6659,"t":"code","b":[176,7],"m":"bcs","oa":6668,"o":"b_1A0C"},{"a":6661,"l":"j_1A05","t":"code","b":[192,112],"m":"cpy","o":"#$70","x":[6671]},{"a":6663,"t":"code","b":[208,224],"m":"bne","oa":6633,"o":"b_19E9"},{"a":6665,"t":"code","b":[76,18,26],"m":"jmp","oa":6674,"o":"j_1A12"},{"a":6668,"l":"b_1A0C","t":"code","b":[238,240,25],"m":"inc","oa":6640,"o":"operand_19f0_hi","x":[6659]},{"a":6671,"t":"code","b":[76,5,26],"m":"jmp","oa":6661,"o":"j_1A05"},{"a":6674,"l":"j_1A12","t":"code","b":[169,104],"m":"lda","o":"#$68","x":[6665]},{"a":6676,"t":"code","b":[141,239,25],"m":"sta","oa":6639,"o":"operand_19ef_lo"},{"a":6679,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":6681,"t":"code","b":[141,240,25],"m":"sta","oa":6640,"o":"operand_19f0_hi"},{"a":6684,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6686,"t":"code","b":[76,42,26],"m":"jmp","oa":6698,"o":"room1_setup_status"},{"a":6689,"l":"draw_mr_hat_logo","c":"Draws the 'Mr.Hat' logo of the status line ($3F80) at column 0, row $17 (23) with $A702.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[6707]},{"a":6691,"t":"code","b":[160,23],"m":"ldy","o":"#$17"},{"a":6693,"t":"code","b":[32,2,167],"m":"jsr","oa":42754,"o":"draw_tile_3f80"},{"a":6696,"t":"code","b":[96],"m":"rts"},{"a":6697,"t":"gap","n":1},{"a":6698,"l":"room1_setup_status","c":"Second part of room 1's set-up (jumped to from $1A1E). Draws more objects ($A7D9 at $1A,$13 and at $14,5, $A7F8 at $14,7, $A782 at 2,$0C), the logo ($1A21), the status line: life marks $1449, the words SCORE, ROOM and STAGE, the score 000000 and the digits 1 for room and stage (from the tables at $1449-$1618 into bitmap rows 23-24). Then it sets up the sprites: enable $B2 (sprites 1, 4, 5, 7), multicolour $B7 (sprite 6 added at $1BD8), X high bit for sprite 5, sprite 5 double size, pointers ($25 $25 $2B $26 $2C $28 for sprites 0-5, $24 for 6), colours and start positions (Mr Hat, sprite 4, at X $85, Y $CC). It initialises the play variables (walk counters $FB-$FF, flags $B7, $39, $40, $45, $BD; the score digit pointers $41DD-$4261, so the score starts at zero), sets sprite 3's direction to DEC ($1C12), calls $802D, installs the IRQ $1C00 and jumps through $A817 to room 1's main loop at $42EF.","t":"code","b":[162,26],"m":"ldx","o":"#$1A","x":[6686]},{"a":6700,"t":"code","b":[160,19],"m":"ldy","o":"#$13"},{"a":6702,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":6705,"t":"code","b":[234],"m":"nop"},{"a":6706,"t":"code","b":[234],"m":"nop"},{"a":6707,"t":"code","b":[32,33,26],"m":"jsr","oa":6689,"o":"draw_mr_hat_logo"},{"a":6710,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":6712,"t":"code","b":[160,12],"m":"ldy","o":"#$0C"},{"a":6714,"t":"code","b":[169,183],"m":"lda","o":"#$B7"},{"a":6716,"t":"code","b":[32,130,167],"m":"jsr","oa":42882,"o":"draw_switch"},{"a":6719,"t":"code","b":[234],"m":"nop"},{"a":6720,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":6722,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":6724,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":6727,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":6729,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":6731,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":6734,"t":"code","b":[234],"m":"nop"},{"a":6735,"t":"code","b":[234],"m":"nop"},{"a":6736,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6738,"l":"b_1A52","t":"code","b":[189,73,20],"m":"lda","oa":5193,"o":"gfx_life_marks,x","x":[6750]},{"a":6741,"t":"code","b":[157,200,61],"m":"sta","oa":15816,"o":"f_3DC8,x"},{"a":6744,"t":"code","b":[157,8,63],"m":"sta","oa":16136,"o":"bitmap_life_marks_low,x"},{"a":6747,"t":"code","b":[232],"m":"inx"},{"a":6748,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":6750,"t":"code","b":[208,242],"m":"bne","oa":6738,"o":"b_1A52"},{"a":6752,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6754,"l":"b_1A62","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[6763]},{"a":6756,"t":"code","b":[234],"m":"nop"},{"a":6757,"t":"code","b":[157,216,61],"m":"sta","oa":15832,"o":"f_3DD8,x"},{"a":6760,"t":"code","b":[232],"m":"inx"},{"a":6761,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":6763,"t":"code","b":[208,245],"m":"bne","oa":6754,"o":"b_1A62"},{"a":6765,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6767,"l":"b_1A6F","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[6776]},{"a":6769,"t":"code","b":[234],"m":"nop"},{"a":6770,"t":"code","b":[157,24,63],"m":"sta","oa":16152,"o":"bitmap_status_clear,x"},{"a":6773,"t":"code","b":[232],"m":"inx"},{"a":6774,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":6776,"t":"code","b":[208,245],"m":"bne","oa":6767,"o":"b_1A6F"},{"a":6778,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6780,"l":"b_1A7C","t":"code","b":[189,121,20],"m":"lda","oa":5241,"o":"gfx_score_top,x","x":[6789]},{"a":6783,"t":"code","b":[157,0,61],"m":"sta","oa":15616,"o":"f_3D00,x"},{"a":6786,"t":"code","b":[232],"m":"inx"},{"a":6787,"t":"code","b":[224,40],"m":"cpx","o":"#$28"},{"a":6789,"t":"code","b":[208,245],"m":"bne","oa":6780,"o":"b_1A7C"},{"a":6791,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6793,"l":"b_1A89","t":"code","b":[189,161,20],"m":"lda","oa":5281,"o":"gfx_score_bottom,x","x":[6802]},{"a":6796,"t":"code","b":[157,64,62],"m":"sta","oa":15936,"o":"f_3E40,x"},{"a":6799,"t":"code","b":[232],"m":"inx"},{"a":6800,"t":"code","b":[224,40],"m":"cpx","o":"#$28"},{"a":6802,"t":"code","b":[208,245],"m":"bne","oa":6793,"o":"b_1A89"},{"a":6804,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6806,"l":"b_1A96","t":"code","b":[189,201,20],"m":"lda","oa":5321,"o":"gfx_room_top,x","x":[6815]},{"a":6809,"t":"code","b":[157,88,61],"m":"sta","oa":15704,"o":"f_3D58,x"},{"a":6812,"t":"code","b":[232],"m":"inx"},{"a":6813,"t":"code","b":[224,40],"m":"cpx","o":"#$28"},{"a":6815,"t":"code","b":[208,245],"m":"bne","oa":6806,"o":"b_1A96"},{"a":6817,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6819,"l":"b_1AA3","t":"code","b":[189,241,20],"m":"lda","oa":5361,"o":"gfx_room_bottom,x","x":[6828]},{"a":6822,"t":"code","b":[157,160,62],"m":"sta","oa":16032,"o":"f_3EA0,x"},{"a":6825,"t":"code","b":[232],"m":"inx"},{"a":6826,"t":"code","b":[224,41],"m":"cpx","o":"#$29"},{"a":6828,"t":"code","b":[208,245],"m":"bne","oa":6819,"o":"b_1AA3"},{"a":6830,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6832,"l":"b_1AB0","t":"code","b":[189,17,21],"m":"lda","oa":5393,"o":"gfx_stage_top,x","x":[6841]},{"a":6835,"t":"code","b":[157,144,61],"m":"sta","oa":15760,"o":"f_3D90,x"},{"a":6838,"t":"code","b":[232],"m":"inx"},{"a":6839,"t":"code","b":[224,40],"m":"cpx","o":"#$28"},{"a":6841,"t":"code","b":[208,245],"m":"bne","oa":6832,"o":"b_1AB0"},{"a":6843,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6845,"l":"b_1ABD","t":"code","b":[189,57,21],"m":"lda","oa":5433,"o":"gfx_stage_bottom,x","x":[6854]},{"a":6848,"t":"code","b":[157,208,62],"m":"sta","oa":16080,"o":"f_3ED0,x"},{"a":6851,"t":"code","b":[232],"m":"inx"},{"a":6852,"t":"code","b":[224,40],"m":"cpx","o":"#$28"},{"a":6854,"t":"code","b":[208,245],"m":"bne","oa":6845,"o":"b_1ABD"},{"a":6856,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6858,"l":"b_1ACA","t":"code","b":[189,104,21],"m":"lda","oa":5480,"o":"gfx_score_zeros_top,x","x":[6867]},{"a":6861,"t":"code","b":[157,40,61],"m":"sta","oa":15656,"o":"score_digit_100k_top,x"},{"a":6864,"t":"code","b":[232],"m":"inx"},{"a":6865,"t":"code","b":[224,48],"m":"cpx","o":"#$30"},{"a":6867,"t":"code","b":[208,245],"m":"bne","oa":6858,"o":"b_1ACA"},{"a":6869,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6871,"l":"b_1AD7","t":"code","b":[189,152,21],"m":"lda","oa":5528,"o":"gfx_score_zeros_bottom,x","x":[6880]},{"a":6874,"t":"code","b":[157,104,62],"m":"sta","oa":15976,"o":"score_digit_100k_bottom,x"},{"a":6877,"t":"code","b":[232],"m":"inx"},{"a":6878,"t":"code","b":[224,48],"m":"cpx","o":"#$30"},{"a":6880,"t":"code","b":[208,245],"m":"bne","oa":6871,"o":"b_1AD7"},{"a":6882,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6884,"l":"b_1AE4","t":"code","b":[189,16,22],"m":"lda","oa":5648,"o":"digit_one_top,x","x":[6896]},{"a":6887,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":6890,"t":"code","b":[157,184,61],"m":"sta","oa":15800,"o":"status_stage_digit_top,x"},{"a":6893,"t":"code","b":[232],"m":"inx"},{"a":6894,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":6896,"t":"code","b":[208,242],"m":"bne","oa":6884,"o":"b_1AE4"},{"a":6898,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":6900,"l":"b_1AF4","t":"code","b":[189,24,22],"m":"lda","oa":5656,"o":"digit_one_bottom,x","x":[6912]},{"a":6903,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":6906,"t":"code","b":[157,248,62],"m":"sta","oa":16120,"o":"status_stage_digit_bottom,x"},{"a":6909,"t":"code","b":[232],"m":"inx"},{"a":6910,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":6912,"t":"code","b":[208,242],"m":"bne","oa":6900,"o":"b_1AF4"},{"a":6914,"t":"code","b":[169,178],"m":"lda","o":"#$B2"},{"a":6916,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":6919,"t":"code","b":[169,183],"m":"lda","o":"#$B7"},{"a":6921,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":6924,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":6926,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":6929,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":6931,"t":"code","b":[141,23,208],"m":"sta","o":"vic_sprite_expand_y"},{"a":6934,"t":"code","b":[141,29,208],"m":"sta","o":"vic_sprite_expand_x"},{"a":6937,"t":"code","b":[169,37],"m":"lda","o":"#$25"},{"a":6939,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":6942,"t":"code","b":[141,249,7],"m":"sta","oa":2041,"o":"spr1_pointer"},{"a":6945,"t":"code","b":[169,43],"m":"lda","o":"#$2B"},{"a":6947,"t":"code","b":[141,250,7],"m":"sta","oa":2042,"o":"spr2_pointer"},{"a":6950,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":6952,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":6955,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":6957,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":6960,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":6962,"t":"code","b":[141,253,7],"m":"sta","oa":2045,"o":"spr5_pointer"},{"a":6965,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":6967,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":6970,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":6972,"t":"code","b":[141,37,208],"m":"sta","o":"vic_sprite_mc0"},{"a":6975,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":6977,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":6980,"t":"code","b":[141,40,208],"m":"sta","o":"vic_sprite1_colour"},{"a":6983,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":6985,"t":"code","b":[141,41,208],"m":"sta","o":"vic_sprite2_colour"},{"a":6988,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":6990,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":6993,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":6995,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":6998,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":7000,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":7003,"t":"code","b":[169,134],"m":"lda","o":"#$86"},{"a":7005,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":7008,"t":"code","b":[169,78],"m":"lda","o":"#$4E"},{"a":7010,"t":"code","b":[141,3,208],"m":"sta","o":"vic_sprite1_y"},{"a":7013,"t":"code","b":[169,102],"m":"lda","o":"#$66"},{"a":7015,"t":"code","b":[141,4,208],"m":"sta","o":"vic_sprite2_x"},{"a":7018,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":7020,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":7023,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":7025,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":7028,"t":"code","b":[169,133],"m":"lda","o":"#$85"},{"a":7030,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":7033,"t":"code","b":[169,182],"m":"lda","o":"#$B6"},{"a":7035,"t":"code","b":[141,11,208],"m":"sta","o":"vic_sprite5_y"},{"a":7038,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":7040,"t":"code","b":[141,10,208],"m":"sta","o":"vic_sprite5_x"},{"a":7043,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7045,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":7047,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":7049,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":7051,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":7053,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":7055,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":7057,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7059,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":7061,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7063,"t":"code","b":[133,183],"m":"sta","oa":183,"o":"room1_zp_b7"},{"a":7065,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7067,"t":"code","b":[133,57],"m":"sta","oa":57,"o":"flag_room1_item_mid"},{"a":7069,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":7070,"t":"note","l":"operand_1b9e","c":"The operand of LDA #$2C at $1B9D, which the next instruction stores back into itself unchanged: a no-op left by an edit.","note":"inside the item at $1B9D","x":[7071]},{"a":7071,"t":"code","b":[141,158,27],"m":"sta","oa":7070,"o":"operand_1b9e"},{"a":7074,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":7076,"t":"code","b":[141,221,65],"m":"sta","oa":16861,"o":"score_thousands_glyph_top"},{"a":7079,"t":"code","b":[141,21,66],"m":"sta","oa":16917,"o":"score_tenthousands_glyph_top"},{"a":7082,"t":"code","b":[141,91,66],"m":"sta","oa":16987,"o":"score_hundredthousands_glyph_top"},{"a":7085,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":7087,"t":"code","b":[141,227,65],"m":"sta","oa":16867,"o":"score_thousands_glyph_bottom"},{"a":7090,"t":"code","b":[141,27,66],"m":"sta","oa":16923,"o":"score_tenthousands_glyph_bottom"},{"a":7093,"t":"code","b":[141,97,66],"m":"sta","oa":16993,"o":"score_hundredthousands_glyph_bottom"},{"a":7096,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7098,"t":"code","b":[133,64],"m":"sta","oa":64,"o":"score_thousands"},{"a":7100,"t":"code","b":[133,69],"m":"sta","oa":69,"o":"score_ten_thousands"},{"a":7102,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":7105,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":7107,"t":"code","b":[141,30,208],"m":"sta","o":"vic_sprite_collision"},{"a":7110,"t":"code","b":[169,36],"m":"lda","o":"#$24"},{"a":7112,"t":"code","b":[141,254,7],"m":"sta","oa":2046,"o":"spr6_pointer"},{"a":7115,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":7117,"t":"code","b":[141,12,208],"m":"sta","o":"vic_sprite6_x"},{"a":7120,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":7122,"t":"code","b":[141,13,208],"m":"sta","o":"vic_sprite6_y"},{"a":7125,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":7128,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":7130,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":7133,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7135,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":7137,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":7139,"t":"code","b":[141,45,208],"m":"sta","o":"vic_sprite6_colour"},{"a":7142,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":7144,"t":"code","b":[141,18,28],"m":"sta","oa":7186,"o":"sprite3_step_opcode"},{"a":7147,"t":"code","b":[234],"m":"nop"},{"a":7148,"t":"code","b":[234],"m":"nop"},{"a":7149,"t":"code","b":[32,45,128],"m":"jsr","oa":32813,"o":"start_score_by_bonus"},{"a":7152,"t":"code","b":[120],"m":"sei"},{"a":7153,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7155,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":7158,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":7160,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":7163,"t":"code","b":[88],"m":"cli"},{"a":7164,"t":"code","b":[76,23,168],"m":"jmp","oa":43031,"o":"reenter_loop_42ef"},{"a":7167,"t":"gap","n":1},{"a":7168,"l":"room1_irq","c":"Room 1's interrupt routine, installed in $0314/$0315 by $1BF3. It runs a chain of jumps, each part ending in a JMP to the next: $AAB2 (when sprite 1's X is $80 or $00, redraws the two arrow pictures at column $23, rows 3 and $14, through $AA9A/$AA83, with screen colour $DC or $4C), $A73F (sprite 7's octopus frames, $3B/$3C every 8 ticks of $64F0), $1C03 here (the guardians' motion), $7000 (sprites 0 and 1 frames), $8215 and $BF30 onward, and finally the KERNAL's $EA31.","t":"code","b":[76,178,170],"m":"jmp","oa":43698,"o":"irq_room1"},{"a":7171,"l":"room1_move_guardians","c":"Moves room 1's guardians once per interrupt: sprite 0 one pixel right, sprite 1 two pixels right, sprite 2 one pixel down ($D005), sprite 3 one pixel left or right ($D006, its X; the opcode at $1C12 is DEC or INC). A sprite that reaches X $20 is switched on with a new height chosen from the raster line ($A944: sprite 0 at Y $94 or $86, $A960: sprite 1 at $5C or $4E), so it comes in on one of two floors at random; sprite 0 is switched off at X $D6, sprite 1 at X $E0. Sprite 2 is switched on at Y $46 and off at $D3. Sprite 3 turns at X $FD or more (DEC, now moving left, shape $26) and at X below $20 (INC, moving right, shape $34); this routine never switches sprite 3 on. Also counts sprite 1's animation timer $64F1. Ends with $1C90: INC $F8, JMP $7000.","t":"code","b":[238,241,100],"m":"inc","oa":25841,"o":"sprite1_anim_count","x":[42839,42847]},{"a":7174,"t":"code","b":[238,0,208],"m":"inc","o":"vic_sprite0_x"},{"a":7177,"t":"code","b":[238,2,208],"m":"inc","o":"vic_sprite1_x"},{"a":7180,"t":"code","b":[238,2,208],"m":"inc","o":"vic_sprite1_x"},{"a":7183,"t":"code","b":[238,5,208],"m":"inc","o":"vic_sprite2_y"},{"a":7186,"l":"sprite3_step_opcode","c":"Self-modified opcode: $CE (DEC $D006) or $EE (INC $D006), the direction of room 1's sprite 3. Written by the set-up ($1BE8: DEC) and by the turns at $1C4B (DEC) and $1C8A (INC).","t":"code","b":[206,6,208],"m":"dec","o":"vic_sprite3_x","x":[7144,7243,7306]},{"a":7189,"t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x"},{"a":7192,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":7194,"t":"code","b":[208,8],"m":"bne","oa":7204,"o":"b_1C24"},{"a":7196,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":7199,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":7201,"t":"code","b":[32,68,169],"m":"jsr","oa":43332,"o":"sprite0_reenter_lane"},{"a":7204,"l":"b_1C24","t":"code","b":[173,2,208],"m":"lda","o":"vic_sprite1_x","x":[7194]},{"a":7207,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":7209,"t":"code","b":[208,8],"m":"bne","oa":7219,"o":"b_1C33"},{"a":7211,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":7214,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":7216,"t":"code","b":[32,96,169],"m":"jsr","oa":43360,"o":"sprite1_reenter_lane"},{"a":7219,"l":"b_1C33","t":"code","b":[173,5,208],"m":"lda","o":"vic_sprite2_y","x":[7209]},{"a":7222,"t":"code","b":[201,70],"m":"cmp","o":"#$46"},{"a":7224,"t":"code","b":[144,8],"m":"bcc","oa":7234,"o":"b_1C42"},{"a":7226,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":7229,"t":"code","b":[9,4],"m":"ora","o":"#$04"},{"a":7231,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":7234,"l":"b_1C42","t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x","x":[7224]},{"a":7237,"t":"code","b":[201,253],"m":"cmp","o":"#$FD"},{"a":7239,"t":"code","b":[144,8],"m":"bcc","oa":7249,"o":"b_1C51"},{"a":7241,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":7243,"t":"code","b":[141,18,28],"m":"sta","oa":7186,"o":"sprite3_step_opcode"},{"a":7246,"t":"code","b":[76,156,28],"m":"jmp","oa":7324,"o":"sprite3_turn_left_shape"},{"a":7249,"l":"b_1C51","t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x","x":[7239,7329]},{"a":7252,"t":"code","b":[201,214],"m":"cmp","o":"#$D6"},{"a":7254,"t":"code","b":[208,8],"m":"bne","oa":7264,"o":"b_1C60"},{"a":7256,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":7259,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":7261,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":7264,"l":"b_1C60","t":"code","b":[173,2,208],"m":"lda","o":"vic_sprite1_x","x":[7254]},{"a":7267,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":7269,"t":"code","b":[208,8],"m":"bne","oa":7279,"o":"b_1C6F"},{"a":7271,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":7274,"t":"code","b":[41,253],"m":"and","o":"#$FD"},{"a":7276,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":7279,"l":"b_1C6F","t":"code","b":[173,5,208],"m":"lda","o":"vic_sprite2_y","x":[7269]},{"a":7282,"t":"code","b":[201,211],"m":"cmp","o":"#$D3"},{"a":7284,"t":"code","b":[144,11],"m":"bcc","oa":7297,"o":"b_1C81"},{"a":7286,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":7289,"t":"code","b":[41,251],"m":"and","o":"#$FB"},{"a":7291,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":7294,"t":"code","b":[76,129,28],"m":"jmp","oa":7297,"o":"b_1C81"},{"a":7297,"l":"b_1C81","t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x","x":[7284,7294]},{"a":7300,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":7302,"t":"code","b":[176,8],"m":"bcs","oa":7312,"o":"irq_tick_then_sprite_frames"},{"a":7304,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":7306,"t":"code","b":[141,18,28],"m":"sta","oa":7186,"o":"sprite3_step_opcode"},{"a":7309,"t":"code","b":[76,164,28],"m":"jmp","oa":7332,"o":"sprite3_turn_right_shape"},{"a":7312,"l":"irq_tick_then_sprite_frames","c":"End of the guardians' step: counts the play frame in $F8 and jumps to $7000 (the next link of the interrupt chain).","t":"code","b":[230,248],"m":"inc","oa":248,"o":"frame_tick","x":[7302,7337]},{"a":7314,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":7317,"l":"dead_jmp_7000","c":"Unreachable bytes after JMP $7000: four NOPs and a second JMP $7000. No jump to $1C95-$1C98 was found.","t":"code","b":[234],"m":"nop"},{"a":7318,"t":"code","b":[234],"m":"nop"},{"a":7319,"t":"code","b":[234],"m":"nop"},{"a":7320,"t":"code","b":[234],"m":"nop"},{"a":7321,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":7324,"l":"sprite3_turn_left_shape","c":"Sets sprite 3's shape to $26 when it turns to move left (X reached $FD, $1C4E), and returns to the checks at $1C51.","t":"code","b":[169,38],"m":"lda","o":"#$26","x":[7246]},{"a":7326,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":7329,"t":"code","b":[76,81,28],"m":"jmp","oa":7249,"o":"b_1C51"},{"a":7332,"l":"sprite3_turn_right_shape","c":"Sets sprite 3's shape to $34 when it turns to move right (X below $20, $1C8D), and goes on to $1C90.","t":"code","b":[169,52],"m":"lda","o":"#$34","x":[7309]},{"a":7334,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":7337,"t":"code","b":[76,144,28],"m":"jmp","oa":7312,"o":"irq_tick_then_sprite_frames"},{"a":7340,"t":"gap","n":4},{"a":7340,"t":"note","c":"Unused zero bytes $1CAC-$1CAF before the sound routines.","note":"outside the tracked image"},{"a":7344,"l":"silence_voice1","c":"Silences SID voice 1: zeroes $D400-$D406 (frequency, pulse width, control, envelope) and sets the volume $D418 to 15. Called before most of the game's effects (23 callers, $1E7E-$87BD).","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[7806,7856,7919,16597,16741,17546,17687,20019,20670,21706,21777,23405,23744,25682,25817,27741,28021,31037,31135,31233,33272,33502,34749]},{"a":7346,"l":"b_1CB2","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[7354]},{"a":7348,"t":"code","b":[153,0,212],"m":"sta","o":"sid_v1_freq_lo,y"},{"a":7351,"t":"code","b":[200],"m":"iny"},{"a":7352,"t":"code","b":[192,7],"m":"cpy","o":"#$07"},{"a":7354,"t":"code","b":[208,246],"m":"bne","oa":7346,"o":"b_1CB2"},{"a":7356,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":7358,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":7361,"t":"code","b":[96],"m":"rts"},{"a":7362,"l":"sound_stub_1cc2","c":"An empty routine (a lone RTS) that six places call after $1CB0 ($1E81, $1EF2, $4E36, $5CC3, $6455, $6D78), in the place where a sound effect would be started. The zero bytes $1CC3-$1CD1 after it are unused.","t":"code","b":[96],"m":"rts","x":[7809,7922,20022,23747,25685,28024]},{"a":7363,"t":"gap","n":15},{"a":7378,"l":"sound_stub_1cd2","c":"Another empty routine (RTS) called where a sound would start, from $1EB3, $4168, $540A, $78C4, $79A2 and $82E1. The bytes after it, $1CD3-$1CE1, hold a sound routine that is never reached.","t":"code","b":[96],"m":"rts","x":[7859,16744,21514,30916,31138,33505]},{"a":7379,"l":"sound_dead_1cd3","c":"Unreachable: NOP, STA $D404 (voice 1 control from A), attack/decay $EE, frequency high 2, RTS: a sound effect left behind the RTS at $1CD2. No jump to $1CD3 was found.","t":"code","b":[234],"m":"nop"},{"a":7380,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":7383,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":7385,"t":"code","b":[141,5,212],"m":"sta","o":"sid_v1_attack_decay"},{"a":7388,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":7390,"t":"code","b":[141,1,212],"m":"sta","o":"sid_v1_freq_hi"},{"a":7393,"t":"code","b":[96],"m":"rts"},{"a":7394,"l":"sound_stub_1ce2","c":"A third empty sound routine (RTS), called from $40D8, $451A and $5514. $1CE3-$1CF1 after it: unused zeros.","t":"code","b":[96],"m":"rts","x":[16600,17690,21780]},{"a":7395,"t":"gap","n":15},{"a":7410,"l":"silence_voice2","c":"Silences SID voice 2: zeroes $D407-$D40D and sets the volume $D418 to 15. 29 callers: the walking and climbing steps (room 1 and room 3's loops, the shared walk $5360/$5390, the ladder step $4B4D/$4B81, room 8's walk), which then play the footstep click $1D04; the main loops of rooms 2, 5, 6, 8 and 9; the jump routines of rooms 1, 11 and 4/7; and the lift check $1FA9.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[8105,17191,17275,17309,17402,18759,18810,18871,18964,19277,19329,21054,21147,21344,21392,23210,23303,25194,25287,27242,27335,27520,27568,30458,30551,34554,34647,37738,37831]},{"a":7412,"l":"b_1CF4","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[7420]},{"a":7414,"t":"code","b":[157,7,212],"m":"sta","o":"sid_v2_freq_lo,x"},{"a":7417,"t":"code","b":[232],"m":"inx"},{"a":7418,"t":"code","b":[224,7],"m":"cpx","o":"#$07"},{"a":7420,"t":"code","b":[208,246],"m":"bne","oa":7412,"o":"b_1CF4"},{"a":7422,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":7424,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":7427,"t":"code","b":[96],"m":"rts"},{"a":7428,"l":"footstep_click","c":"The footstep sound: counts $C7, and on every 11th call plays a short noise on voice 2 (control $81, attack/decay 0, frequency high $FF) and resets the count. Called after $1CF2 by the walking code of each room.","t":"code","b":[230,199],"m":"inc","oa":199,"o":"step_sound_count","x":[17194,17278,18762,18813,19280,19332,21347,21395,27523,27571]},{"a":7430,"t":"code","b":[165,199],"m":"lda","oa":199,"o":"step_sound_count"},{"a":7432,"t":"code","b":[201,11],"m":"cmp","o":"#$0B"},{"a":7434,"t":"code","b":[208,19],"m":"bne","oa":7455,"o":"r_1D1F"},{"a":7436,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":7438,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":7441,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7443,"t":"code","b":[141,12,212],"m":"sta","o":"sid_v2_attack_decay"},{"a":7446,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":7448,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":7451,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7453,"t":"code","b":[133,199],"m":"sta","oa":199,"o":"step_sound_count"},{"a":7455,"l":"r_1D1F","t":"code","b":[96],"m":"rts","x":[7434]},{"a":7456,"l":"dead_sound_1d20","c":"Unreachable entry: sets voice 2 to a sawtooth note (control $21, attack/decay $11), loads $88, four NOPs, calls $08A1 and falls into $1D33. No call to $1D20 was found in a byte scan.","t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":7458,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":7461,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":7463,"t":"code","b":[141,12,212],"m":"sta","o":"sid_v2_attack_decay"},{"a":7466,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":7468,"t":"code","b":[234],"m":"nop"},{"a":7469,"t":"code","b":[234],"m":"nop"},{"a":7470,"t":"code","b":[234],"m":"nop"},{"a":7471,"t":"code","b":[234],"m":"nop"},{"a":7472,"t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on"},{"a":7475,"l":"room1_floor_dispatch","c":"Room 1's per-step floor check (from $08A9): picks the handler for the floor Mr Hat stands on by his Y ($D009): below $5D the top floor ($40C0), below $95 the middle floor ($1EDA), otherwise the bottom floor ($1E20).","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[2217]},{"a":7478,"t":"code","b":[201,93],"m":"cmp","o":"#$5D"},{"a":7480,"t":"code","b":[176,4],"m":"bcs","oa":7486,"o":"b_1D3E"},{"a":7482,"t":"code","b":[32,192,64],"m":"jsr","oa":16576,"o":"room1_top_floor"},{"a":7485,"t":"code","b":[96],"m":"rts"},{"a":7486,"l":"b_1D3E","t":"code","b":[201,149],"m":"cmp","o":"#$95","x":[7480]},{"a":7488,"t":"code","b":[176,4],"m":"bcs","oa":7494,"o":"b_1D46"},{"a":7490,"t":"code","b":[32,218,30],"m":"jsr","oa":7898,"o":"room1_middle_floor"},{"a":7493,"t":"code","b":[96],"m":"rts"},{"a":7494,"l":"b_1D46","t":"code","b":[32,32,30],"m":"jsr","oa":7712,"o":"room1_bottom_floor","x":[7488]},{"a":7497,"t":"code","b":[96],"m":"rts"},{"a":7498,"l":"dead_rts_1d4a","c":"A spare RTS and a zero byte, then at $1D4C STA $D418 / RTS (set the volume from A), which nothing calls (byte scan for JSR/JMP $1D4C found none).","t":"code","b":[96],"m":"rts"},{"a":7499,"t":"code","b":[0],"m":"brk"},{"a":7500,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":7503,"t":"code","b":[96],"m":"rts"},{"a":7504,"l":"room1_kill_hat","c":"Kills Mr Hat: jumps to the death routine $A877 (the frame $27 that crumbles, the fall to the floor, the life lost and the respawn). Called by room 1's hazard checks ($1F32, $1F70-$1F97) and at $4128, $4505. While the player is invulnerable, $1250 has put an RTS at $A877, so this does nothing.","t":"code","b":[76,119,168],"m":"jmp","oa":43127,"o":"hat_death","x":[7986,8055,8063,8071,8079,8087,16680,17669]},{"a":7507,"l":"old_kill_hat","c":"Unreachable: an older death routine behind the JMP at $1D50. It would set the death flag $F6 = $30, show frame $27 in white, copy the death shape ($1DDD), switch Mr Hat off and fall into $1D6D. No reference to $1D53 was found.","t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":7509,"t":"code","b":[133,246],"m":"sta","oa":246,"o":"dying_flag"},{"a":7511,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":7513,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":7516,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":7518,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":7521,"t":"code","b":[32,221,29],"m":"jsr","oa":7645,"o":"show_death_frame"},{"a":7524,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":7527,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":7529,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":7532,"t":"code","b":[234],"m":"nop"},{"a":7533,"l":"respawn_at_entry","c":"Puts Mr Hat back at the room's entry after a death, then takes a life ($1D86): X = $38 if he died on the bottom floor (Y $95 or more), X = $FE otherwise. Called from $A8EA, the death routine's branch for rooms whose screen cell $0400 holds $6E (in the others $A8E6 calls $1D86 directly and the position is left as it is).","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[43242]},{"a":7536,"t":"code","b":[201,149],"m":"cmp","o":"#$95"},{"a":7538,"t":"code","b":[144,9],"m":"bcc","oa":7549,"o":"b_1D7D"},{"a":7540,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":7542,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":7545,"t":"code","b":[32,134,29],"m":"jsr","oa":7558,"o":"lose_life_upper_marks"},{"a":7548,"t":"code","b":[96],"m":"rts"},{"a":7549,"l":"b_1D7D","t":"code","b":[169,254],"m":"lda","o":"#$FE","x":[7538]},{"a":7551,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":7554,"t":"code","b":[32,134,29],"m":"jsr","oa":7558,"o":"lose_life_upper_marks"},{"a":7557,"t":"code","b":[96],"m":"rts"},{"a":7558,"l":"lose_life_upper_marks","c":"Takes one life: hides the first life mark still shown, upper row first: if the screen-RAM byte $07B9 (row 23, column 33) is $BC it becomes $CC, else $07BA (column 34); when both are gone it hands over to $1700 for the lower row and the game-over flag. With each mark it also writes $CC to the background register $D021, reads $D01E (clearing the sprite collision latch), gives Mr Hat his colour $0B back and the standing frame for his floor ($1D9D).","t":"code","b":[173,185,7],"m":"lda","oa":1977,"o":"lives_mark_1","x":[7545,7554,43238]},{"a":7561,"t":"code","b":[201,188],"m":"cmp","o":"#$BC"},{"a":7563,"t":"code","b":[208,40],"m":"bne","oa":7605,"o":"b_1DB5"},{"a":7565,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":7567,"t":"code","b":[141,185,7],"m":"sta","oa":1977,"o":"lives_mark_1"},{"a":7570,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":7573,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":7576,"t":"code","b":[234],"m":"nop"},{"a":7577,"t":"code","b":[234],"m":"nop"},{"a":7578,"t":"code","b":[234],"m":"nop"},{"a":7579,"t":"code","b":[234],"m":"nop"},{"a":7580,"t":"code","b":[234],"m":"nop"},{"a":7581,"l":"restore_hat_after_death","c":"Gives Mr Hat his normal colour ($0B in $D02B) and a standing frame: $2C (facing right) on the bottom floor, Y $95 or more, $2F (facing left) higher up.","t":"code","b":[169,11],"m":"lda","o":"#$0B","x":[7628]},{"a":7583,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":7586,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":7589,"t":"code","b":[201,149],"m":"cmp","o":"#$95"},{"a":7591,"t":"code","b":[144,6],"m":"bcc","oa":7599,"o":"b_1DAF"},{"a":7593,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":7595,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":7598,"t":"code","b":[96],"m":"rts"},{"a":7599,"l":"b_1DAF","t":"code","b":[169,47],"m":"lda","o":"#$2F","x":[7591]},{"a":7601,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":7604,"t":"code","b":[96],"m":"rts"},{"a":7605,"l":"b_1DB5","t":"code","b":[173,186,7],"m":"lda","oa":1978,"o":"lives_mark_2","x":[7563]},{"a":7608,"t":"code","b":[201,188],"m":"cmp","o":"#$BC"},{"a":7610,"t":"code","b":[208,20],"m":"bne","oa":7632,"o":"b_1DD0"},{"a":7612,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":7614,"t":"code","b":[141,186,7],"m":"sta","oa":1978,"o":"lives_mark_2"},{"a":7617,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":7620,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":7623,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":7625,"t":"code","b":[141,30,208],"m":"sta","o":"vic_sprite_collision"},{"a":7628,"t":"code","b":[32,157,29],"m":"jsr","oa":7581,"o":"restore_hat_after_death"},{"a":7631,"t":"code","b":[96],"m":"rts"},{"a":7632,"l":"b_1DD0","t":"code","b":[32,0,23],"m":"jsr","oa":5888,"o":"lose_life_lower_marks","x":[7610]},{"a":7635,"t":"code","b":[234],"m":"nop"},{"a":7636,"t":"code","b":[234],"m":"nop"},{"a":7637,"t":"code","b":[234],"m":"nop"},{"a":7638,"t":"code","b":[234],"m":"nop"},{"a":7639,"t":"code","b":[234],"m":"nop"},{"a":7640,"t":"code","b":[234],"m":"nop"},{"a":7641,"t":"code","b":[234],"m":"nop"},{"a":7642,"t":"code","b":[234],"m":"nop"},{"a":7643,"t":"code","b":[234],"m":"nop"},{"a":7644,"t":"code","b":[96],"m":"rts"},{"a":7645,"l":"show_death_frame","c":"Starts the death picture: saves Mr Hat's current frame in $1E05, copies the 64-byte shape at $ACD8 into the sprite block $27 ($09C0), and points sprite 4 at it. Called by the death routine at $A87D (and from the unreachable old death routine at $1D61).","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[7521,43133]},{"a":7648,"t":"code","b":[141,5,30],"m":"sta","oa":7685,"o":"death_saved_frame"},{"a":7651,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":7653,"l":"b_1DE5","t":"code","b":[189,216,172],"m":"lda","oa":44248,"o":"sprite_hat_death,x","x":[7662]},{"a":7656,"t":"code","b":[157,192,9],"m":"sta","oa":2496,"o":"spr_27_hat_dying,x"},{"a":7659,"t":"code","b":[232],"m":"inx"},{"a":7660,"t":"code","b":[224,64],"m":"cpx","o":"#$40"},{"a":7662,"t":"code","b":[208,245],"m":"bne","oa":7653,"o":"b_1DE5"},{"a":7664,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":7666,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":7669,"t":"code","b":[96],"m":"rts"},{"a":7670,"t":"gap","n":1},{"a":7671,"l":"delay_1df7","c":"A busy-wait of 48 x 256 loop passes, the pace of Mr Hat's sinking to the floor in the death routine ($A8B2, $A8CB).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[43186,43211]},{"a":7673,"l":"b_1DF9","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[7681]},{"a":7675,"l":"b_1DFB","t":"code","b":[200],"m":"iny","x":[7676]},{"a":7676,"t":"code","b":[208,253],"m":"bne","oa":7675,"o":"b_1DFB"},{"a":7678,"t":"code","b":[232],"m":"inx"},{"a":7679,"t":"code","b":[224,48],"m":"cpx","o":"#$30"},{"a":7681,"t":"code","b":[208,246],"m":"bne","oa":7673,"o":"b_1DF9"},{"a":7683,"t":"code","b":[96],"m":"rts"},{"a":7684,"t":"gap","n":1},{"a":7684,"t":"note","c":"Unused zero byte before the variables at $1E05.","note":"outside the tracked image"},{"a":7685,"l":"death_saved_frame","c":"Mr Hat's sprite frame at the moment of death, saved by $1DDD. The death routine reads it at $A880: if it was $32 or $33 (his climbing frames, set by the ladder step $4B20 and the room set-ups that place him on a ladder) he is not made to sink to the floor ($A8A0 is skipped).","t":"byte","b":[44],"x":[7648,43136]},{"a":7686,"l":"range_lo_or_column","c":"Shared parameter, two uses: the left end of the X range tested by $A97C (X register in, compared with Mr Hat's $D008), and the saved column X of the picture routines $A9D2, $B800, $B83B, $BE60 and $BEAB, which draw a picture in several passes.","t":"byte","b":[200],"x":[43407,43421,43478,43510,43533,47104,47140,47163,47199,48736,48772,48811,48847]},{"a":7687,"l":"range_hi_or_row","c":"Shared parameter: the right end (exclusive) of $A97C's X range, or the saved row Y of the picture routines $A9D2, $B800, $B83B, $BE60 and $BEAB.","t":"byte","b":[236],"x":[43410,43416,43481,43513,43536,47107,47143,47166,47202,48739,48775,48814,48850]},{"a":7688,"l":"var_1e08","c":"Written with $FA ($6084, $7074, $96A6), $CA ($711D) or A ($B982), and read by no instruction in the traced code (checked for indexed access too); its use is unknown. $1E09-$1E11 after it: unused zeros.","t":"byte","b":[250,0,0,0,0,0,0,0],"x":[24708,28788,28957,38566,47490]},{"a":7696,"t":"byte","b":[0,0]},{"a":7698,"l":"table_1e12","c":"Twelve bytes, $0F $D2 $0C $8F $0B $DA $0A $8F $05 $47 $02 $A3, read by no instruction found (also not through an index). As big-endian words they would be SID frequencies falling in steps ($0FD2 ... $02A3), perhaps a tune or effect left unused. $1E1E-$1E1F: zeros.","t":"byte","b":[15,210,12,143,11,218,10,143]},{"a":7706,"t":"byte","b":[5,71,2,163,0,0]},{"a":7712,"l":"room1_bottom_floor","c":"Room 1, bottom floor (Y $CC), run on each step: first $A9B8 kills Mr Hat if his X is in $C4-$F3 while he stands on the floor, then by his X ($D008, 8-bit): at $20 he is pushed back right (the left wall); at $FF in the air he is moved back 6 pixels (the right wall); when the 8-bit X has wrapped to $00 on the floor, or is $01 at any height, $4000 runs (the lift) and sprite 5's colour $D02C (the lift cabin) is set to 3, while X $00 in the air moves him back 6 pixels; at $78, while the screen cell $072B is $B2, he takes the object there: cells $072B/$0703 are blanked ($CC), $FC = $20, $D022 is written ($2C, then INC), and $1CB0 (voice 1 off) and $1CC2 (an empty RTS) are called, so no sound plays; at $A0, while cell $06BC is $2C (the closed door), he opens it if $FC = $20 (cells $06BC/$06BD and $0734/$0735 become $1C; $1CB0 and the empty $1CD2 again) or is held back a pixel; at $50 with $BD = $60 it writes $D015 OR $C0 into the background colour $D022 (probably meant for $D015) and jumps to $44C0. Otherwise the guardian check $1F70.","t":"code","b":[32,184,169],"m":"jsr","oa":43448,"o":"check_spot_c4_f4","x":[7494]},{"a":7715,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":7717,"t":"code","b":[208,4],"m":"bne","oa":7723,"o":"b_1E2B"},{"a":7719,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":7722,"t":"code","b":[96],"m":"rts"},{"a":7723,"l":"b_1E2B","t":"code","b":[201,255],"m":"cmp","o":"#$FF","x":[7717]},{"a":7725,"t":"code","b":[208,18],"m":"bne","oa":7745,"o":"b_1E41"},{"a":7727,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":7730,"t":"code","b":[201,204],"m":"cmp","o":"#$CC"},{"a":7732,"t":"code","b":[240,11],"m":"beq","oa":7745,"o":"b_1E41"},{"a":7734,"l":"b_1E36","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[7757]},{"a":7736,"l":"b_1E38","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[7742]},{"a":7739,"t":"code","b":[232],"m":"inx"},{"a":7740,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":7742,"t":"code","b":[208,248],"m":"bne","oa":7736,"o":"b_1E38"},{"a":7744,"t":"code","b":[96],"m":"rts"},{"a":7745,"l":"b_1E41","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[7725,7732]},{"a":7748,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":7750,"t":"code","b":[208,16],"m":"bne","oa":7768,"o":"b_1E58"},{"a":7752,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":7755,"t":"code","b":[201,204],"m":"cmp","o":"#$CC"},{"a":7757,"t":"code","b":[208,231],"m":"bne","oa":7734,"o":"b_1E36"},{"a":7759,"l":"b_1E4F","t":"code","b":[32,0,64],"m":"jsr","oa":16384,"o":"room1_lift_ride","x":[7770]},{"a":7762,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":7764,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":7767,"t":"code","b":[96],"m":"rts"},{"a":7768,"l":"b_1E58","t":"code","b":[201,1],"m":"cmp","o":"#$01","x":[7750]},{"a":7770,"t":"code","b":[240,243],"m":"beq","oa":7759,"o":"b_1E4F"},{"a":7772,"t":"code","b":[201,120],"m":"cmp","o":"#$78"},{"a":7774,"t":"code","b":[208,36],"m":"bne","oa":7812,"o":"b_1E84"},{"a":7776,"t":"code","b":[174,43,7],"m":"ldx","oa":1835,"o":"a_072B"},{"a":7779,"t":"code","b":[224,178],"m":"cpx","o":"#$B2"},{"a":7781,"t":"code","b":[208,29],"m":"bne","oa":7812,"o":"b_1E84"},{"a":7783,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":7785,"t":"code","b":[141,43,7],"m":"sta","oa":1835,"o":"a_072B"},{"a":7788,"t":"code","b":[141,3,7],"m":"sta","oa":1795,"o":"a_0703"},{"a":7791,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":7793,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":7796,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":7799,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":7801,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":7803,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":7806,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":7809,"t":"code","b":[32,194,28],"m":"jsr","oa":7362,"o":"sound_stub_1cc2"},{"a":7812,"l":"b_1E84","t":"code","b":[201,160],"m":"cmp","o":"#$A0","x":[7774,7781]},{"a":7814,"t":"code","b":[208,54],"m":"bne","oa":7870,"o":"b_1EBE"},{"a":7816,"t":"code","b":[174,188,6],"m":"ldx","oa":1724,"o":"a_06BC"},{"a":7819,"t":"code","b":[224,44],"m":"cpx","o":"#$2C"},{"a":7821,"t":"code","b":[208,47],"m":"bne","oa":7870,"o":"b_1EBE"},{"a":7823,"t":"code","b":[165,252],"m":"lda","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":7825,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":7827,"t":"code","b":[208,37],"m":"bne","oa":7866,"o":"b_1EBA"},{"a":7829,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":7831,"l":"b_1E97","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[7854]},{"a":7833,"t":"code","b":[157,188,6],"m":"sta","oa":1724,"o":"a_06BC,x"},{"a":7836,"t":"code","b":[157,188,6],"m":"sta","oa":1724,"o":"a_06BC,x"},{"a":7839,"t":"code","b":[157,188,6],"m":"sta","oa":1724,"o":"a_06BC,x"},{"a":7842,"t":"code","b":[157,188,6],"m":"sta","oa":1724,"o":"a_06BC,x"},{"a":7845,"t":"code","b":[157,52,7],"m":"sta","oa":1844,"o":"f_0734,x"},{"a":7848,"t":"code","b":[157,52,7],"m":"sta","oa":1844,"o":"f_0734,x"},{"a":7851,"t":"code","b":[232],"m":"inx"},{"a":7852,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":7854,"t":"code","b":[208,231],"m":"bne","oa":7831,"o":"b_1E97"},{"a":7856,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":7859,"t":"code","b":[32,210,28],"m":"jsr","oa":7378,"o":"sound_stub_1cd2"},{"a":7862,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":7865,"t":"code","b":[96],"m":"rts"},{"a":7866,"l":"b_1EBA","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[7827]},{"a":7869,"t":"code","b":[96],"m":"rts"},{"a":7870,"l":"b_1EBE","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[7814,7821]},{"a":7873,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":7875,"t":"code","b":[208,17],"m":"bne","oa":7894,"o":"b_1ED6"},{"a":7877,"t":"code","b":[165,189],"m":"lda","oa":189,"o":"flag_obj_00bd"},{"a":7879,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":7881,"t":"code","b":[208,11],"m":"bne","oa":7894,"o":"b_1ED6"},{"a":7883,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":7886,"t":"code","b":[9,192],"m":"ora","o":"#$C0"},{"a":7888,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":7891,"t":"code","b":[76,192,68],"m":"jmp","oa":17600,"o":"room1_door_exit"},{"a":7894,"l":"b_1ED6","t":"code","b":[32,112,31],"m":"jsr","oa":8048,"o":"room1_guardian_touch","x":[7875,7881]},{"a":7897,"t":"code","b":[96],"m":"rts"},{"a":7898,"l":"room1_middle_floor","c":"Room 1, middle floor (Y $94), run on each step: at X $20 pushed back right; at X $30, while cell $060A is $B7, he takes the object there: $1CB0 (voice 1 off) and the empty $1CC2, background colour $D022 stepped three times, cells $05E2/$060A blanked, the status cells $07BE/$07E6 lit ($7C) and $39 = $40. With X in $80-$A7 and Y in $94-$A9 he is killed ($1D50, a hazard). At X $FF in the air he is moved back 6 pixels; X $00 on the floor, or $01 at any height, runs $4000 (the lift) and sets sprite 5's colour $D02C to 3; X $00 in the air moves him back 6 pixels. Then the guardian check $1F70.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[7490]},{"a":7901,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":7903,"t":"code","b":[208,3],"m":"bne","oa":7908,"o":"b_1EE4"},{"a":7905,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":7908,"l":"b_1EE4","t":"code","b":[201,48],"m":"cmp","o":"#$30","x":[7903]},{"a":7910,"t":"code","b":[208,49],"m":"bne","oa":7961,"o":"b_1F19"},{"a":7912,"t":"code","b":[174,10,6],"m":"ldx","oa":1546,"o":"a_060A"},{"a":7915,"t":"code","b":[224,183],"m":"cpx","o":"#$B7"},{"a":7917,"t":"code","b":[208,42],"m":"bne","oa":7961,"o":"b_1F19"},{"a":7919,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":7922,"t":"code","b":[32,194,28],"m":"jsr","oa":7362,"o":"sound_stub_1cc2"},{"a":7925,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":7927,"l":"b_1EF7","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[7933]},{"a":7930,"t":"code","b":[200],"m":"iny"},{"a":7931,"t":"code","b":[192,3],"m":"cpy","o":"#$03"},{"a":7933,"t":"code","b":[208,248],"m":"bne","oa":7927,"o":"b_1EF7"},{"a":7935,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":7937,"t":"code","b":[141,226,5],"m":"sta","oa":1506,"o":"a_05E2"},{"a":7940,"t":"code","b":[141,10,6],"m":"sta","oa":1546,"o":"a_060A"},{"a":7943,"t":"code","b":[234],"m":"nop"},{"a":7944,"t":"code","b":[234],"m":"nop"},{"a":7945,"t":"code","b":[234],"m":"nop"},{"a":7946,"t":"code","b":[234],"m":"nop"},{"a":7947,"t":"code","b":[234],"m":"nop"},{"a":7948,"t":"code","b":[234],"m":"nop"},{"a":7949,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":7951,"t":"code","b":[141,190,7],"m":"sta","oa":1982,"o":"carried_item_cell_top"},{"a":7954,"t":"code","b":[141,230,7],"m":"sta","oa":2022,"o":"carried_item_cell_bottom"},{"a":7957,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":7959,"t":"code","b":[133,57],"m":"sta","oa":57,"o":"flag_room1_item_mid"},{"a":7961,"l":"b_1F19","t":"code","b":[201,128],"m":"cmp","o":"#$80","x":[7910,7917]},{"a":7963,"t":"code","b":[176,3],"m":"bcs","oa":7968,"o":"b_1F20"},{"a":7965,"t":"code","b":[76,54,31],"m":"jmp","oa":7990,"o":"room1_middle_edges"},{"a":7968,"l":"b_1F20","t":"code","b":[201,168],"m":"cmp","o":"#$A8","x":[7963]},{"a":7970,"t":"code","b":[176,18],"m":"bcs","oa":7990,"o":"room1_middle_edges"},{"a":7972,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":7975,"t":"code","b":[201,148],"m":"cmp","o":"#$94"},{"a":7977,"t":"code","b":[176,3],"m":"bcs","oa":7982,"o":"b_1F2E"},{"a":7979,"t":"code","b":[76,54,31],"m":"jmp","oa":7990,"o":"room1_middle_edges"},{"a":7982,"l":"b_1F2E","t":"code","b":[201,170],"m":"cmp","o":"#$AA","x":[7977]},{"a":7984,"t":"code","b":[176,4],"m":"bcs","oa":7990,"o":"room1_middle_edges"},{"a":7986,"t":"code","b":[32,80,29],"m":"jsr","oa":7504,"o":"room1_kill_hat"},{"a":7989,"t":"code","b":[96],"m":"rts"},{"a":7990,"l":"room1_middle_edges","c":"The right-edge part of the middle-floor check $1EDA (reached from $1F1D, $1F22, $1F2B and $1F30 when Mr Hat is outside the hazard): wall at X $FF unless he is at floor height $94, lift ($4000) at X $00 on the floor or X $01 at any height, X $00 in the air moved back 6 pixels, then the guardian check.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[7965,7970,7979,7984]},{"a":7993,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":7995,"t":"code","b":[208,18],"m":"bne","oa":8015,"o":"b_1F4F"},{"a":7997,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":8000,"t":"code","b":[201,148],"m":"cmp","o":"#$94"},{"a":8002,"t":"code","b":[240,11],"m":"beq","oa":8015,"o":"b_1F4F"},{"a":8004,"l":"b_1F44","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[8027]},{"a":8006,"l":"b_1F46","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[8012]},{"a":8009,"t":"code","b":[232],"m":"inx"},{"a":8010,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":8012,"t":"code","b":[208,248],"m":"bne","oa":8006,"o":"b_1F46"},{"a":8014,"t":"code","b":[96],"m":"rts"},{"a":8015,"l":"b_1F4F","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[7995,8002]},{"a":8018,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":8020,"t":"code","b":[208,15],"m":"bne","oa":8037,"o":"b_1F65"},{"a":8022,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":8025,"t":"code","b":[201,148],"m":"cmp","o":"#$94"},{"a":8027,"t":"code","b":[208,231],"m":"bne","oa":8004,"o":"b_1F44"},{"a":8029,"l":"b_1F5D","t":"code","b":[32,0,64],"m":"jsr","oa":16384,"o":"room1_lift_ride","x":[8039]},{"a":8032,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":8034,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":8037,"l":"b_1F65","t":"code","b":[201,1],"m":"cmp","o":"#$01","x":[8020]},{"a":8039,"t":"code","b":[240,244],"m":"beq","oa":8029,"o":"b_1F5D"},{"a":8041,"t":"code","b":[32,112,31],"m":"jsr","oa":8048,"o":"room1_guardian_touch"},{"a":8044,"t":"code","b":[96],"m":"rts"},{"a":8045,"t":"gap","n":3},{"a":8048,"l":"room1_guardian_touch","c":"Kills Mr Hat ($1D50) when the sprite-sprite collision register $D01E reads exactly $11, $12, $14, $18 or $58: sprite 4 together with sprite 0, 1, 2 or 3, or with sprites 3 and 6. Reading $D01E also clears it. Any other combination (two guardians at once, $13, or sprite 4 with 5 or 7) does not kill. Called by both floor checks and at $41A1.","t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision","x":[7894,8041,16801]},{"a":8051,"t":"code","b":[201,17],"m":"cmp","o":"#$11"},{"a":8053,"t":"code","b":[208,4],"m":"bne","oa":8059,"o":"b_1F7B"},{"a":8055,"t":"code","b":[32,80,29],"m":"jsr","oa":7504,"o":"room1_kill_hat"},{"a":8058,"t":"code","b":[96],"m":"rts"},{"a":8059,"l":"b_1F7B","t":"code","b":[201,18],"m":"cmp","o":"#$12","x":[8053]},{"a":8061,"t":"code","b":[208,4],"m":"bne","oa":8067,"o":"b_1F83"},{"a":8063,"t":"code","b":[32,80,29],"m":"jsr","oa":7504,"o":"room1_kill_hat"},{"a":8066,"t":"code","b":[96],"m":"rts"},{"a":8067,"l":"b_1F83","t":"code","b":[201,20],"m":"cmp","o":"#$14","x":[8061]},{"a":8069,"t":"code","b":[208,4],"m":"bne","oa":8075,"o":"b_1F8B"},{"a":8071,"t":"code","b":[32,80,29],"m":"jsr","oa":7504,"o":"room1_kill_hat"},{"a":8074,"t":"code","b":[96],"m":"rts"},{"a":8075,"l":"b_1F8B","t":"code","b":[201,24],"m":"cmp","o":"#$18","x":[8069]},{"a":8077,"t":"code","b":[208,4],"m":"bne","oa":8083,"o":"b_1F93"},{"a":8079,"t":"code","b":[32,80,29],"m":"jsr","oa":7504,"o":"room1_kill_hat"},{"a":8082,"t":"code","b":[96],"m":"rts"},{"a":8083,"l":"b_1F93","t":"code","b":[201,88],"m":"cmp","o":"#$58","x":[8077]},{"a":8085,"t":"code","b":[208,4],"m":"bne","oa":8091,"o":"r_1F9B"},{"a":8087,"t":"code","b":[32,80,29],"m":"jsr","oa":7504,"o":"room1_kill_hat"},{"a":8090,"t":"code","b":[96],"m":"rts"},{"a":8091,"l":"r_1F9B","t":"code","b":[96],"m":"rts","x":[8085]},{"a":8092,"l":"clear_dying_sprites_off","c":"Clears the death flag $F6 and switches every sprite off ($D015 AND #$00). Called from $451F.","t":"byte","b":[169,0,133,246,173,21,208,41],"x":[17695]},{"a":8100,"t":"byte","b":[0,141,21,208,96]},{"a":8105,"l":"lift_start_check","c":"Called first by the lift routine $4000: silences voice 2, fires the room-1 timed event $44E0 when the timer $F9:$F8 reads $20:$F0, and, once that event has run (its first byte rewritten to RTS) and Mr Hat is on the bottom floor (Y $CC), sets sprite 5's colour to 3, writes RTS over $1FBB so this part runs only once (put back to LDA by $706A), and jumps to $4469 in room 1's loop. The wait for $44E0 to become RTS ($1FBB-$1FD3) looks unreachable in play: $44E0 turns into RTS only through timer_oneshot_44e0, which needs $F9 = $20, and in room 1 $F9 gets $20 only at $44C2, on the path that leaves at once for room 3 (whose set-up clears $F8-$FF at $4894); room 1 has no ladder to step $F9 ($4B38, $4B6C). Traced, not tested.","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[16384]},{"a":8108,"t":"code","b":[165,249],"m":"lda","oa":249,"o":"frame_tick_hi"},{"a":8110,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":8112,"t":"code","b":[208,9],"m":"bne","oa":8123,"o":"lift_once_check"},{"a":8114,"t":"code","b":[165,248],"m":"lda","oa":248,"o":"frame_tick"},{"a":8116,"t":"code","b":[201,240],"m":"cmp","o":"#$F0"},{"a":8118,"t":"code","b":[208,3],"m":"bne","oa":8123,"o":"lift_once_check"},{"a":8120,"t":"code","b":[32,224,68],"m":"jsr","oa":17632,"o":"timer_oneshot_44e0"},{"a":8123,"l":"lift_once_check","c":"The self-modified first byte of the once-only part of $1FA9: $AD (LDA $44E0) normally, $60 (RTS) after it has run ($1FD0); $706A restores $AD.","t":"code","b":[173,224,68],"m":"lda","oa":17632,"o":"timer_oneshot_44e0","x":[8112,8118,8144,28778]},{"a":8126,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":8128,"t":"code","b":[208,20],"m":"bne","oa":8150,"o":"rts_1fd6"},{"a":8130,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":8133,"t":"code","b":[201,204],"m":"cmp","o":"#$CC"},{"a":8135,"t":"code","b":[208,13],"m":"bne","oa":8150,"o":"rts_1fd6"},{"a":8137,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":8139,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":8142,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":8144,"t":"code","b":[141,187,31],"m":"sta","oa":8123,"o":"lift_once_check"},{"a":8147,"t":"code","b":[76,105,68],"m":"jmp","oa":17513,"o":"room1_gameover_check"},{"a":8150,"l":"rts_1fd6","c":"RTS that ends $1FA9 and is also the branch target of $1FDE.","t":"code","b":[96],"m":"rts","x":[8128,8135,8158]},{"a":8151,"l":"after_death_continue","c":"Called by room 1's loop when $F6 = $30 (a death has happened): $4D50 puts Mr Hat back at the room's entry (X $38 facing right on the bottom floor, else X $FF facing left) and clears $F6; then, if $D8 = $40 (no lives left), it jumps to $447D: the title, then a new game.","t":"code","b":[32,80,77],"m":"jsr","oa":19792,"o":"room1_respawn_position","x":[17141]},{"a":8154,"t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8"},{"a":8156,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":8158,"t":"code","b":[208,246],"m":"bne","oa":8150,"o":"rts_1fd6"},{"a":8160,"t":"code","b":[76,125,68],"m":"jmp","oa":17533,"o":"game_over_from_respawn"},{"a":8163,"l":"rts_1fe3","c":"A spare RTS after $1FD7, never reached.","t":"byte","b":[96]},{"a":8164,"l":"sound_stub_1fe4","c":"An empty routine (RTS), called from $44DA in the timed event.","t":"code","b":[96],"m":"rts","x":[17626]},{"a":8165,"l":"junk_1fe5","c":"Leftover bytes $99 $8D $14 $03 $20 $B0 $1C $60 and zeros: the end of an older routine (STA $0314 ... JSR $1CB0, RTS) cut off at its start; not reached.","t":"byte","b":[153,141,20,3,32,176,28,96]},{"a":8173,"t":"byte","b":[0,0,0]},{"a":8176,"l":"dead_lift_check_1ff0","c":"Unreachable copy of a floor-edge check like $1F4F: if Mr Hat's Y is $5C it calls the lift $4000 and sets $D02C = 3; otherwise its BNE goes to $1FDF, the operand byte of the BNE at $1FDE, where the bytes would run as INC $4C,X / ADC $6044,X / RTS. No call to $1FF0 was found.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":8179,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":8181,"t":"code","b":[208,232],"m":"bne","oa":8159,"o":"b_1FDF"},{"a":8183,"t":"code","b":[32,0,64],"m":"jsr","oa":16384,"o":"room1_lift_ride"},{"a":8186,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":8188,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":8191,"t":"code","b":[96],"m":"rts"},{"a":8192,"t":"gap","n":7936},{"a":15656,"t":"note","l":"score_digit_100k_top","c":"Status line digits, two bitmap cells each (rows 23 and 24): the score's hundred-thousands $3D28/$3E68, ten-thousands $3D30/$3E70 and thousands $3D38/$3E78 (the three lower digits never change), ROOM $3D80/$3EC0, STAGE $3DB8/$3EF8, drawn from the glyphs at $1600.","note":"outside the tracked image","x":[6861,16989,32839]},{"a":15664,"t":"note","l":"score_digit_10k_top","note":"outside the tracked image","x":[16919,16977,32842]},{"a":15672,"t":"note","l":"score_digit_1k_top","note":"outside the tracked image","x":[16863,16907,32845]},{"a":15744,"t":"note","l":"status_room_digit_top","note":"outside the tracked image","x":[6887,18473,19877,20172,25096,29919,32910,33739,34089,36927,38319]},{"a":15800,"t":"note","l":"status_stage_digit_top","note":"outside the tracked image","x":[6890,33029,33049,33785,34070]},{"a":15976,"t":"note","l":"score_digit_100k_bottom","note":"outside the tracked image","x":[6874,16995,32860]},{"a":15984,"t":"note","l":"score_digit_10k_bottom","note":"outside the tracked image","x":[16925,16983,32863]},{"a":15992,"t":"note","l":"score_digit_1k_bottom","note":"outside the tracked image","x":[16869,16913,32866]},{"a":16064,"t":"note","l":"status_room_digit_bottom","note":"outside the tracked image","x":[6903,18479,19883,20178,25102,29925,32916,33745,34098,36933,38325]},{"a":16120,"t":"note","l":"status_stage_digit_bottom","note":"outside the tracked image","x":[6906,33035,33055,33791,34076]},{"a":16128,"l":"bitmap_status_tail","c":"The last 64 bytes of the play bitmap ($2000-$3F3F): character row 24, columns 32-39, the bottom-right corner of the status line. Output, not data: room 1's set-up writes the lower life marks into $3F08-$3F17 and clears $3F18-$3F27. The title's bitmap clear $16A3 stops at $3EFF, so these bytes survive a return to the title.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16136,"l":"bitmap_life_marks_low","c":"Bitmap cells of row 24, columns 33-34: the lower two life marks, copied from $1449 by $1A50-$1A5E (the upper two go to $3DC8). Whether each shows is decided by its screen-RAM byte $07E1/$07E2.","t":"byte","b":[0,0,60,60,60,0,126,0],"x":[6744]},{"a":16144,"t":"byte","b":[0,0,60,60,60,0,126,0]},{"a":16152,"l":"bitmap_status_clear","c":"Bitmap cells of row 24, columns 35-36, cleared to zero by room 1's set-up ($1A6D-$1A78), next to the life marks; $3F28-$3F3F after them (columns 37-39) are not written by the traced code.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[6770]},{"a":16160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16168,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16176,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16184,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16192,"l":"draw_count","c":"Scratch byte of the drawing routines at $A4AA-$A61C: the loop counter of the background fill $A4AA (0 to $14, twenty two-cell columns), the quotient of X / 16 in $A573, a saved $24 in $A50A, and a column offset in $A52F/$A5DC.","t":"byte","b":[20],"x":[42158,42192,42195,42256,42267,42295,42336,42341,42346,42377,42395,42401,42468,42509,42514,42519]},{"a":16193,"l":"bg_screen_byte","c":"Screen-RAM fill byte of the room background (the colour pair of the bitmap pattern): $A573 stores Y here, and $A4EF hands it to the screen fill $A477 through $27. Also a saved $25 in $A50A.","t":"byte","b":[186],"x":[42223,42261,42272,42362]},{"a":16194,"l":"bg_colour_byte","c":"Colour-RAM fill byte of the room background: $A573 stores X here and divides it by 16 (so X = $62 gives 6), and $A4F4 hands it to the colour-RAM fill $A48B through $28.","t":"byte","b":[6],"x":[42228,42359,42380,42387,42392,42404]},{"a":16195,"l":"bg_fill_ptr_lo","c":"Low byte of the bitmap pointer of the background fill $A4AA, starting at $2000 and advanced by 16 bytes (two cells) per column.","t":"byte","b":[48],"x":[42163,42179,42203,42208]},{"a":16196,"l":"bg_fill_ptr_hi","c":"High byte of the background fill's bitmap pointer (starts at $20, incremented on carry at $A4E5).","t":"byte","b":[33],"x":[42168,42184,42213]},{"a":16197,"l":"saved_src_lo","c":"$A573 saves the caller's $27 (the pattern pointer, e.g. $60 of $3F60) here while it works, and restores it at $A5AA before the fill $A4AA.","t":"byte","b":[96],"x":[42367,42410]},{"a":16198,"l":"saved_src_hi","c":"Saved $28 of $A573 (e.g. $3F), restored at $A5AF.","t":"byte","b":[63],"x":[42372,42415]},{"a":16199,"l":"rect_column","c":"Column of the rectangle routines: $A620 takes it from X and adds it to the screen address; $A690 restores it from $3F49 and steps the bitmap address by 8 per column.","t":"byte","b":[15],"x":[42528,42573,42582,42608,42649,42687]},{"a":16200,"l":"rect_row","c":"Row of the rectangle routines: $A620 takes it from Y and counts it down while adding 40 per row to the screen address ($A634-$A645); $A690 restores it from $3F4A and adds 320 per row for the bitmap.","t":"byte","b":[0],"x":[42531,42542,42548,42562,42602,42643,42660,42676]},{"a":16201,"l":"rect_column_saved","c":"Copy of the rectangle's column kept by $A650, so that the bitmap pass $A690 can start again from it. The colour-RAM pass at $A665 that would also reread it ($A66D) is unreachable since $A663 became RTS.","t":"byte","b":[15],"x":[42576,42605,42646]},{"a":16202,"l":"rect_row_saved","c":"Copy of the rectangle's row kept by $A631 (in $A620), reused by $A690 to address the bitmap. The reader at $A667 is in the dead colour-RAM half ($A665-$A67E, unreachable since $A663 became RTS).","t":"byte","b":[16],"x":[42545,42599,42640]},{"a":16203,"l":"rect_count","c":"Down-counter of $A690: first the columns while it moves the bitmap pointer across ($A6C2-$A6DB), then the width while it multiplies $23 by 8 ($A6E0-$A6F5). $3F4C-$3F5F after it: zeros, not used.","t":"byte","b":[0],"x":[42690,42693,42698,42720,42727,42738]},{"a":16204,"t":"gap","n":20},{"a":16224,"l":"gfx_brick_pattern","c":"The room background pattern: 16 bytes, two bitmap cells of bricks. $56B0 points $27/$28 at it and calls $A573, and $A4AA repeats it over the whole play area (character rows 0-22, all 40 columns); the room's colours come from $3F41/$3F42. It lies past the end of the bitmap ($3F3F), where the VIC does not show it. $3F70-$3F7F after it: $FF then zeros, not referenced.","t":"byte","b":[255,195,194,206,136,136,152,111]},{"a":16232,"t":"byte","b":[255,224,60,39,32,32,121,207]},{"a":16240,"t":"byte","b":[255,0,0,0,0,0,0,0]},{"a":16248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16256,"l":"gfx_mr_hat_logo","c":"The 'Mr.Hat' logo at the left of the status line: a bitmap picture of 8 x 2 cells (128 bytes, $3F80-$3FBF the top row, $3FC0-$3FFF the bottom row). $A702 fills its screen bytes with $9C (it also passes $4C for colour RAM, but that pass, after the RTS at $A663, never runs) and copies it with $A690 to column X, row Y; room 1's set-up calls it through $1A21 with column 0, row $17 (23).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16264,"t":"byte","b":[0,0,0,124,70,196,71,134]},{"a":16272,"t":"byte","b":[0,0,0,62,98,140,139,20]},{"a":16280,"t":"byte","b":[0,0,0,0,0,0,248,16]},{"a":16288,"t":"byte","b":[0,0,0,31,16,51,18,39]},{"a":16296,"t":"byte","b":[0,0,0,252,132,152,145,38]},{"a":16304,"t":"byte","b":[0,0,0,0,0,0,241,50]},{"a":16312,"t":"byte","b":[0,0,0,0,0,240,156,8]},{"a":16320,"l":"gfx_mr_hat_logo_low","c":"Bottom row of the 'Mr.Hat' logo (eight cells, drawn in character row 24 under $3F80's top row): the lower parts of the script letters and the underline.","t":"byte","b":[1,1,1,6,4,15,0,0]},{"a":16328,"t":"byte","b":[134,33,33,102,36,255,0,0]},{"a":16336,"t":"byte","b":[22,36,36,121,48,255,0,0]},{"a":16344,"t":"byte","b":[48,192,128,129,185,59,0,0]},{"a":16352,"t":"byte","b":[32,78,74,156,8,255,0,0]},{"a":16360,"t":"byte","b":[36,76,73,210,88,159,0,0]},{"a":16368,"t":"byte","b":[147,34,34,100,38,199,0,0]},{"a":16376,"t":"byte","b":[56,64,64,224,32,192,0,0]},{"a":16384,"l":"room1_lift_ride","c":"Room 1: the lift ride. Called by room 1's floor handlers when Mr Hat's X low byte ($D008) is 0 or 1 on a floor (top $4195, middle $1F5D, bottom $1E4F): walking right past X=$FF on a floor wraps X to 0, and that is entering the lift. JSR $1FA9 first (silences SID voice 2, checks the $F8/$F9 timer and the $44E0 one-shot). Sets X=0, sprite pointer $07FC=$2F, delay counter $FB=0, sprite 5 (the lift cabin, X=$120 at the right in play-room1.vsf) colour 3. Then by Y ($D009): below $5D top floor, below $95 middle, below $CD bottom. Stick down (exactly $7D) on the top or middle floor, or stick up ($7E) on the middle or bottom floor, moves Mr Hat and sprite 5 together 56 pixels ($38 steps of $D009/$D00B, each with a 4x256 INC $FB delay) and returns. Stick left ($7B) sets sprite 5 colour 3 and returns, so the main loop's left step walks him out of the lift. Any other input loops back to $4000: the game waits here. Y $CD or more: returns. The BCS at $401B is always taken (CMP #$00 leaves carry set).","t":"code","b":[32,169,31],"m":"jsr","oa":8105,"o":"lift_start_check","x":[7759,8029,8183,16455,16565,16789]},{"a":16387,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":16389,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":16392,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":16394,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":16395,"t":"note","l":"lift_sta_07fc_operand","c":"Operand low byte ($FC) of STA $07FC at $400A. Also read as data by LDA $400B at $102B in $1020 (called only from $A97C), masked with $F0: so $1020 always returns $F0, and $A97C's following CMP #$10 never matches.","note":"inside the item at $400A","x":[4139]},{"a":16397,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":16399,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":16401,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":16403,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":16406,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":16409,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":16411,"s":"always taken","t":"code","b":[176,1],"m":"bcs","oa":16414,"o":"b_401E"},{"a":16413,"t":"code","b":[96],"m":"rts"},{"a":16414,"l":"b_401E","t":"code","b":[201,93],"m":"cmp","o":"#$5D","x":[16411]},{"a":16416,"t":"code","b":[176,45],"m":"bcs","oa":16463,"o":"b_404F"},{"a":16418,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":16421,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":16423,"t":"code","b":[208,28],"m":"bne","oa":16453,"o":"b_4045"},{"a":16425,"l":"lift_move_down","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[16474]},{"a":16427,"t":"code","b":[32,162,64],"m":"jsr","oa":16546,"o":"lift_step_inc_d021"},{"a":16430,"l":"b_402E","t":"code","b":[238,11,208],"m":"inc","o":"vic_sprite5_y","x":[16450]},{"a":16433,"t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y"},{"a":16436,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":16438,"l":"b_4036","t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte","x":[16440,16445]},{"a":16440,"t":"code","b":[208,252],"m":"bne","oa":16438,"o":"b_4036"},{"a":16442,"t":"code","b":[200],"m":"iny"},{"a":16443,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":16445,"t":"code","b":[208,247],"m":"bne","oa":16438,"o":"b_4036"},{"a":16447,"t":"code","b":[232],"m":"inx"},{"a":16448,"t":"code","b":[224,56],"m":"cpx","o":"#$38"},{"a":16450,"t":"code","b":[208,234],"m":"bne","oa":16430,"o":"b_402E"},{"a":16452,"t":"code","b":[96],"m":"rts"},{"a":16453,"l":"b_4045","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[16423]},{"a":16455,"t":"code","b":[208,183],"m":"bne","oa":16384,"o":"room1_lift_ride"},{"a":16457,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":16459,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":16462,"t":"code","b":[96],"m":"rts"},{"a":16463,"l":"b_404F","t":"code","b":[201,149],"m":"cmp","o":"#$95","x":[16416]},{"a":16465,"t":"code","b":[176,55],"m":"bcs","oa":16522,"o":"b_408A"},{"a":16467,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":16470,"l":"j_4056","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[16519]},{"a":16472,"t":"code","b":[208,3],"m":"bne","oa":16477,"o":"b_405D"},{"a":16474,"t":"code","b":[76,41,64],"m":"jmp","oa":16425,"o":"lift_move_down"},{"a":16477,"l":"b_405D","t":"code","b":[201,126],"m":"cmp","o":"#$7E","x":[16472]},{"a":16479,"t":"code","b":[208,28],"m":"bne","oa":16509,"o":"b_407D"},{"a":16481,"l":"lift_move_up","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[16533]},{"a":16483,"t":"code","b":[32,162,64],"m":"jsr","oa":16546,"o":"lift_step_inc_d021"},{"a":16486,"l":"b_4066","t":"code","b":[206,11,208],"m":"dec","o":"vic_sprite5_y","x":[16506]},{"a":16489,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":16492,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":16494,"l":"b_406E","t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte","x":[16496,16501]},{"a":16496,"t":"code","b":[208,252],"m":"bne","oa":16494,"o":"b_406E"},{"a":16498,"t":"code","b":[200],"m":"iny"},{"a":16499,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":16501,"t":"code","b":[208,247],"m":"bne","oa":16494,"o":"b_406E"},{"a":16503,"t":"code","b":[232],"m":"inx"},{"a":16504,"t":"code","b":[224,56],"m":"cpx","o":"#$38"},{"a":16506,"t":"code","b":[208,234],"m":"bne","oa":16486,"o":"b_4066"},{"a":16508,"t":"code","b":[96],"m":"rts"},{"a":16509,"l":"b_407D","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[16479]},{"a":16511,"t":"code","b":[208,52],"m":"bne","oa":16565,"o":"b_40B5"},{"a":16513,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":16515,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":16518,"t":"code","b":[96],"m":"rts"},{"a":16519,"l":"lift_dead_jmp","c":"Unreachable: JMP $4056 after the RTS at $4086; nothing jumps here (searched by bytes). A leftover of the lift code.","t":"code","b":[76,86,64],"m":"jmp","oa":16470,"o":"j_4056"},{"a":16522,"l":"b_408A","t":"code","b":[201,205],"m":"cmp","o":"#$CD","x":[16465]},{"a":16524,"t":"code","b":[176,19],"m":"bcs","oa":16545,"o":"r_40A1"},{"a":16526,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":16529,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":16531,"t":"code","b":[208,3],"m":"bne","oa":16536,"o":"b_4098"},{"a":16533,"t":"code","b":[76,97,64],"m":"jmp","oa":16481,"o":"lift_move_up"},{"a":16536,"l":"b_4098","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[16531]},{"a":16538,"t":"code","b":[208,25],"m":"bne","oa":16565,"o":"b_40B5"},{"a":16540,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":16542,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":16545,"l":"r_40A1","t":"code","b":[96],"m":"rts","x":[16524]},{"a":16546,"l":"lift_step_inc_d021","c":"Called once at the start of each lift ride, before the 56-step move (down at $402B, up at $4063): INC $D021. In the play screen's hires bitmap mode ($D011=$3B, $D016=$C8 in play-room1.vsf) $D021 is not shown, so this has no visible effect.","t":"code","b":[238,33,208],"m":"inc","o":"vic_background0","x":[16427,16483]},{"a":16549,"t":"code","b":[96],"m":"rts"},{"a":16550,"l":"dead_operand_40a6","c":"Unreachable byte $25, the tail of an overwritten instruction (probably LDA #$25).","t":"byte","b":[37]},{"a":16551,"l":"dead_sound_40a7","c":"Unreachable leftover: sets SID voice 2 control $D40B (from A), attack/decay $D40C=$C0 and frequency high $D408=$04, RTS. Nothing calls it (searched by bytes).","t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":16554,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":16556,"t":"code","b":[141,12,212],"m":"sta","o":"sid_v2_attack_decay"},{"a":16559,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":16561,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":16564,"t":"code","b":[96],"m":"rts"},{"a":16565,"l":"b_40B5","c":"Room 1 lift, no recognised input on the middle or bottom floor: back to the start of room1_lift_ride to wait.","t":"code","b":[76,0,64],"m":"jmp","oa":16384,"o":"room1_lift_ride","x":[16511,16538]},{"a":16568,"l":"unused_40b8","c":"Unused: a lone RTS ($60) and two zero bytes after the lift code.","t":"byte","b":[96,0,0]},{"a":16571,"l":"scratch_40bb","c":"Scratch byte (handover $01): written and read back by the routine at $1020 (STA/LDA $40BB, then AND #$0F into $1009).","t":"byte","b":[1,0,0,0,0],"x":[4128,4131]},{"a":16576,"l":"room1_top_floor","c":"Room 1: per-step handler for the top floor, called through $08A1/$1D33 when Mr Hat's Y < $5D. X=$20: pushes him right (left wall). X=$40 with colour cell $051B = $0C (the black 3x3 object at columns 3-5, rows 5-7 still there): takes it: JSR $1CB0 (voice 1 off), JSR $1CE2 (an RTS), six INC $D022 (no visible effect in hires bitmap), erases cells $04CB/$04F3/$051B (x3) with $CC, shows it in the status line (cells $07BC-$07BD, $07E3-$07E5 = $0C) and sets $BD=$60, which the bottom-floor handler checks at $1EC5 to open the way out ($44C0). X in $A0-$C7 with Y $5C-$7B (standing, not jumping): dies (JSR $1D50). X=$F8 with $39=$40 (set at $1F15 by the middle-floor pickup) and cell $0492 = $7C: recolours cells $0492-$0493, $04BA-$04BB, $050A-$050B to $1C (yellow object at column 26 turns white), voice 1 off; X=$F8 without it: one extra step right. The $F8 branch also does five INC $D022 and JSR $1CD2 (an RTS). X=$FF off the floor level ($5C): six steps left (the right wall stops jumps). X=0 at Y=$5C, or X=1 at any Y: the lift (room1_lift_ride). X=0 off the floor level: six steps left. Ends with JSR $1F70, the guardian collision test.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[7482]},{"a":16579,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":16581,"t":"code","b":[208,3],"m":"bne","oa":16586,"o":"b_40CA"},{"a":16583,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":16586,"l":"b_40CA","t":"code","b":[201,64],"m":"cmp","o":"#$40","x":[16581]},{"a":16588,"t":"code","b":[208,64],"m":"bne","oa":16654,"o":"b_410E"},{"a":16590,"t":"code","b":[174,27,5],"m":"ldx","oa":1307,"o":"a_051B"},{"a":16593,"t":"code","b":[224,12],"m":"cpx","o":"#$0C"},{"a":16595,"t":"code","b":[208,57],"m":"bne","oa":16654,"o":"b_410E"},{"a":16597,"s":"voice 1 off","t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":16600,"t":"code","b":[32,226,28],"m":"jsr","oa":7394,"o":"sound_stub_1ce2"},{"a":16603,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":16605,"l":"b_40DD","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[16611]},{"a":16608,"t":"code","b":[200],"m":"iny"},{"a":16609,"t":"code","b":[192,6],"m":"cpy","o":"#$06"},{"a":16611,"t":"code","b":[208,248],"m":"bne","oa":16605,"o":"b_40DD"},{"a":16613,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":16615,"l":"b_40E7","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[16629]},{"a":16617,"t":"code","b":[157,243,4],"m":"sta","oa":1267,"o":"f_04F3,x"},{"a":16620,"t":"code","b":[157,27,5],"m":"sta","oa":1307,"o":"a_051B,x"},{"a":16623,"t":"code","b":[157,203,4],"m":"sta","oa":1227,"o":"f_04CB,x"},{"a":16626,"t":"code","b":[232],"m":"inx"},{"a":16627,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":16629,"t":"code","b":[208,240],"m":"bne","oa":16615,"o":"b_40E7"},{"a":16631,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":16633,"l":"b_40F9","t":"code","b":[169,12],"m":"lda","o":"#$0C","x":[16647]},{"a":16635,"t":"code","b":[157,188,7],"m":"sta","oa":1980,"o":"f_07BC,x"},{"a":16638,"t":"code","b":[157,228,7],"m":"sta","oa":2020,"o":"f_07E4,x"},{"a":16641,"t":"code","b":[157,227,7],"m":"sta","oa":2019,"o":"f_07E3,x"},{"a":16644,"t":"code","b":[232],"m":"inx"},{"a":16645,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":16647,"t":"code","b":[208,240],"m":"bne","oa":16633,"o":"b_40F9"},{"a":16649,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":16651,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":16653,"t":"code","b":[96],"m":"rts"},{"a":16654,"l":"b_410E","t":"code","b":[201,160],"m":"cmp","o":"#$A0","x":[16588,16595]},{"a":16656,"t":"code","b":[176,4],"m":"bcs","oa":16662,"o":"room1_top_floor_right"},{"a":16658,"t":"code","b":[76,44,65],"m":"jmp","oa":16684,"o":"j_412C"},{"a":16661,"l":"room1_top_floor_stray_rts","c":"A stray RTS ($60) inside room1_top_floor, between the JMP $412C at $4112 and $4116: nothing transfers to $4115 itself. The code after it is live: $4116-$41A4 (room1_top_floor_right) is the rest of room 1's top-floor handler, reached by the BCS $4116 at $4110 when X >= $A0.","t":"byte","b":[96]},{"a":16662,"l":"room1_top_floor_right","c":"room1_top_floor_right, the rest of room 1's top-floor handler, entered by the BCS at $4110 when X is $A0 or more (below $A0 the JMP at $4112 goes straight to the X tests at $412C). From $C8 on, and between $A0 and $C7 while Mr Hat is in the air (Y < $5C), on to the X tests; otherwise, between $A0 and $C7, the floor hazard: JSR $1D50 at $4128 for Y $5C-$7B (Y >= $7C, which the top floor never has, goes to $4139). The X tests at $412C, reached for every X but the hazard: X=$F8 the column-26 object when $39=$40 (else pushed right); X low byte $FF, or 0, with Y not $5C pushed six pixels left; X 0 at Y $5C, or X 1, rides the lift (JSR $4000 at $4195); then the guardian test JSR $1F70 at $41A1.","t":"code","b":[201,200],"m":"cmp","o":"#$C8","x":[16656]},{"a":16664,"t":"code","b":[176,18],"m":"bcs","oa":16684,"o":"j_412C"},{"a":16666,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":16669,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":16671,"t":"code","b":[176,3],"m":"bcs","oa":16676,"o":"b_4124"},{"a":16673,"t":"code","b":[76,44,65],"m":"jmp","oa":16684,"o":"j_412C"},{"a":16676,"l":"b_4124","t":"code","b":[201,124],"m":"cmp","o":"#$7C","x":[16671]},{"a":16678,"t":"code","b":[176,17],"m":"bcs","oa":16697,"o":"b_4139"},{"a":16680,"s":"standing in the hazard: die","t":"code","b":[32,80,29],"m":"jsr","oa":7504,"o":"room1_kill_hat"},{"a":16683,"t":"code","b":[96],"m":"rts"},{"a":16684,"l":"j_412C","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[16658,16664,16673]},{"a":16687,"t":"code","b":[201,248],"m":"cmp","o":"#$F8"},{"a":16689,"t":"code","b":[208,63],"m":"bne","oa":16754,"o":"b_4172"},{"a":16691,"t":"code","b":[165,57],"m":"lda","oa":57,"o":"flag_room1_item_mid"},{"a":16693,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":16695,"t":"code","b":[208,51],"m":"bne","oa":16748,"o":"b_416C"},{"a":16697,"l":"b_4139","c":"Room 1 top floor: the column-26 object, reached at X=$F8 when $39=$40 (and, by the BCS at $4126, for Y >= $7C, which the top floor never has).","t":"code","b":[174,146,4],"m":"ldx","oa":1170,"o":"a_0492","x":[16678]},{"a":16700,"t":"code","b":[224,124],"m":"cpx","o":"#$7C"},{"a":16702,"t":"code","b":[208,43],"m":"bne","oa":16747,"o":"r_416B"},{"a":16704,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":16706,"l":"b_4142","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[16712]},{"a":16709,"t":"code","b":[200],"m":"iny"},{"a":16710,"t":"code","b":[192,5],"m":"cpy","o":"#$05"},{"a":16712,"t":"code","b":[208,248],"m":"bne","oa":16706,"o":"b_4142"},{"a":16714,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":16716,"l":"b_414C","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[16739]},{"a":16718,"t":"code","b":[157,146,4],"m":"sta","oa":1170,"o":"a_0492,x"},{"a":16721,"t":"code","b":[157,146,4],"m":"sta","oa":1170,"o":"a_0492,x"},{"a":16724,"t":"code","b":[157,146,4],"m":"sta","oa":1170,"o":"a_0492,x"},{"a":16727,"t":"code","b":[157,10,5],"m":"sta","oa":1290,"o":"f_050A,x"},{"a":16730,"t":"code","b":[157,186,4],"m":"sta","oa":1210,"o":"f_04BA,x"},{"a":16733,"t":"code","b":[157,186,4],"m":"sta","oa":1210,"o":"f_04BA,x"},{"a":16736,"t":"code","b":[232],"m":"inx"},{"a":16737,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":16739,"t":"code","b":[208,231],"m":"bne","oa":16716,"o":"b_414C"},{"a":16741,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":16744,"t":"code","b":[32,210,28],"m":"jsr","oa":7378,"o":"sound_stub_1cd2"},{"a":16747,"l":"r_416B","t":"code","b":[96],"m":"rts","x":[16702,16751]},{"a":16748,"l":"b_416C","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[16695]},{"a":16751,"t":"code","b":[76,107,65],"m":"jmp","oa":16747,"o":"r_416B"},{"a":16754,"l":"b_4172","t":"code","b":[201,255],"m":"cmp","o":"#$FF","x":[16689]},{"a":16756,"t":"code","b":[208,17],"m":"bne","oa":16775,"o":"b_4187"},{"a":16758,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":16761,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":16763,"t":"code","b":[240,10],"m":"beq","oa":16775,"o":"b_4187"},{"a":16765,"l":"b_417D","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[16787]},{"a":16767,"l":"b_417F","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[16773]},{"a":16770,"t":"code","b":[232],"m":"inx"},{"a":16771,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":16773,"t":"code","b":[208,248],"m":"bne","oa":16767,"o":"b_417F"},{"a":16775,"l":"b_4187","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[16756,16763]},{"a":16778,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":16780,"t":"code","b":[208,15],"m":"bne","oa":16797,"o":"b_419D"},{"a":16782,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":16785,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":16787,"t":"code","b":[208,232],"m":"bne","oa":16765,"o":"b_417D"},{"a":16789,"l":"b_4195","t":"code","b":[32,0,64],"m":"jsr","oa":16384,"o":"room1_lift_ride","x":[16799]},{"a":16792,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":16794,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":16797,"l":"b_419D","t":"code","b":[201,1],"m":"cmp","o":"#$01","x":[16780]},{"a":16799,"t":"code","b":[240,244],"m":"beq","oa":16789,"o":"b_4195"},{"a":16801,"t":"code","b":[32,112,31],"m":"jsr","oa":8048,"o":"room1_guardian_touch"},{"a":16804,"t":"code","b":[96],"m":"rts"},{"a":16805,"l":"unused_41a5","c":"Unused: 11 zero bytes after the room 1 top-floor handler.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16813,"t":"byte","b":[0,0,0]},{"a":16816,"l":"jump_step_sound","c":"Jump sound, called on each of the 21 rising steps of a jump (the first phase only; the level and falling phases are silent), two call sites per room: room 1 ($43A0, $43FD), room 3 ($49BA, $4A17) and the jump copies of the other rooms ($5241, $5AAD, $626D, $6A6D, $76FD, $86FD, $936D and their partners). Sets SID voice 2 control $D40B=$25 and attack/decay $D40C=$88, then adds the jump step counter $99 to A 25 times (ADC, carry not cleared), storing each sum in voice 2's frequency high byte $D408: the pitch follows the step count $99 (0-$14). Runs in the main loop, not in an interrupt.","t":"code","b":[169,37],"m":"lda","o":"#$25","x":[17312,17405,18874,18967,21057,21150,23213,23306,25197,25290,27245,27338,30461,30554,34557,34650,37741,37834]},{"a":16818,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":16821,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":16823,"t":"code","b":[141,12,212],"m":"sta","o":"sid_v2_attack_decay"},{"a":16826,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":16828,"t":"code","b":[234],"m":"nop"},{"a":16829,"t":"code","b":[234],"m":"nop"},{"a":16830,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":16832,"l":"b_41C0","t":"code","b":[101,153],"m":"adc","oa":153,"o":"jump_step","x":[16840]},{"a":16834,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":16837,"t":"code","b":[232],"m":"inx"},{"a":16838,"t":"code","b":[224,25],"m":"cpx","o":"#$19"},{"a":16840,"t":"code","b":[208,246],"m":"bne","oa":16832,"o":"b_41C0"},{"a":16842,"t":"code","b":[96],"m":"rts"},{"a":16843,"l":"unused_41cb","c":"Unused: 5 zero bytes before the delay fragment at $41D0.","t":"byte","b":[0,0,0,0,0]},{"a":16848,"l":"dead_delay_then_score","c":"Unreachable: a 256x256 delay loop (X and Y counting to wrap) that falls straight into score_add_1000. No reference to $41D0 anywhere in the image (searched by bytes).","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":16850,"l":"b_41D2","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[16856]},{"a":16852,"l":"b_41D4","t":"code","b":[200],"m":"iny","x":[16853]},{"a":16853,"t":"code","b":[208,253],"m":"bne","oa":16852,"o":"b_41D4"},{"a":16855,"t":"code","b":[232],"m":"inx"},{"a":16856,"t":"code","b":[208,248],"m":"bne","oa":16850,"o":"b_41D2"},{"a":16858,"l":"score_add_1000","c":"Adds 1000 points to the score shown on the status line (six digits at columns 13-18 of character rows 23-24, drawn into the bitmap: the thousands digit is column 15, bitmap $3D38/$3E78). Digit glyphs are 16 bytes each at $1600 (top 8 bytes, then bottom 8; '0' at $1600 ... '9' at $1690). Copies the glyph whose address sits in the self-modified operands $41DD/$41E3 into column 15, counts the thousands in $40 and moves the operands on by $10. At the tenth step it redraws column 15 as '0', resets the operands to $10/$18, clears $40 and draws the next ten-thousands glyph (operands $4215/$421B) into column 14 ($3D30/$3E70), counted in $45; at ten of those, column 14 back to '0' and the next hundred-thousands glyph (operands $425B/$4261) into column 13 ($3D28/$3E68). Nothing carries past column 13: a tenth carry there would draw the 16 bytes at $16A0, which are not a digit. Called directly from 15 sites ($5C2F-$8AD5), one of them $8AD5 in $8AD0, through which the 10,000-75,000 adders $120E-$1247 call it; $1BA2-$1BBC resets the operands and $40/$45 at the start of a game.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[23599,25785,27709,28015,28018,30919,30922,31129,31132,31225,32946,33494,34194,34204,35541]},{"a":16860,"l":"b_41DC","t":"code","b":[189,96,22],"m":"lda","oa":5728,"o":"digit_six_top,x","x":[16875]},{"a":16861,"t":"note","l":"score_thousands_glyph_top","c":"Self-modified operand: low byte of the LDA $16x0,X that fetches the next thousands-digit glyph's top half ($10 after a reset at $1BA4, +$10 per 1000 points; $60 in the hand-over, a previous game's score).","note":"inside the item at $41DC","x":[7076,16885,16890,16935]},{"a":16863,"t":"code","b":[157,56,61],"m":"sta","oa":15672,"o":"score_digit_1k_top,x"},{"a":16866,"t":"code","b":[189,104,22],"m":"lda","oa":5736,"o":"digit_six_bottom,x"},{"a":16867,"t":"note","l":"score_thousands_glyph_bottom","c":"Self-modified operand: low byte of the LDA $16x8,X that fetches the next thousands-digit glyph's bottom half (reset to $18 at $1BAF and $422A).","note":"inside the item at $41E2","x":[7087,16893,16898,16940]},{"a":16869,"t":"code","b":[157,120,62],"m":"sta","oa":15992,"o":"score_digit_1k_bottom,x"},{"a":16872,"t":"code","b":[232],"m":"inx"},{"a":16873,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":16875,"t":"code","b":[208,239],"m":"bne","oa":16860,"o":"b_41DC"},{"a":16877,"t":"code","b":[230,64],"m":"inc","oa":64,"o":"score_thousands"},{"a":16879,"t":"code","b":[165,64],"m":"lda","oa":64,"o":"score_thousands"},{"a":16881,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":16883,"t":"code","b":[240,17],"m":"beq","oa":16902,"o":"b_4206"},{"a":16885,"t":"code","b":[173,221,65],"m":"lda","oa":16861,"o":"score_thousands_glyph_top"},{"a":16888,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":16890,"t":"code","b":[141,221,65],"m":"sta","oa":16861,"o":"score_thousands_glyph_top"},{"a":16893,"t":"code","b":[173,227,65],"m":"lda","oa":16867,"o":"score_thousands_glyph_bottom"},{"a":16896,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":16898,"t":"code","b":[141,227,65],"m":"sta","oa":16867,"o":"score_thousands_glyph_bottom"},{"a":16901,"t":"code","b":[96],"m":"rts"},{"a":16902,"l":"b_4206","s":"tenth thousand: carry into column 14","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[16883]},{"a":16904,"l":"b_4208","t":"code","b":[189,0,22],"m":"lda","oa":5632,"o":"digit_zero_top,x","x":[16931]},{"a":16907,"t":"code","b":[157,56,61],"m":"sta","oa":15672,"o":"score_digit_1k_top,x"},{"a":16910,"t":"code","b":[189,8,22],"m":"lda","oa":5640,"o":"digit_zero_bottom,x"},{"a":16913,"t":"code","b":[157,120,62],"m":"sta","oa":15992,"o":"score_digit_1k_bottom,x"},{"a":16916,"t":"code","b":[189,16,22],"m":"lda","oa":5648,"o":"digit_one_top,x"},{"a":16917,"t":"note","l":"score_tenthousands_glyph_top","c":"Self-modified operand: low byte of LDA $16x0,X for the next ten-thousands digit's top half (reset to $10 at $1BA7 and $426D, moved on at $4233-$4238: ADC #$0F with the carry that the CPX #$08 ending the copy loop at $4221 leaves set, so +$10).","note":"inside the item at $4214","x":[7079,16947,16952,17005]},{"a":16919,"t":"code","b":[157,48,61],"m":"sta","oa":15664,"o":"score_digit_10k_top,x"},{"a":16922,"t":"code","b":[189,24,22],"m":"lda","oa":5656,"o":"digit_one_bottom,x"},{"a":16923,"t":"note","l":"score_tenthousands_glyph_bottom","c":"Self-modified operand: low byte of LDA $16x8,X for the next ten-thousands digit's bottom half (reset to $18 at $1BB2 and $4272).","note":"inside the item at $421A","x":[7090,16955,16960,17010]},{"a":16925,"t":"code","b":[157,112,62],"m":"sta","oa":15984,"o":"score_digit_10k_bottom,x"},{"a":16928,"t":"code","b":[232],"m":"inx"},{"a":16929,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":16931,"t":"code","b":[208,227],"m":"bne","oa":16904,"o":"b_4208"},{"a":16933,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":16935,"t":"code","b":[141,221,65],"m":"sta","oa":16861,"o":"score_thousands_glyph_top"},{"a":16938,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":16940,"t":"code","b":[141,227,65],"m":"sta","oa":16867,"o":"score_thousands_glyph_bottom"},{"a":16943,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":16945,"t":"code","b":[133,64],"m":"sta","oa":64,"o":"score_thousands"},{"a":16947,"t":"code","b":[173,21,66],"m":"lda","oa":16917,"o":"score_tenthousands_glyph_top"},{"a":16950,"t":"code","b":[105,15],"m":"adc","o":"#$0F"},{"a":16952,"t":"code","b":[141,21,66],"m":"sta","oa":16917,"o":"score_tenthousands_glyph_top"},{"a":16955,"t":"code","b":[173,27,66],"m":"lda","oa":16923,"o":"score_tenthousands_glyph_bottom"},{"a":16958,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":16960,"t":"code","b":[141,27,66],"m":"sta","oa":16923,"o":"score_tenthousands_glyph_bottom"},{"a":16963,"t":"code","b":[230,69],"m":"inc","oa":69,"o":"score_ten_thousands"},{"a":16965,"t":"code","b":[165,69],"m":"lda","oa":69,"o":"score_ten_thousands"},{"a":16967,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":16969,"t":"code","b":[240,1],"m":"beq","oa":16972,"o":"b_424C"},{"a":16971,"t":"code","b":[96],"m":"rts"},{"a":16972,"l":"b_424C","s":"tenth ten-thousand: carry into column 13","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[16969]},{"a":16974,"l":"b_424E","t":"code","b":[189,0,22],"m":"lda","oa":5632,"o":"digit_zero_top,x","x":[17001]},{"a":16977,"t":"code","b":[157,48,61],"m":"sta","oa":15664,"o":"score_digit_10k_top,x"},{"a":16980,"t":"code","b":[189,8,22],"m":"lda","oa":5640,"o":"digit_zero_bottom,x"},{"a":16983,"t":"code","b":[157,112,62],"m":"sta","oa":15984,"o":"score_digit_10k_bottom,x"},{"a":16986,"t":"code","b":[189,32,22],"m":"lda","oa":5664,"o":"digit_two_top,x"},{"a":16987,"t":"note","l":"score_hundredthousands_glyph_top","c":"Self-modified operand: low byte of LDA $16x0,X for the next hundred-thousands digit's top half (reset to $10 at $1BAA; moved on at $4279, never wrapped).","note":"inside the item at $425A","x":[7082,17017,17022]},{"a":16989,"t":"code","b":[157,40,61],"m":"sta","oa":15656,"o":"score_digit_100k_top,x"},{"a":16992,"t":"code","b":[189,40,22],"m":"lda","oa":5672,"o":"digit_two_bottom,x"},{"a":16993,"t":"note","l":"score_hundredthousands_glyph_bottom","c":"Self-modified operand: low byte of LDA $16x8,X for the next hundred-thousands digit's bottom half (reset to $18 at $1BB5; never wrapped).","note":"inside the item at $4260","x":[7093,17025,17030]},{"a":16995,"t":"code","b":[157,104,62],"m":"sta","oa":15976,"o":"score_digit_100k_bottom,x"},{"a":16998,"t":"code","b":[232],"m":"inx"},{"a":16999,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":17001,"t":"code","b":[208,227],"m":"bne","oa":16974,"o":"b_424E"},{"a":17003,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":17005,"t":"code","b":[141,21,66],"m":"sta","oa":16917,"o":"score_tenthousands_glyph_top"},{"a":17008,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":17010,"t":"code","b":[141,27,66],"m":"sta","oa":16923,"o":"score_tenthousands_glyph_bottom"},{"a":17013,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17015,"t":"code","b":[133,69],"m":"sta","oa":69,"o":"score_ten_thousands"},{"a":17017,"t":"code","b":[173,91,66],"m":"lda","oa":16987,"o":"score_hundredthousands_glyph_top"},{"a":17020,"t":"code","b":[105,15],"m":"adc","o":"#$0F"},{"a":17022,"t":"code","b":[141,91,66],"m":"sta","oa":16987,"o":"score_hundredthousands_glyph_top"},{"a":17025,"t":"code","b":[173,97,66],"m":"lda","oa":16993,"o":"score_hundredthousands_glyph_bottom"},{"a":17028,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":17030,"t":"code","b":[141,97,66],"m":"sta","oa":16993,"o":"score_hundredthousands_glyph_bottom"},{"a":17033,"t":"code","b":[96],"m":"rts"},{"a":17034,"l":"unknown_data_428a","c":"86 bytes of unknown content (6 zeros, then values such as $FF, $CD, $32, $89, $BB). No absolute reference to $428A-$42DF was found in the image (searched by bytes); purpose not known.","t":"byte","b":[0,0,0,0,0,0,98,255]},{"a":17042,"t":"byte","b":[76,205,255,191,205,205,255,255]},{"a":17050,"t":"byte","b":[0,205,255,255,205,4,243,255]},{"a":17058,"t":"byte","b":[205,68,50,255,205,205,50,118]},{"a":17066,"t":"byte","b":[205,205,50,255,205,205,255,123]},{"a":17074,"t":"byte","b":[64,137,255,255,205,68,50,50]},{"a":17082,"t":"byte","b":[8,68,255,187,68,70,50,255]},{"a":17090,"t":"byte","b":[137,18,118,187,137,64,160,255]},{"a":17098,"t":"byte","b":[205,1,183,187,205,0,255,50]},{"a":17106,"t":"byte","b":[205,0,255,191,205,205,255,255]},{"a":17114,"t":"byte","b":[205,205,187,255,137,137]},{"a":17120,"l":"delay_80x256","c":"Busy-wait: 80 passes of a 256-step X loop (about 0.1 s). Called after each of the three phases of a jump in rooms 1, 2, 3, 5, 6, 9, 11 and 4/7 (48 call sites, six per jump copy; room 8's jump uses its own copy, room8_jump_pause $6BC7), and once more from the disabled routine at $451F ($453F).","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[17336,17362,17391,17429,17455,17484,17727,18898,18924,18953,18991,19017,19046,21081,21107,21136,21174,21200,21229,23237,23263,23292,23330,23356,23385,25221,25247,25276,25314,25340,25369,30485,30511,30540,30578,30604,30633,34581,34607,34636,34674,34700,34729,37765,37791,37820,37858,37884,37913]},{"a":17122,"l":"b_42E2","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[17130]},{"a":17124,"l":"b_42E4","t":"code","b":[232],"m":"inx","x":[17125]},{"a":17125,"t":"code","b":[208,253],"m":"bne","oa":17124,"o":"b_42E4"},{"a":17127,"t":"code","b":[200],"m":"iny"},{"a":17128,"t":"code","b":[192,80],"m":"cpy","o":"#$50"},{"a":17130,"t":"code","b":[208,246],"m":"bne","oa":17122,"o":"b_42E2"},{"a":17132,"t":"code","b":[96],"m":"rts"},{"a":17133,"l":"unused_42ed","c":"Unused: two NOPs ($EA) between delay_80x256 and room1_main_loop.","t":"byte","b":[234,234]},{"a":17135,"l":"room1_main_loop","c":"Room 1 (stage 1): one pass of the main loop, entered from $A81A (the room table's first entry, reached by JMP $A817 at $1BFC after room 1 is set up, and again at the end of every pass, $4601/$4609). If $F6=$30 (Mr Hat has just died) JSR $1FD7 puts him back (room1_respawn_position) and goes to game over if $D8=$40. Turns sprite 4 (Mr Hat) on. Joystick port 2, each test an exact value of $DC00: right ($77) one step right (INC $D008), walking frames $2C-$2E from $FD changing every 9 steps (counter $FB), voice 2 off ($1CF2), footstep tick ($1D04), 5x256 delay; down ($7D) shows the crouch frame $2A and stays while down is held, calling $6FDB (the timer and exit checks plus the floor handler) each pass; left ($7B) as right with frames $2F-$31 from $FF; fire ($6F) jumps (room1_jump). Stick up is not tested here: outside the lift it does nothing. Diagonals match none of the tests. Every pass then goes on to room1_rejump_check (JMP $444F at $43F2 when fire alone is not held), which tests fire with right ($67) or left ($6B), so those jump too, even from standing.","t":"code","b":[165,246],"m":"lda","oa":246,"o":"dying_flag","x":[43034]},{"a":17137,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":17139,"t":"code","b":[208,3],"m":"bne","oa":17144,"o":"b_42F8"},{"a":17141,"t":"code","b":[32,215,31],"m":"jsr","oa":8151,"o":"after_death_continue"},{"a":17144,"l":"b_42F8","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[17139]},{"a":17147,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":17149,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":17152,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":17155,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":17157,"t":"code","b":[208,50],"m":"bne","oa":17209,"o":"b_4339"},{"a":17159,"t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte"},{"a":17161,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":17163,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17166,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":17168,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":17170,"t":"code","b":[208,16],"m":"bne","oa":17188,"o":"b_4324"},{"a":17172,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17174,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":17176,"t":"code","b":[230,253],"m":"inc","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":17178,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":17180,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":17182,"t":"code","b":[208,4],"m":"bne","oa":17188,"o":"b_4324"},{"a":17184,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":17186,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":17188,"l":"b_4324","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[17170,17182]},{"a":17191,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":17194,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":17197,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17199,"l":"b_432F","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[17207]},{"a":17201,"l":"b_4331","t":"code","b":[200],"m":"iny","x":[17202]},{"a":17202,"t":"code","b":[208,253],"m":"bne","oa":17201,"o":"b_4331"},{"a":17204,"t":"code","b":[232],"m":"inx"},{"a":17205,"t":"code","b":[224,5],"m":"cpx","o":"#$05"},{"a":17207,"t":"code","b":[208,246],"m":"bne","oa":17199,"o":"b_432F"},{"a":17209,"l":"b_4339","s":"down: crouch","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[17157]},{"a":17211,"t":"code","b":[208,23],"m":"bne","oa":17236,"o":"b_4354"},{"a":17213,"t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer"},{"a":17216,"t":"code","b":[72],"m":"pha"},{"a":17217,"l":"b_4341","t":"code","b":[32,219,111],"m":"jsr","oa":28635,"o":"room1_timer_checks","x":[17230]},{"a":17220,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":17222,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17225,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":17228,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":17230,"t":"code","b":[240,241],"m":"beq","oa":17217,"o":"b_4341"},{"a":17232,"t":"code","b":[104],"m":"pla"},{"a":17233,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17236,"l":"b_4354","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[17211]},{"a":17239,"t":"code","b":[201,123],"m":"cmp","o":"#$7B"},{"a":17241,"t":"code","b":[208,50],"m":"bne","oa":17293,"o":"b_438D"},{"a":17243,"t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte"},{"a":17245,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":17247,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17250,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":17252,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":17254,"t":"code","b":[208,16],"m":"bne","oa":17272,"o":"b_4378"},{"a":17256,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17258,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":17260,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":17262,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":17264,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":17266,"t":"code","b":[208,4],"m":"bne","oa":17272,"o":"b_4378"},{"a":17268,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":17270,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":17272,"l":"b_4378","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[17254,17266]},{"a":17275,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":17278,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":17281,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17283,"l":"b_4383","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[17291]},{"a":17285,"l":"b_4385","t":"code","b":[200],"m":"iny","x":[17286]},{"a":17286,"t":"code","b":[208,253],"m":"bne","oa":17285,"o":"b_4385"},{"a":17288,"t":"code","b":[232],"m":"inx"},{"a":17289,"t":"code","b":[224,5],"m":"cpx","o":"#$05"},{"a":17291,"t":"code","b":[208,246],"m":"bne","oa":17283,"o":"b_4383"},{"a":17293,"l":"b_438D","s":"fire alone: jump","t":"code","b":[201,111],"m":"cmp","o":"#$6F","x":[17241]},{"a":17295,"t":"code","b":[208,97],"m":"bne","oa":17394,"o":"b_43F2"},{"a":17297,"l":"room1_jump","c":"Room 1 jump, on fire alone ($DC00=$6F). Facing right (frame below $2F): frame $2D and 21 ($15) steps up and right, frame $2C and 21 steps right, frame $2E and 21 steps down and right; facing left: frames $30, $2F, $31 with the X steps reversed. Each step moves one pixel each way and calls $08A1 (the room 1 floor handler, so hazards and the lift work in the air); only the 21 rising steps play jump_step_sound with the step count $99 (voice 2 silenced once before them facing right, before each step facing left); delay_80x256 after each phase. So a jump is 63 pixels across and 21 high.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[17497,17507]},{"a":17300,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":17302,"t":"code","b":[176,93],"m":"bcs","oa":17397,"o":"b_43F5"},{"a":17304,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":17306,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17309,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":17312,"l":"b_43A0","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[17330]},{"a":17315,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":17318,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":17321,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":17323,"t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on"},{"a":17326,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":17328,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":17330,"t":"code","b":[208,236],"m":"bne","oa":17312,"o":"b_43A0"},{"a":17332,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17334,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":17336,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":17339,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":17341,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17344,"l":"b_43C0","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[17356]},{"a":17347,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":17349,"t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on"},{"a":17352,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":17354,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":17356,"t":"code","b":[208,242],"m":"bne","oa":17344,"o":"b_43C0"},{"a":17358,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17360,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":17362,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":17365,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":17367,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17370,"l":"b_43DA","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[17385]},{"a":17373,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":17376,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":17378,"t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on"},{"a":17381,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":17383,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":17385,"t":"code","b":[208,239],"m":"bne","oa":17370,"o":"b_43DA"},{"a":17387,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17389,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":17391,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":17394,"l":"b_43F2","t":"code","b":[76,79,68],"m":"jmp","oa":17487,"o":"room1_rejump_check","x":[17295]},{"a":17397,"l":"b_43F5","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[17302]},{"a":17399,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17402,"l":"b_43FA","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[17423]},{"a":17405,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":17408,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":17411,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":17414,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":17416,"t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on"},{"a":17419,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":17421,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":17423,"t":"code","b":[208,233],"m":"bne","oa":17402,"o":"b_43FA"},{"a":17425,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17427,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":17429,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":17432,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":17434,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17437,"l":"b_441D","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[17449]},{"a":17440,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":17442,"t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on"},{"a":17445,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":17447,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":17449,"t":"code","b":[208,242],"m":"bne","oa":17437,"o":"b_441D"},{"a":17451,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17453,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":17455,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":17458,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":17460,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17463,"l":"b_4437","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[17478]},{"a":17466,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":17469,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":17471,"t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on"},{"a":17474,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":17476,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":17478,"t":"code","b":[208,239],"m":"bne","oa":17463,"o":"b_4437"},{"a":17480,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17482,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":17484,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":17487,"l":"room1_rejump_check","c":"Room 1, after every pass of the main loop (from $43F2, or falling through after a left-facing jump), not only after a jump: fire held with right ($67) or with left ($6B) jumps (JSR $6FDB, back to room1_jump; the direction comes from the current frame, not from the stick), so fire with a direction jumps even from standing. Then $08A1 (floor handler) and room1_gameover_check.","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[17394]},{"a":17490,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":17492,"t":"code","b":[208,6],"m":"bne","oa":17500,"o":"b_445C"},{"a":17494,"t":"code","b":[32,219,111],"m":"jsr","oa":28635,"o":"room1_timer_checks"},{"a":17497,"t":"code","b":[76,145,67],"m":"jmp","oa":17297,"o":"room1_jump"},{"a":17500,"l":"b_445C","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[17492]},{"a":17502,"t":"code","b":[208,6],"m":"bne","oa":17510,"o":"b_4466"},{"a":17504,"t":"code","b":[32,219,111],"m":"jsr","oa":28635,"o":"room1_timer_checks"},{"a":17507,"t":"code","b":[76,145,67],"m":"jmp","oa":17297,"o":"room1_jump"},{"a":17510,"l":"b_4466","t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on","x":[17502]},{"a":17513,"l":"room1_gameover_check","c":"Room 1 loop tail: $D8=$40 (set at $1734 when the last life mark is gone) goes to game_over, otherwise to room1_timer_and_exit. Also entered by JMP from $1FD3 (inside a subroutine, so that call's return address stays on the stack).","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[8147]},{"a":17515,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":17517,"t":"code","b":[208,3],"m":"bne","oa":17522,"o":"b_4472"},{"a":17519,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":17522,"l":"b_4472","t":"code","b":[76,158,68],"m":"jmp","oa":17566,"o":"room1_timer_and_exit","x":[17517]},{"a":17525,"l":"game_over","c":"Game over, reached from every room's loop when $D8=$40 (11 JMPs: $446F, $4A9A, $51FA, $5A66, $6226, $6A26, $6DF9, $76B6, $8436, $86B6, $9326). Hides Mr Hat (clears $D015 bit 4), JSR $16A0 (JSR $A500, then into the title routine $16A3, which shows the title and waits for fire at $1770), JSR $45D5 (all sprites off, IRQ $8215), JMP $8020 (clears $75F0, sets $7FC1=$32, JMP $0870: the game's start-up again).","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[17519,19098,20986,23142,25126,27174,28153,30390,33846,34486,37670]},{"a":17528,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":17530,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":17533,"l":"game_over_from_respawn","c":"Second entry of game_over, from $1FE0 (room 1 respawn found $D8=$40): Mr Hat already hidden, straight to the title and the restart.","t":"code","b":[32,160,22],"m":"jsr","oa":5792,"o":"title_after_blank","x":[8160]},{"a":17536,"t":"code","b":[234],"m":"nop"},{"a":17537,"t":"code","b":[234],"m":"nop"},{"a":17538,"t":"code","b":[234],"m":"nop"},{"a":17539,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":17542,"t":"code","b":[76,32,128],"m":"jmp","oa":32800,"o":"game_over_reset_bonus"},{"a":17545,"l":"unused_4489","c":"Unused: one zero byte after game_over.","t":"byte","b":[0]},{"a":17546,"l":"voice1_off","c":"JSR $1CB0 (SID voice 1 registers $D400-$D406 cleared, volume $D418=15) and return. Called when an object is taken in room 3 ($4BE3), room 2 ($548A) and at $5C49.","t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1","x":[19427,21642,23625]},{"a":17549,"t":"code","b":[96],"m":"rts"},{"a":17550,"l":"dead_operand_448e","c":"Unreachable byte $81, the tail of an overwritten instruction.","t":"byte","b":[129]},{"a":17551,"l":"dead_sound_448f","c":"Unreachable leftover: voice 3 control $D412 from A, attack/decay $D413=$77, voice 3 frequency high $D40F=$10, RTS. Nothing references $448F (searched by bytes).","t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":17554,"t":"code","b":[169,119],"m":"lda","o":"#$77"},{"a":17556,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":17559,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":17561,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":17564,"t":"code","b":[96],"m":"rts"},{"a":17565,"l":"unused_449d","c":"Unused: one zero byte before room1_timer_and_exit.","t":"byte","b":[0]},{"a":17566,"l":"room1_timer_and_exit","c":"Room 1 loop tail, after the game-over test. If $F9=$20 and $F8=$F0 runs timer_oneshot_44e0. If $F7=$20 leaves the room (room1_exit_by_f7); otherwise room1_stand_and_loop. Neither test is known to pass in room 1: $F9 is 0 from the start-up ($088B) and room 1 sets it to $20 only at $44C2, which leaves for room 3 at once (room 3's set-up clears $F8-$FF at $4894); room 1's IRQ counts only $F8 ($1C90). Nothing in room 1 writes $F7 after the start-up clears it ($0887); only room 6's IRQ counts it ($609C).","t":"code","b":[165,249],"m":"lda","oa":249,"o":"frame_tick_hi","x":[17522]},{"a":17568,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":17570,"t":"code","b":[208,9],"m":"bne","oa":17581,"o":"b_44AD"},{"a":17572,"t":"code","b":[165,248],"m":"lda","oa":248,"o":"frame_tick"},{"a":17574,"t":"code","b":[201,240],"m":"cmp","o":"#$F0"},{"a":17576,"t":"code","b":[208,3],"m":"bne","oa":17581,"o":"b_44AD"},{"a":17578,"t":"code","b":[32,224,68],"m":"jsr","oa":17632,"o":"timer_oneshot_44e0"},{"a":17581,"l":"b_44AD","t":"code","b":[165,247],"m":"lda","oa":247,"o":"stage_flag_f7","x":[17570,17576]},{"a":17583,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":17585,"t":"code","b":[208,3],"m":"bne","oa":17590,"o":"b_44B6"},{"a":17587,"t":"code","b":[76,185,68],"m":"jmp","oa":17593,"o":"room1_exit_by_f7"},{"a":17590,"l":"b_44B6","t":"code","b":[76,245,69],"m":"jmp","oa":17909,"o":"room1_stand_and_loop","x":[17585]},{"a":17593,"l":"room1_exit_by_f7","c":"Room 1 exit when $F7=$20 (also JMP from $6FF0, the crouch copy): JSR $45D5 (sprites off, IRQ $8215) and room1_exit_to_room3.","t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq","x":[17587,28656]},{"a":17596,"t":"code","b":[76,34,71],"m":"jmp","oa":18210,"o":"room1_exit_to_room3"},{"a":17599,"l":"unused_44bf","c":"Unused: one zero byte between room1_exit_by_f7 and room1_door_exit.","t":"byte","b":[0]},{"a":17600,"l":"room1_door_exit","c":"Room 1's way out, reached by JMP from the bottom-floor handler at $1ED3 when Mr Hat is at X=$50 and $BD=$60 (the black object on the top floor was taken, $4109). Sets the timer $F9=$20, $F8=0 (it never fires: the code goes straight on to room 3, whose set-up clears $F8-$FF at $4894), JSR $AAF0 (drawing calls to $A763 and $A67F with X,Y = 7,$12 and 3,$13, not analysed here, then a pause of seven 65,536-pass loops at $AB0A-$AB23), then room1_exit_to_room3. The JMP leaves the floor handler's return addresses on the stack.","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[7891]},{"a":17602,"t":"code","b":[133,249],"m":"sta","oa":249,"o":"frame_tick_hi"},{"a":17604,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17606,"t":"code","b":[133,248],"m":"sta","oa":248,"o":"frame_tick"},{"a":17608,"t":"code","b":[32,240,170],"m":"jsr","oa":43760,"o":"keyhole_and_pause"},{"a":17611,"t":"code","b":[234],"m":"nop"},{"a":17612,"t":"code","b":[234],"m":"nop"},{"a":17613,"t":"code","b":[234],"m":"nop"},{"a":17614,"t":"code","b":[76,34,71],"m":"jmp","oa":18210,"o":"room1_exit_to_room3"},{"a":17617,"l":"unused_44d1","c":"Unused: $00 $60 $00 $00 between room1_door_exit and set_d022_2a (the $60 is a lone RTS nothing reaches).","t":"byte","b":[0,96,0,0]},{"a":17621,"l":"set_d022_2a","c":"Writes $2A to $D022 (not shown in hires bitmap mode) and JSR $1FE4, which is a bare RTS: in effect does nothing. Called only by timer_oneshot_44e0.","t":"code","b":[169,42],"m":"lda","o":"#$2A","x":[17632]},{"a":17623,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":17626,"t":"code","b":[32,228,31],"m":"jsr","oa":8164,"o":"sound_stub_1fe4"},{"a":17629,"t":"code","b":[96],"m":"rts"},{"a":17630,"l":"unused_44de","c":"Unused: two zero bytes between set_d022_2a and timer_oneshot_44e0.","t":"byte","b":[0,0]},{"a":17632,"l":"timer_oneshot_44e0","c":"One-shot routine for the timer $F9=$20, $F8=$F0, called from $1FB8, $44AA and $6FE7 (all room 1 code). No call is known to happen in play: $F9 is $20 only after $44C2, which leaves room 1 at once for room 3, whose set-up clears $F8-$FF ($4894). Its first byte is self-modified: the start-up stores $20 (JSR) here at $0891, and $44F2 stores $60 (RTS) so later calls return at once. Writes $D022 four times ($2A through set_d022_2a, then $81, $2D, $04; no visible effect), sets $FA=$20 (nothing found reads $FA), calls $451E, which is a bare RTS (so the routine at $451F stays disabled), and kills Mr Hat (JSR $1D50) only if his Y is 0. $1FBB tests this byte for $60.","t":"code","b":[32,213,68],"m":"jsr","oa":17621,"o":"set_d022_2a","x":[2193,8120,8123,17578,17652,28647]},{"a":17635,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":17637,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":17640,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":17642,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":17645,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":17647,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":17650,"s":"make $44E0 an RTS","t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":17652,"t":"code","b":[141,224,68],"m":"sta","oa":17632,"o":"timer_oneshot_44e0"},{"a":17655,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":17657,"t":"code","b":[133,250],"m":"sta","oa":250,"o":"flag_fa"},{"a":17659,"t":"code","b":[32,30,69],"m":"jsr","oa":17694,"o":"rts_stub_451e"},{"a":17662,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":17665,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":17667,"t":"code","b":[208,3],"m":"bne","oa":17672,"o":"r_4508"},{"a":17669,"t":"code","b":[32,80,29],"m":"jsr","oa":7504,"o":"room1_kill_hat"},{"a":17672,"l":"r_4508","t":"code","b":[96],"m":"rts","x":[17667]},{"a":17673,"l":"unused_4509","c":"Unused: one NOP byte.","t":"byte","b":[234]},{"a":17674,"l":"rts_stub_450a","c":"A bare RTS, called from $65C5 (call_empty_450a), $7B40 (unused_crouch_and_die) and $81FB (unref_silence_v1_81f8).","t":"code","b":[96],"m":"rts","x":[26053,31552,33275]},{"a":17675,"l":"unused_450b","c":"Unused: one zero byte between rts_stub_450a and the dead SID-clear fragment.","t":"byte","b":[0]},{"a":17676,"l":"dead_sid_clear_450c","c":"Unreachable leftover: clears 8 SID registers from $D40D,Y upwards and returns. Nothing references $450C (searched by bytes).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[17684]},{"a":17678,"t":"code","b":[153,13,212],"m":"sta","o":"sid_v2_sustain_release,y"},{"a":17681,"t":"code","b":[200],"m":"iny"},{"a":17682,"t":"code","b":[192,8],"m":"cpy","o":"#$08"},{"a":17684,"t":"code","b":[208,246],"m":"bne","oa":17676,"o":"dead_sid_clear_450c"},{"a":17686,"t":"code","b":[96],"m":"rts"},{"a":17687,"l":"voice1_off_b","c":"JSR $1CB0 (voice 1 off, volume 15) and JSR $1CE2 (a bare RTS). Called when an object is taken: $4BE6 (room 3), $548D (room 2), $5C4C.","t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1","x":[19430,21645,23628]},{"a":17690,"t":"code","b":[32,226,28],"m":"jsr","oa":7394,"o":"sound_stub_1ce2"},{"a":17693,"t":"code","b":[96],"m":"rts"},{"a":17694,"l":"rts_stub_451e","c":"A bare RTS. timer_oneshot_44e0 calls it at $44FB, one byte short of the routine at $451F, which is how that routine is switched off.","t":"code","b":[96],"m":"rts","x":[17659]},{"a":17695,"l":"disabled_reveal_451f","c":"Disabled routine: nothing calls it (the only nearby call, $44FB, targets the RTS at $451E; no other reference by bytes). As written it would JSR $1F9C (clears $F6, turns every sprite off), cycle the colour of cells rows 17-21, columns 3-7 (value $A6, self-modified at $4527 and incremented each pass, with delay_80x256) until $F6 reaches $18, colour row 17 columns 3-7 $6E and rows 18-21 columns 4-6 $E0, turn sprite 6 off, copy bitmap bytes from $08B8-$08FF: 24 into $36A0-$36B7 (row 18, columns 4-6) and 8 each into $37E0/$37F0, $3920/$3930, $3A60/$3A70 (rows 19-21, columns 4 and 6 only), colour columns 3 and 7 of rows 18-21 $6E and column 5 of rows 19-21 $00, and JSR $08AD (keeps only sprites 4 and 5 on). What it showed is not known.","t":"code","b":[32,156,31],"m":"jsr","oa":8092,"o":"clear_dying_sprites_off"},{"a":17698,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17700,"l":"b_4524","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[17736]},{"a":17702,"l":"b_4526","t":"code","b":[169,166],"m":"lda","o":"#$A6","x":[17722]},{"a":17703,"t":"note","l":"reveal_colour_operand","c":"Self-modified operand of LDA #$A6 in disabled_reveal_451f (INC $4527 at $453C).","note":"inside the item at $4526","x":[17724]},{"a":17704,"t":"code","b":[157,171,6],"m":"sta","oa":1707,"o":"f_06AB,x"},{"a":17707,"t":"code","b":[157,211,6],"m":"sta","oa":1747,"o":"f_06D3,x"},{"a":17710,"t":"code","b":[157,251,6],"m":"sta","oa":1787,"o":"f_06FB,x"},{"a":17713,"t":"code","b":[157,35,7],"m":"sta","oa":1827,"o":"f_0723,x"},{"a":17716,"t":"code","b":[157,75,7],"m":"sta","oa":1867,"o":"f_074B,x"},{"a":17719,"t":"code","b":[232],"m":"inx"},{"a":17720,"t":"code","b":[224,5],"m":"cpx","o":"#$05"},{"a":17722,"t":"code","b":[208,234],"m":"bne","oa":17702,"o":"b_4526"},{"a":17724,"t":"code","b":[238,39,69],"m":"inc","oa":17703,"o":"reveal_colour_operand"},{"a":17727,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":17730,"t":"code","b":[230,246],"m":"inc","oa":246,"o":"dying_flag"},{"a":17732,"t":"code","b":[165,246],"m":"lda","oa":246,"o":"dying_flag"},{"a":17734,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":17736,"t":"code","b":[208,218],"m":"bne","oa":17700,"o":"b_4524"},{"a":17738,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17740,"l":"b_454C","t":"code","b":[169,110],"m":"lda","o":"#$6E","x":[17748]},{"a":17742,"t":"code","b":[157,171,6],"m":"sta","oa":1707,"o":"f_06AB,x"},{"a":17745,"t":"code","b":[232],"m":"inx"},{"a":17746,"t":"code","b":[224,5],"m":"cpx","o":"#$05"},{"a":17748,"t":"code","b":[208,246],"m":"bne","oa":17740,"o":"b_454C"},{"a":17750,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17752,"l":"b_4558","t":"code","b":[169,224],"m":"lda","o":"#$E0","x":[17769]},{"a":17754,"t":"code","b":[157,212,6],"m":"sta","oa":1748,"o":"f_06D4,x"},{"a":17757,"t":"code","b":[157,252,6],"m":"sta","oa":1788,"o":"f_06FC,x"},{"a":17760,"t":"code","b":[157,36,7],"m":"sta","oa":1828,"o":"f_0724,x"},{"a":17763,"t":"code","b":[157,76,7],"m":"sta","oa":1868,"o":"f_074C,x"},{"a":17766,"t":"code","b":[232],"m":"inx"},{"a":17767,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":17769,"t":"code","b":[208,237],"m":"bne","oa":17752,"o":"b_4558"},{"a":17771,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":17774,"t":"code","b":[41,191],"m":"and","o":"#$BF"},{"a":17776,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":17779,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17781,"l":"b_4575","t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"gfx_cells_08b8,x","x":[17790]},{"a":17784,"t":"code","b":[157,160,54],"m":"sta","oa":13984,"o":"f_36A0,x"},{"a":17787,"t":"code","b":[232],"m":"inx"},{"a":17788,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":17790,"t":"code","b":[208,245],"m":"bne","oa":17781,"o":"b_4575"},{"a":17792,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17794,"l":"b_4582","t":"code","b":[189,208,8],"m":"lda","oa":2256,"o":"gfx_cells_08d0,x","x":[17833]},{"a":17797,"t":"code","b":[157,224,55],"m":"sta","oa":14304,"o":"f_37E0,x"},{"a":17800,"t":"code","b":[189,216,8],"m":"lda","oa":2264,"o":"f_08D8,x"},{"a":17803,"t":"code","b":[157,240,55],"m":"sta","oa":14320,"o":"f_37F0,x"},{"a":17806,"t":"code","b":[189,224,8],"m":"lda","oa":2272,"o":"f_08E0,x"},{"a":17809,"t":"code","b":[157,32,57],"m":"sta","oa":14624,"o":"f_3920,x"},{"a":17812,"t":"code","b":[189,232,8],"m":"lda","oa":2280,"o":"f_08E8,x"},{"a":17815,"t":"code","b":[157,48,57],"m":"sta","oa":14640,"o":"f_3930,x"},{"a":17818,"t":"code","b":[189,240,8],"m":"lda","oa":2288,"o":"f_08F0,x"},{"a":17821,"t":"code","b":[157,96,58],"m":"sta","oa":14944,"o":"f_3A60,x"},{"a":17824,"t":"code","b":[189,248,8],"m":"lda","oa":2296,"o":"f_08F8,x"},{"a":17827,"t":"code","b":[157,112,58],"m":"sta","oa":14960,"o":"f_3A70,x"},{"a":17830,"t":"code","b":[232],"m":"inx"},{"a":17831,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":17833,"t":"code","b":[208,215],"m":"bne","oa":17794,"o":"b_4582"},{"a":17835,"t":"code","b":[169,110],"m":"lda","o":"#$6E"},{"a":17837,"t":"code","b":[141,211,6],"m":"sta","oa":1747,"o":"f_06D3"},{"a":17840,"t":"code","b":[141,215,6],"m":"sta","oa":1751,"o":"a_06D7"},{"a":17843,"t":"code","b":[141,251,6],"m":"sta","oa":1787,"o":"f_06FB"},{"a":17846,"t":"code","b":[141,255,6],"m":"sta","oa":1791,"o":"a_06FF"},{"a":17849,"t":"code","b":[141,35,7],"m":"sta","oa":1827,"o":"f_0723"},{"a":17852,"t":"code","b":[141,39,7],"m":"sta","oa":1831,"o":"a_0727"},{"a":17855,"t":"code","b":[141,75,7],"m":"sta","oa":1867,"o":"f_074B"},{"a":17858,"t":"code","b":[141,79,7],"m":"sta","oa":1871,"o":"a_074F"},{"a":17861,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17863,"t":"code","b":[141,253,6],"m":"sta","oa":1789,"o":"a_06FD"},{"a":17866,"t":"code","b":[141,37,7],"m":"sta","oa":1829,"o":"a_0725"},{"a":17869,"t":"code","b":[141,77,7],"m":"sta","oa":1869,"o":"a_074D"},{"a":17872,"t":"code","b":[32,173,8],"m":"jsr","oa":2221,"o":"sprites_off_but_4_5"},{"a":17875,"t":"code","b":[96],"m":"rts"},{"a":17876,"l":"unused_45d4","c":"Unused: one zero byte after disabled_reveal_451f.","t":"byte","b":[0]},{"a":17877,"l":"sprites_off_quiet_irq","c":"JSR $8200: all sprites off ($D015=0) and the IRQ vector $0314/$0315 set to $8215 (JMP $BF30). Used before drawing a new room (11 callers, including $56B0, the room-picture routine).","t":"code","b":[32,0,130],"m":"jsr","oa":33280,"o":"sprites_off_irq_8215","x":[17539,17593,21265,21275,22192,23421,23431,23447,23457,25405,25415]},{"a":17880,"t":"code","b":[96],"m":"rts"},{"a":17881,"l":"unused_45d9","c":"Unused: 28 zero bytes.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":17889,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":17897,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":17905,"t":"byte","b":[0,0,0,0]},{"a":17909,"l":"room1_stand_and_loop","c":"End of a room 1 loop pass: standing frame $2C if facing right (frame below $2F), else $2F, then JMP $A817 (turns the screen back on if it is blank, $A84E, and starts room1_main_loop again).","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[17590]},{"a":17912,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":17914,"t":"code","b":[176,8],"m":"bcs","oa":17924,"o":"b_4604"},{"a":17916,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":17918,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17921,"t":"code","b":[76,23,168],"m":"jmp","oa":43031,"o":"reenter_loop_42ef"},{"a":17924,"l":"b_4604","t":"code","b":[169,47],"m":"lda","o":"#$2F","x":[17914]},{"a":17926,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":17929,"t":"code","b":[76,23,168],"m":"jmp","oa":43031,"o":"reenter_loop_42ef"},{"a":17932,"l":"unused_460c","c":"Unused: 4 zero bytes between room1_stand_and_loop and mrhat_cross_x256.","t":"byte","b":[0,0,0,0]},{"a":17936,"l":"mrhat_cross_x256","c":"Carries Mr Hat across the X=256 boundary of the sprite coordinate (bit 4 of $D010 is his X bit 8). Called when his X low byte is $00 or $FF: low byte $00 (he has stepped left from 257 to 256) clears the bit and sets X=$FE (254); anything else (low byte $FF: he has stepped right from 254 to 255) sets the bit and sets X=1 (257). 13 callers in rooms 2, 3 and later ($4B97, $53CB, $5C6D, $6475, $6D28, $7857, $94AE, $AB2B ...).","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[19351,19361,21451,23661,23669,25717,25724,27944,30807,38062,38070,43819,43829]},{"a":17939,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":17941,"t":"code","b":[208,14],"m":"bne","oa":17957,"o":"b_4625"},{"a":17943,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":17946,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":17948,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":17951,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":17953,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":17956,"t":"code","b":[96],"m":"rts"},{"a":17957,"l":"b_4625","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[17941]},{"a":17960,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":17962,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":17965,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":17967,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":17970,"t":"code","b":[96],"m":"rts"},{"a":17971,"l":"unused_4633","c":"Unused: one NOP and 5 zero bytes.","t":"byte","b":[234,0,0,0,0,0]},{"a":17977,"l":"room3_draw_picture","c":"Room 3 set-up helper: sprite 3's pointer $07FB=$26, then JSR $56B0 (sprites off and IRQ $8215 via $45D5, screen blanked by $A4FD, then $A573 fills the colour cells with the byte in $FD, which room3_setup sets to $BA). The picture itself is drawn afterwards by room3_setup and its continuations.","t":"code","b":[169,38],"m":"lda","o":"#$26","x":[17990]},{"a":17979,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":17982,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":17985,"t":"code","b":[96],"m":"rts"},{"a":17986,"l":"room3_setup","c":"Set-up of ROOM 3 (the status-line room digit '3' is drawn at $4824; the stage digit '2' by $8100 through $4850/$8128). Entered from room 1 ($4731), from room 2 ($5314, $4ACD=$18) and from the room at $9000 ($9500, $4ACD=$14). Draws the picture ($FD=$BA, room3_draw_picture), then sets colour cells (screen $0400, hires bitmap colours; $CC is grey on grey, blank): rows 13-18 all $CC; blocks of $CC 33x6 from row 2 column 3, 3x6 from row 8 column 20 and 3x4 from row 4 column 6; row 2 columns 20-22 $BC; rows 17-18 columns 3-5 $CC; and a 3x13 strip from row 6 column 20 $3C (the ladder's colours). Continues at room3_setup_2.","t":"code","b":[169,186],"m":"lda","o":"#$BA","x":[18225,21268,38144]},{"a":17988,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":17990,"t":"code","b":[32,57,70],"m":"jsr","oa":17977,"o":"room3_draw_picture"},{"a":17993,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17995,"l":"b_464B","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[18003]},{"a":17997,"t":"code","b":[157,8,6],"m":"sta","oa":1544,"o":"f_0608,x"},{"a":18000,"t":"code","b":[232],"m":"inx"},{"a":18001,"t":"code","b":[224,240],"m":"cpx","o":"#$F0"},{"a":18003,"t":"code","b":[208,246],"m":"bne","oa":17995,"o":"b_464B"},{"a":18005,"t":"code","b":[169,83],"m":"lda","o":"#$53"},{"a":18007,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18009,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":18011,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18013,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":18015,"l":"b_465F","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[18040]},{"a":18017,"l":"b_4661","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[18024]},{"a":18019,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":18021,"t":"code","b":[200],"m":"iny"},{"a":18022,"t":"code","b":[192,33],"m":"cpy","o":"#$21"},{"a":18024,"t":"code","b":[208,247],"m":"bne","oa":18017,"o":"b_4661"},{"a":18026,"t":"code","b":[24],"m":"clc"},{"a":18027,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18029,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":18031,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18033,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18035,"t":"code","b":[176,8],"m":"bcs","oa":18045,"o":"b_467D"},{"a":18037,"l":"j_4675","t":"code","b":[232],"m":"inx","x":[18047]},{"a":18038,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":18040,"t":"code","b":[208,229],"m":"bne","oa":18015,"o":"b_465F"},{"a":18042,"t":"code","b":[76,130,70],"m":"jmp","oa":18050,"o":"j_4682"},{"a":18045,"l":"b_467D","t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left","x":[18035]},{"a":18047,"t":"code","b":[76,117,70],"m":"jmp","oa":18037,"o":"j_4675"},{"a":18050,"l":"j_4682","t":"code","b":[169,84],"m":"lda","o":"#$54","x":[18042]},{"a":18052,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18054,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":18056,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18058,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":18060,"l":"b_468C","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[18083]},{"a":18062,"l":"b_468E","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[18069]},{"a":18064,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":18066,"t":"code","b":[200],"m":"iny"},{"a":18067,"t":"code","b":[192,3],"m":"cpy","o":"#$03"},{"a":18069,"t":"code","b":[208,247],"m":"bne","oa":18062,"o":"b_468E"},{"a":18071,"t":"code","b":[24],"m":"clc"},{"a":18072,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18074,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":18076,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18078,"t":"code","b":[176,8],"m":"bcs","oa":18088,"o":"b_46A8"},{"a":18080,"l":"j_46A0","t":"code","b":[232],"m":"inx","x":[18090]},{"a":18081,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":18083,"t":"code","b":[208,231],"m":"bne","oa":18060,"o":"b_468C"},{"a":18085,"t":"code","b":[76,173,70],"m":"jmp","oa":18093,"o":"j_46AD"},{"a":18088,"l":"b_46A8","t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left","x":[18078]},{"a":18090,"t":"code","b":[76,160,70],"m":"jmp","oa":18080,"o":"j_46A0"},{"a":18093,"l":"j_46AD","t":"code","b":[169,166],"m":"lda","o":"#$A6","x":[18085]},{"a":18095,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18097,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":18099,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18101,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":18103,"l":"b_46B7","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[18128]},{"a":18105,"l":"b_46B9","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[18112]},{"a":18107,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":18109,"t":"code","b":[200],"m":"iny"},{"a":18110,"t":"code","b":[192,3],"m":"cpy","o":"#$03"},{"a":18112,"t":"code","b":[208,247],"m":"bne","oa":18105,"o":"b_46B9"},{"a":18114,"t":"code","b":[24],"m":"clc"},{"a":18115,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18117,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":18119,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18121,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18123,"t":"code","b":[176,8],"m":"bcs","oa":18133,"o":"b_46D5"},{"a":18125,"l":"j_46CD","t":"code","b":[232],"m":"inx","x":[18135]},{"a":18126,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":18128,"t":"code","b":[208,229],"m":"bne","oa":18103,"o":"b_46B7"},{"a":18130,"t":"code","b":[76,218,70],"m":"jmp","oa":18138,"o":"j_46DA"},{"a":18133,"l":"b_46D5","t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left","x":[18123]},{"a":18135,"t":"code","b":[76,205,70],"m":"jmp","oa":18125,"o":"j_46CD"},{"a":18138,"l":"j_46DA","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[18130]},{"a":18140,"l":"b_46DC","t":"code","b":[169,188],"m":"lda","o":"#$BC","x":[18148]},{"a":18142,"t":"code","b":[157,100,4],"m":"sta","oa":1124,"o":"f_0464,x"},{"a":18145,"t":"code","b":[232],"m":"inx"},{"a":18146,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":18148,"t":"code","b":[208,246],"m":"bne","oa":18140,"o":"b_46DC"},{"a":18150,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":18152,"l":"b_46E8","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[18163]},{"a":18154,"t":"code","b":[157,171,6],"m":"sta","oa":1707,"o":"f_06AB,x"},{"a":18157,"t":"code","b":[157,211,6],"m":"sta","oa":1747,"o":"f_06D3,x"},{"a":18160,"t":"code","b":[232],"m":"inx"},{"a":18161,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":18163,"t":"code","b":[208,243],"m":"bne","oa":18152,"o":"b_46E8"},{"a":18165,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":18167,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18169,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":18171,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18173,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":18175,"l":"b_46FF","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[18200]},{"a":18177,"l":"b_4701","t":"code","b":[169,60],"m":"lda","o":"#$3C","x":[18184]},{"a":18179,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":18181,"t":"code","b":[200],"m":"iny"},{"a":18182,"t":"code","b":[192,3],"m":"cpy","o":"#$03"},{"a":18184,"t":"code","b":[208,247],"m":"bne","oa":18177,"o":"b_4701"},{"a":18186,"t":"code","b":[24],"m":"clc"},{"a":18187,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18189,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":18191,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18193,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18195,"t":"code","b":[176,8],"m":"bcs","oa":18205,"o":"b_471D"},{"a":18197,"l":"j_4715","t":"code","b":[232],"m":"inx","x":[18207]},{"a":18198,"t":"code","b":[224,13],"m":"cpx","o":"#$0D"},{"a":18200,"t":"code","b":[208,229],"m":"bne","oa":18175,"o":"b_46FF"},{"a":18202,"t":"code","b":[76,53,71],"m":"jmp","oa":18229,"o":"room3_setup_2"},{"a":18205,"l":"b_471D","t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left","x":[18195]},{"a":18207,"t":"code","b":[76,21,71],"m":"jmp","oa":18197,"o":"j_4715"},{"a":18210,"l":"room1_exit_to_room3","c":"Leaving room 1 (from $44BC and $44CE): blanks the status-line item cells (rows 23-24, columns 35-38: $07BB-$07BE, $07E3-$07E6 = $CC) and goes to room3_setup.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[17596,17614]},{"a":18212,"l":"b_4724","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[18223]},{"a":18214,"t":"code","b":[157,187,7],"m":"sta","oa":1979,"o":"f_07BB,x"},{"a":18217,"t":"code","b":[157,227,7],"m":"sta","oa":2019,"o":"f_07E3,x"},{"a":18220,"t":"code","b":[232],"m":"inx"},{"a":18221,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":18223,"t":"code","b":[208,243],"m":"bne","oa":18212,"o":"b_4724"},{"a":18225,"t":"code","b":[76,66,70],"m":"jmp","oa":17986,"o":"room3_setup"},{"a":18228,"l":"unused_4734","c":"Unused: one zero byte between room1_exit_to_room3 and room3_setup_2.","t":"byte","b":[0]},{"a":18229,"l":"room3_setup_2","c":"Room 3 set-up, continued: copies 24 bitmap bytes from $1119 (gfx_shelf, a shelf or table top that room 1 also draws) to $2320 (row 2, columns 20-22), draws four objects through $A7D9/$A7F8 at X,Y = 15,5 / 17,5 / 15,7 / 17,7, has one call replaced by INC $D022 ($4762, no visible effect), draws more through $AB70, $AB8F, $AB97 (with $27=$4C) and $ABAE, sets $100C=3 (the room number; room 2 sets 2), sprite 7 (a guardian) pointer $3D, colour 1, on, at X=$FF Y=$5C with its X bit 8 cleared, all sprites multicolour ($D01C=$FF), $100D=0, and draws the ladder: gfx_ladder_row copied into the bitmap 13 times from $2820 down (rows 6-18, columns 20-22, sprite X $B8).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[18202]},{"a":18231,"l":"b_4737","t":"code","b":[189,25,17],"m":"lda","oa":4377,"o":"gfx_shelf,x","x":[18240]},{"a":18234,"t":"code","b":[157,32,35],"m":"sta","oa":8992,"o":"f_2320,x"},{"a":18237,"t":"code","b":[232],"m":"inx"},{"a":18238,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":18240,"t":"code","b":[208,245],"m":"bne","oa":18231,"o":"b_4737"},{"a":18242,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":18244,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":18246,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":18249,"t":"code","b":[162,17],"m":"ldx","o":"#$11"},{"a":18251,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":18253,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":18256,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":18258,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":18260,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":18263,"t":"code","b":[162,17],"m":"ldx","o":"#$11"},{"a":18265,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":18267,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":18270,"t":"code","b":[162,33],"m":"ldx","o":"#$21"},{"a":18272,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":18274,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":18277,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":18279,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":18281,"t":"code","b":[32,112,171],"m":"jsr","oa":43888,"o":"draw_plant"},{"a":18284,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":18286,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":18288,"t":"code","b":[32,143,171],"m":"jsr","oa":43919,"o":"draw_pot"},{"a":18291,"t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":18293,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":18295,"t":"code","b":[32,112,171],"m":"jsr","oa":43888,"o":"draw_plant"},{"a":18298,"t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":18300,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":18302,"t":"code","b":[169,76],"m":"lda","o":"#$4C"},{"a":18304,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":18306,"t":"code","b":[32,151,171],"m":"jsr","oa":43927,"o":"draw_pot_size"},{"a":18309,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":18311,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":18313,"t":"code","b":[32,174,171],"m":"jsr","oa":43950,"o":"draw_drawers"},{"a":18316,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":18318,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":18321,"t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":18323,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":18326,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":18328,"t":"code","b":[141,46,208],"m":"sta","o":"vic_sprite7_colour"},{"a":18331,"t":"code","b":[234],"m":"nop"},{"a":18332,"t":"code","b":[234],"m":"nop"},{"a":18333,"t":"code","b":[234],"m":"nop"},{"a":18334,"t":"code","b":[234],"m":"nop"},{"a":18335,"t":"code","b":[76,162,71],"m":"jmp","oa":18338,"o":"j_47A2"},{"a":18338,"l":"j_47A2","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[18335]},{"a":18341,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":18343,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":18346,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":18348,"t":"code","b":[141,15,208],"m":"sta","o":"vic_sprite7_y"},{"a":18351,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":18353,"t":"code","b":[141,14,208],"m":"sta","o":"vic_sprite7_x"},{"a":18356,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":18359,"t":"code","b":[9,255],"m":"ora","o":"#$FF"},{"a":18361,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":18364,"t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":18366,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":18369,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":18372,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":18375,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":18377,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":18380,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":18382,"t":"code","b":[141,13,16],"m":"sta","oa":4109,"o":"anim_count_100d"},{"a":18385,"t":"code","b":[234],"m":"nop"},{"a":18386,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":18388,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18390,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":18392,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18394,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":18396,"l":"b_47DC","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[18424]},{"a":18398,"l":"b_47DE","t":"code","b":[185,2,72],"m":"lda","oa":18434,"o":"gfx_ladder_row,y","x":[18406]},{"a":18401,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":18403,"t":"code","b":[200],"m":"iny"},{"a":18404,"t":"code","b":[192,24],"m":"cpy","o":"#$18"},{"a":18406,"t":"code","b":[208,246],"m":"bne","oa":18398,"o":"b_47DE"},{"a":18408,"t":"code","b":[24],"m":"clc"},{"a":18409,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18411,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18413,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":18415,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":18417,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":18419,"t":"code","b":[176,8],"m":"bcs","oa":18429,"o":"b_47FD"},{"a":18421,"l":"j_47F5","t":"code","b":[232],"m":"inx","x":[18431]},{"a":18422,"t":"code","b":[224,13],"m":"cpx","o":"#$0D"},{"a":18424,"t":"code","b":[208,226],"m":"bne","oa":18396,"o":"b_47DC"},{"a":18426,"t":"code","b":[76,26,72],"m":"jmp","oa":18458,"o":"room3_setup_3"},{"a":18429,"l":"b_47FD","t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left","x":[18419]},{"a":18431,"t":"code","b":[76,245,71],"m":"jmp","oa":18421,"o":"j_47F5"},{"a":18434,"l":"gfx_ladder_row","c":"Bitmap bytes of one character row of a ladder, 3 cells (24 bytes: left cell, middle cell with the rung byte $FF, right cell). The ladders of rooms 2, 3, 5, 6, 8, 9, 10 and 11 are this row repeated: room 3 ($47DE, 13 rows at column 20) and room 2 ($4E7A, 17 rows at column 10) copy it themselves; rooms 5, 6, 8, 9, 10 and 11 set the operand of the shared copy $5713 ($5718/$5719) to $4802 and call it ($57B3, $57D0, $5E83, $664B, $719F, $8354, $854D). Called a ladder because Mr Hat climbs at exactly that X ($4AFD, $48F0, sprite X $B8 = column 20) with the climbing frames $32/$33. The side cells are irregular from row to row (left A8 1A 1A 1A 7A 1A 1A AA, right 1A A8 1A 18 AE A8 A8 12) and draw ragged rails; botowrap's fixed version replaces them with three straight rails a side, the rung carried into them (54 54 54 54 57 54 54 54 / 2A 2A 2A 2A EA 2A 2A 2A), a pattern found nowhere in the original. Whether the original was drawn so or damaged is open.","t":"byte","b":[168,26,26,26,122,26,26,170],"x":[18398,20090]},{"a":18442,"t":"byte","b":[0,0,0,0,255,0,0,0]},{"a":18450,"t":"byte","b":[26,168,26,24,174,168,168,18]},{"a":18458,"l":"room3_setup_3","c":"Room 3 set-up, continued: sprite 3 colour $0A ($D02A), sprite 3 pointer $3B, the ROOM digit '3' (glyph $1630/$1638) into the status line at $3D80/$3EC0 (column 24), then room3_setup_4.","t":"code","b":[169,10],"m":"lda","o":"#$0A","x":[18426]},{"a":18460,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":18463,"t":"code","b":[169,59],"m":"lda","o":"#$3B"},{"a":18465,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":18468,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":18470,"l":"b_4826","t":"code","b":[189,48,22],"m":"lda","oa":5680,"o":"digit_three_top,x","x":[18485]},{"a":18473,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":18476,"t":"code","b":[189,56,22],"m":"lda","oa":5688,"o":"digit_three_bottom,x"},{"a":18479,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":18482,"t":"code","b":[232],"m":"inx"},{"a":18483,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":18485,"t":"code","b":[208,239],"m":"bne","oa":18470,"o":"b_4826"},{"a":18487,"t":"code","b":[76,78,72],"m":"jmp","oa":18510,"o":"room3_setup_4"},{"a":18490,"l":"room3_exit_dispatch","c":"Room 3 exit, called through $6D9A each step while $D015 >= $8F: $4ACD=$08 (left edge of the bottom floor, set at $4C13) goes to room 2's set-up $4D80; $4ACD=$10 (right end, $4C36) goes to $9000; otherwise returns.","t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code","x":[28058]},{"a":18493,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":18495,"t":"code","b":[208,3],"m":"bne","oa":18500,"o":"b_4844"},{"a":18497,"t":"code","b":[76,128,77],"m":"jmp","oa":19840,"o":"room2_setup"},{"a":18500,"l":"b_4844","t":"code","b":[201,16],"m":"cmp","o":"#$10","x":[18495]},{"a":18502,"t":"code","b":[208,3],"m":"bne","oa":18507,"o":"r_484B"},{"a":18504,"t":"code","b":[76,0,144],"m":"jmp","oa":36864,"o":"room47_enter"},{"a":18507,"l":"r_484B","t":"code","b":[96],"m":"rts","x":[18502]},{"a":18508,"l":"unused_484c","c":"Unused: two NOP bytes after room3_exit_dispatch.","t":"byte","b":[234,234]},{"a":18510,"l":"room3_setup_4","c":"Room 3 set-up, continued: JSR $8128 ($99=0 and the STAGE digit '2' at $3DB8/$3EF8), sprite 3 (a guardian on the bottom floor) at X=$1FE (low $FE, bit 8 set), sprites 3 and 4 on, one dummy $D022 write, places Mr Hat by where he came from (room3_place_mrhat), and room3_setup_5.","t":"code","b":[234],"m":"nop","x":[18487]},{"a":18511,"t":"code","b":[234],"m":"nop"},{"a":18512,"t":"code","b":[32,40,129],"m":"jsr","oa":33064,"o":"stage2_status"},{"a":18515,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":18517,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":18520,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":18523,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":18525,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":18528,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":18531,"t":"code","b":[9,24],"m":"ora","o":"#$18"},{"a":18533,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":18536,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":18538,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":18541,"t":"code","b":[32,245,76],"m":"jsr","oa":19701,"o":"room3_place_mrhat"},{"a":18544,"t":"code","b":[76,124,72],"m":"jmp","oa":18556,"o":"room3_setup_5"},{"a":18547,"l":"dead_4873","c":"Unreachable fragment (CMP #$08, BEQ $487C, then Y=$B4 for Mr Hat) after the JMP at $4870; it falls into room3_setup_5. No reference found by bytes.","t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":18549,"t":"code","b":[240,5],"m":"beq","oa":18556,"o":"room3_setup_5"},{"a":18551,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":18553,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":18556,"l":"room3_setup_5","c":"Room 3 set-up, end: sprite 3 Y=$B4, sprite 2 (a falling guardian) X=$B9, pointer $2B, colour 7; clears $F8-$FF, sets $F9=$32 (first climbing frame for ladder_climb_step), installs room3_irq as the IRQ ($0314/$0315 = $48B0) and JMP $A81D (screen on, then room3_main_loop).","t":"code","b":[169,180],"m":"lda","o":"#$B4","x":[18544,18549]},{"a":18558,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":18561,"t":"code","b":[169,185],"m":"lda","o":"#$B9"},{"a":18563,"t":"code","b":[141,4,208],"m":"sta","o":"vic_sprite2_x"},{"a":18566,"t":"code","b":[169,43],"m":"lda","o":"#$2B"},{"a":18568,"t":"code","b":[141,250,7],"m":"sta","oa":2042,"o":"spr2_pointer"},{"a":18571,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":18573,"t":"code","b":[141,41,208],"m":"sta","o":"vic_sprite2_colour"},{"a":18576,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":18578,"l":"b_4892","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[18585]},{"a":18580,"t":"code","b":[149,248],"m":"sta","oa":248,"o":"frame_tick,x"},{"a":18582,"t":"code","b":[232],"m":"inx"},{"a":18583,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":18585,"t":"code","b":[208,247],"m":"bne","oa":18578,"o":"b_4892"},{"a":18587,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":18589,"t":"code","b":[133,249],"m":"sta","oa":249,"o":"frame_tick_hi"},{"a":18591,"t":"code","b":[120],"m":"sei"},{"a":18592,"s":"IRQ -> room3_irq","t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":18594,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":18597,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":18599,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":18602,"t":"code","b":[88],"m":"cli"},{"a":18603,"t":"code","b":[76,29,168],"m":"jmp","oa":43037,"o":"reenter_loop_4910"},{"a":18606,"l":"unused_48ae","c":"Unused: two zero bytes before room3_irq.","t":"byte","b":[0,0]},{"a":18608,"l":"room3_irq","c":"Room 3's IRQ handler (installed at $489F-$48AA; nothing calls it directly). JSR $B92D (sprite 7, frames $3D/$3E, 8 pixels left then 7 right in turn, counted in $100D) and JSR $B877 (sprite 3 one pixel left, its frame toggled $3B/$3C every 5 interrupts by $100A); then moves sprite 2 down one pixel and sprite 3 a second pixel left, so sprite 3 walks two pixels per interrupt; turns sprite 2 on when its Y reaches $44 and off from Y $B8 (it falls down the ladder's column, X=$B9); when sprite 3's X low byte reaches 0, flips its X bit 8 ($D010 bit 3) and sets X=$FE, so it walks right to left across the whole bottom floor repeatedly. Ends JMP $8215 (JMP $BF30, the shared IRQ tail).","t":"code","b":[32,45,185],"m":"jsr","oa":47405,"o":"anim_sprite7_shuffle"},{"a":18611,"t":"code","b":[238,5,208],"m":"inc","o":"vic_sprite2_y"},{"a":18614,"t":"code","b":[32,119,184],"m":"jsr","oa":47223,"o":"anim_sprite3_walk_left"},{"a":18617,"t":"code","b":[206,6,208],"m":"dec","o":"vic_sprite3_x"},{"a":18620,"t":"code","b":[173,5,208],"m":"lda","o":"vic_sprite2_y"},{"a":18623,"t":"code","b":[201,68],"m":"cmp","o":"#$44"},{"a":18625,"t":"code","b":[208,8],"m":"bne","oa":18635,"o":"b_48CB"},{"a":18627,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":18630,"t":"code","b":[9,4],"m":"ora","o":"#$04"},{"a":18632,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":18635,"l":"b_48CB","t":"code","b":[201,184],"m":"cmp","o":"#$B8","x":[18625]},{"a":18637,"t":"code","b":[144,8],"m":"bcc","oa":18647,"o":"b_48D7"},{"a":18639,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":18642,"t":"code","b":[41,251],"m":"and","o":"#$FB"},{"a":18644,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":18647,"l":"b_48D7","t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x","x":[18637]},{"a":18650,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":18652,"t":"code","b":[208,13],"m":"bne","oa":18667,"o":"b_48EB"},{"a":18654,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":18657,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":18659,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":18662,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":18664,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":18667,"l":"b_48EB","t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms","x":[18652]},{"a":18670,"l":"unused_48ee","c":"Unused: two zero bytes after room3_irq.","t":"byte","b":[0,0]},{"a":18672,"l":"room3_climb_up","c":"Room 3: Mr Hat steps onto the ladder at its foot (from $4BC5, stick up at X $B3-$C0 on the bottom floor): frame $22, Y=$B4, X=$B8, then repeats ladder_climb_with_collisions until he is at the top (Y=$5C) or back at the bottom (Y=$B4).","t":"code","b":[169,34],"m":"lda","o":"#$22","x":[19397]},{"a":18674,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18677,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":18679,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":18682,"t":"code","b":[169,184],"m":"lda","o":"#$B8"},{"a":18684,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":18687,"l":"b_48FF","t":"code","b":[32,12,75],"m":"jsr","oa":19212,"o":"ladder_climb_with_collisions","x":[18700]},{"a":18690,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":18693,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":18695,"t":"code","b":[208,1],"m":"bne","oa":18698,"o":"b_490A"},{"a":18697,"t":"code","b":[96],"m":"rts"},{"a":18698,"l":"b_490A","t":"code","b":[201,92],"m":"cmp","o":"#$5C","x":[18695]},{"a":18700,"t":"code","b":[208,241],"m":"bne","oa":18687,"o":"b_48FF"},{"a":18702,"t":"code","b":[96],"m":"rts"},{"a":18703,"l":"unused_490f","c":"Unused: a lone RTS after room3_climb_up that nothing reaches.","t":"byte","b":[96]},{"a":18704,"l":"room3_main_loop","c":"ROOM 3 main loop, entered from $A820 (the room table's second entry, JMP $A81D at $48AB). Clears $4ACD (room_exit_code) and sets the walking-frame bases $FF=$2F, $FD=$2C, then loops from room3_loop.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[43040]},{"a":18706,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":18709,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":18711,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18713,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":18715,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":18717,"l":"room3_loop","c":"One pass of room 3's loop (also JMP from $6DFC, inside a subroutine). room3_respawn_check first; then, as in room 1 but calling room3_step_checks after every movement: right ($DC00=$77) walks right with frames $2C-$2E, left ($7B) left with $2F-$31 (voice 2 off, footstep tick, a 5x256 delay at $501B); down ($7D) crouches (frame $2A) while held; fire alone ($6F) jumps 63 pixels across and 21 up in three 21-step phases (frames $2D/$2C/$2E right, $30/$2F/$31 left, jump_step_sound on the rising steps only, delay_80x256 after each phase). Every pass then tests fire with right ($67) or left ($6B) at $4A69 (reached by JMP from $4A0C whenever fire alone is not held), which jumps again, even from standing. Ends with the standing frame, the game-over test ($D8=$40 to game_over) and room3_step_checks, then loops. Stick up is not tested here; it climbs only at the ladder's foot (room3_bottom_floor), and stick down at its top (room3_top_floor) climbs down.","t":"code","b":[32,154,76],"m":"jsr","oa":19610,"o":"room3_respawn_check","x":[19104,28156]},{"a":18720,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":18723,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":18725,"t":"code","b":[208,44],"m":"bne","oa":18771,"o":"b_4953"},{"a":18727,"t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte"},{"a":18729,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":18731,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18734,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":18736,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":18738,"t":"code","b":[208,16],"m":"bne","oa":18756,"o":"b_4944"},{"a":18740,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":18742,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":18744,"t":"code","b":[230,253],"m":"inc","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":18746,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":18748,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":18750,"t":"code","b":[208,4],"m":"bne","oa":18756,"o":"b_4944"},{"a":18752,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":18754,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":18756,"l":"b_4944","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[18738,18750]},{"a":18759,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":18762,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":18765,"t":"code","b":[32,27,80],"m":"jsr","oa":20507,"o":"walk_step_delay"},{"a":18768,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":18771,"l":"b_4953","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[18725]},{"a":18774,"t":"code","b":[201,123],"m":"cmp","o":"#$7B"},{"a":18776,"t":"code","b":[208,44],"m":"bne","oa":18822,"o":"b_4986"},{"a":18778,"t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte"},{"a":18780,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18782,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18785,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":18787,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":18789,"t":"code","b":[208,16],"m":"bne","oa":18807,"o":"b_4977"},{"a":18791,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":18793,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":18795,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18797,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18799,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":18801,"t":"code","b":[208,4],"m":"bne","oa":18807,"o":"b_4977"},{"a":18803,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":18805,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":18807,"l":"b_4977","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[18789,18801]},{"a":18810,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":18813,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":18816,"t":"code","b":[32,27,80],"m":"jsr","oa":20507,"o":"walk_step_delay"},{"a":18819,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":18822,"l":"b_4986","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[18776]},{"a":18825,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":18827,"t":"code","b":[208,23],"m":"bne","oa":18852,"o":"b_49A4"},{"a":18829,"t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer"},{"a":18832,"t":"code","b":[72],"m":"pha"},{"a":18833,"l":"b_4991","t":"code","b":[169,42],"m":"lda","o":"#$2A","x":[18846]},{"a":18835,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18838,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":18841,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":18844,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":18846,"t":"code","b":[240,241],"m":"beq","oa":18833,"o":"b_4991"},{"a":18848,"t":"code","b":[104],"m":"pla"},{"a":18849,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18852,"l":"b_49A4","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[18827]},{"a":18855,"s":"fire alone: jump","t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":18857,"t":"code","b":[208,97],"m":"bne","oa":18956,"o":"b_4A0C"},{"a":18859,"l":"j_49AB","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[19059,19069]},{"a":18862,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":18864,"t":"code","b":[176,93],"m":"bcs","oa":18959,"o":"b_4A0F"},{"a":18866,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":18868,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18871,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":18874,"l":"b_49BA","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[18892]},{"a":18877,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":18880,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":18883,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":18885,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":18888,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":18890,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":18892,"t":"code","b":[208,236],"m":"bne","oa":18874,"o":"b_49BA"},{"a":18894,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":18896,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":18898,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":18901,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":18903,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18906,"l":"b_49DA","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[18918]},{"a":18909,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":18911,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":18914,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":18916,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":18918,"t":"code","b":[208,242],"m":"bne","oa":18906,"o":"b_49DA"},{"a":18920,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":18922,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":18924,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":18927,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":18929,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18932,"l":"b_49F4","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[18947]},{"a":18935,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":18938,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":18940,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":18943,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":18945,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":18947,"t":"code","b":[208,239],"m":"bne","oa":18932,"o":"b_49F4"},{"a":18949,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":18951,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":18953,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":18956,"l":"b_4A0C","t":"code","b":[76,105,74],"m":"jmp","oa":19049,"o":"j_4A69","x":[18857]},{"a":18959,"l":"b_4A0F","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[18864]},{"a":18961,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18964,"l":"b_4A14","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[18985]},{"a":18967,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":18970,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":18973,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":18976,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":18978,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":18981,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":18983,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":18985,"t":"code","b":[208,233],"m":"bne","oa":18964,"o":"b_4A14"},{"a":18987,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":18989,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":18991,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":18994,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":18996,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":18999,"l":"b_4A37","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[19011]},{"a":19002,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":19004,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":19007,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":19009,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":19011,"t":"code","b":[208,242],"m":"bne","oa":18999,"o":"b_4A37"},{"a":19013,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":19015,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":19017,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":19020,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":19022,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19025,"l":"b_4A51","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[19040]},{"a":19028,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":19031,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":19033,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":19036,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":19038,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":19040,"t":"code","b":[208,239],"m":"bne","oa":19025,"o":"b_4A51"},{"a":19042,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":19044,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":19046,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":19049,"l":"j_4A69","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[18956]},{"a":19052,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":19054,"t":"code","b":[208,6],"m":"bne","oa":19062,"o":"b_4A76"},{"a":19056,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":19059,"t":"code","b":[76,171,73],"m":"jmp","oa":18859,"o":"j_49AB"},{"a":19062,"l":"b_4A76","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[19054]},{"a":19064,"t":"code","b":[208,6],"m":"bne","oa":19072,"o":"b_4A80"},{"a":19066,"t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks"},{"a":19069,"t":"code","b":[76,171,73],"m":"jmp","oa":18859,"o":"j_49AB"},{"a":19072,"l":"b_4A80","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[19064]},{"a":19075,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":19077,"t":"code","b":[176,8],"m":"bcs","oa":19087,"o":"b_4A8F"},{"a":19079,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":19081,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19084,"t":"code","b":[76,148,74],"m":"jmp","oa":19092,"o":"j_4A94"},{"a":19087,"l":"b_4A8F","t":"code","b":[169,47],"m":"lda","o":"#$2F","x":[19077]},{"a":19089,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19092,"l":"j_4A94","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[19084]},{"a":19094,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":19096,"t":"code","b":[208,3],"m":"bne","oa":19101,"o":"b_4A9D"},{"a":19098,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":19101,"l":"b_4A9D","t":"code","b":[32,173,74],"m":"jsr","oa":19117,"o":"room3_step_checks","x":[19096]},{"a":19104,"t":"code","b":[76,29,73],"m":"jmp","oa":18717,"o":"room3_loop"},{"a":19107,"l":"clear_died_flag","c":"After a respawn: $F6=0 (the 'just died' flag) and Mr Hat's frame $2C. Called from $4CF1 and $8153.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[19697,33107]},{"a":19109,"t":"code","b":[133,246],"m":"sta","oa":246,"o":"dying_flag"},{"a":19111,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":19113,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19116,"t":"code","b":[96],"m":"rts"},{"a":19117,"l":"room3_step_checks","c":"Room 3 per-step checks, called after every movement step: JSR $6D90 (with $D015 >= $8F calls room3_exit_dispatch; otherwise game-over test and JMP $491D, which leaves this call's return address on the stack), then by Y: below $5D room3_top_floor, otherwise JSR $1043 (room3_bottom_floor plus the hazard tests at $1046-$107B).","t":"code","b":[32,144,109],"m":"jsr","oa":28048,"o":"room3_sprite_test","x":[18768,18819,18838,18885,18911,18940,18978,19004,19033,19056,19066,19101]},{"a":19120,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":19123,"t":"code","b":[201,93],"m":"cmp","o":"#$5D"},{"a":19125,"t":"code","b":[176,4],"m":"bcs","oa":19131,"o":"b_4ABB"},{"a":19127,"t":"code","b":[32,208,74],"m":"jsr","oa":19152,"o":"room3_top_floor"},{"a":19130,"t":"code","b":[96],"m":"rts"},{"a":19131,"l":"b_4ABB","t":"code","b":[32,67,16],"m":"jsr","oa":4163,"o":"check_hazard_1043","x":[19125]},{"a":19134,"t":"code","b":[96],"m":"rts"},{"a":19135,"l":"unused_4abf","c":"Unused: one zero byte after room3_step_checks.","t":"byte","b":[0]},{"a":19136,"l":"ladder_step_delay","c":"Delay after each ladder step: Y counts 256 for each X up to the self-modified limit at $4AC9 ($0C, so 12x256).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[19271,19323]},{"a":19138,"l":"b_4AC2","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[19146]},{"a":19140,"l":"b_4AC4","t":"code","b":[200],"m":"iny","x":[19141]},{"a":19141,"t":"code","b":[208,253],"m":"bne","oa":19140,"o":"b_4AC4"},{"a":19143,"t":"code","b":[232],"m":"inx"},{"a":19144,"t":"code","b":[224,12],"m":"cpx","o":"#$0C"},{"a":19145,"t":"note","l":"ladder_delay_count","c":"Self-modified operand of CPX #$0C: the length of ladder_step_delay. Written with $0C by $706F, $7122, $712A, $75C7 and $8455 (the value it already holds).","note":"inside the item at $4AC8","x":[28783,28962,28970,30151,33877]},{"a":19146,"t":"code","b":[208,246],"m":"bne","oa":19138,"o":"b_4AC2"},{"a":19148,"t":"code","b":[96],"m":"rts"},{"a":19149,"l":"room_exit_code","c":"Room transition code, shared by all rooms (about 45 accesses from $483A to $964C): the exit Mr Hat took, which the next room's set-up reads to place him. In rooms 2 and 3: $08 room 3 left edge to room 2 ($4C13), $10 room 3 right end to the room at $9000 ($4C36), $18 room 2 to room 3 (placed at the bottom floor's left, $4CF5), $14 the $9000 room to room 3 (bottom floor right, $94FD). Cleared at game start ($567A) and at the start of room 3's loop ($4912). $10 in the hand-over, $00 in play-room1.vsf.","t":"byte","b":[16],"x":[18490,18706,19475,19510,19701,20619,21258,21488,21887,22138,22776,23414,23440,23552,23865,24623,25398,25830,26509,27446,27681,27800,27972,28081,28739,29941,31031,31070,31473,31508,33801,35167,36864,37015,38132,38141,38157,38173,38189,38207,38216,38232,38248,38264,38476]},{"a":19150,"l":"guardian_touch_flag","c":"Guardian-touch flag: the shared collision test $55B0 sets it to $20 ($55E7) when $D01E holds one of its exact values; its callers read it and, when $20, kill Mr Hat ($55F5) and clear it: $5593/$55A2 (the shared check $5590), $5D7F/$5D90 (room 5's ladders), $6587/$6598 (room6_ladder_hit), $6DDC (room8_shaft_ride), $7B23/$7B34 (room9_ladder_collision). Cleared at game start ($567D) and at $7092. $20 in the hand-over, $00 in play-room1.vsf.","t":"byte","b":[32],"x":[21907,21922,21991,22141,23935,23952,25991,26008,28124,28818,31523,31540]},{"a":19151,"l":"unused_4acf","c":"Unused as far as found: $5F, no reference by address.","t":"byte","b":[95]},{"a":19152,"l":"room3_top_floor","c":"Room 3 top floor (Y < $5D), per step: JSR $AB24 (crosses X=256 through mrhat_cross_x256, hazard tests through $A97C that can cost a life at $AB62, returns X in A). X=$30: pushed one step right (left wall). Otherwise (X < $B3, X >= $C1, or X $B3-$C0 without the stick down): JSR $8E08 (guardian_hit_check $4C40, then the object pick-ups $8E13). X $B3-$C0 with stick down ($7D): climbs down the ladder (room3_climb_down).","t":"code","b":[32,36,171],"m":"jsr","oa":43812,"o":"room_spots_ab24","x":[19127]},{"a":19155,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":19157,"t":"code","b":[208,12],"m":"bne","oa":19171,"o":"b_4AE3"},{"a":19159,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":19162,"t":"code","b":[96],"m":"rts"},{"a":19163,"l":"dead_4adb","c":"Unreachable fragment: CMP #$30, BNE $4AE3, INC $D022, RTS. Nothing references $4ADB (searched by bytes).","t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":19165,"t":"code","b":[208,4],"m":"bne","oa":19171,"o":"b_4AE3"},{"a":19167,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":19170,"t":"code","b":[96],"m":"rts"},{"a":19171,"l":"b_4AE3","t":"code","b":[201,179],"m":"cmp","o":"#$B3","x":[19157,19165]},{"a":19173,"t":"code","b":[176,4],"m":"bcs","oa":19179,"o":"b_4AEB"},{"a":19175,"l":"b_4AE7","t":"code","b":[32,8,142],"m":"jsr","oa":36360,"o":"pickups_after_4c40","x":[19181,19188]},{"a":19178,"t":"code","b":[96],"m":"rts"},{"a":19179,"l":"b_4AEB","t":"code","b":[201,193],"m":"cmp","o":"#$C1","x":[19173]},{"a":19181,"t":"code","b":[176,248],"m":"bcs","oa":19175,"o":"b_4AE7"},{"a":19183,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":19186,"s":"stick down at the ladder top","t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":19188,"t":"code","b":[208,241],"m":"bne","oa":19175,"o":"b_4AE7"},{"a":19190,"t":"code","b":[32,253,74],"m":"jsr","oa":19197,"o":"room3_climb_down"},{"a":19193,"t":"code","b":[96],"m":"rts"},{"a":19194,"l":"unused_4afa","c":"Unused: 3 zero bytes between room3_top_floor and room3_climb_down.","t":"byte","b":[0,0,0]},{"a":19197,"l":"room3_climb_down","c":"Room 3: Mr Hat steps onto the ladder at its top: frame $22, Y=$5C, X=$B8, then ladder_climb_with_collisions.","t":"code","b":[169,34],"m":"lda","o":"#$22","x":[19190]},{"a":19199,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19202,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":19204,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":19207,"t":"code","b":[169,184],"m":"lda","o":"#$B8"},{"a":19209,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19212,"l":"ladder_climb_with_collisions","c":"Ladder loop for room 3: ladder_climb_step, then $5028 (sprite collision $D01E = $14 or $18 kills through room3_ladder_guardian_hit $4CC7), repeated until Mr Hat's Y is $B4 (bottom) or $5C (top). Entered by falling through from room3_climb_down ($4AFD) and called from room3_climb_up ($48FF).","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[18687,19228]},{"a":19215,"t":"code","b":[32,40,80],"m":"jsr","oa":20520,"o":"hat_hit_by_sprite2_or_3"},{"a":19218,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":19221,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":19223,"t":"code","b":[208,1],"m":"bne","oa":19226,"o":"b_4B1A"},{"a":19225,"t":"code","b":[96],"m":"rts"},{"a":19226,"l":"b_4B1A","t":"code","b":[201,92],"m":"cmp","o":"#$5C","x":[19223]},{"a":19228,"t":"code","b":[208,238],"m":"bne","oa":19212,"o":"ladder_climb_with_collisions"},{"a":19230,"t":"code","b":[96],"m":"rts"},{"a":19231,"l":"unused_4b1f","c":"Unused: one zero byte after ladder_climb_with_collisions.","t":"byte","b":[0]},{"a":19232,"l":"ladder_climb_step","c":"One step on a ladder, shared by the rooms (10 callers: $4B0C, $5545, $5D05, $5D25, $6505, $6DA5, $7AE5, $7B05, $8410, $8953). Stick down ($DC00=$7D exactly): Y+1; stick up ($7E): Y-1; each with the climbing frame from $F9 ($32/$33, changed every 5 steps by counter $F8), ladder_step_delay, voice 2 off and the footstep tick. Any other input: no move. Returns either way.","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[19212,21829,23813,23845,25861,28069,31461,31493,33808,35155]},{"a":19235,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":19237,"t":"code","b":[208,45],"m":"bne","oa":19284,"o":"b_4B54"},{"a":19239,"t":"code","b":[230,248],"m":"inc","oa":248,"o":"frame_tick"},{"a":19241,"t":"code","b":[165,249],"m":"lda","oa":249,"o":"frame_tick_hi"},{"a":19243,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19246,"t":"code","b":[165,248],"m":"lda","oa":248,"o":"frame_tick"},{"a":19248,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":19250,"t":"code","b":[208,16],"m":"bne","oa":19268,"o":"b_4B44"},{"a":19252,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":19254,"t":"code","b":[133,248],"m":"sta","oa":248,"o":"frame_tick"},{"a":19256,"t":"code","b":[230,249],"m":"inc","oa":249,"o":"frame_tick_hi"},{"a":19258,"t":"code","b":[165,249],"m":"lda","oa":249,"o":"frame_tick_hi"},{"a":19260,"t":"code","b":[201,52],"m":"cmp","o":"#$34"},{"a":19262,"t":"code","b":[208,4],"m":"bne","oa":19268,"o":"b_4B44"},{"a":19264,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":19266,"t":"code","b":[133,249],"m":"sta","oa":249,"o":"frame_tick_hi"},{"a":19268,"l":"b_4B44","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[19250,19262]},{"a":19271,"t":"code","b":[32,192,74],"m":"jsr","oa":19136,"o":"ladder_step_delay"},{"a":19274,"t":"code","b":[234],"m":"nop"},{"a":19275,"t":"code","b":[234],"m":"nop"},{"a":19276,"t":"code","b":[234],"m":"nop"},{"a":19277,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":19280,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":19283,"t":"code","b":[96],"m":"rts"},{"a":19284,"l":"b_4B54","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[19237]},{"a":19287,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":19289,"t":"code","b":[208,44],"m":"bne","oa":19335,"o":"b_4B87"},{"a":19291,"t":"code","b":[230,248],"m":"inc","oa":248,"o":"frame_tick"},{"a":19293,"t":"code","b":[165,249],"m":"lda","oa":249,"o":"frame_tick_hi"},{"a":19295,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19298,"t":"code","b":[165,248],"m":"lda","oa":248,"o":"frame_tick"},{"a":19300,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":19302,"t":"code","b":[208,16],"m":"bne","oa":19320,"o":"b_4B78"},{"a":19304,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":19306,"t":"code","b":[133,248],"m":"sta","oa":248,"o":"frame_tick"},{"a":19308,"t":"code","b":[230,249],"m":"inc","oa":249,"o":"frame_tick_hi"},{"a":19310,"t":"code","b":[165,249],"m":"lda","oa":249,"o":"frame_tick_hi"},{"a":19312,"t":"code","b":[201,52],"m":"cmp","o":"#$34"},{"a":19314,"t":"code","b":[208,4],"m":"bne","oa":19320,"o":"b_4B78"},{"a":19316,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":19318,"t":"code","b":[133,249],"m":"sta","oa":249,"o":"frame_tick_hi"},{"a":19320,"l":"b_4B78","t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y","x":[19302,19314]},{"a":19323,"t":"code","b":[32,192,74],"m":"jsr","oa":19136,"o":"ladder_step_delay"},{"a":19326,"t":"code","b":[234],"m":"nop"},{"a":19327,"t":"code","b":[234],"m":"nop"},{"a":19328,"t":"code","b":[234],"m":"nop"},{"a":19329,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":19332,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":19335,"l":"b_4B87","t":"code","b":[234],"m":"nop","x":[19289]},{"a":19336,"t":"code","b":[234],"m":"nop"},{"a":19337,"t":"code","b":[234],"m":"nop"},{"a":19338,"t":"code","b":[96],"m":"rts"},{"a":19339,"l":"unused_4b8b","c":"Unused: two zero bytes after ladder_climb_step.","t":"byte","b":[0,0]},{"a":19341,"l":"room3_bottom_floor","c":"Room 3 bottom floor (Y >= $5D), per step, from $1043: JSR $8E08 (guardian_hit_check, then the object pick-ups $8E13); X low byte $FF or $00: mrhat_cross_x256. X $B3-$C0 with stick up ($7E): onto the ladder (room3_climb_up). With $D010 below $29 (taken to mean Mr Hat's X bit 8 clear): X=$40 with cell $06AB = $7C (the yellow object at rows 17-18, columns 3-5) takes it: dummy $D022 writes, voice1_off, voice1_off_b, cells $06AB-$06AD, $06D3-$06D5 blanked ($CC); X below $18 leaves by the left: room_exit_code=$08, X bit 8 set and X=$FE (room3_exit_left_place). With $D010 at $29 or more and X low byte $50 (X=$150): room_exit_code=$10. The exits themselves happen in room3_exit_dispatch.","t":"code","b":[32,8,142],"m":"jsr","oa":36360,"o":"pickups_after_4c40","x":[4163]},{"a":19344,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":19347,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":19349,"t":"code","b":[208,6],"m":"bne","oa":19357,"o":"b_4B9D"},{"a":19351,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":19354,"t":"code","b":[76,175,75],"m":"jmp","oa":19375,"o":"room3_bottom_ladder_test"},{"a":19357,"l":"b_4B9D","t":"code","b":[201,0],"m":"cmp","o":"#$00","x":[19349]},{"a":19359,"t":"code","b":[208,14],"m":"bne","oa":19375,"o":"room3_bottom_ladder_test"},{"a":19361,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":19364,"t":"code","b":[76,175,75],"m":"jmp","oa":19375,"o":"room3_bottom_ladder_test"},{"a":19367,"l":"room3_exit_left_place","c":"X=$FE for Mr Hat (with bit 8 set by the caller, X=$1FE); reached from $4C1E when he leaves room 3 by the left.","t":"code","b":[169,254],"m":"lda","o":"#$FE","x":[19486]},{"a":19369,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19372,"t":"code","b":[96],"m":"rts"},{"a":19373,"l":"unused_4bad","c":"Unused: two NOP bytes inside room3_bottom_floor.","t":"byte","b":[234,234]},{"a":19375,"l":"room3_bottom_ladder_test","c":"Part of room3_bottom_floor: X below $B3 skips to the object and exit tests ($4BC9); $B3-$C0 tests stick up for the ladder.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[19354,19359,19364]},{"a":19378,"t":"code","b":[201,179],"m":"cmp","o":"#$B3"},{"a":19380,"t":"code","b":[176,4],"m":"bcs","oa":19386,"o":"b_4BBA"},{"a":19382,"l":"b_4BB6","t":"code","b":[208,17],"m":"bne","oa":19401,"o":"b_4BC9","x":[19395]},{"a":19384,"t":"code","b":[96],"m":"rts"},{"a":19385,"l":"unused_4bb9","c":"Unused: a lone RTS inside room3_bottom_floor that nothing reaches.","t":"byte","b":[96]},{"a":19386,"l":"b_4BBA","c":"room3_bottom_floor, X at $B3 or more: from $C1 on to the object and exit tests, otherwise the ladder if the stick is up.","t":"code","b":[201,193],"m":"cmp","o":"#$C1","x":[19380]},{"a":19388,"t":"code","b":[176,11],"m":"bcs","oa":19401,"o":"b_4BC9"},{"a":19390,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":19393,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":19395,"t":"code","b":[208,241],"m":"bne","oa":19382,"o":"b_4BB6"},{"a":19397,"t":"code","b":[32,240,72],"m":"jsr","oa":18672,"o":"room3_climb_up"},{"a":19400,"t":"code","b":[96],"m":"rts"},{"a":19401,"l":"b_4BC9","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[19382,19388]},{"a":19404,"s":"whole register compared, not bit 4","t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":19406,"t":"code","b":[176,51],"m":"bcs","oa":19459,"o":"b_4C03"},{"a":19408,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":19411,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":19413,"t":"code","b":[208,44],"m":"bne","oa":19459,"o":"b_4C03"},{"a":19415,"t":"code","b":[173,171,6],"m":"lda","oa":1707,"o":"f_06AB"},{"a":19418,"t":"code","b":[201,124],"m":"cmp","o":"#$7C"},{"a":19420,"t":"code","b":[208,37],"m":"bne","oa":19459,"o":"b_4C03"},{"a":19422,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":19424,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":19427,"t":"code","b":[32,138,68],"m":"jsr","oa":17546,"o":"voice1_off"},{"a":19430,"t":"code","b":[32,23,69],"m":"jsr","oa":17687,"o":"voice1_off_b"},{"a":19433,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":19435,"l":"b_4BEB","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[19441]},{"a":19438,"t":"code","b":[200],"m":"iny"},{"a":19439,"t":"code","b":[192,5],"m":"cpy","o":"#$05"},{"a":19441,"t":"code","b":[208,248],"m":"bne","oa":19435,"o":"b_4BEB"},{"a":19443,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":19445,"l":"b_4BF5","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[19456]},{"a":19447,"t":"code","b":[157,171,6],"m":"sta","oa":1707,"o":"f_06AB,x"},{"a":19450,"t":"code","b":[157,211,6],"m":"sta","oa":1747,"o":"f_06D3,x"},{"a":19453,"t":"code","b":[232],"m":"inx"},{"a":19454,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":19456,"t":"code","b":[208,243],"m":"bne","oa":19445,"o":"b_4BF5"},{"a":19458,"t":"code","b":[96],"m":"rts"},{"a":19459,"l":"b_4C03","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[19406,19413,19420]},{"a":19462,"s":"whole register compared, not bit 4","t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":19464,"t":"code","b":[176,24],"m":"bcs","oa":19490,"o":"b_4C22"},{"a":19466,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":19469,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":19471,"t":"code","b":[176,16],"m":"bcs","oa":19489,"o":"r_4C21"},{"a":19473,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":19475,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":19478,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":19481,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":19483,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":19486,"t":"code","b":[76,167,75],"m":"jmp","oa":19367,"o":"room3_exit_left_place"},{"a":19489,"l":"r_4C21","t":"code","b":[96],"m":"rts","x":[19471,19495]},{"a":19490,"l":"b_4C22","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[19464]},{"a":19493,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":19495,"t":"code","b":[208,248],"m":"bne","oa":19489,"o":"r_4C21"},{"a":19497,"t":"code","b":[234],"m":"nop"},{"a":19498,"t":"code","b":[234],"m":"nop"},{"a":19499,"t":"code","b":[234],"m":"nop"},{"a":19500,"t":"code","b":[234],"m":"nop"},{"a":19501,"t":"code","b":[234],"m":"nop"},{"a":19502,"t":"code","b":[234],"m":"nop"},{"a":19503,"t":"code","b":[234],"m":"nop"},{"a":19504,"t":"code","b":[234],"m":"nop"},{"a":19505,"t":"code","b":[234],"m":"nop"},{"a":19506,"t":"code","b":[234],"m":"nop"},{"a":19507,"t":"code","b":[234],"m":"nop"},{"a":19508,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":19510,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":19513,"t":"code","b":[96],"m":"rts"},{"a":19514,"l":"unused_4c3a","c":"Unused: six RTS bytes ($60) after room3_bottom_floor.","t":"byte","b":[96,96,96,96,96,96]},{"a":19520,"l":"guardian_hit_check","c":"Guardian collision for room 3 only: its one caller is $8E08, which only room 3 calls (top floor $4AE7, bottom floor $4B8D). JSR $B666 (loses a life by lose_life if $D01E = $90, sprites 4 and 7, then returns $D01E again); A = $14 (sprites 2 and 4) or $18 (sprites 3 and 4) also loses a life. Exact values: a hit while a third sprite also touches gives another value and does not kill.","t":"code","b":[32,102,182],"m":"jsr","oa":46694,"o":"check_hat_sprite7_hit","x":[36360]},{"a":19523,"t":"code","b":[201,20],"m":"cmp","o":"#$14"},{"a":19525,"t":"code","b":[208,3],"m":"bne","oa":19530,"o":"b_4C4A"},{"a":19527,"t":"code","b":[32,82,76],"m":"jsr","oa":19538,"o":"lose_life"},{"a":19530,"l":"b_4C4A","t":"code","b":[201,24],"m":"cmp","o":"#$18","x":[19525]},{"a":19532,"t":"code","b":[208,3],"m":"bne","oa":19537,"o":"r_4C51"},{"a":19534,"t":"code","b":[32,82,76],"m":"jsr","oa":19538,"o":"lose_life"},{"a":19537,"l":"r_4C51","t":"code","b":[96],"m":"rts","x":[19532]},{"a":19538,"l":"lose_life","c":"Mr Hat dies and loses one life mark (called from $1061, $1077, $AB62, $B66D and guardian_hit_check). JSR $A877 (the death sequence: he sinks into the floor), reads $D01E to clear it, hides sprite 4, one dummy $D022 write, sets $F6=$30 (the 'just died' flag the room loop tests), then lives_mark_remove. Its first byte is switched between JSR ($20, stored at $BF4C and $1281) and RTS ($60, $1258) by the timed invulnerability code at $1250/$1265/$BF4A, which does the same to $A877.","t":"code","b":[32,119,168],"m":"jsr","oa":43127,"o":"hat_death","x":[4193,4215,4696,4737,19527,19534,43874,46701,48972]},{"a":19541,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":19544,"t":"code","b":[234],"m":"nop"},{"a":19545,"t":"code","b":[234],"m":"nop"},{"a":19546,"t":"code","b":[234],"m":"nop"},{"a":19547,"t":"code","b":[234],"m":"nop"},{"a":19548,"t":"code","b":[234],"m":"nop"},{"a":19549,"t":"code","b":[234],"m":"nop"},{"a":19550,"t":"code","b":[234],"m":"nop"},{"a":19551,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":19554,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":19556,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":19559,"t":"code","b":[173,34,208],"m":"lda","o":"vic_background1"},{"a":19562,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":19564,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":19567,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":19569,"t":"code","b":[133,246],"m":"sta","oa":246,"o":"dying_flag"},{"a":19571,"l":"lives_mark_remove","c":"Removes one life mark from the status line: if cell $07B9 (row 23, column 33) is $6C it becomes $CC, else if $07BA is $6C it becomes $CC (each also stores $CC in $D021, no visible effect), else JSR $1700 (the same for $07E1/$07E2 holding $BC; with none left sets $D8=$40, game over). Note that room 1's start-up colours $07B9/$07BA $BC ($6E6E) and room 1's own copy at $1D86 tests for $BC, so this $6C test finds nothing unless something recolours those cells; not established.","t":"code","b":[173,185,7],"m":"lda","oa":1977,"o":"lives_mark_1","x":[19686]},{"a":19574,"t":"code","b":[201,108],"m":"cmp","o":"#$6C"},{"a":19576,"t":"code","b":[208,9],"m":"bne","oa":19587,"o":"b_4C83"},{"a":19578,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":19580,"t":"code","b":[141,185,7],"m":"sta","oa":1977,"o":"lives_mark_1"},{"a":19583,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":19586,"t":"code","b":[96],"m":"rts"},{"a":19587,"l":"b_4C83","t":"code","b":[173,186,7],"m":"lda","oa":1978,"o":"lives_mark_2","x":[19576]},{"a":19590,"t":"code","b":[201,108],"m":"cmp","o":"#$6C"},{"a":19592,"t":"code","b":[208,9],"m":"bne","oa":19603,"o":"b_4C93"},{"a":19594,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":19596,"t":"code","b":[141,186,7],"m":"sta","oa":1978,"o":"lives_mark_2"},{"a":19599,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":19602,"t":"code","b":[96],"m":"rts"},{"a":19603,"l":"b_4C93","t":"code","b":[32,0,23],"m":"jsr","oa":5888,"o":"lose_life_lower_marks","x":[19592]},{"a":19606,"t":"code","b":[234],"m":"nop"},{"a":19607,"t":"code","b":[96],"m":"rts"},{"a":19608,"l":"unused_4c98","c":"Unused: two zero bytes after lose_life.","t":"byte","b":[0,0]},{"a":19610,"l":"room3_respawn_check","c":"Start of each room 3 loop pass: if $F6=$30 (just died), puts Mr Hat at X=$50 (bit 8 cleared), Y=$5C, the top floor, and JSR $814F ($99=0, clear_died_flag). Otherwise turns sprite 4 on and gives it colour $0B.","t":"code","b":[165,246],"m":"lda","oa":246,"o":"dying_flag","x":[18717]},{"a":19612,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":19614,"t":"code","b":[208,23],"m":"bne","oa":19639,"o":"b_4CB7"},{"a":19616,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":19619,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":19621,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":19624,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":19626,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19629,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":19631,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":19634,"t":"code","b":[32,79,129],"m":"jsr","oa":33103,"o":"clear99_face_right"},{"a":19637,"t":"code","b":[96],"m":"rts"},{"a":19638,"l":"unused_4cb6","c":"Unused: one zero byte inside room3_respawn_check, between its two paths.","t":"byte","b":[0]},{"a":19639,"l":"b_4CB7","c":"room3_respawn_check, normal pass: Mr Hat's sprite on, colour $0B.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[19614]},{"a":19642,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":19644,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":19647,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":19649,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":19652,"t":"code","b":[96],"m":"rts"},{"a":19653,"l":"unused_4cc5","c":"Unused: two zero bytes before room2_guardian_hit.","t":"byte","b":[0,0]},{"a":19655,"l":"room3_ladder_guardian_hit","c":"Guardian hit on room 3's ladder: called from $502F/$5037 in $5028 when $D01E is $14 or $18; $5028's only caller is $4B0F, inside room 3's ladder loop $4B0C (called from room3_climb_up at $48FF and entered by falling through from room3_climb_down $4AFD). If $A877 holds $AD (the death routine is not switched off by the invulnerability code): JSR $A877 (death), Mr Hat to X=$50, Y=$5C, lives_mark_remove, sprite 4 off, clear_died_flag. Otherwise only reads $D01E.","t":"code","b":[173,119,168],"m":"lda","oa":43127,"o":"hat_death","x":[20527,20535]},{"a":19658,"t":"code","b":[201,173],"m":"cmp","o":"#$AD"},{"a":19660,"t":"code","b":[240,4],"m":"beq","oa":19666,"o":"b_4CD2"},{"a":19662,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":19665,"t":"code","b":[96],"m":"rts"},{"a":19666,"l":"b_4CD2","t":"code","b":[32,119,168],"m":"jsr","oa":43127,"o":"hat_death","x":[19660]},{"a":19669,"t":"code","b":[234],"m":"nop"},{"a":19670,"t":"code","b":[234],"m":"nop"},{"a":19671,"t":"code","b":[234],"m":"nop"},{"a":19672,"t":"code","b":[234],"m":"nop"},{"a":19673,"t":"code","b":[234],"m":"nop"},{"a":19674,"t":"code","b":[234],"m":"nop"},{"a":19675,"t":"code","b":[234],"m":"nop"},{"a":19676,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":19678,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19681,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":19683,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":19686,"t":"code","b":[32,115,76],"m":"jsr","oa":19571,"o":"lives_mark_remove"},{"a":19689,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":19692,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":19694,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":19697,"t":"code","b":[32,163,74],"m":"jsr","oa":19107,"o":"clear_died_flag"},{"a":19700,"t":"code","b":[96],"m":"rts"},{"a":19701,"l":"room3_place_mrhat","c":"Places Mr Hat on entering room 3, by room_exit_code: $18 (from room 2) X=$18, Y=$B4, facing right (bottom floor, left end); $14 (from the room at $9000) X=$148, Y=$B4, facing left (bottom floor, right end); anything else (from room 1) X=$58, Y=$5C, facing right (top floor), then JSR $505E (two INC $D022, no visible effect).","t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code","x":[18541]},{"a":19704,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":19706,"t":"code","b":[208,24],"m":"bne","oa":19732,"o":"b_4D14"},{"a":19708,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":19711,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":19713,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":19716,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":19718,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19721,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":19723,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":19726,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":19728,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19731,"t":"code","b":[96],"m":"rts"},{"a":19732,"l":"b_4D14","t":"code","b":[201,20],"m":"cmp","o":"#$14","x":[19706]},{"a":19734,"t":"code","b":[208,24],"m":"bne","oa":19760,"o":"b_4D30"},{"a":19736,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":19739,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":19741,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":19744,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":19746,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19749,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":19751,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":19754,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":19756,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19759,"t":"code","b":[96],"m":"rts"},{"a":19760,"l":"b_4D30","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[19734]},{"a":19763,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":19765,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":19768,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":19770,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19773,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":19775,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":19778,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":19780,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19783,"t":"code","b":[32,94,80],"m":"jsr","oa":20574,"o":"bump_d022_twice"},{"a":19786,"t":"code","b":[96],"m":"rts"},{"a":19787,"l":"unused_4d4b","c":"Unused: 5 zero bytes.","t":"byte","b":[0,0,0,0,0]},{"a":19792,"l":"room1_respawn_position","c":"Room 1 respawn, from $1FD7 at the start of a room 1 loop pass after a death: on the bottom floor (Y >= $95) X=$38 facing right (frame $2C), on the upper floors X=$FF facing left (frame $2F), next to the lift. Y is kept. Clears $F6, the 'just died' flag.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[8151]},{"a":19795,"t":"code","b":[201,149],"m":"cmp","o":"#$95"},{"a":19797,"t":"code","b":[144,15],"m":"bcc","oa":19814,"o":"b_4D66"},{"a":19799,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":19801,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19804,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":19806,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19809,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":19811,"t":"code","b":[133,246],"m":"sta","oa":246,"o":"dying_flag"},{"a":19813,"t":"code","b":[96],"m":"rts"},{"a":19814,"l":"b_4D66","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[19797]},{"a":19816,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":19819,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":19821,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":19824,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":19826,"t":"code","b":[133,246],"m":"sta","oa":246,"o":"dying_flag"},{"a":19828,"t":"code","b":[96],"m":"rts"},{"a":19829,"l":"unused_4d75","c":"Unused: 11 zero bytes.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19837,"t":"byte","b":[0,0,0]},{"a":19840,"l":"room2_setup","c":"Set-up of ROOM 2, from every way in: room 3's left exit (JMP at $4841), room 6's exit ($6340, room6_exit_check) and the code rooms 4 and 7 share ($9520, $9530, $956B in room47_edges_exits; $957B in dead_cmp_956e). Draws the room picture with $FD=$BA (JSR $56B0, as room 3) and continues at room2_setup_2.","t":"code","b":[169,186],"m":"lda","o":"#$BA","x":[18497,25408,38176,38192,38251,38267]},{"a":19842,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":19844,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":19847,"t":"code","b":[76,184,77],"m":"jmp","oa":19896,"o":"room2_setup_2"},{"a":19850,"l":"gfx_unused_4d8a","c":"6 zero bytes, then 16 bytes in the shape of bitmap cell data ($03 $04 $0D $0B $1B $17 $37 $2F / $C0 $E0 $F0 $F0 $F8 $F8 $FC $FC). No reference to $4D8A-$4D9F found (searched by bytes); unused as far as found.","t":"byte","b":[0,0,0,0,0,0,3,4]},{"a":19858,"t":"byte","b":[13,11,27,23,55,47,192,224]},{"a":19866,"t":"byte","b":[240,240,248,248,252,252]},{"a":19872,"l":"show_room_digit_5","c":"Draws the ROOM digit '5' (glyph $1650/$1658) into the status line at $3D80/$3EC0 (column 24). Called only from $8137, which room 5's set-up calls first ($573D JSR $8137) and which then calls $8100 (the STAGE digit '2').","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[33079]},{"a":19874,"l":"b_4DA2","t":"code","b":[189,80,22],"m":"lda","oa":5712,"o":"digit_five_top,x","x":[19889]},{"a":19877,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":19880,"t":"code","b":[189,88,22],"m":"lda","oa":5720,"o":"digit_five_bottom,x"},{"a":19883,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":19886,"t":"code","b":[232],"m":"inx"},{"a":19887,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":19889,"t":"code","b":[208,239],"m":"bne","oa":19874,"o":"b_4DA2"},{"a":19891,"t":"code","b":[96],"m":"rts"},{"a":19892,"l":"unused_4db4","c":"Unused: 4 zero bytes between show_room_digit_5 and room2_setup_2.","t":"byte","b":[0,0,0,0]},{"a":19896,"l":"room2_setup_2","c":"Room 2 set-up, continued: colour blocks through $56ED (value $FB, start $FE/$FF, $FC wide, $FD rows): $CC 38x6 from row 13 column 2, $CC 25x6 from row 2 column 6, and twice $3C 3x17 from row 6 column 10 (the ladder's colours). Then JMP $1031 (draws at 22,14 and 28,14), which goes on to room2_setup_3.","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[19847]},{"a":19898,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":19900,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":19902,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":19904,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":19906,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":19908,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":19910,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":19912,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":19914,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":19916,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":19919,"t":"code","b":[169,86],"m":"lda","o":"#$56"},{"a":19921,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":19923,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":19925,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":19927,"t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":19929,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":19931,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":19933,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":19935,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":19938,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":19940,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":19942,"t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":19944,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":19946,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":19948,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":19950,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":19952,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":19954,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":19956,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":19958,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":19961,"t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":19963,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":19965,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":19967,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":19969,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":19971,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":19973,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":19975,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":19977,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":19980,"t":"code","b":[76,49,16],"m":"jmp","oa":4145,"o":"room_draw_tail_1031"},{"a":19983,"l":"room2_take_item","c":"Room 2: Mr Hat takes the object at rows 16-17, column 4 (called from $5406 at X=$40 when cell $0684 is $6C). Unless an object is already carried ($D8=$50, set by any of the four object takes): $F5=$20, $4F0B=$CC (only feeds dummy $D022 writes), cells $0684 and $06AC blanked, the item shown in the status line (cells $07BE/$07E6 = $6C, column 38), two dummy $D022 writes, voice 1 off, and $D8=$50 to mark an object carried. $D8 is also the game-over flag ($40).","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[21510]},{"a":19985,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":19987,"t":"code","b":[208,1],"m":"bne","oa":19990,"o":"b_4E16"},{"a":19989,"t":"code","b":[96],"m":"rts"},{"a":19990,"l":"b_4E16","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[19987]},{"a":19992,"t":"code","b":[133,245],"m":"sta","oa":245,"o":"room_var_f5"},{"a":19994,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":19996,"t":"code","b":[141,11,79],"m":"sta","oa":20235,"o":"room2_dummy_colour_4f0b"},{"a":19999,"t":"code","b":[141,132,6],"m":"sta","oa":1668,"o":"a_0684"},{"a":20002,"t":"code","b":[141,172,6],"m":"sta","oa":1708,"o":"a_06AC"},{"a":20005,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":20007,"t":"code","b":[141,190,7],"m":"sta","oa":1982,"o":"carried_item_cell_top"},{"a":20010,"t":"code","b":[141,230,7],"m":"sta","oa":2022,"o":"carried_item_cell_bottom"},{"a":20013,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":20016,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":20019,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":20022,"t":"code","b":[32,194,28],"m":"jsr","oa":7362,"o":"sound_stub_1cc2"},{"a":20025,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":20027,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":20029,"t":"code","b":[96],"m":"rts"},{"a":20030,"l":"unused_4e3e","c":"Unused: 48 NOP bytes ($EA) between room2_take_item and room2_setup_3.","t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":20038,"t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":20046,"t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":20054,"t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":20062,"t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":20070,"t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":20078,"l":"room2_setup_3","c":"ROOM 2 set-up, continued (JMP from $103F): the ladder, gfx_ladder_row 17 times from bitmap $27D0 (rows 6-22, columns 10-12); cells $04F7-$04F9 and $051F-$0521 (rows 6-7, columns 7-9) set to the value in the operand $4EA1; $100C=2, $100A=0; the ROOM digit '2' (glyph $1620/$1628) at $3D80/$3EC0; cells $06D6-$06D7, $0687-$0688, $06AF-$06B0 $CC and $06D8 $DC; an object drawn by $A7D9/$A7F8 at 7,$10 and 7,$12; then the patched block room2_object_switches.","t":"code","b":[169,208],"m":"lda","o":"#$D0","x":[4159]},{"a":20080,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":20082,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":20084,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":20086,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":20088,"l":"b_4E78","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[20116]},{"a":20090,"l":"b_4E7A","t":"code","b":[185,2,72],"m":"lda","oa":18434,"o":"gfx_ladder_row,y","x":[20098]},{"a":20093,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":20095,"t":"code","b":[200],"m":"iny"},{"a":20096,"t":"code","b":[192,24],"m":"cpy","o":"#$18"},{"a":20098,"t":"code","b":[208,246],"m":"bne","oa":20090,"o":"b_4E7A"},{"a":20100,"t":"code","b":[24],"m":"clc"},{"a":20101,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":20103,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":20105,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":20107,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":20109,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":20111,"t":"code","b":[176,8],"m":"bcs","oa":20121,"o":"b_4E99"},{"a":20113,"l":"j_4E91","t":"code","b":[232],"m":"inx","x":[20123]},{"a":20114,"t":"code","b":[224,17],"m":"cpx","o":"#$11"},{"a":20116,"t":"code","b":[208,226],"m":"bne","oa":20088,"o":"b_4E78"},{"a":20118,"t":"code","b":[76,158,78],"m":"jmp","oa":20126,"o":"j_4E9E"},{"a":20121,"l":"b_4E99","t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left","x":[20111]},{"a":20123,"t":"code","b":[76,145,78],"m":"jmp","oa":20113,"o":"j_4E91"},{"a":20126,"l":"j_4E9E","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[20118]},{"a":20128,"l":"b_4EA0","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[20139]},{"a":20129,"t":"note","l":"room2_cells_4f7_colour","c":"Self-modified operand: the colour written to cells $04F7-$04F9/$051F-$0521 at each room 2 set-up. $5472 stores $CC here when that object is taken; nothing found stores another value, and it is $CC in the hand-over.","note":"inside the item at $4EA0","x":[21618]},{"a":20130,"t":"code","b":[157,247,4],"m":"sta","oa":1271,"o":"f_04F7,x"},{"a":20133,"t":"code","b":[157,31,5],"m":"sta","oa":1311,"o":"f_051F,x"},{"a":20136,"t":"code","b":[232],"m":"inx"},{"a":20137,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":20139,"t":"code","b":[208,243],"m":"bne","oa":20128,"o":"b_4EA0"},{"a":20141,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":20143,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":20146,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":20148,"t":"code","b":[141,10,16],"m":"sta","oa":4106,"o":"anim_count_100a"},{"a":20151,"t":"code","b":[234],"m":"nop"},{"a":20152,"t":"code","b":[234],"m":"nop"},{"a":20153,"t":"code","b":[234],"m":"nop"},{"a":20154,"t":"code","b":[234],"m":"nop"},{"a":20155,"t":"code","b":[234],"m":"nop"},{"a":20156,"t":"code","b":[234],"m":"nop"},{"a":20157,"t":"code","b":[234],"m":"nop"},{"a":20158,"t":"code","b":[234],"m":"nop"},{"a":20159,"t":"code","b":[234],"m":"nop"},{"a":20160,"t":"code","b":[234],"m":"nop"},{"a":20161,"t":"code","b":[234],"m":"nop"},{"a":20162,"t":"code","b":[234],"m":"nop"},{"a":20163,"t":"code","b":[234],"m":"nop"},{"a":20164,"t":"code","b":[234],"m":"nop"},{"a":20165,"t":"code","b":[234],"m":"nop"},{"a":20166,"t":"code","b":[234],"m":"nop"},{"a":20167,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":20169,"l":"b_4EC9","t":"code","b":[189,32,22],"m":"lda","oa":5664,"o":"digit_two_top,x","x":[20184]},{"a":20172,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":20175,"t":"code","b":[189,40,22],"m":"lda","oa":5672,"o":"digit_two_bottom,x"},{"a":20178,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":20181,"t":"code","b":[232],"m":"inx"},{"a":20182,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":20184,"t":"code","b":[208,239],"m":"bne","oa":20169,"o":"b_4EC9"},{"a":20186,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":20188,"l":"b_4EDC","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[20202]},{"a":20190,"t":"code","b":[157,214,6],"m":"sta","oa":1750,"o":"f_06D6,x"},{"a":20193,"t":"code","b":[157,135,6],"m":"sta","oa":1671,"o":"f_0687,x"},{"a":20196,"t":"code","b":[157,175,6],"m":"sta","oa":1711,"o":"f_06AF,x"},{"a":20199,"t":"code","b":[232],"m":"inx"},{"a":20200,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":20202,"t":"code","b":[208,240],"m":"bne","oa":20188,"o":"b_4EDC"},{"a":20204,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":20206,"t":"code","b":[141,216,6],"m":"sta","oa":1752,"o":"a_06D8"},{"a":20209,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":20211,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":20213,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":20216,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":20218,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":20220,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":20223,"t":"code","b":[234],"m":"nop"},{"a":20224,"t":"code","b":[234],"m":"nop"},{"a":20225,"t":"code","b":[234],"m":"nop"},{"a":20226,"t":"code","b":[234],"m":"nop"},{"a":20227,"t":"code","b":[234],"m":"nop"},{"a":20228,"t":"code","b":[234],"m":"nop"},{"a":20229,"t":"code","b":[234],"m":"nop"},{"a":20230,"t":"code","b":[234],"m":"nop"},{"a":20231,"t":"code","b":[234],"m":"nop"},{"a":20232,"t":"code","b":[234],"m":"nop"},{"a":20233,"t":"code","b":[234],"m":"nop"},{"a":20234,"l":"room2_object_switches","c":"Room 2 set-up: LDA #$6C and two dummy STA $D022, then a run of NOPs left from removed code that holds the patched byte $4F28, then the colour cells of room 2's candle at rows 4-6, columns 23-25 ($04B7-$04B9, $04DF-$04E1, $0508) from the operands $4F6E and $4F7E (so the candle stays gone once taken), and room2_draw_shapes.","t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":20235,"t":"note","l":"room2_dummy_colour_4f0b","c":"Self-modified operand of LDA #$6C, whose only use is two STA $D022 (no visible effect): $6C at game start ($568D), $CC after room2_take_item ($4E1C).","note":"inside the item at $4F0A","x":[19996,22157]},{"a":20236,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":20239,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":20242,"t":"code","b":[234],"m":"nop"},{"a":20243,"t":"code","b":[234],"m":"nop"},{"a":20244,"l":"b_4F14","t":"code","b":[234],"m":"nop","x":[20264]},{"a":20245,"t":"code","b":[234],"m":"nop"},{"a":20246,"t":"code","b":[234],"m":"nop"},{"a":20247,"t":"code","b":[234],"m":"nop"},{"a":20248,"t":"code","b":[234],"m":"nop"},{"a":20249,"t":"code","b":[234],"m":"nop"},{"a":20250,"t":"code","b":[234],"m":"nop"},{"a":20251,"t":"code","b":[234],"m":"nop"},{"a":20252,"t":"code","b":[234],"m":"nop"},{"a":20253,"t":"code","b":[234],"m":"nop"},{"a":20254,"t":"code","b":[234],"m":"nop"},{"a":20255,"t":"code","b":[234],"m":"nop"},{"a":20256,"t":"code","b":[234],"m":"nop"},{"a":20257,"t":"code","b":[234],"m":"nop"},{"a":20258,"t":"code","b":[234],"m":"nop"},{"a":20259,"t":"code","b":[234],"m":"nop"},{"a":20260,"t":"code","b":[234],"m":"nop"},{"a":20261,"t":"code","b":[234],"m":"nop"},{"a":20262,"t":"code","b":[234],"m":"nop"},{"a":20263,"t":"code","b":[234],"m":"nop"},{"a":20264,"l":"room2_patch_byte_4f28","c":"A byte in the NOP run that other code rewrites: $90 at game start ($5695) and $CC when room 2's barrier at $0464 is opened ($54AA, which needs the carried object $F5=$20). As an instruction $CC is CPY $EAEA (harmless), but $90 is BCC $4F14, which would loop on these NOPs for ever if carry were clear on arrival (after JSR $A7F8 at $4EFC); facts.md traces it as set, so it never branches (not re-traced here).","t":"code","b":[144,234],"m":"bcc","oa":20244,"o":"b_4F14","x":[21674,22165]},{"a":20266,"t":"code","b":[234],"m":"nop"},{"a":20267,"t":"code","b":[234],"m":"nop"},{"a":20268,"t":"code","b":[234],"m":"nop"},{"a":20269,"t":"code","b":[234],"m":"nop"},{"a":20270,"t":"code","b":[234],"m":"nop"},{"a":20271,"t":"code","b":[234],"m":"nop"},{"a":20272,"t":"code","b":[234],"m":"nop"},{"a":20273,"t":"code","b":[234],"m":"nop"},{"a":20274,"t":"code","b":[234],"m":"nop"},{"a":20275,"t":"code","b":[234],"m":"nop"},{"a":20276,"t":"code","b":[234],"m":"nop"},{"a":20277,"t":"code","b":[234],"m":"nop"},{"a":20278,"t":"code","b":[234],"m":"nop"},{"a":20279,"t":"code","b":[234],"m":"nop"},{"a":20280,"t":"code","b":[234],"m":"nop"},{"a":20281,"t":"code","b":[234],"m":"nop"},{"a":20282,"t":"code","b":[234],"m":"nop"},{"a":20283,"t":"code","b":[234],"m":"nop"},{"a":20284,"t":"code","b":[234],"m":"nop"},{"a":20285,"t":"code","b":[234],"m":"nop"},{"a":20286,"t":"code","b":[234],"m":"nop"},{"a":20287,"t":"code","b":[234],"m":"nop"},{"a":20288,"t":"code","b":[234],"m":"nop"},{"a":20289,"t":"code","b":[234],"m":"nop"},{"a":20290,"t":"code","b":[234],"m":"nop"},{"a":20291,"t":"code","b":[234],"m":"nop"},{"a":20292,"t":"code","b":[234],"m":"nop"},{"a":20293,"t":"code","b":[234],"m":"nop"},{"a":20294,"t":"code","b":[234],"m":"nop"},{"a":20295,"t":"code","b":[234],"m":"nop"},{"a":20296,"t":"code","b":[234],"m":"nop"},{"a":20297,"t":"code","b":[234],"m":"nop"},{"a":20298,"t":"code","b":[234],"m":"nop"},{"a":20299,"t":"code","b":[234],"m":"nop"},{"a":20300,"t":"code","b":[234],"m":"nop"},{"a":20301,"t":"code","b":[234],"m":"nop"},{"a":20302,"t":"code","b":[234],"m":"nop"},{"a":20303,"t":"code","b":[234],"m":"nop"},{"a":20304,"t":"code","b":[234],"m":"nop"},{"a":20305,"t":"code","b":[234],"m":"nop"},{"a":20306,"t":"code","b":[234],"m":"nop"},{"a":20307,"t":"code","b":[234],"m":"nop"},{"a":20308,"t":"code","b":[234],"m":"nop"},{"a":20309,"t":"code","b":[234],"m":"nop"},{"a":20310,"t":"code","b":[234],"m":"nop"},{"a":20311,"t":"code","b":[234],"m":"nop"},{"a":20312,"t":"code","b":[234],"m":"nop"},{"a":20313,"t":"code","b":[234],"m":"nop"},{"a":20314,"t":"code","b":[234],"m":"nop"},{"a":20315,"t":"code","b":[234],"m":"nop"},{"a":20316,"t":"code","b":[234],"m":"nop"},{"a":20317,"t":"code","b":[234],"m":"nop"},{"a":20318,"t":"code","b":[234],"m":"nop"},{"a":20319,"t":"code","b":[234],"m":"nop"},{"a":20320,"t":"code","b":[234],"m":"nop"},{"a":20321,"t":"code","b":[234],"m":"nop"},{"a":20322,"t":"code","b":[234],"m":"nop"},{"a":20323,"t":"code","b":[234],"m":"nop"},{"a":20324,"t":"code","b":[234],"m":"nop"},{"a":20325,"t":"code","b":[234],"m":"nop"},{"a":20326,"t":"code","b":[234],"m":"nop"},{"a":20327,"t":"code","b":[234],"m":"nop"},{"a":20328,"t":"code","b":[234],"m":"nop"},{"a":20329,"t":"code","b":[234],"m":"nop"},{"a":20330,"t":"code","b":[234],"m":"nop"},{"a":20331,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":20333,"l":"b_4F6D","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[20347]},{"a":20334,"t":"note","l":"room2_colour_4f6e","c":"Self-modified operand: colour for cells $04B7-$04B9, $04DF, $04E1 (rows 4-5, columns 23-25, room 2's candle): $7C (yellow) at game start ($5688), $CC once the candle is taken ($54EA).","note":"inside the item at $4F6D","x":[21738,22152]},{"a":20335,"t":"code","b":[157,183,4],"m":"sta","oa":1207,"o":"f_04B7,x"},{"a":20338,"t":"code","b":[141,223,4],"m":"sta","oa":1247,"o":"a_04DF"},{"a":20341,"t":"code","b":[141,225,4],"m":"sta","oa":1249,"o":"a_04E1"},{"a":20344,"t":"code","b":[232],"m":"inx"},{"a":20345,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":20347,"t":"code","b":[208,240],"m":"bne","oa":20333,"o":"b_4F6D"},{"a":20349,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":20350,"t":"note","l":"room2_colour_4f7e","c":"Self-modified operand: colour for cells $04E0 and $0508 (rows 5-6, column 24, the candle's middle): $1C at game start ($569A), $CC once the candle is taken ($54ED).","note":"inside the item at $4F7D","x":[21741,22170]},{"a":20351,"t":"code","b":[141,224,4],"m":"sta","oa":1248,"o":"a_04E0"},{"a":20354,"t":"code","b":[141,8,5],"m":"sta","oa":1288,"o":"a_0508"},{"a":20357,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":20358,"t":"note","l":"room2_dummy_colour_4f86","c":"Self-modified operand of LDA #$6C before STA $D022 (no visible effect): $6C at game start ($5690), $CC once taken ($54F0).","note":"inside the item at $4F85","x":[21744,22160]},{"a":20359,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":20362,"t":"code","b":[76,205,79],"m":"jmp","oa":20429,"o":"room2_draw_shapes"},{"a":20365,"l":"gfx_room2_row4","c":"24 bitmap bytes (3 cells) copied to bitmap $25B8 (row 4, columns 23-25) by room2_draw_shapes; the middle cell is a small rounded shape ($08 $18 $1C $1C $36 $36 $1C).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[20431]},{"a":20373,"t":"byte","b":[0,8,24,28,28,54,54,28]},{"a":20381,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":20389,"l":"gfx_room2_row5","c":"24 bitmap bytes copied to $26F8 (row 5, columns 23-25); the middle cell is a vertical bar ($1C x7).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[20437]},{"a":20397,"t":"byte","b":[0,28,28,28,28,28,28,28]},{"a":20405,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":20413,"l":"gfx_room2_unused_4fbd","c":"8 zero bytes, read by room2_draw_shapes into $D022 only (a removed copy); together with $4FC5 the 24 bytes it reads run into the code at $4FCD.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[20443]},{"a":20421,"l":"gfx_room2_row6","c":"Bitmap bytes copied to $2840 (row 6, columns 24-26): the 8 bytes here ($1C x4, $00 x4), then 16 more that are the code at $4FCD-$4FDC, since the copy is 24 bytes long. Whether the bitmap there is visible or redrawn later is not established.","t":"byte","b":[28,28,28,28,0,0,0,0],"x":[20449]},{"a":20429,"l":"room2_draw_shapes","c":"Room 2 set-up: copies the 24-byte rows gfx_room2_row4/row5/row6 into the bitmap, sets cells $06E0-$06E1 to $CC, and JMP $500B, which copies gfx_room2_row18 to bitmap $3700 and goes on with the set-up.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[20362]},{"a":20431,"l":"b_4FCF","t":"code","b":[189,141,79],"m":"lda","oa":20365,"o":"gfx_room2_row4,x","x":[20458]},{"a":20434,"t":"code","b":[157,184,37],"m":"sta","oa":9656,"o":"f_25B8,x"},{"a":20437,"t":"code","b":[189,165,79],"m":"lda","oa":20389,"o":"gfx_room2_row5,x"},{"a":20440,"t":"code","b":[157,248,38],"m":"sta","oa":9976,"o":"f_26F8,x"},{"a":20443,"t":"code","b":[189,189,79],"m":"lda","oa":20413,"o":"gfx_room2_unused_4fbd,x"},{"a":20446,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":20449,"t":"code","b":[189,197,79],"m":"lda","oa":20421,"o":"gfx_room2_row6,x"},{"a":20452,"t":"code","b":[157,64,40],"m":"sta","oa":10304,"o":"f_2840,x"},{"a":20455,"t":"code","b":[232],"m":"inx"},{"a":20456,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":20458,"t":"code","b":[208,227],"m":"bne","oa":20431,"o":"b_4FCF"},{"a":20460,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":20462,"l":"b_4FEE","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[20470]},{"a":20464,"t":"code","b":[157,224,6],"m":"sta","oa":1760,"o":"f_06E0,x"},{"a":20467,"t":"code","b":[232],"m":"inx"},{"a":20468,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":20470,"t":"code","b":[208,246],"m":"bne","oa":20462,"o":"b_4FEE"},{"a":20472,"t":"code","b":[76,11,80],"m":"jmp","oa":20491,"o":"room2_setup_finish"},{"a":20475,"l":"gfx_room2_row18","c":"First 5 of 16 bitmap bytes (two cells, row 18, columns 16-17) that $500B copies to $3700; the block goes on to $500A.","t":"byte","b":[0,1,1,3,3],"x":[20493]},{"a":20480,"l":"room2_cell_graphic_tail","c":"Room 2 (stage 2): the last 11 bytes of a 16-byte bitmap graphic that starts at $4FFB ($4FFB-$500A: 00 01 01 03 03 07 07 07 / F8 E4 F4 F2 F2 F9 F9 FD, two character cells). room2_setup_finish ($500B) copies it to bitmap $3700-$370F, character row 18, columns 16-17.","t":"byte","b":[7]},{"a":20481,"l":"f_5001","c":"Second byte of room2_cell_graphic_tail. Also the starting value of the self-modified operand of LDA $5001,X at $760C in room 9's IRQ, which copies 24 bytes to $D022 (a register bitmap mode does not show) and then adds $27 to its own low byte ($761A-$761F), so only the first pass reads $5001-$5018; later passes read elsewhere in page $50 ($50E1 in room9.vsf, $5009 in room9-lit.vsf, $5001 in the snapshots of other rooms).","t":"byte","b":[7,7,248,228,244,242,242,249],"x":[30220]},{"a":20489,"t":"byte","b":[249,253]},{"a":20491,"l":"room2_setup_finish","c":"Room 2 (stage 2) set-up, last step: reached by JMP from $4FF8 at the end of room 2's set-up (which draws the ROOM digit 2 at $4EC7 and stores $100C = 2 at $4EAF). Copies the 16 bytes $4FFB-$500A to bitmap $3700-$370F (row 18, columns 16-17), then JMP room2_place_sprites ($5076).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[20472]},{"a":20493,"l":"b_500D","t":"code","b":[189,251,79],"m":"lda","oa":20475,"o":"gfx_room2_row18,x","x":[20502]},{"a":20496,"t":"code","b":[157,0,55],"m":"sta","oa":14080,"o":"f_3700,x"},{"a":20499,"t":"code","b":[232],"m":"inx"},{"a":20500,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":20502,"t":"code","b":[208,245],"m":"bne","oa":20493,"o":"b_500D"},{"a":20504,"t":"code","b":[76,118,80],"m":"jmp","oa":20598,"o":"room2_place_sprites"},{"a":20507,"l":"walk_step_delay","c":"Shared pause after each walking step: X counts 5 passes of a 256-pass Y loop. Sets the walking speed. Called by walk_right ($5366), walk_left ($5396) and room 3's walking code ($494D, $4980). Clobbers X and Y.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[18765,18816,21350,21398]},{"a":20509,"l":"b_501D","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[20517]},{"a":20511,"l":"b_501F","t":"code","b":[200],"m":"iny","x":[20512]},{"a":20512,"t":"code","b":[208,253],"m":"bne","oa":20511,"o":"b_501F"},{"a":20514,"t":"code","b":[232],"m":"inx"},{"a":20515,"t":"code","b":[224,5],"m":"cpx","o":"#$05"},{"a":20517,"t":"code","b":[208,246],"m":"bne","oa":20509,"o":"b_501D"},{"a":20519,"t":"code","b":[96],"m":"rts"},{"a":20520,"l":"hat_hit_by_sprite2_or_3","c":"Collision test of room 3's ladder: its one caller is $4B0F in the ladder loop $4B0C, which room3_climb_up calls ($48FF) and room3_climb_down falls into ($4AFD). Reads $D01E and only when it is exactly $14 (sprites 2 and 4) or $18 (sprites 3 and 4; Mr Hat is sprite 4) calls $4CC7, which runs the death sequence $A877 if $A877 still begins with $AD. Any other value, three sprites at once included, is ignored.","t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision","x":[19215]},{"a":20523,"t":"code","b":[201,20],"m":"cmp","o":"#$14"},{"a":20525,"t":"code","b":[208,4],"m":"bne","oa":20531,"o":"b_5033"},{"a":20527,"t":"code","b":[32,199,76],"m":"jsr","oa":19655,"o":"room3_ladder_guardian_hit"},{"a":20530,"l":"r_5032","t":"code","b":[96],"m":"rts","x":[20533]},{"a":20531,"l":"b_5033","t":"code","b":[201,24],"m":"cmp","o":"#$18","x":[20525]},{"a":20533,"t":"code","b":[208,251],"m":"bne","oa":20530,"o":"r_5032"},{"a":20535,"t":"code","b":[32,199,76],"m":"jsr","oa":19655,"o":"room3_ladder_guardian_hit"},{"a":20537,"t":"note","l":"f_5039","c":"High byte of the JSR $4CC7 operand above. The same address is the starting operand of the self-modifying LDA $5039,X at $9244, which copies 24 bytes from page $50 into the bitmap at $3248/$3388 and then adds $27 to its own low byte ($9252): the bytes of this page serve that routine as a pattern source.","note":"inside the item at $5037","x":[37444]},{"a":20538,"t":"code","b":[96],"m":"rts"},{"a":20539,"l":"d022_values_a","c":"Eight bytes (00 3C 7E FF FF DB 66 00) that set_d022_from_table ($504A) writes one by one to $D022, interleaved with $5043-$5049; read as a bitmap the fifteen bytes draw a small 8-pixel-wide shape. $504A uses indices 0-6, so $5042 is never read by it.","t":"byte","b":[0,60,126,255,255,219,102,0],"x":[20556]},{"a":20547,"l":"d022_values_b","c":"Seven bytes (3C 3C 3C 3C 18 00 00) that $504A writes to $D022 after each byte of $503B; the last one, $00, is the value left in $D022.","t":"byte","b":[60,60,60,60,24,0,0],"x":[20562]},{"a":20554,"l":"set_d022_from_table","c":"Writes $503B+X and then $5043+X to $D022 (background colour 1) for X = 0-6, leaving $D022 = $00. Called only by $8130, which only room 2's room2_place_sprites calls ($5076); room 3's $4850 calls $8128, which skips it. Play runs in bitmap mode, which does not display $D022 (c64-reference), so these writes have no visible effect found.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[33072]},{"a":20556,"l":"b_504C","t":"code","b":[189,59,80],"m":"lda","oa":20539,"o":"d022_values_a,x","x":[20571]},{"a":20559,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":20562,"t":"code","b":[189,67,80],"m":"lda","oa":20547,"o":"d022_values_b,x"},{"a":20565,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":20568,"t":"code","b":[232],"m":"inx"},{"a":20569,"t":"code","b":[224,7],"m":"cpx","o":"#$07"},{"a":20571,"t":"code","b":[208,239],"m":"bne","oa":20556,"o":"b_504C"},{"a":20573,"t":"code","b":[96],"m":"rts"},{"a":20574,"l":"bump_d022_twice","c":"Increments $D022 twice (Y counts to 2). Called from $4D47. $D022 is not displayed in play's bitmap mode, so no visible effect found.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[19783]},{"a":20576,"l":"b_5060","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[20582]},{"a":20579,"t":"code","b":[200],"m":"iny"},{"a":20580,"t":"code","b":[192,2],"m":"cpy","o":"#$02"},{"a":20582,"t":"code","b":[208,248],"m":"bne","oa":20576,"o":"b_5060"},{"a":20584,"t":"code","b":[96],"m":"rts"},{"a":20585,"l":"clear_sprite0_position_unused","c":"Clears $D000 and $D001 (sprite 0's X and Y) and returns. No JSR, JMP or branch to $5069 was found (byte search of the whole image). The self-modifying LDA $5069,X at $96C3 reads bytes from here as a pattern source (its low byte advances by $27 at $96D1), not as code.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[38595]},{"a":20587,"l":"b_506B","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[20595]},{"a":20589,"t":"code","b":[157,0,208],"m":"sta","o":"vic_sprite0_x,x"},{"a":20592,"t":"code","b":[232],"m":"inx"},{"a":20593,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":20595,"t":"code","b":[208,246],"m":"bne","oa":20587,"o":"b_506B"},{"a":20597,"t":"code","b":[96],"m":"rts"},{"a":20598,"l":"room2_place_sprites","c":"Room 2 entry after the drawing: JSR $8130 (STAGE digit 2, $D022 writes); primes room2_irq's guardian step to INC $D000 ($5116/$5117); switches Mr Hat (sprite 4) on. If $4ACD = $08 (the exit code room 3's code stores at $4C13) he is put at X $148, Y $B4, frame $2F; otherwise his X high bit is cleared, X kept, Y $D4 with frame $32 (a climbing frame: arrival up the ladder) and voice 1 silenced ($1CB0). Sprite 0 at X $47 Y $4E colour $0B, sprite 3 at X $1FE; clears $F6-$FE, walk-frame bases $FD = $2C and $FF = $2F, $F9 = $33; $BA71 with A = $0B (sprite 4 colour, sprite 3 Y $B4, sprite 2 set-up $BAAB); IRQ vector $0314 = room2_irq; JMP $A847 (screen on, room2_main_loop).","t":"code","b":[32,48,129],"m":"jsr","oa":33072,"o":"room2_flash_stage2","x":[20504]},{"a":20601,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":20603,"t":"code","b":[141,22,81],"m":"sta","oa":20758,"o":"room2_guardian_step_op"},{"a":20606,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":20608,"t":"code","b":[141,23,81],"m":"sta","oa":20759,"o":"room2_guardian_step_axis"},{"a":20611,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":20614,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":20616,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":20619,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":20622,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":20624,"t":"code","b":[208,26],"m":"bne","oa":20652,"o":"b_50AC"},{"a":20626,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":20629,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":20631,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":20634,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":20636,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":20639,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":20641,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":20644,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":20646,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":20649,"t":"code","b":[76,193,80],"m":"jmp","oa":20673,"o":"j_50C1"},{"a":20652,"l":"b_50AC","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[20624]},{"a":20655,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":20657,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":20660,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":20662,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":20665,"t":"code","b":[169,212],"m":"lda","o":"#$D4"},{"a":20667,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":20670,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":20673,"l":"j_50C1","t":"code","b":[169,78],"m":"lda","o":"#$4E","x":[20649]},{"a":20675,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":20678,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":20680,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":20683,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":20686,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":20688,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":20691,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":20693,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":20696,"t":"code","b":[169,71],"m":"lda","o":"#$47"},{"a":20698,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":20701,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":20703,"l":"b_50DF","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[20710]},{"a":20705,"t":"code","b":[149,246],"m":"sta","oa":246,"o":"dying_flag,x"},{"a":20707,"t":"code","b":[232],"m":"inx"},{"a":20708,"t":"code","b":[224,9],"m":"cpx","o":"#$09"},{"a":20710,"t":"code","b":[208,247],"m":"bne","oa":20703,"o":"b_50DF"},{"a":20712,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":20714,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":20716,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":20718,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":20720,"t":"code","b":[169,51],"m":"lda","o":"#$33"},{"a":20722,"t":"code","b":[133,249],"m":"sta","oa":249,"o":"frame_tick_hi"},{"a":20724,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":20726,"t":"code","b":[32,113,186],"m":"jsr","oa":47729,"o":"set_hat_colour_init_s2"},{"a":20729,"t":"code","b":[120],"m":"sei"},{"a":20730,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":20732,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":20735,"t":"code","b":[169,81],"m":"lda","o":"#$51"},{"a":20737,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":20740,"t":"code","b":[88],"m":"cli"},{"a":20741,"t":"code","b":[76,71,168],"m":"jmp","oa":43079,"o":"reenter_loop_51f4"},{"a":20744,"t":"gap","n":2},{"a":20746,"l":"room2_irq","c":"Room 2's IRQ handler (put in $0314 by $5076). Counts $64F0 and $64F1 (frame timers read at $7000), JSR $BA7D (sprite 2's patrol and, through $B877, sprite 3 one pixel left with its frame toggle), DEC $D006 (sprite 3 a second pixel), then the self-modified step at $5116 moves the sprite-0 guardian one pixel. Sprite 3 is switched on while $D010 >= $31 or = $28, otherwise off once its X reaches $9A; at X 0 its X high bit flips and X = $FE. Sprite 0's turns: X $48 -> X $4A, sprite 0 on, INC, Y $4E; X $A0 (operand $5177) -> DEC, Y $51; X $68 with Y $51 -> INC on Y (down); X $66 with Y < $51 -> back to X; Y $AF -> DEC, X $66 (up); Y >= $B0 -> Y $AE; X >= $A0 (operand $51DC) as at $A0; X < $46 -> INC, Y $4E (as at $48 but without moving X or switching the sprite on). Every path ends JMP $7000.","t":"code","b":[238,240,100],"m":"inc","oa":25840,"o":"sprite0_anim_count"},{"a":20749,"t":"code","b":[238,241,100],"m":"inc","oa":25841,"o":"sprite1_anim_count"},{"a":20752,"t":"code","b":[32,125,186],"m":"jsr","oa":47741,"o":"anim_sprite2_patrol"},{"a":20755,"t":"code","b":[206,6,208],"m":"dec","o":"vic_sprite3_x"},{"a":20758,"l":"room2_guardian_step_op","c":"Self-modified opcode of room 2's guardian step: $EE (INC) or $CE (DEC), written by room2_irq and by room2_place_sprites.","t":"code","b":[238,1,208],"m":"inc","o":"vic_sprite0_y","x":[20603,20843,20860,20884,20923]},{"a":20759,"t":"note","l":"room2_guardian_step_axis","c":"Self-modified low byte of the guardian step's operand: $00 steps sprite 0's X ($D000), $01 its Y ($D001).","note":"inside the item at $5116","x":[20608,20889,20908]},{"a":20761,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":20764,"t":"code","b":[201,49],"m":"cmp","o":"#$31"},{"a":20766,"t":"code","b":[176,22],"m":"bcs","oa":20790,"o":"b_5136"},{"a":20768,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":20770,"t":"code","b":[240,18],"m":"beq","oa":20790,"o":"b_5136"},{"a":20772,"t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x"},{"a":20775,"t":"code","b":[201,154],"m":"cmp","o":"#$9A"},{"a":20777,"t":"code","b":[208,19],"m":"bne","oa":20798,"o":"b_513E"},{"a":20779,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":20782,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":20784,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":20787,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":20790,"l":"b_5136","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[20766,20770]},{"a":20793,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":20795,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":20798,"l":"b_513E","t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x","x":[20777]},{"a":20801,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":20803,"t":"code","b":[208,16],"m":"bne","oa":20821,"o":"b_5155"},{"a":20805,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":20808,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":20810,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":20813,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":20815,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":20818,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":20821,"l":"b_5155","t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x","x":[20803]},{"a":20824,"t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":20826,"t":"code","b":[208,26],"m":"bne","oa":20854,"o":"b_5176"},{"a":20828,"t":"code","b":[169,74],"m":"lda","o":"#$4A"},{"a":20830,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":20833,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":20836,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":20838,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":20841,"l":"j_5169","t":"code","b":[169,238],"m":"lda","o":"#$EE","x":[20972]},{"a":20843,"t":"code","b":[141,22,81],"m":"sta","oa":20758,"o":"room2_guardian_step_op"},{"a":20846,"t":"code","b":[169,78],"m":"lda","o":"#$4E"},{"a":20848,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":20851,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":20854,"l":"b_5176","t":"code","b":[201,160],"m":"cmp","o":"#$A0","x":[20826]},{"a":20855,"t":"note","l":"room2_guardian_turn_x","c":"Operand of the CMP at $5176: the X at which room 2's guardian turns back, $A0; set to $D8 by $54D2 when the barrier at $0464 is opened, back to $A0 by reset_room_objects ($569F).","note":"inside the item at $5176","x":[21714,22175]},{"a":20856,"t":"code","b":[208,13],"m":"bne","oa":20871,"o":"b_5187"},{"a":20858,"l":"j_517A","t":"code","b":[169,206],"m":"lda","o":"#$CE","x":[20962]},{"a":20860,"t":"code","b":[141,22,81],"m":"sta","oa":20758,"o":"room2_guardian_step_op"},{"a":20863,"t":"code","b":[169,81],"m":"lda","o":"#$51"},{"a":20865,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":20868,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":20871,"l":"b_5187","t":"code","b":[201,104],"m":"cmp","o":"#$68","x":[20856]},{"a":20873,"t":"code","b":[208,20],"m":"bne","oa":20895,"o":"b_519F"},{"a":20875,"t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y"},{"a":20878,"t":"code","b":[201,81],"m":"cmp","o":"#$51"},{"a":20880,"t":"code","b":[208,13],"m":"bne","oa":20895,"o":"b_519F"},{"a":20882,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":20884,"t":"code","b":[141,22,81],"m":"sta","oa":20758,"o":"room2_guardian_step_op"},{"a":20887,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":20889,"t":"code","b":[141,23,81],"m":"sta","oa":20759,"o":"room2_guardian_step_axis"},{"a":20892,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":20895,"l":"b_519F","t":"code","b":[201,102],"m":"cmp","o":"#$66","x":[20873,20880]},{"a":20897,"t":"code","b":[208,15],"m":"bne","oa":20914,"o":"b_51B2"},{"a":20899,"t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y"},{"a":20902,"t":"code","b":[201,81],"m":"cmp","o":"#$51"},{"a":20904,"t":"code","b":[176,8],"m":"bcs","oa":20914,"o":"b_51B2"},{"a":20906,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":20908,"t":"code","b":[141,23,81],"m":"sta","oa":20759,"o":"room2_guardian_step_axis"},{"a":20911,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":20914,"l":"b_51B2","t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y","x":[20897,20904]},{"a":20917,"t":"code","b":[201,175],"m":"cmp","o":"#$AF"},{"a":20919,"t":"code","b":[208,13],"m":"bne","oa":20934,"o":"b_51C6"},{"a":20921,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":20923,"t":"code","b":[141,22,81],"m":"sta","oa":20758,"o":"room2_guardian_step_op"},{"a":20926,"t":"code","b":[169,102],"m":"lda","o":"#$66"},{"a":20928,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":20931,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":20934,"l":"b_51C6","t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y","x":[20919]},{"a":20937,"t":"code","b":[201,176],"m":"cmp","o":"#$B0"},{"a":20939,"t":"code","b":[176,3],"m":"bcs","oa":20944,"o":"b_51D0"},{"a":20941,"t":"code","b":[76,216,81],"m":"jmp","oa":20952,"o":"j_51D8"},{"a":20944,"l":"b_51D0","t":"code","b":[169,174],"m":"lda","o":"#$AE","x":[20939]},{"a":20946,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":20949,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":20952,"l":"j_51D8","t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x","x":[20941]},{"a":20955,"t":"code","b":[201,160],"m":"cmp","o":"#$A0"},{"a":20956,"t":"note","l":"room2_guardian_limit_x","c":"Operand of the CMP at $51DB: the X at or beyond which room 2's guardian is forced to turn, $A0; $D8 after the barrier opens ($54D7), $A0 after reset_room_objects ($56A2).","note":"inside the item at $51DB","x":[21719,22178]},{"a":20957,"t":"code","b":[176,3],"m":"bcs","oa":20962,"o":"b_51E2"},{"a":20959,"t":"code","b":[76,229,81],"m":"jmp","oa":20965,"o":"j_51E5"},{"a":20962,"l":"b_51E2","t":"code","b":[76,122,81],"m":"jmp","oa":20858,"o":"j_517A","x":[20957]},{"a":20965,"l":"j_51E5","t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x","x":[20959]},{"a":20968,"t":"code","b":[201,70],"m":"cmp","o":"#$46"},{"a":20970,"t":"code","b":[176,3],"m":"bcs","oa":20975,"o":"b_51EF"},{"a":20972,"t":"code","b":[76,105,81],"m":"jmp","oa":20841,"o":"j_5169"},{"a":20975,"l":"b_51EF","t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames","x":[20970]},{"a":20978,"t":"gap","n":2},{"a":20980,"l":"room2_main_loop","c":"Room 2 main loop, entered from $A847 (which turns the screen on) and re-entered through it each pass. $D8 = $40 (lives used up, $1736) -> $4475, back to the title. Else respawn ($5628), room checks ($53B8), then the stick on $DC00: $77 right -> walk_right, exit test $530A; $7B left -> walk_left, $5660; $7D down -> duck ($53A0); $6F fire (read twice) -> a jump the way he faces (frame below $2F faces right): 21 one-pixel steps up and across, 21 across, 21 down and across, each step calling $53B8 and the 21 rising steps also $41B0 (jump sound from $99), with $42E0's pause after each third. Every pass but a walk then reaches $52F0: $67 (fire + right) or $6B (fire + left) -> $5324, which jumps unless $D010 >= $2F (the whole register, taken as Mr Hat past X 255) and X >= $50, where it writes $77 to $DC00 and takes the exit test. Copy of one template shared with the loops at $5A60, $6220, $6A20, $76B0, $86B0, $9320, which differ in the routines called.","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[43082]},{"a":20982,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":20984,"t":"code","b":[208,3],"m":"bne","oa":20989,"o":"b_51FD"},{"a":20986,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":20989,"l":"b_51FD","t":"code","b":[32,40,86],"m":"jsr","oa":22056,"o":"room2_respawn_if_off","x":[20984]},{"a":20992,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":20995,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":20998,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":21000,"t":"code","b":[208,6],"m":"bne","oa":21008,"o":"b_5210"},{"a":21002,"t":"code","b":[32,64,83],"m":"jsr","oa":21312,"o":"walk_right"},{"a":21005,"t":"code","b":[76,10,83],"m":"jmp","oa":21258,"o":"room2_exit_test"},{"a":21008,"l":"b_5210","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[21000]},{"a":21010,"t":"code","b":[208,6],"m":"bne","oa":21018,"o":"b_521A"},{"a":21012,"t":"code","b":[32,112,83],"m":"jsr","oa":21360,"o":"walk_left"},{"a":21015,"t":"code","b":[76,96,86],"m":"jmp","oa":22112,"o":"room2_stand_and_loop"},{"a":21018,"l":"b_521A","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[21010]},{"a":21020,"t":"code","b":[208,9],"m":"bne","oa":21031,"o":"b_5227"},{"a":21022,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21025,"t":"code","b":[32,160,83],"m":"jsr","oa":21408,"o":"room2_duck"},{"a":21028,"l":"b_5224","t":"code","b":[76,240,82],"m":"jmp","oa":21232,"o":"j_52F0","x":[21033]},{"a":21031,"l":"b_5227","t":"code","b":[201,111],"m":"cmp","o":"#$6F","x":[21020]},{"a":21033,"t":"code","b":[208,249],"m":"bne","oa":21028,"o":"b_5224"},{"a":21035,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":21038,"t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":21040,"t":"code","b":[208,97],"m":"bne","oa":21139,"o":"b_5293"},{"a":21042,"l":"j_5232","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[21291,21301]},{"a":21045,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":21047,"t":"code","b":[176,93],"m":"bcs","oa":21142,"o":"b_5296"},{"a":21049,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":21051,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21054,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":21057,"l":"b_5241","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[21075]},{"a":21060,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":21063,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":21066,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":21068,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21071,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":21073,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":21075,"t":"code","b":[208,236],"m":"bne","oa":21057,"o":"b_5241"},{"a":21077,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21079,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":21081,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":21084,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":21086,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21089,"l":"b_5261","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[21101]},{"a":21092,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":21094,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21097,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":21099,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":21101,"t":"code","b":[208,242],"m":"bne","oa":21089,"o":"b_5261"},{"a":21103,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21105,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":21107,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":21110,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":21112,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21115,"l":"b_527B","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[21130]},{"a":21118,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":21121,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":21123,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21126,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":21128,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":21130,"t":"code","b":[208,239],"m":"bne","oa":21115,"o":"b_527B"},{"a":21132,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21134,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":21136,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":21139,"l":"b_5293","t":"code","b":[76,240,82],"m":"jmp","oa":21232,"o":"j_52F0","x":[21040]},{"a":21142,"l":"b_5296","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[21047]},{"a":21144,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21147,"l":"b_529B","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[21168]},{"a":21150,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":21153,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":21156,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":21159,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":21161,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21164,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":21166,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":21168,"t":"code","b":[208,233],"m":"bne","oa":21147,"o":"b_529B"},{"a":21170,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21172,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":21174,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":21177,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":21179,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21182,"l":"b_52BE","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[21194]},{"a":21185,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":21187,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21190,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":21192,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":21194,"t":"code","b":[208,242],"m":"bne","oa":21182,"o":"b_52BE"},{"a":21196,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21198,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":21200,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":21203,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":21205,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21208,"l":"b_52D8","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[21223]},{"a":21211,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":21214,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":21216,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21219,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":21221,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":21223,"t":"code","b":[208,239],"m":"bne","oa":21208,"o":"b_52D8"},{"a":21225,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21227,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":21229,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":21232,"l":"j_52F0","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[21028,21139]},{"a":21235,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":21237,"t":"code","b":[208,6],"m":"bne","oa":21245,"o":"b_52FD"},{"a":21239,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21242,"t":"code","b":[76,36,83],"m":"jmp","oa":21284,"o":"j_5324"},{"a":21245,"l":"b_52FD","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[21237]},{"a":21247,"t":"code","b":[208,9],"m":"bne","oa":21258,"o":"room2_exit_test"},{"a":21249,"t":"code","b":[32,184,83],"m":"jsr","oa":21432,"o":"room2_room_checks"},{"a":21252,"t":"code","b":[76,36,83],"m":"jmp","oa":21284,"o":"j_5324"},{"a":21255,"t":"gap","n":3},{"a":21258,"l":"room2_exit_test","c":"Room 2 exit test: $4ACD = $18 (set at $53F0 when Mr Hat walks off the right) -> $45D5, JMP $4642 (room 3's set-up); $4ACD = $20 (set at $557F at the foot of the ladder) -> $45D5, JMP $5E10 (room 6's set-up); otherwise $5660. $5324: after fire + a direction it jumps (JMP $5232, the way he faces, whatever the direction) unless he is on the right-hand part ($D010 >= $2F) at X >= $50, where it writes $77 to $DC00 (the port's output latch, so the stick then reads as right) and goes to the exit test.","t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code","x":[21005,21247,21309]},{"a":21261,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":21263,"t":"code","b":[208,6],"m":"bne","oa":21271,"o":"b_5317"},{"a":21265,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":21268,"t":"code","b":[76,66,70],"m":"jmp","oa":17986,"o":"room3_setup"},{"a":21271,"l":"b_5317","t":"code","b":[201,32],"m":"cmp","o":"#$20","x":[21263]},{"a":21273,"t":"code","b":[208,6],"m":"bne","oa":21281,"o":"b_5321"},{"a":21275,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":21278,"t":"code","b":[76,16,94],"m":"jmp","oa":24080,"o":"room6_setup"},{"a":21281,"l":"b_5321","t":"code","b":[76,96,86],"m":"jmp","oa":22112,"o":"room2_stand_and_loop","x":[21273]},{"a":21284,"l":"j_5324","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[21242,21252]},{"a":21287,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":21289,"t":"code","b":[176,3],"m":"bcs","oa":21294,"o":"b_532E"},{"a":21291,"t":"code","b":[76,50,82],"m":"jmp","oa":21042,"o":"j_5232"},{"a":21294,"l":"b_532E","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[21289]},{"a":21297,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":21299,"t":"code","b":[176,3],"m":"bcs","oa":21304,"o":"b_5338"},{"a":21301,"t":"code","b":[76,50,82],"m":"jmp","oa":21042,"o":"j_5232"},{"a":21304,"l":"b_5338","t":"code","b":[169,119],"m":"lda","o":"#$77","x":[21299]},{"a":21306,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":21309,"t":"code","b":[76,10,83],"m":"jmp","oa":21258,"o":"room2_exit_test"},{"a":21312,"l":"walk_right","c":"Shared: one step right for Mr Hat. Counts $FB to 9, then advances the walk-frame base $FD ($2C, $2D, $2E, back to $2C); shows frame $FD in $07FC (sprite 4's pointer); INC $D008 (X only: the high bit is left to each room's checks); silences voice 2 ($1CF2), footstep sound ($1D04), pause ($501B). Called by rooms 2 ($520A) and 5 ($5A76) and by the loops at $6236, $76C6, $86C6 and $9336.","t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte","x":[21002,23158,25142,30406,34502,37686]},{"a":21314,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":21316,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21319,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":21321,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":21323,"t":"code","b":[208,16],"m":"bne","oa":21341,"o":"b_535D"},{"a":21325,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21327,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":21329,"t":"code","b":[230,253],"m":"inc","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":21331,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":21333,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":21335,"t":"code","b":[208,4],"m":"bne","oa":21341,"o":"b_535D"},{"a":21337,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":21339,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":21341,"l":"b_535D","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[21323,21335]},{"a":21344,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":21347,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":21350,"t":"code","b":[32,27,80],"m":"jsr","oa":20507,"o":"walk_step_delay"},{"a":21353,"t":"code","b":[96],"m":"rts"},{"a":21354,"t":"gap","n":6},{"a":21360,"l":"walk_left","c":"Shared: one step left, as walk_right but with the frame base $FF ($2F, $30, $31, back to $2F) and DEC $D008. Called by $5214, $5A80, $6240, $76D0, $86D0, $9340.","t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte","x":[21012,23168,25152,30416,34512,37696]},{"a":21362,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":21364,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21367,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":21369,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":21371,"t":"code","b":[208,16],"m":"bne","oa":21389,"o":"b_538D"},{"a":21373,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21375,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":21377,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":21379,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":21381,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":21383,"t":"code","b":[208,4],"m":"bne","oa":21389,"o":"b_538D"},{"a":21385,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":21387,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":21389,"l":"b_538D","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[21371,21383]},{"a":21392,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":21395,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":21398,"t":"code","b":[32,27,80],"m":"jsr","oa":20507,"o":"walk_step_delay"},{"a":21401,"t":"code","b":[96],"m":"rts"},{"a":21402,"t":"gap","n":6},{"a":21408,"l":"room2_duck","c":"Room 2, stick down: saves sprite 4's frame, then while $DC00 stays $7D shows frame $2A and runs hazards_and_pickups ($5590); puts the saved frame back when the stick is let go.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[21025]},{"a":21411,"t":"code","b":[72],"m":"pha"},{"a":21412,"l":"b_53A4","t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups","x":[21425]},{"a":21415,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":21417,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21420,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":21423,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":21425,"t":"code","b":[240,241],"m":"beq","oa":21412,"o":"b_53A4"},{"a":21427,"t":"code","b":[104],"m":"pla"},{"a":21428,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":21431,"t":"code","b":[96],"m":"rts"},{"a":21432,"l":"room2_room_checks","c":"Room 2 position checks, called by room2_main_loop and after every jump step: nothing while $D015 < $0F (Mr Hat's sprite off); at X $00 or $FF calls $4610, which carries his X across 256 (X $00 -> $FE with the high bit cleared, X $FF -> $01 with it set); otherwise goes on at $53D0.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[20992,21022,21068,21094,21123,21161,21187,21216,21239,21249]},{"a":21435,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":21437,"t":"code","b":[176,1],"m":"bcs","oa":21440,"o":"b_53C0"},{"a":21439,"t":"code","b":[96],"m":"rts"},{"a":21440,"l":"b_53C0","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[21437]},{"a":21443,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":21445,"t":"code","b":[240,4],"m":"beq","oa":21451,"o":"b_53CB"},{"a":21447,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":21449,"t":"code","b":[208,5],"m":"bne","oa":21456,"o":"room2_room_checks_2"},{"a":21451,"l":"b_53CB","t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256","x":[21445]},{"a":21454,"t":"code","b":[96],"m":"rts"},{"a":21455,"t":"gap","n":1},{"a":21456,"l":"room2_room_checks_2","c":"Room 2 checks, continued: for $64 <= X < $74 the ladder test ($5520). Then by $D010: not $20 or $28 (Mr Hat's X high bit set, with sprite 5's bit set and 6-7 clear) -> X >= $50 sets $4ACD = $18, the exit to the right taken at $530A, smaller X -> $5445; $20 or $28 (high bit clear) -> $53F8.","t":"code","b":[201,116],"m":"cmp","o":"#$74","x":[21449]},{"a":21458,"t":"code","b":[176,8],"m":"bcs","oa":21468,"o":"b_53DC"},{"a":21460,"t":"code","b":[201,100],"m":"cmp","o":"#$64"},{"a":21462,"t":"code","b":[144,4],"m":"bcc","oa":21468,"o":"b_53DC"},{"a":21464,"t":"code","b":[32,32,85],"m":"jsr","oa":21792,"o":"room2_ladder_test"},{"a":21467,"t":"code","b":[234],"m":"nop"},{"a":21468,"l":"b_53DC","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[21458,21462]},{"a":21471,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":21473,"t":"code","b":[240,21],"m":"beq","oa":21496,"o":"room2_left_part_checks"},{"a":21475,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":21477,"t":"code","b":[240,17],"m":"beq","oa":21496,"o":"room2_left_part_checks"},{"a":21479,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":21482,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":21484,"t":"code","b":[144,6],"m":"bcc","oa":21492,"o":"b_53F4"},{"a":21486,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":21488,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":21491,"t":"code","b":[96],"m":"rts"},{"a":21492,"l":"b_53F4","t":"code","b":[76,69,84],"m":"jmp","oa":21573,"o":"j_5445","x":[21484]},{"a":21495,"t":"gap","n":1},{"a":21496,"l":"room2_left_part_checks","c":"Room 2, X high bit clear: at X $40, if the colour cell $0684 (row 16, column 4) holds $6C, takes that object ($4E0F: $F5 = $20, $D8 = $50, its icon at $07BE/$07E6); at X $40 otherwise $5413; other X go to $542A.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[21473,21477]},{"a":21499,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":21501,"t":"code","b":[208,43],"m":"bne","oa":21546,"o":"b_542A"},{"a":21503,"t":"code","b":[173,132,6],"m":"lda","oa":1668,"o":"a_0684"},{"a":21506,"t":"code","b":[201,108],"m":"cmp","o":"#$6C"},{"a":21508,"t":"code","b":[208,13],"m":"bne","oa":21523,"o":"room2_floor_ladder_test"},{"a":21510,"t":"code","b":[32,15,78],"m":"jsr","oa":19983,"o":"room2_take_item"},{"a":21513,"t":"code","b":[96],"m":"rts"},{"a":21514,"l":"empty_hands","c":"Calls $1CD2 (an RTS) and clears $D8, the flag that is $50 while an object is carried (set by $4E0F, $5CC8, $6467, $6D7D) and that stops another object being taken. Called by $54CD when room 2's barrier opens.","t":"code","b":[32,210,28],"m":"jsr","oa":7378,"o":"sound_stub_1cd2","x":[21709]},{"a":21517,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21519,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":21521,"t":"code","b":[96],"m":"rts"},{"a":21522,"t":"gap","n":1},{"a":21523,"l":"room2_floor_ladder_test","c":"Room 2 at X $40: Y >= $B4 (the lower floor or below) -> the ladder test $5520; else on to $5427.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[21508]},{"a":21526,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":21528,"t":"code","b":[144,13],"m":"bcc","oa":21543,"o":"room2_walls_and_objects"},{"a":21530,"t":"code","b":[32,32,85],"m":"jsr","oa":21792,"o":"room2_ladder_test"},{"a":21533,"t":"code","b":[96],"m":"rts"},{"a":21534,"l":"room2_rts_filler","c":"Nine RTS bytes ($60) after room2_floor_ladder_test returns at $541D, up to the branch target $5427. Nothing jumps or branches into them (no address $541E-$5426 is an operand anywhere; the byte pairs found by a raw search are misaligned): filler between routines.","t":"byte","b":[96,96,96,96,96,96,96,96]},{"a":21542,"t":"byte","b":[96]},{"a":21543,"l":"room2_walls_and_objects","c":"Room 2: X $28 -> INC X (wall); $3C <= X < $5C with Y >= $B0 -> death ($55F5: the lower floor's deadly object at columns 7-8). $5445: Y >= $70 (lower floor) -> hazards_and_pickups only. Upper floor: X $48 -> INC X, X $F8 -> DEC X (walls); X $60 with colour cell $04F7 = $7C -> erases that object (3 by 2 cells) with $CC, sets the set-up's operand $4EA1 = $CC, $448A and $4517; X $A0 with $0464 = $90: carried object $F5 = $20 opens the barrier (2 by 6 cells from $0464 to $CC, $4F28 = $CC, $1CB0, empty_hands, guardian turn X $5177/$51DC = $D8), else DEC X (blocked); X $C8 with $04B7 = $7C takes the candle (3 by 4 cells from $04B7 to $CC, set-up operands $4F6E/$4F7E/$4F86 = $CC, icon $7C/$6C at $07BC/$07E4, $22 = $40); anything else -> $5590.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[21528]},{"a":21546,"l":"b_542A","t":"code","b":[201,40],"m":"cmp","o":"#$28","x":[21501]},{"a":21548,"t":"code","b":[208,4],"m":"bne","oa":21554,"o":"b_5432"},{"a":21550,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":21553,"t":"code","b":[96],"m":"rts"},{"a":21554,"l":"b_5432","t":"code","b":[201,92],"m":"cmp","o":"#$5C","x":[21548]},{"a":21556,"t":"code","b":[176,15],"m":"bcs","oa":21573,"o":"j_5445"},{"a":21558,"t":"code","b":[201,60],"m":"cmp","o":"#$3C"},{"a":21560,"t":"code","b":[144,11],"m":"bcc","oa":21573,"o":"j_5445"},{"a":21562,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":21565,"t":"code","b":[201,176],"m":"cmp","o":"#$B0"},{"a":21567,"t":"code","b":[144,4],"m":"bcc","oa":21573,"o":"j_5445"},{"a":21569,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":21572,"t":"code","b":[96],"m":"rts"},{"a":21573,"l":"j_5445","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[21492,21556,21560,21567]},{"a":21576,"t":"code","b":[201,112],"m":"cmp","o":"#$70"},{"a":21578,"t":"code","b":[144,4],"m":"bcc","oa":21584,"o":"b_5450"},{"a":21580,"l":"b_544C","t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups","x":[21612]},{"a":21583,"t":"code","b":[96],"m":"rts"},{"a":21584,"l":"b_5450","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[21578]},{"a":21587,"t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":21589,"t":"code","b":[208,4],"m":"bne","oa":21595,"o":"b_545B"},{"a":21591,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":21594,"t":"code","b":[96],"m":"rts"},{"a":21595,"l":"b_545B","t":"code","b":[201,248],"m":"cmp","o":"#$F8","x":[21589]},{"a":21597,"t":"code","b":[208,4],"m":"bne","oa":21603,"o":"b_5463"},{"a":21599,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":21602,"t":"code","b":[96],"m":"rts"},{"a":21603,"l":"b_5463","t":"code","b":[201,96],"m":"cmp","o":"#$60","x":[21597]},{"a":21605,"t":"code","b":[208,42],"m":"bne","oa":21649,"o":"b_5491"},{"a":21607,"t":"code","b":[173,247,4],"m":"lda","oa":1271,"o":"f_04F7"},{"a":21610,"t":"code","b":[201,124],"m":"cmp","o":"#$7C"},{"a":21612,"t":"code","b":[208,222],"m":"bne","oa":21580,"o":"b_544C"},{"a":21614,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":21616,"l":"b_5470","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[21630]},{"a":21618,"t":"code","b":[141,161,78],"m":"sta","oa":20129,"o":"room2_cells_4f7_colour"},{"a":21621,"t":"code","b":[157,247,4],"m":"sta","oa":1271,"o":"f_04F7,x"},{"a":21624,"t":"code","b":[157,31,5],"m":"sta","oa":1311,"o":"f_051F,x"},{"a":21627,"t":"code","b":[232],"m":"inx"},{"a":21628,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":21630,"t":"code","b":[208,240],"m":"bne","oa":21616,"o":"b_5470"},{"a":21632,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":21634,"l":"b_5482","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[21640]},{"a":21637,"t":"code","b":[200],"m":"iny"},{"a":21638,"t":"code","b":[192,5],"m":"cpy","o":"#$05"},{"a":21640,"t":"code","b":[208,248],"m":"bne","oa":21634,"o":"b_5482"},{"a":21642,"t":"code","b":[32,138,68],"m":"jsr","oa":17546,"o":"voice1_off"},{"a":21645,"t":"code","b":[32,23,69],"m":"jsr","oa":17687,"o":"voice1_off_b"},{"a":21648,"t":"code","b":[96],"m":"rts"},{"a":21649,"l":"b_5491","t":"code","b":[201,160],"m":"cmp","o":"#$A0","x":[21605]},{"a":21651,"t":"code","b":[208,70],"m":"bne","oa":21723,"o":"b_54DB"},{"a":21653,"t":"code","b":[173,100,4],"m":"lda","oa":1124,"o":"f_0464"},{"a":21656,"t":"code","b":[201,144],"m":"cmp","o":"#$90"},{"a":21658,"t":"code","b":[208,63],"m":"bne","oa":21723,"o":"b_54DB"},{"a":21660,"t":"code","b":[165,245],"m":"lda","oa":245,"o":"room_var_f5"},{"a":21662,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":21664,"t":"code","b":[240,4],"m":"beq","oa":21670,"o":"b_54A6"},{"a":21666,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":21669,"t":"code","b":[96],"m":"rts"},{"a":21670,"l":"b_54A6","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[21664]},{"a":21672,"l":"b_54A8","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[21698]},{"a":21674,"t":"code","b":[141,40,79],"m":"sta","oa":20264,"o":"room2_patch_byte_4f28"},{"a":21677,"t":"code","b":[157,100,4],"m":"sta","oa":1124,"o":"f_0464,x"},{"a":21680,"t":"code","b":[157,140,4],"m":"sta","oa":1164,"o":"f_048C,x"},{"a":21683,"t":"code","b":[157,180,4],"m":"sta","oa":1204,"o":"f_04B4,x"},{"a":21686,"t":"code","b":[157,220,4],"m":"sta","oa":1244,"o":"f_04DC,x"},{"a":21689,"t":"code","b":[157,4,5],"m":"sta","oa":1284,"o":"f_0504,x"},{"a":21692,"t":"code","b":[157,44,5],"m":"sta","oa":1324,"o":"f_052C,x"},{"a":21695,"t":"code","b":[232],"m":"inx"},{"a":21696,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":21698,"t":"code","b":[208,228],"m":"bne","oa":21672,"o":"b_54A8"},{"a":21700,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":21703,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":21706,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":21709,"t":"code","b":[32,10,84],"m":"jsr","oa":21514,"o":"empty_hands"},{"a":21712,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":21714,"t":"code","b":[141,119,81],"m":"sta","oa":20855,"o":"room2_guardian_turn_x"},{"a":21717,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":21719,"t":"code","b":[141,220,81],"m":"sta","oa":20956,"o":"room2_guardian_limit_x"},{"a":21722,"t":"code","b":[96],"m":"rts"},{"a":21723,"l":"b_54DB","t":"code","b":[201,200],"m":"cmp","o":"#$C8","x":[21651,21658]},{"a":21725,"t":"code","b":[208,61],"m":"bne","oa":21788,"o":"b_551C"},{"a":21727,"t":"code","b":[173,183,4],"m":"lda","oa":1207,"o":"f_04B7"},{"a":21730,"t":"code","b":[201,124],"m":"cmp","o":"#$7C"},{"a":21732,"t":"code","b":[208,54],"m":"bne","oa":21788,"o":"b_551C"},{"a":21734,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":21736,"l":"b_54E8","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[21765]},{"a":21738,"t":"code","b":[141,110,79],"m":"sta","oa":20334,"o":"room2_colour_4f6e"},{"a":21741,"t":"code","b":[141,126,79],"m":"sta","oa":20350,"o":"room2_colour_4f7e"},{"a":21744,"t":"code","b":[141,134,79],"m":"sta","oa":20358,"o":"room2_dummy_colour_4f86"},{"a":21747,"t":"code","b":[153,183,4],"m":"sta","oa":1207,"o":"f_04B7,y"},{"a":21750,"t":"code","b":[153,223,4],"m":"sta","oa":1247,"o":"a_04DF,y"},{"a":21753,"t":"code","b":[153,7,5],"m":"sta","oa":1287,"o":"f_0507,y"},{"a":21756,"t":"code","b":[153,47,5],"m":"sta","oa":1327,"o":"f_052F,y"},{"a":21759,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":21762,"t":"code","b":[200],"m":"iny"},{"a":21763,"t":"code","b":[192,3],"m":"cpy","o":"#$03"},{"a":21765,"t":"code","b":[208,225],"m":"bne","oa":21736,"o":"b_54E8"},{"a":21767,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":21769,"t":"code","b":[141,188,7],"m":"sta","oa":1980,"o":"f_07BC"},{"a":21772,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":21774,"t":"code","b":[141,228,7],"m":"sta","oa":2020,"o":"f_07E4"},{"a":21777,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":21780,"t":"code","b":[32,226,28],"m":"jsr","oa":7394,"o":"sound_stub_1ce2"},{"a":21783,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":21785,"t":"code","b":[133,34],"m":"sta","oa":34,"o":"flag_obj_0022"},{"a":21787,"t":"code","b":[96],"m":"rts"},{"a":21788,"l":"b_551C","t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups","x":[21725,21732]},{"a":21791,"t":"code","b":[96],"m":"rts"},{"a":21792,"l":"room2_ladder_test","c":"Room 2 ladder test (X $64-$73): at the top (Y $5C) stick down ($7D) starts the climb; on the lower floor (Y $B4, via $55A6 and $5533) stick down or up ($7E) starts it; below the floor (Y > $B4) the climb goes on; any other Y returns. The climb is room2_ladder_climb ($5540).","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[21464,21530]},{"a":21795,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":21797,"t":"code","b":[208,127],"m":"bne","oa":21926,"o":"b_55A6"},{"a":21799,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":21802,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":21804,"t":"code","b":[240,1],"m":"beq","oa":21807,"o":"b_552F"},{"a":21806,"t":"code","b":[96],"m":"rts"},{"a":21807,"l":"b_552F","t":"code","b":[32,64,85],"m":"jsr","oa":21824,"o":"room2_ladder_climb","x":[21804,21816,21820,21930]},{"a":21810,"t":"code","b":[96],"m":"rts"},{"a":21811,"l":"b_5533","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[21928]},{"a":21814,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":21816,"t":"code","b":[240,245],"m":"beq","oa":21807,"o":"b_552F"},{"a":21818,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":21820,"t":"code","b":[240,241],"m":"beq","oa":21807,"o":"b_552F"},{"a":21822,"t":"code","b":[96],"m":"rts"},{"a":21823,"t":"gap","n":1},{"a":21824,"l":"room2_ladder_climb","c":"Room 2 ladder: snaps Mr Hat to X $68, then loops: one climbing step by the stick ($4B20: $7D down, $7E up, frames $32/$33), hazards_and_pickups, respawn test ($563C). Leaves at the top (Y $5C); on the lower floor (Y $B1-$B4) when the stick is pushed right ($77) or left ($7B), with Y set to $B4; otherwise $5576/$5588.","t":"code","b":[169,104],"m":"lda","o":"#$68","x":[21807]},{"a":21826,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":21829,"l":"b_5545","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[21883,21901]},{"a":21832,"t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups"},{"a":21835,"t":"code","b":[32,60,86],"m":"jsr","oa":22076,"o":"room2_respawn_on_ladder"},{"a":21838,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":21841,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":21843,"t":"code","b":[208,1],"m":"bne","oa":21846,"o":"b_5556"},{"a":21845,"t":"code","b":[96],"m":"rts"},{"a":21846,"l":"b_5556","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[21843]},{"a":21849,"t":"code","b":[201,177],"m":"cmp","o":"#$B1"},{"a":21851,"t":"code","b":[144,25],"m":"bcc","oa":21878,"o":"room2_ladder_bottom_exit"},{"a":21853,"t":"code","b":[201,181],"m":"cmp","o":"#$B5"},{"a":21855,"t":"code","b":[176,21],"m":"bcs","oa":21878,"o":"room2_ladder_bottom_exit"},{"a":21857,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":21860,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":21862,"t":"code","b":[208,6],"m":"bne","oa":21870,"o":"b_556E"},{"a":21864,"l":"j_5568","t":"code","b":[169,180],"m":"lda","o":"#$B4","x":[21874]},{"a":21866,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":21869,"t":"code","b":[96],"m":"rts"},{"a":21870,"l":"b_556E","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[21862]},{"a":21872,"t":"code","b":[208,22],"m":"bne","oa":21896,"o":"room2_ladder_x_test"},{"a":21874,"t":"code","b":[76,104,85],"m":"jmp","oa":21864,"o":"j_5568"},{"a":21877,"t":"gap","n":1},{"a":21878,"l":"room2_ladder_bottom_exit","c":"Room 2 ladder loop, continued: while Y < $D7 back to the climb ($5545); at Y >= $D7 (below the room) sets $4ACD = $20 and JMP $5E10, the set-up of room 6, the room below.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[21851,21855]},{"a":21881,"t":"code","b":[201,215],"m":"cmp","o":"#$D7"},{"a":21883,"t":"code","b":[144,200],"m":"bcc","oa":21829,"o":"b_5545"},{"a":21885,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":21887,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":21890,"t":"code","b":[76,16,94],"m":"jmp","oa":24080,"o":"room6_setup"},{"a":21893,"t":"gap","n":3},{"a":21896,"l":"room2_ladder_x_test","c":"Room 2 ladder loop, continued: goes on climbing while X is still $68 and returns otherwise (a death has moved him).","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[21872]},{"a":21899,"t":"code","b":[201,104],"m":"cmp","o":"#$68"},{"a":21901,"t":"code","b":[240,182],"m":"beq","oa":21829,"o":"b_5545"},{"a":21903,"t":"code","b":[96],"m":"rts"},{"a":21904,"l":"hazards_and_pickups","c":"Shared per-step check, called from rooms 2 and 5 and from $6580 (room 6), $6B5C (room 8), $7848 (room 9), $890B (room 11) and $94A3 (rooms 4 and 7): JSR $BB10, which runs $8E10 (hat_collision_test: Mr Hat touching another sprite sets $4ACE = $20; then $8E13, the stick-down object pick-ups of rooms 2-7) and then, by the room id $100C, the deadly floor spots, which kill directly through $A877 or kill_hat. When $4ACE = $20 afterwards, JSR kill_hat and clear $4ACE. ($55A6-$55AC is the rest of room2_ladder_test.)","t":"code","b":[32,16,187],"m":"jsr","oa":47888,"o":"check_floor_hazards","x":[21412,21580,21788,21832,23928,25984,27484,30792,35083,38051]},{"a":21907,"t":"code","b":[173,206,74],"m":"lda","oa":19150,"o":"guardian_touch_flag"},{"a":21910,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":21912,"t":"code","b":[208,11],"m":"bne","oa":21925,"o":"r_55A5"},{"a":21914,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":21917,"t":"code","b":[234],"m":"nop"},{"a":21918,"t":"code","b":[234],"m":"nop"},{"a":21919,"t":"code","b":[234],"m":"nop"},{"a":21920,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21922,"t":"code","b":[141,206,74],"m":"sta","oa":19150,"o":"guardian_touch_flag"},{"a":21925,"l":"r_55A5","t":"code","b":[96],"m":"rts","x":[21912]},{"a":21926,"l":"b_55A6","t":"code","b":[201,180],"m":"cmp","o":"#$B4","x":[21797]},{"a":21928,"t":"code","b":[240,137],"m":"beq","oa":21811,"o":"b_5533"},{"a":21930,"t":"code","b":[176,131],"m":"bcs","oa":21807,"o":"b_552F"},{"a":21932,"t":"code","b":[96],"m":"rts"},{"a":21933,"t":"gap","n":3},{"a":21936,"l":"hat_collision_test","c":"Shared: reads $D01E and, when it is exactly $11, $12, $14, $18, $50 or $90 (Mr Hat, sprite 4, with sprite 0, 1, 2, 3, 6 or 7 alone), sets $4ACE = $20 and writes $D01E back without bit 4. $18 is tested twice; $30 (sprite 5) and any overlap of three sprites are not matched. Called by $8E10, $5D7C, $6584, $6DD9, $7B20.","t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision","x":[23932,25988,28121,31520,36368]},{"a":21939,"t":"code","b":[201,17],"m":"cmp","o":"#$11"},{"a":21941,"t":"code","b":[208,3],"m":"bne","oa":21946,"o":"b_55BA"},{"a":21943,"t":"code","b":[76,229,85],"m":"jmp","oa":21989,"o":"j_55E5"},{"a":21946,"l":"b_55BA","t":"code","b":[201,18],"m":"cmp","o":"#$12","x":[21941]},{"a":21948,"t":"code","b":[208,3],"m":"bne","oa":21953,"o":"b_55C1"},{"a":21950,"t":"code","b":[76,229,85],"m":"jmp","oa":21989,"o":"j_55E5"},{"a":21953,"l":"b_55C1","t":"code","b":[201,20],"m":"cmp","o":"#$14","x":[21948]},{"a":21955,"t":"code","b":[208,3],"m":"bne","oa":21960,"o":"b_55C8"},{"a":21957,"t":"code","b":[76,229,85],"m":"jmp","oa":21989,"o":"j_55E5"},{"a":21960,"l":"b_55C8","t":"code","b":[201,24],"m":"cmp","o":"#$18","x":[21955]},{"a":21962,"t":"code","b":[208,3],"m":"bne","oa":21967,"o":"b_55CF"},{"a":21964,"t":"code","b":[76,229,85],"m":"jmp","oa":21989,"o":"j_55E5"},{"a":21967,"l":"b_55CF","t":"code","b":[201,24],"m":"cmp","o":"#$18","x":[21962]},{"a":21969,"t":"code","b":[208,3],"m":"bne","oa":21974,"o":"b_55D6"},{"a":21971,"t":"code","b":[76,229,85],"m":"jmp","oa":21989,"o":"j_55E5"},{"a":21974,"l":"b_55D6","t":"code","b":[201,80],"m":"cmp","o":"#$50","x":[21969]},{"a":21976,"t":"code","b":[208,3],"m":"bne","oa":21981,"o":"b_55DD"},{"a":21978,"t":"code","b":[76,229,85],"m":"jmp","oa":21989,"o":"j_55E5"},{"a":21981,"l":"b_55DD","t":"code","b":[201,144],"m":"cmp","o":"#$90","x":[21976]},{"a":21983,"t":"code","b":[208,3],"m":"bne","oa":21988,"o":"r_55E4"},{"a":21985,"t":"code","b":[76,229,85],"m":"jmp","oa":21989,"o":"j_55E5"},{"a":21988,"l":"r_55E4","t":"code","b":[96],"m":"rts","x":[21983]},{"a":21989,"l":"j_55E5","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[21943,21950,21957,21964,21971,21978,21985]},{"a":21991,"t":"code","b":[141,206,74],"m":"sta","oa":19150,"o":"guardian_touch_flag"},{"a":21994,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":21997,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":21999,"t":"code","b":[141,30,208],"m":"sta","o":"vic_sprite_collision"},{"a":22002,"t":"code","b":[96],"m":"rts"},{"a":22003,"t":"gap","n":2},{"a":22005,"l":"kill_hat","c":"JMP $A877, the death sequence. Most deadly touches in the room code come here: $5441, $559A, $5C62, $5D86, $64A0, $658E, $6CE8, $6DE3, $7ACD, $7B2A, $81DD, $A9CA, $BBAE-$BCB8 and more ($7B63 among them). Not all: $1D50 (room 1), $4C52, $4CD2 and $BB35-$BB84 (check_floor_hazards) call $A877 directly.","t":"code","b":[76,119,168],"m":"jmp","oa":43127,"o":"hat_death","x":[21569,21914,23650,23942,25760,25998,27880,28131,31437,31530,31587,33245,43466,48046,48068,48090,48112,48147,48182,48224,48255,48277,48312]},{"a":22008,"t":"gap","n":24},{"a":22032,"l":"room2_respawn_position","c":"Room 2's restart point: Mr Hat at X $80 (high bit cleared), Y $B4 (lower floor), frame $2F.","t":"code","b":[169,128],"m":"lda","o":"#$80","x":[22072]},{"a":22034,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":22037,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":22039,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":22042,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":22045,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":22047,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":22050,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":22052,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":22055,"t":"code","b":[96],"m":"rts"},{"a":22056,"l":"room2_respawn_if_off","c":"Room 2: when $D015 < $0F (sprite 4 off, as after a death) switches sprite 4 on and places him with room2_respawn_position. Called each pass by room2_main_loop.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[20989]},{"a":22059,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":22061,"t":"code","b":[144,1],"m":"bcc","oa":22064,"o":"b_5630"},{"a":22063,"t":"code","b":[96],"m":"rts"},{"a":22064,"l":"b_5630","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[22061]},{"a":22067,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":22069,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":22072,"t":"code","b":[32,16,86],"m":"jsr","oa":22032,"o":"room2_respawn_position"},{"a":22075,"t":"code","b":[96],"m":"rts"},{"a":22076,"l":"room2_respawn_on_ladder","c":"Room 2 ladder loop's version of $5628: sprite 4 on, X $80, Y $B4, frame $2F, without touching the X high bit. Called from $554B.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[21835]},{"a":22079,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":22081,"t":"code","b":[144,1],"m":"bcc","oa":22084,"o":"b_5644"},{"a":22083,"t":"code","b":[96],"m":"rts"},{"a":22084,"l":"b_5644","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[22081]},{"a":22087,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":22089,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":22092,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":22094,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":22097,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":22099,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":22102,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":22104,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":22107,"t":"code","b":[96],"m":"rts"},{"a":22108,"t":"gap","n":4},{"a":22112,"l":"room2_stand_and_loop","c":"Room 2: ends a pass with the standing frame for the way he faces ($2F if the frame was $2F or more, else $2C) and JMP $A847 (screen on, room2_main_loop).","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[21015,21281]},{"a":22115,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":22117,"t":"code","b":[144,8],"m":"bcc","oa":22127,"o":"b_566F"},{"a":22119,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":22121,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":22124,"t":"code","b":[76,71,168],"m":"jmp","oa":43079,"o":"reenter_loop_51f4"},{"a":22127,"l":"b_566F","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[22117]},{"a":22129,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":22132,"t":"code","b":[76,71,168],"m":"jmp","oa":43079,"o":"reenter_loop_51f4"},{"a":22135,"t":"gap","n":1},{"a":22136,"l":"reset_room_objects","c":"Once per game (JSR from $6E0C in room 1's set-up, reached only from the start at $089E): clears $4ACD and $4ACE, writes $7C to $D022 twice, and restores the colours remembered as operands in the set-up code: $4F6E = $7C, $4F7E = $1C, $4F86 = $6C (room 2's candle), $4F0B = $6C (room 2's object at $0684), $4F28 = $90 (room 2's barrier), $5177/$51DC = $A0 (room 2's guardian), $57E6 = $7C (room 5's object at $06C0); then $61DA ($586C, $22, $5EF2 and others). $4EA1 is not restored.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[28172]},{"a":22138,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":22141,"t":"code","b":[141,206,74],"m":"sta","oa":19150,"o":"guardian_touch_flag"},{"a":22144,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":22146,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":22149,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":22152,"t":"code","b":[141,110,79],"m":"sta","oa":20334,"o":"room2_colour_4f6e"},{"a":22155,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":22157,"t":"code","b":[141,11,79],"m":"sta","oa":20235,"o":"room2_dummy_colour_4f0b"},{"a":22160,"t":"code","b":[141,134,79],"m":"sta","oa":20358,"o":"room2_dummy_colour_4f86"},{"a":22163,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":22165,"t":"code","b":[141,40,79],"m":"sta","oa":20264,"o":"room2_patch_byte_4f28"},{"a":22168,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":22170,"t":"code","b":[141,126,79],"m":"sta","oa":20350,"o":"room2_colour_4f7e"},{"a":22173,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":22175,"t":"code","b":[141,119,81],"m":"sta","oa":20855,"o":"room2_guardian_turn_x"},{"a":22178,"t":"code","b":[141,220,81],"m":"sta","oa":20956,"o":"room2_guardian_limit_x"},{"a":22181,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":22183,"t":"code","b":[141,230,87],"m":"sta","oa":22502,"o":"room5_object_colour"},{"a":22186,"t":"code","b":[32,218,97],"m":"jsr","oa":25050,"o":"reset_rooms_6_8"},{"a":22189,"t":"code","b":[96],"m":"rts"},{"a":22190,"t":"gap","n":2},{"a":22192,"l":"room_blank_and_fill","c":"Shared start of a room's drawing: JSR $45D5 (-> $8200), JSR $A4FD (draw_room_objects $BD6A, which does nothing while the screen is on, then flips $D011 bit 4: the screen goes off), then $A573 with X = $62, Y = the colour byte in $FD and $27/$28 = $60/$3F, which fills the colour matrix with that byte (simulated: $BA for rooms 2 and 5, $98 for room 6). Called by the set-ups at $463E, $4D84, $5744, $5E14, $65E4, $6E09, $7144, $8304, $8484, $9034, $95A4.","t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq","x":[17982,19844,22340,24084,26084,28169,28996,33540,33924,36916,38308]},{"a":22195,"t":"code","b":[32,253,164],"m":"jsr","oa":42237,"o":"display_toggle"},{"a":22198,"t":"code","b":[162,98],"m":"ldx","o":"#$62"},{"a":22200,"t":"code","b":[164,253],"m":"ldy","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22202,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":22204,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":22206,"t":"code","b":[169,63],"m":"lda","o":"#$3F"},{"a":22208,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":22210,"t":"code","b":[32,115,165],"m":"jsr","oa":42355,"o":"gfx_clear_room"},{"a":22213,"t":"code","b":[96],"m":"rts"},{"a":22214,"t":"gap","n":1},{"a":22215,"l":"call_822e_and_flip_screen","c":"JSR $822E, then JSR $A4FD ($BD6A draws the room's untaken objects if the screen is off, then $D011 bit 4 is flipped). Called from $8641.","t":"code","b":[32,46,130],"m":"jsr","oa":33326,"o":"room11_lift_sprite","x":[34369]},{"a":22218,"t":"code","b":[32,253,164],"m":"jsr","oa":42237,"o":"display_toggle"},{"a":22221,"t":"code","b":[96],"m":"rts"},{"a":22222,"t":"gap","n":2},{"a":22224,"l":"flip_screen_if_climbing","c":"Jumped to from $66A5: if sprite 4's frame is $32 or $33 (the climbing frames) flips the screen with $A4FD (which first draws the room's untaken objects, $BD6A, if the screen is off); then JMP $66E0 either way.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[26277]},{"a":22227,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":22229,"t":"code","b":[240,7],"m":"beq","oa":22238,"o":"b_56DE"},{"a":22231,"t":"code","b":[201,51],"m":"cmp","o":"#$33"},{"a":22233,"t":"code","b":[240,3],"m":"beq","oa":22238,"o":"b_56DE"},{"a":22235,"t":"code","b":[76,224,102],"m":"jmp","oa":26336,"o":"room8_place_objects"},{"a":22238,"l":"b_56DE","t":"code","b":[32,253,164],"m":"jsr","oa":42237,"o":"display_toggle","x":[22229,22233]},{"a":22241,"t":"code","b":[76,224,102],"m":"jmp","oa":26336,"o":"room8_place_objects"},{"a":22244,"t":"gap","n":9},{"a":22253,"l":"fill_colour_rect","c":"Shared: fills a rectangle of the colour matrix: $FD rows of $FC bytes, value $FB, from the address in $FE/$FF, adding 40 per row. Used for floors, walls and ladders by the set-ups of every room but room 3 (51 call sites, some through helpers at $813E, $81B0, $81E1, $A721, $A737).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[19916,19935,19958,19977,22386,22409,22432,24130,24561,24584,24699,25088,26168,28206,28217,28381,28430,28441,28597,28620,28631,29068,29597,29604,29786,29820,29835,29904,29911,30188,33086,33134,33200,33217,33229,33262,33582,33601,33883,33947,33970,33993,34017,37140,37166,37192,37215,37395,37418,42785,42807]},{"a":22255,"l":"b_56EF","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[22280]},{"a":22257,"l":"b_56F1","t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte","x":[22264]},{"a":22259,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":22261,"t":"code","b":[200],"m":"iny"},{"a":22262,"t":"code","b":[196,252],"m":"cpy","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22264,"t":"code","b":[208,247],"m":"bne","oa":22257,"o":"b_56F1"},{"a":22266,"t":"code","b":[24],"m":"clc"},{"a":22267,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":22269,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":22271,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22273,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":22275,"t":"code","b":[176,8],"m":"bcs","oa":22285,"o":"b_570D"},{"a":22277,"l":"j_5705","t":"code","b":[232],"m":"inx","x":[22287]},{"a":22278,"t":"code","b":[228,253],"m":"cpx","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22280,"t":"code","b":[208,229],"m":"bne","oa":22255,"o":"b_56EF"},{"a":22282,"t":"code","b":[76,18,87],"m":"jmp","oa":22290,"o":"r_5712"},{"a":22285,"l":"b_570D","t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left","x":[22275]},{"a":22287,"t":"code","b":[76,5,87],"m":"jmp","oa":22277,"o":"j_5705"},{"a":22290,"l":"r_5712","t":"code","b":[96],"m":"rts","x":[22282]},{"a":22291,"l":"copy_pattern_rows","c":"Shared: draws a column of repeated bitmap: $FD rows, each a copy of the same $FC bytes read from the address in the operand at $5718/$5719, to the bitmap address in $FE/$FF, adding $140 (one character row) per row. Callers set the pattern first: $4802 (ladder), $58BB/$58CB (cones), $1151, $1161, $1119, $7265-$72F5, $47A2, $47BA (room 9, $742E). Room 5's set-up also stores $BA at $5826 (source $48BA) but makes no call with it.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[22461,22490,22553,23957,23968,23972,23983,24205,24234,24245,24266,24277,26197,26389,26400,29097,29112,29175,29196,29207,29223,29503,29519,29535,29551,29629,29640,29729,29745,33630,34135,37324,37340,37356,37372]},{"a":22293,"l":"b_5715","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[22321]},{"a":22295,"l":"b_5717","t":"code","b":[185,187,88],"m":"lda","oa":22715,"o":"cone_up_pattern,y","x":[22303]},{"a":22296,"t":"note","l":"pattern_src_lo","c":"Low byte of copy_pattern_rows' source operand (LDA $xxxx,Y at $5717), written by the callers before each call.","note":"inside the item at $5717","x":[22453,22482,22566,22680,22701,24197,24226,24258,26189,26381,26413,29089,29167,29188,29220,29495,29516,29532,29548,29621,29721,29742,33622,34127,37316,37337,37353,37369]},{"a":22297,"t":"note","l":"pattern_src_hi","c":"High byte of copy_pattern_rows' source operand, written by the callers ($48, $58, $11, $72, $47).","note":"inside the item at $5717","x":[22458,22487,22685,22706,24202,24231,24263,26194,26386,26418,29094,29172,29193,29500,29626,29726,33627,34132,37321]},{"a":22298,"t":"code","b":[145,254],"m":"sta","oa":254,"o":"(zp_ptr_lo),y"},{"a":22300,"t":"code","b":[200],"m":"iny"},{"a":22301,"t":"code","b":[196,252],"m":"cpy","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22303,"t":"code","b":[208,246],"m":"bne","oa":22295,"o":"b_5717"},{"a":22305,"t":"code","b":[24],"m":"clc"},{"a":22306,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22308,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":22310,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":22312,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22314,"t":"code","b":[165,254],"m":"lda","oa":254,"o":"zp_ptr_lo"},{"a":22316,"t":"code","b":[176,8],"m":"bcs","oa":22326,"o":"b_5736"},{"a":22318,"l":"j_572E","t":"code","b":[232],"m":"inx","x":[22328]},{"a":22319,"t":"code","b":[228,253],"m":"cpx","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22321,"t":"code","b":[208,226],"m":"bne","oa":22293,"o":"b_5715"},{"a":22323,"t":"code","b":[76,59,87],"m":"jmp","oa":22331,"o":"r_573B"},{"a":22326,"l":"b_5736","t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left","x":[22316]},{"a":22328,"t":"code","b":[76,46,87],"m":"jmp","oa":22318,"o":"j_572E"},{"a":22331,"l":"r_573B","t":"code","b":[96],"m":"rts","x":[22323]},{"a":22332,"t":"gap","n":1},{"a":22333,"l":"room5_setup","c":"Room 5 (stage 2) set-up, jumped to from $7AF4 and $954B: $8137 draws the ROOM digit 5 ($4DA0) and the STAGE digit 2 ($8100); room_blank_and_fill with $BA; colour fills ($81B0, fill_colour_rect): lower corridor $0608 (rows 13-18, columns 0-31) and upper corridor $0456 (rows 2-7, columns 6-38) in $CC, ladders $04FA (3 by 13) and $0512 (3 by 17) in $3C; ladder bitmaps at $2550 (15 rows) and $2890 (17 rows) from $4802. A fill of $06C0 with $7C (operand $57E6) is prepared but its call is NOPed out. $ABAE draws the chest of drawers at column 15, row 4; $100C = 5; sprite 3 Y $B4; six bytes of the ladder pattern $4802 in each of two bitmap rows, $3618 and $3758 ($FD = 2 left over from the NOPed fill); two red-and-white objects at columns 4 and 6, rows 16-18 ($A7D9/$A7F8); the plant ($AB74, $8C) at column 24, row 15 and its pot ($AB93, $6C) at row 18; the colour $2C (operand $586C) goes only to $D022; $1109/$1111 copied to bitmap cells row 4 and row 5, column 24; cones $58CB (pointing down) at rows 13-15 and $58BB (up) at rows 16-18, columns 16-19 ($5D95, $5DA4); JMP room5_place_sprites.","t":"code","b":[32,55,129],"m":"jsr","oa":33079,"o":"room5_status","x":[31476,38219]},{"a":22336,"t":"code","b":[169,186],"m":"lda","o":"#$BA"},{"a":22338,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22340,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":22343,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":22345,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22347,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":22349,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22351,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":22353,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":22355,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":22357,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22359,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":22361,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22363,"t":"code","b":[32,176,129],"m":"jsr","oa":33200,"o":"fill_d022_sprite0_black"},{"a":22366,"t":"code","b":[169,86],"m":"lda","o":"#$56"},{"a":22368,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22370,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":22372,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22374,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":22376,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":22378,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":22380,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22382,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":22384,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22386,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":22389,"t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":22391,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22393,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":22395,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22397,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":22399,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":22401,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":22403,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22405,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":22407,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22409,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":22412,"t":"code","b":[169,18],"m":"lda","o":"#$12"},{"a":22414,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22416,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":22418,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22420,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":22422,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":22424,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":22426,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22428,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":22430,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22432,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":22435,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":22437,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22439,"t":"code","b":[169,37],"m":"lda","o":"#$25"},{"a":22441,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22443,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":22445,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22447,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":22449,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22451,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":22453,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":22456,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":22458,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":22461,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":22464,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":22466,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22468,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":22470,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22472,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":22474,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22476,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":22478,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22480,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":22482,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":22485,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":22487,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":22490,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":22493,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":22495,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22497,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":22499,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22501,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":22502,"t":"note","l":"room5_object_colour","c":"Operand of LDA #$7C at $57E5: the colour room5_setup would give the 6 by 2 cells at $06C0 if the fill were not NOPed out; set to $CC by $5C3B when that object is taken, back to $7C by reset_room_objects ($56A7).","note":"inside the item at $57E5","x":[22183,23611]},{"a":22503,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":22505,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":22507,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22509,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":22511,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22513,"t":"code","b":[234],"m":"nop"},{"a":22514,"t":"code","b":[234],"m":"nop"},{"a":22515,"t":"code","b":[234],"m":"nop"},{"a":22516,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":22518,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":22520,"t":"code","b":[32,174,171],"m":"jsr","oa":43950,"o":"draw_drawers"},{"a":22523,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":22525,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":22528,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":22530,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":22533,"t":"code","b":[234],"m":"nop"},{"a":22534,"t":"code","b":[234],"m":"nop"},{"a":22535,"t":"code","b":[234],"m":"nop"},{"a":22536,"t":"code","b":[234],"m":"nop"},{"a":22537,"t":"code","b":[234],"m":"nop"},{"a":22538,"t":"code","b":[234],"m":"nop"},{"a":22539,"t":"code","b":[234],"m":"nop"},{"a":22540,"t":"code","b":[234],"m":"nop"},{"a":22541,"t":"code","b":[234],"m":"nop"},{"a":22542,"t":"code","b":[234],"m":"nop"},{"a":22543,"t":"code","b":[234],"m":"nop"},{"a":22544,"t":"code","b":[234],"m":"nop"},{"a":22545,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":22547,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22549,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":22551,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22553,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":22556,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":22558,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22560,"t":"code","b":[169,55],"m":"lda","o":"#$37"},{"a":22562,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22564,"t":"code","b":[169,186],"m":"lda","o":"#$BA"},{"a":22566,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":22569,"t":"code","b":[234],"m":"nop"},{"a":22570,"t":"code","b":[234],"m":"nop"},{"a":22571,"t":"code","b":[234],"m":"nop"},{"a":22572,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":22574,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22576,"t":"code","b":[169,55],"m":"lda","o":"#$37"},{"a":22578,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22580,"t":"code","b":[234],"m":"nop"},{"a":22581,"t":"code","b":[234],"m":"nop"},{"a":22582,"t":"code","b":[234],"m":"nop"},{"a":22583,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":22585,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":22587,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":22590,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":22592,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":22594,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":22597,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":22599,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":22601,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":22604,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":22606,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":22608,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":22611,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":22613,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":22615,"t":"code","b":[169,140],"m":"lda","o":"#$8C"},{"a":22617,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":22619,"t":"code","b":[32,116,171],"m":"jsr","oa":43892,"o":"draw_plant_27"},{"a":22622,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":22624,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":22626,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":22628,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":22630,"t":"code","b":[32,147,171],"m":"jsr","oa":43923,"o":"draw_pot_27"},{"a":22633,"t":"code","b":[234],"m":"nop"},{"a":22634,"t":"code","b":[234],"m":"nop"},{"a":22635,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":22636,"t":"note","l":"room5_item_colour","c":"Operand of LDA #$2C at $586B: the colour room5_setup stores twice in $D022 (where, in bitmap mode, it shows nowhere); set to $CC by $5CCC when the object at $04B8 is taken, back to $2C by $61DC.","note":"inside the item at $586B","x":[23756,25052]},{"a":22637,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":22640,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":22643,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":22645,"l":"b_5875","t":"code","b":[189,9,17],"m":"lda","oa":4361,"o":"gfx_key_top,x","x":[22660]},{"a":22648,"t":"code","b":[157,192,37],"m":"sta","oa":9664,"o":"f_25C0,x"},{"a":22651,"t":"code","b":[189,17,17],"m":"lda","oa":4369,"o":"gfx_key_bottom,x"},{"a":22654,"t":"code","b":[157,0,39],"m":"sta","oa":9984,"o":"f_2700,x"},{"a":22657,"t":"code","b":[232],"m":"inx"},{"a":22658,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":22660,"t":"code","b":[208,239],"m":"bne","oa":22645,"o":"b_5875"},{"a":22662,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":22664,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22666,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":22668,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22670,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":22672,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":22674,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":22676,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22678,"t":"code","b":[169,203],"m":"lda","o":"#$CB"},{"a":22680,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":22683,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":22685,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":22688,"t":"code","b":[32,149,93],"m":"jsr","oa":23957,"o":"room5_draw_down_cones"},{"a":22691,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":22693,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":22695,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":22697,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22699,"t":"code","b":[169,187],"m":"lda","o":"#$BB"},{"a":22701,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":22704,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":22706,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":22709,"t":"code","b":[32,164,93],"m":"jsr","oa":23972,"o":"room5_draw_up_cones"},{"a":22712,"t":"code","b":[76,220,88],"m":"jmp","oa":22748,"o":"room5_place_sprites"},{"a":22715,"l":"cone_up_pattern","c":"Two 8-byte bitmap cells, a cone pointing up (08 1C 3E 49 ... / 10 38 7C 92 ...), drawn by copy_pattern_rows as columns of floor cones: room 5 at $3480/$3490 ($58AB), room 6 at $34C0/$34D0 ($5EC0); room 8's set-up selects it at $672B but draws nothing with it (INC $D022 stands where the call would be).","t":"byte","b":[8,28,62,73,8,28,62,73],"x":[22295]},{"a":22723,"t":"byte","b":[16,56,124,146,16,56,124,146]},{"a":22731,"l":"cone_down_pattern","c":"Two 8-byte bitmap cells, the same cone upside down (49 3E 1C 08 ... / 92 7C 38 10 ...), drawn by copy_pattern_rows as cones hanging from the ceiling: room 5 at $30C0/$30D0 ($5896), room 6 at $3100/$3110 ($5EA0) and others ($670B).","t":"byte","b":[73,62,28,8,73,62,28,8]},{"a":22739,"t":"byte","b":[146,124,56,16,146,124,56,16]},{"a":22747,"t":"gap","n":1},{"a":22748,"l":"room5_place_sprites","c":"Room 5 entry after the drawing: primes room5_irq's two guardian steps to INC $D000 ($5976-$597A); $FB = 0; sprites 0 and 4 on. If $4ACD = $24 (stored at $9546 by room 4 when he leaves it to the right) Mr Hat starts at X $1A (high bit clear), Y $B4, frame $2C; otherwise (from room 9 below, $7AF1) his X high bit is set, Y $D0, frame $33, on the right-hand ladder. Sprite 3 frame $26 at X $FF, sprite 0 at X $61 Y $4F (high bits of 0 and 3 cleared); walk bases $FD = $2C, $FF = $2F; $99 = 0, $F6 = 0; IRQ vector $0314 = room5_irq; JMP $B8A7 (sprite 0 multicolour, colour $0B, then $A823: screen on, room5_main_loop).","t":"code","b":[169,238],"m":"lda","o":"#$EE","x":[22712]},{"a":22750,"t":"code","b":[141,118,89],"m":"sta","oa":22902,"o":"room5_guardian_step1_op"},{"a":22753,"t":"code","b":[141,121,89],"m":"sta","oa":22905,"o":"room5_guardian_step2_op"},{"a":22756,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":22758,"t":"code","b":[141,119,89],"m":"sta","oa":22903,"o":"room5_guardian_step1_axis"},{"a":22761,"t":"code","b":[141,122,89],"m":"sta","oa":22906,"o":"room5_guardian_step2_axis"},{"a":22764,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":22766,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":22768,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":22771,"t":"code","b":[9,17],"m":"ora","o":"#$11"},{"a":22773,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":22776,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":22779,"t":"code","b":[201,36],"m":"cmp","o":"#$24"},{"a":22781,"t":"code","b":[208,26],"m":"bne","oa":22809,"o":"b_5919"},{"a":22783,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":22786,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":22788,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":22791,"t":"code","b":[169,26],"m":"lda","o":"#$1A"},{"a":22793,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":22796,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":22798,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":22801,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":22803,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":22806,"t":"code","b":[76,43,89],"m":"jmp","oa":22827,"o":"j_592B"},{"a":22809,"l":"b_5919","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[22781]},{"a":22812,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":22814,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":22817,"t":"code","b":[169,208],"m":"lda","o":"#$D0"},{"a":22819,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":22822,"t":"code","b":[169,51],"m":"lda","o":"#$33"},{"a":22824,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":22827,"l":"j_592B","t":"code","b":[169,38],"m":"lda","o":"#$26","x":[22806]},{"a":22829,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":22832,"t":"code","b":[169,79],"m":"lda","o":"#$4F"},{"a":22834,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":22837,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":22840,"t":"code","b":[41,246],"m":"and","o":"#$F6"},{"a":22842,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":22845,"t":"code","b":[169,97],"m":"lda","o":"#$61"},{"a":22847,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":22850,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":22852,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":22855,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":22857,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":22859,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":22861,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":22863,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":22865,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":22867,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":22869,"t":"code","b":[133,246],"m":"sta","oa":246,"o":"dying_flag"},{"a":22871,"t":"code","b":[120],"m":"sei"},{"a":22872,"t":"code","b":[169,106],"m":"lda","o":"#$6A"},{"a":22874,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":22877,"t":"code","b":[169,89],"m":"lda","o":"#$59"},{"a":22879,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":22882,"t":"code","b":[88],"m":"cli"},{"a":22883,"t":"code","b":[76,167,184],"m":"jmp","oa":47271,"o":"setup_sprite0_then_room"},{"a":22886,"t":"gap","n":4},{"a":22890,"l":"room5_irq","c":"Room 5's IRQ handler (put in $0314 by $58DC): counts $64F1 and $64F0 (frame timers for $7000), JSR $B877 (sprite 3 one pixel left, frame $3B/$3C every 5 frames, colour $0A), DEC $D006 (a second pixel), the self-modified steps at $5976 and $5979 (sprite 0 two pixels), INC $F6. Sprite 3 is switched off or on each frame its X is below 3. At $F6 = $40, $80 and $B0 it writes $CC into the colour cells of the cones (rows 13 and 18, 14 and 17, 15 and 16, columns 16-19), and at $F6 = $F0 into all six rows, then JMP $7000 without the guardian turns. No code found writes another colour there, so the writes change nothing visible found.","t":"code","b":[238,241,100],"m":"inc","oa":25841,"o":"sprite1_anim_count"},{"a":22893,"t":"code","b":[238,240,100],"m":"inc","oa":25840,"o":"sprite0_anim_count"},{"a":22896,"t":"code","b":[32,119,184],"m":"jsr","oa":47223,"o":"anim_sprite3_walk_left"},{"a":22899,"t":"code","b":[206,6,208],"m":"dec","o":"vic_sprite3_x"},{"a":22902,"l":"room5_guardian_step1_op","c":"Self-modified opcode of room 5's first guardian step: $EE (INC) or $CE (DEC), set by $58DE, $5A18 and $5A3E.","t":"code","b":[238,0,208],"m":"inc","o":"vic_sprite0_x","x":[22750,23064,23102]},{"a":22903,"t":"note","l":"room5_guardian_step1_axis","c":"Self-modified low byte of the first step's operand: $00 sprite 0's X ($D000), $01 its Y ($D001).","note":"inside the item at $5976","x":[22758,23041,23056,23079,23094]},{"a":22905,"l":"room5_guardian_step2_op","c":"Self-modified opcode of the second guardian step, always written with $5976 so sprite 0 moves two pixels a frame.","t":"code","b":[238,0,208],"m":"inc","o":"vic_sprite0_x","x":[22753,23067,23105]},{"a":22906,"t":"note","l":"room5_guardian_step2_axis","c":"Self-modified axis byte of the second step, written with $5977.","note":"inside the item at $5979","x":[22761,23044,23059,23082,23097]},{"a":22908,"t":"code","b":[230,246],"m":"inc","oa":246,"o":"dying_flag"},{"a":22910,"t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x"},{"a":22913,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":22915,"t":"code","b":[176,8],"m":"bcs","oa":22925,"o":"b_598D"},{"a":22917,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":22920,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":22922,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":22925,"l":"b_598D","t":"code","b":[165,246],"m":"lda","oa":246,"o":"dying_flag","x":[22915]},{"a":22927,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":22929,"t":"code","b":[208,18],"m":"bne","oa":22949,"o":"b_59A5"},{"a":22931,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":22933,"l":"b_5995","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[22944]},{"a":22935,"t":"code","b":[157,24,6],"m":"sta","oa":1560,"o":"f_0618,x"},{"a":22938,"t":"code","b":[157,224,6],"m":"sta","oa":1760,"o":"f_06E0,x"},{"a":22941,"t":"code","b":[232],"m":"inx"},{"a":22942,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":22944,"t":"code","b":[208,243],"m":"bne","oa":22933,"o":"b_5995"},{"a":22946,"t":"code","b":[76,248,89],"m":"jmp","oa":23032,"o":"room5_guardian_turns"},{"a":22949,"l":"b_59A5","t":"code","b":[201,128],"m":"cmp","o":"#$80","x":[22929]},{"a":22951,"t":"code","b":[208,18],"m":"bne","oa":22971,"o":"b_59BB"},{"a":22953,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":22955,"l":"b_59AB","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[22966]},{"a":22957,"t":"code","b":[157,64,6],"m":"sta","oa":1600,"o":"f_0640,x"},{"a":22960,"t":"code","b":[157,184,6],"m":"sta","oa":1720,"o":"f_06B8,x"},{"a":22963,"t":"code","b":[232],"m":"inx"},{"a":22964,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":22966,"t":"code","b":[208,243],"m":"bne","oa":22955,"o":"b_59AB"},{"a":22968,"t":"code","b":[76,248,89],"m":"jmp","oa":23032,"o":"room5_guardian_turns"},{"a":22971,"l":"b_59BB","t":"code","b":[201,176],"m":"cmp","o":"#$B0","x":[22951]},{"a":22973,"t":"code","b":[208,18],"m":"bne","oa":22993,"o":"b_59D1"},{"a":22975,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":22977,"l":"b_59C1","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[22988]},{"a":22979,"t":"code","b":[157,104,6],"m":"sta","oa":1640,"o":"f_0668,x"},{"a":22982,"t":"code","b":[157,144,6],"m":"sta","oa":1680,"o":"f_0690,x"},{"a":22985,"t":"code","b":[232],"m":"inx"},{"a":22986,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":22988,"t":"code","b":[208,243],"m":"bne","oa":22977,"o":"b_59C1"},{"a":22990,"t":"code","b":[76,248,89],"m":"jmp","oa":23032,"o":"room5_guardian_turns"},{"a":22993,"l":"b_59D1","t":"code","b":[201,240],"m":"cmp","o":"#$F0","x":[22973]},{"a":22995,"t":"code","b":[208,35],"m":"bne","oa":23032,"o":"room5_guardian_turns"},{"a":22997,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":22999,"l":"b_59D7","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[23022]},{"a":23001,"t":"code","b":[157,24,6],"m":"sta","oa":1560,"o":"f_0618,x"},{"a":23004,"t":"code","b":[157,224,6],"m":"sta","oa":1760,"o":"f_06E0,x"},{"a":23007,"t":"code","b":[157,64,6],"m":"sta","oa":1600,"o":"f_0640,x"},{"a":23010,"t":"code","b":[157,104,6],"m":"sta","oa":1640,"o":"f_0668,x"},{"a":23013,"t":"code","b":[157,144,6],"m":"sta","oa":1680,"o":"f_0690,x"},{"a":23016,"t":"code","b":[157,184,6],"m":"sta","oa":1720,"o":"f_06B8,x"},{"a":23019,"t":"code","b":[232],"m":"inx"},{"a":23020,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":23022,"t":"code","b":[208,231],"m":"bne","oa":22999,"o":"b_59D7"},{"a":23024,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":23027,"t":"gap","n":5},{"a":23032,"l":"room5_guardian_turns","c":"Room 5 IRQ, sprite 0's turns: X >= $FE -> moves on Y (down); Y >= $5C -> DEC on X (left) until X < $8F, then on Y (up); Y < $4E -> INC on X (right) with Y = $4F. A closed loop between X $8F-$FE and Y $4E-$5C, along the upper floor. JMP $7000.","t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x","x":[22946,22968,22990,22995]},{"a":23035,"t":"code","b":[201,254],"m":"cmp","o":"#$FE"},{"a":23037,"t":"code","b":[144,8],"m":"bcc","oa":23047,"o":"b_5A07"},{"a":23039,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":23041,"t":"code","b":[141,119,89],"m":"sta","oa":22903,"o":"room5_guardian_step1_axis"},{"a":23044,"t":"code","b":[141,122,89],"m":"sta","oa":22906,"o":"room5_guardian_step2_axis"},{"a":23047,"l":"b_5A07","t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y","x":[23037]},{"a":23050,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":23052,"t":"code","b":[144,31],"m":"bcc","oa":23085,"o":"b_5A2D"},{"a":23054,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23056,"t":"code","b":[141,119,89],"m":"sta","oa":22903,"o":"room5_guardian_step1_axis"},{"a":23059,"t":"code","b":[141,122,89],"m":"sta","oa":22906,"o":"room5_guardian_step2_axis"},{"a":23062,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":23064,"t":"code","b":[141,118,89],"m":"sta","oa":22902,"o":"room5_guardian_step1_op"},{"a":23067,"t":"code","b":[141,121,89],"m":"sta","oa":22905,"o":"room5_guardian_step2_op"},{"a":23070,"t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x"},{"a":23073,"t":"code","b":[201,143],"m":"cmp","o":"#$8F"},{"a":23075,"t":"code","b":[176,36],"m":"bcs","oa":23113,"o":"b_5A49"},{"a":23077,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":23079,"t":"code","b":[141,119,89],"m":"sta","oa":22903,"o":"room5_guardian_step1_axis"},{"a":23082,"t":"code","b":[141,122,89],"m":"sta","oa":22906,"o":"room5_guardian_step2_axis"},{"a":23085,"l":"b_5A2D","t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y","x":[23052]},{"a":23088,"t":"code","b":[201,78],"m":"cmp","o":"#$4E"},{"a":23090,"t":"code","b":[176,21],"m":"bcs","oa":23113,"o":"b_5A49"},{"a":23092,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23094,"t":"code","b":[141,119,89],"m":"sta","oa":22903,"o":"room5_guardian_step1_axis"},{"a":23097,"t":"code","b":[141,122,89],"m":"sta","oa":22906,"o":"room5_guardian_step2_axis"},{"a":23100,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":23102,"t":"code","b":[141,118,89],"m":"sta","oa":22902,"o":"room5_guardian_step1_op"},{"a":23105,"t":"code","b":[141,121,89],"m":"sta","oa":22905,"o":"room5_guardian_step2_op"},{"a":23108,"t":"code","b":[169,79],"m":"lda","o":"#$4F"},{"a":23110,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":23113,"l":"b_5A49","t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames","x":[23075,23090]},{"a":23116,"t":"gap","n":20},{"a":23136,"l":"room5_main_loop","c":"Room 5 main loop, entered from $A823 (screen on) each pass; the template of room2_main_loop. $D8 = $40 (lives used up) -> $4475, the title. Else respawn ($5D45), checks and guardians ($5D75), then $DC00: $77 -> walk_right, $7B -> walk_left (both to the exit test $5B76); $7D -> duck ($5BC8); $6F (read twice) -> the three-part jump the way he faces ($5A9E, $5D75 after every step); $5B5C: $67 (fire + right) -> $5D72 and the jump, $6B (fire + left) -> $1CB0, $5D72 and the jump.","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[43046]},{"a":23138,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":23140,"t":"code","b":[208,3],"m":"bne","oa":23145,"o":"b_5A69"},{"a":23142,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":23145,"l":"b_5A69","t":"code","b":[32,69,93],"m":"jsr","oa":23877,"o":"respawn_left_if_off","x":[23140]},{"a":23148,"t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks"},{"a":23151,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":23154,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":23156,"t":"code","b":[208,6],"m":"bne","oa":23164,"o":"b_5A7C"},{"a":23158,"t":"code","b":[32,64,83],"m":"jsr","oa":21312,"o":"walk_right"},{"a":23161,"t":"code","b":[76,118,91],"m":"jmp","oa":23414,"o":"room5_exit_test"},{"a":23164,"l":"b_5A7C","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[23156]},{"a":23166,"t":"code","b":[208,6],"m":"bne","oa":23174,"o":"b_5A86"},{"a":23168,"t":"code","b":[32,112,83],"m":"jsr","oa":21360,"o":"walk_left"},{"a":23171,"t":"code","b":[76,118,91],"m":"jmp","oa":23414,"o":"room5_exit_test"},{"a":23174,"l":"b_5A86","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[23166]},{"a":23176,"t":"code","b":[208,9],"m":"bne","oa":23187,"o":"b_5A93"},{"a":23178,"t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks"},{"a":23181,"t":"code","b":[32,200,91],"m":"jsr","oa":23496,"o":"room5_duck"},{"a":23184,"t":"code","b":[76,92,91],"m":"jmp","oa":23388,"o":"j_5B5C"},{"a":23187,"l":"b_5A93","t":"code","b":[201,111],"m":"cmp","o":"#$6F","x":[23176]},{"a":23189,"t":"code","b":[208,104],"m":"bne","oa":23295,"o":"b_5AFF"},{"a":23191,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":23194,"t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":23196,"t":"code","b":[208,97],"m":"bne","oa":23295,"o":"b_5AFF"},{"a":23198,"l":"j_5A9E","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[23398,23411]},{"a":23201,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":23203,"t":"code","b":[176,93],"m":"bcs","oa":23298,"o":"b_5B02"},{"a":23205,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":23207,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23210,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":23213,"l":"b_5AAD","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[23231]},{"a":23216,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":23219,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":23222,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":23224,"t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks"},{"a":23227,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":23229,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":23231,"t":"code","b":[208,236],"m":"bne","oa":23213,"o":"b_5AAD"},{"a":23233,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23235,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":23237,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":23240,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":23242,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23245,"l":"b_5ACD","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[23257]},{"a":23248,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":23250,"t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks"},{"a":23253,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":23255,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":23257,"t":"code","b":[208,242],"m":"bne","oa":23245,"o":"b_5ACD"},{"a":23259,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23261,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":23263,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":23266,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":23268,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23271,"l":"b_5AE7","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[23286]},{"a":23274,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":23277,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":23279,"t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks"},{"a":23282,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":23284,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":23286,"t":"code","b":[208,239],"m":"bne","oa":23271,"o":"b_5AE7"},{"a":23288,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23290,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":23292,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":23295,"l":"b_5AFF","t":"code","b":[76,92,91],"m":"jmp","oa":23388,"o":"j_5B5C","x":[23189,23196]},{"a":23298,"l":"b_5B02","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[23203]},{"a":23300,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23303,"l":"b_5B07","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[23324]},{"a":23306,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":23309,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":23312,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":23315,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":23317,"t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks"},{"a":23320,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":23322,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":23324,"t":"code","b":[208,233],"m":"bne","oa":23303,"o":"b_5B07"},{"a":23326,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23328,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":23330,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":23333,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":23335,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23338,"l":"b_5B2A","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[23350]},{"a":23341,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":23343,"t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks"},{"a":23346,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":23348,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":23350,"t":"code","b":[208,242],"m":"bne","oa":23338,"o":"b_5B2A"},{"a":23352,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23354,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":23356,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":23359,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":23361,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23364,"l":"b_5B44","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[23379]},{"a":23367,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":23370,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":23372,"t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks"},{"a":23375,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":23377,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":23379,"t":"code","b":[208,239],"m":"bne","oa":23364,"o":"b_5B44"},{"a":23381,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23383,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":23385,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":23388,"l":"j_5B5C","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[23184,23295]},{"a":23391,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":23393,"t":"code","b":[208,6],"m":"bne","oa":23401,"o":"b_5B69"},{"a":23395,"t":"code","b":[32,114,93],"m":"jsr","oa":23922,"o":"room5_exit_then_checks"},{"a":23398,"t":"code","b":[76,158,90],"m":"jmp","oa":23198,"o":"j_5A9E"},{"a":23401,"l":"b_5B69","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[23393]},{"a":23403,"t":"code","b":[208,9],"m":"bne","oa":23414,"o":"room5_exit_test"},{"a":23405,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":23408,"t":"code","b":[32,114,93],"m":"jsr","oa":23922,"o":"room5_exit_then_checks"},{"a":23411,"t":"code","b":[76,158,90],"m":"jmp","oa":23198,"o":"j_5A9E"},{"a":23414,"l":"room5_exit_test","c":"Room 5 exit test: $4ACD = $28 (left edge, $5BFE) -> $45D5, JMP $8FFC (room 4's set-up); $4ACD = $30 (foot of the right-hand ladder, $5D37) -> $45D5, JMP $7140 (room 9's set-up, by the $100C = 9 it stores at $7250); else $5BB0. The copy at $5B90 is the one used before a fire + direction jump.","t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code","x":[23161,23171,23403]},{"a":23417,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":23419,"t":"code","b":[208,6],"m":"bne","oa":23427,"o":"b_5B83"},{"a":23421,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":23424,"t":"code","b":[76,252,143],"m":"jmp","oa":36860,"o":"enter_room4_or_7"},{"a":23427,"l":"b_5B83","t":"code","b":[201,48],"m":"cmp","o":"#$30","x":[23419]},{"a":23429,"t":"code","b":[208,6],"m":"bne","oa":23437,"o":"b_5B8D"},{"a":23431,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":23434,"t":"code","b":[76,64,113],"m":"jmp","oa":28992,"o":"room9_setup"},{"a":23437,"l":"b_5B8D","t":"code","b":[76,176,91],"m":"jmp","oa":23472,"o":"room5_stand_and_loop","x":[23429]},{"a":23440,"l":"room5_exit_test_before_jump","c":"Called through $5D72 before a fire + direction jump: $4ACD = $28 -> JMP $8FFC as in $5B76, but $4ACD = $30 -> $45D5 and JMP $0870, which turns bitmap mode on ($9265) and restarts the game at room 1 ($087E -> $6E00) instead of going to room 9. Whether $4ACD can be $30 here is open: $5D20 leaves $69 in $DC00 at the same time.","t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code","x":[23922]},{"a":23443,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":23445,"t":"code","b":[208,6],"m":"bne","oa":23453,"o":"b_5B9D"},{"a":23447,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":23450,"t":"code","b":[76,252,143],"m":"jmp","oa":36860,"o":"enter_room4_or_7"},{"a":23453,"l":"b_5B9D","t":"code","b":[201,48],"m":"cmp","o":"#$30","x":[23445]},{"a":23455,"t":"code","b":[208,6],"m":"bne","oa":23463,"o":"r_5BA7"},{"a":23457,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":23460,"t":"code","b":[76,112,8],"m":"jmp","oa":2160,"o":"new_game"},{"a":23463,"l":"r_5BA7","t":"code","b":[96],"m":"rts","x":[23455]},{"a":23464,"t":"gap","n":8},{"a":23472,"l":"room5_stand_and_loop","c":"Room 5: ends a pass with the standing frame ($2F if the frame was $2F or more, else $2C) and JMP $A823 (screen on, room5_main_loop).","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[23437]},{"a":23475,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":23477,"t":"code","b":[144,8],"m":"bcc","oa":23487,"o":"b_5BBF"},{"a":23479,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":23481,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23484,"t":"code","b":[76,35,168],"m":"jmp","oa":43043,"o":"reenter_loop_5a60"},{"a":23487,"l":"b_5BBF","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[23477]},{"a":23489,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23492,"t":"code","b":[76,35,168],"m":"jmp","oa":43043,"o":"reenter_loop_5a60"},{"a":23495,"t":"gap","n":1},{"a":23496,"l":"room5_duck","c":"Room 5, stick down: saves the frame, shows frame $2A and runs room5_checks ($5D75) while $DC00 stays $7D, then puts the frame back.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[23181]},{"a":23499,"t":"code","b":[72],"m":"pha"},{"a":23500,"l":"b_5BCC","t":"code","b":[32,117,93],"m":"jsr","oa":23925,"o":"room5_checks","x":[23513]},{"a":23503,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":23505,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23508,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":23511,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":23513,"t":"code","b":[240,241],"m":"beq","oa":23500,"o":"b_5BCC"},{"a":23515,"t":"code","b":[104],"m":"pla"},{"a":23516,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23519,"t":"code","b":[96],"m":"rts"},{"a":23520,"l":"room5_checks_if_visible","c":"Room 5: if $D015 >= $10 (Mr Hat's sprite on) JSR $8157, which picks the checks by his Y: >= $C0 room5_right_ladder ($5D20), < $80 room5_upper_floor_checks ($5C66), else room5_lower_floor_checks ($5BEF).","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[23925]},{"a":23523,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":23525,"t":"code","b":[176,1],"m":"bcs","oa":23528,"o":"b_5BE8"},{"a":23527,"t":"code","b":[96],"m":"rts"},{"a":23528,"l":"b_5BE8","t":"code","b":[32,87,129],"m":"jsr","oa":33111,"o":"room5_floor_dispatch","x":[23525]},{"a":23531,"t":"code","b":[96],"m":"rts"},{"a":23532,"t":"gap","n":3},{"a":23535,"l":"room5_lower_floor_checks","c":"Room 5, lower floor (Y $80-$BF): X $10 -> sprite 4 off and $4ACD = $28, the exit to the left; X $FF -> DEC X (wall); $64 <= X < $74 with stick up ($7E) -> the left-hand ladder ($5D00); X $E0 with colour cell $06C0 = $7C -> five calls of $41DA (score digit drawn at bitmap $3D38), the 6 by 2 cells from $06C0 to $CC, $57E6 = $CC, $448A and $4517; $84 <= X < $B4 with colour cell $0618 = $9C -> death (the cones). In the image $06C0 is never filled with $7C (room5_setup's fill is NOPed out; the plant there is $8C) and no $9C written to $0618 was found.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[33130]},{"a":23538,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":23540,"t":"code","b":[208,14],"m":"bne","oa":23556,"o":"b_5C04"},{"a":23542,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":23545,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":23547,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":23550,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":23552,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":23555,"t":"code","b":[96],"m":"rts"},{"a":23556,"l":"b_5C04","t":"code","b":[201,255],"m":"cmp","o":"#$FF","x":[23540]},{"a":23558,"t":"code","b":[208,4],"m":"bne","oa":23564,"o":"b_5C0C"},{"a":23560,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":23563,"t":"code","b":[96],"m":"rts"},{"a":23564,"l":"b_5C0C","t":"code","b":[201,116],"m":"cmp","o":"#$74","x":[23558]},{"a":23566,"t":"code","b":[176,15],"m":"bcs","oa":23583,"o":"b_5C1F"},{"a":23568,"t":"code","b":[201,100],"m":"cmp","o":"#$64"},{"a":23570,"t":"code","b":[144,11],"m":"bcc","oa":23583,"o":"b_5C1F"},{"a":23572,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":23575,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":23577,"t":"code","b":[208,4],"m":"bne","oa":23583,"o":"b_5C1F"},{"a":23579,"t":"code","b":[32,0,93],"m":"jsr","oa":23808,"o":"room5_left_ladder"},{"a":23582,"t":"code","b":[96],"m":"rts"},{"a":23583,"l":"b_5C1F","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[23566,23570,23577]},{"a":23586,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":23588,"t":"code","b":[208,42],"m":"bne","oa":23632,"o":"b_5C50"},{"a":23590,"t":"code","b":[173,192,6],"m":"lda","oa":1728,"o":"a_06C0"},{"a":23593,"t":"code","b":[201,124],"m":"cmp","o":"#$7C"},{"a":23595,"t":"code","b":[208,35],"m":"bne","oa":23632,"o":"b_5C50"},{"a":23597,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":23599,"l":"b_5C2F","t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000","x":[23605]},{"a":23602,"t":"code","b":[200],"m":"iny"},{"a":23603,"t":"code","b":[192,5],"m":"cpy","o":"#$05"},{"a":23605,"t":"code","b":[208,248],"m":"bne","oa":23599,"o":"b_5C2F"},{"a":23607,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":23609,"l":"b_5C39","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[23623]},{"a":23611,"t":"code","b":[141,230,87],"m":"sta","oa":22502,"o":"room5_object_colour"},{"a":23614,"t":"code","b":[157,192,6],"m":"sta","oa":1728,"o":"a_06C0,x"},{"a":23617,"t":"code","b":[157,232,6],"m":"sta","oa":1768,"o":"f_06E8,x"},{"a":23620,"t":"code","b":[232],"m":"inx"},{"a":23621,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":23623,"t":"code","b":[208,240],"m":"bne","oa":23609,"o":"b_5C39"},{"a":23625,"t":"code","b":[32,138,68],"m":"jsr","oa":17546,"o":"voice1_off"},{"a":23628,"t":"code","b":[32,23,69],"m":"jsr","oa":17687,"o":"voice1_off_b"},{"a":23631,"t":"code","b":[96],"m":"rts"},{"a":23632,"l":"b_5C50","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[23588,23595]},{"a":23635,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":23637,"t":"code","b":[176,14],"m":"bcs","oa":23653,"o":"r_5C65"},{"a":23639,"t":"code","b":[201,132],"m":"cmp","o":"#$84"},{"a":23641,"t":"code","b":[144,10],"m":"bcc","oa":23653,"o":"r_5C65"},{"a":23643,"t":"code","b":[173,24,6],"m":"lda","oa":1560,"o":"f_0618"},{"a":23646,"t":"code","b":[201,156],"m":"cmp","o":"#$9C"},{"a":23648,"t":"code","b":[208,3],"m":"bne","oa":23653,"o":"r_5C65"},{"a":23650,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":23653,"l":"r_5C65","t":"code","b":[96],"m":"rts","x":[23637,23641,23648]},{"a":23654,"l":"room5_upper_floor_checks","c":"Room 5, upper floor (Y < $80): X $00 or $FF -> $4610 (carry across 256). X high bit set ($D010 >= $2F): X $38 -> DEC X (wall), $1C <= X < $2C with stick down -> the right-hand ladder ($5D20). High bit clear: X $48 -> INC X (wall); $64 <= X < $74 with stick down -> the left-hand ladder ($5D00); X $C8 with colour cell $04B8 = $2C and $D8 not $50 -> takes the object: cells $04B8/$04E0 to $CC, $D022 twice, $1CB0, $1CC2, $D8 = $50, $586C = $CC, icon $2C at $07BE/$07E6, carried object $F5 = $EE.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[33126]},{"a":23657,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":23659,"t":"code","b":[208,4],"m":"bne","oa":23665,"o":"b_5C71"},{"a":23661,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":23664,"t":"code","b":[96],"m":"rts"},{"a":23665,"l":"b_5C71","t":"code","b":[201,255],"m":"cmp","o":"#$FF","x":[23659]},{"a":23667,"t":"code","b":[208,4],"m":"bne","oa":23673,"o":"b_5C79"},{"a":23669,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":23672,"t":"code","b":[96],"m":"rts"},{"a":23673,"l":"b_5C79","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[23667]},{"a":23676,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":23678,"t":"code","b":[176,92],"m":"bcs","oa":23772,"o":"b_5CDC"},{"a":23680,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":23683,"t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":23685,"t":"code","b":[208,4],"m":"bne","oa":23691,"o":"b_5C8B"},{"a":23687,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":23690,"t":"code","b":[96],"m":"rts"},{"a":23691,"l":"b_5C8B","t":"code","b":[201,116],"m":"cmp","o":"#$74","x":[23685]},{"a":23693,"t":"code","b":[176,15],"m":"bcs","oa":23710,"o":"b_5C9E"},{"a":23695,"t":"code","b":[201,100],"m":"cmp","o":"#$64"},{"a":23697,"t":"code","b":[144,11],"m":"bcc","oa":23710,"o":"b_5C9E"},{"a":23699,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":23702,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":23704,"t":"code","b":[208,4],"m":"bne","oa":23710,"o":"b_5C9E"},{"a":23706,"t":"code","b":[32,0,93],"m":"jsr","oa":23808,"o":"room5_left_ladder"},{"a":23709,"l":"r_5C9D","t":"code","b":[96],"m":"rts","x":[23715,23722,23728]},{"a":23710,"l":"b_5C9E","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[23693,23697,23704]},{"a":23713,"t":"code","b":[201,200],"m":"cmp","o":"#$C8"},{"a":23715,"t":"code","b":[208,248],"m":"bne","oa":23709,"o":"r_5C9D"},{"a":23717,"t":"code","b":[173,184,4],"m":"lda","oa":1208,"o":"a_04B8"},{"a":23720,"t":"code","b":[201,44],"m":"cmp","o":"#$2C"},{"a":23722,"t":"code","b":[208,241],"m":"bne","oa":23709,"o":"r_5C9D"},{"a":23724,"t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8"},{"a":23726,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":23728,"t":"code","b":[240,235],"m":"beq","oa":23709,"o":"r_5C9D"},{"a":23730,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":23732,"t":"code","b":[141,184,4],"m":"sta","oa":1208,"o":"a_04B8"},{"a":23735,"t":"code","b":[141,224,4],"m":"sta","oa":1248,"o":"a_04E0"},{"a":23738,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":23741,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":23744,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":23747,"t":"code","b":[32,194,28],"m":"jsr","oa":7362,"o":"sound_stub_1cc2"},{"a":23750,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":23752,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":23754,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":23756,"t":"code","b":[141,108,88],"m":"sta","oa":22636,"o":"room5_item_colour"},{"a":23759,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":23761,"t":"code","b":[141,190,7],"m":"sta","oa":1982,"o":"carried_item_cell_top"},{"a":23764,"t":"code","b":[141,230,7],"m":"sta","oa":2022,"o":"carried_item_cell_bottom"},{"a":23767,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":23769,"t":"code","b":[133,245],"m":"sta","oa":245,"o":"room_var_f5"},{"a":23771,"t":"code","b":[96],"m":"rts"},{"a":23772,"l":"b_5CDC","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[23678]},{"a":23775,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":23777,"t":"code","b":[208,4],"m":"bne","oa":23783,"o":"b_5CE7"},{"a":23779,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":23782,"t":"code","b":[96],"m":"rts"},{"a":23783,"l":"b_5CE7","t":"code","b":[201,44],"m":"cmp","o":"#$2C","x":[23777]},{"a":23785,"t":"code","b":[176,15],"m":"bcs","oa":23802,"o":"r_5CFA"},{"a":23787,"t":"code","b":[201,28],"m":"cmp","o":"#$1C"},{"a":23789,"t":"code","b":[144,11],"m":"bcc","oa":23802,"o":"r_5CFA"},{"a":23791,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":23794,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":23796,"t":"code","b":[208,4],"m":"bne","oa":23802,"o":"r_5CFA"},{"a":23798,"t":"code","b":[32,32,93],"m":"jsr","oa":23840,"o":"room5_right_ladder"},{"a":23801,"t":"code","b":[96],"m":"rts"},{"a":23802,"l":"r_5CFA","t":"code","b":[96],"m":"rts","x":[23785,23789,23796]},{"a":23803,"t":"gap","n":5},{"a":23808,"l":"room5_left_ladder","c":"Room 5, left-hand ladder: snaps Mr Hat to X $68, then loops one climbing step ($4B20) and the ladder touch test ($5D7C) until Y is $5C (top) or $B4 (lower floor).","t":"code","b":[169,104],"m":"lda","o":"#$68","x":[23579,23706]},{"a":23810,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":23813,"l":"b_5D05","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[23829]},{"a":23816,"t":"code","b":[32,124,93],"m":"jsr","oa":23932,"o":"room5_ladder_touch_test"},{"a":23819,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":23822,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":23824,"t":"code","b":[208,1],"m":"bne","oa":23827,"o":"b_5D13"},{"a":23826,"t":"code","b":[96],"m":"rts"},{"a":23827,"l":"b_5D13","t":"code","b":[201,180],"m":"cmp","o":"#$B4","x":[23824]},{"a":23829,"t":"code","b":[208,238],"m":"bne","oa":23813,"o":"b_5D05"},{"a":23831,"t":"code","b":[96],"m":"rts"},{"a":23832,"t":"gap","n":8},{"a":23840,"l":"room5_right_ladder","c":"Room 5, right-hand ladder (X high bit already set): X $28, then loops $4B20 and $5D7C; returns at the top (Y $5C); at Y >= $D7 (below the room) sets $4ACD = $30, the exit to room 9, and writes $69 to $DC00 (the stick then reads as down, left and fire) before returning.","t":"code","b":[169,40],"m":"lda","o":"#$28","x":[23798,33118]},{"a":23842,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":23845,"l":"b_5D25","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[23861]},{"a":23848,"t":"code","b":[32,124,93],"m":"jsr","oa":23932,"o":"room5_ladder_touch_test"},{"a":23851,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":23854,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":23856,"t":"code","b":[208,1],"m":"bne","oa":23859,"o":"b_5D33"},{"a":23858,"t":"code","b":[96],"m":"rts"},{"a":23859,"l":"b_5D33","t":"code","b":[201,215],"m":"cmp","o":"#$D7","x":[23856]},{"a":23861,"t":"code","b":[144,238],"m":"bcc","oa":23845,"o":"b_5D25"},{"a":23863,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":23865,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":23868,"t":"code","b":[169,105],"m":"lda","o":"#$69"},{"a":23870,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":23873,"t":"code","b":[96],"m":"rts"},{"a":23874,"t":"gap","n":3},{"a":23877,"l":"respawn_left_if_off","c":"Room 5: when $D015 < $10 (sprite 4 off, as after a death) puts Mr Hat back at the left entry: colour $0B ($D02B), frame $2C, Y $B4, X $20 with the high bit clear, sprite 4 on. Called each pass by room5_main_loop ($5A69) and by the loop that rooms 4 and 7 share ($9329 in room47_loop), so those rooms also put him back at this point.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[23145,37673]},{"a":23880,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":23882,"t":"code","b":[144,1],"m":"bcc","oa":23885,"o":"b_5D4D"},{"a":23884,"t":"code","b":[96],"m":"rts"},{"a":23885,"l":"b_5D4D","t":"code","b":[169,11],"m":"lda","o":"#$0B","x":[23882]},{"a":23887,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":23890,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":23892,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":23895,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":23897,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":23900,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":23903,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":23905,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":23908,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":23910,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":23913,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":23916,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":23918,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":23921,"t":"code","b":[96],"m":"rts"},{"a":23922,"l":"room5_exit_then_checks","c":"JSR room5_exit_test_before_jump ($5B90), then falls into room5_checks. Called before the fire + direction jumps ($5B63, $5B70).","t":"code","b":[32,144,91],"m":"jsr","oa":23440,"o":"room5_exit_test_before_jump","x":[23395,23408]},{"a":23925,"l":"room5_checks","c":"Room 5's per-step work: room5_checks_if_visible ($5BE0) and hazards_and_pickups ($5590). Called by the loop, the duck and every jump step.","t":"code","b":[32,224,91],"m":"jsr","oa":23520,"o":"room5_checks_if_visible","x":[23148,23178,23224,23250,23279,23317,23343,23372,23500]},{"a":23928,"t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups"},{"a":23931,"t":"code","b":[96],"m":"rts"},{"a":23932,"l":"room5_ladder_touch_test","c":"Room 5's ladder loops: hat_collision_test; if it set $4ACE = $20, kill_hat, then Y = $5C (so the ladder loop ends) and $4ACE cleared.","t":"code","b":[32,176,85],"m":"jsr","oa":21936,"o":"hat_collision_test","x":[23816,23848]},{"a":23935,"t":"code","b":[173,206,74],"m":"lda","oa":19150,"o":"guardian_touch_flag"},{"a":23938,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":23940,"t":"code","b":[208,13],"m":"bne","oa":23955,"o":"r_5D93"},{"a":23942,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":23945,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":23947,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":23950,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23952,"t":"code","b":[141,206,74],"m":"sta","oa":19150,"o":"guardian_touch_flag"},{"a":23955,"l":"r_5D93","t":"code","b":[96],"m":"rts","x":[23940]},{"a":23956,"t":"gap","n":1},{"a":23957,"l":"room5_draw_down_cones","c":"Helper of room5_setup: copy_pattern_rows at the address the caller left ($30C0, 2 cells by 3 rows), then again at $30D0: ceiling cones in columns 16-19, rows 13-15.","t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows","x":[22688]},{"a":23960,"t":"code","b":[169,208],"m":"lda","o":"#$D0"},{"a":23962,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":23964,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":23966,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":23968,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":23971,"t":"code","b":[96],"m":"rts"},{"a":23972,"l":"room5_draw_up_cones","c":"Helper of room5_setup: copy_pattern_rows at $3480, then at $3490: floor cones in columns 16-19, rows 16-18.","t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows","x":[22709]},{"a":23975,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":23977,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":23979,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":23981,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":23983,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":23986,"t":"code","b":[96],"m":"rts"},{"a":23987,"t":"gap","n":7},{"a":23994,"l":"unreferenced_5dba","c":"86 bytes no instruction was found to read (byte search for the address, operand and pointer forms): FF FF CD CD sixteen times, FF FF ED FD 3B FF, then 32 32 20 00 and 32 32 00 00 three times. Not known what they are; they sit between room 5's code and room 6's set-up.","t":"byte","b":[255,255,205,205,255,255,205,205]},{"a":24002,"t":"byte","b":[255,255,205,205,255,255,205,205]},{"a":24010,"t":"byte","b":[255,255,205,205,255,255,205,205]},{"a":24018,"t":"byte","b":[255,255,205,205,255,255,205,205]},{"a":24026,"t":"byte","b":[255,255,205,205,255,255,205,205]},{"a":24034,"t":"byte","b":[255,255,205,205,255,255,205,205]},{"a":24042,"t":"byte","b":[255,255,205,205,255,255,205,205]},{"a":24050,"t":"byte","b":[255,255,205,205,255,255,205,205]},{"a":24058,"t":"byte","b":[255,255,237,253,59,255,50,50]},{"a":24066,"t":"byte","b":[32,0,50,50,0,0,50,50]},{"a":24074,"t":"byte","b":[0,0,50,50,0,0]},{"a":24080,"l":"room6_setup","c":"Room 6 (stage 3, the cave) set-up, jumped to from room 2's ladder ($531E, $5582) and from $9510: room_blank_and_fill with $98; $6200 fills the lower corridor ($060C, 36 by 6, $CC) and draws the ROOM digit 6 ($1660 to $3D80); upper corridor $0452 (29 by 6, $CC); ladder colours $040A (3 by 19, $3C) with the STAGE digit 3 ($813E -> $8114); a 6 by 2 fill at $0553 is prepared but replaced by INC $D022; ladder bitmap at $2050 (19 rows of $4802); ceiling cones at $3100/$3110 and floor cones at $34C0/$34D0 (columns 24-27). Only if $22 = $40 (room 2's candle taken): $AA26 draws a 6 by 4 object at column 18, row 4, $1080 adds more ($5F80, $B800, $A7D9/$A7F8, sprite 0 multicolour, $B83B) and $100C = 6. Then $5EF1 (colour to $D022), $1109/$1111 to bitmap cells rows 4-5, column 29, and on through NOPs to $5F62 and room6_finish_setup ($5FBA).","t":"code","b":[169,152],"m":"lda","o":"#$98","x":[21278,21890,38160]},{"a":24082,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24084,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":24087,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":24089,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24091,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":24093,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24095,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":24097,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":24099,"t":"code","b":[169,36],"m":"lda","o":"#$24"},{"a":24101,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24103,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":24105,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24107,"t":"code","b":[32,0,98],"m":"jsr","oa":25088,"o":"room6_fill_and_room_digit"},{"a":24110,"t":"code","b":[169,82],"m":"lda","o":"#$52"},{"a":24112,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24114,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":24116,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24118,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":24120,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":24122,"t":"code","b":[169,29],"m":"lda","o":"#$1D"},{"a":24124,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24126,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":24128,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24130,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":24133,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":24135,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24137,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":24139,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24141,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":24143,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":24145,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":24147,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24149,"t":"code","b":[169,19],"m":"lda","o":"#$13"},{"a":24151,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24153,"t":"code","b":[32,62,129],"m":"jsr","oa":33086,"o":"fill_then_stage3"},{"a":24156,"t":"code","b":[169,83],"m":"lda","o":"#$53"},{"a":24158,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24160,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":24162,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24164,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":24166,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":24168,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":24170,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24172,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":24174,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24176,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":24179,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":24181,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24183,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":24185,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24187,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":24189,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24191,"t":"code","b":[169,19],"m":"lda","o":"#$13"},{"a":24193,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24195,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":24197,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":24200,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":24202,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":24205,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":24208,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":24210,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24212,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":24214,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24216,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":24218,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24220,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":24222,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24224,"t":"code","b":[169,203],"m":"lda","o":"#$CB"},{"a":24226,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":24229,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":24231,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":24234,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":24237,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":24239,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24241,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":24243,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24245,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":24248,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":24250,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24252,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":24254,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24256,"t":"code","b":[169,187],"m":"lda","o":"#$BB"},{"a":24258,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":24261,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":24263,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":24266,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":24269,"t":"code","b":[169,208],"m":"lda","o":"#$D0"},{"a":24271,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24273,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":24275,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24277,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":24280,"t":"code","b":[165,34],"m":"lda","oa":34,"o":"flag_obj_0022"},{"a":24282,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":24284,"t":"code","b":[208,19],"m":"bne","oa":24305,"o":"b_5EF1"},{"a":24286,"t":"code","b":[162,18],"m":"ldx","o":"#$12"},{"a":24288,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":24290,"t":"code","b":[32,38,170],"m":"jsr","oa":43558,"o":"draw_television"},{"a":24293,"t":"code","b":[32,128,16],"m":"jsr","oa":4224,"o":"room6_setup_part"},{"a":24296,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":24298,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":24301,"t":"code","b":[234],"m":"nop"},{"a":24302,"t":"code","b":[234],"m":"nop"},{"a":24303,"t":"code","b":[234],"m":"nop"},{"a":24304,"t":"code","b":[234],"m":"nop"},{"a":24305,"l":"b_5EF1","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[24284]},{"a":24306,"t":"note","l":"room6_item_colour","c":"Operand of LDA #$7C at $5EF1: the colour room6_setup stores twice in $D022 (not shown in bitmap mode); $CC after $643B/$6443 (room 6's own code) take the object, $7C again after $61E5 (from reset_room_objects).","note":"inside the item at $5EF1","x":[25061,25659,25667]},{"a":24307,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24310,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24313,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":24315,"l":"b_5EFB","t":"code","b":[189,9,17],"m":"lda","oa":4361,"o":"gfx_key_top,x","x":[24330]},{"a":24318,"t":"code","b":[157,232,37],"m":"sta","oa":9704,"o":"f_25E8,x"},{"a":24321,"t":"code","b":[189,17,17],"m":"lda","oa":4369,"o":"gfx_key_bottom,x"},{"a":24324,"t":"code","b":[157,40,39],"m":"sta","oa":10024,"o":"f_2728,x"},{"a":24327,"t":"code","b":[232],"m":"inx"},{"a":24328,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":24330,"t":"code","b":[208,239],"m":"bne","oa":24315,"o":"b_5EFB"},{"a":24332,"t":"code","b":[234],"m":"nop"},{"a":24333,"t":"code","b":[234],"m":"nop"},{"a":24334,"t":"code","b":[234],"m":"nop"},{"a":24335,"t":"code","b":[234],"m":"nop"},{"a":24336,"t":"code","b":[234],"m":"nop"},{"a":24337,"t":"code","b":[234],"m":"nop"},{"a":24338,"t":"code","b":[234],"m":"nop"},{"a":24339,"t":"code","b":[234],"m":"nop"},{"a":24340,"t":"code","b":[234],"m":"nop"},{"a":24341,"t":"code","b":[234],"m":"nop"},{"a":24342,"t":"code","b":[234],"m":"nop"},{"a":24343,"t":"code","b":[234],"m":"nop"},{"a":24344,"t":"code","b":[234],"m":"nop"},{"a":24345,"t":"code","b":[234],"m":"nop"},{"a":24346,"t":"code","b":[234],"m":"nop"},{"a":24347,"t":"code","b":[234],"m":"nop"},{"a":24348,"t":"code","b":[234],"m":"nop"},{"a":24349,"t":"code","b":[234],"m":"nop"},{"a":24350,"t":"code","b":[234],"m":"nop"},{"a":24351,"t":"code","b":[234],"m":"nop"},{"a":24352,"t":"code","b":[234],"m":"nop"},{"a":24353,"t":"code","b":[234],"m":"nop"},{"a":24354,"t":"code","b":[234],"m":"nop"},{"a":24355,"t":"code","b":[234],"m":"nop"},{"a":24356,"t":"code","b":[234],"m":"nop"},{"a":24357,"t":"code","b":[234],"m":"nop"},{"a":24358,"t":"code","b":[234],"m":"nop"},{"a":24359,"t":"code","b":[234],"m":"nop"},{"a":24360,"t":"code","b":[234],"m":"nop"},{"a":24361,"t":"code","b":[234],"m":"nop"},{"a":24362,"t":"code","b":[234],"m":"nop"},{"a":24363,"t":"code","b":[234],"m":"nop"},{"a":24364,"t":"code","b":[234],"m":"nop"},{"a":24365,"t":"code","b":[234],"m":"nop"},{"a":24366,"t":"code","b":[234],"m":"nop"},{"a":24367,"t":"code","b":[76,98,95],"m":"jmp","oa":24418,"o":"room6_setup_nops"},{"a":24370,"l":"unreferenced_cells_5f32","c":"48 bytes, six bitmap cells in left-right pairs (3F 1F 1F 7F 9F 93 93 53 | FC F8 F8 FE F9 F9 F9 FA, then two more pairs), skipped by the JMP $5F62 at $5F2F. No instruction was found to read them; not known what they draw.","t":"byte","b":[63,31,31,127,159,147,147,83]},{"a":24378,"t":"byte","b":[252,248,248,254,249,249,249,250]},{"a":24386,"t":"byte","b":[63,25,25,12,15,7,3,1]},{"a":24394,"t":"byte","b":[252,248,248,240,240,224,192,128]},{"a":24402,"t":"byte","b":[3,0,7,0,15,15,15,31]},{"a":24410,"t":"byte","b":[192,0,224,0,240,240,240,248]},{"a":24418,"l":"room6_setup_nops","c":"Room 6 set-up, continued: 25 NOPs, then JMP room6_finish_setup ($5FBA).","t":"code","b":[234],"m":"nop","x":[24367]},{"a":24419,"t":"code","b":[234],"m":"nop"},{"a":24420,"t":"code","b":[234],"m":"nop"},{"a":24421,"t":"code","b":[234],"m":"nop"},{"a":24422,"t":"code","b":[234],"m":"nop"},{"a":24423,"t":"code","b":[234],"m":"nop"},{"a":24424,"t":"code","b":[234],"m":"nop"},{"a":24425,"t":"code","b":[234],"m":"nop"},{"a":24426,"t":"code","b":[234],"m":"nop"},{"a":24427,"t":"code","b":[234],"m":"nop"},{"a":24428,"t":"code","b":[234],"m":"nop"},{"a":24429,"t":"code","b":[234],"m":"nop"},{"a":24430,"t":"code","b":[234],"m":"nop"},{"a":24431,"t":"code","b":[234],"m":"nop"},{"a":24432,"t":"code","b":[234],"m":"nop"},{"a":24433,"t":"code","b":[234],"m":"nop"},{"a":24434,"t":"code","b":[234],"m":"nop"},{"a":24435,"t":"code","b":[234],"m":"nop"},{"a":24436,"t":"code","b":[234],"m":"nop"},{"a":24437,"t":"code","b":[234],"m":"nop"},{"a":24438,"t":"code","b":[234],"m":"nop"},{"a":24439,"t":"code","b":[234],"m":"nop"},{"a":24440,"t":"code","b":[234],"m":"nop"},{"a":24441,"t":"code","b":[234],"m":"nop"},{"a":24442,"t":"code","b":[234],"m":"nop"},{"a":24443,"t":"code","b":[76,186,95],"m":"jmp","oa":24506,"o":"room6_finish_setup"},{"a":24446,"t":"gap","n":2},{"a":24448,"l":"room6_lit_objects","c":"Called only by $1080 (from room6_setup when the candle is carried): paints colour $FF on 3 by 2 cells at column 19, row 5 and $8C on one cell at column 23, row 7 ($A67F, colour only), then a plant ($AB70, colour $DC) at column 6, row 15 and its pot ($AB97, $2C) at row 18.","t":"code","b":[162,19],"m":"ldx","o":"#$13","x":[4224]},{"a":24450,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":24452,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":24454,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":24456,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":24458,"l":"f_5F8A","c":"Inside room6_lit_objects (from the STA $23 at $5F8A, just after the LDA #$03 at $5F88, onward). Also the starting operand of LDA $5F8A,X at $60A6, which copies 16 bytes from here into $D022 (not shown in bitmap mode).","t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width","x":[24742]},{"a":24460,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":24462,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":24464,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":24467,"t":"code","b":[162,23],"m":"ldx","o":"#$17"},{"a":24469,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":24471,"t":"code","b":[169,140],"m":"lda","o":"#$8C"},{"a":24473,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":24474,"t":"note","l":"f_5F9A","c":"Inside room6_lit_objects (from the operand byte $27 of the STA $27 at $5F99 onward). Also the operand of LDA $5F9A,X at $60DA, another 16-byte copy of code bytes into $D022.","note":"inside the item at $5F99","x":[24794]},{"a":24475,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":24477,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":24479,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":24481,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":24483,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":24486,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":24488,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":24490,"l":"f_5FAA","c":"Inside room6_lit_objects (the JSR $AB70 at $5FAA onward). Also the operand of LDA $5FAA,X at $60C0, a third 16-byte copy of code bytes into $D022.","t":"code","b":[32,112,171],"m":"jsr","oa":43888,"o":"draw_plant","x":[24768]},{"a":24493,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":24495,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":24497,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":24499,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":24501,"t":"code","b":[32,151,171],"m":"jsr","oa":43927,"o":"draw_pot_size"},{"a":24504,"t":"code","b":[96],"m":"rts"},{"a":24505,"t":"gap","n":1},{"a":24506,"l":"room6_finish_setup","c":"Room 6 set-up, end: JSR $9590 (clears $FB, $12, $99). If $22 = $40 (room 2's candle taken) goes straight to $600B; otherwise repaints the room dark: lower corridor ($060C) and upper corridor ($0452) in $00, the ladder ($040A) in $30. Continues at $6000 (sprites, entry by $4ACD: $20 from room 2's ladder puts him at the top of the ladder, X $68, Y $30; IRQ $608A).","t":"code","b":[234],"m":"nop","x":[24443]},{"a":24507,"t":"code","b":[234],"m":"nop"},{"a":24508,"t":"code","b":[234],"m":"nop"},{"a":24509,"t":"code","b":[32,144,149],"m":"jsr","oa":38288,"o":"clear_fb_12_99"},{"a":24512,"t":"code","b":[165,34],"m":"lda","oa":34,"o":"flag_obj_0022"},{"a":24514,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":24516,"t":"code","b":[240,69],"m":"beq","oa":24587,"o":"b_600B"},{"a":24518,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":24520,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24522,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":24524,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24526,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":24528,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":24530,"t":"code","b":[169,36],"m":"lda","o":"#$24"},{"a":24532,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24534,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":24536,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24538,"t":"code","b":[32,123,96],"m":"jsr","oa":24699,"o":"room6_fill_dark"},{"a":24541,"t":"code","b":[169,82],"m":"lda","o":"#$52"},{"a":24543,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24545,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":24547,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24549,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":24551,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":24553,"t":"code","b":[169,29],"m":"lda","o":"#$1D"},{"a":24555,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24557,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":24559,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24561,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":24564,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":24566,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":24568,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":24570,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":24572,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":24574,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":24576,"l":"room6_place_sprites","c":"Room 6 set-up, second half (falls in from $5FBA in room 6's drawing, which starts at $5E10; skipped from $5FC4 straight to $600B when $22 = $40). A last colour fill with $56ED (3 cells wide, $13 rows; pointer and colour set at $5FF4). Enables sprites 0 and 4 ($D015 |= $11), puts sprite 3 at X = $171 ($D006 = $71, $D010 bit 3) and the guardian, sprite 0, at X = $B0, Y = $A4 (the lower floor). Mr Hat (sprite 4) is placed by the entry code $4ACD: $20 (set at $557F, room 2's ladder exit) gives X = $68, Y = $30 with the climbing frame in $F9, at the top of the ladder, coming down from the room above; anything else gives X = $145 ($D010 |= $18), Y = $B4, frame $2F (bottom floor, right-hand side, facing left). Clears $BD and the walk sub-counter $FB, sets the walk frame bases with $8080 ($FD = $2C right, $FF = $2F left), points the IRQ vector $0314 at room6_irq ($608A) and goes on at $6082.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":24578,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":24580,"t":"code","b":[169,19],"m":"lda","o":"#$13"},{"a":24582,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":24584,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":24587,"l":"b_600B","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[24516]},{"a":24590,"t":"code","b":[9,17],"m":"ora","o":"#$11"},{"a":24592,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":24595,"t":"code","b":[169,113],"m":"lda","o":"#$71"},{"a":24597,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":24600,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":24602,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":24605,"t":"code","b":[169,164],"m":"lda","o":"#$A4"},{"a":24607,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":24610,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":24612,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":24615,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":24618,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":24620,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":24623,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":24626,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":24628,"t":"code","b":[208,18],"m":"bne","oa":24648,"o":"b_6048"},{"a":24630,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":24632,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":24635,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":24637,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":24640,"t":"code","b":[165,249],"m":"lda","oa":249,"o":"frame_tick_hi"},{"a":24642,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":24645,"t":"code","b":[76,95,96],"m":"jmp","oa":24671,"o":"j_605F"},{"a":24648,"l":"b_6048","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[24628]},{"a":24651,"t":"code","b":[9,24],"m":"ora","o":"#$18"},{"a":24653,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":24656,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":24658,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":24661,"t":"code","b":[169,69],"m":"lda","o":"#$45"},{"a":24663,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":24666,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":24668,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":24671,"l":"j_605F","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[24645]},{"a":24673,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":24675,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":24677,"t":"code","b":[32,128,128],"m":"jsr","oa":32896,"o":"set_walk_frames"},{"a":24680,"t":"code","b":[234],"m":"nop"},{"a":24681,"t":"code","b":[234],"m":"nop"},{"a":24682,"t":"code","b":[234],"m":"nop"},{"a":24683,"t":"code","b":[234],"m":"nop"},{"a":24684,"t":"code","b":[120],"m":"sei"},{"a":24685,"t":"code","b":[169,138],"m":"lda","o":"#$8A"},{"a":24687,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":24690,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":24692,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":24695,"t":"code","b":[88],"m":"cli"},{"a":24696,"t":"code","b":[76,130,96],"m":"jmp","oa":24706,"o":"room6_start_loop"},{"a":24699,"l":"room6_fill_dark","c":"Called once, from $5FDA in room 6's drawing: a colour fill with $56ED (from $5FC6: colour $00 over the lower room, 36 cells by 6 rows at $060C, i.e. the room is drawn dark unless $22 = $40), then $B926, which sets $100C = 6.","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[24538]},{"a":24702,"t":"code","b":[32,38,185],"m":"jsr","oa":47398,"o":"set_room_6"},{"a":24705,"t":"code","b":[96],"m":"rts"},{"a":24706,"l":"room6_start_loop","c":"End of room 6's set-up: $1E08 = $FA, then JMP $7128 ($4AC9 = $0C), which enters room 6's main loop through the stub at $A829 (screen back on if blanked, then $6220).","t":"code","b":[169,250],"m":"lda","o":"#$FA","x":[24696]},{"a":24708,"t":"code","b":[141,8,30],"m":"sta","oa":7688,"o":"var_1e08"},{"a":24711,"t":"code","b":[76,40,113],"m":"jmp","oa":28968,"o":"room6_setup_tail"},{"a":24714,"l":"room6_irq","c":"Room 6's interrupt handler (installed in $0314 at $606C). Every IRQ: bumps the sprite animation counters $64F0/$64F1 (read at $7000); moves the guardian, sprite 0, one pixel along X with the instruction at $6096 (DEC or INC $D000, rewritten at $6105/$610E), turning it at X >= $FE and X < $80, so it patrols $80-$FE on the lower floor (Y = $A4); counts $12 and $F7 ($00-$1F, reset at $20) and, by $F7's quarter, runs a delay loop that writes 16 bytes of code at $5F8A, $5FAA or $5F9A three times each to $D022. In play the VIC is in hires bitmap mode ($D011 = $3B, $D016 = $C8 in play-room1.vsf), where $D022 is not displayed, so these writes only spend time. On a frame where the guardian turns at X < $80 it goes straight to $7000 ($6111), skipping the rest. Otherwise it then wraps sprite 3 across the X high bit when $D006 reaches 1 (sets it to $FF), shows sprite 3 only while $D010 is $28 or $38 or $D006 >= $51 (nothing in this handler moves sprite 3), and when colour cell $060C is non-zero (room lit) spends more time on $D022 at $12 = $40, $80, $B0. Always leaves through $7000 (sprite 0/1 frame flips), $8215 and $BF30 to the KERNAL's $EA31.","t":"code","b":[238,240,100],"m":"inc","oa":25840,"o":"sprite0_anim_count"},{"a":24717,"t":"code","b":[238,241,100],"m":"inc","oa":25841,"o":"sprite1_anim_count"},{"a":24720,"t":"code","b":[206,34,208],"m":"dec","o":"vic_background1"},{"a":24723,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":24726,"l":"a_6096","c":"Self-modified instruction: the opcode byte here is $CE (DEC $D000, guardian walks left) or $EE (INC $D000, walks right), written by room6_irq at $6105 (X >= $FE) and $610E (X < $80).","t":"code","b":[206,0,208],"m":"dec","o":"vic_sprite0_x","x":[24837,24846]},{"a":24729,"t":"code","b":[230,18],"m":"inc","oa":18,"o":"flag_obj_0012"},{"a":24731,"t":"code","b":[234],"m":"nop"},{"a":24732,"t":"code","b":[230,247],"m":"inc","oa":247,"o":"stage_flag_f7"},{"a":24734,"t":"code","b":[165,247],"m":"lda","oa":247,"o":"stage_flag_f7"},{"a":24736,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":24738,"t":"code","b":[176,22],"m":"bcs","oa":24762,"o":"b_60BA"},{"a":24740,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":24742,"l":"b_60A6","t":"code","b":[189,138,95],"m":"lda","oa":24458,"o":"f_5F8A,x","x":[24757]},{"a":24745,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24748,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24751,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24754,"t":"code","b":[232],"m":"inx"},{"a":24755,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":24757,"t":"code","b":[208,239],"m":"bne","oa":24742,"o":"b_60A6"},{"a":24759,"t":"code","b":[76,252,96],"m":"jmp","oa":24828,"o":"j_60FC"},{"a":24762,"l":"b_60BA","t":"code","b":[201,16],"m":"cmp","o":"#$10","x":[24738]},{"a":24764,"t":"code","b":[176,22],"m":"bcs","oa":24788,"o":"b_60D4"},{"a":24766,"l":"j_60BE","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[24818]},{"a":24768,"l":"b_60C0","t":"code","b":[189,170,95],"m":"lda","oa":24490,"o":"f_5FAA,x","x":[24783]},{"a":24771,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24774,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24777,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24780,"t":"code","b":[232],"m":"inx"},{"a":24781,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":24783,"t":"code","b":[208,239],"m":"bne","oa":24768,"o":"b_60C0"},{"a":24785,"t":"code","b":[76,252,96],"m":"jmp","oa":24828,"o":"j_60FC"},{"a":24788,"l":"b_60D4","t":"code","b":[201,24],"m":"cmp","o":"#$18","x":[24764]},{"a":24790,"t":"code","b":[176,22],"m":"bcs","oa":24814,"o":"b_60EE"},{"a":24792,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":24794,"l":"b_60DA","t":"code","b":[189,154,95],"m":"lda","oa":24474,"o":"f_5F9A,x","x":[24809]},{"a":24797,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24800,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24803,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24806,"t":"code","b":[232],"m":"inx"},{"a":24807,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":24809,"t":"code","b":[208,239],"m":"bne","oa":24794,"o":"b_60DA"},{"a":24811,"t":"code","b":[76,252,96],"m":"jmp","oa":24828,"o":"j_60FC"},{"a":24814,"l":"b_60EE","t":"code","b":[201,32],"m":"cmp","o":"#$20","x":[24790]},{"a":24816,"t":"code","b":[176,3],"m":"bcs","oa":24821,"o":"b_60F5"},{"a":24818,"t":"code","b":[76,190,96],"m":"jmp","oa":24766,"o":"j_60BE"},{"a":24821,"l":"b_60F5","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[24816]},{"a":24823,"t":"code","b":[133,247],"m":"sta","oa":247,"o":"stage_flag_f7"},{"a":24825,"t":"code","b":[76,252,96],"m":"jmp","oa":24828,"o":"j_60FC"},{"a":24828,"l":"j_60FC","t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x","x":[24759,24785,24811,24825]},{"a":24831,"t":"code","b":[201,254],"m":"cmp","o":"#$FE"},{"a":24833,"t":"code","b":[144,5],"m":"bcc","oa":24840,"o":"b_6108"},{"a":24835,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":24837,"t":"code","b":[141,150,96],"m":"sta","oa":24726,"o":"a_6096"},{"a":24840,"l":"b_6108","t":"code","b":[201,128],"m":"cmp","o":"#$80","x":[24833]},{"a":24842,"t":"code","b":[176,8],"m":"bcs","oa":24852,"o":"b_6114"},{"a":24844,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":24846,"t":"code","b":[141,150,96],"m":"sta","oa":24726,"o":"a_6096"},{"a":24849,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":24852,"l":"b_6114","t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x","x":[24842]},{"a":24855,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":24857,"t":"code","b":[208,13],"m":"bne","oa":24872,"o":"b_6128"},{"a":24859,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":24862,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":24864,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":24867,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":24869,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":24872,"l":"b_6128","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[24857]},{"a":24875,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":24877,"t":"code","b":[240,22],"m":"beq","oa":24901,"o":"b_6145"},{"a":24879,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":24881,"t":"code","b":[240,18],"m":"beq","oa":24901,"o":"b_6145"},{"a":24883,"t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x"},{"a":24886,"t":"code","b":[201,81],"m":"cmp","o":"#$51"},{"a":24888,"t":"code","b":[176,11],"m":"bcs","oa":24901,"o":"b_6145"},{"a":24890,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":24893,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":24895,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":24898,"t":"code","b":[76,80,97],"m":"jmp","oa":24912,"o":"j_6150"},{"a":24901,"l":"b_6145","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[24877,24881,24888]},{"a":24904,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":24906,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":24909,"t":"code","b":[76,80,97],"m":"jmp","oa":24912,"o":"j_6150"},{"a":24912,"l":"j_6150","t":"code","b":[173,12,6],"m":"lda","oa":1548,"o":"a_060C","x":[24898,24909]},{"a":24915,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":24917,"t":"code","b":[208,3],"m":"bne","oa":24922,"o":"b_615A"},{"a":24919,"t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames"},{"a":24922,"l":"b_615A","t":"code","b":[165,18],"m":"lda","oa":18,"o":"flag_obj_0012","x":[24917]},{"a":24924,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":24926,"t":"code","b":[208,18],"m":"bne","oa":24946,"o":"b_6172"},{"a":24928,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":24930,"l":"b_6162","t":"code","b":[169,108],"m":"lda","o":"#$6C","x":[24941]},{"a":24932,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24935,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24938,"t":"code","b":[232],"m":"inx"},{"a":24939,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":24941,"t":"code","b":[208,243],"m":"bne","oa":24930,"o":"b_6162"},{"a":24943,"t":"code","b":[76,189,97],"m":"jmp","oa":25021,"o":"j_61BD"},{"a":24946,"l":"b_6172","t":"code","b":[201,128],"m":"cmp","o":"#$80","x":[24926]},{"a":24948,"t":"code","b":[208,18],"m":"bne","oa":24968,"o":"b_6188"},{"a":24950,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":24952,"l":"b_6178","t":"code","b":[169,108],"m":"lda","o":"#$6C","x":[24963]},{"a":24954,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24957,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24960,"t":"code","b":[232],"m":"inx"},{"a":24961,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":24963,"t":"code","b":[208,243],"m":"bne","oa":24952,"o":"b_6178"},{"a":24965,"t":"code","b":[76,189,97],"m":"jmp","oa":25021,"o":"j_61BD"},{"a":24968,"l":"b_6188","t":"code","b":[201,176],"m":"cmp","o":"#$B0","x":[24948]},{"a":24970,"t":"code","b":[208,18],"m":"bne","oa":24990,"o":"b_619E"},{"a":24972,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":24974,"l":"b_618E","t":"code","b":[169,108],"m":"lda","o":"#$6C","x":[24985]},{"a":24976,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24979,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":24982,"t":"code","b":[232],"m":"inx"},{"a":24983,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":24985,"t":"code","b":[208,243],"m":"bne","oa":24974,"o":"b_618E"},{"a":24987,"t":"code","b":[76,189,97],"m":"jmp","oa":25021,"o":"j_61BD"},{"a":24990,"l":"b_619E","t":"code","b":[201,240],"m":"cmp","o":"#$F0","x":[24970]},{"a":24992,"t":"code","b":[208,27],"m":"bne","oa":25021,"o":"j_61BD"},{"a":24994,"t":"code","b":[234],"m":"nop"},{"a":24995,"t":"code","b":[234],"m":"nop"},{"a":24996,"t":"code","b":[234],"m":"nop"},{"a":24997,"t":"code","b":[234],"m":"nop"},{"a":24998,"t":"code","b":[234],"m":"nop"},{"a":24999,"t":"code","b":[234],"m":"nop"},{"a":25000,"t":"code","b":[234],"m":"nop"},{"a":25001,"t":"code","b":[234],"m":"nop"},{"a":25002,"t":"code","b":[234],"m":"nop"},{"a":25003,"t":"code","b":[234],"m":"nop"},{"a":25004,"t":"code","b":[234],"m":"nop"},{"a":25005,"t":"code","b":[234],"m":"nop"},{"a":25006,"t":"code","b":[234],"m":"nop"},{"a":25007,"t":"code","b":[234],"m":"nop"},{"a":25008,"t":"code","b":[234],"m":"nop"},{"a":25009,"t":"code","b":[234],"m":"nop"},{"a":25010,"t":"code","b":[234],"m":"nop"},{"a":25011,"t":"code","b":[234],"m":"nop"},{"a":25012,"t":"code","b":[234],"m":"nop"},{"a":25013,"t":"code","b":[234],"m":"nop"},{"a":25014,"t":"code","b":[234],"m":"nop"},{"a":25015,"t":"code","b":[234],"m":"nop"},{"a":25016,"t":"code","b":[234],"m":"nop"},{"a":25017,"t":"code","b":[234],"m":"nop"},{"a":25018,"t":"code","b":[234],"m":"nop"},{"a":25019,"t":"code","b":[234],"m":"nop"},{"a":25020,"t":"code","b":[234],"m":"nop"},{"a":25021,"l":"j_61BD","t":"code","b":[76,0,112],"m":"jmp","oa":28672,"o":"irq_flip_guardian_frames","x":[24943,24965,24987,24992]},{"a":25024,"l":"unused_61c0","c":"26 bytes of $00 between room6_irq and reset_rooms_6_8; nothing reads them (searched by operand across the image).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25032,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25048,"t":"byte","b":[0,0]},{"a":25050,"l":"reset_rooms_6_8","c":"New-game reset for rooms 5, 6 and 8 (the label names only 6 and 8), called from $56AA in the start-of-play reset $5678: $586C = $2C (room 5's item colour operand, set to $CC at $5CCC when that item is taken), $22 = 0 (room 2's candle not taken, so room 6 is drawn dark again), $5EF2 = $7C (operand of room 6's item colour at $5EF1), $02 = 0 (room 6's item not taken), $6661 = $6C and $6672 = $9C (room 8's bonus colour operands), writing $6C and $9C to $D022 on the way, then $705E (further resets outside this range).","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[22186]},{"a":25052,"t":"code","b":[141,108,88],"m":"sta","oa":22636,"o":"room5_item_colour"},{"a":25055,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25057,"t":"code","b":[133,34],"m":"sta","oa":34,"o":"flag_obj_0022"},{"a":25059,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":25061,"t":"code","b":[141,242,94],"m":"sta","oa":24306,"o":"room6_item_colour"},{"a":25064,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25066,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"flag_obj_0002"},{"a":25068,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":25070,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":25073,"t":"code","b":[141,97,102],"m":"sta","oa":26209,"o":"a_6661"},{"a":25076,"t":"code","b":[169,156],"m":"lda","o":"#$9C"},{"a":25078,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":25081,"t":"code","b":[141,114,102],"m":"sta","oa":26226,"o":"a_6672"},{"a":25084,"t":"code","b":[32,94,112],"m":"jsr","oa":28766,"o":"reset_room_state_new_game"},{"a":25087,"t":"code","b":[96],"m":"rts"},{"a":25088,"l":"room6_fill_and_room_digit","c":"Called once from $5E2B in room 6's drawing: a colour fill with $56ED using the caller's parameters (grey $CC over 36 x 6 cells at $060C, the lower room), then the ROOM number 6: copies the 16-byte glyph $1660-$166F into the bitmap at $3D80 (top half) and $3EC0 (bottom half), column 24 of the status rows 23-24.","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[24107]},{"a":25091,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":25093,"l":"b_6205","t":"code","b":[189,96,22],"m":"lda","oa":5728,"o":"digit_six_top,x","x":[25108]},{"a":25096,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":25099,"t":"code","b":[189,104,22],"m":"lda","oa":5736,"o":"digit_six_bottom,x"},{"a":25102,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":25105,"t":"code","b":[232],"m":"inx"},{"a":25106,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":25108,"t":"code","b":[208,239],"m":"bne","oa":25093,"o":"b_6205"},{"a":25110,"t":"code","b":[96],"m":"rts"},{"a":25111,"l":"unused_6217","c":"9 bytes of $00 between room6_fill_and_room_digit and room 6's main loop; not referenced.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25119,"t":"byte","b":[0]},{"a":25120,"l":"room6_main_loop","c":"Room 6's main loop, one pass per round through the stub at $A829. $D8 = $40 (lives used up, set at $1734) goes to $4475, the end of the game. Then room6_respawn ($6550) and room6_step_checks ($657D), and the stick on port 2, compared exactly: $77 right walks with walk_right ($5340), $7B left with walk_left ($5370), then room6_exit_check; $7D down crouches (room6_crouch); $6F fire alone, read twice, jumps: facing right ($07FC < $2F) with frames $2D, $2C, $2E and X rising, facing left (from $62C2) with frames $30, $2F, $31 and X falling, in three phases of 21 ($15) one-pixel steps (rise, level, fall: 63 pixels across, 21 up), each step running room6_step_checks; only the rising phase sounds the jump tone ($41B0, pitch from the step count $99) on every step, with voice 2 silenced ($1CF2) once before it when facing right and on every step when facing left. The pause $42E0 comes between phases. Fire with right ($67) or left ($6B) goes to $6350: a jump, unless $D010 >= $29 and $D008 >= $4E, where it stores $7B into $DC00 (CIA 1 port A) and stands instead.","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[43052]},{"a":25122,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":25124,"t":"code","b":[208,3],"m":"bne","oa":25129,"o":"b_6229"},{"a":25126,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":25129,"l":"b_6229","t":"code","b":[32,80,101],"m":"jsr","oa":25936,"o":"room6_respawn","x":[25124]},{"a":25132,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25135,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":25138,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":25140,"t":"code","b":[208,6],"m":"bne","oa":25148,"o":"b_623C"},{"a":25142,"t":"code","b":[32,64,83],"m":"jsr","oa":21312,"o":"walk_right"},{"a":25145,"t":"code","b":[76,54,99],"m":"jmp","oa":25398,"o":"room6_exit_check"},{"a":25148,"l":"b_623C","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[25140]},{"a":25150,"t":"code","b":[208,6],"m":"bne","oa":25158,"o":"b_6246"},{"a":25152,"t":"code","b":[32,112,83],"m":"jsr","oa":21360,"o":"walk_left"},{"a":25155,"t":"code","b":[76,54,99],"m":"jmp","oa":25398,"o":"room6_exit_check"},{"a":25158,"l":"b_6246","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[25150]},{"a":25160,"t":"code","b":[208,9],"m":"bne","oa":25171,"o":"b_6253"},{"a":25162,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25165,"t":"code","b":[32,136,99],"m":"jsr","oa":25480,"o":"room6_crouch"},{"a":25168,"t":"code","b":[76,28,99],"m":"jmp","oa":25372,"o":"j_631C"},{"a":25171,"l":"b_6253","t":"code","b":[201,111],"m":"cmp","o":"#$6F","x":[25160]},{"a":25173,"t":"code","b":[208,104],"m":"bne","oa":25279,"o":"b_62BF"},{"a":25175,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":25178,"t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":25180,"t":"code","b":[208,97],"m":"bne","oa":25279,"o":"b_62BF"},{"a":25182,"l":"j_625E","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[25431,25441]},{"a":25185,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":25187,"t":"code","b":[176,93],"m":"bcs","oa":25282,"o":"b_62C2"},{"a":25189,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":25191,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25194,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":25197,"l":"b_626D","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[25215]},{"a":25200,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":25203,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":25206,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":25208,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25211,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":25213,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":25215,"t":"code","b":[208,236],"m":"bne","oa":25197,"o":"b_626D"},{"a":25217,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25219,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":25221,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":25224,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":25226,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25229,"l":"b_628D","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[25241]},{"a":25232,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":25234,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25237,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":25239,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":25241,"t":"code","b":[208,242],"m":"bne","oa":25229,"o":"b_628D"},{"a":25243,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25245,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":25247,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":25250,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":25252,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25255,"l":"b_62A7","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[25270]},{"a":25258,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":25261,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":25263,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25266,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":25268,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":25270,"t":"code","b":[208,239],"m":"bne","oa":25255,"o":"b_62A7"},{"a":25272,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25274,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":25276,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":25279,"l":"b_62BF","t":"code","b":[76,28,99],"m":"jmp","oa":25372,"o":"j_631C","x":[25173,25180]},{"a":25282,"l":"b_62C2","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[25187]},{"a":25284,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25287,"l":"b_62C7","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[25308]},{"a":25290,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":25293,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":25296,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":25299,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":25301,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25304,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":25306,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":25308,"t":"code","b":[208,233],"m":"bne","oa":25287,"o":"b_62C7"},{"a":25310,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25312,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":25314,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":25317,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":25319,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25322,"l":"b_62EA","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[25334]},{"a":25325,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":25327,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25330,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":25332,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":25334,"t":"code","b":[208,242],"m":"bne","oa":25322,"o":"b_62EA"},{"a":25336,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25338,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":25340,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":25343,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":25345,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25348,"l":"b_6304","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[25363]},{"a":25351,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":25354,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":25356,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25359,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":25361,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":25363,"t":"code","b":[208,239],"m":"bne","oa":25348,"o":"b_6304"},{"a":25365,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25367,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":25369,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":25372,"l":"j_631C","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[25168,25279]},{"a":25375,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":25377,"t":"code","b":[208,6],"m":"bne","oa":25385,"o":"b_6329"},{"a":25379,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25382,"t":"code","b":[76,80,99],"m":"jmp","oa":25424,"o":"j_6350"},{"a":25385,"l":"b_6329","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[25377]},{"a":25387,"t":"code","b":[208,9],"m":"bne","oa":25398,"o":"room6_exit_check"},{"a":25389,"t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks"},{"a":25392,"t":"code","b":[76,80,99],"m":"jmp","oa":25424,"o":"j_6350"},{"a":25395,"l":"room6_unreached_jsr","c":"3 bytes, JSR $657D, after the JMP at $6330 and not the target of any branch or jump found; room 8's copy of the loop has JMP $17C0 at the same offset ($6B33).","t":"byte","b":[32,125,101]},{"a":25398,"l":"room6_exit_check","c":"Room 6's exits, after a walk step: $4ACD = $38 (set by the ladder at $7041 when Mr Hat climbs out of the top) switches the room IRQ off ($45D5) and goes to $4D80, the set-up that draws ROOM 2, STAGE 2 (simulated in kit/c64/cpu6502.js from play-room1.vsf); $4ACD = $40 (set at $64E6, walking off the bottom floor's right edge) does the same and goes to $9000, which for $40 branches to $8FF0 and JMP $95A0, the set-up that draws ROOM 7 and enters the loop through $A83B (simulated). Otherwise room6_stand.","t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code","x":[25145,25155,25387]},{"a":25401,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":25403,"t":"code","b":[208,6],"m":"bne","oa":25411,"o":"b_6343"},{"a":25405,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":25408,"t":"code","b":[76,128,77],"m":"jmp","oa":19840,"o":"room2_setup"},{"a":25411,"l":"b_6343","t":"code","b":[201,64],"m":"cmp","o":"#$40","x":[25403]},{"a":25413,"t":"code","b":[208,6],"m":"bne","oa":25421,"o":"b_634D"},{"a":25415,"t":"code","b":[32,213,69],"m":"jsr","oa":17877,"o":"sprites_off_quiet_irq"},{"a":25418,"t":"code","b":[76,0,144],"m":"jmp","oa":36864,"o":"room47_enter"},{"a":25421,"l":"b_634D","t":"code","b":[76,112,99],"m":"jmp","oa":25456,"o":"room6_stand","x":[25413]},{"a":25424,"l":"j_6350","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[25382,25392]},{"a":25427,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":25429,"t":"code","b":[176,3],"m":"bcs","oa":25434,"o":"b_635A"},{"a":25431,"t":"code","b":[76,94,98],"m":"jmp","oa":25182,"o":"j_625E"},{"a":25434,"l":"b_635A","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[25429]},{"a":25437,"t":"code","b":[201,78],"m":"cmp","o":"#$4E"},{"a":25439,"t":"code","b":[176,3],"m":"bcs","oa":25444,"o":"b_6364"},{"a":25441,"t":"code","b":[76,94,98],"m":"jmp","oa":25182,"o":"j_625E"},{"a":25444,"l":"b_6364","t":"code","b":[169,123],"m":"lda","o":"#$7B","x":[25439]},{"a":25446,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":25449,"t":"code","b":[76,112,99],"m":"jmp","oa":25456,"o":"room6_stand"},{"a":25452,"l":"unused_636c","c":"4 bytes of $00 inside room 6's loop code; not referenced.","t":"byte","b":[0,0,0,0]},{"a":25456,"l":"room6_stand","c":"Room 6's standing pose at the end of each loop pass: frame $2F (facing left) if $07FC >= $2F, else $2C (facing right), then back round the loop through $A829.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[25421,25449]},{"a":25459,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":25461,"t":"code","b":[144,8],"m":"bcc","oa":25471,"o":"b_637F"},{"a":25463,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":25465,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25468,"t":"code","b":[76,41,168],"m":"jmp","oa":43049,"o":"reenter_loop_6220"},{"a":25471,"l":"b_637F","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[25461]},{"a":25473,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25476,"t":"code","b":[76,41,168],"m":"jmp","oa":43049,"o":"reenter_loop_6220"},{"a":25479,"l":"unused_6387","c":"One byte $00 between room6_stand and room6_crouch; not referenced.","t":"byte","b":[0]},{"a":25480,"l":"room6_crouch","c":"Crouch: saves Mr Hat's frame $07FC, shows frame $2A while the stick reads exactly $7D (down), running room6_step_checks each pass, then restores the frame. Called from $624D.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[25165]},{"a":25483,"t":"code","b":[72],"m":"pha"},{"a":25484,"l":"b_638C","t":"code","b":[32,125,101],"m":"jsr","oa":25981,"o":"room6_step_checks","x":[25497]},{"a":25487,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":25489,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25492,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":25495,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":25497,"t":"code","b":[240,241],"m":"beq","oa":25484,"o":"b_638C"},{"a":25499,"t":"code","b":[104],"m":"pla"},{"a":25500,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25503,"t":"code","b":[96],"m":"rts"},{"a":25504,"l":"unused_63a0","c":"16 bytes of $00 before room6_position_rules; not referenced.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25520,"l":"room6_position_rules","c":"Room 6's rules for where Mr Hat stands, run every step (from room6_step_checks); returns at once while he is switched off ($D015 < $10). The ladder at X $58-$77: on the upper floor (Y = $5C) up or down, on the bottom floor (Y = $B4) up, and at Y = $30 (arriving from above) enter room6_ladder. Upper floor (Y < $5D): X < $28 is pushed back right and X >= $F8 back left (the walls; only the X low byte is tested); X $9E-$D9 at Y = $5C runs room6_upper_strip; X = $F0 takes the room's item if $02 is not $20 (not yet taken here) and $D8 is not $50 (not already carrying one): $5EF2 = $CC (the item's colour operand in the drawing at $5EF1), cells $04BD/$04E5 set to $CC unless $04BD is $00 (room dark), sound reset $1CB0, $02 = $20, the carried-item cells $07BE/$07E6 on the status line coloured $7C, $D8 = $50 (carrying), $F5 = $28 (which item). Bottom floor: X = $00 or $FF goes to $4610 (X high-bit wrap). Left part ($D010 < $29): X < $38 is pushed right; X $C6-$F3 kills ($55F5) while colour cell $0620 is $00 or $6C, which it is when the room is drawn dark ($00) and not when lit ($CC, simulated). Right part: at X low byte $08, if cell $06A0 is not $CC, ten calls of $41DA (each adds one to the score digit at bitmap $3D38, status column 15) and cells $06A0/$06C8/$06F0 and the next column hidden ($CC); at $50, $4ACD = $40, the exit to the right (taken by room6_exit_check).","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[25981]},{"a":25523,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":25525,"t":"code","b":[176,1],"m":"bcs","oa":25528,"o":"b_63B8"},{"a":25527,"t":"code","b":[96],"m":"rts"},{"a":25528,"l":"b_63B8","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[25525]},{"a":25531,"t":"code","b":[201,88],"m":"cmp","o":"#$58"},{"a":25533,"t":"code","b":[144,53],"m":"bcc","oa":25588,"o":"b_63F4"},{"a":25535,"t":"code","b":[201,120],"m":"cmp","o":"#$78"},{"a":25537,"t":"code","b":[176,49],"m":"bcs","oa":25588,"o":"b_63F4"},{"a":25539,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":25542,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":25544,"t":"code","b":[208,19],"m":"bne","oa":25565,"o":"b_63DD"},{"a":25546,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":25549,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":25551,"t":"code","b":[208,4],"m":"bne","oa":25557,"o":"b_63D5"},{"a":25553,"t":"code","b":[32,0,101],"m":"jsr","oa":25856,"o":"room6_ladder"},{"a":25556,"t":"code","b":[96],"m":"rts"},{"a":25557,"l":"b_63D5","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[25551]},{"a":25559,"t":"code","b":[208,27],"m":"bne","oa":25588,"o":"b_63F4"},{"a":25561,"t":"code","b":[32,0,101],"m":"jsr","oa":25856,"o":"room6_ladder"},{"a":25564,"t":"code","b":[96],"m":"rts"},{"a":25565,"l":"b_63DD","t":"code","b":[201,180],"m":"cmp","o":"#$B4","x":[25544]},{"a":25567,"t":"code","b":[208,11],"m":"bne","oa":25580,"o":"b_63EC"},{"a":25569,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":25572,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":25574,"t":"code","b":[208,12],"m":"bne","oa":25588,"o":"b_63F4"},{"a":25576,"t":"code","b":[32,0,101],"m":"jsr","oa":25856,"o":"room6_ladder"},{"a":25579,"t":"code","b":[96],"m":"rts"},{"a":25580,"l":"b_63EC","t":"code","b":[201,48],"m":"cmp","o":"#$30","x":[25567]},{"a":25582,"t":"code","b":[208,4],"m":"bne","oa":25588,"o":"b_63F4"},{"a":25584,"t":"code","b":[32,0,101],"m":"jsr","oa":25856,"o":"room6_ladder"},{"a":25587,"t":"code","b":[96],"m":"rts"},{"a":25588,"l":"b_63F4","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[25533,25537,25559,25574,25582]},{"a":25591,"t":"code","b":[201,93],"m":"cmp","o":"#$5D"},{"a":25593,"t":"code","b":[176,115],"m":"bcs","oa":25710,"o":"b_646E"},{"a":25595,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":25598,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":25600,"t":"code","b":[176,4],"m":"bcs","oa":25606,"o":"b_6406"},{"a":25602,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":25605,"t":"code","b":[96],"m":"rts"},{"a":25606,"l":"b_6406","t":"code","b":[201,248],"m":"cmp","o":"#$F8","x":[25600]},{"a":25608,"t":"code","b":[144,4],"m":"bcc","oa":25614,"o":"b_640E"},{"a":25610,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":25613,"t":"code","b":[96],"m":"rts"},{"a":25614,"l":"b_640E","t":"code","b":[201,158],"m":"cmp","o":"#$9E","x":[25608]},{"a":25616,"t":"code","b":[144,15],"m":"bcc","oa":25633,"o":"b_6421"},{"a":25618,"t":"code","b":[201,218],"m":"cmp","o":"#$DA"},{"a":25620,"t":"code","b":[176,11],"m":"bcs","oa":25633,"o":"b_6421"},{"a":25622,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":25625,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":25627,"t":"code","b":[208,4],"m":"bne","oa":25633,"o":"b_6421"},{"a":25629,"t":"code","b":[32,156,101],"m":"jsr","oa":26012,"o":"room6_upper_strip"},{"a":25632,"t":"code","b":[96],"m":"rts"},{"a":25633,"l":"b_6421","t":"code","b":[201,240],"m":"cmp","o":"#$F0","x":[25616,25620,25627]},{"a":25635,"t":"code","b":[208,72],"m":"bne","oa":25709,"o":"r_646D"},{"a":25637,"t":"code","b":[173,2,0],"m":"lda","oa":2,"o":"flag_obj_0002"},{"a":25640,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":25642,"t":"code","b":[240,65],"m":"beq","oa":25709,"o":"r_646D"},{"a":25644,"t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8"},{"a":25646,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":25648,"t":"code","b":[240,59],"m":"beq","oa":25709,"o":"r_646D"},{"a":25650,"t":"code","b":[173,189,4],"m":"lda","oa":1213,"o":"a_04BD"},{"a":25653,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":25655,"t":"code","b":[208,8],"m":"bne","oa":25665,"o":"b_6441"},{"a":25657,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":25659,"t":"code","b":[141,242,94],"m":"sta","oa":24306,"o":"room6_item_colour"},{"a":25662,"t":"code","b":[76,76,100],"m":"jmp","oa":25676,"o":"j_644C"},{"a":25665,"l":"b_6441","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[25655]},{"a":25667,"t":"code","b":[141,242,94],"m":"sta","oa":24306,"o":"room6_item_colour"},{"a":25670,"t":"code","b":[141,189,4],"m":"sta","oa":1213,"o":"a_04BD"},{"a":25673,"t":"code","b":[141,229,4],"m":"sta","oa":1253,"o":"a_04E5"},{"a":25676,"l":"j_644C","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[25662]},{"a":25679,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":25682,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":25685,"t":"code","b":[32,194,28],"m":"jsr","oa":7362,"o":"sound_stub_1cc2"},{"a":25688,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":25690,"t":"code","b":[141,2,0],"m":"sta","oa":2,"o":"flag_obj_0002"},{"a":25693,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":25695,"t":"code","b":[141,190,7],"m":"sta","oa":1982,"o":"carried_item_cell_top"},{"a":25698,"t":"code","b":[141,230,7],"m":"sta","oa":2022,"o":"carried_item_cell_bottom"},{"a":25701,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":25703,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":25705,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":25707,"t":"code","b":[133,245],"m":"sta","oa":245,"o":"room_var_f5"},{"a":25709,"l":"r_646D","t":"code","b":[96],"m":"rts","x":[25635,25642,25648]},{"a":25710,"l":"b_646E","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[25593]},{"a":25713,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":25715,"t":"code","b":[208,3],"m":"bne","oa":25720,"o":"b_6478"},{"a":25717,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":25720,"l":"b_6478","t":"code","b":[201,0],"m":"cmp","o":"#$00","x":[25715]},{"a":25722,"t":"code","b":[208,3],"m":"bne","oa":25727,"o":"b_647F"},{"a":25724,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":25727,"l":"b_647F","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[25722]},{"a":25730,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":25732,"t":"code","b":[176,35],"m":"bcs","oa":25769,"o":"b_64A9"},{"a":25734,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":25737,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":25739,"t":"code","b":[176,4],"m":"bcs","oa":25745,"o":"b_6491"},{"a":25741,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":25744,"t":"code","b":[96],"m":"rts"},{"a":25745,"l":"b_6491","t":"code","b":[201,244],"m":"cmp","o":"#$F4","x":[25739]},{"a":25747,"t":"code","b":[176,19],"m":"bcs","oa":25768,"o":"r_64A8"},{"a":25749,"t":"code","b":[201,198],"m":"cmp","o":"#$C6"},{"a":25751,"t":"code","b":[144,15],"m":"bcc","oa":25768,"o":"r_64A8"},{"a":25753,"t":"code","b":[173,32,6],"m":"lda","oa":1568,"o":"a_0620"},{"a":25756,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":25758,"t":"code","b":[208,4],"m":"bne","oa":25764,"o":"b_64A4"},{"a":25760,"l":"b_64A0","t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat","x":[25766]},{"a":25763,"t":"code","b":[96],"m":"rts"},{"a":25764,"l":"b_64A4","t":"code","b":[201,108],"m":"cmp","o":"#$6C","x":[25758]},{"a":25766,"t":"code","b":[240,248],"m":"beq","oa":25760,"o":"b_64A0"},{"a":25768,"l":"r_64A8","t":"code","b":[96],"m":"rts","x":[25747,25751]},{"a":25769,"l":"b_64A9","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[25732]},{"a":25772,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":25774,"t":"code","b":[208,48],"m":"bne","oa":25824,"o":"b_64E0"},{"a":25776,"t":"code","b":[173,160,6],"m":"lda","oa":1696,"o":"a_06A0"},{"a":25779,"t":"code","b":[201,204],"m":"cmp","o":"#$CC"},{"a":25781,"t":"code","b":[240,41],"m":"beq","oa":25824,"o":"b_64E0"},{"a":25783,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":25785,"l":"b_64B9","t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000","x":[25791]},{"a":25788,"t":"code","b":[200],"m":"iny"},{"a":25789,"t":"code","b":[192,10],"m":"cpy","o":"#$0A"},{"a":25791,"t":"code","b":[208,248],"m":"bne","oa":25785,"o":"b_64B9"},{"a":25793,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":25795,"l":"b_64C3","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[25815]},{"a":25797,"t":"code","b":[157,160,6],"m":"sta","oa":1696,"o":"a_06A0,x"},{"a":25800,"t":"code","b":[157,200,6],"m":"sta","oa":1736,"o":"f_06C8,x"},{"a":25803,"t":"code","b":[157,240,6],"m":"sta","oa":1776,"o":"f_06F0,x"},{"a":25806,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":25809,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":25812,"t":"code","b":[232],"m":"inx"},{"a":25813,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":25815,"t":"code","b":[208,234],"m":"bne","oa":25795,"o":"b_64C3"},{"a":25817,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":25820,"t":"code","b":[32,197,101],"m":"jsr","oa":26053,"o":"call_empty_450a"},{"a":25823,"l":"r_64DF","t":"code","b":[96],"m":"rts","x":[25826]},{"a":25824,"l":"b_64E0","t":"code","b":[201,80],"m":"cmp","o":"#$50","x":[25774,25781]},{"a":25826,"t":"code","b":[208,251],"m":"bne","oa":25823,"o":"r_64DF"},{"a":25828,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":25830,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":25833,"t":"code","b":[32,59,101],"m":"jsr","oa":25915,"o":"r_653B"},{"a":25836,"t":"code","b":[96],"m":"rts"},{"a":25837,"l":"scratch_64ed","c":"Byte bumped at $65A7 and cleared again at $65B9 in the same routine, read in between at $65B0 with nothing done with the value: no lasting use found. $00 in both snapshots.","t":"byte","b":[0],"x":[26023,26032,26041]},{"a":25838,"l":"room8_belt_phase","c":"Phase (0-11, four steps of three) that picks one of the four patterns at $66A8-$66C7 in the unreached code at $68A5; cleared by room 8's set-up at $6817 and at $6933. No code that increments it was found (operand search over the image).","t":"byte","b":[0],"x":[26647,26789,26824,26859,26894,26931]},{"a":25839,"l":"drift_counter","c":"Counter for drift_push ($6CA4): bumped on every call while Mr Hat is in the drift zone, and at $38 he is moved one pixel right and it restarts at 0. $0F in both snapshots.","t":"byte","b":[15],"x":[27833,27836,27848]},{"a":25840,"l":"sprite0_anim_count","c":"Animation timer for sprite 0's two frames: cleared by the game's entry at $0896, bumped once per IRQ by the room handlers ($608A, $7057, $510A, $596A, $A73F) and read at $7000, which at 8 or more flips sprite 0's pointer $07F8 between $25 and $35; a flip to $25 clears both timers ($7036), a flip to $35 only when sprite 1 flips in the same pass.","t":"byte","b":[0],"x":[2198,20746,22893,24714,28672,28731,28759,42815,42818]},{"a":25841,"l":"sprite1_anim_count","c":"Animation timer for sprite 1's two frames: cleared at $089B, bumped per IRQ with sprite0_anim_count (and at $1C03 in room 1's handler), read at $701B, which flips $07F9 between $25 and $35; $7000 tests it only after a sprite-0 flip to $35 (or no flip), so while the two timers are bumped together sprite 1 flips on every second sprite-0 flip.","t":"byte","b":[0],"x":[2203,7171,20749,22890,24717,28699,28728,28762]},{"a":25842,"l":"counter_64f2","c":"Counter of other rooms' code: bumped, compared and cleared at $7600-$7624, $9238-$925C and $96B7-$96DB (outside this range).","t":"byte","b":[0],"x":[30208,30211,30244,37432,37435,37468,38583,38586,38619]},{"a":25843,"l":"value_64f3","c":"Read at $9121 and $9137 (outside this range); no writer found. $2C in both snapshots.","t":"byte","b":[44],"x":[37153,37175]},{"a":25844,"l":"counter_64f4","c":"Counter bumped, compared and cleared at $7B97-$7BB7 (outside this range).","t":"byte","b":[2],"x":[31639,31642,31671]},{"a":25845,"l":"counter_64f5","c":"Counter bumped, compared and cleared at $7BBD-$7BDD (outside this range).","t":"byte","b":[2],"x":[31677,31680,31709]},{"a":25846,"l":"value_64f6","c":"Written at $819B (outside this range); no reader found.","t":"byte","b":[0],"x":[33179]},{"a":25847,"l":"shaft_arrival_flag","c":"$AF when Mr Hat enters room 8 climbing up from below (entry code $4ACD = $88; the $AF is stored at $67FA): room 8's set-up then goes straight into the shaft ride ($7130 tests it, JMP $6DA0). Cleared at $81EB in $81E1, which the set-ups of rooms 8 ($6621), 1 ($6EB3) and 9 ($717D) call.","t":"byte","b":[0],"x":[26618,28976,33259]},{"a":25848,"l":"unused_64f8","c":"No reference found.","t":"byte","b":[0]},{"a":25849,"l":"tune_note_count","c":"Note-length counter of the tunes' IRQ tails (tune 2 $8A03, unreached; the in-play tune $8C33): bumped per IRQ and compared with the note length $64FA; cleared when the next note is taken ($8A3B, $8C6B).","t":"byte","b":[5],"x":[35331,35334,35387,35891,35894,35947]},{"a":25850,"l":"tune_note_length","c":"Note length for tune_note_count ($64F9), in IRQs: stored at $8A36 (tune 2, from its table at $8B90) and $8C66 (the in-play tune, from $8D90), each read through an operand the player steps itself.","t":"byte","b":[8],"x":[35337,35382,35897,35942]},{"a":25851,"l":"unused_64fb","c":"Four bytes ($00 $00 $00 $07) with no reference found.","t":"byte","b":[0,0,0,7]},{"a":25855,"l":"value_64ff","c":"Written at $7CE5, $7D30 and $7D65 (outside this range); no reader found.","t":"byte","b":[0],"x":[31973,32048,32101]},{"a":25856,"l":"room6_ladder","c":"Room 6's ladder (colour columns 10-12): holds Mr Hat at X = $68 and lets $4B20 move him (stick down $7D: Y + 1, up $7E: Y - 1, climbing frames $32-$33 in $F9, sub-count $F8), with room6_ladder_hit every step. Leaves at the bottom floor (Y >= $B4, returns); at Y $5A-$5D with the stick right (Y = $5C, frame $2C) or left ($B91A: also Y = $5C, frame $2C) onto the upper floor; at Y < $28 out of the top through $7041 ($4ACD = $38, taken by room6_exit_check).","t":"code","b":[169,104],"m":"lda","o":"#$68","x":[25553,25561,25576,25584,25881]},{"a":25858,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":25861,"l":"b_6505","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[25903,25910]},{"a":25864,"t":"code","b":[32,132,101],"m":"jsr","oa":25988,"o":"room6_ladder_hit"},{"a":25867,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":25870,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":25872,"t":"code","b":[144,1],"m":"bcc","oa":25875,"o":"b_6513"},{"a":25874,"t":"code","b":[96],"m":"rts"},{"a":25875,"l":"b_6513","t":"code","b":[201,90],"m":"cmp","o":"#$5A","x":[25872]},{"a":25877,"t":"code","b":[144,29],"m":"bcc","oa":25908,"o":"b_6534"},{"a":25879,"t":"code","b":[201,94],"m":"cmp","o":"#$5E"},{"a":25881,"t":"code","b":[176,229],"m":"bcs","oa":25856,"o":"room6_ladder"},{"a":25883,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":25886,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":25888,"t":"code","b":[208,11],"m":"bne","oa":25901,"o":"b_652D"},{"a":25890,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":25892,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":25895,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":25897,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25900,"t":"code","b":[96],"m":"rts"},{"a":25901,"l":"b_652D","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[25888]},{"a":25903,"t":"code","b":[208,212],"m":"bne","oa":25861,"o":"b_6505"},{"a":25905,"t":"code","b":[76,26,185],"m":"jmp","oa":47386,"o":"hat_upper_pose"},{"a":25908,"l":"b_6534","t":"code","b":[201,40],"m":"cmp","o":"#$28","x":[25877]},{"a":25910,"t":"code","b":[176,205],"m":"bcs","oa":25861,"o":"b_6505"},{"a":25912,"t":"code","b":[76,65,112],"m":"jmp","oa":28737,"o":"room6_set_entry_38"},{"a":25915,"l":"r_653B","c":"Lone RTS, called as a do-nothing subroutine from $64E9 and $7046 after $4ACD is set.","t":"code","b":[96],"m":"rts","x":[25833,28742]},{"a":25916,"l":"unused_copy_loop","c":"20 bytes not reached by anything found: $00, then a loop LDX #$00 / LDA $1000,X / STA $2000,Y / INX / INY / CPX #$08 / BNE / CPY #$F0 / BNE / RTS ($653D-$654F) that would copy 8 bytes from $1000 into the bitmap at $2000 + Y repeatedly up to Y = $F0. No JSR, JMP or branch to $653D was found by byte search.","t":"byte","b":[0,162,0,189,0,16,153,0]},{"a":25924,"t":"byte","b":[32,232,200,224,8,208,244,192]},{"a":25932,"t":"byte","b":[240,208,238,96]},{"a":25936,"l":"room6_respawn","c":"Puts Mr Hat back after a death in room 6: only when $D015 < $10 (the death sequence $A877 switched sprite 4 off); colour $0B, frame $2F, Y = $5C, X = $80 with the high bit clear, sprite 4 on. So he restarts on the upper floor.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[25129]},{"a":25939,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":25941,"t":"code","b":[144,1],"m":"bcc","oa":25944,"o":"b_6558"},{"a":25943,"t":"code","b":[96],"m":"rts"},{"a":25944,"l":"b_6558","t":"code","b":[169,11],"m":"lda","o":"#$0B","x":[25941]},{"a":25946,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":25949,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":25951,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":25954,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":25956,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":25959,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":25962,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":25964,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":25967,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":25969,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":25972,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":25975,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":25977,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":25980,"t":"code","b":[96],"m":"rts"},{"a":25981,"l":"room6_step_checks","c":"The checks room 6 makes after every step: room6_position_rules, then $5590 (collision handling: $BB10, and the death sequence $55F5 when $4ACE = $20).","t":"code","b":[32,176,99],"m":"jsr","oa":25520,"o":"room6_position_rules","x":[25132,25162,25208,25234,25263,25301,25327,25356,25379,25389,25484]},{"a":25984,"t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups"},{"a":25987,"t":"code","b":[96],"m":"rts"},{"a":25988,"l":"room6_ladder_hit","c":"Collision check used on room 6's ladder: $55B0 (sets $4ACE = $20 when $D01E is exactly $11, $12, $14, $18, $50 or $90; in room 6, sprite 0 or sprite 3 against Mr Hat); on a hit runs the death sequence $55F5, sets Y = $B4 and clears $4ACE.","t":"code","b":[32,176,85],"m":"jsr","oa":21936,"o":"hat_collision_test","x":[25864]},{"a":25991,"t":"code","b":[173,206,74],"m":"lda","oa":19150,"o":"guardian_touch_flag"},{"a":25994,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":25996,"t":"code","b":[208,13],"m":"bne","oa":26011,"o":"r_659B"},{"a":25998,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":26001,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":26003,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":26006,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":26008,"t":"code","b":[141,206,74],"m":"sta","oa":19150,"o":"guardian_touch_flag"},{"a":26011,"l":"r_659B","t":"code","b":[96],"m":"rts","x":[25996]},{"a":26012,"l":"room6_upper_strip","c":"Room 6, upper floor, X $9E-$D9: between X $A6 and $D1 bumps and clears scratch_64ed (no lasting effect) and writes $D022; always sets Mr Hat's colour $D02B = $0B. What this strip was for is not known.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[25629]},{"a":26015,"t":"code","b":[201,210],"m":"cmp","o":"#$D2"},{"a":26017,"t":"code","b":[176,25],"m":"bcs","oa":26044,"o":"b_65BC"},{"a":26019,"t":"code","b":[201,166],"m":"cmp","o":"#$A6"},{"a":26021,"t":"code","b":[144,21],"m":"bcc","oa":26044,"o":"b_65BC"},{"a":26023,"l":"hat_colour_reset","c":"Second entry into room6_upper_strip, called from room8_upper_floor_colour ($70C2, $70CE), so room 8 uses it too: bumps and clears scratch_64ed, writes $D022, sets Mr Hat's colour $D02B = $0B.","t":"code","b":[238,237,100],"m":"inc","oa":25837,"o":"scratch_64ed","x":[28866,28878]},{"a":26026,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":26029,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":26032,"t":"code","b":[173,237,100],"m":"lda","oa":25837,"o":"scratch_64ed"},{"a":26035,"t":"code","b":[234],"m":"nop"},{"a":26036,"t":"code","b":[234],"m":"nop"},{"a":26037,"t":"code","b":[234],"m":"nop"},{"a":26038,"t":"code","b":[234],"m":"nop"},{"a":26039,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":26041,"t":"code","b":[141,237,100],"m":"sta","oa":25837,"o":"scratch_64ed"},{"a":26044,"l":"b_65BC","t":"code","b":[169,11],"m":"lda","o":"#$0B","x":[26017,26021]},{"a":26046,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":26049,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":26052,"t":"code","b":[96],"m":"rts"},{"a":26053,"l":"call_empty_450a","c":"JSR $450A, which is a lone RTS: does nothing. Called after a pickup at $64DC, $6C60 and from $7A04.","t":"code","b":[32,10,69],"m":"jsr","oa":17674,"o":"rts_stub_450a","x":[25820,27744,31236]},{"a":26056,"t":"code","b":[96],"m":"rts"},{"a":26057,"l":"unused_sound_fragment","c":"23 bytes not reached by anything found: $FF (the operand of a lost LDA #$FF), then STA $D401 / LDA #$0C / STA $D405 / LDA #$28 / STA $D40F / LDA #$15 / STA $D404 / RTS, the tail of a routine that set SID voice 1 and 3 registers, and three $00.","t":"byte","b":[255,141,1,212,169,12,141,5]},{"a":26065,"t":"byte","b":[212,169,40,141,15,212,169,21]},{"a":26073,"t":"byte","b":[141,4,212,96,0,0,0]},{"a":26080,"l":"room8_draw","c":"Draws room 8 (ROOM 8, STAGE 3), reached by JMP from the rooms around it ($793A after $4ACD = $68, $7961, $841A, $955B). $56B0 with $FD = $98 (room-change prologue outside this range), colour fills of the screen matrix $0400 with $813E, $81B0, $81E1 (which also clears shaft_arrival_flag $64F7) and $56ED: brick $98 walls and floors, grey $CC rooms on rows 2-7 and 13-18; a bitmap tile column with $5713 (source operand $5718/$5719 set to $4802, 24 bytes by 18 rows at bitmap $26B8, the shaft at colour columns 15-17); the objects $ABB2 at column 4, row 4 and $B800 at column 36, row 16; $100C = 8; colour $98 on row 19, columns 22-36 ($070E); then $56D0 and room8_place_objects. The fill parameters set at $6658 (a 2 x 2 patch at $0686, row 16 column 6, in the colour held at $6661) are never used: the instruction after them is INC $D022, not a call, and the next fill overwrites them. Simulated from play-room1.vsf, the drawing leaves $0686 = $CC.","t":"code","b":[169,152],"m":"lda","o":"#$98","x":[31034,31073,33818,38235]},{"a":26082,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":26084,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":26087,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":26089,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26091,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":26093,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26095,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":26097,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":26099,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":26101,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":26103,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":26105,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":26107,"t":"code","b":[32,62,129],"m":"jsr","oa":33086,"o":"fill_then_stage3"},{"a":26110,"t":"code","b":[169,82],"m":"lda","o":"#$52"},{"a":26112,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26114,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":26116,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26118,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":26120,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":26122,"t":"code","b":[32,176,129],"m":"jsr","oa":33200,"o":"fill_d022_sprite0_black"},{"a":26125,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":26127,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26129,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":26131,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26133,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":26135,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":26137,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":26139,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":26141,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":26143,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":26145,"t":"code","b":[32,225,129],"m":"jsr","oa":33249,"o":"hide_room_second_digit"},{"a":26148,"t":"code","b":[169,26],"m":"lda","o":"#$1A"},{"a":26150,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26152,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":26154,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26156,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":26158,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":26160,"t":"code","b":[169,22],"m":"lda","o":"#$16"},{"a":26162,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":26164,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":26166,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":26168,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":26171,"t":"code","b":[169,184],"m":"lda","o":"#$B8"},{"a":26173,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26175,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":26177,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26179,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":26181,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":26183,"t":"code","b":[169,18],"m":"lda","o":"#$12"},{"a":26185,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":26187,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":26189,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":26192,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":26194,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":26197,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":26200,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":26202,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26204,"t":"code","b":[169,134],"m":"lda","o":"#$86"},{"a":26206,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26208,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":26209,"t":"note","l":"a_6661","c":"Operand of LDA #$6C: the colour room8_draw would give the bonus at $0686; reset to $6C by reset_rooms_6_8 and set to $CC by room8_position_rules ($6C4C) when the bonus is taken. The fill that would use it is not executed (see room8_draw).","note":"inside the item at $6660","x":[25073,27724]},{"a":26210,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":26212,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":26214,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":26216,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":26218,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":26220,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":26223,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26225,"l":"b_6671","t":"code","b":[169,156],"m":"lda","o":"#$9C","x":[26233]},{"a":26226,"t":"note","l":"a_6672","c":"Operand of LDA #$9C, written twice to $D022 (no visible effect in bitmap mode); reset to $9C by reset_rooms_6_8 and set to $CC at $6C49 with the bonus taken.","note":"inside the item at $6671","x":[25081,27721]},{"a":26227,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":26230,"t":"code","b":[232],"m":"inx"},{"a":26231,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":26233,"t":"code","b":[208,246],"m":"bne","oa":26225,"o":"b_6671"},{"a":26235,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":26237,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":26239,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":26241,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":26243,"t":"code","b":[32,178,171],"m":"jsr","oa":43954,"o":"draw_drawers_a"},{"a":26246,"t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":26248,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":26250,"t":"code","b":[32,0,184],"m":"jsr","oa":47104,"o":"draw_obj_3x3_aff0"},{"a":26253,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":26255,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":26258,"t":"code","b":[234],"m":"nop"},{"a":26259,"t":"code","b":[234],"m":"nop"},{"a":26260,"t":"code","b":[234],"m":"nop"},{"a":26261,"t":"code","b":[234],"m":"nop"},{"a":26262,"t":"code","b":[234],"m":"nop"},{"a":26263,"t":"code","b":[234],"m":"nop"},{"a":26264,"t":"code","b":[234],"m":"nop"},{"a":26265,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26267,"l":"b_669B","t":"code","b":[169,152],"m":"lda","o":"#$98","x":[26275]},{"a":26269,"t":"code","b":[157,14,7],"m":"sta","oa":1806,"o":"f_070E,x"},{"a":26272,"t":"code","b":[232],"m":"inx"},{"a":26273,"t":"code","b":[224,15],"m":"cpx","o":"#$0F"},{"a":26275,"t":"code","b":[208,246],"m":"bne","oa":26267,"o":"b_669B"},{"a":26277,"t":"code","b":[76,208,86],"m":"jmp","oa":22224,"o":"flip_screen_if_climbing"},{"a":26280,"l":"belt_pattern_0","c":"Four 8-byte patterns ($66A8, $66B0, $66B8, $66C0) read only by the unreached room8_belt_unused ($68A5): $66A8 = $7E $7E $00 $66 $66 $00 $3A $7E, phase 0-2.","t":"byte","b":[126,126,0,102,102,0,58,126],"x":[26800]},{"a":26288,"l":"belt_pattern_3","c":"Pattern for phase 9-11 of room8_belt_unused: $F9 $F9 $00 $66 $66 $00 $9F $9F. With $66B8 and $66C0 it is one shape shifted by two pixels each time ($F9, $E7, $9F), like an animated belt surface; that reading of the shape is a guess.","t":"byte","b":[249,249,0,102,102,0,159,159],"x":[26905]},{"a":26296,"l":"belt_pattern_2","c":"Pattern for phase 6-8 of room8_belt_unused: $E7 $E7 $00 $66 $66 $00 $E7 $E7.","t":"byte","b":[231,231,0,102,102,0,231,231],"x":[26870]},{"a":26304,"l":"belt_pattern_1","c":"Pattern for phase 3-5 of room8_belt_unused: $9F $9F $00 $66 $66 $00 $F9 $F9.","t":"byte","b":[159,159,0,102,102,0,249,249],"x":[26835]},{"a":26312,"l":"unused_66c8","c":"24 bytes after the patterns ($00 except $54 at $66CE and $09 at $66D0), with no reference found.","t":"byte","b":[0,0,0,0,0,0,84,0]},{"a":26320,"t":"byte","b":[9,0,0,0,0,0,0,0]},{"a":26328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26336,"l":"room8_place_objects","c":"Room 8's set-up, second part (from $56D0, after room8_draw): LDA #$7C (operand $66E1) written twice to $D022, where room 8's item check at $6D5A expects cell $04A4 to hold $7C (it reads only $04A4 and clears $04CC with it); the objects $AB70 and $AB8F at column 20, rows 15 and 18; a tile column with $5713 at bitmap $3130 and $3140 (source $58CB, 16 bytes by 3 rows); bitmap pointers $34F0 and $3500 with source $58BB set up but not drawn (INC $D022 where the calls would be); the objects $A7D9 at columns 32 and 34, row 5, and $A7F8 at columns 32 and 34, row 7; sprite 0's colour $0B; then room8_place_sprites.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[22235,22241]},{"a":26337,"t":"note","l":"a_66E1","c":"Operand of LDA #$7C in room8_place_objects, written only to $D022: $7C, reset at $7060, and $CC once the item has been taken ($6D81). As written it has no effect on the picture.","note":"inside the item at $66E0","x":[28033,28768]},{"a":26338,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":26341,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":26344,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":26346,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":26348,"t":"code","b":[32,112,171],"m":"jsr","oa":43888,"o":"draw_plant"},{"a":26351,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":26353,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":26355,"t":"code","b":[32,143,171],"m":"jsr","oa":43919,"o":"draw_pot"},{"a":26358,"t":"code","b":[234],"m":"nop"},{"a":26359,"t":"code","b":[234],"m":"nop"},{"a":26360,"t":"code","b":[234],"m":"nop"},{"a":26361,"t":"code","b":[234],"m":"nop"},{"a":26362,"t":"code","b":[234],"m":"nop"},{"a":26363,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":26365,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26367,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":26369,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26371,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":26373,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":26375,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":26377,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":26379,"t":"code","b":[169,203],"m":"lda","o":"#$CB"},{"a":26381,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":26384,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":26386,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":26389,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":26392,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":26394,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26396,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":26398,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26400,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":26403,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":26405,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26407,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":26409,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26411,"t":"code","b":[169,187],"m":"lda","o":"#$BB"},{"a":26413,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":26416,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":26418,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":26421,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":26424,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":26426,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":26428,"t":"code","b":[169,53],"m":"lda","o":"#$35"},{"a":26430,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26432,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":26435,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":26437,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":26439,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":26442,"t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":26444,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":26446,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":26449,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":26451,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":26453,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":26456,"t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":26458,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":26460,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":26463,"t":"code","b":[234],"m":"nop"},{"a":26464,"t":"code","b":[234],"m":"nop"},{"a":26465,"t":"code","b":[234],"m":"nop"},{"a":26466,"t":"code","b":[234],"m":"nop"},{"a":26467,"t":"code","b":[234],"m":"nop"},{"a":26468,"t":"code","b":[234],"m":"nop"},{"a":26469,"t":"code","b":[234],"m":"nop"},{"a":26470,"t":"code","b":[234],"m":"nop"},{"a":26471,"t":"code","b":[234],"m":"nop"},{"a":26472,"t":"code","b":[234],"m":"nop"},{"a":26473,"t":"code","b":[234],"m":"nop"},{"a":26474,"t":"code","b":[234],"m":"nop"},{"a":26475,"t":"code","b":[234],"m":"nop"},{"a":26476,"t":"code","b":[234],"m":"nop"},{"a":26477,"t":"code","b":[234],"m":"nop"},{"a":26478,"t":"code","b":[234],"m":"nop"},{"a":26479,"t":"code","b":[234],"m":"nop"},{"a":26480,"t":"code","b":[234],"m":"nop"},{"a":26481,"t":"code","b":[234],"m":"nop"},{"a":26482,"t":"code","b":[234],"m":"nop"},{"a":26483,"t":"code","b":[234],"m":"nop"},{"a":26484,"t":"code","b":[234],"m":"nop"},{"a":26485,"t":"code","b":[234],"m":"nop"},{"a":26486,"t":"code","b":[234],"m":"nop"},{"a":26487,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":26489,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":26492,"t":"code","b":[76,129,103],"m":"jmp","oa":26497,"o":"room8_place_sprites"},{"a":26495,"l":"unused_677f","c":"Two bytes $00 after JMP $6781; not referenced.","t":"byte","b":[0,0]},{"a":26497,"l":"room8_place_sprites","c":"Room 8's set-up, third part: $99 = 0; $B954 puts sprite 7 at X = $FF, Y = $B4 (pointer $3D, colour 1) and switches it on; sprites 0 and 4 on. Mr Hat by the entry code $4ACD: $46 (set at $9556, room 7's code) bottom floor left, X = $18, Y = $B4, facing right; $68 (set at $7937, room 9's code) upper floor right, X = $148, Y = $5C, facing left; $70 ($795C, room 9's code) bottom floor right, X = $148, Y = $B4, facing left; $88 ($8409, room 10's code) frame $32 (climbing), Y = $D6 below the floor, shaft_arrival_flag = $AF. Then $BD = 0, walk sub-counter $FB = 0, walk frame bases $FD = $2C and $FF = $2F, the guardian sprite 0 at X = $30, Y = $5C, room8_belt_phase = 0, $12 = 0, the ROOM digit 8 ($8089), the IRQ vector $0314 = room8_irq, and JMP $711B ($1E08 = $CA, $4AC9 = $0C, then $7130: with the flag set into room8_shaft_ride, else into room8_main_loop through $A82F).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[26492]},{"a":26499,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":26501,"t":"code","b":[32,84,185],"m":"jsr","oa":47444,"o":"init_sprite7"},{"a":26504,"t":"code","b":[9,17],"m":"ora","o":"#$11"},{"a":26506,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":26509,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":26512,"t":"code","b":[201,70],"m":"cmp","o":"#$46"},{"a":26514,"t":"code","b":[208,26],"m":"bne","oa":26542,"o":"b_67AE"},{"a":26516,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":26518,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":26521,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":26523,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":26526,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":26529,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":26531,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":26534,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":26536,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":26539,"t":"code","b":[76,253,103],"m":"jmp","oa":26621,"o":"j_67FD"},{"a":26542,"l":"b_67AE","t":"code","b":[201,104],"m":"cmp","o":"#$68","x":[26514]},{"a":26544,"t":"code","b":[208,26],"m":"bne","oa":26572,"o":"b_67CC"},{"a":26546,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":26548,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":26551,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":26553,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":26556,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":26559,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":26561,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":26564,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":26566,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":26569,"t":"code","b":[76,253,103],"m":"jmp","oa":26621,"o":"j_67FD"},{"a":26572,"l":"b_67CC","t":"code","b":[201,112],"m":"cmp","o":"#$70","x":[26544]},{"a":26574,"t":"code","b":[208,26],"m":"bne","oa":26602,"o":"b_67EA"},{"a":26576,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":26578,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":26581,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":26583,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":26586,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":26589,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":26591,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":26594,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":26596,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":26599,"t":"code","b":[76,253,103],"m":"jmp","oa":26621,"o":"j_67FD"},{"a":26602,"l":"b_67EA","t":"code","b":[201,136],"m":"cmp","o":"#$88","x":[26574]},{"a":26604,"t":"code","b":[208,15],"m":"bne","oa":26621,"o":"j_67FD"},{"a":26606,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":26608,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":26611,"t":"code","b":[169,214],"m":"lda","o":"#$D6"},{"a":26613,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":26616,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":26618,"t":"code","b":[141,247,100],"m":"sta","oa":25847,"o":"shaft_arrival_flag"},{"a":26621,"l":"j_67FD","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[26539,26569,26599,26604]},{"a":26623,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":26625,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":26627,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":26629,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":26631,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":26633,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":26635,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":26637,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":26640,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":26642,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":26645,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":26647,"t":"code","b":[141,238,100],"m":"sta","oa":25838,"o":"room8_belt_phase"},{"a":26650,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"flag_obj_0012"},{"a":26652,"t":"code","b":[234],"m":"nop"},{"a":26653,"t":"code","b":[234],"m":"nop"},{"a":26654,"t":"code","b":[234],"m":"nop"},{"a":26655,"t":"code","b":[234],"m":"nop"},{"a":26656,"t":"code","b":[234],"m":"nop"},{"a":26657,"t":"code","b":[234],"m":"nop"},{"a":26658,"t":"code","b":[234],"m":"nop"},{"a":26659,"t":"code","b":[234],"m":"nop"},{"a":26660,"t":"code","b":[234],"m":"nop"},{"a":26661,"t":"code","b":[234],"m":"nop"},{"a":26662,"t":"code","b":[234],"m":"nop"},{"a":26663,"t":"code","b":[234],"m":"nop"},{"a":26664,"t":"code","b":[234],"m":"nop"},{"a":26665,"t":"code","b":[234],"m":"nop"},{"a":26666,"t":"code","b":[234],"m":"nop"},{"a":26667,"t":"code","b":[32,137,128],"m":"jsr","oa":32905,"o":"draw_room_digit_8"},{"a":26670,"t":"code","b":[120],"m":"sei"},{"a":26671,"t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":26673,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":26676,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":26678,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":26681,"t":"code","b":[88],"m":"cli"},{"a":26682,"t":"code","b":[76,27,113],"m":"jmp","oa":28955,"o":"room8_setup_tail"},{"a":26685,"l":"room8_irq","c":"Room 8's interrupt handler (installed at $682E). Bumps the animation timers ($7057). Moves the guardian, sprite 0, diagonally: two X steps (the instructions at $6840 and $6843, INC or DEC $D000) and one or two Y steps ($6846 on $D001; $6849 on $D001 or, harmlessly, $D021, chosen by its operand byte $684A). $B993 sets sprite 0's frame by height ($3A from Y $54 down, else $3F), steps sprite 7 (placed at X $FF, Y $B4 by $B954) one pixel left or right with frames $3D/$3E through $B92D, and returns sprite 0's X: at X >= $F8 it turns left, below $5C right; at Y >= $5D it turns up, below $44 down; it moves 1 pixel a frame vertically above Y = $48 and 2 from $48 down (the write of $21 at $6886 for Y >= $58 is always overwritten at $689C). So it bounces around X $5C-$F8, Y $44-$5D, over the upper floor. Leaves through the shared tail $8215. The code after the JMP at $68A2 (room8_belt_unused) is not reached.","t":"code","b":[32,87,112],"m":"jsr","oa":28759,"o":"room8_tick_guardian_counters"},{"a":26688,"l":"a_6840","c":"Self-modified instruction (opcode $EE INC or $CE DEC on $D000): first of room8_irq's two X steps for the guardian; rewritten at $6855 and $6861 together with $6843.","t":"code","b":[238,0,208],"m":"inc","o":"vic_sprite0_x","x":[26709,26721]},{"a":26691,"l":"a_6843","c":"Self-modified instruction: second X step for room 8's guardian, the same INC/DEC $D000 as $6840 and rewritten with it.","t":"code","b":[238,0,208],"m":"inc","o":"vic_sprite0_x","x":[26712,26724]},{"a":26694,"l":"a_6846","c":"Self-modified instruction (INC or DEC $D001): room 8's guardian's first Y step; rewritten at $6870 and $687C together with $6849.","t":"code","b":[206,1,208],"m":"dec","o":"vic_sprite0_y","x":[26736,26748]},{"a":26697,"l":"a_6849","c":"Self-modified instruction: INC or DEC (opcode rewritten with $6846) on the address whose low byte is $684A, so either $D001 (a second Y step, the guardian moving 2 pixels a frame) or $D021 (no visible effect in hires bitmap mode).","t":"code","b":[206,33,208],"m":"dec","o":"vic_background0","x":[26739,26751]},{"a":26698,"t":"note","l":"a_684A","c":"Operand low byte of the instruction at $6849: $01 ($D001) or $21 ($D021), written at $6888, $6894 and $689C by the guardian's height.","note":"inside the item at $6849","x":[26760,26772,26780]},{"a":26700,"t":"code","b":[32,147,185],"m":"jsr","oa":47507,"o":"anim_sprite0_frame"},{"a":26703,"t":"code","b":[201,248],"m":"cmp","o":"#$F8"},{"a":26705,"t":"code","b":[144,8],"m":"bcc","oa":26715,"o":"b_685B"},{"a":26707,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":26709,"t":"code","b":[141,64,104],"m":"sta","oa":26688,"o":"a_6840"},{"a":26712,"t":"code","b":[141,67,104],"m":"sta","oa":26691,"o":"a_6843"},{"a":26715,"l":"b_685B","t":"code","b":[201,92],"m":"cmp","o":"#$5C","x":[26705]},{"a":26717,"t":"code","b":[176,8],"m":"bcs","oa":26727,"o":"b_6867"},{"a":26719,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":26721,"t":"code","b":[141,64,104],"m":"sta","oa":26688,"o":"a_6840"},{"a":26724,"t":"code","b":[141,67,104],"m":"sta","oa":26691,"o":"a_6843"},{"a":26727,"l":"b_6867","t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y","x":[26717]},{"a":26730,"t":"code","b":[201,93],"m":"cmp","o":"#$5D"},{"a":26732,"t":"code","b":[144,8],"m":"bcc","oa":26742,"o":"b_6876"},{"a":26734,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":26736,"t":"code","b":[141,70,104],"m":"sta","oa":26694,"o":"a_6846"},{"a":26739,"t":"code","b":[141,73,104],"m":"sta","oa":26697,"o":"a_6849"},{"a":26742,"l":"b_6876","t":"code","b":[201,68],"m":"cmp","o":"#$44","x":[26732]},{"a":26744,"t":"code","b":[176,8],"m":"bcs","oa":26754,"o":"b_6882"},{"a":26746,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":26748,"t":"code","b":[141,70,104],"m":"sta","oa":26694,"o":"a_6846"},{"a":26751,"t":"code","b":[141,73,104],"m":"sta","oa":26697,"o":"a_6849"},{"a":26754,"l":"b_6882","t":"code","b":[201,88],"m":"cmp","o":"#$58","x":[26744]},{"a":26756,"t":"code","b":[144,5],"m":"bcc","oa":26763,"o":"b_688B"},{"a":26758,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":26760,"t":"code","b":[141,74,104],"m":"sta","oa":26698,"o":"a_684A"},{"a":26763,"l":"b_688B","t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y","x":[26756]},{"a":26766,"t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":26768,"t":"code","b":[176,8],"m":"bcs","oa":26778,"o":"b_689A"},{"a":26770,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":26772,"t":"code","b":[141,74,104],"m":"sta","oa":26698,"o":"a_684A"},{"a":26775,"t":"code","b":[76,162,104],"m":"jmp","oa":26786,"o":"j_68A2"},{"a":26778,"l":"b_689A","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[26768]},{"a":26780,"t":"code","b":[141,74,104],"m":"sta","oa":26698,"o":"a_684A"},{"a":26783,"t":"code","b":[234],"m":"nop"},{"a":26784,"t":"code","b":[234],"m":"nop"},{"a":26785,"t":"code","b":[234],"m":"nop"},{"a":26786,"l":"j_68A2","t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms","x":[26775]},{"a":26789,"l":"room8_belt_unused","c":"Not reached: follows the JMP $8215 that ends room8_irq ($689F-$68A1 are NOPs before it), and no reference to $68A5 was found by byte search. By room8_belt_phase (<3, <6, <9, <12, then reset to 0) it would write 120 bytes cycling through one of the patterns $66A8, $66C0, $66B8, $66B0 to $D022, then JMP $8215. Its store goes to $D022, which shows nothing in bitmap mode, and nothing increments room8_belt_phase.","t":"code","b":[173,238,100],"m":"lda","oa":25838,"o":"room8_belt_phase"},{"a":26792,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":26794,"t":"code","b":[176,28],"m":"bcs","oa":26824,"o":"b_68C8"},{"a":26796,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26798,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26800,"l":"b_68B0","t":"code","b":[189,168,102],"m":"lda","oa":26280,"o":"belt_pattern_0,x","x":[26814,26818]},{"a":26803,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":26806,"t":"code","b":[232],"m":"inx"},{"a":26807,"t":"code","b":[200],"m":"iny"},{"a":26808,"t":"code","b":[192,120],"m":"cpy","o":"#$78"},{"a":26810,"t":"code","b":[240,9],"m":"beq","oa":26821,"o":"b_68C5"},{"a":26812,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":26814,"t":"code","b":[208,240],"m":"bne","oa":26800,"o":"b_68B0"},{"a":26816,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26818,"t":"code","b":[76,176,104],"m":"jmp","oa":26800,"o":"b_68B0"},{"a":26821,"l":"b_68C5","t":"code","b":[76,57,105],"m":"jmp","oa":26937,"o":"j_6939","x":[26810]},{"a":26824,"l":"b_68C8","t":"code","b":[173,238,100],"m":"lda","oa":25838,"o":"room8_belt_phase","x":[26794]},{"a":26827,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":26829,"t":"code","b":[176,28],"m":"bcs","oa":26859,"o":"b_68EB"},{"a":26831,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26833,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26835,"l":"b_68D3","t":"code","b":[189,192,102],"m":"lda","oa":26304,"o":"belt_pattern_1,x","x":[26849,26853]},{"a":26838,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":26841,"t":"code","b":[232],"m":"inx"},{"a":26842,"t":"code","b":[200],"m":"iny"},{"a":26843,"t":"code","b":[192,120],"m":"cpy","o":"#$78"},{"a":26845,"t":"code","b":[240,9],"m":"beq","oa":26856,"o":"b_68E8"},{"a":26847,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":26849,"t":"code","b":[208,240],"m":"bne","oa":26835,"o":"b_68D3"},{"a":26851,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26853,"t":"code","b":[76,211,104],"m":"jmp","oa":26835,"o":"b_68D3"},{"a":26856,"l":"b_68E8","t":"code","b":[76,57,105],"m":"jmp","oa":26937,"o":"j_6939","x":[26845]},{"a":26859,"l":"b_68EB","t":"code","b":[173,238,100],"m":"lda","oa":25838,"o":"room8_belt_phase","x":[26829]},{"a":26862,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":26864,"t":"code","b":[176,28],"m":"bcs","oa":26894,"o":"b_690E"},{"a":26866,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26868,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26870,"l":"b_68F6","t":"code","b":[189,184,102],"m":"lda","oa":26296,"o":"belt_pattern_2,x","x":[26884,26888]},{"a":26873,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":26876,"t":"code","b":[232],"m":"inx"},{"a":26877,"t":"code","b":[200],"m":"iny"},{"a":26878,"t":"code","b":[192,120],"m":"cpy","o":"#$78"},{"a":26880,"t":"code","b":[240,9],"m":"beq","oa":26891,"o":"b_690B"},{"a":26882,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":26884,"t":"code","b":[208,240],"m":"bne","oa":26870,"o":"b_68F6"},{"a":26886,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26888,"t":"code","b":[76,246,104],"m":"jmp","oa":26870,"o":"b_68F6"},{"a":26891,"l":"b_690B","t":"code","b":[76,57,105],"m":"jmp","oa":26937,"o":"j_6939","x":[26880]},{"a":26894,"l":"b_690E","t":"code","b":[173,238,100],"m":"lda","oa":25838,"o":"room8_belt_phase","x":[26864]},{"a":26897,"t":"code","b":[201,12],"m":"cmp","o":"#$0C"},{"a":26899,"t":"code","b":[176,28],"m":"bcs","oa":26929,"o":"b_6931"},{"a":26901,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26903,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26905,"l":"b_6919","t":"code","b":[189,176,102],"m":"lda","oa":26288,"o":"belt_pattern_3,x","x":[26919,26923]},{"a":26908,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":26911,"t":"code","b":[232],"m":"inx"},{"a":26912,"t":"code","b":[200],"m":"iny"},{"a":26913,"t":"code","b":[192,120],"m":"cpy","o":"#$78"},{"a":26915,"t":"code","b":[240,9],"m":"beq","oa":26926,"o":"b_692E"},{"a":26917,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":26919,"t":"code","b":[208,240],"m":"bne","oa":26905,"o":"b_6919"},{"a":26921,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":26923,"t":"code","b":[76,25,105],"m":"jmp","oa":26905,"o":"b_6919"},{"a":26926,"l":"b_692E","t":"code","b":[76,57,105],"m":"jmp","oa":26937,"o":"j_6939","x":[26915]},{"a":26929,"l":"b_6931","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[26899]},{"a":26931,"t":"code","b":[141,238,100],"m":"sta","oa":25838,"o":"room8_belt_phase"},{"a":26934,"t":"code","b":[76,57,105],"m":"jmp","oa":26937,"o":"j_6939"},{"a":26937,"l":"j_6939","t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms","x":[26821,26856,26891,26926,26934]},{"a":26940,"l":"unused_693c","c":"228 bytes of $00 from $693C to $6A1F, except the two bytes $15 $82 at $69A4 (the operand of a JMP $8215, without its opcode). No reference found to any of it.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26948,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26956,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26964,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26972,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26980,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26988,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26996,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27004,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27012,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27020,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27028,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27036,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27044,"l":"stray_jmp_operand","c":"The bytes $15 $82 in the run of zeros: the address $8215 (the shared IRQ tail) without a JMP opcode in front ($69A3 is $00); not reached.","t":"byte","b":[21,130,0,0,0,0,0,0]},{"a":27052,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27060,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27068,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27076,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27084,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27092,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27100,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27108,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27116,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27124,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27132,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27140,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27148,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27156,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27164,"t":"byte","b":[0,0,0,0]},{"a":27168,"l":"room8_main_loop","c":"Room 8's main loop, one pass per round through the stub at $A82F. A copy of room6_main_loop: the 278 bytes $6A20-$6B35 differ from $6220-$6335 in 54 bytes: all but one are call, jump and branch operands; the last is the opcode at $6B33, a JMP where room 6 has a JSR ($6333). $D8 = $40 ends the game ($4475); $70EE respawns Mr Hat if he is off; room8_step_checks; stick right $77 room8_walk_right, left $7B room8_walk_left, down $7D room8_crouch, fire $6F (read twice) the three-phase jump (frames $2D/$2C/$2E or $30/$2F/$31, 21 steps each, pause room8_jump_pause between); fire with right $67 or left $6B always jumps, after room8_exit_and_step_checks. Ends with JMP $17C0 (standing frame $2C or $2F, then $A82F).","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[43058]},{"a":27170,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":27172,"t":"code","b":[208,3],"m":"bne","oa":27177,"o":"b_6A29"},{"a":27174,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":27177,"l":"b_6A29","t":"code","b":[32,238,112],"m":"jsr","oa":28910,"o":"room8_respawn_hat","x":[27172]},{"a":27180,"t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks"},{"a":27183,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":27186,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":27188,"t":"code","b":[208,6],"m":"bne","oa":27196,"o":"b_6A3C"},{"a":27190,"t":"code","b":[32,96,107],"m":"jsr","oa":27488,"o":"room8_walk_right"},{"a":27193,"t":"code","b":[76,51,107],"m":"jmp","oa":27443,"o":"j_6B33"},{"a":27196,"l":"b_6A3C","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[27188]},{"a":27198,"t":"code","b":[208,6],"m":"bne","oa":27206,"o":"b_6A46"},{"a":27200,"t":"code","b":[32,144,107],"m":"jsr","oa":27536,"o":"room8_walk_left"},{"a":27203,"t":"code","b":[76,51,107],"m":"jmp","oa":27443,"o":"j_6B33"},{"a":27206,"l":"b_6A46","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[27198]},{"a":27208,"t":"code","b":[208,9],"m":"bne","oa":27219,"o":"b_6A53"},{"a":27210,"t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks"},{"a":27213,"t":"code","b":[32,212,107],"m":"jsr","oa":27604,"o":"room8_crouch"},{"a":27216,"t":"code","b":[76,28,107],"m":"jmp","oa":27420,"o":"j_6B1C"},{"a":27219,"l":"b_6A53","t":"code","b":[201,111],"m":"cmp","o":"#$6F","x":[27208]},{"a":27221,"t":"code","b":[208,104],"m":"bne","oa":27327,"o":"b_6ABF"},{"a":27223,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":27226,"t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":27228,"t":"code","b":[208,97],"m":"bne","oa":27327,"o":"b_6ABF"},{"a":27230,"l":"j_6A5E","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[27430,27440]},{"a":27233,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":27235,"t":"code","b":[176,93],"m":"bcs","oa":27330,"o":"b_6AC2"},{"a":27237,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":27239,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27242,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":27245,"l":"b_6A6D","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[27263]},{"a":27248,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":27251,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":27254,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":27256,"t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks"},{"a":27259,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":27261,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":27263,"t":"code","b":[208,236],"m":"bne","oa":27245,"o":"b_6A6D"},{"a":27265,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27267,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":27269,"t":"code","b":[32,199,107],"m":"jsr","oa":27591,"o":"room8_jump_pause"},{"a":27272,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":27274,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27277,"l":"b_6A8D","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[27289]},{"a":27280,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":27282,"t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks"},{"a":27285,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":27287,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":27289,"t":"code","b":[208,242],"m":"bne","oa":27277,"o":"b_6A8D"},{"a":27291,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27293,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":27295,"t":"code","b":[32,199,107],"m":"jsr","oa":27591,"o":"room8_jump_pause"},{"a":27298,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":27300,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27303,"l":"b_6AA7","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[27318]},{"a":27306,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":27309,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":27311,"t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks"},{"a":27314,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":27316,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":27318,"t":"code","b":[208,239],"m":"bne","oa":27303,"o":"b_6AA7"},{"a":27320,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27322,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":27324,"t":"code","b":[32,199,107],"m":"jsr","oa":27591,"o":"room8_jump_pause"},{"a":27327,"l":"b_6ABF","t":"code","b":[76,28,107],"m":"jmp","oa":27420,"o":"j_6B1C","x":[27221,27228]},{"a":27330,"l":"b_6AC2","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[27235]},{"a":27332,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27335,"l":"b_6AC7","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[27356]},{"a":27338,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":27341,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":27344,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":27347,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":27349,"t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks"},{"a":27352,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":27354,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":27356,"t":"code","b":[208,233],"m":"bne","oa":27335,"o":"b_6AC7"},{"a":27358,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27360,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":27362,"t":"code","b":[32,199,107],"m":"jsr","oa":27591,"o":"room8_jump_pause"},{"a":27365,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":27367,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27370,"l":"b_6AEA","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[27382]},{"a":27373,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":27375,"t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks"},{"a":27378,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":27380,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":27382,"t":"code","b":[208,242],"m":"bne","oa":27370,"o":"b_6AEA"},{"a":27384,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27386,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":27388,"t":"code","b":[32,199,107],"m":"jsr","oa":27591,"o":"room8_jump_pause"},{"a":27391,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":27393,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27396,"l":"b_6B04","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[27411]},{"a":27399,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":27402,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":27404,"t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks"},{"a":27407,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":27409,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":27411,"t":"code","b":[208,239],"m":"bne","oa":27396,"o":"b_6B04"},{"a":27413,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27415,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":27417,"t":"code","b":[32,199,107],"m":"jsr","oa":27591,"o":"room8_jump_pause"},{"a":27420,"l":"j_6B1C","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[27216,27327]},{"a":27423,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":27425,"t":"code","b":[208,6],"m":"bne","oa":27433,"o":"b_6B29"},{"a":27427,"t":"code","b":[32,86,107],"m":"jsr","oa":27478,"o":"room8_exit_and_step_checks"},{"a":27430,"t":"code","b":[76,94,106],"m":"jmp","oa":27230,"o":"j_6A5E"},{"a":27433,"l":"b_6B29","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[27425]},{"a":27435,"t":"code","b":[208,6],"m":"bne","oa":27443,"o":"j_6B33"},{"a":27437,"t":"code","b":[32,86,107],"m":"jsr","oa":27478,"o":"room8_exit_and_step_checks"},{"a":27440,"t":"code","b":[76,94,106],"m":"jmp","oa":27230,"o":"j_6A5E"},{"a":27443,"l":"j_6B33","t":"code","b":[76,192,23],"m":"jmp","oa":6080,"o":"stand_then_room_loop","x":[27193,27203,27435]},{"a":27446,"l":"room8_exit_dispatch","c":"Room 8's exits, by the code its rules leave in $4ACD (each target simulated from play-room1.vsf): $48 (bottom floor, left edge) JMP $9000, which for $48 goes on to $8FF0 and $95A0 and draws ROOM 7; $50 (upper floor, right edge) and $58 (bottom floor, right edge) JMP $7140, which draws ROOM 9, STAGE 3; $60 (bottom of the shaft) JMP $8300, ROOM 10, STAGE 4. Any other value returns. The jumps leave the caller's return addresses on the stack.","t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code","x":[27478,27640,28084]},{"a":27449,"t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":27451,"t":"code","b":[208,3],"m":"bne","oa":27456,"o":"b_6B40"},{"a":27453,"t":"code","b":[76,0,144],"m":"jmp","oa":36864,"o":"room47_enter"},{"a":27456,"l":"b_6B40","t":"code","b":[201,80],"m":"cmp","o":"#$50","x":[27451]},{"a":27458,"t":"code","b":[208,3],"m":"bne","oa":27463,"o":"b_6B47"},{"a":27460,"t":"code","b":[76,64,113],"m":"jmp","oa":28992,"o":"room9_setup"},{"a":27463,"l":"b_6B47","t":"code","b":[201,88],"m":"cmp","o":"#$58","x":[27458]},{"a":27465,"t":"code","b":[208,3],"m":"bne","oa":27470,"o":"b_6B4E"},{"a":27467,"t":"code","b":[76,64,113],"m":"jmp","oa":28992,"o":"room9_setup"},{"a":27470,"l":"b_6B4E","t":"code","b":[201,96],"m":"cmp","o":"#$60","x":[27465]},{"a":27472,"t":"code","b":[208,3],"m":"bne","oa":27477,"o":"r_6B55"},{"a":27474,"t":"code","b":[76,0,131],"m":"jmp","oa":33536,"o":"room10_setup"},{"a":27477,"l":"r_6B55","t":"code","b":[96],"m":"rts","x":[27472]},{"a":27478,"l":"room8_exit_and_step_checks","c":"room8_exit_dispatch, then room8_step_checks; used before a fire-and-direction jump.","t":"code","b":[32,54,107],"m":"jsr","oa":27446,"o":"room8_exit_dispatch","x":[27427,27437]},{"a":27481,"l":"room8_step_checks","c":"The checks room 8 makes after every step: room8_position_rules, then $5590 (collision handling and the death sequence when $4ACE = $20).","t":"code","b":[32,240,107],"m":"jsr","oa":27632,"o":"room8_position_rules","x":[27180,27210,27256,27282,27311,27349,27375,27404,27608]},{"a":27484,"t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups"},{"a":27487,"t":"code","b":[96],"m":"rts"},{"a":27488,"l":"room8_walk_right","c":"One step right in room 8, the same bytes as $5340 used by room 6 except the last call: walk sub-counter $FB to 9, then the next right frame in $FD ($2C-$2E), shown in $07FC; X + 1; voice 2 silenced ($1CF2) and the footstep sound every 11th call ($1D04); room8_step_delay.","t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte","x":[27190]},{"a":27490,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":27492,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27495,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":27497,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":27499,"t":"code","b":[208,16],"m":"bne","oa":27517,"o":"b_6B7D"},{"a":27501,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27503,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":27505,"t":"code","b":[230,253],"m":"inc","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":27507,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":27509,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":27511,"t":"code","b":[208,4],"m":"bne","oa":27517,"o":"b_6B7D"},{"a":27513,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":27515,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":27517,"l":"b_6B7D","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[27499,27511]},{"a":27520,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":27523,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":27526,"t":"code","b":[32,186,107],"m":"jsr","oa":27578,"o":"room8_step_delay"},{"a":27529,"t":"code","b":[96],"m":"rts"},{"a":27530,"l":"unused_6b8a","c":"6 bytes of $00 between room8_walk_right and room8_walk_left; not referenced.","t":"byte","b":[0,0,0,0,0,0]},{"a":27536,"l":"room8_walk_left","c":"One step left in room 8: sub-counter $FB to 9, next left frame in $FF ($2F-$31) shown in $07FC; X - 1; $1CF2, $1D04; room8_step_delay.","t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte","x":[27200]},{"a":27538,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":27540,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27543,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":27545,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":27547,"t":"code","b":[208,16],"m":"bne","oa":27565,"o":"b_6BAD"},{"a":27549,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27551,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":27553,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":27555,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":27557,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":27559,"t":"code","b":[208,4],"m":"bne","oa":27565,"o":"b_6BAD"},{"a":27561,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":27563,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":27565,"l":"b_6BAD","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[27547,27559]},{"a":27568,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":27571,"t":"code","b":[32,4,29],"m":"jsr","oa":7428,"o":"footstep_click"},{"a":27574,"t":"code","b":[32,186,107],"m":"jsr","oa":27578,"o":"room8_step_delay"},{"a":27577,"t":"code","b":[96],"m":"rts"},{"a":27578,"l":"room8_step_delay","c":"Busy-wait of 5 x 256 inner loops, the walking speed in room 8.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[27526,27574]},{"a":27580,"l":"b_6BBC","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[27588]},{"a":27582,"l":"b_6BBE","t":"code","b":[200],"m":"iny","x":[27583]},{"a":27583,"t":"code","b":[208,253],"m":"bne","oa":27582,"o":"b_6BBE"},{"a":27585,"t":"code","b":[232],"m":"inx"},{"a":27586,"t":"code","b":[224,5],"m":"cpx","o":"#$05"},{"a":27588,"t":"code","b":[208,246],"m":"bne","oa":27580,"o":"b_6BBC"},{"a":27590,"t":"code","b":[96],"m":"rts"},{"a":27591,"l":"room8_jump_pause","c":"Busy-wait of $50 x 256 inner loops between the three phases of a jump in room 8 (the same delay as $42E0 with X and Y swapped; $42E0 serves the jumps of rooms 1, 2, 3, 4/7, 5, 6, 9 and 11).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[27269,27295,27324,27362,27388,27417]},{"a":27593,"l":"b_6BC9","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[27601]},{"a":27595,"l":"b_6BCB","t":"code","b":[200],"m":"iny","x":[27596]},{"a":27596,"t":"code","b":[208,253],"m":"bne","oa":27595,"o":"b_6BCB"},{"a":27598,"t":"code","b":[232],"m":"inx"},{"a":27599,"t":"code","b":[224,80],"m":"cpx","o":"#$50"},{"a":27601,"t":"code","b":[208,246],"m":"bne","oa":27593,"o":"b_6BC9"},{"a":27603,"t":"code","b":[96],"m":"rts"},{"a":27604,"l":"room8_crouch","c":"Crouch in room 8: frame $2A while the stick reads exactly $7D, running room8_step_checks; restores the frame. A copy of room6_crouch.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[27213]},{"a":27607,"t":"code","b":[72],"m":"pha"},{"a":27608,"l":"b_6BD8","t":"code","b":[32,89,107],"m":"jsr","oa":27481,"o":"room8_step_checks","x":[27621]},{"a":27611,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":27613,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27616,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":27619,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":27621,"t":"code","b":[240,241],"m":"beq","oa":27608,"o":"b_6BD8"},{"a":27623,"t":"code","b":[104],"m":"pla"},{"a":27624,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":27627,"t":"code","b":[96],"m":"rts"},{"a":27628,"l":"unused_6bec","c":"One byte $00 after room8_crouch; not referenced.","t":"byte","b":[0]},{"a":27629,"l":"room8_upper_rules_jump","c":"JMP $6CF3: the branch at $6C00 (upper half, Y < $80) reaches the upper-floor part of room8_position_rules through this.","t":"code","b":[76,243,108],"m":"jmp","oa":27891,"o":"j_6CF3","x":[27648]},{"a":27632,"l":"room8_position_rules","c":"Room 8's rules for where Mr Hat stands, every step (room8_step_checks); nothing while sprite 4 is off ($B98C). First room8_exit_dispatch, so an exit code set on the last step is taken now. Bottom half (Y >= $80), left part (X < $60, high bit clear): X < 8 switches him off and sets $4ACD = $48 (exit left); X = $52 pushes him back to $51 (he cannot pass it going right); X = $30 takes a bonus if cell $0686 is $6C: five calls of $41DA (the score digit at $3D38), $6661 and $6672 set to $CC, cells $0686/$06AE/$06D6 and the next column hidden, sound reset $1CB0. The drawing leaves $0686 = $CC (simulated), so this bonus is never given as far as found. Further right: X wraps across the high bit at $00/$FF; X = $158 switches him off with $4ACD = $58 (exit right); X = $8F pushes him on to $90; X $100-$137 drifts him right one pixel every $38 steps (drift_counter); X $F0-$FF (high bit clear) kills ($55F5) unless cell $0626 is $CC, which the drawing leaves it (simulated); the same test for the high part below $128 ($6CEC) is never reached, since X < $138 there has already returned through the drift. Then, and for the upper half: drift_push; the shaft at X $8F-$9E is entered (room8_shaft_ride) from the upper floor (Y = $5C) with down, from the bottom floor (Y = $B4) with down or up; X $00/$FF goes to $4610; high part X >= $158 switches him off with $4ACD = $50 (exit right); X < $28 is pushed right (left wall); X = $38 takes the room's item if cell $04A4 is $7C and $D8 is not $50: cells $04A4/$04CC hidden, two calls of $41DA, sound reset, $D8 = $50, $66E1 = $CC, $70A0 (carried-item cells $07BE/$07E6 = $7C, $F5 = $AF). The drawing leaves $04A4 = $2C (simulated; the $7C meant for it goes to $D022 at $66E0), so this pickup is never made as far as found. Ends with JMP room8_upper_floor_colour ($70B0: on the upper floor at X $40-$77 or $AC-$DF it sets Mr Hat's colour $0B, through hat_colour_reset in $48-$6F and $B0-$DB).","t":"code","b":[32,140,185],"m":"jsr","oa":47500,"o":"hat_sprite_enabled","x":[27481]},{"a":27635,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":27637,"t":"code","b":[240,1],"m":"beq","oa":27640,"o":"b_6BF8"},{"a":27639,"t":"code","b":[96],"m":"rts"},{"a":27640,"l":"b_6BF8","t":"code","b":[32,54,107],"m":"jsr","oa":27446,"o":"room8_exit_dispatch","x":[27637]},{"a":27643,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":27646,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":27648,"t":"code","b":[144,235],"m":"bcc","oa":27629,"o":"room8_upper_rules_jump"},{"a":27650,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":27653,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":27655,"t":"code","b":[176,91],"m":"bcs","oa":27748,"o":"b_6C64"},{"a":27657,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":27660,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":27662,"t":"code","b":[176,84],"m":"bcs","oa":27748,"o":"b_6C64"},{"a":27664,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":27667,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":27669,"t":"code","b":[176,14],"m":"bcs","oa":27685,"o":"b_6C25"},{"a":27671,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":27674,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":27676,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":27679,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":27681,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":27684,"t":"code","b":[96],"m":"rts"},{"a":27685,"l":"b_6C25","t":"code","b":[201,82],"m":"cmp","o":"#$52","x":[27669]},{"a":27687,"t":"code","b":[208,4],"m":"bne","oa":27693,"o":"b_6C2D"},{"a":27689,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":27692,"t":"code","b":[96],"m":"rts"},{"a":27693,"l":"b_6C2D","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[27687]},{"a":27696,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":27698,"t":"code","b":[208,47],"m":"bne","oa":27747,"o":"r_6C63"},{"a":27700,"t":"code","b":[173,134,6],"m":"lda","oa":1670,"o":"a_0686"},{"a":27703,"t":"code","b":[201,108],"m":"cmp","o":"#$6C"},{"a":27705,"t":"code","b":[208,40],"m":"bne","oa":27747,"o":"r_6C63"},{"a":27707,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":27709,"l":"b_6C3D","t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000","x":[27715]},{"a":27712,"t":"code","b":[200],"m":"iny"},{"a":27713,"t":"code","b":[192,5],"m":"cpy","o":"#$05"},{"a":27715,"t":"code","b":[208,248],"m":"bne","oa":27709,"o":"b_6C3D"},{"a":27717,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":27719,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":27721,"t":"code","b":[141,114,102],"m":"sta","oa":26226,"o":"a_6672"},{"a":27724,"t":"code","b":[141,97,102],"m":"sta","oa":26209,"o":"a_6661"},{"a":27727,"l":"b_6C4F","t":"code","b":[157,134,6],"m":"sta","oa":1670,"o":"a_0686,x","x":[27739]},{"a":27730,"t":"code","b":[157,174,6],"m":"sta","oa":1710,"o":"f_06AE,x"},{"a":27733,"t":"code","b":[157,214,6],"m":"sta","oa":1750,"o":"f_06D6,x"},{"a":27736,"t":"code","b":[232],"m":"inx"},{"a":27737,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":27739,"t":"code","b":[208,242],"m":"bne","oa":27727,"o":"b_6C4F"},{"a":27741,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":27744,"t":"code","b":[32,197,101],"m":"jsr","oa":26053,"o":"call_empty_450a"},{"a":27747,"l":"r_6C63","t":"code","b":[96],"m":"rts","x":[27698,27705]},{"a":27748,"l":"b_6C64","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[27655,27662]},{"a":27751,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":27753,"t":"code","b":[208,13],"m":"bne","oa":27768,"o":"b_6C78"},{"a":27755,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":27758,"t":"code","b":[73,16],"m":"eor","o":"#$10"},{"a":27760,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":27763,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":27765,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":27768,"l":"b_6C78","t":"code","b":[201,255],"m":"cmp","o":"#$FF","x":[27753]},{"a":27770,"t":"code","b":[208,14],"m":"bne","oa":27786,"o":"b_6C8A"},{"a":27772,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":27775,"t":"code","b":[73,16],"m":"eor","o":"#$10"},{"a":27777,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":27780,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":27782,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":27785,"t":"code","b":[96],"m":"rts"},{"a":27786,"l":"b_6C8A","t":"code","b":[201,88],"m":"cmp","o":"#$58","x":[27770]},{"a":27788,"t":"code","b":[208,14],"m":"bne","oa":27804,"o":"b_6C9C"},{"a":27790,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":27793,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":27795,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":27798,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":27800,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":27803,"t":"code","b":[96],"m":"rts"},{"a":27804,"l":"b_6C9C","t":"code","b":[201,143],"m":"cmp","o":"#$8F","x":[27788]},{"a":27806,"t":"code","b":[208,44],"m":"bne","oa":27852,"o":"b_6CCC"},{"a":27808,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":27811,"t":"code","b":[96],"m":"rts"},{"a":27812,"l":"drift_push","c":"Slow push to the right: while Mr Hat is at Y = $5C, high bit clear ($D010 < $29), X >= $B8, every call bumps drift_counter ($64EF) and every $38th call moves him one pixel right. Called through $ABCE (which then returns his X in A) from room 8's rules at $6CF3 and from $AB24, which room 3's rules call at $4AD0.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[43982]},{"a":27815,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":27817,"t":"code","b":[208,32],"m":"bne","oa":27851,"o":"r_6CCB"},{"a":27819,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":27822,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":27824,"t":"code","b":[176,25],"m":"bcs","oa":27851,"o":"r_6CCB"},{"a":27826,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":27829,"t":"code","b":[201,184],"m":"cmp","o":"#$B8"},{"a":27831,"t":"code","b":[144,18],"m":"bcc","oa":27851,"o":"r_6CCB"},{"a":27833,"l":"b_6CB9","t":"code","b":[238,239,100],"m":"inc","oa":25839,"o":"drift_counter","x":[27857]},{"a":27836,"t":"code","b":[173,239,100],"m":"lda","oa":25839,"o":"drift_counter"},{"a":27839,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":27841,"t":"code","b":[144,8],"m":"bcc","oa":27851,"o":"r_6CCB"},{"a":27843,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":27846,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":27848,"t":"code","b":[141,239,100],"m":"sta","oa":25839,"o":"drift_counter"},{"a":27851,"l":"r_6CCB","t":"code","b":[96],"m":"rts","x":[27817,27824,27831,27841]},{"a":27852,"l":"b_6CCC","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[27806]},{"a":27855,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":27857,"t":"code","b":[144,230],"m":"bcc","oa":27833,"o":"b_6CB9"},{"a":27859,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":27862,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":27864,"t":"code","b":[176,18],"m":"bcs","oa":27884,"o":"b_6CEC"},{"a":27866,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":27869,"t":"code","b":[201,240],"m":"cmp","o":"#$F0"},{"a":27871,"t":"code","b":[144,18],"m":"bcc","oa":27891,"o":"j_6CF3"},{"a":27873,"l":"b_6CE1","t":"code","b":[173,38,6],"m":"lda","oa":1574,"o":"a_0626","x":[27889]},{"a":27876,"t":"code","b":[201,204],"m":"cmp","o":"#$CC"},{"a":27878,"t":"code","b":[240,11],"m":"beq","oa":27891,"o":"j_6CF3"},{"a":27880,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":27883,"t":"code","b":[96],"m":"rts"},{"a":27884,"l":"b_6CEC","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[27864]},{"a":27887,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":27889,"t":"code","b":[144,238],"m":"bcc","oa":27873,"o":"b_6CE1"},{"a":27891,"l":"j_6CF3","t":"code","b":[32,206,171],"m":"jsr","oa":43982,"o":"call_6ca4_get_x","x":[27629,27871,27878]},{"a":27894,"t":"code","b":[201,143],"m":"cmp","o":"#$8F"},{"a":27896,"t":"code","b":[144,38],"m":"bcc","oa":27936,"o":"b_6D20"},{"a":27898,"t":"code","b":[201,159],"m":"cmp","o":"#$9F"},{"a":27900,"t":"code","b":[176,34],"m":"bcs","oa":27936,"o":"b_6D20"},{"a":27902,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":27905,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":27907,"t":"code","b":[208,11],"m":"bne","oa":27920,"o":"b_6D10"},{"a":27909,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":27912,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":27914,"t":"code","b":[208,3],"m":"bne","oa":27919,"o":"r_6D0F"},{"a":27916,"l":"b_6D0C","t":"code","b":[32,160,109],"m":"jsr","oa":28064,"o":"room8_shaft_ride","x":[27929,27933]},{"a":27919,"l":"r_6D0F","t":"code","b":[96],"m":"rts","x":[27914]},{"a":27920,"l":"b_6D10","t":"code","b":[201,180],"m":"cmp","o":"#$B4","x":[27907]},{"a":27922,"t":"code","b":[208,12],"m":"bne","oa":27936,"o":"b_6D20"},{"a":27924,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":27927,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":27929,"t":"code","b":[240,241],"m":"beq","oa":27916,"o":"b_6D0C"},{"a":27931,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":27933,"t":"code","b":[240,237],"m":"beq","oa":27916,"o":"b_6D0C"},{"a":27935,"t":"code","b":[96],"m":"rts"},{"a":27936,"l":"b_6D20","t":"code","b":[201,0],"m":"cmp","o":"#$00","x":[27896,27900,27922]},{"a":27938,"t":"code","b":[240,4],"m":"beq","oa":27944,"o":"b_6D28"},{"a":27940,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":27942,"t":"code","b":[208,4],"m":"bne","oa":27948,"o":"b_6D2C"},{"a":27944,"l":"b_6D28","t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256","x":[27938]},{"a":27947,"t":"code","b":[96],"m":"rts"},{"a":27948,"l":"b_6D2C","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[27942]},{"a":27951,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":27953,"t":"code","b":[144,21],"m":"bcc","oa":27976,"o":"b_6D48"},{"a":27955,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":27958,"t":"code","b":[201,88],"m":"cmp","o":"#$58"},{"a":27960,"t":"code","b":[144,13],"m":"bcc","oa":27975,"o":"r_6D47"},{"a":27962,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":27965,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":27967,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":27970,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":27972,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":27975,"l":"r_6D47","t":"code","b":[96],"m":"rts","x":[27960]},{"a":27976,"l":"b_6D48","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[27953]},{"a":27979,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":27981,"t":"code","b":[176,4],"m":"bcs","oa":27987,"o":"b_6D53"},{"a":27983,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":27986,"l":"r_6D52","t":"code","b":[96],"m":"rts","x":[27999,28005]},{"a":27987,"l":"b_6D53","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[27981]},{"a":27990,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":27992,"t":"code","b":[208,45],"m":"bne","oa":28039,"o":"b_6D87"},{"a":27994,"t":"code","b":[173,164,4],"m":"lda","oa":1188,"o":"a_04A4"},{"a":27997,"t":"code","b":[201,124],"m":"cmp","o":"#$7C"},{"a":27999,"t":"code","b":[208,241],"m":"bne","oa":27986,"o":"r_6D52"},{"a":28001,"t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8"},{"a":28003,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":28005,"t":"code","b":[240,235],"m":"beq","oa":27986,"o":"r_6D52"},{"a":28007,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28009,"t":"code","b":[141,164,4],"m":"sta","oa":1188,"o":"a_04A4"},{"a":28012,"t":"code","b":[141,204,4],"m":"sta","oa":1228,"o":"a_04CC"},{"a":28015,"t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000"},{"a":28018,"t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000"},{"a":28021,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":28024,"t":"code","b":[32,194,28],"m":"jsr","oa":7362,"o":"sound_stub_1cc2"},{"a":28027,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":28029,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":28031,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28033,"t":"code","b":[141,225,102],"m":"sta","oa":26337,"o":"a_66E1"},{"a":28036,"t":"code","b":[32,160,112],"m":"jsr","oa":28832,"o":"room8_take_key"},{"a":28039,"l":"b_6D87","t":"code","b":[76,176,112],"m":"jmp","oa":28848,"o":"room8_upper_floor_colour","x":[27992]},{"a":28042,"l":"unused_6d8a","c":"6 bytes of $00 after room8_position_rules; not referenced.","t":"byte","b":[0,0,0,0,0,0]},{"a":28048,"l":"room3_sprite_test","c":"Serves room 3, not room 8: called from $4AAD, which room 3's main loop ($491D) calls after its moves. While $D015 >= $8F (the whole enable byte compared as one number) it runs $483A, room 3's exit dispatch ($4ACD = $08 to $4D80, $10 to $9000), and returns; otherwise it goes to $6DF3: the end of the game if $D8 = $40, else JMP $491D, back to the top of room 3's loop without returning (four bytes of return addresses left on the stack each time).","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[19117]},{"a":28051,"t":"code","b":[201,143],"m":"cmp","o":"#$8F"},{"a":28053,"t":"code","b":[176,3],"m":"bcs","oa":28058,"o":"b_6D9A"},{"a":28055,"t":"code","b":[76,243,109],"m":"jmp","oa":28147,"o":"j_6DF3"},{"a":28058,"l":"b_6D9A","t":"code","b":[32,58,72],"m":"jsr","oa":18490,"o":"room3_exit_dispatch","x":[28053]},{"a":28061,"t":"code","b":[96],"m":"rts"},{"a":28062,"l":"unused_6d9e","c":"Two bytes $00 after room3_sprite_test; not referenced.","t":"byte","b":[0,0]},{"a":28064,"l":"room8_shaft_ride","c":"Room 8's shaft (colour columns 15-17): Mr Hat is held at X = $91 and $4B20 moves him up ($7E) or down ($7D) with the climbing frames. Y >= $D8 (out of the bottom) sets $4ACD = $60 and takes room8_exit_dispatch to room 10 ($8300); Y = $5C leaves him on the upper floor (JMP $A82F, the loop); Y $B0-$B7 with right or left puts him on the bottom floor (Y = $B4, JMP $A82F). Each step tests the collision with $55B0; on a hit the death sequence $55F5, Y = $5C, and $7090 ($4ACE = 0, back to the loop). Entered from room8_position_rules, and from the set-up at $713A when he arrives climbing up from room 10.","t":"code","b":[169,145],"m":"lda","o":"#$91","x":[27916,28986]},{"a":28066,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":28069,"l":"j_6DA5","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[28144]},{"a":28072,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":28075,"t":"code","b":[201,216],"m":"cmp","o":"#$D8"},{"a":28077,"t":"code","b":[144,8],"m":"bcc","oa":28087,"o":"b_6DB7"},{"a":28079,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":28081,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":28084,"t":"code","b":[32,54,107],"m":"jsr","oa":27446,"o":"room8_exit_dispatch"},{"a":28087,"l":"b_6DB7","t":"code","b":[201,92],"m":"cmp","o":"#$5C","x":[28077]},{"a":28089,"t":"code","b":[208,3],"m":"bne","oa":28094,"o":"b_6DBE"},{"a":28091,"t":"code","b":[76,47,168],"m":"jmp","oa":43055,"o":"reenter_loop_6a20"},{"a":28094,"l":"b_6DBE","t":"code","b":[201,176],"m":"cmp","o":"#$B0","x":[28089]},{"a":28096,"t":"code","b":[144,23],"m":"bcc","oa":28121,"o":"b_6DD9"},{"a":28098,"t":"code","b":[201,184],"m":"cmp","o":"#$B8"},{"a":28100,"t":"code","b":[176,19],"m":"bcs","oa":28121,"o":"b_6DD9"},{"a":28102,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":28105,"t":"code","b":[201,123],"m":"cmp","o":"#$7B"},{"a":28107,"t":"code","b":[208,8],"m":"bne","oa":28117,"o":"b_6DD5"},{"a":28109,"l":"b_6DCD","t":"code","b":[169,180],"m":"lda","o":"#$B4","x":[28119]},{"a":28111,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":28114,"t":"code","b":[76,47,168],"m":"jmp","oa":43055,"o":"reenter_loop_6a20"},{"a":28117,"l":"b_6DD5","t":"code","b":[201,119],"m":"cmp","o":"#$77","x":[28107]},{"a":28119,"t":"code","b":[240,244],"m":"beq","oa":28109,"o":"b_6DCD"},{"a":28121,"l":"b_6DD9","t":"code","b":[32,176,85],"m":"jsr","oa":21936,"o":"hat_collision_test","x":[28096,28100]},{"a":28124,"t":"code","b":[173,206,74],"m":"lda","oa":19150,"o":"guardian_touch_flag"},{"a":28127,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":28129,"t":"code","b":[208,13],"m":"bne","oa":28144,"o":"room8_shaft_ride_repeat"},{"a":28131,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":28134,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":28136,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":28139,"t":"code","b":[76,144,112],"m":"jmp","oa":28816,"o":"room8_after_kill"},{"a":28142,"l":"unused_6dee","c":"Two bytes $00 inside room8_shaft_ride; not referenced.","t":"byte","b":[0,0]},{"a":28144,"l":"room8_shaft_ride_repeat","c":"JMP $6DA5: next step of room8_shaft_ride. Followed at $6DF3 by the end of room3_sprite_test: $D8 = $40 goes to $4475 (end of the game), otherwise JMP $491D (room 3's loop).","t":"code","b":[76,165,109],"m":"jmp","oa":28069,"o":"j_6DA5","x":[28129]},{"a":28147,"l":"j_6DF3","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[28055]},{"a":28149,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":28151,"t":"code","b":[208,3],"m":"bne","oa":28156,"o":"b_6DFC"},{"a":28153,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":28156,"l":"b_6DFC","t":"code","b":[76,29,73],"m":"jmp","oa":18717,"o":"room3_loop","x":[28151]},{"a":28159,"l":"unused_6dff","c":"A lone RTS ($60) after JMP $491D, reached by nothing found.","t":"byte","b":[96]},{"a":28160,"l":"room1_start_of_play","c":"Start of play (JMP $6E00 from $089E, after the title): draws room 1 of stage 1. $D022 = $0C; $56B0 with $FD = $6E (room-change prologue); $5678, the new-game reset ($4ACD = $4ACE = 0, room flags, reset_rooms_6_8). Then the colour matrix at $0400: grey $CC fills with $A721 ($0451, 31 by 6; it also puts sprite 7 at $94,$94 with pointer $3B and colour $0A), $56ED twice ($0569, $0681) and room1_fill_right_columns; the status rows 23-24 coloured $1C; the carried-item cells $07BE/$07E6 hidden ($CC); $07B9/$07BA/$07E1/$07E2 (the lives marks) $BC; the score cells $07A5-$07AA/$07CD-$07D2 and the ROOM and STAGE digit cells $07B0/$07D8 and $07B7/$07DF blue $6C; $07BC/$07E4/$07E3 hidden; then $81E1 ($06AB, 5 by 5, $CC), $A737 ($04DC, 2 by 3, colour $DC) and $56ED ($05F0, 2 by 3, $CC). Objects drawn with $A7F8 at column 26, row 21, $A7D9 at 24,19, $A7F8 at 24,21 and $A9D2 at 23,10, more fills ($045A-$045C $BC, $05E2/$060A $7C, $046A and $0694 in $20, $04F3-$04F5/$051B-$051D in $0C, $04CC = $7C, $04CD = $2C, rows of $CC at $057F-$061F and $0647, $0703/$072B $CC). $BD5B; $100C, $1015, $1016, $1018, $1019 cleared. Continues at $17DF, which finishes room 1, installs the IRQ $1C00 and enters room 1's loop through $A817 (simulated).","t":"code","b":[169,12],"m":"lda","o":"#$0C","x":[2206]},{"a":28162,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":28165,"t":"code","b":[169,110],"m":"lda","o":"#$6E"},{"a":28167,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28169,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":28172,"t":"code","b":[32,120,86],"m":"jsr","oa":22136,"o":"reset_room_objects"},{"a":28175,"t":"code","b":[169,81],"m":"lda","o":"#$51"},{"a":28177,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28179,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28181,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28183,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28185,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":28187,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":28189,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28191,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":28193,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":28195,"t":"code","b":[32,33,167],"m":"jsr","oa":42785,"o":"colour_box_and_sprite7"},{"a":28198,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":28200,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28202,"t":"code","b":[169,105],"m":"lda","o":"#$69"},{"a":28204,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28206,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":28209,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":28211,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28213,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":28215,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28217,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":28220,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28222,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":28224,"t":"code","b":[169,20],"m":"lda","o":"#$14"},{"a":28226,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28228,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":28230,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":28232,"t":"code","b":[169,113],"m":"lda","o":"#$71"},{"a":28234,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28236,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28238,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28240,"t":"code","b":[32,181,111],"m":"jsr","oa":28597,"o":"room1_fill_right_columns"},{"a":28243,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28245,"l":"b_6E55","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[28256]},{"a":28247,"t":"code","b":[157,152,7],"m":"sta","oa":1944,"o":"f_0798,x"},{"a":28250,"t":"code","b":[157,192,7],"m":"sta","oa":1984,"o":"f_07C0,x"},{"a":28253,"t":"code","b":[232],"m":"inx"},{"a":28254,"t":"code","b":[224,40],"m":"cpx","o":"#$28"},{"a":28256,"t":"code","b":[208,243],"m":"bne","oa":28245,"o":"b_6E55"},{"a":28258,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28260,"t":"code","b":[141,190,7],"m":"sta","oa":1982,"o":"carried_item_cell_top"},{"a":28263,"t":"code","b":[141,230,7],"m":"sta","oa":2022,"o":"carried_item_cell_bottom"},{"a":28266,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28268,"l":"b_6E6C","t":"code","b":[169,188],"m":"lda","o":"#$BC","x":[28279]},{"a":28270,"t":"code","b":[157,185,7],"m":"sta","oa":1977,"o":"lives_mark_1,x"},{"a":28273,"t":"code","b":[157,225,7],"m":"sta","oa":2017,"o":"lives_mark_3,x"},{"a":28276,"t":"code","b":[232],"m":"inx"},{"a":28277,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":28279,"t":"code","b":[208,243],"m":"bne","oa":28268,"o":"b_6E6C"},{"a":28281,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28283,"l":"b_6E7B","t":"code","b":[169,108],"m":"lda","o":"#$6C","x":[28294]},{"a":28285,"t":"code","b":[157,165,7],"m":"sta","oa":1957,"o":"f_07A5,x"},{"a":28288,"t":"code","b":[157,205,7],"m":"sta","oa":1997,"o":"f_07CD,x"},{"a":28291,"t":"code","b":[232],"m":"inx"},{"a":28292,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":28294,"t":"code","b":[208,243],"m":"bne","oa":28283,"o":"b_6E7B"},{"a":28296,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":28298,"t":"code","b":[141,176,7],"m":"sta","oa":1968,"o":"a_07B0"},{"a":28301,"t":"code","b":[141,216,7],"m":"sta","oa":2008,"o":"a_07D8"},{"a":28304,"t":"code","b":[141,183,7],"m":"sta","oa":1975,"o":"a_07B7"},{"a":28307,"t":"code","b":[141,223,7],"m":"sta","oa":2015,"o":"a_07DF"},{"a":28310,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28312,"t":"code","b":[141,188,7],"m":"sta","oa":1980,"o":"f_07BC"},{"a":28315,"t":"code","b":[141,228,7],"m":"sta","oa":2020,"o":"f_07E4"},{"a":28318,"t":"code","b":[141,227,7],"m":"sta","oa":2019,"o":"f_07E3"},{"a":28321,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28323,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":28325,"t":"code","b":[169,171],"m":"lda","o":"#$AB"},{"a":28327,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28329,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":28331,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28333,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":28335,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":28337,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28339,"t":"code","b":[32,225,129],"m":"jsr","oa":33249,"o":"hide_room_second_digit"},{"a":28342,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":28344,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":28346,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":28348,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28350,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":28352,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":28354,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":28356,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28358,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28360,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28362,"t":"code","b":[32,55,167],"m":"jsr","oa":42807,"o":"colour_box_then_fb_cc"},{"a":28365,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":28367,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28369,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":28371,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28373,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":28375,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":28377,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":28379,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28381,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":28384,"t":"code","b":[162,26],"m":"ldx","o":"#$1A"},{"a":28386,"t":"code","b":[160,21],"m":"ldy","o":"#$15"},{"a":28388,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":28391,"t":"code","b":[234],"m":"nop"},{"a":28392,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":28394,"t":"code","b":[141,226,5],"m":"sta","oa":1506,"o":"a_05E2"},{"a":28397,"t":"code","b":[141,10,6],"m":"sta","oa":1546,"o":"a_060A"},{"a":28400,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":28402,"l":"b_6EF2","t":"code","b":[169,188],"m":"lda","o":"#$BC","x":[28408]},{"a":28404,"t":"code","b":[157,89,4],"m":"sta","oa":1113,"o":"f_0459,x"},{"a":28407,"t":"code","b":[202],"m":"dex"},{"a":28408,"t":"code","b":[208,248],"m":"bne","oa":28402,"o":"b_6EF2"},{"a":28410,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":28412,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":28414,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":28416,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":28418,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":28420,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28422,"t":"code","b":[169,106],"m":"lda","o":"#$6A"},{"a":28424,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28426,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28428,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28430,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":28433,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":28435,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28437,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":28439,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28441,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":28444,"t":"code","b":[32,91,189],"m":"jsr","oa":48475,"o":"clear_object_flags"},{"a":28447,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":28449,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":28452,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":28454,"t":"code","b":[141,21,16],"m":"sta","oa":4117,"o":"points_flag"},{"a":28457,"t":"code","b":[141,22,16],"m":"sta","oa":4118,"o":"points_flash_count"},{"a":28460,"t":"code","b":[141,24,16],"m":"sta","oa":4120,"o":"title_mode_flag"},{"a":28463,"t":"code","b":[141,25,16],"m":"sta","oa":4121,"o":"f1_toggle"},{"a":28466,"t":"code","b":[234],"m":"nop"},{"a":28467,"t":"code","b":[234],"m":"nop"},{"a":28468,"t":"code","b":[234],"m":"nop"},{"a":28469,"t":"code","b":[234],"m":"nop"},{"a":28470,"t":"code","b":[234],"m":"nop"},{"a":28471,"t":"code","b":[234],"m":"nop"},{"a":28472,"t":"code","b":[234],"m":"nop"},{"a":28473,"t":"code","b":[234],"m":"nop"},{"a":28474,"t":"code","b":[234],"m":"nop"},{"a":28475,"t":"code","b":[234],"m":"nop"},{"a":28476,"t":"code","b":[234],"m":"nop"},{"a":28477,"t":"code","b":[234],"m":"nop"},{"a":28478,"t":"code","b":[234],"m":"nop"},{"a":28479,"t":"code","b":[234],"m":"nop"},{"a":28480,"t":"code","b":[234],"m":"nop"},{"a":28481,"t":"code","b":[234],"m":"nop"},{"a":28482,"t":"code","b":[234],"m":"nop"},{"a":28483,"t":"code","b":[234],"m":"nop"},{"a":28484,"t":"code","b":[234],"m":"nop"},{"a":28485,"t":"code","b":[234],"m":"nop"},{"a":28486,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28488,"l":"b_6F48","t":"code","b":[169,12],"m":"lda","o":"#$0C","x":[28499]},{"a":28490,"t":"code","b":[157,243,4],"m":"sta","oa":1267,"o":"f_04F3,x"},{"a":28493,"t":"code","b":[157,27,5],"m":"sta","oa":1307,"o":"a_051B,x"},{"a":28496,"t":"code","b":[232],"m":"inx"},{"a":28497,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":28499,"t":"code","b":[208,243],"m":"bne","oa":28488,"o":"b_6F48"},{"a":28501,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":28503,"t":"code","b":[141,204,4],"m":"sta","oa":1228,"o":"a_04CC"},{"a":28506,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":28508,"t":"code","b":[141,205,4],"m":"sta","oa":1229,"o":"a_04CD"},{"a":28511,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28513,"l":"b_6F61","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[28536]},{"a":28515,"t":"code","b":[157,127,5],"m":"sta","oa":1407,"o":"f_057F,x"},{"a":28518,"t":"code","b":[157,71,6],"m":"sta","oa":1607,"o":"f_0647,x"},{"a":28521,"t":"code","b":[157,167,5],"m":"sta","oa":1447,"o":"f_05A7,x"},{"a":28524,"t":"code","b":[157,207,5],"m":"sta","oa":1487,"o":"f_05CF,x"},{"a":28527,"t":"code","b":[157,247,5],"m":"sta","oa":1527,"o":"f_05F7,x"},{"a":28530,"t":"code","b":[157,31,6],"m":"sta","oa":1567,"o":"f_061F,x"},{"a":28533,"t":"code","b":[232],"m":"inx"},{"a":28534,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":28536,"t":"code","b":[208,231],"m":"bne","oa":28513,"o":"b_6F61"},{"a":28538,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":28540,"t":"code","b":[160,19],"m":"ldy","o":"#$13"},{"a":28542,"t":"code","b":[32,217,167],"m":"jsr","oa":42969,"o":"draw_round_object"},{"a":28545,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":28547,"t":"code","b":[160,21],"m":"ldy","o":"#$15"},{"a":28549,"t":"code","b":[32,248,167],"m":"jsr","oa":43000,"o":"draw_oval_object"},{"a":28552,"t":"code","b":[162,23],"m":"ldx","o":"#$17"},{"a":28554,"t":"code","b":[160,10],"m":"ldy","o":"#$0A"},{"a":28556,"t":"code","b":[32,210,169],"m":"jsr","oa":43474,"o":"draw_painting"},{"a":28559,"t":"code","b":[234],"m":"nop"},{"a":28560,"t":"code","b":[234],"m":"nop"},{"a":28561,"t":"code","b":[234],"m":"nop"},{"a":28562,"t":"code","b":[234],"m":"nop"},{"a":28563,"t":"code","b":[234],"m":"nop"},{"a":28564,"t":"code","b":[234],"m":"nop"},{"a":28565,"t":"code","b":[234],"m":"nop"},{"a":28566,"t":"code","b":[234],"m":"nop"},{"a":28567,"t":"code","b":[234],"m":"nop"},{"a":28568,"t":"code","b":[234],"m":"nop"},{"a":28569,"t":"code","b":[234],"m":"nop"},{"a":28570,"t":"code","b":[234],"m":"nop"},{"a":28571,"t":"code","b":[234],"m":"nop"},{"a":28572,"t":"code","b":[234],"m":"nop"},{"a":28573,"t":"code","b":[234],"m":"nop"},{"a":28574,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28576,"l":"b_6FA0","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[28584]},{"a":28578,"t":"code","b":[157,127,5],"m":"sta","oa":1407,"o":"f_057F,x"},{"a":28581,"t":"code","b":[232],"m":"inx"},{"a":28582,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":28584,"t":"code","b":[208,246],"m":"bne","oa":28576,"o":"b_6FA0"},{"a":28586,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28588,"t":"code","b":[141,3,7],"m":"sta","oa":1795,"o":"a_0703"},{"a":28591,"t":"code","b":[141,43,7],"m":"sta","oa":1835,"o":"a_072B"},{"a":28594,"t":"code","b":[76,223,23],"m":"jmp","oa":6111,"o":"room1_setup"},{"a":28597,"l":"room1_fill_right_columns","c":"Three grey colour fills for room 1 (called from $6E50): the caller's block (6 cells by 20 rows at $0471), then single columns of 19 cells at $049A and $049D, all $CC.","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[28240]},{"a":28600,"t":"code","b":[169,154],"m":"lda","o":"#$9A"},{"a":28602,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28604,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28606,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28608,"t":"code","b":[169,19],"m":"lda","o":"#$13"},{"a":28610,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28612,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":28614,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":28616,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":28618,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":28620,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":28623,"t":"code","b":[169,157],"m":"lda","o":"#$9D"},{"a":28625,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":28627,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28629,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":28631,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":28634,"t":"code","b":[96],"m":"rts"},{"a":28635,"l":"room1_timer_checks","c":"Called from room 1's loop ($4341, $4456, $4460): if $F9 = $20 and $F8 = $F0, runs $44E0 (a one-shot: it writes RTS over its own first byte); if $F7 = $20, JMP $44B9 ($45D5, then $4722) without returning; otherwise $08A1 (which calls $1D33 when $D015 >= $30). A copy of $449E-$44B3 with a different last jump ($44B6 goes to $45F5). What $F7-$F9 count in room 1 is not established here ($F8 is bumped by room 1's IRQ at $1C90).","t":"code","b":[165,249],"m":"lda","oa":249,"o":"frame_tick_hi","x":[17217,17494,17504]},{"a":28637,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":28639,"t":"code","b":[208,9],"m":"bne","oa":28650,"o":"b_6FEA"},{"a":28641,"t":"code","b":[165,248],"m":"lda","oa":248,"o":"frame_tick"},{"a":28643,"t":"code","b":[201,240],"m":"cmp","o":"#$F0"},{"a":28645,"t":"code","b":[208,3],"m":"bne","oa":28650,"o":"b_6FEA"},{"a":28647,"t":"code","b":[32,224,68],"m":"jsr","oa":17632,"o":"timer_oneshot_44e0"},{"a":28650,"l":"b_6FEA","t":"code","b":[165,247],"m":"lda","oa":247,"o":"stage_flag_f7","x":[28639,28645]},{"a":28652,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":28654,"t":"code","b":[208,3],"m":"bne","oa":28659,"o":"b_6FF3"},{"a":28656,"t":"code","b":[76,185,68],"m":"jmp","oa":17593,"o":"room1_exit_by_f7"},{"a":28659,"l":"b_6FF3","t":"code","b":[76,252,111],"m":"jmp","oa":28668,"o":"check_sprites_08a1","x":[28654]},{"a":28662,"l":"unused_copy_44b9","c":"6 bytes not reached by anything found: JSR $45D5 / JMP $4722, the same two instructions as $44B9.","t":"byte","b":[32,213,69,76,34,71]},{"a":28668,"l":"check_sprites_08a1","c":"JSR $08A1 / RTS: the default end of room1_timer_checks ($08A1 calls $1D33 when $D015 >= $30).","t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"floor_check_if_hat_on","x":[28659]},{"a":28671,"t":"code","b":[96],"m":"rts"},{"a":28672,"l":"irq_flip_guardian_frames","c":"Shared IRQ tail that animates sprites 0 and 1 (guardians): when counter $64F0 has reached 8, sprite 0's pointer $07F8 is swapped between frames $25 and $35; when $64F1 has reached 8, sprite 1's pointer $07F9 likewise. Both counters are cleared only on the paths through $7036 (a flip of sprite 0 to $25, or any flip of sprite 1), so the timing is irregular. Ends JMP $8215 (the common IRQ tail, JMP $BF30). Reached by JMP, not JSR, from the IRQ handlers of room 1 ($1C92), room 2 (code at $5133-$51EF), room 5 ($59F0, $5A49) and room 6 ($6111-$61BD); the counters are stepped by the handlers: $64F0 at $510A, $596D, $608A, $A73F and $7057, $64F1 at $1C03, $510D, $596A, $608D and $7057 (room 8's $7057 bumps both, but room 8's handler never reaches $7000).","t":"code","b":[173,240,100],"m":"lda","oa":25840,"o":"sprite0_anim_count","x":[7314,7321,20787,20818,20851,20868,20892,20911,20931,20949,20975,23024,23113,24849,24919,25021]},{"a":28675,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":28677,"t":"code","b":[144,20],"m":"bcc","oa":28699,"o":"b_701B"},{"a":28679,"t":"code","b":[173,248,7],"m":"lda","oa":2040,"o":"spr0_pointer"},{"a":28682,"t":"code","b":[201,37],"m":"cmp","o":"#$25"},{"a":28684,"t":"code","b":[240,8],"m":"beq","oa":28694,"o":"b_7016"},{"a":28686,"t":"code","b":[169,37],"m":"lda","o":"#$25"},{"a":28688,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":28691,"t":"code","b":[76,54,112],"m":"jmp","oa":28726,"o":"j_7036"},{"a":28694,"l":"b_7016","t":"code","b":[169,53],"m":"lda","o":"#$35","x":[28684]},{"a":28696,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":28699,"l":"b_701B","t":"code","b":[173,241,100],"m":"lda","oa":25841,"o":"sprite1_anim_count","x":[28677]},{"a":28702,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":28704,"t":"code","b":[144,28],"m":"bcc","oa":28734,"o":"b_703E"},{"a":28706,"t":"code","b":[173,249,7],"m":"lda","oa":2041,"o":"spr1_pointer"},{"a":28709,"t":"code","b":[201,37],"m":"cmp","o":"#$25"},{"a":28711,"t":"code","b":[240,8],"m":"beq","oa":28721,"o":"b_7031"},{"a":28713,"t":"code","b":[169,37],"m":"lda","o":"#$25"},{"a":28715,"t":"code","b":[141,249,7],"m":"sta","oa":2041,"o":"spr1_pointer"},{"a":28718,"t":"code","b":[76,54,112],"m":"jmp","oa":28726,"o":"j_7036"},{"a":28721,"l":"b_7031","t":"code","b":[169,53],"m":"lda","o":"#$35","x":[28711]},{"a":28723,"t":"code","b":[141,249,7],"m":"sta","oa":2041,"o":"spr1_pointer"},{"a":28726,"l":"j_7036","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[28691,28718]},{"a":28728,"t":"code","b":[141,241,100],"m":"sta","oa":25841,"o":"sprite1_anim_count"},{"a":28731,"t":"code","b":[141,240,100],"m":"sta","oa":25840,"o":"sprite0_anim_count"},{"a":28734,"l":"b_703E","t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms","x":[28704]},{"a":28737,"l":"room6_set_entry_38","c":"Room 6's ladder, top exit: jumped to from $6538 in room6_ladder when Mr Hat climbs above Y $28. Sets the entry code $4ACD (which side the next room places Mr Hat on) to $38, calls $653B (a bare RTS) and returns to room6_ladder's caller, room6_position_rules; room6_exit_check ($6336) then takes code $38 to room 2 ($4D80).","t":"code","b":[169,56],"m":"lda","o":"#$38","x":[25912]},{"a":28739,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":28742,"t":"code","b":[32,59,101],"m":"jsr","oa":25915,"o":"r_653B"},{"a":28745,"t":"code","b":[96],"m":"rts"},{"a":28746,"t":"gap","n":13},{"a":28746,"t":"note","c":"Unused: 13 zero bytes.","note":"outside the tracked image"},{"a":28759,"l":"room8_tick_guardian_counters","c":"Room 8's IRQ ($683D) calls this first: INC $64F0 and $64F1, the frame counters that irq_flip_guardian_frames ($7000) tests. Room 8's handler leaves through $8215 and never reaches $7000, so in room 8 nothing tests them.","t":"code","b":[238,240,100],"m":"inc","oa":25840,"o":"sprite0_anim_count","x":[26685]},{"a":28762,"t":"code","b":[238,241,100],"m":"inc","oa":25841,"o":"sprite1_anim_count"},{"a":28765,"t":"code","b":[96],"m":"rts"},{"a":28766,"l":"reset_room_state_new_game","c":"New-game reset of values that the rooms' code patches into itself: $66E1 = $7C, $D006 (sprite 3 X) = $FA, $1FBB = $AD, $4AC9 (ladder delay count) = $0C, $1E08 = $FA, $71C4 and $7947 = $E0 (room 9's two door colours, operands of LDA # in its setup), $BB = 0 (room 9 upper-door state), $73CE = $0C (room 9 treasure colour operand), then JSR $92C0 for more of the same ($73D3, the in-play tune players' pointer operands $8A28/$8A2E/$8A34 and $8C58/$8C5E/$8C64, room 11's block colour $8503, the BRK vector $0316/$0317, $D021 and $01). Called from $61FC at the end of the chain $6E00 -> $5678 -> $61DA that starts a game.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[25084]},{"a":28768,"t":"code","b":[141,225,102],"m":"sta","oa":26337,"o":"a_66E1"},{"a":28771,"t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":28773,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":28776,"t":"code","b":[169,173],"m":"lda","o":"#$AD"},{"a":28778,"t":"code","b":[141,187,31],"m":"sta","oa":8123,"o":"lift_once_check"},{"a":28781,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":28783,"t":"code","b":[141,201,74],"m":"sta","oa":19145,"o":"ladder_delay_count"},{"a":28786,"t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":28788,"t":"code","b":[141,8,30],"m":"sta","oa":7688,"o":"var_1e08"},{"a":28791,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":28793,"t":"code","b":[141,196,113],"m":"sta","oa":29124,"o":"room9_upper_door_colour_op"},{"a":28796,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":28798,"t":"code","b":[133,187],"m":"sta","oa":187,"o":"flag_obj_00bb"},{"a":28800,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":28802,"t":"code","b":[141,71,121],"m":"sta","oa":31047,"o":"room9_lower_door_colour_op"},{"a":28805,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":28807,"t":"code","b":[141,206,115],"m":"sta","oa":29646,"o":"room9_treasure_colour_op_a"},{"a":28810,"t":"code","b":[32,192,146],"m":"jsr","oa":37568,"o":"reset_patched_bytes"},{"a":28813,"t":"code","b":[96],"m":"rts"},{"a":28814,"t":"gap","n":2},{"a":28814,"t":"note","c":"Unused: 2 zero bytes after reset_room_state_new_game.","note":"outside the tracked image"},{"a":28816,"l":"room8_after_kill","c":"Room 8, jumped to from $6DEB after a guardian touch has killed Mr Hat ($55F5) in the loop at $6DA0: clears the collision flag $4ACE and re-enters room 8's main loop through $A82F (-> $6A20).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[28139]},{"a":28818,"t":"code","b":[141,206,74],"m":"sta","oa":19150,"o":"guardian_touch_flag"},{"a":28821,"t":"code","b":[76,47,168],"m":"jmp","oa":43055,"o":"reenter_loop_6a20"},{"a":28824,"t":"gap","n":8},{"a":28824,"t":"note","c":"Unused: 8 zero bytes after room8_after_kill.","note":"outside the tracked image"},{"a":28832,"l":"room8_take_key","c":"Room 8, called from $6D84 once the room's key has been picked up (cells $04A4/$04CC cleared and 2,000 points at $6D67-$6D72): puts the key mark in the status panel (screen cells $07BE and $07E6, column 38 of rows 23-24, colour $7C) and sets $F5 = $AF, the key held, which room 9's lower door tests at $796F.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[28036]},{"a":28834,"t":"code","b":[141,190,7],"m":"sta","oa":1982,"o":"carried_item_cell_top"},{"a":28837,"t":"code","b":[141,230,7],"m":"sta","oa":2022,"o":"carried_item_cell_bottom"},{"a":28840,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":28842,"t":"code","b":[133,245],"m":"sta","oa":245,"o":"room_var_f5"},{"a":28844,"t":"code","b":[96],"m":"rts"},{"a":28845,"t":"gap","n":3},{"a":28845,"t":"note","c":"Unused: 3 zero bytes after room8_take_key.","note":"outside the tracked image"},{"a":28848,"l":"room8_upper_floor_colour","c":"Room 8, jumped to from $6D87 at the end of room8_position_rules (so its RTS ends that routine): only when Mr Hat is on the upper floor (Y $D009 = $5C) and his X ($D008, low byte) is in $40-$77 or $AC-$DF, it sets his sprite colour $D02B to $0B (through $65A7 in the bands $48-$6F and $B0-$DB, which also bumps the counter $64ED and writes $D022). Mr Hat's colour is $0B already elsewhere, so the visible effect is nil; its purpose is unknown.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[28039]},{"a":28851,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":28853,"t":"code","b":[208,14],"m":"bne","oa":28869,"o":"r_70C5"},{"a":28855,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":28858,"t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":28860,"t":"code","b":[144,8],"m":"bcc","oa":28870,"o":"b_70C6"},{"a":28862,"t":"code","b":[201,112],"m":"cmp","o":"#$70"},{"a":28864,"t":"code","b":[176,4],"m":"bcs","oa":28870,"o":"b_70C6"},{"a":28866,"t":"code","b":[32,167,101],"m":"jsr","oa":26023,"o":"hat_colour_reset"},{"a":28869,"l":"r_70C5","t":"code","b":[96],"m":"rts","x":[28853]},{"a":28870,"l":"b_70C6","t":"code","b":[201,176],"m":"cmp","o":"#$B0","x":[28860,28864]},{"a":28872,"t":"code","b":[144,8],"m":"bcc","oa":28882,"o":"b_70D2"},{"a":28874,"t":"code","b":[201,220],"m":"cmp","o":"#$DC"},{"a":28876,"t":"code","b":[176,4],"m":"bcs","oa":28882,"o":"b_70D2"},{"a":28878,"t":"code","b":[32,167,101],"m":"jsr","oa":26023,"o":"hat_colour_reset"},{"a":28881,"t":"code","b":[96],"m":"rts"},{"a":28882,"l":"b_70D2","t":"code","b":[201,64],"m":"cmp","o":"#$40","x":[28872,28876]},{"a":28884,"t":"code","b":[144,13],"m":"bcc","oa":28899,"o":"b_70E3"},{"a":28886,"t":"code","b":[201,120],"m":"cmp","o":"#$78"},{"a":28888,"t":"code","b":[176,9],"m":"bcs","oa":28899,"o":"b_70E3"},{"a":28890,"l":"j_70DA","t":"code","b":[169,11],"m":"lda","o":"#$0B","x":[28907]},{"a":28892,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":28895,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":28898,"l":"r_70E2","t":"code","b":[96],"m":"rts","x":[28901,28905]},{"a":28899,"l":"b_70E3","t":"code","b":[201,172],"m":"cmp","o":"#$AC","x":[28884,28888]},{"a":28901,"t":"code","b":[144,251],"m":"bcc","oa":28898,"o":"r_70E2"},{"a":28903,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":28905,"t":"code","b":[176,247],"m":"bcs","oa":28898,"o":"r_70E2"},{"a":28907,"t":"code","b":[76,218,112],"m":"jmp","oa":28890,"o":"j_70DA"},{"a":28910,"l":"room8_respawn_hat","c":"Room 8's main loop ($6A29) calls this first: when the sprite-enable register $D015 is below $90 (in this room: Mr Hat's sprite 4 switched off by a death, given the other sprites it uses), it puts him back at the upper floor's right end: frame $2F (facing left), Y = $5C, X = $138 (high bit set in $D010), colour $0B, sprite 4 enabled.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[27177]},{"a":28913,"t":"code","b":[201,144],"m":"cmp","o":"#$90"},{"a":28915,"t":"code","b":[144,1],"m":"bcc","oa":28918,"o":"b_70F6"},{"a":28917,"t":"code","b":[96],"m":"rts"},{"a":28918,"l":"b_70F6","t":"code","b":[169,11],"m":"lda","o":"#$0B","x":[28915]},{"a":28920,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":28923,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":28925,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":28928,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":28930,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":28933,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":28936,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":28938,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":28941,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":28943,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":28946,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":28949,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":28951,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":28954,"t":"code","b":[96],"m":"rts"},{"a":28955,"l":"room8_setup_tail","c":"Room 8 set-up, jumped to from $683A after its IRQ ($683D) is installed: $1E08 = $CA (no reader of $1E08 found), $4AC9 = $0C (outer count of the ladder-step delay at $4AC0, an operand of CPX #), then room8_choose_loop.","t":"code","b":[169,202],"m":"lda","o":"#$CA","x":[26682]},{"a":28957,"t":"code","b":[141,8,30],"m":"sta","oa":7688,"o":"var_1e08"},{"a":28960,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":28962,"t":"code","b":[141,201,74],"m":"sta","oa":19145,"o":"ladder_delay_count"},{"a":28965,"t":"code","b":[76,48,113],"m":"jmp","oa":28976,"o":"room8_choose_loop"},{"a":28968,"l":"room6_setup_tail","c":"Room 6 set-up, jumped to from $6087: $4AC9 = $0C (ladder-step delay count) and JMP $A829, which enters room 6's main loop $6220.","t":"code","b":[169,12],"m":"lda","o":"#$0C","x":[24711]},{"a":28970,"t":"code","b":[141,201,74],"m":"sta","oa":19145,"o":"ladder_delay_count"},{"a":28973,"t":"code","b":[76,41,168],"m":"jmp","oa":43049,"o":"reenter_loop_6220"},{"a":28976,"l":"room8_choose_loop","c":"Room 8: enters the main loop at $6DA0 when $64F7 = $AF (set at $67FA; $81E1 clears it), otherwise the normal one through $A82F (-> $6A20).","t":"code","b":[173,247,100],"m":"lda","oa":25847,"o":"shaft_arrival_flag","x":[28965]},{"a":28979,"t":"code","b":[201,175],"m":"cmp","o":"#$AF"},{"a":28981,"t":"code","b":[240,3],"m":"beq","oa":28986,"o":"b_713A"},{"a":28983,"t":"code","b":[76,47,168],"m":"jmp","oa":43055,"o":"reenter_loop_6a20"},{"a":28986,"l":"b_713A","t":"code","b":[76,160,109],"m":"jmp","oa":28064,"o":"room8_shaft_ride","x":[28981]},{"a":28989,"t":"gap","n":3},{"a":28989,"t":"note","c":"Unused: 3 zero bytes after room8_choose_loop.","note":"outside the tracked image"},{"a":28992,"l":"room9_setup","c":"Room 9 (stage 3) set-up, entered by JMP from room 5 ($5B8A, entry code $30: down the ladder at the top right), room 8 ($6B44/$6B4B, codes $50/$58: from the left on the upper/lower floor) and room 11 ($8962, code $78: up the ladder from below). Draws the walls (layout $98 through $56B0 and $A573), fills the lower corridor colours (rows 13-18, $0608) and the upper corridor ($0450, rows 2-7) with $CC (grey, the lit room) and puts the STAGE digit 3 ($813E -> $8114); sprite 0's Y = $5F ($81C1); colours and bitmaps of the two ladders (cyan $3C, columns 34-36 rows 0-7 and columns 14-16 rows 17-22, bitmap from $4802 via $5713); sets up the two doors ($0468, $0612, colour $E0) but without the fill call (INC $D022 stands where it would be, so the door cells stay $CC); the door bitmaps from $1151/$1161 at column 10 rows 15-16 and column 24 rows 4-5; two paintings ($A9D6 at cells 15,3 and 20,3), the plant ($AB70, $AB8F at cells 8,15 and 8,18); room number $100C = 9; continues at $7325.","t":"code","b":[169,152],"m":"lda","o":"#$98","x":[23434,27460,27467,35170]},{"a":28994,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":28996,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":28999,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29001,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29003,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29005,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29007,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":29009,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":29011,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":29013,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29015,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29017,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29019,"t":"code","b":[32,62,129],"m":"jsr","oa":33086,"o":"fill_then_stage3"},{"a":29022,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":29024,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29026,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29028,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29030,"t":"code","b":[32,193,129],"m":"jsr","oa":33217,"o":"fill_sprite0_y5f"},{"a":29033,"t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":29035,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29037,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29039,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29041,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":29043,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":29045,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29047,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29049,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29051,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29053,"t":"code","b":[32,225,129],"m":"jsr","oa":33249,"o":"hide_room_second_digit"},{"a":29056,"t":"code","b":[169,182],"m":"lda","o":"#$B6"},{"a":29058,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29060,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29062,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29064,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29066,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29068,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":29071,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":29073,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29075,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":29077,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29079,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":29081,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29083,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29085,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29087,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":29089,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29092,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":29094,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":29097,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29100,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":29102,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29104,"t":"code","b":[169,53],"m":"lda","o":"#$35"},{"a":29106,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29108,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29110,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29112,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29115,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":29117,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29119,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29121,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29123,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":29124,"t":"note","l":"room9_upper_door_colour_op","c":"Operand of LDA #$E0 at $71C3 in room9_setup: the upper door's colour ($E0 shut), patched to $CC when the door is opened ($7940) and back to $E0 for a new game ($7077). The fill call that would use it is gone, so its value never reaches the screen.","note":"inside the item at $71C3","x":[28793,31042]},{"a":29125,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":29127,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":29129,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29131,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29133,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29135,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":29138,"t":"code","b":[169,18],"m":"lda","o":"#$12"},{"a":29140,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29142,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29144,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29146,"t":"code","b":[32,70,121],"m":"jsr","oa":31046,"o":"room9_lower_door_colour"},{"a":29149,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":29151,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29153,"t":"code","b":[169,51],"m":"lda","o":"#$33"},{"a":29155,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29157,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":29159,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29161,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29163,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29165,"t":"code","b":[169,81],"m":"lda","o":"#$51"},{"a":29167,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29170,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":29172,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":29175,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29178,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":29180,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29182,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":29184,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29186,"t":"code","b":[169,97],"m":"lda","o":"#$61"},{"a":29188,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29191,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":29193,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":29196,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29199,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":29201,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29203,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":29205,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29207,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29210,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":29212,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29214,"t":"code","b":[169,37],"m":"lda","o":"#$25"},{"a":29216,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29218,"t":"code","b":[169,81],"m":"lda","o":"#$51"},{"a":29220,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29223,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29226,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":29228,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":29230,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":29232,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":29234,"t":"code","b":[32,214,169],"m":"jsr","oa":43478,"o":"draw_painting_27"},{"a":29237,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":29239,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":29241,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":29243,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":29245,"t":"code","b":[32,214,169],"m":"jsr","oa":43478,"o":"draw_painting_27"},{"a":29248,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":29250,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":29252,"t":"code","b":[32,112,171],"m":"jsr","oa":43888,"o":"draw_plant"},{"a":29255,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":29257,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":29259,"t":"code","b":[32,143,171],"m":"jsr","oa":43919,"o":"draw_pot"},{"a":29262,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":29264,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":29267,"t":"code","b":[234],"m":"nop"},{"a":29268,"t":"code","b":[234],"m":"nop"},{"a":29269,"t":"code","b":[234],"m":"nop"},{"a":29270,"t":"code","b":[234],"m":"nop"},{"a":29271,"t":"code","b":[234],"m":"nop"},{"a":29272,"t":"code","b":[234],"m":"nop"},{"a":29273,"t":"code","b":[234],"m":"nop"},{"a":29274,"t":"code","b":[234],"m":"nop"},{"a":29275,"t":"code","b":[234],"m":"nop"},{"a":29276,"t":"code","b":[234],"m":"nop"},{"a":29277,"t":"code","b":[234],"m":"nop"},{"a":29278,"t":"code","b":[234],"m":"nop"},{"a":29279,"t":"code","b":[234],"m":"nop"},{"a":29280,"t":"code","b":[234],"m":"nop"},{"a":29281,"t":"code","b":[234],"m":"nop"},{"a":29282,"t":"code","b":[76,37,115],"m":"jmp","oa":29477,"o":"room9_setup_part2"},{"a":29285,"l":"room9_tv_bitmap","c":"Room 9: a 6x4-cell hires bitmap, four strips of 48 bytes (6 cells x 8 bytes) copied by room9_setup_part2 ($7325, through $5713 with its source patched at $5718/$5719) to bitmap $3100, $3240, $3380 and $34C0 (cells 24-29 of rows 13-16, the lower corridor). Drawn, it is a framed screen full of noise on a stand: a television. Its colour cells are left at $CC (grey on grey), so in hires mode it would not show.","t":"byte","b":[0,0,0,0,0,15,15,15]},{"a":29293,"t":"byte","b":[0,0,0,0,0,255,255,255]},{"a":29301,"t":"byte","b":[0,0,0,0,0,255,255,255]},{"a":29309,"t":"byte","b":[0,0,0,0,0,255,255,255]},{"a":29317,"t":"byte","b":[0,0,0,0,0,255,255,255]},{"a":29325,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29333,"t":"byte","b":[15,15,15,15,15,15,15,15]},{"a":29341,"t":"byte","b":[170,33,50,65,48,15,2,37]},{"a":29349,"t":"byte","b":[57,66,33,50,234,15,190,64]},{"a":29357,"t":"byte","b":[144,56,10,161,95,64,108,85]},{"a":29365,"t":"byte","b":[44,0,44,0,44,0,44,0]},{"a":29373,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29381,"t":"byte","b":[15,15,15,15,15,15,15,15]},{"a":29389,"t":"byte","b":[170,37,108,120,0,13,77,85]},{"a":29397,"t":"byte","b":[174,1,50,164,103,138,52,103]},{"a":29405,"t":"byte","b":[155,5,74,204,213,194,22,6]},{"a":29413,"t":"byte","b":[0,102,102,0,23,44,23,0]},{"a":29421,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29429,"t":"byte","b":[15,0,255,0,0,0,0,0]},{"a":29437,"t":"byte","b":[255,240,255,0,0,0,0,0]},{"a":29445,"t":"byte","b":[255,0,255,0,0,0,0,0]},{"a":29453,"t":"byte","b":[255,0,255,0,0,0,0,0]},{"a":29461,"t":"byte","b":[255,240,255,0,0,0,0,0]},{"a":29469,"t":"byte","b":[0,0,240,0,0,0,0,0]},{"a":29477,"l":"room9_setup_part2","c":"Room 9 set-up, second part (from $7262): copies the television bitmap room9_tv_bitmap ($7265) to the lower corridor; colours the two ceiling lamps ($BC at row 2, columns 4-6 and 10-12) and copies their bitmap from $1119 to $22A0/$22D0; runs a two-pass loop of stores to $D022 with values $0C and $7C (operands $73CE and $73D3, patched to $CC once the treasure is taken, $7A07): stores that once coloured the treasure cells but now land on $D022, which shows nothing in hires mode; sets row 6-7, columns 0-2 ($04F0, $0518) to $CC and copies a 3-cell bitmap from $47A2/$47BA there ($2780, $28C0); then JMP $A862 (which turns the screen on when Mr Hat's frame is a climbing one, $32/$33) and on to room9_enter ($7440).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[29282]},{"a":29479,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29481,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":29483,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29485,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":29487,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29489,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29491,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29493,"t":"code","b":[169,101],"m":"lda","o":"#$65"},{"a":29495,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29498,"t":"code","b":[169,114],"m":"lda","o":"#$72"},{"a":29500,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":29503,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29506,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":29508,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29510,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":29512,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29514,"t":"code","b":[169,149],"m":"lda","o":"#$95"},{"a":29516,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29519,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29522,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":29524,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29526,"t":"code","b":[169,51],"m":"lda","o":"#$33"},{"a":29528,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29530,"t":"code","b":[169,197],"m":"lda","o":"#$C5"},{"a":29532,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29535,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29538,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":29540,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29542,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":29544,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29546,"t":"code","b":[169,245],"m":"lda","o":"#$F5"},{"a":29548,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29551,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29554,"t":"code","b":[234],"m":"nop"},{"a":29555,"t":"code","b":[234],"m":"nop"},{"a":29556,"t":"code","b":[234],"m":"nop"},{"a":29557,"t":"code","b":[234],"m":"nop"},{"a":29558,"t":"code","b":[234],"m":"nop"},{"a":29559,"t":"code","b":[234],"m":"nop"},{"a":29560,"t":"code","b":[234],"m":"nop"},{"a":29561,"t":"code","b":[234],"m":"nop"},{"a":29562,"t":"code","b":[234],"m":"nop"},{"a":29563,"t":"code","b":[234],"m":"nop"},{"a":29564,"t":"code","b":[234],"m":"nop"},{"a":29565,"t":"code","b":[234],"m":"nop"},{"a":29566,"t":"code","b":[234],"m":"nop"},{"a":29567,"t":"code","b":[234],"m":"nop"},{"a":29568,"t":"code","b":[234],"m":"nop"},{"a":29569,"t":"code","b":[234],"m":"nop"},{"a":29570,"t":"code","b":[234],"m":"nop"},{"a":29571,"t":"code","b":[234],"m":"nop"},{"a":29572,"t":"code","b":[234],"m":"nop"},{"a":29573,"t":"code","b":[234],"m":"nop"},{"a":29574,"t":"code","b":[234],"m":"nop"},{"a":29575,"t":"code","b":[234],"m":"nop"},{"a":29576,"t":"code","b":[234],"m":"nop"},{"a":29577,"t":"code","b":[169,188],"m":"lda","o":"#$BC"},{"a":29579,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":29581,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29583,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29585,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29587,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29589,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29591,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29593,"t":"code","b":[169,84],"m":"lda","o":"#$54"},{"a":29595,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29597,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":29600,"t":"code","b":[169,90],"m":"lda","o":"#$5A"},{"a":29602,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29604,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":29607,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":29609,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29611,"t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":29613,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29615,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":29617,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29619,"t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":29621,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29624,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":29626,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":29629,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29632,"t":"code","b":[169,208],"m":"lda","o":"#$D0"},{"a":29634,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29636,"t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":29638,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29640,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29643,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":29645,"l":"b_73CD","t":"code","b":[169,12],"m":"lda","o":"#$0C","x":[29661]},{"a":29646,"t":"note","l":"room9_treasure_colour_op_a","c":"Operand of LDA #$0C at $73CD in room9_setup_part2: the treasure's colour, patched to $CC once it is taken ($7A09), reset to $0C for a new game ($7087). The store it feeds goes to $D022, not to the treasure's cells.","note":"inside the item at $73CD","x":[28807,31241]},{"a":29647,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":29650,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":29651,"t":"note","l":"room9_treasure_colour_op_b","c":"Operand of LDA #$7C at $73D2 in room9_setup_part2: the treasure's second colour, patched to $CC once it is taken ($7A0C), reset to $7C by $92C2. Like the first, it is stored only to $D022.","note":"inside the item at $73D2","x":[31244,37570]},{"a":29652,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":29655,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":29658,"t":"code","b":[232],"m":"inx"},{"a":29659,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":29661,"t":"code","b":[208,238],"m":"bne","oa":29645,"o":"b_73CD"},{"a":29663,"t":"code","b":[234],"m":"nop"},{"a":29664,"t":"code","b":[234],"m":"nop"},{"a":29665,"t":"code","b":[234],"m":"nop"},{"a":29666,"t":"code","b":[234],"m":"nop"},{"a":29667,"t":"code","b":[234],"m":"nop"},{"a":29668,"t":"code","b":[234],"m":"nop"},{"a":29669,"t":"code","b":[234],"m":"nop"},{"a":29670,"t":"code","b":[234],"m":"nop"},{"a":29671,"t":"code","b":[234],"m":"nop"},{"a":29672,"t":"code","b":[234],"m":"nop"},{"a":29673,"t":"code","b":[234],"m":"nop"},{"a":29674,"t":"code","b":[234],"m":"nop"},{"a":29675,"t":"code","b":[234],"m":"nop"},{"a":29676,"t":"code","b":[234],"m":"nop"},{"a":29677,"t":"code","b":[234],"m":"nop"},{"a":29678,"t":"code","b":[234],"m":"nop"},{"a":29679,"t":"code","b":[234],"m":"nop"},{"a":29680,"t":"code","b":[234],"m":"nop"},{"a":29681,"t":"code","b":[234],"m":"nop"},{"a":29682,"t":"code","b":[234],"m":"nop"},{"a":29683,"t":"code","b":[234],"m":"nop"},{"a":29684,"t":"code","b":[234],"m":"nop"},{"a":29685,"t":"code","b":[234],"m":"nop"},{"a":29686,"t":"code","b":[234],"m":"nop"},{"a":29687,"t":"code","b":[234],"m":"nop"},{"a":29688,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":29690,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":29692,"l":"b_73FC","t":"code","b":[157,240,4],"m":"sta","oa":1264,"o":"f_04F0,x","x":[29701]},{"a":29695,"t":"code","b":[157,24,5],"m":"sta","oa":1304,"o":"f_0518,x"},{"a":29698,"t":"code","b":[232],"m":"inx"},{"a":29699,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":29701,"t":"code","b":[208,245],"m":"bne","oa":29692,"o":"b_73FC"},{"a":29703,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":29705,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29707,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":29709,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29711,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":29713,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29715,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29717,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29719,"t":"code","b":[169,162],"m":"lda","o":"#$A2"},{"a":29721,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29724,"t":"code","b":[169,71],"m":"lda","o":"#$47"},{"a":29726,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":29729,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29732,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":29734,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29736,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":29738,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29740,"t":"code","b":[169,186],"m":"lda","o":"#$BA"},{"a":29742,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":29745,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":29748,"t":"code","b":[76,98,168],"m":"jmp","oa":43106,"o":"display_toggle_if_frame_32"},{"a":29751,"t":"gap","n":6},{"a":29751,"t":"note","c":"Unused: 6 zero bytes between room 9's set-up parts.","note":"outside the tracked image"},{"a":29757,"l":"room9_skip_dark","c":"Room 9: the lights-on branch of room9_enter: JMP $74DA, skipping the black fill.","t":"code","b":[76,218,116],"m":"jmp","oa":29914,"o":"room9_place_sprites","x":[29764]},{"a":29760,"l":"room9_enter","c":"Room 9, every entry (from $A862, after room9_setup_part2): when $22 is not $40 (set at $5519 when room 2's candle at $04B7 is taken, cleared at $61E1 for a new game) the room is dark: lower and upper corridors filled with colour $00 (black on black, so the paintings, plant and lamps' surroundings vanish), sprite 0's Y = 0 ($81CD), the ladders recoloured $30 (cyan on black), the lamps $B0; one more fill set up at $0649 ($FB, 3x2) is replaced by INC $D022 (no effect). Falls through to room9_place_sprites.","t":"code","b":[165,34],"m":"lda","oa":34,"o":"flag_obj_0022","x":[43117,43123]},{"a":29762,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":29764,"t":"code","b":[240,247],"m":"beq","oa":29757,"o":"room9_skip_dark"},{"a":29766,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29768,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29770,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29772,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29774,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":29776,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":29778,"t":"code","b":[169,39],"m":"lda","o":"#$27"},{"a":29780,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29782,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29784,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29786,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":29789,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":29791,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29793,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29795,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29797,"t":"code","b":[32,205,129],"m":"jsr","oa":33229,"o":"fill_sprite0_y0"},{"a":29800,"t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":29802,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29804,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29806,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29808,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":29810,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":29812,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29814,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29816,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29818,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29820,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":29823,"t":"code","b":[169,182],"m":"lda","o":"#$B6"},{"a":29825,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29827,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29829,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29831,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29833,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29835,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":29838,"t":"code","b":[234],"m":"nop"},{"a":29839,"t":"code","b":[234],"m":"nop"},{"a":29840,"t":"code","b":[234],"m":"nop"},{"a":29841,"t":"code","b":[234],"m":"nop"},{"a":29842,"t":"code","b":[234],"m":"nop"},{"a":29843,"t":"code","b":[234],"m":"nop"},{"a":29844,"t":"code","b":[234],"m":"nop"},{"a":29845,"t":"code","b":[234],"m":"nop"},{"a":29846,"t":"code","b":[234],"m":"nop"},{"a":29847,"t":"code","b":[234],"m":"nop"},{"a":29848,"t":"code","b":[234],"m":"nop"},{"a":29849,"t":"code","b":[234],"m":"nop"},{"a":29850,"t":"code","b":[234],"m":"nop"},{"a":29851,"t":"code","b":[234],"m":"nop"},{"a":29852,"t":"code","b":[234],"m":"nop"},{"a":29853,"t":"code","b":[234],"m":"nop"},{"a":29854,"t":"code","b":[234],"m":"nop"},{"a":29855,"t":"code","b":[234],"m":"nop"},{"a":29856,"t":"code","b":[234],"m":"nop"},{"a":29857,"t":"code","b":[234],"m":"nop"},{"a":29858,"t":"code","b":[234],"m":"nop"},{"a":29859,"t":"code","b":[234],"m":"nop"},{"a":29860,"t":"code","b":[234],"m":"nop"},{"a":29861,"t":"code","b":[169,73],"m":"lda","o":"#$49"},{"a":29863,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29865,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29867,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29869,"t":"code","b":[169,251],"m":"lda","o":"#$FB"},{"a":29871,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":29873,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29875,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29877,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":29879,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29881,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":29884,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":29886,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":29888,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29890,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":29892,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29894,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":29896,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29898,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":29900,"t":"code","b":[169,84],"m":"lda","o":"#$54"},{"a":29902,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29904,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":29907,"t":"code","b":[169,90],"m":"lda","o":"#$5A"},{"a":29909,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":29911,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":29914,"l":"room9_place_sprites","c":"Room 9: draws the ROOM digit 9 (glyph $1690/$1698 to bitmap $3D80/$3EC0), enables sprites 0, 3, 4, then places Mr Hat by the entry code $4ACD: $58 -> X $18, Y $B4 (lower floor, left); $50 -> X $18, Y $5C (upper floor, left); $30 -> X $128, Y $35, climbing frame $32 (top of the right ladder); $78 -> X $88, Y $D0, frame $32 (bottom of the lower ladder); any other value leaves him where he is. Clears the walk counters $BD/$FB, frames $FD = $2C and $FF = $2F; guardian sprite 3 (lower floor patrol): Y $B8, X $E0, frame $26, moving left (opcode $CE patched into $7627/$762A); sprite 0 (upper-floor chaser): X $A0, colour 1; Mr Hat colour $0B; sprites 6 and 7 (drops from the lamps): X $38/$68, Y $16, frame $2B, colours $07/$0F; multicolour for sprites 0, 6, 7; ladder delay $4AC9 = $0C; JSR $809D ($1E08 = $FA, sprite 3 colour 6); installs room 9's IRQ $7600; when Mr Hat is at Y >= $B4 runs the ladder loop $7B05 first (entry $78 from below, Y $D0, and also entry $58, which sets Y = $B4); then JMP $A835 to the main loop $76B0.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[29757]},{"a":29916,"l":"b_74DC","t":"code","b":[189,144,22],"m":"lda","oa":5776,"o":"digit_nine_top,x","x":[29931]},{"a":29919,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":29922,"t":"code","b":[189,152,22],"m":"lda","oa":5784,"o":"digit_nine_bottom,x"},{"a":29925,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":29928,"t":"code","b":[232],"m":"inx"},{"a":29929,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":29931,"t":"code","b":[208,239],"m":"bne","oa":29916,"o":"b_74DC"},{"a":29933,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":29936,"t":"code","b":[9,25],"m":"ora","o":"#$19"},{"a":29938,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":29941,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":29944,"t":"code","b":[201,88],"m":"cmp","o":"#$58"},{"a":29946,"t":"code","b":[208,26],"m":"bne","oa":29974,"o":"b_7516"},{"a":29948,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":29950,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":29953,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":29955,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":29958,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":29961,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":29963,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":29966,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":29968,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":29971,"t":"code","b":[76,101,117],"m":"jmp","oa":30053,"o":"j_7565"},{"a":29974,"l":"b_7516","t":"code","b":[201,80],"m":"cmp","o":"#$50","x":[29946]},{"a":29976,"t":"code","b":[208,26],"m":"bne","oa":30004,"o":"b_7534"},{"a":29978,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":29980,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":29983,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":29985,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":29988,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":29991,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":29993,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":29996,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":29998,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":30001,"t":"code","b":[76,101,117],"m":"jmp","oa":30053,"o":"j_7565"},{"a":30004,"l":"b_7534","t":"code","b":[201,48],"m":"cmp","o":"#$30","x":[29976]},{"a":30006,"t":"code","b":[208,26],"m":"bne","oa":30034,"o":"b_7552"},{"a":30008,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":30010,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30013,"t":"code","b":[169,53],"m":"lda","o":"#$35"},{"a":30015,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":30018,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":30021,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":30023,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":30026,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":30028,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":30031,"t":"code","b":[76,101,117],"m":"jmp","oa":30053,"o":"j_7565"},{"a":30034,"l":"b_7552","t":"code","b":[201,120],"m":"cmp","o":"#$78","x":[30006]},{"a":30036,"t":"code","b":[208,15],"m":"bne","oa":30053,"o":"j_7565"},{"a":30038,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":30040,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30043,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":30045,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":30048,"t":"code","b":[169,208],"m":"lda","o":"#$D0"},{"a":30050,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":30053,"l":"j_7565","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[29971,30001,30031,30036]},{"a":30055,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":30057,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":30059,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":30061,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":30063,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":30065,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":30067,"t":"code","b":[169,184],"m":"lda","o":"#$B8"},{"a":30069,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":30072,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":30074,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":30077,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":30079,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":30082,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":30084,"t":"code","b":[141,39,118],"m":"sta","oa":30247,"o":"room9_patrol_step_op_1"},{"a":30087,"t":"code","b":[141,42,118],"m":"sta","oa":30250,"o":"room9_patrol_step_op_2"},{"a":30090,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":30092,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":30095,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":30097,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":30100,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":30102,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":30105,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":30107,"t":"code","b":[141,12,208],"m":"sta","o":"vic_sprite6_x"},{"a":30110,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":30112,"t":"code","b":[141,14,208],"m":"sta","o":"vic_sprite7_x"},{"a":30115,"t":"code","b":[169,22],"m":"lda","o":"#$16"},{"a":30117,"t":"code","b":[141,13,208],"m":"sta","o":"vic_sprite6_y"},{"a":30120,"t":"code","b":[141,15,208],"m":"sta","o":"vic_sprite7_y"},{"a":30123,"t":"code","b":[169,43],"m":"lda","o":"#$2B"},{"a":30125,"t":"code","b":[141,254,7],"m":"sta","oa":2046,"o":"spr6_pointer"},{"a":30128,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":30131,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":30133,"t":"code","b":[141,46,208],"m":"sta","o":"vic_sprite7_colour"},{"a":30136,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":30138,"t":"code","b":[141,45,208],"m":"sta","o":"vic_sprite6_colour"},{"a":30141,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":30144,"t":"code","b":[9,193],"m":"ora","o":"#$C1"},{"a":30146,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":30149,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":30151,"t":"code","b":[141,201,74],"m":"sta","oa":19145,"o":"ladder_delay_count"},{"a":30154,"t":"code","b":[32,157,128],"m":"jsr","oa":32925,"o":"set_1e08_sprite3_blue"},{"a":30157,"t":"code","b":[234],"m":"nop"},{"a":30158,"t":"code","b":[120],"m":"sei"},{"a":30159,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30161,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":30164,"t":"code","b":[169,118],"m":"lda","o":"#$76"},{"a":30166,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":30169,"t":"code","b":[88],"m":"cli"},{"a":30170,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":30173,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":30175,"t":"code","b":[144,3],"m":"bcc","oa":30180,"o":"b_75E4"},{"a":30177,"t":"code","b":[32,5,123],"m":"jsr","oa":31493,"o":"room9_ladder_loop"},{"a":30180,"l":"b_75E4","t":"code","b":[76,53,168],"m":"jmp","oa":43061,"o":"reenter_loop_76b0","x":[30175]},{"a":30183,"l":"unused_fill_colour_d022_one","c":"Unreferenced routine (no JSR, JMP or address bytes pointing at it anywhere in the image): LDA #1, STA $D022, JSR $56ED (fill colour cells), RTS. Dead code.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":30185,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":30188,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":30191,"t":"code","b":[96],"m":"rts"},{"a":30192,"l":"replay_bonus_state","c":"A state byte of the 200,000-point replay bonus that Lupenio's text at $7FB1 announces (\"ORA RIPROVA CON 200.000 PUNTI\"): $00 = none, $20 = bonus due, $40 = bonus given. Read by $802D (called from $1BED when a game starts): $00 resets the score digits ($8042), $20 adds 1,000 points 200 times and sets $40 and the text's digit $7FC1 to '4' ($80B0), $40 adds 1,000 points 400 times ($8590). Set to $20 or $40 by the F1 wait at $8000, which nothing in Mr. Hat reaches, and to $40 by $80B0, which runs only when it is already $20; cleared by $8020 (from $4486, the restart after the last life), which also puts '2' in $7FC1. So in Mr. Hat it stays $00: 0 in handover.vsf, play-room1.vsf, room9.vsf and title.vsf.","t":"byte","b":[0],"x":[32774,32783,32791,32802,32816,32956]},{"a":30193,"c":"Unused: 15 zero bytes before room 9's IRQ.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30201,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":30208,"l":"room9_irq","c":"Room 9's IRQ handler (installed at $75CE): a loop of 24 x 2 stores of $5001,x to $D022 (no visible effect in hires mode; the source operand $760D is advanced by $28 each time, $27 plus the carry the loop leaves set; counter $64F2 is reset after each pass, so the loop runs every interrupt); moves guardian sprite 3 (lower floor) two pixels a frame, the opcodes at $7627/$762A switched between INC ($EE) and DEC ($CE): turns left with frame $26 at X >= $FA and right with frame $34 below $78; moves the lamp drops, sprites 6 and 7, down one pixel a frame: sprite 6 is shown only for Y $40-$62, sprite 7 is shown at Y = $40 and hidden at $64, where it jumps to $9A (so the two fall out of step); then JMP $7B70, the upper-floor chaser.","t":"code","b":[238,242,100],"m":"inc","oa":25842,"o":"counter_64f2"},{"a":30211,"t":"code","b":[173,242,100],"m":"lda","oa":25842,"o":"counter_64f2"},{"a":30214,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":30216,"t":"code","b":[176,29],"m":"bcs","oa":30247,"o":"room9_patrol_step_op_1"},{"a":30218,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":30220,"l":"b_760C","t":"code","b":[189,1,80],"m":"lda","oa":20481,"o":"f_5001,x","x":[30232]},{"a":30221,"t":"note","l":"room9_irq_d022_source_lo","c":"Low byte of the operand of LDA $5001,X at $760C in room9_irq, advanced after every pass by $27 plus the carry the loop's last CPX leaves set, so by $28: the values go only to $D022.","note":"inside the item at $760C","x":[30234,30239]},{"a":30223,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":30226,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":30229,"t":"code","b":[232],"m":"inx"},{"a":30230,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":30232,"t":"code","b":[208,242],"m":"bne","oa":30220,"o":"b_760C"},{"a":30234,"t":"code","b":[173,13,118],"m":"lda","oa":30221,"o":"room9_irq_d022_source_lo"},{"a":30237,"t":"code","b":[105,39],"m":"adc","o":"#$27"},{"a":30239,"t":"code","b":[141,13,118],"m":"sta","oa":30221,"o":"room9_irq_d022_source_lo"},{"a":30242,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30244,"t":"code","b":[141,242,100],"m":"sta","oa":25842,"o":"counter_64f2"},{"a":30247,"l":"room9_patrol_step_op_1","c":"Opcode of the first INC/DEC $D006 in room9_irq: $EE (INC, sprite 3 walks right) or $CE (DEC, walks left), patched at $7636/$764A and by room9_place_sprites ($7584).","t":"code","b":[238,6,208],"m":"inc","o":"vic_sprite3_x","x":[30084,30216,30262,30282]},{"a":30250,"l":"room9_patrol_step_op_2","c":"Opcode of the second INC/DEC $D006 in room9_irq, patched together with $7627: two pixels a frame.","t":"code","b":[238,6,208],"m":"inc","o":"vic_sprite3_x","x":[30087,30265,30285]},{"a":30253,"t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x"},{"a":30256,"t":"code","b":[201,250],"m":"cmp","o":"#$FA"},{"a":30258,"t":"code","b":[144,16],"m":"bcc","oa":30276,"o":"b_7644"},{"a":30260,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":30262,"t":"code","b":[141,39,118],"m":"sta","oa":30247,"o":"room9_patrol_step_op_1"},{"a":30265,"t":"code","b":[141,42,118],"m":"sta","oa":30250,"o":"room9_patrol_step_op_2"},{"a":30268,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":30270,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":30273,"t":"code","b":[76,85,118],"m":"jmp","oa":30293,"o":"j_7655"},{"a":30276,"l":"b_7644","t":"code","b":[201,120],"m":"cmp","o":"#$78","x":[30258]},{"a":30278,"t":"code","b":[176,13],"m":"bcs","oa":30293,"o":"j_7655"},{"a":30280,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":30282,"t":"code","b":[141,39,118],"m":"sta","oa":30247,"o":"room9_patrol_step_op_1"},{"a":30285,"t":"code","b":[141,42,118],"m":"sta","oa":30250,"o":"room9_patrol_step_op_2"},{"a":30288,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":30290,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":30293,"l":"j_7655","t":"code","b":[238,13,208],"m":"inc","o":"vic_sprite6_y","x":[30273,30278]},{"a":30296,"t":"code","b":[238,15,208],"m":"inc","o":"vic_sprite7_y"},{"a":30299,"t":"code","b":[173,13,208],"m":"lda","o":"vic_sprite6_y"},{"a":30302,"t":"code","b":[201,99],"m":"cmp","o":"#$63"},{"a":30304,"t":"code","b":[144,11],"m":"bcc","oa":30317,"o":"b_766D"},{"a":30306,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":30309,"t":"code","b":[41,191],"m":"and","o":"#$BF"},{"a":30311,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":30314,"t":"code","b":[76,121,118],"m":"jmp","oa":30329,"o":"j_7679"},{"a":30317,"l":"b_766D","t":"code","b":[201,64],"m":"cmp","o":"#$40","x":[30304]},{"a":30319,"t":"code","b":[144,8],"m":"bcc","oa":30329,"o":"j_7679"},{"a":30321,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":30324,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":30326,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":30329,"l":"j_7679","t":"code","b":[173,15,208],"m":"lda","o":"vic_sprite7_y","x":[30314,30319]},{"a":30332,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":30334,"t":"code","b":[208,8],"m":"bne","oa":30344,"o":"b_7688"},{"a":30336,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":30339,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":30341,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":30344,"l":"b_7688","t":"code","b":[201,100],"m":"cmp","o":"#$64","x":[30334]},{"a":30346,"t":"code","b":[208,13],"m":"bne","oa":30361,"o":"b_7699"},{"a":30348,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":30351,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":30353,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":30356,"t":"code","b":[169,154],"m":"lda","o":"#$9A"},{"a":30358,"t":"code","b":[141,15,208],"m":"sta","o":"vic_sprite7_y"},{"a":30361,"l":"b_7699","t":"code","b":[234],"m":"nop","x":[30346]},{"a":30362,"t":"code","b":[234],"m":"nop"},{"a":30363,"t":"code","b":[234],"m":"nop"},{"a":30364,"t":"code","b":[76,171,118],"m":"jmp","oa":30379,"o":"j_76AB"},{"a":30367,"l":"room9_irq_dead_tail","c":"Unreachable ($769F-$76AA, after the JMP $76AB at $769C): CMP #$40, BCC, enable sprite 7. The JMP $7B70 at $76AB that follows is the live end of room9_irq, reached from $769C (the BCC at $76A1 also targets it, but is itself unreachable).","t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":30369,"t":"code","b":[144,8],"m":"bcc","oa":30379,"o":"j_76AB"},{"a":30371,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":30374,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":30376,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":30379,"l":"j_76AB","t":"code","b":[76,112,123],"m":"jmp","oa":31600,"o":"room9_chaser","x":[30364,30369]},{"a":30382,"t":"gap","n":2},{"a":30382,"t":"note","c":"Unused: 2 zero bytes after room9_irq_dead_tail.","note":"outside the tracked image"},{"a":30384,"l":"room9_main","c":"Room 9's main loop (entered through $A835, the turn-the-screen-on trampoline). If $D8 = $40 (no lives left, set at $1736) goes to $4475, the end of the game. Else room9_respawn_hat ($7A50), room9_floor_and_collide ($7845), then the stick on port 2, each value matched exactly: $77 (right) walks right ($5340, frames $2C-$2E), $7B (left) walks left ($5370, frames $2F-$31), $7D (down) crouches ($7818), $6F (fire alone, read twice) jumps in the direction he faces (frame below $2F = right): frame $2D/$30, silence voice 2 ($1CF2), jump sound ($41B0), 21 steps up and forward, a pause ($42E0), frame $2C/$2F and 21 steps forward, a pause, frame $2E/$31 and 21 steps down and forward, calling $7845 at every step. After a jump, a crouch or any other stick value: room9_after_jump.","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[43064]},{"a":30386,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":30388,"t":"code","b":[208,3],"m":"bne","oa":30393,"o":"b_76B9"},{"a":30390,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":30393,"l":"b_76B9","t":"code","b":[32,80,122],"m":"jsr","oa":31312,"o":"room9_respawn_hat","x":[30388]},{"a":30396,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30399,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":30402,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":30404,"t":"code","b":[208,6],"m":"bne","oa":30412,"o":"b_76CC"},{"a":30406,"t":"code","b":[32,64,83],"m":"jsr","oa":21312,"o":"walk_right"},{"a":30409,"t":"code","b":[76,198,119],"m":"jmp","oa":30662,"o":"room9_walk_done"},{"a":30412,"l":"b_76CC","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[30404]},{"a":30414,"t":"code","b":[208,6],"m":"bne","oa":30422,"o":"b_76D6"},{"a":30416,"t":"code","b":[32,112,83],"m":"jsr","oa":21360,"o":"walk_left"},{"a":30419,"t":"code","b":[76,198,119],"m":"jmp","oa":30662,"o":"room9_walk_done"},{"a":30422,"l":"b_76D6","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[30414]},{"a":30424,"t":"code","b":[208,9],"m":"bne","oa":30435,"o":"b_76E3"},{"a":30426,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30429,"t":"code","b":[32,24,120],"m":"jsr","oa":30744,"o":"room9_crouch"},{"a":30432,"t":"code","b":[76,172,119],"m":"jmp","oa":30636,"o":"room9_after_jump"},{"a":30435,"l":"b_76E3","t":"code","b":[201,111],"m":"cmp","o":"#$6F","x":[30424]},{"a":30437,"t":"code","b":[208,104],"m":"bne","oa":30543,"o":"b_774F"},{"a":30439,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":30442,"t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":30444,"t":"code","b":[208,97],"m":"bne","oa":30543,"o":"b_774F"},{"a":30446,"l":"j_76EE","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[30695,30705]},{"a":30449,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":30451,"t":"code","b":[176,93],"m":"bcs","oa":30546,"o":"b_7752"},{"a":30453,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":30455,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30458,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":30461,"l":"b_76FD","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[30479]},{"a":30464,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":30467,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":30470,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":30472,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30475,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":30477,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":30479,"t":"code","b":[208,236],"m":"bne","oa":30461,"o":"b_76FD"},{"a":30481,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30483,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":30485,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":30488,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":30490,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30493,"l":"b_771D","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[30505]},{"a":30496,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":30498,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30501,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":30503,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":30505,"t":"code","b":[208,242],"m":"bne","oa":30493,"o":"b_771D"},{"a":30507,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30509,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":30511,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":30514,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":30516,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30519,"l":"b_7737","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[30534]},{"a":30522,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":30525,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":30527,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30530,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":30532,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":30534,"t":"code","b":[208,239],"m":"bne","oa":30519,"o":"b_7737"},{"a":30536,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30538,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":30540,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":30543,"l":"b_774F","t":"code","b":[76,172,119],"m":"jmp","oa":30636,"o":"room9_after_jump","x":[30437,30444]},{"a":30546,"l":"b_7752","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[30451]},{"a":30548,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30551,"l":"b_7757","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[30572]},{"a":30554,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":30557,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":30560,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":30563,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":30565,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30568,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":30570,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":30572,"t":"code","b":[208,233],"m":"bne","oa":30551,"o":"b_7757"},{"a":30574,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30576,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":30578,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":30581,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":30583,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30586,"l":"b_777A","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[30598]},{"a":30589,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":30591,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30594,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":30596,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":30598,"t":"code","b":[208,242],"m":"bne","oa":30586,"o":"b_777A"},{"a":30600,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30602,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":30604,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":30607,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":30609,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30612,"l":"b_7794","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[30627]},{"a":30615,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":30618,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":30620,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30623,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":30625,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":30627,"t":"code","b":[208,239],"m":"bne","oa":30612,"o":"b_7794"},{"a":30629,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30631,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":30633,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":30636,"l":"room9_after_jump","c":"Room 9, after a jump (and after a crouch): if the stick reads exactly $67 (fire and right) or $6B (fire and left), runs $7845 and room9_chain_jump; otherwise room9_stand_frame.","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[30432,30543]},{"a":30639,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":30641,"t":"code","b":[208,6],"m":"bne","oa":30649,"o":"b_77B9"},{"a":30643,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30646,"t":"code","b":[76,224,119],"m":"jmp","oa":30688,"o":"room9_chain_jump"},{"a":30649,"l":"b_77B9","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[30641]},{"a":30651,"t":"code","b":[208,9],"m":"bne","oa":30662,"o":"room9_walk_done"},{"a":30653,"t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide"},{"a":30656,"t":"code","b":[76,224,119],"m":"jmp","oa":30688,"o":"room9_chain_jump"},{"a":30659,"t":"gap","n":3},{"a":30659,"t":"note","c":"Unreachable bytes (no jump or branch lands here): JSR $7845, a copy of the call above.","note":"outside the tracked image"},{"a":30662,"l":"room9_walk_done","c":"Room 9: after a step of walking (from the $77 and $7B stick tests in room9_main) or a non-fire stick value: JMP room9_stand_frame ($7800).","t":"code","b":[76,0,120],"m":"jmp","oa":30720,"o":"room9_stand_frame","x":[30409,30419,30651]},{"a":30665,"t":"gap","n":23},{"a":30665,"t":"note","c":"Unused: 23 zero bytes in room 9's main loop.","note":"outside the tracked image"},{"a":30688,"l":"room9_chain_jump","c":"Room 9: when fire is still held after a jump, jumps again ($76EE) unless $D010 >= $29 (the X high bits of all sprites compared as one number) and Mr Hat's X low byte is $4E or more; in that case it writes $7B to $DC00 (CIA 1 port A, the keyboard column output: until the KERNAL's scan rewrites it, a read of port 2 probably sees 'left') and goes to room9_stand_frame.","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[30646,30656]},{"a":30691,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":30693,"t":"code","b":[176,3],"m":"bcs","oa":30698,"o":"b_77EA"},{"a":30695,"t":"code","b":[76,238,118],"m":"jmp","oa":30446,"o":"j_76EE"},{"a":30698,"l":"b_77EA","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[30693]},{"a":30701,"t":"code","b":[201,78],"m":"cmp","o":"#$4E"},{"a":30703,"t":"code","b":[176,3],"m":"bcs","oa":30708,"o":"b_77F4"},{"a":30705,"t":"code","b":[76,238,118],"m":"jmp","oa":30446,"o":"j_76EE"},{"a":30708,"l":"b_77F4","t":"code","b":[169,123],"m":"lda","o":"#$7B","x":[30703]},{"a":30710,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":30713,"t":"code","b":[76,0,120],"m":"jmp","oa":30720,"o":"room9_stand_frame"},{"a":30716,"t":"gap","n":4},{"a":30716,"t":"note","c":"Unused: 4 zero bytes.","note":"outside the tracked image"},{"a":30720,"l":"room9_stand_frame","c":"Room 9: puts Mr Hat's standing frame in his sprite pointer $07FC ($2F facing left if the frame was $2F or above, else $2C facing right) and loops back through $A835 to room9_main.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[30662,30713]},{"a":30723,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":30725,"t":"code","b":[144,8],"m":"bcc","oa":30735,"o":"b_780F"},{"a":30727,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":30729,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30732,"t":"code","b":[76,53,168],"m":"jmp","oa":43061,"o":"reenter_loop_76b0"},{"a":30735,"l":"b_780F","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[30725]},{"a":30737,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30740,"t":"code","b":[76,53,168],"m":"jmp","oa":43061,"o":"reenter_loop_76b0"},{"a":30743,"t":"gap","n":1},{"a":30743,"t":"note","c":"Unused: 1 zero byte after room9_stand_frame.","note":"outside the tracked image"},{"a":30744,"l":"room9_crouch","c":"Room 9: while the stick reads $7D (down), shows the crouching frame $2A and keeps running room9_floor_and_collide; then restores the frame he had.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[30429]},{"a":30747,"t":"code","b":[72],"m":"pha"},{"a":30748,"l":"b_781C","t":"code","b":[32,69,120],"m":"jsr","oa":30789,"o":"room9_floor_and_collide","x":[30761]},{"a":30751,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":30753,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30756,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":30759,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":30761,"t":"code","b":[240,241],"m":"beq","oa":30748,"o":"b_781C"},{"a":30763,"t":"code","b":[104],"m":"pla"},{"a":30764,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":30767,"t":"code","b":[96],"m":"rts"},{"a":30768,"t":"gap","n":21},{"a":30768,"t":"note","c":"Unused: a stray RTS ($60) and 20 zero bytes.","note":"outside the tracked image"},{"a":30789,"l":"room9_floor_and_collide","c":"Room 9, called at every step: room9_floor_check ($7A30, the floor-by-floor tests) and $5590 (JSR $BB10, then a kill through $55F5 when the collision flag $4ACE = $20).","t":"code","b":[32,48,122],"m":"jsr","oa":31280,"o":"room9_floor_check","x":[30396,30426,30472,30498,30527,30565,30591,30620,30643,30653,30748]},{"a":30792,"t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups"},{"a":30795,"t":"code","b":[96],"m":"rts"},{"a":30796,"t":"gap","n":1},{"a":30796,"t":"note","c":"Unused: 1 zero byte after room9_floor_and_collide.","note":"outside the tracked image"},{"a":30797,"l":"room9_lower_floor_jmp","c":"Room 9: JMP room9_lower_floor ($794E).","t":"code","b":[76,78,121],"m":"jmp","oa":31054,"o":"room9_lower_floor","x":[31267]},{"a":30800,"l":"room9_floor_logic","c":"Room 9: when Mr Hat's X low byte is $00 or $FF he is crossing the 256 boundary, and $4610 fixes his X high bit in $D010; otherwise room9_which_floor ($7A10).","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[31303]},{"a":30803,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":30805,"t":"code","b":[208,4],"m":"bne","oa":30811,"o":"b_785B"},{"a":30807,"l":"b_7857","t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256","x":[30813]},{"a":30810,"t":"code","b":[96],"m":"rts"},{"a":30811,"l":"b_785B","t":"code","b":[201,255],"m":"cmp","o":"#$FF","x":[30805]},{"a":30813,"t":"code","b":[240,248],"m":"beq","oa":30807,"o":"b_7857"},{"a":30815,"t":"code","b":[32,16,122],"m":"jsr","oa":31248,"o":"room9_which_floor"},{"a":30818,"t":"code","b":[96],"m":"rts"},{"a":30819,"t":"gap","n":3},{"a":30819,"t":"note","c":"Unused: 3 zero bytes after room9_floor_logic.","note":"outside the tracked image"},{"a":30822,"l":"room9_upper_floor","c":"Room 9, Mr Hat on the upper floor (Y $38-$7F). Right half (when $D010 >= $2F, the sprite X high bits compared as one number): at X >= $138 he is pushed back one pixel (the right wall); at X $120-$12F, Y $5C, stick exactly $7E (up) he climbs the top-right ladder (room9_climb_top_ladder). Left half: at X below $E8, the upper door (screen cell $0468, columns 24-25 of rows 2-7): shut ($E0) and key $F5 = $28 held: opened (cells $CC, room9_upper_door_opened); shut without the key: only INC $D022; open ($CC) or $BB = $26: on to the chaser test at $7909; any other colour with the key: cells painted $00 and room9_upper_door_opened again; any other colour without the key: only INC $D022. The setup never paints the door $E0, so it is never shut: lit, the cell is $CC and the code goes on to $7909; dark, room9_enter leaves it $00 (room9.vsf), so without room 6's object ($F5 = $28) everything left of X $E8 on this floor stops at the INC $D022 (no chaser test, no exit to room 8 this way). At $7909: when his X equals the chaser's (sprite 0, $D000) $81D6 kills him if screen cell $0460 is $00 (the dark room); X $28-$47 at Y $5C does only INC $D022; X below $10 leaves left to room 8 ($4ACD = $68, JMP $65E0).","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[31263]},{"a":30825,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":30827,"t":"code","b":[144,37],"m":"bcc","oa":30866,"o":"b_7892"},{"a":30829,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":30832,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":30834,"t":"code","b":[144,4],"m":"bcc","oa":30840,"o":"b_7878"},{"a":30836,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":30839,"l":"r_7877","t":"code","b":[96],"m":"rts","x":[30842,30846,30853,30860]},{"a":30840,"l":"b_7878","t":"code","b":[201,32],"m":"cmp","o":"#$20","x":[30834]},{"a":30842,"t":"code","b":[144,251],"m":"bcc","oa":30839,"o":"r_7877"},{"a":30844,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":30846,"t":"code","b":[176,247],"m":"bcs","oa":30839,"o":"r_7877"},{"a":30848,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":30851,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":30853,"t":"code","b":[208,240],"m":"bne","oa":30839,"o":"r_7877"},{"a":30855,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":30858,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":30860,"t":"code","b":[208,233],"m":"bne","oa":30839,"o":"r_7877"},{"a":30862,"t":"code","b":[32,224,122],"m":"jsr","oa":31456,"o":"room9_climb_top_ladder"},{"a":30865,"t":"code","b":[96],"m":"rts"},{"a":30866,"l":"b_7892","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[30827]},{"a":30869,"t":"code","b":[201,232],"m":"cmp","o":"#$E8"},{"a":30871,"t":"code","b":[176,112],"m":"bcs","oa":30985,"o":"b_7909"},{"a":30873,"t":"code","b":[173,104,4],"m":"lda","oa":1128,"o":"a_0468"},{"a":30876,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":30878,"t":"code","b":[208,58],"m":"bne","oa":30938,"o":"b_78DA"},{"a":30880,"t":"code","b":[165,245],"m":"lda","oa":245,"o":"room_var_f5"},{"a":30882,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":30884,"t":"code","b":[208,48],"m":"bne","oa":30934,"o":"b_78D6"},{"a":30886,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":30888,"l":"b_78A8","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[30911]},{"a":30890,"t":"code","b":[157,104,4],"m":"sta","oa":1128,"o":"a_0468,x"},{"a":30893,"t":"code","b":[157,184,4],"m":"sta","oa":1208,"o":"a_04B8,x"},{"a":30896,"t":"code","b":[157,8,5],"m":"sta","oa":1288,"o":"a_0508,x"},{"a":30899,"t":"code","b":[157,144,4],"m":"sta","oa":1168,"o":"f_0490,x"},{"a":30902,"t":"code","b":[157,224,4],"m":"sta","oa":1248,"o":"a_04E0,x"},{"a":30905,"t":"code","b":[157,48,5],"m":"sta","oa":1328,"o":"f_0530,x"},{"a":30908,"t":"code","b":[232],"m":"inx"},{"a":30909,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":30911,"t":"code","b":[208,231],"m":"bne","oa":30888,"o":"b_78A8"},{"a":30913,"l":"room9_upper_door_opened","c":"Room 9: after the upper door's cells are cleared: room9_door_sound_and_patch ($793D), $1CD2 (an RTS), two calls of $41DA (each steps the score digit drawn at bitmap $3D38, probably the thousands: 2,000 points), $D8 = 0, $BB = $26 (door open).","t":"code","b":[32,61,121],"m":"jsr","oa":31037,"o":"room9_door_sound_and_patch","x":[30981]},{"a":30916,"t":"code","b":[32,210,28],"m":"jsr","oa":7378,"o":"sound_stub_1cd2"},{"a":30919,"t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000"},{"a":30922,"t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000"},{"a":30925,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":30927,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":30929,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":30931,"t":"code","b":[133,187],"m":"sta","oa":187,"o":"flag_obj_00bb"},{"a":30933,"t":"code","b":[96],"m":"rts"},{"a":30934,"l":"b_78D6","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[30884,30952]},{"a":30937,"t":"code","b":[96],"m":"rts"},{"a":30938,"l":"b_78DA","t":"code","b":[201,204],"m":"cmp","o":"#$CC","x":[30878]},{"a":30940,"t":"code","b":[240,43],"m":"beq","oa":30985,"o":"b_7909"},{"a":30942,"t":"code","b":[165,187],"m":"lda","oa":187,"o":"flag_obj_00bb"},{"a":30944,"t":"code","b":[201,38],"m":"cmp","o":"#$26"},{"a":30946,"t":"code","b":[240,37],"m":"beq","oa":30985,"o":"b_7909"},{"a":30948,"t":"code","b":[165,245],"m":"lda","oa":245,"o":"room_var_f5"},{"a":30950,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":30952,"t":"code","b":[208,236],"m":"bne","oa":30934,"o":"b_78D6"},{"a":30954,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":30956,"l":"b_78EC","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[30979]},{"a":30958,"t":"code","b":[157,104,4],"m":"sta","oa":1128,"o":"a_0468,x"},{"a":30961,"t":"code","b":[157,184,4],"m":"sta","oa":1208,"o":"a_04B8,x"},{"a":30964,"t":"code","b":[157,8,5],"m":"sta","oa":1288,"o":"a_0508,x"},{"a":30967,"t":"code","b":[157,144,4],"m":"sta","oa":1168,"o":"f_0490,x"},{"a":30970,"t":"code","b":[157,224,4],"m":"sta","oa":1248,"o":"a_04E0,x"},{"a":30973,"t":"code","b":[157,48,5],"m":"sta","oa":1328,"o":"f_0530,x"},{"a":30976,"t":"code","b":[232],"m":"inx"},{"a":30977,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":30979,"t":"code","b":[208,231],"m":"bne","oa":30956,"o":"b_78EC"},{"a":30981,"t":"code","b":[32,193,120],"m":"jsr","oa":30913,"o":"room9_upper_door_opened"},{"a":30984,"t":"code","b":[96],"m":"rts"},{"a":30985,"l":"b_7909","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[30871,30940,30946]},{"a":30988,"t":"code","b":[205,0,208],"m":"cmp","o":"vic_sprite0_x"},{"a":30991,"t":"code","b":[208,10],"m":"bne","oa":31003,"o":"b_791B"},{"a":30993,"t":"code","b":[32,214,129],"m":"jsr","oa":33238,"o":"kill_if_cell_0460_zero"},{"a":30996,"t":"code","b":[234],"m":"nop"},{"a":30997,"t":"code","b":[234],"m":"nop"},{"a":30998,"t":"code","b":[234],"m":"nop"},{"a":30999,"t":"code","b":[234],"m":"nop"},{"a":31000,"t":"code","b":[234],"m":"nop"},{"a":31001,"t":"code","b":[234],"m":"nop"},{"a":31002,"t":"code","b":[96],"m":"rts"},{"a":31003,"l":"b_791B","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[30991]},{"a":31006,"t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":31008,"t":"code","b":[176,14],"m":"bcs","oa":31024,"o":"r_7930"},{"a":31010,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":31012,"t":"code","b":[144,11],"m":"bcc","oa":31025,"o":"b_7931"},{"a":31014,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":31017,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":31019,"t":"code","b":[208,4],"m":"bne","oa":31025,"o":"b_7931"},{"a":31021,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":31024,"l":"r_7930","t":"code","b":[96],"m":"rts","x":[31008,31027]},{"a":31025,"l":"b_7931","t":"code","b":[201,16],"m":"cmp","o":"#$10","x":[31012,31019]},{"a":31027,"t":"code","b":[176,251],"m":"bcs","oa":31024,"o":"r_7930"},{"a":31029,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":31031,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":31034,"t":"code","b":[76,224,101],"m":"jmp","oa":26080,"o":"room8_draw"},{"a":31037,"l":"room9_door_sound_and_patch","c":"Room 9, called from $78C1 when the upper door is opened: silences voice 1 ($1CB0) and patches room9_upper_door_colour_op ($71C4) to $CC, the colour the set-up would paint the door with on the next visit. The set-up's fill call is gone ($71CF is INC $D022), so the patch has no visible effect.","t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1","x":[30913]},{"a":31040,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":31042,"t":"code","b":[141,196,113],"m":"sta","oa":29124,"o":"room9_upper_door_colour_op"},{"a":31045,"t":"code","b":[96],"m":"rts"},{"a":31046,"l":"room9_lower_door_colour","c":"Room 9, called by room9_setup with $FE/$FF = $0612: loads the lower door's colour (room9_lower_door_colour_op) into $FB and does INC $D022 where the fill call ($56ED) would be, so the door cells are not painted.","t":"code","b":[169,224],"m":"lda","o":"#$E0","x":[29146]},{"a":31047,"t":"note","l":"room9_lower_door_colour_op","c":"Operand of LDA #$E0 at $7946: the lower door's colour ($E0 shut), patched to $CC when it is opened ($7996), reset by $7082. Stored to $FB only; nothing fills the door cells with it.","note":"inside the item at $7946","x":[28802,31126]},{"a":31048,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":31050,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":31053,"t":"code","b":[96],"m":"rts"},{"a":31054,"l":"room9_lower_floor","c":"Room 9, Mr Hat on the lower floor (Y $80 and up). Right half ($D010 >= $2F): at X >= $138 pushed back (the wall); at X exactly $120 with the treasure's cell $06F3 = $0C: the treasure (cells $06A3-$06F4, columns 35-36 of rows 16-18) is cleared to $CC, 20,000 points (20 calls of $41DA), voice 1 silenced, $65C5 (a call to the RTS at $450A), and the treasure colour operands $73CE/$73D3 patched to $CC. Nothing ever paints $06F3 with $0C, so the treasure cannot be taken. Left half: X below $10 leaves left to room 8 ($4ACD = $70, JMP $65E0); at X exactly $50, if the lower door (cell $0612, columns 10-11 of rows 13-18) is $E0 (shut): with key $F5 = $AF (from room 8, $70A0) it is opened (cells $CC, $D8 = 0, $7947 patched to $CC, 2,000 points, sound off), without it he is pushed back one pixel. The door is never painted $E0, so it never blocks. X $C8-$EF: $9689 (only $D022 writes). X $7C-$8F with the stick exactly $7D (down): room9_climb_lower_ladder.","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[30797]},{"a":31057,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":31059,"t":"code","b":[176,122],"m":"bcs","oa":31183,"o":"b_79CF"},{"a":31061,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":31064,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":31066,"t":"code","b":[176,8],"m":"bcs","oa":31076,"o":"b_7964"},{"a":31068,"t":"code","b":[169,112],"m":"lda","o":"#$70"},{"a":31070,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":31073,"t":"code","b":[76,224,101],"m":"jmp","oa":26080,"o":"room8_draw"},{"a":31076,"l":"b_7964","t":"code","b":[201,80],"m":"cmp","o":"#$50","x":[31066]},{"a":31078,"t":"code","b":[208,66],"m":"bne","oa":31146,"o":"b_79AA"},{"a":31080,"t":"code","b":[173,18,6],"m":"lda","oa":1554,"o":"a_0612"},{"a":31083,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":31085,"t":"code","b":[208,59],"m":"bne","oa":31146,"o":"b_79AA"},{"a":31087,"t":"code","b":[165,245],"m":"lda","oa":245,"o":"room_var_f5"},{"a":31089,"t":"code","b":[201,175],"m":"cmp","o":"#$AF"},{"a":31091,"t":"code","b":[208,49],"m":"bne","oa":31142,"o":"b_79A6"},{"a":31093,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":31095,"l":"b_7977","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[31118]},{"a":31097,"t":"code","b":[157,18,6],"m":"sta","oa":1554,"o":"a_0612,x"},{"a":31100,"t":"code","b":[157,98,6],"m":"sta","oa":1634,"o":"f_0662,x"},{"a":31103,"t":"code","b":[157,178,6],"m":"sta","oa":1714,"o":"f_06B2,x"},{"a":31106,"t":"code","b":[157,58,6],"m":"sta","oa":1594,"o":"f_063A,x"},{"a":31109,"t":"code","b":[157,138,6],"m":"sta","oa":1674,"o":"f_068A,x"},{"a":31112,"t":"code","b":[157,218,6],"m":"sta","oa":1754,"o":"f_06DA,x"},{"a":31115,"t":"code","b":[232],"m":"inx"},{"a":31116,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":31118,"t":"code","b":[208,231],"m":"bne","oa":31095,"o":"b_7977"},{"a":31120,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":31122,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":31124,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":31126,"t":"code","b":[141,71,121],"m":"sta","oa":31047,"o":"room9_lower_door_colour_op"},{"a":31129,"t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000"},{"a":31132,"t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000"},{"a":31135,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":31138,"t":"code","b":[32,210,28],"m":"jsr","oa":7378,"o":"sound_stub_1cd2"},{"a":31141,"t":"code","b":[96],"m":"rts"},{"a":31142,"l":"b_79A6","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[31091]},{"a":31145,"t":"code","b":[96],"m":"rts"},{"a":31146,"l":"b_79AA","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[31078,31085]},{"a":31149,"t":"code","b":[201,240],"m":"cmp","o":"#$F0"},{"a":31151,"t":"code","b":[176,7],"m":"bcs","oa":31160,"o":"r_79B8"},{"a":31153,"t":"code","b":[201,200],"m":"cmp","o":"#$C8"},{"a":31155,"t":"code","b":[144,4],"m":"bcc","oa":31161,"o":"b_79B9"},{"a":31157,"t":"code","b":[32,137,150],"m":"jsr","oa":38537,"o":"set_d022_70"},{"a":31160,"l":"r_79B8","t":"code","b":[96],"m":"rts","x":[31151,31166,31170,31177]},{"a":31161,"l":"b_79B9","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[31155]},{"a":31164,"t":"code","b":[201,124],"m":"cmp","o":"#$7C"},{"a":31166,"t":"code","b":[144,248],"m":"bcc","oa":31160,"o":"r_79B8"},{"a":31168,"t":"code","b":[201,144],"m":"cmp","o":"#$90"},{"a":31170,"t":"code","b":[176,244],"m":"bcs","oa":31160,"o":"r_79B8"},{"a":31172,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":31175,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":31177,"t":"code","b":[208,237],"m":"bne","oa":31160,"o":"r_79B8"},{"a":31179,"t":"code","b":[32,0,123],"m":"jsr","oa":31488,"o":"room9_climb_lower_ladder"},{"a":31182,"t":"code","b":[96],"m":"rts"},{"a":31183,"l":"b_79CF","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[31059]},{"a":31186,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":31188,"t":"code","b":[144,4],"m":"bcc","oa":31194,"o":"b_79DA"},{"a":31190,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":31193,"l":"r_79D9","t":"code","b":[96],"m":"rts","x":[31196]},{"a":31194,"l":"b_79DA","t":"code","b":[201,32],"m":"cmp","o":"#$20","x":[31188]},{"a":31196,"t":"code","b":[208,251],"m":"bne","oa":31193,"o":"r_79D9"},{"a":31198,"t":"code","b":[173,243,6],"m":"lda","oa":1779,"o":"a_06F3"},{"a":31201,"t":"code","b":[201,12],"m":"cmp","o":"#$0C"},{"a":31203,"t":"code","b":[208,42],"m":"bne","oa":31247,"o":"r_7A0F"},{"a":31205,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":31207,"l":"b_79E7","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[31221]},{"a":31209,"t":"code","b":[157,243,6],"m":"sta","oa":1779,"o":"a_06F3,x"},{"a":31212,"t":"code","b":[157,163,6],"m":"sta","oa":1699,"o":"f_06A3,x"},{"a":31215,"t":"code","b":[157,203,6],"m":"sta","oa":1739,"o":"f_06CB,x"},{"a":31218,"t":"code","b":[232],"m":"inx"},{"a":31219,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":31221,"t":"code","b":[208,240],"m":"bne","oa":31207,"o":"b_79E7"},{"a":31223,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":31225,"l":"b_79F9","t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000","x":[31231]},{"a":31228,"t":"code","b":[200],"m":"iny"},{"a":31229,"t":"code","b":[192,20],"m":"cpy","o":"#$14"},{"a":31231,"t":"code","b":[208,248],"m":"bne","oa":31225,"o":"b_79F9"},{"a":31233,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":31236,"t":"code","b":[32,197,101],"m":"jsr","oa":26053,"o":"call_empty_450a"},{"a":31239,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":31241,"t":"code","b":[141,206,115],"m":"sta","oa":29646,"o":"room9_treasure_colour_op_a"},{"a":31244,"t":"code","b":[141,211,115],"m":"sta","oa":29651,"o":"room9_treasure_colour_op_b"},{"a":31247,"l":"r_7A0F","t":"code","b":[96],"m":"rts","x":[31203]},{"a":31248,"l":"room9_which_floor","c":"Room 9: by Mr Hat's Y ($D009): below $38 he is on the top ladder (room9_climb_top_ladder), below $80 on the upper floor (room9_upper_floor), else on the lower floor (room9_lower_floor).","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[30815]},{"a":31251,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":31253,"t":"code","b":[176,4],"m":"bcs","oa":31259,"o":"b_7A1B"},{"a":31255,"t":"code","b":[32,224,122],"m":"jsr","oa":31456,"o":"room9_climb_top_ladder"},{"a":31258,"t":"code","b":[96],"m":"rts"},{"a":31259,"l":"b_7A1B","t":"code","b":[201,128],"m":"cmp","o":"#$80","x":[31253]},{"a":31261,"t":"code","b":[176,4],"m":"bcs","oa":31267,"o":"b_7A23"},{"a":31263,"t":"code","b":[32,102,120],"m":"jsr","oa":30822,"o":"room9_upper_floor"},{"a":31266,"t":"code","b":[96],"m":"rts"},{"a":31267,"l":"b_7A23","t":"code","b":[32,77,120],"m":"jsr","oa":30797,"o":"room9_lower_floor_jmp","x":[31261]},{"a":31270,"t":"code","b":[96],"m":"rts"},{"a":31271,"t":"gap","n":9},{"a":31271,"t":"note","c":"Unused: 9 zero bytes after room9_which_floor.","note":"outside the tracked image"},{"a":31280,"l":"room9_floor_check","c":"Room 9: skips the floor tests while $D015 is $49, $89, $C9 or $09 (sprite 4, Mr Hat, switched off by a death, whatever sprites 7 and 6 do), else room9_floor_logic ($7850).","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[30789]},{"a":31283,"t":"code","b":[201,73],"m":"cmp","o":"#$49"},{"a":31285,"t":"code","b":[208,1],"m":"bne","oa":31288,"o":"b_7A38"},{"a":31287,"t":"code","b":[96],"m":"rts"},{"a":31288,"l":"b_7A38","t":"code","b":[201,137],"m":"cmp","o":"#$89","x":[31285]},{"a":31290,"t":"code","b":[208,1],"m":"bne","oa":31293,"o":"b_7A3D"},{"a":31292,"t":"code","b":[96],"m":"rts"},{"a":31293,"l":"b_7A3D","t":"code","b":[201,201],"m":"cmp","o":"#$C9","x":[31290]},{"a":31295,"t":"code","b":[208,1],"m":"bne","oa":31298,"o":"b_7A42"},{"a":31297,"t":"code","b":[96],"m":"rts"},{"a":31298,"l":"b_7A42","t":"code","b":[201,9],"m":"cmp","o":"#$09","x":[31295]},{"a":31300,"t":"code","b":[208,1],"m":"bne","oa":31303,"o":"b_7A47"},{"a":31302,"t":"code","b":[96],"m":"rts"},{"a":31303,"l":"b_7A47","t":"code","b":[32,80,120],"m":"jsr","oa":30800,"o":"room9_floor_logic","x":[31300]},{"a":31306,"t":"code","b":[96],"m":"rts"},{"a":31307,"t":"gap","n":5},{"a":31307,"t":"note","c":"Unused: 5 zero bytes after room9_floor_check.","note":"outside the tracked image"},{"a":31312,"l":"room9_respawn_hat","c":"Room 9's main loop calls this first after its lives test ($76B9): when $D015 is $49, $89, $C9 or $09 (Mr Hat's sprite 4 off after a death) it puts him back on the floor he died on: Y below $80 -> upper floor right, X $110, Y $5C, frame $2F; else lower floor left, X $30, Y $B4, frame $2C; colour $0B; sprite 4 on.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[30393]},{"a":31315,"t":"code","b":[201,73],"m":"cmp","o":"#$49"},{"a":31317,"t":"code","b":[240,13],"m":"beq","oa":31332,"o":"b_7A64"},{"a":31319,"t":"code","b":[201,137],"m":"cmp","o":"#$89"},{"a":31321,"t":"code","b":[240,9],"m":"beq","oa":31332,"o":"b_7A64"},{"a":31323,"t":"code","b":[201,201],"m":"cmp","o":"#$C9"},{"a":31325,"t":"code","b":[240,5],"m":"beq","oa":31332,"o":"b_7A64"},{"a":31327,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":31329,"t":"code","b":[240,1],"m":"beq","oa":31332,"o":"b_7A64"},{"a":31331,"t":"code","b":[96],"m":"rts"},{"a":31332,"l":"b_7A64","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[31317,31321,31325,31329]},{"a":31335,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":31337,"t":"code","b":[176,37],"m":"bcs","oa":31376,"o":"b_7A90"},{"a":31339,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":31342,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":31344,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":31347,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":31349,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":31352,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":31354,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":31357,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":31359,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":31362,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":31364,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":31367,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":31370,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":31372,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":31375,"t":"code","b":[96],"m":"rts"},{"a":31376,"l":"b_7A90","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[31337]},{"a":31379,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":31381,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":31384,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":31386,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":31389,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":31391,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":31394,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":31396,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":31399,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":31401,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":31404,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":31407,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":31409,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":31412,"t":"code","b":[96],"m":"rts"},{"a":31413,"t":"gap","n":11},{"a":31413,"t":"note","c":"Unused: 11 zero bytes after room9_respawn_hat.","note":"outside the tracked image"},{"a":31424,"l":"room10_sink_and_die","c":"Room 10 ($8421, once Mr Hat has climbed down to Y $40 or more on its ladder): moves him down one pixel at a time with delay_6x256 between steps until Y = $BE, then kills him ($55F5 -> $A877).","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[31435,33825]},{"a":31427,"t":"code","b":[32,209,122],"m":"jsr","oa":31441,"o":"delay_6x256"},{"a":31430,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":31433,"t":"code","b":[201,190],"m":"cmp","o":"#$BE"},{"a":31435,"t":"code","b":[208,243],"m":"bne","oa":31424,"o":"room10_sink_and_die"},{"a":31437,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":31440,"t":"code","b":[96],"m":"rts"},{"a":31441,"l":"delay_6x256","c":"Busy-wait of 6 x 256 inner loops, A untouched. Used by room10_sink_and_die ($7AC3) and by room 11's lift ($8295 going up, $8990 going down, moving sprite 5).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[31427,33429,35216]},{"a":31443,"l":"b_7AD3","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[31451]},{"a":31445,"l":"b_7AD5","t":"code","b":[200],"m":"iny","x":[31446]},{"a":31446,"t":"code","b":[208,253],"m":"bne","oa":31445,"o":"b_7AD5"},{"a":31448,"t":"code","b":[232],"m":"inx"},{"a":31449,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":31451,"t":"code","b":[208,246],"m":"bne","oa":31443,"o":"b_7AD3"},{"a":31453,"t":"code","b":[96],"m":"rts"},{"a":31454,"t":"gap","n":2},{"a":31454,"t":"note","c":"Unused: 2 zero bytes after delay_6x256.","note":"outside the tracked image"},{"a":31456,"l":"room9_climb_top_ladder","c":"Room 9: puts Mr Hat on the top-right ladder (X low byte $28, i.e. $128) and steps him with the stick ($4B20, which also animates the climbing frames) until Y = $30, where he leaves upwards to room 5 ($4ACD = $80, JMP $573D), or Y = $5C, back on the upper floor (RTS).","t":"code","b":[169,40],"m":"lda","o":"#$28","x":[30862,31255]},{"a":31458,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":31461,"l":"b_7AE5","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[31481]},{"a":31464,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":31467,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":31469,"t":"code","b":[208,8],"m":"bne","oa":31479,"o":"b_7AF7"},{"a":31471,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":31473,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":31476,"t":"code","b":[76,61,87],"m":"jmp","oa":22333,"o":"room5_setup"},{"a":31479,"l":"b_7AF7","t":"code","b":[201,92],"m":"cmp","o":"#$5C","x":[31469]},{"a":31481,"t":"code","b":[208,234],"m":"bne","oa":31461,"o":"b_7AE5"},{"a":31483,"t":"code","b":[96],"m":"rts"},{"a":31484,"t":"gap","n":4},{"a":31484,"t":"note","c":"Unused: 4 zero bytes after room9_climb_top_ladder.","note":"outside the tracked image"},{"a":31488,"l":"room9_climb_lower_ladder","c":"Room 9: puts Mr Hat on the ladder in the lower floor (X $88); the loop room9_ladder_loop follows.","t":"code","b":[169,136],"m":"lda","o":"#$88","x":[31179]},{"a":31490,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":31493,"l":"room9_ladder_loop","c":"Room 9: steps Mr Hat on the lower ladder with the stick ($4B20) and checks guardian touches (room9_ladder_collision) until Y >= $D8, where he leaves downwards to room 11 ($4ACD = $78, JMP $8480), or Y = $B4, back on the lower floor (RTS). Also run by room9_place_sprites when he arrives from below.","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[30177,31516]},{"a":31496,"t":"code","b":[32,32,123],"m":"jsr","oa":31520,"o":"room9_ladder_collision"},{"a":31499,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":31502,"t":"code","b":[201,216],"m":"cmp","o":"#$D8"},{"a":31504,"t":"code","b":[144,8],"m":"bcc","oa":31514,"o":"b_7B1A"},{"a":31506,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":31508,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":31511,"t":"code","b":[76,128,132],"m":"jmp","oa":33920,"o":"room11_setup"},{"a":31514,"l":"b_7B1A","t":"code","b":[201,180],"m":"cmp","o":"#$B4","x":[31504]},{"a":31516,"t":"code","b":[208,231],"m":"bne","oa":31493,"o":"room9_ladder_loop"},{"a":31518,"t":"code","b":[96],"m":"rts"},{"a":31519,"t":"gap","n":1},{"a":31519,"t":"note","c":"Unused: 1 zero byte after room9_ladder_loop.","note":"outside the tracked image"},{"a":31520,"l":"room9_ladder_collision","c":"Room 9, on the ladder: $55B0 sets $4ACE = $20 when the VIC's sprite collision register $D01E reads exactly $11, $12, $14, $18, $50 or $90 (Mr Hat with one of sprites 0, 1, 2, 3, 6, 7); then Mr Hat is killed ($55F5), put at Y $B4 and the flag cleared.","t":"code","b":[32,176,85],"m":"jsr","oa":21936,"o":"hat_collision_test","x":[31496]},{"a":31523,"t":"code","b":[173,206,74],"m":"lda","oa":19150,"o":"guardian_touch_flag"},{"a":31526,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":31528,"t":"code","b":[208,13],"m":"bne","oa":31543,"o":"r_7B37"},{"a":31530,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":31533,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":31535,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":31538,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":31540,"t":"code","b":[141,206,74],"m":"sta","oa":19150,"o":"guardian_touch_flag"},{"a":31543,"l":"r_7B37","t":"code","b":[96],"m":"rts","x":[31528]},{"a":31544,"t":"gap","n":8},{"a":31544,"t":"note","c":"Unused: 8 zero bytes after room9_ladder_collision.","note":"outside the tracked image"},{"a":31552,"l":"unused_crouch_and_die","c":"Unreferenced routine (nothing in the image jumps or points here): JSR $450A (an RTS), three stores to $D022, Mr Hat's crouch frame $2A, a delay of 250 x 256 loops, then JSR $55F5 (kill). Dead code.","t":"code","b":[32,10,69],"m":"jsr","oa":17674,"o":"rts_stub_450a"},{"a":31555,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":31557,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":31560,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":31562,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":31565,"t":"code","b":[169,170],"m":"lda","o":"#$AA"},{"a":31567,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":31570,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":31572,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":31575,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":31577,"l":"b_7B59","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[31585]},{"a":31579,"l":"b_7B5B","t":"code","b":[200],"m":"iny","x":[31580]},{"a":31580,"t":"code","b":[208,253],"m":"bne","oa":31579,"o":"b_7B5B"},{"a":31582,"t":"code","b":[232],"m":"inx"},{"a":31583,"t":"code","b":[224,250],"m":"cpx","o":"#$FA"},{"a":31585,"t":"code","b":[208,246],"m":"bne","oa":31577,"o":"b_7B59"},{"a":31587,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":31590,"t":"code","b":[96],"m":"rts"},{"a":31591,"t":"gap","n":9},{"a":31591,"t":"note","c":"Unused: 9 zero bytes after unused_crouch_and_die.","note":"outside the tracked image"},{"a":31600,"l":"room9_chaser","c":"Room 9's IRQ, last part (from $76AB): the upper-floor guardian, sprite 0, walks one pixel a frame towards Mr Hat's X, comparing only the low bytes $D000 and $D008 (so it ignores which side of X 256 he is on): right while below $F0, with frames $36/$37 (counter $64F4), left while at $20 or above, with frames $38/$39 (counter $64F5); each counter runs 1-4, giving the first frame for one interrupt and the second for three (count 4 resets it without a store). Level with him, or held at either limit, it shows the right-walking frames. Ends JMP $8215 (the common IRQ tail).","t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x","x":[30379]},{"a":31603,"t":"code","b":[205,8,208],"m":"cmp","o":"vic_sprite4_x"},{"a":31606,"t":"code","b":[208,3],"m":"bne","oa":31611,"o":"b_7B7B"},{"a":31608,"l":"b_7B78","t":"code","b":[76,151,123],"m":"jmp","oa":31639,"o":"j_7B97","x":[31618]},{"a":31611,"l":"b_7B7B","t":"code","b":[176,13],"m":"bcs","oa":31626,"o":"b_7B8A","x":[31606]},{"a":31613,"t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x"},{"a":31616,"t":"code","b":[201,240],"m":"cmp","o":"#$F0"},{"a":31618,"t":"code","b":[176,244],"m":"bcs","oa":31608,"o":"b_7B78"},{"a":31620,"t":"code","b":[238,0,208],"m":"inc","o":"vic_sprite0_x"},{"a":31623,"l":"b_7B87","t":"code","b":[76,151,123],"m":"jmp","oa":31639,"o":"j_7B97","x":[31631]},{"a":31626,"l":"b_7B8A","t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x","x":[31611]},{"a":31629,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":31631,"t":"code","b":[144,246],"m":"bcc","oa":31623,"o":"b_7B87"},{"a":31633,"t":"code","b":[206,0,208],"m":"dec","o":"vic_sprite0_x"},{"a":31636,"t":"code","b":[76,189,123],"m":"jmp","oa":31677,"o":"j_7BBD"},{"a":31639,"l":"j_7B97","t":"code","b":[238,244,100],"m":"inc","oa":25844,"o":"counter_64f4","x":[31608,31623]},{"a":31642,"t":"code","b":[173,244,100],"m":"lda","oa":25844,"o":"counter_64f4"},{"a":31645,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":31647,"t":"code","b":[176,8],"m":"bcs","oa":31657,"o":"b_7BA9"},{"a":31649,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":31651,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":31654,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":31657,"l":"b_7BA9","t":"code","b":[201,4],"m":"cmp","o":"#$04","x":[31647]},{"a":31659,"t":"code","b":[176,8],"m":"bcs","oa":31669,"o":"b_7BB5"},{"a":31661,"t":"code","b":[169,55],"m":"lda","o":"#$37"},{"a":31663,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":31666,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":31669,"l":"b_7BB5","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[31659]},{"a":31671,"t":"code","b":[141,244,100],"m":"sta","oa":25844,"o":"counter_64f4"},{"a":31674,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":31677,"l":"j_7BBD","t":"code","b":[238,245,100],"m":"inc","oa":25845,"o":"counter_64f5","x":[31636]},{"a":31680,"t":"code","b":[173,245,100],"m":"lda","oa":25845,"o":"counter_64f5"},{"a":31683,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":31685,"t":"code","b":[176,8],"m":"bcs","oa":31695,"o":"b_7BCF"},{"a":31687,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":31689,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":31692,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":31695,"l":"b_7BCF","t":"code","b":[201,4],"m":"cmp","o":"#$04","x":[31685]},{"a":31697,"t":"code","b":[176,8],"m":"bcs","oa":31707,"o":"b_7BDB"},{"a":31699,"t":"code","b":[169,57],"m":"lda","o":"#$39"},{"a":31701,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":31704,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":31707,"l":"b_7BDB","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[31697]},{"a":31709,"t":"code","b":[141,245,100],"m":"sta","oa":25845,"o":"counter_64f5"},{"a":31712,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":31715,"t":"gap","n":29},{"a":31718,"t":"note","c":"Unused: 26 zero bytes.","note":"outside the tracked image"},{"a":31744,"l":"golden_hat_bitmap","c":"The Golden Hat: a 3x3-cell hires bitmap (rows of 24 bytes; a top hat, crown over a wide brim, in the bottom two pixel lines of the top cell row and the whole middle cell row; the bottom cell row, $7C30-$7C47, is blank), drawn by draw_golden_hat ($7C50) in yellow on grey.","t":"byte","b":[0,0,0,0,0,0,3,7]},{"a":31752,"t":"byte","b":[0,0,0,0,0,0,255,254]},{"a":31760,"t":"byte","b":[0,0,0,0,0,0,192,96]},{"a":31768,"t":"byte","b":[7,7,7,7,7,0,63,63]},{"a":31776,"t":"byte","b":[254,254,254,252,255,0,255,255]},{"a":31784,"t":"byte","b":[96,96,96,224,224,0,252,252]},{"a":31792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31816,"c":"Unused: 8 zero bytes after the Golden Hat bitmap.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31824,"l":"draw_golden_hat","c":"Room 11's set-up ($8589, X = 6, Y = 16): colours a 3x3-cell block yellow on grey ($7C via $A67F) and copies golden_hat_bitmap ($7C00) into the bitmap at that cell ($A690). The win test win_check_golden_hat ($7CC0) fires on the bottom floor (Y $B4), level with it, at X below $80.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[34185]},{"a":31826,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":31828,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":31830,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":31832,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":31834,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":31836,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":31838,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":31840,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":31843,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":31845,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":31847,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":31849,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":31851,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":31854,"t":"code","b":[96],"m":"rts"},{"a":31855,"t":"gap","n":1},{"a":31855,"t":"note","c":"Unused: 1 zero byte after draw_golden_hat.","note":"outside the tracked image"},{"a":31856,"l":"irq_tail_f1_music_switch","c":"Common IRQ tail (from $8C12, reached from every room's IRQ through $8215 -> $BF30): when the KERNAL's current-key byte $C5 is 4 (F1), flips the music-off flag $1019 and waits at $1790 so one press counts once; while $1019 = 1 the chain leaves at the KERNAL's $EA31 before $8C33, the in-play tune, so F1 switches the music of play off and on in every room. It is not a pause: live (work/pausetest.py, 2 October 2026) the guardians kept moving with $1019 = 1 and the tune pointer $8C58 stood still. $1019 is cleared at $6F2F when a game starts.","t":"code","b":[165,197],"m":"lda","oa":197,"o":"kernal_last_key","x":[35858]},{"a":31858,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":31860,"t":"code","b":[208,11],"m":"bne","oa":31873,"o":"b_7C81"},{"a":31862,"t":"code","b":[173,25,16],"m":"lda","oa":4121,"o":"f1_toggle"},{"a":31865,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":31867,"t":"code","b":[141,25,16],"m":"sta","oa":4121,"o":"f1_toggle"},{"a":31870,"t":"code","b":[32,144,23],"m":"jsr","oa":6032,"o":"delay_f1_debounce"},{"a":31873,"l":"b_7C81","t":"code","b":[173,25,16],"m":"lda","oa":4121,"o":"f1_toggle","x":[31860]},{"a":31876,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":31878,"t":"code","b":[208,3],"m":"bne","oa":31883,"o":"b_7C8B"},{"a":31880,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":31883,"l":"b_7C8B","t":"code","b":[76,51,140],"m":"jmp","oa":35891,"o":"tune1_count","x":[31878]},{"a":31886,"t":"gap","n":18},{"a":31886,"t":"note","c":"Unreferenced bytes: two zeros, $E0 $C0 $80 (it looks like the end of a bitmap) and 13 zeros. No reader found.","note":"outside the tracked image"},{"a":31904,"l":"small_figure_bitmap","c":"A 2x2-cell hires bitmap (16 bytes for the top two cells, then 16 for the bottom two; its last byte is the RTS at $7CBF): a small spiky creature or spark. Read only by three unreferenced IRQ fragments at $88A0-$88FD (no path reaches them), which would copy it to bitmap $3458/$3598, $3580/$36C0 or $3308/$3448; the last two also colour their cells $7C (yellow on grey). It never reaches the screen.","t":"byte","b":[0,0,32,24,31,15,15,31],"x":[34978,35015,35052]},{"a":31912,"t":"byte","b":[64,64,196,200,248,240,240,240]},{"a":31920,"l":"small_figure_bitmap_bottom","c":"Bottom half (two cells, 16 bytes) of small_figure_bitmap, read as $7CB0,X at $88A8, $88CD and $88F2, inside unreferenced IRQ fragments that never run; its last byte, $60, is also the RTS at $7CBF.","t":"byte","b":[127,15,3,1,1,1,1,0],"x":[34984,35021,35058]},{"a":31928,"t":"byte","b":[248,252,194,128,0,0,0]},{"a":31935,"l":"win_check_exit","c":"The RTS that win_check_golden_hat's three tests branch back to (no win yet); the same byte, $60, is the last one of small_figure_bitmap.","t":"code","b":[96],"m":"rts","x":[31941,31948,31955]},{"a":31936,"l":"win_check_golden_hat","c":"Room 11 (called through $82E9): the win test. When Mr Hat is on the bottom floor at Y = $B4 with X below $80 (level with the Golden Hat drawn at cell 6,16, from the left wall to some way right of it), clears $BD and $FB, sets $FD = $2C, $FF = $2F and $64FF = 0, gives the IRQ back to the KERNAL ($B675: $0314 = $EA31), sets $1018 = 1 and calls $16A0 (screen blanking toggle, then the title routine $16A3, whose $CDEE then draws \"WONDERFUL\" / \"YOU HAVE FINISHED YOUR MISSION\" through $BFA8 instead of the cast, before the title's fire wait $1770), then JMP $0870: a new game.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[33513]},{"a":31939,"t":"code","b":[201,176],"m":"cmp","o":"#$B0"},{"a":31941,"t":"code","b":[176,248],"m":"bcs","oa":31935,"o":"win_check_exit"},{"a":31943,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":31946,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":31948,"t":"code","b":[208,241],"m":"bne","oa":31935,"o":"win_check_exit"},{"a":31950,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":31953,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":31955,"t":"code","b":[176,234],"m":"bcs","oa":31935,"o":"win_check_exit"},{"a":31957,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":31959,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":31961,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":31963,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":31965,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":31967,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":31969,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":31971,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":31973,"t":"code","b":[141,255,100],"m":"sta","oa":25855,"o":"value_64ff"},{"a":31976,"t":"code","b":[32,117,182],"m":"jsr","oa":46709,"o":"restore_kernal_irq"},{"a":31979,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":31981,"t":"code","b":[141,24,16],"m":"sta","oa":4120,"o":"title_mode_flag"},{"a":31984,"t":"code","b":[32,160,22],"m":"jsr","oa":5792,"o":"title_after_blank"},{"a":31987,"t":"code","b":[76,112,8],"m":"jmp","oa":2160,"o":"new_game"},{"a":31990,"t":"gap","n":4},{"a":31990,"t":"note","c":"Unreachable bytes after win_check_golden_hat's JMP $0870: NOP, then JMP $7D70 (into old_ending_tune). Most likely the old continuation of the win test, before Mr. Hat's own win screen replaced it.","note":"outside the tracked image"},{"a":31994,"l":"old_irq_flash_border","c":"Unreferenced IRQ fragment: INC $D020 (border colour) and JMP $EA31. No IRQ vector or jump points here.","t":"code","b":[238,32,208],"m":"inc","o":"vic_border"},{"a":31997,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":32000,"t":"gap","n":1},{"a":32000,"t":"note","c":"A stray byte ($35) between two unreferenced IRQ fragments.","note":"outside the tracked image"},{"a":32001,"l":"old_ending_walk_left","c":"Unreferenced IRQ fragment (nothing points at it): walks Mr Hat (sprite 4) left two pixels per interrupt while his X is $38 or more, cycling his frames $2F-$31 through $FF with $FB as the frame timer; below $38 it sets $64FF = $20. Ends JMP $EA31. Its variables are exactly the ones win_check_golden_hat ($7CC0) initialises ($FB = 0, $FD = $2C, $FF = $2F, $64FF = 0): an ending animation whose dispatcher on $64FF is not in the image.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":32004,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":32006,"t":"code","b":[144,38],"m":"bcc","oa":32046,"o":"b_7D2E"},{"a":32008,"t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte"},{"a":32010,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":32012,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":32015,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":32017,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":32019,"t":"code","b":[208,16],"m":"bne","oa":32037,"o":"b_7D25"},{"a":32021,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":32023,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":32025,"t":"code","b":[230,255],"m":"inc","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":32027,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":32029,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":32031,"t":"code","b":[208,4],"m":"bne","oa":32037,"o":"b_7D25"},{"a":32033,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":32035,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":32037,"l":"b_7D25","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[32019,32031]},{"a":32040,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":32043,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":32046,"l":"b_7D2E","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[32006]},{"a":32048,"t":"code","b":[141,255,100],"m":"sta","oa":25855,"o":"value_64ff"},{"a":32051,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":32054,"l":"old_ending_walk_right","c":"Unreferenced IRQ fragment, the partner of old_ending_walk_left: walks Mr Hat right two pixels per interrupt while X is below $88, frames $2C-$2E through $FD; at $88 sets $64FF = 0 and increments $F5 (which old_ending_tune tests for 2: two walks). Ends JMP $EA31.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":32057,"t":"code","b":[201,136],"m":"cmp","o":"#$88"},{"a":32059,"t":"code","b":[176,38],"m":"bcs","oa":32099,"o":"b_7D63"},{"a":32061,"t":"code","b":[230,251],"m":"inc","oa":251,"o":"walk_tick_or_fill_byte"},{"a":32063,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":32065,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":32068,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"walk_tick_or_fill_byte"},{"a":32070,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":32072,"t":"code","b":[208,16],"m":"bne","oa":32090,"o":"b_7D5A"},{"a":32074,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":32076,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":32078,"t":"code","b":[230,253],"m":"inc","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":32080,"t":"code","b":[165,253],"m":"lda","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":32082,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":32084,"t":"code","b":[208,4],"m":"bne","oa":32090,"o":"b_7D5A"},{"a":32086,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":32088,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":32090,"l":"b_7D5A","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[32072,32084]},{"a":32093,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":32096,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":32099,"l":"b_7D63","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[32059]},{"a":32101,"t":"code","b":[141,255,100],"m":"sta","oa":25855,"o":"value_64ff"},{"a":32104,"t":"code","b":[230,245],"m":"inc","oa":245,"o":"room_var_f5"},{"a":32106,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":32109,"t":"gap","n":3},{"a":32109,"t":"note","c":"Unused: 3 zero bytes after old_ending_walk_right.","note":"outside the tracked image"},{"a":32112,"l":"old_ending_tune","c":"Dead code, typed as bytes because it calls into data: Lupenio-style ending. $7D70 holds $15 $D5 $AE (probably a JSR $AED5 whose opcode byte was overwritten). From $7D73: LDA #$0F STA $D418 (volume); attack/decay $38 on voices 1, 2 and 3 ($D405, $D40C, $D413), sustain/release $38 on voices 1 and 2 ($D406, $D40D; the third store goes to $1514, not $D414); sawtooth with gate ($21) on voices 1 and 3 only ($D404, $D412; voice 2's $D40B is not written). Then a loop that plays frequencies from a table at $B100,X on all three voices with delays from $B000,Y; X steps by 2 and at $86 the loop starts again from 0 ($7DE7 JMP $7DA1); it leaves only when $F5 = 2 (JMP $7DEA). $7DEA: JSR $AED5, JSR $80A3 (all sprites off), four NOPs; $7DF4: SEI, $0314/$0315 = $EA31, CLI, $D018 = $15, $D011 = $1B (text mode), $01 = $36, prints CHR$(147) and CHR$(31) with $FFD2, sets $FE/$FF = $7E28 (the congratulation text) and JSR $A000, then JMP $8000 (wait for F1, restart). In this image $AED5 and $B000 are graphics (tile_band_bottom, gfx_lamp_tail), $B100 is Mr. Hat code and $A000-$A1F5 is all zero, so the routine could not work; the only way in is the unreachable JMP at $7CF7.","t":"byte","b":[21,213,174,169,15,141,24,212]},{"a":32120,"t":"byte","b":[169,56,141,20,21,141,13,212]},{"a":32128,"t":"byte","b":[169,56,141,6,212,169,56,141]},{"a":32136,"t":"byte","b":[19,212,141,12,212,169,56,141]},{"a":32144,"t":"byte","b":[5,212,169,33,141,4,212,169]},{"a":32152,"t":"byte","b":[19,141,1,212,169,33,141,18]},{"a":32160,"t":"byte","b":[212,162,0,160,0,165,245,201]},{"a":32168,"t":"byte","b":[2,208,3,76,234,125,189,0]},{"a":32176,"t":"byte","b":[177,141,0,212,189,0,177,141]},{"a":32184,"t":"byte","b":[7,212,141,14,212,189,1,177]},{"a":32192,"t":"byte","b":[141,1,212,189,1,177,141,8]},{"a":32200,"t":"byte","b":[212,141,15,212,138,72,152,72]},{"a":32208,"t":"byte","b":[185,0,176,162,0,168,232,208]},{"a":32216,"t":"byte","b":[253,136,208,250,104,168,104,170]},{"a":32224,"t":"byte","b":[232,232,200,224,134,144,190,76]},{"a":32232,"t":"byte","b":[161,125,32,213,174,32,163,128]},{"a":32240,"t":"byte","b":[234,234,234,234,120,169,49,141]},{"a":32248,"t":"byte","b":[20,3,169,234,141,21,3,88]},{"a":32256,"t":"byte","b":[169,21,141,24,208,169,27,141]},{"a":32264,"t":"byte","b":[17,208,169,54,141,1,0,169]},{"a":32272,"t":"byte","b":[147,32,210,255,169,31,32,210]},{"a":32280,"t":"byte","b":[255,169,40,133,254,169,126,133]},{"a":32288,"t":"byte","b":[255,32,0,160,76,0,128,0]},{"a":32296,"l":"lupenio_congratulation_text","c":"Lupenio's congratulation text, PETSCII with cursor controls ($0D return, $91 up, $11 down, $1D right used as the space; two $01 bytes at $7E75 for the print routine, meaning unknown), ending with a $00 at $7FE9: \"SIPE COPYRIGHT STUPITA ANNUNCIA CHE GIOCATORE ECCEZIONALE E BRILLANTE! SEI UNO DEI POCHI CHE HA RISOLTO QUESTO DIFFICILE GIOCO BASATO SULLE PERICOLOSE E FURTIVE AVVENTURE DI LUPENIO. NON ERA FACILE SCOPRIRE LA RELAZIONE TRA LE CHIAVI E LE PORTE... BENE,MOLTO BENE!! UNA STRETTA DI MANO AL RE DEI VIDEOGIOCHI CON LE CONGRATULAZIONI DELLA: S I P E / ORA RIPROVA CON 200.000 PUNTI / PREMI F1\". Its only pointer is the LDA #$28 / LDA #$7E pair at $7E19/$7E1D inside old_ending_tune (dead code, calling an empty $A000); no other byte pair $28 $7E, $31 $7E or split immediate for it exists in the image. Mr. Hat never prints it.","t":"byte","b":[13,145,29,29,83,73,80,69]},{"a":32304,"t":"byte","b":[29,67,79,80,89,82,73,71]},{"a":32312,"t":"byte","b":[72,84,29,83,84,85,80,73]},{"a":32320,"t":"byte","b":[84,65,29,65,78,78,85,78]},{"a":32328,"t":"byte","b":[67,73,65,13,17,29,67,72]},{"a":32336,"t":"byte","b":[69,29,71,73,79,67,65,84]},{"a":32344,"t":"byte","b":[79,82,69,29,69,67,67,69]},{"a":32352,"t":"byte","b":[90,73,79,78,65,76,69,29]},{"a":32360,"t":"byte","b":[69,29,66,82,73,76,76,65]},{"a":32368,"t":"byte","b":[78,84,69,33,13,1,1,29]},{"a":32376,"t":"byte","b":[83,69,73,29,85,78,79,29]},{"a":32384,"t":"byte","b":[68,69,73,29,80,79,67,72]},{"a":32392,"t":"byte","b":[73,29,67,72,69,29,72,65]},{"a":32400,"t":"byte","b":[29,82,73,83,79,76,84,79]},{"a":32408,"t":"byte","b":[29,81,85,69,83,84,79,29]},{"a":32416,"t":"byte","b":[68,73,70,70,73,67,73,76]},{"a":32424,"t":"byte","b":[69,29,71,73,79,67,79,29]},{"a":32432,"t":"byte","b":[66,65,83,65,84,79,29,83]},{"a":32440,"t":"byte","b":[85,76,76,69,29,80,69,82]},{"a":32448,"t":"byte","b":[73,67,79,76,79,45,13,29]},{"a":32456,"t":"byte","b":[83,69,29,69,29,70,85,82]},{"a":32464,"t":"byte","b":[84,73,86,69,29,65,86,86]},{"a":32472,"t":"byte","b":[69,78,84,85,82,69,29,68]},{"a":32480,"t":"byte","b":[73,29,76,85,80,69,78,73]},{"a":32488,"t":"byte","b":[79,46,13,29,78,79,78,29]},{"a":32496,"t":"byte","b":[69,82,65,29,70,65,67,73]},{"a":32504,"t":"byte","b":[76,69,29,83,67,79,80,82]},{"a":32512,"t":"byte","b":[73,82,69,29,76,65,29,82]},{"a":32520,"t":"byte","b":[69,76,65,90,73,79,78,69]},{"a":32528,"t":"byte","b":[13,29,84,82,65,29,76,69]},{"a":32536,"t":"byte","b":[29,67,72,73,65,86,73,29]},{"a":32544,"t":"byte","b":[69,29,76,69,29,80,79,82]},{"a":32552,"t":"byte","b":[84,69,46,46,46,13,29,66]},{"a":32560,"t":"byte","b":[69,78,69,44,77,79,76,84]},{"a":32568,"t":"byte","b":[79,29,66,69,78,69,33,33]},{"a":32576,"t":"byte","b":[13,29,85,78,65,29,83,84]},{"a":32584,"t":"byte","b":[82,69,84,84,65,29,68,73]},{"a":32592,"t":"byte","b":[29,77,65,78,79,29,65,76]},{"a":32600,"t":"byte","b":[29,82,69,29,68,69,73,29]},{"a":32608,"t":"byte","b":[86,73,68,69,79,45,13,29]},{"a":32616,"t":"byte","b":[71,73,79,67,72,73,29,67]},{"a":32624,"t":"byte","b":[79,78,29,76,69,29,67,79]},{"a":32632,"t":"byte","b":[78,71,82,65,84,85,76,65]},{"a":32640,"t":"byte","b":[90,73,79,78,73,29,68,69]},{"a":32648,"t":"byte","b":[76,76,65,58,13,17,29,29]},{"a":32656,"t":"byte","b":[29,29,29,29,29,29,29,29]},{"a":32664,"t":"byte","b":[29,29,83,29,29,29,29,73]},{"a":32672,"t":"byte","b":[29,29,29,29,80,29,29,29]},{"a":32680,"t":"byte","b":[29,69,13,17,29,29,29,29]},{"a":32688,"t":"byte","b":[29,79,82,65,29,82,73,80]},{"a":32696,"t":"byte","b":[82,79,86,65,29,67,79,78]},{"a":32704,"t":"byte","b":[29]},{"a":32705,"l":"lupenio_text_bonus_digit","c":"The first digit of \"200.000 PUNTI\" in Lupenio's text: still written by Mr. Hat's code, '2' ($32) at $8027 (the restart after the last life, from $4486) and '4' ($34) at $80C1 (only when replay_bonus_state is $20, which never happens in Mr. Hat). The text itself is never printed.","t":"byte","b":[50,48,48,46,48,48,48,29],"x":[32807,32961]},{"a":32713,"t":"byte","b":[80,85,78,84,73,13,17,17]},{"a":32721,"t":"byte","b":[29,29,29,29,29,29,29,29]},{"a":32729,"t":"byte","b":[29,29,29,29,29,29,29,80]},{"a":32737,"t":"byte","b":[82,69,77,73,29,70,49,17]},{"a":32745,"t":"byte","b":[0]},{"a":32746,"t":"gap","n":22},{"a":32746,"t":"note","c":"Unused: 22 zero bytes to the end of the range.","note":"outside the tracked image"},{"a":32768,"l":"wait_f1_replay","c":"End of Lupenio's ending, never reached in Mr. Hat: its only way in is JMP $8000 at $7E24, after $7E0F-$7E21 would have printed the text at $7E28 ('ORA RIPROVA CON 200.000 PUNTI ... PREMI F1'), inside the dead old_ending_tune. Loops until the KERNAL's current-key byte $C5 reads 4 (F1), then sets the replay bonus flag $75F0 to $20 if it was 0, or to $40 if it was not, and restarts play at $0870 ($9265 bitmap on, $087E, $6E00) without the title.","t":"code","b":[165,197],"m":"lda","oa":197,"o":"kernal_last_key","x":[32772]},{"a":32770,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":32772,"t":"code","b":[208,250],"m":"bne","oa":32768,"o":"wait_f1_replay"},{"a":32774,"t":"code","b":[173,240,117],"m":"lda","oa":30192,"o":"replay_bonus_state"},{"a":32777,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":32779,"t":"code","b":[240,8],"m":"beq","oa":32789,"o":"b_8015"},{"a":32781,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":32783,"t":"code","b":[141,240,117],"m":"sta","oa":30192,"o":"replay_bonus_state"},{"a":32786,"t":"code","b":[76,112,8],"m":"jmp","oa":2160,"o":"new_game"},{"a":32789,"l":"b_8015","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[32779]},{"a":32791,"t":"code","b":[141,240,117],"m":"sta","oa":30192,"o":"replay_bonus_state"},{"a":32794,"t":"code","b":[76,112,8],"m":"jmp","oa":2160,"o":"new_game"},{"a":32797,"t":"gap","n":3},{"a":32800,"l":"game_over_reset_bonus","c":"Game over, last step: JMP $8020 from $4486, after $4475 has switched Mr Hat off, run the title ($16A0 \u2192 $16A3, which waits for fire) and $45D5. Clears the replay bonus flag $75F0, puts '2' ($32) back as the first digit of '200.000' in the end text at $7FC1, and restarts play at $0870.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[17542]},{"a":32802,"t":"code","b":[141,240,117],"m":"sta","oa":30192,"o":"replay_bonus_state"},{"a":32805,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":32807,"t":"code","b":[141,193,127],"m":"sta","oa":32705,"o":"lupenio_text_bonus_digit"},{"a":32810,"t":"code","b":[76,112,8],"m":"jmp","oa":2160,"o":"new_game"},{"a":32813,"l":"start_score_by_bonus","c":"Score at the start of play: called from $1BED, at the end of room 1's set-up chain ($6E05 \u2192 $6FB2 JMP $17DF \u2192 $1A1E \u2192 $1A2A). $8145 first (sprite 2 at Y $35, $99 = 0); then by the replay bonus flag $75F0: 0 \u2192 $8042, the six SCORE digits redrawn as 000000; $20 \u2192 $80B0, 200 steps of 1,000 points; anything else ($40) \u2192 $8590, 400 steps. In Mr. Hat only the first path runs: $75F0 is set to $20/$40 only at $800F/$8017 (wait_f1_replay, dead) and $80BC (inside bonus_200k), and it is 0 in every snapshot.","t":"code","b":[32,69,129],"m":"jsr","oa":33093,"o":"sprite2_y35_clear99","x":[7149]},{"a":32816,"t":"code","b":[173,240,117],"m":"lda","oa":30192,"o":"replay_bonus_state"},{"a":32819,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":32821,"t":"code","b":[240,11],"m":"beq","oa":32834,"o":"b_8042"},{"a":32823,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":32825,"t":"code","b":[240,117],"m":"beq","oa":32944,"o":"bonus_200k"},{"a":32827,"t":"code","b":[234],"m":"nop"},{"a":32828,"t":"code","b":[234],"m":"nop"},{"a":32829,"t":"code","b":[234],"m":"nop"},{"a":32830,"t":"code","b":[32,144,133],"m":"jsr","oa":34192,"o":"bonus_400k"},{"a":32833,"t":"code","b":[96],"m":"rts"},{"a":32834,"l":"b_8042","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[32821]},{"a":32836,"l":"b_8044","t":"code","b":[189,0,22],"m":"lda","oa":5632,"o":"digit_zero_top,x","x":[32881]},{"a":32839,"t":"code","b":[157,40,61],"m":"sta","oa":15656,"o":"score_digit_100k_top,x"},{"a":32842,"t":"code","b":[157,48,61],"m":"sta","oa":15664,"o":"score_digit_10k_top,x"},{"a":32845,"t":"code","b":[157,56,61],"m":"sta","oa":15672,"o":"score_digit_1k_top,x"},{"a":32848,"t":"code","b":[157,64,61],"m":"sta","oa":15680,"o":"f_3D40,x"},{"a":32851,"t":"code","b":[157,72,61],"m":"sta","oa":15688,"o":"f_3D48,x"},{"a":32854,"t":"code","b":[157,80,61],"m":"sta","oa":15696,"o":"f_3D50,x"},{"a":32857,"t":"code","b":[189,8,22],"m":"lda","oa":5640,"o":"digit_zero_bottom,x"},{"a":32860,"t":"code","b":[157,104,62],"m":"sta","oa":15976,"o":"score_digit_100k_bottom,x"},{"a":32863,"t":"code","b":[157,112,62],"m":"sta","oa":15984,"o":"score_digit_10k_bottom,x"},{"a":32866,"t":"code","b":[157,120,62],"m":"sta","oa":15992,"o":"score_digit_1k_bottom,x"},{"a":32869,"t":"code","b":[157,128,62],"m":"sta","oa":16000,"o":"f_3E80,x"},{"a":32872,"t":"code","b":[157,136,62],"m":"sta","oa":16008,"o":"f_3E88,x"},{"a":32875,"t":"code","b":[157,144,62],"m":"sta","oa":16016,"o":"f_3E90,x"},{"a":32878,"t":"code","b":[232],"m":"inx"},{"a":32879,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":32881,"t":"code","b":[208,209],"m":"bne","oa":32836,"o":"b_8044"},{"a":32883,"t":"code","b":[96],"m":"rts"},{"a":32884,"l":"unused_zero_8074","c":"Unused: 12 zero bytes after start_score_by_bonus's copy loop ($8074-$807F); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32892,"t":"byte","b":[0,0,0,0]},{"a":32896,"l":"set_walk_frames","c":"Sets the walking-frame counters to their first values: $FD = $2C (walking right, $5340 cycles it $2C-$2E) and $FF = $2F (walking left, $5370 cycles $2F-$31). Called from $6065 in room 6's code (set-up $5E10, room id 6 at $5EEA).","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[24677]},{"a":32898,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":32900,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":32902,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":32904,"t":"code","b":[96],"m":"rts"},{"a":32905,"l":"draw_room_digit_8","c":"Status line: copies the glyph '8' ($1680/$1688; the digit font at $1600 is 16 bytes a digit, 8 for the top cell and 8 for the bottom) into the ROOM digit cell, bitmap $3D80 and $3EC0 (rows 23-24, column 24). Called from $682B in room 8's code (set-up $65E0, room id 8 at $668F).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[26667]},{"a":32907,"l":"b_808B","t":"code","b":[189,128,22],"m":"lda","oa":5760,"o":"digit_eight_top,x","x":[32922]},{"a":32910,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":32913,"t":"code","b":[189,136,22],"m":"lda","oa":5768,"o":"digit_eight_bottom,x"},{"a":32916,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":32919,"t":"code","b":[232],"m":"inx"},{"a":32920,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":32922,"t":"code","b":[208,239],"m":"bne","oa":32907,"o":"b_808B"},{"a":32924,"t":"code","b":[96],"m":"rts"},{"a":32925,"l":"set_1e08_sprite3_blue","c":"Sets $1E08 = $FA and sprite 3's colour $D02A = 6 (blue), through $B982. Called from $75CA in room 9's code (set-up $7140, room id 9 at $7250), just before it points the IRQ at $7600.","t":"code","b":[169,250],"m":"lda","o":"#$FA","x":[30154]},{"a":32927,"t":"code","b":[32,130,185],"m":"jsr","oa":47490,"o":"set_1e08_sprite3_col6"},{"a":32930,"t":"code","b":[96],"m":"rts"},{"a":32931,"l":"all_sprites_off","c":"Switches every sprite off (AND #$00 into $D015). Its only caller is the JSR at $7DED, inside the dead Lupenio ending $7D70-$7E27 (typed as bytes; nothing reaches it), so this never runs; there it is the first step of the end sequence at $7DEA, which then sets text mode and prints Lupenio's congratulation text.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":32934,"t":"code","b":[41,0],"m":"and","o":"#$00"},{"a":32936,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":32939,"t":"code","b":[96],"m":"rts"},{"a":32940,"t":"gap","n":4},{"a":32944,"l":"bonus_200k","c":"Replay bonus for flag $20: adds 200 x 1,000 points (200 calls of $41DA, which steps the score's thousands digit), then sets $75F0 = $40 and the end text's digit at $7FC1 to '4', so the next completion would offer '400.000'. Never runs in Mr. Hat: $75F0 = $20 is set only at $8017 in wait_f1_replay, which only the dead Lupenio ending reaches.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[32825]},{"a":32946,"l":"b_80B2","t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000","x":[32952]},{"a":32949,"t":"code","b":[200],"m":"iny"},{"a":32950,"t":"code","b":[192,200],"m":"cpy","o":"#$C8"},{"a":32952,"t":"code","b":[208,248],"m":"bne","oa":32946,"o":"b_80B2"},{"a":32954,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":32956,"t":"code","b":[141,240,117],"m":"sta","oa":30192,"o":"replay_bonus_state"},{"a":32959,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":32961,"t":"code","b":[141,193,127],"m":"sta","oa":32705,"o":"lupenio_text_bonus_digit"},{"a":32964,"t":"code","b":[96],"m":"rts"},{"a":32965,"t":"gap","n":3},{"a":32968,"l":"room11_check_hat_off","c":"Room 11: if Mr Hat (sprite 4) is switched off in $D015 and his X high bit in $D010 is clear, runs $80E0 to put him back at the top of the ladder; otherwise returns. Called from the room-11 loop at $86B9.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[34489]},{"a":32971,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":32973,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":32975,"t":"code","b":[240,12],"m":"beq","oa":32989,"o":"r_80DD"},{"a":32977,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":32980,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":32982,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":32984,"t":"code","b":[240,3],"m":"beq","oa":32989,"o":"r_80DD"},{"a":32986,"t":"code","b":[76,224,128],"m":"jmp","oa":32992,"o":"room11_hat_to_ladder_top"},{"a":32989,"l":"r_80DD","t":"code","b":[96],"m":"rts","x":[32975,32984]},{"a":32990,"t":"gap","n":2},{"a":32992,"l":"room11_hat_to_ladder_top","c":"Room 11: switches sprite 4 on with pointer $32 (climbing frame), colour $0B, X $88, Y $31 (the top of the room's ladder), and runs the ladder climb $8949. Reached from $80DA.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[32986]},{"a":32995,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":32997,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":33000,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":33002,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":33005,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":33007,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":33010,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":33012,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":33015,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":33017,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":33020,"t":"code","b":[32,73,137],"m":"jsr","oa":35145,"o":"room11_ladder"},{"a":33023,"t":"code","b":[96],"m":"rts"},{"a":33024,"l":"draw_stage_digit_2","c":"Status line: copies the glyph '2' ($1620/$1628) into the STAGE digit cell, bitmap $3DB8 and $3EF8 (rows 23-24, column 31). Called from $812C and $813A.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[33068,33082]},{"a":33026,"l":"b_8102","t":"code","b":[189,32,22],"m":"lda","oa":5664,"o":"digit_two_top,x","x":[33041]},{"a":33029,"t":"code","b":[157,184,61],"m":"sta","oa":15800,"o":"status_stage_digit_top,x"},{"a":33032,"t":"code","b":[189,40,22],"m":"lda","oa":5672,"o":"digit_two_bottom,x"},{"a":33035,"t":"code","b":[157,248,62],"m":"sta","oa":16120,"o":"status_stage_digit_bottom,x"},{"a":33038,"t":"code","b":[232],"m":"inx"},{"a":33039,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":33041,"t":"code","b":[208,239],"m":"bne","oa":33026,"o":"b_8102"},{"a":33043,"t":"code","b":[96],"m":"rts"},{"a":33044,"l":"draw_stage_digit_3","c":"Status line: copies the glyph '3' ($1630/$1638) into the STAGE digit cell, bitmap $3DB8 and $3EF8. Called from $8141.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[33089]},{"a":33046,"l":"b_8116","t":"code","b":[189,48,22],"m":"lda","oa":5680,"o":"digit_three_top,x","x":[33061]},{"a":33049,"t":"code","b":[157,184,61],"m":"sta","oa":15800,"o":"status_stage_digit_top,x"},{"a":33052,"t":"code","b":[189,56,22],"m":"lda","oa":5688,"o":"digit_three_bottom,x"},{"a":33055,"t":"code","b":[157,248,62],"m":"sta","oa":16120,"o":"status_stage_digit_bottom,x"},{"a":33058,"t":"code","b":[232],"m":"inx"},{"a":33059,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":33061,"t":"code","b":[208,239],"m":"bne","oa":33046,"o":"b_8116"},{"a":33063,"t":"code","b":[96],"m":"rts"},{"a":33064,"l":"stage2_status","c":"Clears $99 and shows STAGE 2 ($8100). Called from $4850 in room 3's set-up (room id 3 at $478E, ROOM digit '3' drawn at $4829) and from $8133.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[18512,33075]},{"a":33066,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":33068,"t":"code","b":[32,0,129],"m":"jsr","oa":33024,"o":"draw_stage_digit_2"},{"a":33071,"t":"code","b":[96],"m":"rts"},{"a":33072,"l":"room2_flash_stage2","c":"Runs $504A (steps background colour 1 $D022 through the colours at $503B and $5043) and then $8128 (STAGE 2). Called from $5076 in room 2's code (set-up $4D80, room id 2 at $4EAF).","t":"code","b":[32,74,80],"m":"jsr","oa":20554,"o":"set_d022_from_table","x":[20598]},{"a":33075,"t":"code","b":[32,40,129],"m":"jsr","oa":33064,"o":"stage2_status"},{"a":33078,"t":"code","b":[96],"m":"rts"},{"a":33079,"l":"room5_status","c":"Shows ROOM 5 ($4DA0 draws '5' in column 24) and STAGE 2 ($8100). Called from $573D, the entry just before room 5's set-up at $5740 (room id 5 at $57FD), which $7AF4 jumps to.","t":"code","b":[32,160,77],"m":"jsr","oa":19872,"o":"show_room_digit_5","x":[22333]},{"a":33082,"t":"code","b":[32,0,129],"m":"jsr","oa":33024,"o":"draw_stage_digit_2"},{"a":33085,"t":"code","b":[96],"m":"rts"},{"a":33086,"l":"fill_then_stage3","c":"Colour fill with $56ED (from ($FE/$FF), value $FB, $FC cells wide, $FD rows of 40), then STAGE 3 ($8114). Called from the set-ups of room 6 ($5E59), room 8 ($65FB) and room 9 ($715B).","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[24153,26107,29019]},{"a":33089,"t":"code","b":[32,20,129],"m":"jsr","oa":33044,"o":"draw_stage_digit_3"},{"a":33092,"t":"code","b":[96],"m":"rts"},{"a":33093,"l":"sprite2_y35_clear99","c":"Puts sprite 2 at Y $35 ($D005) and clears $99 (the step counter the jumps and $41B0's tone use). Called from $802D.","t":"code","b":[169,53],"m":"lda","o":"#$35","x":[32813]},{"a":33095,"t":"code","b":[141,5,208],"m":"sta","o":"vic_sprite2_y"},{"a":33098,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33100,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":33102,"t":"code","b":[96],"m":"rts"},{"a":33103,"l":"clear99_face_right","c":"Clears $99 and runs $4AA3 ($F6 = 0, Mr Hat's pointer $07FC = $2C, standing facing right). Called from $4CB2 in room 3's code: room3_respawn_check ($4C9A, run at the start of each pass of room 3's loop $491D) puts Mr Hat back at X $50, Y $5C (the top floor) when $F6 = $30 after a death.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[19634]},{"a":33105,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":33107,"t":"code","b":[32,163,74],"m":"jsr","oa":19107,"o":"clear_died_flag"},{"a":33110,"t":"code","b":[96],"m":"rts"},{"a":33111,"l":"room5_floor_dispatch","c":"By Mr Hat's Y ($D009): $C0 or more \u2192 $5D20, below $80 \u2192 $5C66, otherwise $5BEF (one routine for each of three heights; $5C66 and $5BEF start by testing his X $D008, $5D20 by setting it to $28). Called from $5BE8 in room 5's code, when $D015 is $10 or more.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[23528]},{"a":33114,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":33116,"t":"code","b":[144,4],"m":"bcc","oa":33122,"o":"b_8162"},{"a":33118,"t":"code","b":[32,32,93],"m":"jsr","oa":23840,"o":"room5_right_ladder"},{"a":33121,"t":"code","b":[96],"m":"rts"},{"a":33122,"l":"b_8162","t":"code","b":[201,128],"m":"cmp","o":"#$80","x":[33116]},{"a":33124,"t":"code","b":[176,4],"m":"bcs","oa":33130,"o":"b_816A"},{"a":33126,"t":"code","b":[32,102,92],"m":"jsr","oa":23654,"o":"room5_upper_floor_checks"},{"a":33129,"t":"code","b":[96],"m":"rts"},{"a":33130,"l":"b_816A","t":"code","b":[32,239,91],"m":"jsr","oa":23535,"o":"room5_lower_floor_checks","x":[33124]},{"a":33133,"t":"code","b":[96],"m":"rts"},{"a":33134,"l":"unref_sprite3_setup_816e","c":"No JSR, JMP or address bytes for $816E were found in the image. Colour fill ($56ED), clears $F9 and $FA, writes $EE to $AD9B and $AD9E, sprite 3 pointer $34 and colour 0, clears the X high bits of sprites 3 and 4, clears $64F6, then sprite 3 at X $12, Mr Hat at X $28 and sprite 3 at Y $B4.","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":33137,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33139,"t":"code","b":[133,249],"m":"sta","oa":249,"o":"frame_tick_hi"},{"a":33141,"t":"code","b":[133,250],"m":"sta","oa":250,"o":"flag_fa"},{"a":33143,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":33145,"t":"code","b":[141,155,173],"m":"sta","oa":44443,"o":"painting_patch_1"},{"a":33148,"t":"code","b":[141,158,173],"m":"sta","oa":44446,"o":"painting_patch_2"},{"a":33151,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":33153,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":33156,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33158,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":33161,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":33164,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":33166,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":33169,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":33172,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":33174,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":33177,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33179,"t":"code","b":[141,246,100],"m":"sta","oa":25846,"o":"value_64f6"},{"a":33182,"t":"code","b":[169,18],"m":"lda","o":"#$12"},{"a":33184,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":33187,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":33189,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":33192,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":33194,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":33197,"t":"code","b":[96],"m":"rts"},{"a":33198,"t":"gap","n":2},{"a":33200,"l":"fill_d022_sprite0_black","c":"Colour fill ($56ED), then background colour 1 $D022 = $D01C AND $FE (the sprite multicolour register's value copied in) and sprite 0's colour $D027 = 0 (black). Called from the set-ups of room 5 ($575B) and room 8 ($660A).","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[22363,26122]},{"a":33203,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":33206,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":33208,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":33211,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33213,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":33216,"t":"code","b":[96],"m":"rts"},{"a":33217,"l":"fill_sprite0_y5f","c":"Colour fill ($56ED), then sprite 0 at Y $5F ($D001). Called from room 9's set-up at $7166.","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[29030]},{"a":33220,"t":"code","b":[169,95],"m":"lda","o":"#$5F"},{"a":33222,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":33225,"t":"code","b":[96],"m":"rts"},{"a":33226,"l":"unref_rts_81ca","c":"Three RTS opcodes ($60 $60 $60) that nothing calls: no reference to $81CA-$81CC was found.","t":"code","b":[96],"m":"rts"},{"a":33227,"t":"code","b":[96],"m":"rts"},{"a":33228,"t":"code","b":[96],"m":"rts"},{"a":33229,"l":"fill_sprite0_y0","c":"Colour fill ($56ED), then sprite 0 at Y 0, above the visible screen. Called from $7465 in room 9's code.","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[29797]},{"a":33232,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33234,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":33237,"t":"code","b":[96],"m":"rts"},{"a":33238,"l":"kill_if_cell_0460_zero","c":"If screen-matrix cell $0460 (row 2, column 16; in bitmap mode a colour cell) holds 0, calls $55F5 (JMP $A877, the routine that costs a life). Called from $7911 in room 9's code, when Mr Hat's X equals sprite 0's X ($D000).","t":"code","b":[173,96,4],"m":"lda","oa":1120,"o":"a_0460","x":[30993]},{"a":33241,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":33243,"t":"code","b":[208,3],"m":"bne","oa":33248,"o":"r_81E0"},{"a":33245,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":33248,"l":"r_81E0","t":"code","b":[96],"m":"rts","x":[33243]},{"a":33249,"l":"hide_room_second_digit","c":"Colours cells $07B1 and $07D9 (rows 23-24, column 25: the second ROOM digit, where rooms 10 and 11 leave a '0' or '1') $CC, grey on grey, which blanks them; clears $64F7; colour fill ($56ED). Called from the set-ups of room 1 ($6EB3), room 8 ($6621) and room 9 ($717D).","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[26145,28339,29053]},{"a":33251,"t":"code","b":[141,217,7],"m":"sta","oa":2009,"o":"a_07D9"},{"a":33254,"t":"code","b":[141,177,7],"m":"sta","oa":1969,"o":"a_07B1"},{"a":33257,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33259,"t":"code","b":[141,247,100],"m":"sta","oa":25847,"o":"shaft_arrival_flag"},{"a":33262,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":33265,"t":"code","b":[96],"m":"rts"},{"a":33266,"t":"gap","n":6},{"a":33272,"l":"unref_silence_v1_81f8","c":"No reference to $81F8 was found. Runs $1CB0 (zeroes SID voice 1, $D400-$D406, and sets the volume $D418 to $0F) and $450A (an RTS).","t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":33275,"t":"code","b":[32,10,69],"m":"jsr","oa":17674,"o":"rts_stub_450a"},{"a":33278,"t":"code","b":[96],"m":"rts"},{"a":33279,"t":"gap","n":1},{"a":33280,"l":"sprites_off_irq_8215","c":"Switches all sprites off and points the IRQ vector $0314/$0315 at $8215. Called only through $45D5, whose callers are $56B0 (the first call of every room set-up), $4483 (game over, $4475), $44B9 (room1_exit_by_f7), $5311/$531B (room 2's exit test), $5B7D/$5B87/$5B97/$5BA1 (room 5's exit tests) and $633D/$6347 (room 6's exit check). A further JSR $45D5 at $6FF6 is in an unreachable copy of $44B9.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[17877]},{"a":33283,"t":"code","b":[41,0],"m":"and","o":"#$00"},{"a":33285,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":33288,"t":"code","b":[120],"m":"sei"},{"a":33289,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":33291,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":33294,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":33296,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":33299,"t":"code","b":[88],"m":"cli"},{"a":33300,"t":"code","b":[96],"m":"rts"},{"a":33301,"l":"irq_between_rooms","c":"IRQ handler: JMP $BF30. Installed by $8209, $842B (room 10, when the lives are gone) and $8460 (room 10 set-up); live room IRQ handlers end by jumping here ($48EB, $68A2, $703E, $7BA6-$7BE0, $96DE, $BA22, and room 11 at $885D/$887A). Of the other JMP $8215s, $6939 is in the unreached room8_belt_unused and $8891-$88FD in unreferenced room-11 fragments; the $15 $82 at $69A4 has no opcode in front.","t":"code","b":[76,48,191],"m":"jmp","oa":48944,"o":"irq_invuln_countdown","x":[18667,26786,26937,28734,31654,31666,31674,31692,31704,31712,34909,34938,34961,34964,34995,35032,35069,38622,47650]},{"a":33304,"l":"unused_zero_8218","c":"Unused: 22 zero bytes after irq_between_rooms ($8218-$822D); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33320,"t":"byte","b":[0,0,0,0,0,0]},{"a":33326,"l":"room11_lift_sprite","c":"Sprite 5 set-up: multicolour, colour 3, X $120 (X high bit set), Y $48, pointer $28, expanded in X and Y. Room 11 moves it up and down together with Mr Hat ($8292, $898D): the lift cabin he rides between the top and bottom floors. Called from $56C7, which only room 11's $8641 calls.","t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour","x":[22215]},{"a":33329,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":33331,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":33334,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":33336,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":33339,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":33342,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":33344,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":33347,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":33349,"t":"code","b":[141,11,208],"m":"sta","o":"vic_sprite5_y"},{"a":33352,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":33354,"t":"code","b":[141,10,208],"m":"sta","o":"vic_sprite5_x"},{"a":33357,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":33359,"t":"code","b":[141,253,7],"m":"sta","oa":2045,"o":"spr5_pointer"},{"a":33362,"t":"code","b":[173,23,208],"m":"lda","o":"vic_sprite_expand_y"},{"a":33365,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":33367,"t":"code","b":[141,23,208],"m":"sta","o":"vic_sprite_expand_y"},{"a":33370,"t":"code","b":[173,29,208],"m":"lda","o":"vic_sprite_expand_x"},{"a":33373,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":33375,"t":"code","b":[141,29,208],"m":"sta","o":"vic_sprite_expand_x"},{"a":33378,"t":"code","b":[96],"m":"rts"},{"a":33379,"t":"gap","n":2},{"a":33381,"l":"room11_lower_rules","c":"Room 11, Mr Hat at Y $5D or lower (below the top floor), from $89AC. Right half ($D010 >= $2F): $89A1 keeps his X low byte under $30 (the right wall); standing in the lift (X $22-$33, Y $B4) with the stick up ($DC00 = $7E) rides it up, one step each: $B907 (Y - 1, X low byte set to 1), sprite 5 Y - 1, delay $7AD1, until Y is below $5D. Left half: at X $B8 or more, or when colour cell $061A already holds $CC, hands over to $7CC0 (at the bottom left, X below $80, it ends the game: $1018 = 1, $16A0, $0870). Otherwise, unless $F5 = $EE (set at $5CD7 in room 5's code, with $D8 = $50), INC $D008 pushes him back to the right. With $F5 = $EE the block opens: $D8 = 0, operand $8503 = $CC, colour cells $061A-$06E3 (columns 18-19, rows 13-18) $CC, 10,000 points (ten $41DA), $1CB0 silences voice 1. In this copy the set-up never fills the block, so $061A keeps the corridor's $CC and the block counts as open from the start: live (work/room11win.py, 3 October 2026), Mr Hat carrying nothing walked left along this floor to $7CC0 and the end screen. Room 5's object, which would open it, cannot be taken here (its colour store at $586B goes to $D022).","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[35244]},{"a":33384,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":33386,"t":"code","b":[144,48],"m":"bcc","oa":33436,"o":"b_829C"},{"a":33388,"t":"code","b":[32,161,137],"m":"jsr","oa":35233,"o":"room11_right_wall"},{"a":33391,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":33394,"t":"code","b":[201,34],"m":"cmp","o":"#$22"},{"a":33396,"t":"code","b":[144,37],"m":"bcc","oa":33435,"o":"r_829B"},{"a":33398,"t":"code","b":[201,52],"m":"cmp","o":"#$34"},{"a":33400,"t":"code","b":[176,33],"m":"bcs","oa":33435,"o":"r_829B"},{"a":33402,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":33405,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":33407,"t":"code","b":[208,26],"m":"bne","oa":33435,"o":"r_829B"},{"a":33409,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":33412,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":33414,"t":"code","b":[208,19],"m":"bne","oa":33435,"o":"r_829B"},{"a":33416,"l":"j_8288","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[33432]},{"a":33419,"t":"code","b":[201,93],"m":"cmp","o":"#$5D"},{"a":33421,"t":"code","b":[144,12],"m":"bcc","oa":33435,"o":"r_829B"},{"a":33423,"t":"code","b":[32,7,185],"m":"jsr","oa":47367,"o":"hat_up_pin_x"},{"a":33426,"t":"code","b":[206,11,208],"m":"dec","o":"vic_sprite5_y"},{"a":33429,"t":"code","b":[32,209,122],"m":"jsr","oa":31441,"o":"delay_6x256"},{"a":33432,"t":"code","b":[76,136,130],"m":"jmp","oa":33416,"o":"j_8288"},{"a":33435,"l":"r_829B","t":"code","b":[96],"m":"rts","x":[33396,33400,33407,33414,33421]},{"a":33436,"l":"b_829C","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[33386]},{"a":33439,"t":"code","b":[201,184],"m":"cmp","o":"#$B8"},{"a":33441,"t":"code","b":[176,70],"m":"bcs","oa":33513,"o":"b_82E9"},{"a":33443,"t":"code","b":[173,26,6],"m":"lda","oa":1562,"o":"a_061A"},{"a":33446,"t":"code","b":[201,204],"m":"cmp","o":"#$CC"},{"a":33448,"t":"code","b":[240,63],"m":"beq","oa":33513,"o":"b_82E9"},{"a":33450,"t":"code","b":[165,245],"m":"lda","oa":245,"o":"room_var_f5"},{"a":33452,"t":"code","b":[201,238],"m":"cmp","o":"#$EE"},{"a":33454,"t":"code","b":[208,53],"m":"bne","oa":33509,"o":"b_82E5"},{"a":33456,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33458,"t":"code","b":[133,216],"m":"sta","oa":216,"o":"game_state_d8"},{"a":33460,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":33462,"t":"code","b":[141,3,133],"m":"sta","oa":34051,"o":"room11_block_colour"},{"a":33465,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":33467,"l":"b_82BB","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[33490]},{"a":33469,"t":"code","b":[157,26,6],"m":"sta","oa":1562,"o":"a_061A,x"},{"a":33472,"t":"code","b":[157,66,6],"m":"sta","oa":1602,"o":"f_0642,x"},{"a":33475,"t":"code","b":[157,106,6],"m":"sta","oa":1642,"o":"f_066A,x"},{"a":33478,"t":"code","b":[157,146,6],"m":"sta","oa":1682,"o":"f_0692,x"},{"a":33481,"t":"code","b":[157,186,6],"m":"sta","oa":1722,"o":"f_06BA,x"},{"a":33484,"t":"code","b":[157,226,6],"m":"sta","oa":1762,"o":"f_06E2,x"},{"a":33487,"t":"code","b":[232],"m":"inx"},{"a":33488,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":33490,"t":"code","b":[208,231],"m":"bne","oa":33467,"o":"b_82BB"},{"a":33492,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":33494,"l":"b_82D6","t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000","x":[33500]},{"a":33497,"t":"code","b":[200],"m":"iny"},{"a":33498,"t":"code","b":[192,10],"m":"cpy","o":"#$0A"},{"a":33500,"t":"code","b":[208,248],"m":"bne","oa":33494,"o":"b_82D6"},{"a":33502,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":33505,"t":"code","b":[32,210,28],"m":"jsr","oa":7378,"o":"sound_stub_1cd2"},{"a":33508,"t":"code","b":[96],"m":"rts"},{"a":33509,"l":"b_82E5","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[33454]},{"a":33512,"t":"code","b":[96],"m":"rts"},{"a":33513,"l":"b_82E9","t":"code","b":[32,192,124],"m":"jsr","oa":31936,"o":"win_check_golden_hat","x":[33441,33448]},{"a":33516,"t":"code","b":[96],"m":"rts"},{"a":33517,"t":"gap","n":4},{"a":33521,"l":"unref_noise_v1_82f1","c":"No reference to $82F1 was found. Writes $81 (noise waveform, gate on) to voice 1's control register $D404.","t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":33523,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":33526,"t":"code","b":[96],"m":"rts"},{"a":33527,"l":"unused_zero_82f7","c":"Unused: 9 zero bytes after unref_noise_v1_82f1 ($82F7-$82FF); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33535,"t":"byte","b":[0]},{"a":33536,"l":"room10_setup","c":"Room 10 set-up (STAGE 4): JMP $8300 from $6B52, room 8's exit dispatch, when the entry code $4ACD is $60. $56B0 as in every room (sprites off, IRQ $8215, screen blanked, $A573 with Y = $6E); colour fills ($56ED): from $0610, 24 cells by 6 rows, $CC (via $8453), then twice from $040F, 3 cells wide: 16 rows, then 5 rows in $3C (cyan); the bitmap pattern at $4802 copied to $2078, 3 cells wide and 7 rows ($5713, source operand $5718/$5719 patched); two pictures ($A9D4, colour $DC) at cells (25,14) and (20,14), $AA26 at (10,15), $ABD5 at (11,16) (the web screenshot of room 10 shows a television and two pictures there). Then $BD = $FB = 0, walk frames $2C/$2F, Mr Hat on at X $8F, Y $30, pointer $32, colour $0B, $99 = 0; ROOM 10 ('1' in column 24, '0' in column 25, cells $07B1/$07D9 coloured $6C to show it) and STAGE 4; entry code $4ACD = $88; then $845F.","t":"code","b":[169,110],"m":"lda","o":"#$6E","x":[27474]},{"a":33538,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33540,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":33543,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":33545,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":33547,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":33549,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":33551,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":33553,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":33555,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":33557,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33559,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":33561,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":33563,"t":"code","b":[32,83,132],"m":"jsr","oa":33875,"o":"room10_fill_4ac9"},{"a":33566,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":33568,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":33570,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":33572,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":33574,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":33576,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":33578,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":33580,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33582,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":33585,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":33587,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":33589,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":33591,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33593,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":33595,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":33597,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":33599,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":33601,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":33604,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":33606,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":33608,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":33610,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":33612,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":33614,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":33616,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":33618,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33620,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":33622,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":33625,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":33627,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":33630,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":33633,"t":"code","b":[234],"m":"nop"},{"a":33634,"t":"code","b":[234],"m":"nop"},{"a":33635,"t":"code","b":[234],"m":"nop"},{"a":33636,"t":"code","b":[162,25],"m":"ldx","o":"#$19"},{"a":33638,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":33640,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":33642,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":33644,"t":"code","b":[32,212,169],"m":"jsr","oa":43476,"o":"draw_painting_a"},{"a":33647,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":33649,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":33651,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":33653,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":33655,"t":"code","b":[32,212,169],"m":"jsr","oa":43476,"o":"draw_painting_a"},{"a":33658,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":33660,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":33662,"t":"code","b":[32,38,170],"m":"jsr","oa":43558,"o":"draw_television"},{"a":33665,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":33667,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":33669,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":33671,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":33673,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33675,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":33677,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":33679,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":33681,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":33683,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":33685,"t":"code","b":[32,213,171],"m":"jsr","oa":43989,"o":"colour_cells_and_dot"},{"a":33688,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33690,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":33692,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":33694,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":33696,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33698,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":33700,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":33702,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":33705,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":33707,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":33710,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":33712,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":33715,"t":"code","b":[169,143],"m":"lda","o":"#$8F"},{"a":33717,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":33720,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":33722,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":33725,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":33727,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":33730,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":33732,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":33734,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":33736,"l":"b_83C8","t":"code","b":[189,16,22],"m":"lda","oa":5648,"o":"digit_one_top,x","x":[33751]},{"a":33739,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":33742,"t":"code","b":[189,24,22],"m":"lda","oa":5656,"o":"digit_one_bottom,x"},{"a":33745,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":33748,"t":"code","b":[232],"m":"inx"},{"a":33749,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":33751,"t":"code","b":[208,239],"m":"bne","oa":33736,"o":"b_83C8"},{"a":33753,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":33755,"l":"b_83DB","t":"code","b":[189,0,22],"m":"lda","oa":5632,"o":"digit_zero_top,x","x":[33770]},{"a":33758,"t":"code","b":[157,136,61],"m":"sta","oa":15752,"o":"f_3D88,x"},{"a":33761,"t":"code","b":[189,8,22],"m":"lda","oa":5640,"o":"digit_zero_bottom,x"},{"a":33764,"t":"code","b":[157,200,62],"m":"sta","oa":16072,"o":"f_3EC8,x"},{"a":33767,"t":"code","b":[232],"m":"inx"},{"a":33768,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":33770,"t":"code","b":[208,239],"m":"bne","oa":33755,"o":"b_83DB"},{"a":33772,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":33774,"t":"code","b":[141,217,7],"m":"sta","oa":2009,"o":"a_07D9"},{"a":33777,"t":"code","b":[141,177,7],"m":"sta","oa":1969,"o":"a_07B1"},{"a":33780,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":33782,"l":"b_83F6","t":"code","b":[189,64,22],"m":"lda","oa":5696,"o":"digit_four_top,x","x":[33797]},{"a":33785,"t":"code","b":[157,184,61],"m":"sta","oa":15800,"o":"status_stage_digit_top,x"},{"a":33788,"t":"code","b":[189,72,22],"m":"lda","oa":5704,"o":"digit_four_bottom,x"},{"a":33791,"t":"code","b":[157,248,62],"m":"sta","oa":16120,"o":"status_stage_digit_bottom,x"},{"a":33794,"t":"code","b":[232],"m":"inx"},{"a":33795,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":33797,"t":"code","b":[208,239],"m":"bne","oa":33782,"o":"b_83F6"},{"a":33799,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":33801,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":33804,"t":"code","b":[76,95,132],"m":"jmp","oa":33887,"o":"room10_start"},{"a":33807,"t":"gap","n":1},{"a":33808,"l":"room10_loop","c":"Room 10's loop: $4B20 moves Mr Hat up and down the shaft's ladder by the stick. Above Y $28 he leaves for room 8 ($65E0, its set-up); from $28 to $3F the loop repeats; lower, $7AC0 drops him to Y $BE and calls $55F5 (JMP $A877, the routine that costs a life). Then, with the lives gone ($D8 = $40, set at $1736), the IRQ goes back to $8215 and play ends at $4475; otherwise Mr Hat reappears at the top (X $8F, Y $30, pointer $32) and the loop resumes through $A85B (which unblanks the screen with $A84E).","t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step","x":[33823,43102]},{"a":33811,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":33814,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":33816,"t":"code","b":[176,3],"m":"bcs","oa":33821,"o":"b_841D"},{"a":33818,"t":"code","b":[76,224,101],"m":"jmp","oa":26080,"o":"room8_draw"},{"a":33821,"l":"b_841D","t":"code","b":[201,64],"m":"cmp","o":"#$40","x":[33816]},{"a":33823,"t":"code","b":[144,239],"m":"bcc","oa":33808,"o":"room10_loop"},{"a":33825,"t":"code","b":[32,192,122],"m":"jsr","oa":31424,"o":"room10_sink_and_die"},{"a":33828,"t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8"},{"a":33830,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":33832,"t":"code","b":[208,15],"m":"bne","oa":33849,"o":"b_8439"},{"a":33834,"t":"code","b":[120],"m":"sei"},{"a":33835,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":33837,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":33840,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":33842,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":33845,"t":"code","b":[88],"m":"cli"},{"a":33846,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":33849,"l":"b_8439","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[33832]},{"a":33852,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":33854,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":33857,"t":"code","b":[169,143],"m":"lda","o":"#$8F"},{"a":33859,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":33862,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":33864,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":33867,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":33869,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":33872,"t":"code","b":[76,91,168],"m":"jmp","oa":43099,"o":"reenter_loop_8410"},{"a":33875,"l":"room10_fill_4ac9","c":"Sets $4AC9 = $0C, runs $96A4 ($1E08 = $FA, then $9583) and a colour fill ($56ED). Called from room 10's set-up at $831B.","t":"code","b":[169,12],"m":"lda","o":"#$0C","x":[33563]},{"a":33877,"t":"code","b":[141,201,74],"m":"sta","oa":19145,"o":"ladder_delay_count"},{"a":33880,"t":"code","b":[32,164,150],"m":"jsr","oa":38564,"o":"room47_loop_init"},{"a":33883,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":33886,"t":"code","b":[96],"m":"rts"},{"a":33887,"l":"room10_start","c":"End of room 10's set-up: IRQ vector $0314/$0315 \u2192 $8215, room id $100C = $10, then the loop $8410 through $A85B.","t":"code","b":[120],"m":"sei","x":[33804]},{"a":33888,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":33890,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":33893,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":33895,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":33898,"t":"code","b":[88],"m":"cli"},{"a":33899,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":33901,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":33904,"t":"code","b":[76,91,168],"m":"jmp","oa":43099,"o":"reenter_loop_8410"},{"a":33907,"l":"unused_zero_8473","c":"Unused: 13 zero bytes after room10_start ($8473-$847F); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33915,"t":"byte","b":[0,0,0,0,0]},{"a":33920,"l":"room11_setup","c":"Room 11 set-up (STAGE 4): JMP $8480 from $7B17 (code at $7B00, the ladder at X $88 climbed down past Y $D8, entry code $4ACD = $78). $56B0 as in every room; colour fills ($56ED) from $045A, $040E (the ladder, $3C), $060C and $0471; sprite 1 X $7E; $AA45 at (34,21); room id $100C = $11; $FE/$FF = $061A, $FC = 2, $FD = 6, $FB = the operand at $8503 (fill parameters, but no fill is called before $5713 overwrites $FC-$FF); $D022 = $6C; STAGE 4 and ROOM 11 ('1' in columns 24 and 25); the bitmap pattern at $4802 copied to $2070, 3 cells by 8 rows ($5713); $AA64 at (34,2), $AB70/$AB93 at (22,4)/(22,7) and (25,4)/(25,7), $7C50 at (6,16); continues at $85A5.","t":"code","b":[169,110],"m":"lda","o":"#$6E","x":[31511]},{"a":33922,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33924,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":33927,"t":"code","b":[169,90],"m":"lda","o":"#$5A"},{"a":33929,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":33931,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":33933,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":33935,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":33937,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":33939,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":33941,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33943,"t":"code","b":[169,22],"m":"lda","o":"#$16"},{"a":33945,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":33947,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":33950,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":33952,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":33954,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":33956,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":33958,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":33960,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":33962,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":33964,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33966,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":33968,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":33970,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":33973,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":33975,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":33977,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":33979,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":33981,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":33983,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":33985,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":33987,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":33989,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":33991,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":33993,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":33996,"t":"code","b":[169,126],"m":"lda","o":"#$7E"},{"a":33998,"t":"code","b":[141,2,208],"m":"sta","o":"vic_sprite1_x"},{"a":34001,"t":"code","b":[169,113],"m":"lda","o":"#$71"},{"a":34003,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":34005,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":34007,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":34009,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":34011,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":34013,"t":"code","b":[169,20],"m":"lda","o":"#$14"},{"a":34015,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":34017,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":34020,"t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":34022,"t":"code","b":[160,21],"m":"ldy","o":"#$15"},{"a":34024,"t":"code","b":[32,69,170],"m":"jsr","oa":43589,"o":"draw_band_top"},{"a":34027,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":34029,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":34032,"t":"code","b":[234],"m":"nop"},{"a":34033,"t":"code","b":[234],"m":"nop"},{"a":34034,"t":"code","b":[169,26],"m":"lda","o":"#$1A"},{"a":34036,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":34038,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":34040,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":34042,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":34044,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":34046,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":34048,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":34050,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":34051,"t":"note","l":"room11_block_colour","c":"Operand of LDA #$50 at $8502 in room 11's set-up: $50 at the start of a game ($92E5 writes it), $CC once the block at colour cells $061A has been opened ($82B6). It goes to $FB only.","note":"inside the item at $8502","x":[33462,37605]},{"a":34052,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":34054,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":34057,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":34059,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":34062,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":34065,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":34067,"l":"b_8513","t":"code","b":[189,64,22],"m":"lda","oa":5696,"o":"digit_four_top,x","x":[34082]},{"a":34070,"t":"code","b":[157,184,61],"m":"sta","oa":15800,"o":"status_stage_digit_top,x"},{"a":34073,"t":"code","b":[189,72,22],"m":"lda","oa":5704,"o":"digit_four_bottom,x"},{"a":34076,"t":"code","b":[157,248,62],"m":"sta","oa":16120,"o":"status_stage_digit_bottom,x"},{"a":34079,"t":"code","b":[232],"m":"inx"},{"a":34080,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":34082,"t":"code","b":[208,239],"m":"bne","oa":34067,"o":"b_8513"},{"a":34084,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":34086,"l":"b_8526","t":"code","b":[189,16,22],"m":"lda","oa":5648,"o":"digit_one_top,x","x":[34107]},{"a":34089,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":34092,"t":"code","b":[157,136,61],"m":"sta","oa":15752,"o":"f_3D88,x"},{"a":34095,"t":"code","b":[189,24,22],"m":"lda","oa":5656,"o":"digit_one_bottom,x"},{"a":34098,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":34101,"t":"code","b":[157,200,62],"m":"sta","oa":16072,"o":"f_3EC8,x"},{"a":34104,"t":"code","b":[232],"m":"inx"},{"a":34105,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":34107,"t":"code","b":[208,233],"m":"bne","oa":34086,"o":"b_8526"},{"a":34109,"t":"code","b":[169,112],"m":"lda","o":"#$70"},{"a":34111,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":34113,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":34115,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":34117,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":34119,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":34121,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":34123,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":34125,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":34127,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":34130,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":34132,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":34135,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":34138,"t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":34140,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":34142,"t":"code","b":[32,100,170],"m":"jsr","oa":43620,"o":"draw_band_bottom"},{"a":34145,"t":"code","b":[162,22],"m":"ldx","o":"#$16"},{"a":34147,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":34149,"t":"code","b":[32,112,171],"m":"jsr","oa":43888,"o":"draw_plant"},{"a":34152,"t":"code","b":[162,22],"m":"ldx","o":"#$16"},{"a":34154,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":34156,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":34158,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":34160,"t":"code","b":[32,147,171],"m":"jsr","oa":43923,"o":"draw_pot_27"},{"a":34163,"t":"code","b":[162,25],"m":"ldx","o":"#$19"},{"a":34165,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":34167,"t":"code","b":[32,112,171],"m":"jsr","oa":43888,"o":"draw_plant"},{"a":34170,"t":"code","b":[162,25],"m":"ldx","o":"#$19"},{"a":34172,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":34174,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":34176,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":34178,"t":"code","b":[32,147,171],"m":"jsr","oa":43923,"o":"draw_pot_27"},{"a":34181,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":34183,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":34185,"t":"code","b":[32,80,124],"m":"jsr","oa":31824,"o":"draw_golden_hat"},{"a":34188,"t":"code","b":[76,165,133],"m":"jmp","oa":34213,"o":"room11_setup_pictures"},{"a":34191,"t":"gap","n":1},{"a":34192,"l":"bonus_400k","c":"Replay bonus for flag $40: adds 400 x 1,000 points, two runs of 200 calls of $41DA. Called from $803E when $75F0 is neither 0 nor $20. Never runs in Mr. Hat: $75F0 = $40 is set only at $800F (wait_f1_replay) and $80BC (bonus_200k), neither of which runs.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[32830]},{"a":34194,"l":"b_8592","t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000","x":[34200]},{"a":34197,"t":"code","b":[200],"m":"iny"},{"a":34198,"t":"code","b":[192,200],"m":"cpy","o":"#$C8"},{"a":34200,"t":"code","b":[208,248],"m":"bne","oa":34194,"o":"b_8592"},{"a":34202,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":34204,"l":"b_859C","t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000","x":[34210]},{"a":34207,"t":"code","b":[200],"m":"iny"},{"a":34208,"t":"code","b":[192,200],"m":"cpy","o":"#$C8"},{"a":34210,"t":"code","b":[208,248],"m":"bne","oa":34204,"o":"b_859C"},{"a":34212,"t":"code","b":[96],"m":"rts"},{"a":34213,"l":"room11_setup_pictures","c":"Room 11 set-up, continued: two pictures ($A9D6, colour $1C) at cells (14,14) and (19,14), the second ROOM digit shown (cells $07B1/$07D9 = $6C), then $8600.","t":"code","b":[162,14],"m":"ldx","o":"#$0E","x":[34188]},{"a":34215,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":34217,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":34219,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":34221,"t":"code","b":[32,214,169],"m":"jsr","oa":43478,"o":"draw_painting_27"},{"a":34224,"t":"code","b":[162,19],"m":"ldx","o":"#$13"},{"a":34226,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":34228,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":34230,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":34232,"t":"code","b":[32,214,169],"m":"jsr","oa":43478,"o":"draw_painting_27"},{"a":34235,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":34237,"t":"code","b":[141,217,7],"m":"sta","oa":2009,"o":"a_07D9"},{"a":34240,"t":"code","b":[141,177,7],"m":"sta","oa":1969,"o":"a_07B1"},{"a":34243,"t":"code","b":[76,0,134],"m":"jmp","oa":34304,"o":"room11_place_sprites"},{"a":34246,"l":"unused_zero_85c6","c":"Unused: 10 zero bytes after room11_setup_pictures ($85C6-$85CF); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34254,"t":"byte","b":[0,0]},{"a":34256,"l":"tune2_note_off","c":"Tune 2 (see $89D0), end of a note: zeroes SID $D40D-$D414 (voice 2's sustain/release and all of voice 3), then JMP $8A11 for the next note. Reached only from $8A0E.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[35342]},{"a":34258,"l":"b_85D2","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[34266]},{"a":34260,"t":"code","b":[153,13,212],"m":"sta","o":"sid_v2_sustain_release,y"},{"a":34263,"t":"code","b":[200],"m":"iny"},{"a":34264,"t":"code","b":[192,8],"m":"cpy","o":"#$08"},{"a":34266,"t":"code","b":[208,246],"m":"bne","oa":34258,"o":"b_85D2"},{"a":34268,"t":"code","b":[76,17,138],"m":"jmp","oa":35345,"o":"tune2_next_note"},{"a":34271,"l":"tune1_note_off","c":"Tune 1 (see $8C33), end of a note: zeroes SID $D40D-$D414 (voice 2's sustain/release and all of voice 3), then JMP $8C41 for the next note. Reached from $8C3E.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[35902]},{"a":34273,"l":"b_85E1","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[34281]},{"a":34275,"t":"code","b":[153,13,212],"m":"sta","o":"sid_v2_sustain_release,y"},{"a":34278,"t":"code","b":[200],"m":"iny"},{"a":34279,"t":"code","b":[192,8],"m":"cpy","o":"#$08"},{"a":34281,"t":"code","b":[208,246],"m":"bne","oa":34273,"o":"b_85E1"},{"a":34283,"t":"code","b":[76,65,140],"m":"jmp","oa":35905,"o":"tune1_next_note"},{"a":34286,"l":"unused_zero_85ee","c":"Unused: 18 zero bytes after tune1_note_off ($85EE-$85FF); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34294,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34302,"t":"byte","b":[0,0]},{"a":34304,"l":"room11_place_sprites","c":"Room 11 set-up, end: Mr Hat pointer $32, colour $0B, X $87 (high bit cleared), Y $30; sprites 3, 4 and 5 on; sprite 3 (the guardian the IRQ $8660 moves) at X $FF, Y $60, pointer $26; $BD = $FB = 0, walk frames $2C/$2F; the lift sprite ($56C7 \u2192 $822E) and the screen on ($A4FD); IRQ vector \u2192 $8660. Mr Hat starts above Y $5C, so $8949 climbs him down the ladder first; then the loop $86B0 through $A841.","t":"code","b":[169,50],"m":"lda","o":"#$32","x":[34243]},{"a":34306,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34309,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":34311,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":34314,"t":"code","b":[169,135],"m":"lda","o":"#$87"},{"a":34316,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":34319,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":34322,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":34324,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":34327,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":34329,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":34332,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":34335,"t":"code","b":[9,56],"m":"ora","o":"#$38"},{"a":34337,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":34340,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":34342,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":34345,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":34347,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":34350,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":34352,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":34355,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":34357,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":34359,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":34361,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":34363,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":34365,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":34367,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":34369,"t":"code","b":[32,199,86],"m":"jsr","oa":22215,"o":"call_822e_and_flip_screen"},{"a":34372,"t":"code","b":[120],"m":"sei"},{"a":34373,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":34375,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":34378,"t":"code","b":[169,134],"m":"lda","o":"#$86"},{"a":34380,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":34383,"t":"code","b":[88],"m":"cli"},{"a":34384,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":34387,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":34389,"t":"code","b":[176,89],"m":"bcs","oa":34480,"o":"room11_loop"},{"a":34391,"t":"code","b":[32,73,137],"m":"jsr","oa":35145,"o":"room11_ladder"},{"a":34394,"t":"code","b":[76,65,168],"m":"jmp","oa":43073,"o":"reenter_loop_86b0"},{"a":34397,"t":"gap","n":3},{"a":34400,"l":"room11_irq","c":"Room 11's IRQ handler (installed at $8645). While Mr Hat is on the top floor (Y = $5C) sprite 3 moves one pixel a frame toward his X, between X $70 and $F7, with pointer $26 going left and $34 going right, and each step also changes background colour $D021 by one (DEC/INC $D021). Every frame sprite 1 moves 2 pixels right ($D002); then $8840.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":34403,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":34405,"t":"code","b":[240,3],"m":"beq","oa":34410,"o":"b_866A"},{"a":34407,"t":"code","b":[76,158,134],"m":"jmp","oa":34462,"o":"j_869E"},{"a":34410,"l":"b_866A","t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x","x":[34405]},{"a":34413,"t":"code","b":[205,8,208],"m":"cmp","o":"vic_sprite4_x"},{"a":34416,"t":"code","b":[208,3],"m":"bne","oa":34421,"o":"b_8675"},{"a":34418,"l":"b_8672","t":"code","b":[76,158,134],"m":"jmp","oa":34462,"o":"j_869E","x":[34428]},{"a":34421,"l":"b_8675","t":"code","b":[144,21],"m":"bcc","oa":34444,"o":"b_868C","x":[34416]},{"a":34423,"t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x"},{"a":34426,"t":"code","b":[201,112],"m":"cmp","o":"#$70"},{"a":34428,"t":"code","b":[144,244],"m":"bcc","oa":34418,"o":"b_8672"},{"a":34430,"t":"code","b":[206,33,208],"m":"dec","o":"vic_background0"},{"a":34433,"t":"code","b":[206,6,208],"m":"dec","o":"vic_sprite3_x"},{"a":34436,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":34438,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":34441,"l":"b_8689","t":"code","b":[76,158,134],"m":"jmp","oa":34462,"o":"j_869E","x":[34449]},{"a":34444,"l":"b_868C","t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x","x":[34421]},{"a":34447,"t":"code","b":[201,248],"m":"cmp","o":"#$F8"},{"a":34449,"t":"code","b":[176,246],"m":"bcs","oa":34441,"o":"b_8689"},{"a":34451,"t":"code","b":[238,33,208],"m":"inc","o":"vic_background0"},{"a":34454,"t":"code","b":[238,6,208],"m":"inc","o":"vic_sprite3_x"},{"a":34457,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":34459,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":34462,"l":"j_869E","t":"code","b":[238,2,208],"m":"inc","o":"vic_sprite1_x","x":[34407,34418,34441]},{"a":34465,"t":"code","b":[238,2,208],"m":"inc","o":"vic_sprite1_x"},{"a":34468,"t":"code","b":[76,64,136],"m":"jmp","oa":34880,"o":"room11_irq_flash"},{"a":34471,"l":"unused_zero_86a7","c":"Unused: 9 zero bytes after room11_irq ($86A7-$86AF); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34479,"t":"byte","b":[0]},{"a":34480,"l":"room11_loop","c":"Room 11's main loop. Lives gone ($D8 = $40) \u2192 $4475, game over. $80C8 (Mr Hat back at the ladder if switched off), $8900 (the room's rules). Then the stick in $DC00: $77 right \u2192 $5340 (one pixel right, walking frames); $7B left \u2192 $5370; $7D down \u2192 $8818 (crouch); $6F fire alone, read twice \u2192 $86EE, a jump the way he faces; otherwise $87AC (fire with left or right). Every path returns here through $8800 or $A841.","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[34389,43076]},{"a":34482,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":34484,"t":"code","b":[208,3],"m":"bne","oa":34489,"o":"b_86B9"},{"a":34486,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":34489,"l":"b_86B9","t":"code","b":[32,200,128],"m":"jsr","oa":32968,"o":"room11_check_hat_off","x":[34484]},{"a":34492,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34495,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":34498,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":34500,"t":"code","b":[208,6],"m":"bne","oa":34508,"o":"b_86CC"},{"a":34502,"t":"code","b":[32,64,83],"m":"jsr","oa":21312,"o":"walk_right"},{"a":34505,"t":"code","b":[76,198,135],"m":"jmp","oa":34758,"o":"j_87C6"},{"a":34508,"l":"b_86CC","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[34500]},{"a":34510,"t":"code","b":[208,6],"m":"bne","oa":34518,"o":"b_86D6"},{"a":34512,"t":"code","b":[32,112,83],"m":"jsr","oa":21360,"o":"walk_left"},{"a":34515,"t":"code","b":[76,198,135],"m":"jmp","oa":34758,"o":"j_87C6"},{"a":34518,"l":"b_86D6","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[34510]},{"a":34520,"t":"code","b":[208,9],"m":"bne","oa":34531,"o":"b_86E3"},{"a":34522,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34525,"t":"code","b":[32,24,136],"m":"jsr","oa":34840,"o":"room11_crouch"},{"a":34528,"t":"code","b":[76,172,135],"m":"jmp","oa":34732,"o":"room11_fire_with_stick"},{"a":34531,"l":"b_86E3","t":"code","b":[201,111],"m":"cmp","o":"#$6F","x":[34520]},{"a":34533,"t":"code","b":[208,104],"m":"bne","oa":34639,"o":"b_874F"},{"a":34535,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":34538,"t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":34540,"t":"code","b":[208,97],"m":"bne","oa":34639,"o":"b_874F"},{"a":34542,"l":"room11_jump","c":"Room 11's jump, three phases of 21 steps ($99 counts 0 to $15, $8900 after every step, a pause $42E0 after every phase). Facing right (pointer below $2F): frame $2D, sound $1CF2, each step Y - 1, X + 1 and the rising tone $41B0; frame $2C, X + 1; frame $2E, Y + 1, X + 1. Facing left ($8752): frames $30, $2F, $31, with X - 1. Then $87AC.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[34791,34801]},{"a":34545,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":34547,"t":"code","b":[176,93],"m":"bcs","oa":34642,"o":"b_8752"},{"a":34549,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":34551,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34554,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":34557,"l":"b_86FD","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[34575]},{"a":34560,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":34563,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":34566,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":34568,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34571,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":34573,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":34575,"t":"code","b":[208,236],"m":"bne","oa":34557,"o":"b_86FD"},{"a":34577,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":34579,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":34581,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":34584,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":34586,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34589,"l":"b_871D","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[34601]},{"a":34592,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":34594,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34597,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":34599,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":34601,"t":"code","b":[208,242],"m":"bne","oa":34589,"o":"b_871D"},{"a":34603,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":34605,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":34607,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":34610,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":34612,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34615,"l":"b_8737","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[34630]},{"a":34618,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":34621,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":34623,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34626,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":34628,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":34630,"t":"code","b":[208,239],"m":"bne","oa":34615,"o":"b_8737"},{"a":34632,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":34634,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":34636,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":34639,"l":"b_874F","t":"code","b":[76,172,135],"m":"jmp","oa":34732,"o":"room11_fire_with_stick","x":[34533,34540]},{"a":34642,"l":"b_8752","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[34547]},{"a":34644,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34647,"l":"b_8757","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[34668]},{"a":34650,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":34653,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":34656,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":34659,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":34661,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34664,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":34666,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":34668,"t":"code","b":[208,233],"m":"bne","oa":34647,"o":"b_8757"},{"a":34670,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":34672,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":34674,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":34677,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":34679,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34682,"l":"b_877A","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[34694]},{"a":34685,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":34687,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34690,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":34692,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":34694,"t":"code","b":[208,242],"m":"bne","oa":34682,"o":"b_877A"},{"a":34696,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":34698,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":34700,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":34703,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":34705,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34708,"l":"b_8794","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[34723]},{"a":34711,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":34714,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":34716,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34719,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":34721,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":34723,"t":"code","b":[208,239],"m":"bne","oa":34708,"o":"b_8794"},{"a":34725,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":34727,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":34729,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":34732,"l":"room11_fire_with_stick","c":"Fire with a direction: $DC00 = $67 (fire and right) \u2192 $8900, then $87E0; $6B (fire and left) \u2192 $1CB0 (voice 1 silenced), then $87E0; anything else \u2192 $87C6, JMP $8800.","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[34528,34639]},{"a":34735,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":34737,"t":"code","b":[208,6],"m":"bne","oa":34745,"o":"b_87B9"},{"a":34739,"t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34742,"t":"code","b":[76,224,135],"m":"jmp","oa":34784,"o":"room11_fire_jump_test"},{"a":34745,"l":"b_87B9","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[34737]},{"a":34747,"t":"code","b":[208,9],"m":"bne","oa":34758,"o":"j_87C6"},{"a":34749,"t":"code","b":[32,176,28],"m":"jsr","oa":7344,"o":"silence_voice1"},{"a":34752,"t":"code","b":[76,224,135],"m":"jmp","oa":34784,"o":"room11_fire_jump_test"},{"a":34755,"l":"dead_jsr_87c3","c":"JSR $8900 that no path reaches: it sits between JMP $87E0 at $87C0 and $87C6, and no reference to $87C3 was found.","t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step"},{"a":34758,"l":"j_87C6","t":"code","b":[76,0,136],"m":"jmp","oa":34816,"o":"room11_stand_frame","x":[34505,34515,34747]},{"a":34761,"l":"unused_zero_87c9","c":"Unused: 23 zero bytes after dead_jsr_87c3 and the JMP $8800 after it ($87C9-$87DF); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34769,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34777,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":34784,"l":"room11_fire_jump_test","c":"Fire with a direction, continued: with $D010 below $29, or Mr Hat's X low byte below $4E, jumps ($86EE); otherwise writes $7B to CIA 1 port A $DC00 (the keyboard row-select port the stick is read from) and goes to $8800.","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[34742,34752]},{"a":34787,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":34789,"t":"code","b":[176,3],"m":"bcs","oa":34794,"o":"b_87EA"},{"a":34791,"t":"code","b":[76,238,134],"m":"jmp","oa":34542,"o":"room11_jump"},{"a":34794,"l":"b_87EA","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[34789]},{"a":34797,"t":"code","b":[201,78],"m":"cmp","o":"#$4E"},{"a":34799,"t":"code","b":[176,3],"m":"bcs","oa":34804,"o":"b_87F4"},{"a":34801,"t":"code","b":[76,238,134],"m":"jmp","oa":34542,"o":"room11_jump"},{"a":34804,"l":"b_87F4","t":"code","b":[169,123],"m":"lda","o":"#$7B","x":[34799]},{"a":34806,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":34809,"t":"code","b":[76,0,136],"m":"jmp","oa":34816,"o":"room11_stand_frame"},{"a":34812,"t":"gap","n":4},{"a":34816,"l":"room11_stand_frame","c":"Standing frame: Mr Hat's pointer $07FC becomes $2F if it was $2F or more (facing left), otherwise $2C (facing right); then JMP $A841 (screen unblank check, back to $86B0).","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[34758,34809]},{"a":34819,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":34821,"t":"code","b":[144,8],"m":"bcc","oa":34831,"o":"b_880F"},{"a":34823,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":34825,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34828,"t":"code","b":[76,65,168],"m":"jmp","oa":43073,"o":"reenter_loop_86b0"},{"a":34831,"l":"b_880F","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[34821]},{"a":34833,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34836,"t":"code","b":[76,65,168],"m":"jmp","oa":43073,"o":"reenter_loop_86b0"},{"a":34839,"t":"gap","n":1},{"a":34840,"l":"room11_crouch","c":"Stick down in room 11: saves Mr Hat's pointer, shows frame $2A while $DC00 reads $7D (running $8900 each pass), then puts the saved pointer back.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[34525]},{"a":34843,"t":"code","b":[72],"m":"pha"},{"a":34844,"l":"b_881C","t":"code","b":[32,0,137],"m":"jsr","oa":35072,"o":"room11_step","x":[34857]},{"a":34847,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":34849,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34852,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":34855,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":34857,"t":"code","b":[240,241],"m":"beq","oa":34844,"o":"b_881C"},{"a":34859,"t":"code","b":[104],"m":"pla"},{"a":34860,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":34863,"t":"code","b":[96],"m":"rts"},{"a":34864,"l":"unref_rts_8830","c":"An RTS after $882F's RTS; no reference to $8830 was found.","t":"code","b":[96],"m":"rts"},{"a":34865,"l":"unused_zero_8831","c":"Unused: 12 zero bytes after unref_rts_8830 ($8831-$883C); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34873,"t":"byte","b":[0,0,0,0]},{"a":34877,"l":"unref_jmp_88db","c":"JMP $88DB; no reference to $883D was found.","t":"code","b":[76,219,136],"m":"jmp","oa":35035,"o":"unref_irq_draw_7ca0_c"},{"a":34880,"l":"room11_irq_flash","c":"Room 11's IRQ, continued from $86A4: when sprite 1's X reaches $80, $AA9A at cell (35,3) and $AA83 at (35,20) are drawn with colour $DC; when it reaches 0 (after wrapping), with $4C; then JMP $8215.","t":"code","b":[173,2,208],"m":"lda","o":"vic_sprite1_x","x":[34468]},{"a":34883,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":34885,"t":"code","b":[208,25],"m":"bne","oa":34912,"o":"b_8860"},{"a":34887,"t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":34889,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":34891,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":34893,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":34895,"t":"code","b":[32,154,170],"m":"jsr","oa":43674,"o":"draw_arrow_down"},{"a":34898,"t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":34900,"t":"code","b":[160,20],"m":"ldy","o":"#$14"},{"a":34902,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":34904,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":34906,"t":"code","b":[32,131,170],"m":"jsr","oa":43651,"o":"draw_arrow_up"},{"a":34909,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":34912,"l":"b_8860","t":"code","b":[201,0],"m":"cmp","o":"#$00","x":[34885]},{"a":34914,"t":"code","b":[208,22],"m":"bne","oa":34938,"o":"b_887A"},{"a":34916,"t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":34918,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":34920,"t":"code","b":[169,76],"m":"lda","o":"#$4C"},{"a":34922,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":34924,"t":"code","b":[32,154,170],"m":"jsr","oa":43674,"o":"draw_arrow_down"},{"a":34927,"t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":34929,"t":"code","b":[160,20],"m":"ldy","o":"#$14"},{"a":34931,"t":"code","b":[169,76],"m":"lda","o":"#$4C"},{"a":34933,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":34935,"t":"code","b":[32,131,170],"m":"jsr","oa":43651,"o":"draw_arrow_up"},{"a":34938,"l":"b_887A","t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms","x":[34914]},{"a":34941,"t":"gap","n":3},{"a":34944,"l":"unref_irq_hide_hat_8880","c":"IRQ fragment with no reference found: if Mr Hat's X high bit is set in $D010, switches him off in $D015; JMP $8215 either way.","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":34947,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":34949,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":34951,"t":"code","b":[208,11],"m":"bne","oa":34964,"o":"b_8894"},{"a":34953,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":34956,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":34958,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":34961,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":34964,"l":"b_8894","t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms","x":[34951]},{"a":34967,"l":"unused_zero_8897","c":"Unused: 9 zero bytes after unref_irq_hide_hat_8880 ($8897-$889F); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34975,"t":"byte","b":[0]},{"a":34976,"l":"unref_irq_draw_7ca0_a","c":"IRQ fragment with no reference found: copies the 2 x 2 cells of graphics at $7CA0/$7CB0 into the bitmap at $3458/$3598 (columns 11-12, rows 16-17), without colouring the cells, then JMP $8215.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":34978,"l":"b_88A2","t":"code","b":[189,160,124],"m":"lda","oa":31904,"o":"small_figure_bitmap,x","x":[34993]},{"a":34981,"t":"code","b":[157,88,52],"m":"sta","oa":13400,"o":"f_3458,x"},{"a":34984,"t":"code","b":[189,176,124],"m":"lda","oa":31920,"o":"small_figure_bitmap_bottom,x"},{"a":34987,"t":"code","b":[157,152,53],"m":"sta","oa":13720,"o":"f_3598,x"},{"a":34990,"t":"code","b":[232],"m":"inx"},{"a":34991,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":34993,"t":"code","b":[208,239],"m":"bne","oa":34978,"o":"b_88A2"},{"a":34995,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":34998,"l":"unref_irq_draw_7ca0_b","c":"IRQ fragment with no reference found: colours cells $06B0/$06B1 and $06D8/$06D9 $7C and copies $7CA0/$7CB0 into the bitmap at $3580/$36C0 (columns 8-9, rows 17-18), then JMP $8215.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":35000,"l":"b_88B8","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[35011]},{"a":35002,"t":"code","b":[157,176,6],"m":"sta","oa":1712,"o":"f_06B0,x"},{"a":35005,"t":"code","b":[157,216,6],"m":"sta","oa":1752,"o":"a_06D8,x"},{"a":35008,"t":"code","b":[232],"m":"inx"},{"a":35009,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":35011,"t":"code","b":[208,243],"m":"bne","oa":35000,"o":"b_88B8"},{"a":35013,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":35015,"l":"b_88C7","t":"code","b":[189,160,124],"m":"lda","oa":31904,"o":"small_figure_bitmap,x","x":[35030]},{"a":35018,"t":"code","b":[157,128,53],"m":"sta","oa":13696,"o":"f_3580,x"},{"a":35021,"t":"code","b":[189,176,124],"m":"lda","oa":31920,"o":"small_figure_bitmap_bottom,x"},{"a":35024,"t":"code","b":[157,192,54],"m":"sta","oa":14016,"o":"f_36C0,x"},{"a":35027,"t":"code","b":[232],"m":"inx"},{"a":35028,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":35030,"t":"code","b":[208,239],"m":"bne","oa":35015,"o":"b_88C7"},{"a":35032,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":35035,"l":"unref_irq_draw_7ca0_c","c":"IRQ fragment reached only from $883D, itself unreferenced: colours cells $0661/$0662 and $0689/$068A $7C and copies $7CA0/$7CB0 into the bitmap at $3308/$3448 (columns 9-10, rows 15-16), then JMP $8215. The same colour $7C (yellow on grey) as the Golden Hat that $7C50 draws, but other graphics ($7CA0, not $7C00).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[34877]},{"a":35037,"l":"b_88DD","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[35048]},{"a":35039,"t":"code","b":[157,97,6],"m":"sta","oa":1633,"o":"f_0661,x"},{"a":35042,"t":"code","b":[157,137,6],"m":"sta","oa":1673,"o":"f_0689,x"},{"a":35045,"t":"code","b":[232],"m":"inx"},{"a":35046,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":35048,"t":"code","b":[208,243],"m":"bne","oa":35037,"o":"b_88DD"},{"a":35050,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":35052,"l":"b_88EC","t":"code","b":[189,160,124],"m":"lda","oa":31904,"o":"small_figure_bitmap,x","x":[35067]},{"a":35055,"t":"code","b":[157,8,51],"m":"sta","oa":13064,"o":"f_3308,x"},{"a":35058,"t":"code","b":[189,176,124],"m":"lda","oa":31920,"o":"small_figure_bitmap_bottom,x"},{"a":35061,"t":"code","b":[157,72,52],"m":"sta","oa":13384,"o":"f_3448,x"},{"a":35064,"t":"code","b":[232],"m":"inx"},{"a":35065,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":35067,"t":"code","b":[208,239],"m":"bne","oa":35052,"o":"b_88EC"},{"a":35069,"t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms"},{"a":35072,"l":"room11_step","c":"JMP $B8F0, which goes on to $8908 (room 11's rules) if sprite 4 is on or its X high bit is set. Called twice a pass of the loop ($86BC, and $86DA before a crouch), after every step of a jump and of a crouch, and on fire with right ($87B3); the ladder climb $8949 and the lift rides do not call it.","t":"code","b":[76,240,184],"m":"jmp","oa":47344,"o":"hat_move_if_shown","x":[34492,34522,34568,34594,34623,34661,34687,34716,34739,34755,34844]},{"a":35075,"t":"gap","n":5},{"a":35080,"l":"room11_rules","c":"Room 11's rules for one step: $8912 (walls, ladder, lift, the block) and $5590 ($BB10 \u2192 $8E10: collisions and the object pick-ups; then $55F5 if $4ACE = $20). Jumped to from $B903.","t":"code","b":[32,18,137],"m":"jsr","oa":35090,"o":"room11_position_rules","x":[47363]},{"a":35083,"t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups"},{"a":35086,"t":"code","b":[96],"m":"rts"},{"a":35087,"l":"b_890F","t":"code","b":[76,172,137],"m":"jmp","oa":35244,"o":"j_89AC","x":[35110]},{"a":35090,"l":"room11_position_rules","c":"Where Mr Hat is in room 11. X low byte 0 or $FF \u2192 $B8B8, which moves him across the 256 boundary: X 0 becomes $0FE (high bit cleared) with sprite 4 switched on; X $FF becomes $124 (high bit set) with sprite 4 switched off, so he is not shown on the right side, where the lift sprite 5 stands (X $120). Y $5D or more \u2192 $8265. Top floor, left half ($D010 below $2F): X below $68 \u2192 INC $D008 (the left wall); X $80-$8F with the stick up ($7E) \u2192 $8949, the ladder. Top floor, right half ($896A): not exactly at Y $5C \u2192 $89A1; X $22-$33 (in the lift) with the stick down ($7D) \u2192 rides it down until Y $B4: $B910 (Y + 1, X low byte set to 1), sprite 5 Y + 1, delay $7AD1; X $34 or more \u2192 DEC $D008 while X is $30 or more (the right wall).","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[35080]},{"a":35093,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":35095,"t":"code","b":[208,4],"m":"bne","oa":35101,"o":"b_891D"},{"a":35097,"l":"b_8919","t":"code","b":[32,184,184],"m":"jsr","oa":47288,"o":"wrap_hat_x","x":[35103]},{"a":35100,"l":"r_891C","t":"code","b":[96],"m":"rts","x":[35132,35136,35143,35190,35201]},{"a":35101,"l":"b_891D","t":"code","b":[201,255],"m":"cmp","o":"#$FF","x":[35095]},{"a":35103,"t":"code","b":[240,248],"m":"beq","oa":35097,"o":"b_8919"},{"a":35105,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":35108,"t":"code","b":[201,93],"m":"cmp","o":"#$5D"},{"a":35110,"t":"code","b":[176,231],"m":"bcs","oa":35087,"o":"b_890F"},{"a":35112,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":35115,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":35117,"t":"code","b":[176,59],"m":"bcs","oa":35178,"o":"b_896A"},{"a":35119,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":35122,"t":"code","b":[201,104],"m":"cmp","o":"#$68"},{"a":35124,"t":"code","b":[176,4],"m":"bcs","oa":35130,"o":"b_893A"},{"a":35126,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":35129,"t":"code","b":[96],"m":"rts"},{"a":35130,"l":"b_893A","t":"code","b":[201,128],"m":"cmp","o":"#$80","x":[35124]},{"a":35132,"t":"code","b":[144,222],"m":"bcc","oa":35100,"o":"r_891C"},{"a":35134,"t":"code","b":[201,144],"m":"cmp","o":"#$90"},{"a":35136,"t":"code","b":[176,218],"m":"bcs","oa":35100,"o":"r_891C"},{"a":35138,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":35141,"t":"code","b":[201,126],"m":"cmp","o":"#$7E"},{"a":35143,"t":"code","b":[208,211],"m":"bne","oa":35100,"o":"r_891C"},{"a":35145,"l":"room11_ladder","c":"Room 11's ladder: pointer $32, X := $88, then $4B20 by the stick until Y is $5C (the top floor: returns) or goes above $28 (leaves up for room 9: entry code $4ACD = $78, JMP $7140, its set-up). Called from $80FC and $8657, reached from $8947.","t":"code","b":[169,50],"m":"lda","o":"#$32","x":[33020,34391,35175]},{"a":35147,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":35150,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":35152,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":35155,"t":"code","b":[32,32,75],"m":"jsr","oa":19232,"o":"ladder_climb_step"},{"a":35158,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":35161,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":35163,"t":"code","b":[176,8],"m":"bcs","oa":35173,"o":"b_8965"},{"a":35165,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":35167,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":35170,"t":"code","b":[76,64,113],"m":"jmp","oa":28992,"o":"room9_setup"},{"a":35173,"l":"b_8965","t":"code","b":[201,92],"m":"cmp","o":"#$5C","x":[35163]},{"a":35175,"t":"code","b":[208,224],"m":"bne","oa":35145,"o":"room11_ladder"},{"a":35177,"t":"code","b":[96],"m":"rts"},{"a":35178,"l":"b_896A","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[35117]},{"a":35181,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":35183,"t":"code","b":[208,48],"m":"bne","oa":35233,"o":"room11_right_wall"},{"a":35185,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":35188,"t":"code","b":[201,34],"m":"cmp","o":"#$22"},{"a":35190,"t":"code","b":[144,164],"m":"bcc","oa":35100,"o":"r_891C"},{"a":35192,"t":"code","b":[201,52],"m":"cmp","o":"#$34"},{"a":35194,"t":"code","b":[176,26],"m":"bcs","oa":35222,"o":"b_8996"},{"a":35196,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":35199,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":35201,"t":"code","b":[208,153],"m":"bne","oa":35100,"o":"r_891C"},{"a":35203,"l":"j_8983","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[35219]},{"a":35206,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":35208,"t":"code","b":[176,22],"m":"bcs","oa":35232,"o":"r_89A0"},{"a":35210,"t":"code","b":[32,16,185],"m":"jsr","oa":47376,"o":"hat_down_pin_x"},{"a":35213,"t":"code","b":[238,11,208],"m":"inc","o":"vic_sprite5_y"},{"a":35216,"t":"code","b":[32,209,122],"m":"jsr","oa":31441,"o":"delay_6x256"},{"a":35219,"t":"code","b":[76,131,137],"m":"jmp","oa":35203,"o":"j_8983"},{"a":35222,"l":"b_8996","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[35194]},{"a":35225,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":35227,"t":"code","b":[144,3],"m":"bcc","oa":35232,"o":"r_89A0"},{"a":35229,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":35232,"l":"r_89A0","t":"code","b":[96],"m":"rts","x":[35208,35227,35238]},{"a":35233,"l":"room11_right_wall","c":"DEC $D008 if Mr Hat's X low byte is $30 or more: the right wall of room 11's right half. Called from $826C; reached from $896F.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[33388,35183]},{"a":35236,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":35238,"t":"code","b":[144,248],"m":"bcc","oa":35232,"o":"r_89A0"},{"a":35240,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":35243,"t":"code","b":[96],"m":"rts"},{"a":35244,"l":"j_89AC","t":"code","b":[32,101,130],"m":"jsr","oa":33381,"o":"room11_lower_rules","x":[35087]},{"a":35247,"t":"code","b":[96],"m":"rts"},{"a":35248,"l":"unused_zero_89b0","c":"Unused: 32 zero bytes after room11_right_wall's tail ($89AC JSR $8265 / RTS), $89B0-$89CF; nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35280,"l":"tune2_irq","c":"Tune 2's IRQ tail, the same shape as tune 1's $8C00 but with tables $8A60/$8B00/$8B90. Its only jump is JMP $89D0 at $8A00, and nothing jumps to $8A00 (byte search of the image, absolute and as split immediates), so it never runs; $92C7-$92D1 resets its pointers at game start. If Mr Hat's pointer is $27 (the death frame; tested twice), or cell $0500 is $21 and cell $06AB is not $6E, it rewinds to the second note ($8A61/$8B01/$8B91) and JMP $B4C0; otherwise $8A03.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[35328]},{"a":35283,"t":"code","b":[201,39],"m":"cmp","o":"#$27"},{"a":35285,"t":"code","b":[240,21],"m":"beq","oa":35308,"o":"b_89EC"},{"a":35287,"t":"code","b":[201,39],"m":"cmp","o":"#$27"},{"a":35289,"t":"code","b":[240,17],"m":"beq","oa":35308,"o":"b_89EC"},{"a":35291,"t":"code","b":[173,0,5],"m":"lda","oa":1280,"o":"f_0500"},{"a":35294,"t":"code","b":[201,33],"m":"cmp","o":"#$21"},{"a":35296,"t":"code","b":[240,3],"m":"beq","oa":35301,"o":"b_89E5"},{"a":35298,"l":"b_89E2","t":"code","b":[76,3,138],"m":"jmp","oa":35331,"o":"tune2_count","x":[35306]},{"a":35301,"l":"b_89E5","t":"code","b":[173,171,6],"m":"lda","oa":1707,"o":"f_06AB","x":[35296]},{"a":35304,"t":"code","b":[201,110],"m":"cmp","o":"#$6E"},{"a":35306,"t":"code","b":[240,246],"m":"beq","oa":35298,"o":"b_89E2"},{"a":35308,"l":"b_89EC","t":"code","b":[169,97],"m":"lda","o":"#$61","x":[35285,35289]},{"a":35310,"t":"code","b":[141,40,138],"m":"sta","oa":35368,"o":"tune2_ptr_lo"},{"a":35313,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":35315,"t":"code","b":[141,46,138],"m":"sta","oa":35374,"o":"tune2_ptr_hi"},{"a":35318,"t":"code","b":[169,145],"m":"lda","o":"#$91"},{"a":35320,"t":"code","b":[141,52,138],"m":"sta","oa":35380,"o":"tune2_ptr_len"},{"a":35323,"t":"code","b":[76,192,180],"m":"jmp","oa":46272,"o":"sfx_raster_tone"},{"a":35326,"t":"code","b":[0],"m":"brk"},{"a":35327,"t":"code","b":[0],"m":"brk"},{"a":35328,"l":"tune2_entry","c":"JMP $89D0: an entry to tune 2 that nothing jumps to (none found).","t":"code","b":[76,208,137],"m":"jmp","oa":35280,"o":"tune2_irq"},{"a":35331,"l":"tune2_count","c":"Tune 2: counts $64F9 up to the note length $64FA; still short \u2192 JMP $EA31 (the KERNAL IRQ, at $8A59); reached \u2192 $85D0, the note off.","t":"code","b":[238,249,100],"m":"inc","oa":25849,"o":"tune_note_count","x":[35298]},{"a":35334,"t":"code","b":[173,249,100],"m":"lda","oa":25849,"o":"tune_note_count"},{"a":35337,"t":"code","b":[205,250,100],"m":"cmp","oa":25850,"o":"tune_note_length"},{"a":35340,"t":"code","b":[144,75],"m":"bcc","oa":35417,"o":"b_8A59"},{"a":35342,"t":"code","b":[76,208,133],"m":"jmp","oa":34256,"o":"tune2_note_off"},{"a":35345,"l":"tune2_next_note","c":"Tune 2's next note: volume $0F, voice 3 control $11 (triangle, gate) and attack/decay $20, frequency low $D40E from $8A60+n, high $D40F from $8B00+n, length $64FA from $8B90+n, $64F9 = 0, pointers + 1. At pointer $C9 (after $69 notes) it goes back to the second note ($8A4A). JMP $EA31.","t":"code","b":[169,15],"m":"lda","o":"#$0F","x":[34268]},{"a":35347,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":35350,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":35352,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":35355,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":35357,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":35360,"t":"code","b":[173,40,138],"m":"lda","oa":35368,"o":"tune2_ptr_lo"},{"a":35363,"t":"code","b":[201,201],"m":"cmp","o":"#$C9"},{"a":35365,"t":"code","b":[176,35],"m":"bcs","oa":35402,"o":"b_8A4A"},{"a":35367,"t":"code","b":[173,96,138],"m":"lda","oa":35424,"o":"tune2_freq_lo"},{"a":35368,"t":"note","l":"tune2_ptr_lo","c":"Low byte of the operand of LDA $8A60 at $8A27, tune 2's frequency-low pointer: $60 at game start ($92C7), + 1 a note ($8A3E), back to $61 at $C9 ($8A4C) or on a restart ($89EE).","note":"inside the item at $8A27","x":[35310,35360,35390,35404,37575]},{"a":35370,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":35373,"t":"code","b":[173,0,139],"m":"lda","oa":35584,"o":"tune2_freq_hi"},{"a":35374,"t":"note","l":"tune2_ptr_hi","c":"Low byte of the operand of LDA $8B00 at $8A2D, tune 2's frequency-high pointer: 0 at game start ($92CC), + 1 a note ($8A41), back to 1 ($8A51, $89F3).","note":"inside the item at $8A2D","x":[35315,35393,35409,37580]},{"a":35376,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":35379,"t":"code","b":[173,144,139],"m":"lda","oa":35728,"o":"tune2_lengths"},{"a":35380,"t":"note","l":"tune2_ptr_len","c":"Low byte of the operand of LDA $8B90 at $8A33, tune 2's note-length pointer: $90 at game start ($92D1), + 1 a note ($8A44), back to $91 ($8A56, $89F8).","note":"inside the item at $8A33","x":[35320,35396,35414,37585]},{"a":35382,"t":"code","b":[141,250,100],"m":"sta","oa":25850,"o":"tune_note_length"},{"a":35385,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":35387,"t":"code","b":[141,249,100],"m":"sta","oa":25849,"o":"tune_note_count"},{"a":35390,"t":"code","b":[238,40,138],"m":"inc","oa":35368,"o":"tune2_ptr_lo"},{"a":35393,"t":"code","b":[238,46,138],"m":"inc","oa":35374,"o":"tune2_ptr_hi"},{"a":35396,"t":"code","b":[238,52,138],"m":"inc","oa":35380,"o":"tune2_ptr_len"},{"a":35399,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":35402,"l":"b_8A4A","t":"code","b":[169,97],"m":"lda","o":"#$61","x":[35365]},{"a":35404,"t":"code","b":[141,40,138],"m":"sta","oa":35368,"o":"tune2_ptr_lo"},{"a":35407,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":35409,"t":"code","b":[141,46,138],"m":"sta","oa":35374,"o":"tune2_ptr_hi"},{"a":35412,"t":"code","b":[169,145],"m":"lda","o":"#$91"},{"a":35414,"t":"code","b":[141,52,138],"m":"sta","oa":35380,"o":"tune2_ptr_len"},{"a":35417,"l":"b_8A59","t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31","x":[35340]},{"a":35420,"t":"gap","n":4},{"a":35424,"l":"tune2_freq_lo","c":"Tune 2, voice 3 frequency low bytes, one a note, read by $8A27 through the pointer $8A28 ($8A60-$8AC8; $8AC9 is never reached).","t":"byte","b":[190,100,61,136,136,136,63,194],"x":[35367]},{"a":35432,"t":"byte","b":[136,136,190,100,61,136,136,136]},{"a":35440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35448,"t":"byte","b":[162,63,136,136,136,63,194,136]},{"a":35456,"t":"byte","b":[136,194,63,162,31,31,31,166]},{"a":35464,"t":"byte","b":[136,31,31,194,63,162,31,31]},{"a":35472,"t":"byte","b":[31,166,136,162,136,166,50,136]},{"a":35480,"t":"byte","b":[166,50,166,31,31,31,166,136]},{"a":35488,"t":"byte","b":[31,31,57,61,194,224,224,224]},{"a":35496,"t":"byte","b":[162,194,224,224,190,100,61,136]},{"a":35504,"t":"byte","b":[136,136,63,194,136,57,61,194]},{"a":35512,"t":"byte","b":[224,224,224,162,194,224,224,190]},{"a":35520,"t":"byte","b":[100,61,136,136,162,63,194,61]},{"a":35528,"t":"byte","b":[100,76]},{"a":35530,"t":"gap","n":6},{"a":35536,"l":"add_1000_flag_1015","c":"Sets $1015 = 1 (read at $B5B6/$B5C3 to play the pick-up effect at $B5D1 instead of the tune) and adds 1,000 points ($41DA). Called from $1210-$1247, the awards of 10, 20, 25, 50 and 75 thousand points.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[4624,4635,4646,4657,4668,4679]},{"a":35538,"t":"code","b":[141,21,16],"m":"sta","oa":4117,"o":"points_flag"},{"a":35541,"t":"code","b":[32,218,65],"m":"jsr","oa":16858,"o":"score_add_1000"},{"a":35544,"t":"code","b":[96],"m":"rts"},{"a":35545,"l":"unused_zero_8ad9","c":"Unused: 39 zero bytes between add_1000_flag_1015 and tune 2's frequency-high table; nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35553,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35561,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35569,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35577,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":35584,"l":"tune2_freq_hi","c":"Tune 2, voice 3 frequency high bytes, one a note, read by $8A2D through the pointer $8A2E ($8B00-$8B68; $8B69 is never reached).","t":"byte","b":[59,56,50,33,33,33,42,44],"x":[35373]},{"a":35592,"t":"byte","b":[33,33,59,56,50,33,33,33]},{"a":35600,"t":"byte","b":[42,44,50,44,42,37,44,42]},{"a":35608,"t":"byte","b":[37,42,33,33,33,42,44,33]},{"a":35616,"t":"byte","b":[33,44,47,37,25,25,25,31]},{"a":35624,"t":"byte","b":[33,25,25,44,42,37,25,25]},{"a":35632,"t":"byte","b":[25,31,33,37,33,31,28,33]},{"a":35640,"t":"byte","b":[31,28,31,25,25,25,31,33]},{"a":35648,"t":"byte","b":[25,25,53,61,44,29,29,29]},{"a":35656,"t":"byte","b":[37,44,29,29,59,56,50,33]},{"a":35664,"t":"byte","b":[33,33,42,44,33,33,53,61]},{"a":35672,"t":"byte","b":[44,29,29,29,37,44,29,29]},{"a":35680,"t":"byte","b":[59,56,50,33,37,42,44,50]},{"a":35688,"t":"byte","b":[56,63]},{"a":35690,"l":"unused_zero_8b6a","c":"Unused: 38 zero bytes between tune 2's frequency-high and length tables.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35698,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35706,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35714,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35722,"t":"byte","b":[0,0,0,0,0,0]},{"a":35728,"l":"tune2_lengths","c":"Tune 2, note lengths in IRQs ($08 or $10, one $20), one a note, read by $8A33 through the pointer $8A34 into $64FA ($8B90-$8BF8). One byte of it, $8BE4 ($10), is also read by the effects at $B4F0, $B57B and $B60E and stored to $D022 (see tune2_len_b4f0).","t":"byte","b":[8,8,8,16,16,8,8,8],"x":[35379]},{"a":35736,"t":"byte","b":[16,16,8,8,8,16,16,8]},{"a":35744,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":35752,"t":"byte","b":[8,8,8,8,8,8,8,16]},{"a":35760,"t":"byte","b":[16,8,8,8,16,16,8,8]},{"a":35768,"t":"byte","b":[8,16,16,8,8,8,16,16]},{"a":35776,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":35784,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":35792,"t":"byte","b":[16,16,8,8,8,16,16,8]},{"a":35800,"t":"byte","b":[8,8,16,16,8,8,8,16]},{"a":35808,"t":"byte","b":[16,8,8,8]},{"a":35812,"l":"tune2_len_b4f0","c":"Inside tune 2's length table: the byte ($10) that LDA $8BE4 at $B4F0, $B57B and $B60E reads and stores to $D022. Only $B4F0's operand low byte $B4F1 is ever written, always to $91 ($B513, $B59E, $B631; nothing increments it), and it holds $E4 in all twelve snapshots; the operands at $B57C and $B60F are never written. So the effects always read this one byte.","t":"byte","b":[16,16,8,8,8,16,16,8],"x":[46320,46459,46606]},{"a":35820,"t":"byte","b":[8,8,16,16,8,8,8,32]},{"a":35828,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":35836,"t":"byte","b":[8,8,8,8]},{"a":35840,"l":"tune1_irq","c":"The in-play tune's IRQ tail, at the end of the chain every room's handler finishes with ($8215 -> $BF30 -> $B530 -> here), reached from $B5BD/$B5CA when $1015 is 0. Mr Hat's pointer $27 (the death frame) \u2192 rewind the tune ($8C58/$8C5E/$8C64 = $90/$30/$90) and JMP $B4C0. Otherwise colour cell $0400 not $20, or $06AB = $6E \u2192 $7C70 (F1 toggles $1019, the music on or off, then $8C33 or $EA31); $0400 = $20 with $06AB not $6E \u2192 rewind and $B4C0. Live, the tune pointer $8C58 moved on in rooms 1, 2, 3, 5, 8, 9 and 11 (2 and 3 October 2026): it is the tune of play, not of one room.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[35888,46525,46538]},{"a":35843,"t":"code","b":[201,39],"m":"cmp","o":"#$27"},{"a":35845,"t":"code","b":[240,21],"m":"beq","oa":35868,"o":"b_8C1C"},{"a":35847,"t":"code","b":[234],"m":"nop"},{"a":35848,"t":"code","b":[234],"m":"nop"},{"a":35849,"t":"code","b":[234],"m":"nop"},{"a":35850,"t":"code","b":[234],"m":"nop"},{"a":35851,"t":"code","b":[173,0,4],"m":"lda","oa":1024,"o":"room_marker_cell"},{"a":35854,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":35856,"t":"code","b":[240,3],"m":"beq","oa":35861,"o":"b_8C15"},{"a":35858,"l":"b_8C12","t":"code","b":[76,112,124],"m":"jmp","oa":31856,"o":"irq_tail_f1_music_switch","x":[35866]},{"a":35861,"l":"b_8C15","t":"code","b":[173,171,6],"m":"lda","oa":1707,"o":"f_06AB","x":[35856]},{"a":35864,"t":"code","b":[201,110],"m":"cmp","o":"#$6E"},{"a":35866,"t":"code","b":[240,246],"m":"beq","oa":35858,"o":"b_8C12"},{"a":35868,"l":"b_8C1C","t":"code","b":[169,144],"m":"lda","o":"#$90","x":[35845]},{"a":35870,"t":"code","b":[141,88,140],"m":"sta","oa":35928,"o":"tune1_ptr_d022"},{"a":35873,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":35875,"t":"code","b":[141,94,140],"m":"sta","oa":35934,"o":"tune1_ptr_hi"},{"a":35878,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":35880,"t":"code","b":[141,100,140],"m":"sta","oa":35940,"o":"tune1_ptr_len"},{"a":35883,"t":"code","b":[76,192,180],"m":"jmp","oa":46272,"o":"sfx_raster_tone"},{"a":35886,"t":"gap","n":2},{"a":35888,"l":"unref_jmp_8c00","c":"JMP $8C00; no reference to $8C30 was found.","t":"code","b":[76,0,140],"m":"jmp","oa":35840,"o":"tune1_irq"},{"a":35891,"l":"tune1_count","c":"Tune 1, one IRQ's worth (from $7C8B): counts $64F9 up to the note length $64FA; still short \u2192 JMP $EA31; reached \u2192 $85DF, the note off, which goes on to $8C41.","t":"code","b":[238,249,100],"m":"inc","oa":25849,"o":"tune_note_count","x":[31883]},{"a":35894,"t":"code","b":[173,249,100],"m":"lda","oa":25849,"o":"tune_note_count"},{"a":35897,"t":"code","b":[205,250,100],"m":"cmp","oa":25850,"o":"tune_note_length"},{"a":35900,"t":"code","b":[144,75],"m":"bcc","oa":35977,"o":"b_8C89"},{"a":35902,"t":"code","b":[76,223,133],"m":"jmp","oa":34271,"o":"tune1_note_off"},{"a":35905,"l":"tune1_next_note","c":"Tune 1's next note: volume $0F, voice 3 control $11 (triangle, gate) and attack/decay $20, voice 3 frequency high $D40F from $8D30+n, length $64FA from $8D90+n, $64F9 = 0, and background colour 1 $D022 from $8C90+n (the column tune 2 sends to the frequency low byte; $D40E is not written). Pointers + 1; at $EF (after $5F notes) back to the first ($8C7A). JMP $EA31.","t":"code","b":[169,15],"m":"lda","o":"#$0F","x":[34283]},{"a":35907,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":35910,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":35912,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":35915,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":35917,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":35920,"t":"code","b":[173,88,140],"m":"lda","oa":35928,"o":"tune1_ptr_d022"},{"a":35923,"t":"code","b":[201,239],"m":"cmp","o":"#$EF"},{"a":35925,"t":"code","b":[176,35],"m":"bcs","oa":35962,"o":"b_8C7A"},{"a":35927,"t":"code","b":[173,144,140],"m":"lda","oa":35984,"o":"tune1_d022_notes"},{"a":35928,"t":"note","l":"tune1_ptr_d022","c":"Low byte of the operand of LDA $8C90 at $8C57, tune 1's pointer into $8C90: $90 at game start ($92D6) and on a rewind ($8C1E, $8C7C), + 1 a note ($8C6E). $E1 in the room-1 play snapshot.","note":"inside the item at $8C57","x":[35870,35920,35950,35964,37590]},{"a":35930,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":35933,"t":"code","b":[173,48,141],"m":"lda","oa":36144,"o":"tune1_freq_hi"},{"a":35934,"t":"note","l":"tune1_ptr_hi","c":"Low byte of the operand of LDA $8D30 at $8C5D, tune 1's frequency-high pointer: $30 at game start ($92DB) and on a rewind ($8C23, $8C81), + 1 a note ($8C71).","note":"inside the item at $8C5D","x":[35875,35953,35969,37595]},{"a":35936,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":35939,"t":"code","b":[173,144,141],"m":"lda","oa":36240,"o":"tune1_lengths"},{"a":35940,"t":"note","l":"tune1_ptr_len","c":"Low byte of the operand of LDA $8D90 at $8C63, tune 1's length pointer: $90 at game start ($92E0) and on a rewind ($8C28, $8C86), + 1 a note ($8C74).","note":"inside the item at $8C63","x":[35880,35956,35974,37600]},{"a":35942,"t":"code","b":[141,250,100],"m":"sta","oa":25850,"o":"tune_note_length"},{"a":35945,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":35947,"t":"code","b":[141,249,100],"m":"sta","oa":25849,"o":"tune_note_count"},{"a":35950,"t":"code","b":[238,88,140],"m":"inc","oa":35928,"o":"tune1_ptr_d022"},{"a":35953,"t":"code","b":[238,94,140],"m":"inc","oa":35934,"o":"tune1_ptr_hi"},{"a":35956,"t":"code","b":[238,100,140],"m":"inc","oa":35940,"o":"tune1_ptr_len"},{"a":35959,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":35962,"l":"b_8C7A","t":"code","b":[169,144],"m":"lda","o":"#$90","x":[35925]},{"a":35964,"t":"code","b":[141,88,140],"m":"sta","oa":35928,"o":"tune1_ptr_d022"},{"a":35967,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":35969,"t":"code","b":[141,94,140],"m":"sta","oa":35934,"o":"tune1_ptr_hi"},{"a":35972,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":35974,"t":"code","b":[141,100,140],"m":"sta","oa":35940,"o":"tune1_ptr_len"},{"a":35977,"l":"b_8C89","t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31","x":[35900]},{"a":35980,"t":"gap","n":4},{"a":35984,"l":"tune1_d022_notes","c":"Tune 1's first column, one byte a note ($8C90-$8CEE; zeros from $8CD8), written to background colour 1 $D022 by $8C57. Apart from $60 ($8CC4-$8CC5 and $8CCC-$8CCD), its values all occur in tune 2's frequency-low table $8A60.","t":"byte","b":[136,136,63,61,194,194,100,61],"x":[35927]},{"a":35992,"t":"byte","b":[136,136,63,61,194,194,100,61]},{"a":36000,"t":"byte","b":[194,194,100,136,190,190,162,136]},{"a":36008,"t":"byte","b":[194,194,100,136,190,190,162,136]},{"a":36016,"t":"byte","b":[136,136,63,61,194,194,100,61]},{"a":36024,"t":"byte","b":[136,136,63,61,194,194,100,61]},{"a":36032,"t":"byte","b":[31,31,166,162,96,96,50,136]},{"a":36040,"t":"byte","b":[31,31,166,162,96,96,50,31]},{"a":36048,"t":"byte","b":[31,31,31,31,31,31,31,31]},{"a":36056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36072,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":36079,"l":"unused_zero_8cef","c":"Unused: 65 zero bytes between tune 1's first column and its frequency-high table.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36087,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36095,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36103,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36111,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36119,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36127,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36135,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36143,"t":"byte","b":[0]},{"a":36144,"l":"tune1_freq_hi","c":"Tune 1, voice 3 frequency high bytes, one a note, read by $8C5D ($8D30-$8D8E).","t":"byte","b":[33,33,50,59,50,0,33,33],"x":[35933]},{"a":36152,"t":"byte","b":[50,59,50,0,44,44,56,59]},{"a":36160,"t":"byte","b":[56,0,44,44,56,59,56,44]},{"a":36168,"t":"byte","b":[33,33,50,59,50,0,33,33]},{"a":36176,"t":"byte","b":[50,59,50,0,44,44,56,59]},{"a":36184,"t":"byte","b":[56,0,44,44,56,59,56,44]},{"a":36192,"t":"byte","b":[42,42,56,59,56,0,42,42]},{"a":36200,"t":"byte","b":[56,59,56,42,39,39,56,59]},{"a":36208,"t":"byte","b":[56,0,39,39,56,59,56,39]},{"a":36216,"t":"byte","b":[36,36,56,59,56,0,36,36]},{"a":36224,"t":"byte","b":[56,59,56,65,50,50,56,59]},{"a":36232,"t":"byte","b":[42,42,42,42,42,42,42,42]},{"a":36240,"l":"tune1_lengths","c":"Tune 1, note lengths in IRQs (all $08), one a note, read by $8C63 into $64FA ($8D90-$8DEE; $08 continues to $8E07).","t":"byte","b":[8,8,8,8,8,8,8,8],"x":[35939]},{"a":36248,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36256,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36264,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36272,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36280,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36288,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36296,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36304,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36312,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36320,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36328,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36336,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36344,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36352,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":36360,"l":"pickups_after_4c40","c":"$4C40 (a collision test: $B666, which kills through $4C52 when $D01E = $90, then $4C52 \u2192 $A877 when a second read of $D01E is $14 or $18), then the object pick-ups at $8E13 without $55B0. Room 3's per-step test: called from $4AE7 (room 3's top-floor code $4AD0) and $4B8D (room 3's bottom-floor code, itself called from $1043).","t":"code","b":[32,64,76],"m":"jsr","oa":19520,"o":"guardian_hit_check","x":[19175,19341]},{"a":36363,"t":"code","b":[32,19,142],"m":"jsr","oa":36371,"o":"room_object_pickups"},{"a":36366,"t":"code","b":[96],"m":"rts"},{"a":36367,"t":"gap","n":1},{"a":36368,"l":"collisions_and_pickups","c":"Called from $BB10, which $5590 calls in the per-step checks of rooms 2, 4, 5, 6, 7, 8, 9 and 11 (not 1, 3 or 10). $55B0 first: Mr Hat's sprite-sprite collisions in $D01E equal to $11, $12, $14, $18, $50 or $90 set the death flag $4ACE = $20 ($55E5). Then the pick-ups, $8E13.","t":"code","b":[32,176,85],"m":"jsr","oa":21936,"o":"hat_collision_test","x":[47888]},{"a":36371,"l":"room_object_pickups","c":"Objects collected by standing over them and pulling the stick down, rooms 2-7 by the room id $100C (other ids: $B100). Each one: a gate (room 2 $B2E0, room 3 $B339, room 5 $B366, room 6 $B393, rooms 4 and 7 $1200), whose Z flag from $1200 limits the pick-ups to one half of the room: X past 255 in room 3, below 256 in the others; the floor ($1208: carry clear above Y $60); $A97C with A = $10 (X low byte in [X, Y) and $DC00 = $7D); a once-only flag; the cells cleared ($BD1D 2 x 3 cells or $BCFE 2 x 2, colour $CC); then points, or in rooms 3 and 7 the immunity $1250 (RTS written over $A877 and $4C52). Room 2: top X $74-$93, $1371, (14,5), 10,000 ($120E); lower X $84-$A3, $1372, (16,17), 25,000 ($1224). Room 3 (right half): lower X $104-$123, $1373, (32,17), $1250. Room 4: lower X $24-$43, $1374, (4,16), 25,000; X $DC-$FB, $1375, (27,17), 25,000. Room 5: top X $D4-$F3, $1376, (26,5), 20,000 ($1219). Room 6 (only when $22 is not 0): top X $1C-$3B, $1377, (3,5), 20,000; lower X $7C-$9B, $1378, (15,17), 25,000. Room 7: lower X $84-$A3, $1379, (16,17), $1250.","t":"code","b":[173,12,16],"m":"lda","oa":4108,"o":"room_number","x":[36363]},{"a":36374,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":36376,"t":"code","b":[208,78],"m":"bne","oa":36456,"o":"b_8E68"},{"a":36378,"t":"code","b":[32,224,178],"m":"jsr","oa":45792,"o":"room2_switch_and_barrier"},{"a":36381,"t":"code","b":[240,72],"m":"beq","oa":36455,"o":"r_8E67"},{"a":36383,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":36386,"t":"code","b":[176,34],"m":"bcs","oa":36422,"o":"b_8E46"},{"a":36388,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":36390,"t":"code","b":[162,116],"m":"ldx","o":"#$74"},{"a":36392,"t":"code","b":[160,148],"m":"ldy","o":"#$94"},{"a":36394,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36397,"t":"code","b":[144,22],"m":"bcc","oa":36421,"o":"r_8E45"},{"a":36399,"t":"code","b":[173,113,19],"m":"lda","oa":4977,"o":"object_flag_1371"},{"a":36402,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36404,"t":"code","b":[240,15],"m":"beq","oa":36421,"o":"r_8E45"},{"a":36406,"t":"code","b":[162,14],"m":"ldx","o":"#$0E"},{"a":36408,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":36410,"t":"code","b":[32,29,189],"m":"jsr","oa":48413,"o":"erase_2x3"},{"a":36413,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36415,"t":"code","b":[141,113,19],"m":"sta","oa":4977,"o":"object_flag_1371"},{"a":36418,"t":"code","b":[32,14,18],"m":"jsr","oa":4622,"o":"add_10000_points"},{"a":36421,"l":"r_8E45","t":"code","b":[96],"m":"rts","x":[36397,36404]},{"a":36422,"l":"b_8E46","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[36386]},{"a":36424,"t":"code","b":[162,132],"m":"ldx","o":"#$84"},{"a":36426,"t":"code","b":[160,164],"m":"ldy","o":"#$A4"},{"a":36428,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36431,"t":"code","b":[144,22],"m":"bcc","oa":36455,"o":"r_8E67"},{"a":36433,"t":"code","b":[173,114,19],"m":"lda","oa":4978,"o":"object_flag_1372"},{"a":36436,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36438,"t":"code","b":[240,15],"m":"beq","oa":36455,"o":"r_8E67"},{"a":36440,"t":"code","b":[162,16],"m":"ldx","o":"#$10"},{"a":36442,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":36444,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":36447,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36449,"t":"code","b":[141,114,19],"m":"sta","oa":4978,"o":"object_flag_1372"},{"a":36452,"t":"code","b":[32,36,18],"m":"jsr","oa":4644,"o":"add_25000_points"},{"a":36455,"l":"r_8E67","t":"code","b":[96],"m":"rts","x":[36381,36431,36438]},{"a":36456,"l":"b_8E68","t":"code","b":[201,3],"m":"cmp","o":"#$03","x":[36376]},{"a":36458,"t":"code","b":[208,44],"m":"bne","oa":36504,"o":"b_8E98"},{"a":36460,"t":"code","b":[32,57,179],"m":"jsr","oa":45881,"o":"room3_take_keyhole"},{"a":36463,"t":"code","b":[208,38],"m":"bne","oa":36503,"o":"r_8E97"},{"a":36465,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":36468,"t":"code","b":[144,33],"m":"bcc","oa":36503,"o":"r_8E97"},{"a":36470,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":36472,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":36474,"t":"code","b":[160,36],"m":"ldy","o":"#$24"},{"a":36476,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36479,"t":"code","b":[144,22],"m":"bcc","oa":36503,"o":"r_8E97"},{"a":36481,"t":"code","b":[173,115,19],"m":"lda","oa":4979,"o":"object_flag_1373"},{"a":36484,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36486,"t":"code","b":[240,15],"m":"beq","oa":36503,"o":"r_8E97"},{"a":36488,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":36490,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":36492,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":36495,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36497,"t":"code","b":[141,115,19],"m":"sta","oa":4979,"o":"object_flag_1373"},{"a":36500,"t":"code","b":[32,80,18],"m":"jsr","oa":4688,"o":"start_invulnerable"},{"a":36503,"l":"r_8E97","t":"code","b":[96],"m":"rts","x":[36463,36468,36479,36486]},{"a":36504,"l":"b_8E98","t":"code","b":[201,4],"m":"cmp","o":"#$04","x":[36458]},{"a":36506,"t":"code","b":[208,78],"m":"bne","oa":36586,"o":"b_8EEA"},{"a":36508,"t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255"},{"a":36511,"t":"code","b":[240,72],"m":"beq","oa":36585,"o":"r_8EE9"},{"a":36513,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":36516,"t":"code","b":[144,67],"m":"bcc","oa":36585,"o":"r_8EE9"},{"a":36518,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":36520,"t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":36522,"t":"code","b":[160,68],"m":"ldy","o":"#$44"},{"a":36524,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36527,"t":"code","b":[144,23],"m":"bcc","oa":36552,"o":"b_8EC8"},{"a":36529,"t":"code","b":[173,116,19],"m":"lda","oa":4980,"o":"object_flag_1374"},{"a":36532,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36534,"t":"code","b":[240,15],"m":"beq","oa":36551,"o":"r_8EC7"},{"a":36536,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":36538,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":36540,"t":"code","b":[32,29,189],"m":"jsr","oa":48413,"o":"erase_2x3"},{"a":36543,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36545,"t":"code","b":[141,116,19],"m":"sta","oa":4980,"o":"object_flag_1374"},{"a":36548,"t":"code","b":[32,36,18],"m":"jsr","oa":4644,"o":"add_25000_points"},{"a":36551,"l":"r_8EC7","t":"code","b":[96],"m":"rts","x":[36534]},{"a":36552,"l":"b_8EC8","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[36527]},{"a":36554,"t":"code","b":[162,220],"m":"ldx","o":"#$DC"},{"a":36556,"t":"code","b":[160,252],"m":"ldy","o":"#$FC"},{"a":36558,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36561,"t":"code","b":[144,22],"m":"bcc","oa":36585,"o":"r_8EE9"},{"a":36563,"t":"code","b":[173,117,19],"m":"lda","oa":4981,"o":"object_flag_1375"},{"a":36566,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36568,"t":"code","b":[240,15],"m":"beq","oa":36585,"o":"r_8EE9"},{"a":36570,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":36572,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":36574,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":36577,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36579,"t":"code","b":[141,117,19],"m":"sta","oa":4981,"o":"object_flag_1375"},{"a":36582,"t":"code","b":[32,36,18],"m":"jsr","oa":4644,"o":"add_25000_points"},{"a":36585,"l":"r_8EE9","t":"code","b":[96],"m":"rts","x":[36511,36516,36561,36568]},{"a":36586,"l":"b_8EEA","t":"code","b":[201,5],"m":"cmp","o":"#$05","x":[36506]},{"a":36588,"t":"code","b":[208,44],"m":"bne","oa":36634,"o":"b_8F1A"},{"a":36590,"t":"code","b":[32,102,179],"m":"jsr","oa":45926,"o":"room5_take_switch"},{"a":36593,"t":"code","b":[240,38],"m":"beq","oa":36633,"o":"r_8F19"},{"a":36595,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":36598,"t":"code","b":[176,33],"m":"bcs","oa":36633,"o":"r_8F19"},{"a":36600,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":36602,"t":"code","b":[162,212],"m":"ldx","o":"#$D4"},{"a":36604,"t":"code","b":[160,244],"m":"ldy","o":"#$F4"},{"a":36606,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36609,"t":"code","b":[144,22],"m":"bcc","oa":36633,"o":"r_8F19"},{"a":36611,"t":"code","b":[173,118,19],"m":"lda","oa":4982,"o":"object_flag_1376"},{"a":36614,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36616,"t":"code","b":[240,15],"m":"beq","oa":36633,"o":"r_8F19"},{"a":36618,"t":"code","b":[162,26],"m":"ldx","o":"#$1A"},{"a":36620,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":36622,"t":"code","b":[32,29,189],"m":"jsr","oa":48413,"o":"erase_2x3"},{"a":36625,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36627,"t":"code","b":[141,118,19],"m":"sta","oa":4982,"o":"object_flag_1376"},{"a":36630,"t":"code","b":[32,25,18],"m":"jsr","oa":4633,"o":"add_20000_points"},{"a":36633,"l":"r_8F19","t":"code","b":[96],"m":"rts","x":[36593,36598,36609,36616]},{"a":36634,"l":"b_8F1A","t":"code","b":[201,6],"m":"cmp","o":"#$06","x":[36588]},{"a":36636,"t":"code","b":[208,84],"m":"bne","oa":36722,"o":"b_8F72"},{"a":36638,"t":"code","b":[165,34],"m":"lda","oa":34,"o":"flag_obj_0022"},{"a":36640,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":36642,"t":"code","b":[240,78],"m":"beq","oa":36722,"o":"b_8F72"},{"a":36644,"t":"code","b":[32,147,179],"m":"jsr","oa":45971,"o":"room6_lock_and_switch"},{"a":36647,"t":"code","b":[240,72],"m":"beq","oa":36721,"o":"r_8F71"},{"a":36649,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":36652,"t":"code","b":[176,34],"m":"bcs","oa":36688,"o":"b_8F50"},{"a":36654,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":36656,"t":"code","b":[162,28],"m":"ldx","o":"#$1C"},{"a":36658,"t":"code","b":[160,60],"m":"ldy","o":"#$3C"},{"a":36660,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36663,"t":"code","b":[144,22],"m":"bcc","oa":36687,"o":"r_8F4F"},{"a":36665,"t":"code","b":[173,119,19],"m":"lda","oa":4983,"o":"object_flag_1377"},{"a":36668,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36670,"t":"code","b":[240,15],"m":"beq","oa":36687,"o":"r_8F4F"},{"a":36672,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":36674,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":36676,"t":"code","b":[32,29,189],"m":"jsr","oa":48413,"o":"erase_2x3"},{"a":36679,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36681,"t":"code","b":[141,119,19],"m":"sta","oa":4983,"o":"object_flag_1377"},{"a":36684,"t":"code","b":[32,25,18],"m":"jsr","oa":4633,"o":"add_20000_points"},{"a":36687,"l":"r_8F4F","t":"code","b":[96],"m":"rts","x":[36663,36670]},{"a":36688,"l":"b_8F50","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[36652]},{"a":36690,"t":"code","b":[162,124],"m":"ldx","o":"#$7C"},{"a":36692,"t":"code","b":[160,156],"m":"ldy","o":"#$9C"},{"a":36694,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36697,"t":"code","b":[144,22],"m":"bcc","oa":36721,"o":"r_8F71"},{"a":36699,"t":"code","b":[173,120,19],"m":"lda","oa":4984,"o":"object_flag_1378"},{"a":36702,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36704,"t":"code","b":[240,15],"m":"beq","oa":36721,"o":"r_8F71"},{"a":36706,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":36708,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":36710,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":36713,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36715,"t":"code","b":[141,120,19],"m":"sta","oa":4984,"o":"object_flag_1378"},{"a":36718,"t":"code","b":[32,36,18],"m":"jsr","oa":4644,"o":"add_25000_points"},{"a":36721,"l":"r_8F71","t":"code","b":[96],"m":"rts","x":[36647,36697,36704]},{"a":36722,"l":"b_8F72","t":"code","b":[201,7],"m":"cmp","o":"#$07","x":[36636,36642]},{"a":36724,"t":"code","b":[208,44],"m":"bne","oa":36770,"o":"b_8FA2"},{"a":36726,"t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255"},{"a":36729,"t":"code","b":[240,38],"m":"beq","oa":36769,"o":"r_8FA1"},{"a":36731,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":36734,"t":"code","b":[144,33],"m":"bcc","oa":36769,"o":"r_8FA1"},{"a":36736,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":36738,"t":"code","b":[162,132],"m":"ldx","o":"#$84"},{"a":36740,"t":"code","b":[160,164],"m":"ldy","o":"#$A4"},{"a":36742,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":36745,"t":"code","b":[144,22],"m":"bcc","oa":36769,"o":"r_8FA1"},{"a":36747,"t":"code","b":[173,121,19],"m":"lda","oa":4985,"o":"object_flag_1379"},{"a":36750,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":36752,"t":"code","b":[240,15],"m":"beq","oa":36769,"o":"r_8FA1"},{"a":36754,"t":"code","b":[162,16],"m":"ldx","o":"#$10"},{"a":36756,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":36758,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":36761,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36763,"t":"code","b":[141,121,19],"m":"sta","oa":4985,"o":"object_flag_1379"},{"a":36766,"t":"code","b":[32,80,18],"m":"jsr","oa":4688,"o":"start_invulnerable"},{"a":36769,"l":"r_8FA1","t":"code","b":[96],"m":"rts","x":[36729,36734,36745,36752]},{"a":36770,"l":"b_8FA2","t":"code","b":[32,0,177],"m":"jsr","oa":45312,"o":"pickup_rooms_8_9","x":[36724]},{"a":36773,"t":"code","b":[96],"m":"rts"},{"a":36774,"t":"gap","n":2},{"a":36776,"l":"draw_objects_8fa8","c":"Draws the keyhole tile ($A763: $AC00, colour $0C, 3 x 3 cells) at cell (15,5) and runs $B22B, which only colours 3 x 2 cells at (19,5) with $50 (no graphics). Called from $B3B6, when room 6's lock opens.","t":"code","b":[162,15],"m":"ldx","o":"#$0F","x":[46006]},{"a":36778,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":36780,"t":"code","b":[32,99,167],"m":"jsr","oa":42851,"o":"draw_keyhole"},{"a":36783,"t":"code","b":[32,43,178],"m":"jsr","oa":45611,"o":"paint_room6_lock_open"},{"a":36786,"t":"code","b":[96],"m":"rts"},{"a":36787,"l":"draw_objects_8fb3","c":"Draws two objects, colour $1C, 2 x 1 cells, at cells (27,3) ($BF63) and (27,6) ($BF82). Called from $B44B.","t":"code","b":[162,27],"m":"ldx","o":"#$1B","x":[46155]},{"a":36789,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":36791,"t":"code","b":[32,99,191],"m":"jsr","oa":48995,"o":"draw_barrier_open_top"},{"a":36794,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":36796,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":36798,"t":"code","b":[32,130,191],"m":"jsr","oa":49026,"o":"draw_barrier_open_bottom"},{"a":36801,"t":"code","b":[96],"m":"rts"},{"a":36802,"l":"unused_zero_8fc2","c":"Unused: 46 zero bytes after draw_objects_8fb3 ($8FC2-$8FEF); nothing reads them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36810,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36818,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36826,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36834,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36842,"t":"byte","b":[0,0,0,0,0,0]},{"a":36848,"l":"to_room7_setup","c":"Nine NOPs, then JMP $95A0, room 7's set-up (room id 7 at $95F6). Reached by BEQ from $900D/$9011 when the entry code $4ACD is $40 or $48.","t":"code","b":[234],"m":"nop","x":[36877,36881]},{"a":36849,"t":"code","b":[234],"m":"nop"},{"a":36850,"t":"code","b":[234],"m":"nop"},{"a":36851,"t":"code","b":[234],"m":"nop"},{"a":36852,"t":"code","b":[234],"m":"nop"},{"a":36853,"t":"code","b":[234],"m":"nop"},{"a":36854,"t":"code","b":[234],"m":"nop"},{"a":36855,"t":"code","b":[234],"m":"nop"},{"a":36856,"t":"code","b":[234],"m":"nop"},{"a":36857,"t":"code","b":[76,160,149],"m":"jmp","oa":38304,"o":"room7_setup"},{"a":36860,"l":"enter_room4_or_7","c":"Clears $99 and runs on into $9000, which chooses by the entry code $4ACD: $10, $28 or $07 \u2192 $9030 (room 4's set-up, id 4 at $907E); $40 or $48 \u2192 $8FF0 \u2192 room 7. Jumped to from $5B80 and $5B9A in room 5's code.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[23424,23450]},{"a":36862,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":36864,"l":"room47_enter","c":"Entry to the room block shared by the rooms with $100C = 4 and $100C = 7 (JMP here from $4848, $634A, $6B3D; $8FFC falls in after clearing $99). Dispatches on the door code $4ACD: $10, $28 or $07 go to $9030 (room $100C = 4); $40 or $48 go through $8FF0 to $95A0 (room $100C = 7); any other value only recolours the rows at $0608 ($9023) and returns. The four CMP #$07 tests at $9013-$9021 are identical, so three of them can never be the ones that match.","t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code","x":[18504,25418,27453]},{"a":36867,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":36869,"t":"code","b":[240,41],"m":"beq","oa":36912,"o":"room4_setup"},{"a":36871,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":36873,"t":"code","b":[240,37],"m":"beq","oa":36912,"o":"room4_setup"},{"a":36875,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":36877,"t":"code","b":[240,225],"m":"beq","oa":36848,"o":"to_room7_setup"},{"a":36879,"t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":36881,"t":"code","b":[240,221],"m":"beq","oa":36848,"o":"to_room7_setup"},{"a":36883,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":36885,"t":"code","b":[240,25],"m":"beq","oa":36912,"o":"room4_setup"},{"a":36887,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":36889,"t":"code","b":[240,21],"m":"beq","oa":36912,"o":"room4_setup"},{"a":36891,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":36893,"t":"code","b":[240,17],"m":"beq","oa":36912,"o":"room4_setup"},{"a":36895,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":36897,"t":"code","b":[240,13],"m":"beq","oa":36912,"o":"room4_setup"},{"a":36899,"l":"room47_colour_rows","c":"Fills 240 cells of the colour screen from $0608 ($0608-$06F7, rows 13 to 18 of the colour screen) with $CC. Called by $9037, $95A7 and by the fall-through at $9000.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[36919,38311]},{"a":36901,"l":"b_9025","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[36909]},{"a":36903,"t":"code","b":[157,8,6],"m":"sta","oa":1544,"o":"f_0608,x"},{"a":36906,"t":"code","b":[232],"m":"inx"},{"a":36907,"t":"code","b":[224,240],"m":"cpx","o":"#$F0"},{"a":36909,"t":"code","b":[208,246],"m":"bne","oa":36901,"o":"b_9025"},{"a":36911,"t":"code","b":[96],"m":"rts"},{"a":36912,"l":"room4_setup","c":"Builds the room with $100C = 4: $FD = $BA and JSR $56B0 (clears the bitmap and colours the room), $9023, copies 8+8 bitmap bytes $1640-$164F to $3D80 and $3EC0, draws via $B800 (X=$18,Y=$10) and $B83B (X=$22,Y=$10), draws the painting at column 14 row 14 ($A9D2), makes sprite 3 multicolour ($D01C bit 3), clears $100A/$100B, sprite 3 colour $0A and frame $3B, sets $100C = 4. Then ($9097) places Mr Hat by the door code: $4ACD = $10 puts him at the left (X $018, frame $2C), anything else at the right (X $145, frame $2F); continues at $90C5.","t":"code","b":[169,186],"m":"lda","o":"#$BA","x":[36869,36873,36885,36889,36893,36897]},{"a":36914,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":36916,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":36919,"t":"code","b":[32,35,144],"m":"jsr","oa":36899,"o":"room47_colour_rows"},{"a":36922,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":36924,"l":"b_903C","t":"code","b":[189,64,22],"m":"lda","oa":5696,"o":"digit_four_top,x","x":[36939]},{"a":36927,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":36930,"t":"code","b":[189,72,22],"m":"lda","oa":5704,"o":"digit_four_bottom,x"},{"a":36933,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":36936,"t":"code","b":[232],"m":"inx"},{"a":36937,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":36939,"t":"code","b":[208,239],"m":"bne","oa":36924,"o":"b_903C"},{"a":36941,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":36943,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":36945,"t":"code","b":[32,0,184],"m":"jsr","oa":47104,"o":"draw_obj_3x3_aff0"},{"a":36948,"t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":36950,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":36952,"t":"code","b":[32,59,184],"m":"jsr","oa":47163,"o":"draw_obj_2x3_afc0"},{"a":36955,"t":"code","b":[162,14],"m":"ldx","o":"#$0E"},{"a":36957,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":36959,"t":"code","b":[32,210,169],"m":"jsr","oa":43474,"o":"draw_painting"},{"a":36962,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":36965,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":36967,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":36970,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":36972,"t":"code","b":[141,11,16],"m":"sta","oa":4107,"o":"var_100b"},{"a":36975,"t":"code","b":[141,10,16],"m":"sta","oa":4106,"o":"anim_count_100a"},{"a":36978,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":36980,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":36983,"t":"code","b":[169,59],"m":"lda","o":"#$3B"},{"a":36985,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":36988,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":36990,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":36993,"t":"code","b":[234],"m":"nop"},{"a":36994,"t":"code","b":[234],"m":"nop"},{"a":36995,"t":"code","b":[234],"m":"nop"},{"a":36996,"t":"code","b":[234],"m":"nop"},{"a":36997,"t":"code","b":[234],"m":"nop"},{"a":36998,"t":"code","b":[234],"m":"nop"},{"a":36999,"t":"code","b":[234],"m":"nop"},{"a":37000,"t":"code","b":[234],"m":"nop"},{"a":37001,"t":"code","b":[234],"m":"nop"},{"a":37002,"t":"code","b":[234],"m":"nop"},{"a":37003,"t":"code","b":[234],"m":"nop"},{"a":37004,"t":"code","b":[234],"m":"nop"},{"a":37005,"t":"code","b":[234],"m":"nop"},{"a":37006,"t":"code","b":[234],"m":"nop"},{"a":37007,"t":"code","b":[234],"m":"nop"},{"a":37008,"t":"code","b":[234],"m":"nop"},{"a":37009,"t":"code","b":[234],"m":"nop"},{"a":37010,"t":"code","b":[234],"m":"nop"},{"a":37011,"t":"code","b":[234],"m":"nop"},{"a":37012,"t":"code","b":[234],"m":"nop"},{"a":37013,"t":"code","b":[234],"m":"nop"},{"a":37014,"t":"code","b":[234],"m":"nop"},{"a":37015,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":37018,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":37020,"t":"code","b":[208,21],"m":"bne","oa":37043,"o":"b_90B3"},{"a":37022,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":37025,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":37027,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":37030,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":37032,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":37035,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":37037,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":37040,"t":"code","b":[76,197,144],"m":"jmp","oa":37061,"o":"room47_start_play"},{"a":37043,"l":"b_90B3","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[37020]},{"a":37046,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":37048,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":37051,"t":"code","b":[169,69],"m":"lda","o":"#$45"},{"a":37053,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":37056,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":37058,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":37061,"l":"room47_start_play","c":"Common end of the set-up of rooms $100C = 4 and 7: $967D (clears $BD/$FB, Mr Hat's colour $0B), walk-frame bases $FD = $2C and $FF = $2F, $99 = 0, sprite 3 X = $90, enables sprites 3 and 4, passes $D010|8 to $BA40 (which stores it unless $100C = 7), Mr Hat's Y = $B4 ($9588), points the IRQ vector $0314/$0315 at $B9AD and jumps to the room loop at $931D.","t":"code","b":[234],"m":"nop","x":[37040,38501,38522]},{"a":37062,"t":"code","b":[234],"m":"nop"},{"a":37063,"t":"code","b":[234],"m":"nop"},{"a":37064,"t":"code","b":[32,125,150],"m":"jsr","oa":38525,"o":"hat_reset_colour"},{"a":37067,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":37069,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":37071,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":37073,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37075,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37077,"t":"code","b":[141,153,0],"m":"sta","oa":153,"o":"jump_step"},{"a":37080,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":37082,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":37085,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":37088,"t":"code","b":[9,24],"m":"ora","o":"#$18"},{"a":37090,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":37093,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":37096,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":37098,"t":"code","b":[32,64,186],"m":"jsr","oa":47680,"o":"store_d010_or_room7"},{"a":37101,"t":"code","b":[32,136,149],"m":"jsr","oa":38280,"o":"hat_y_floor_b4"},{"a":37104,"t":"code","b":[120],"m":"sei"},{"a":37105,"t":"code","b":[169,173],"m":"lda","o":"#$AD"},{"a":37107,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":37110,"t":"code","b":[169,185],"m":"lda","o":"#$B9"},{"a":37112,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":37115,"t":"code","b":[88],"m":"cli"},{"a":37116,"t":"code","b":[76,29,147],"m":"jmp","oa":37661,"o":"room47_loop_start"},{"a":37119,"t":"gap","n":1},{"a":37120,"l":"room47_colour_block_at_99","c":"Colours four rectangles of the colour screen through $56ED (value $FB, width $FC, height $FD, at ($FE/$FF)), placed by the column in $99: $0C 6x1 at $0600+$99, then the value in $64F3 6x5 at $0627+$99, then $64F3-5 4x4 at $0628+$99, then $66 2x2 at $0679+$99. No caller found (JSR/JMP bytes, pointers and immediate pairs searched over the whole image).","t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37122,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37124,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":37126,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":37128,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37130,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":37132,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":37134,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":37136,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37138,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37140,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":37143,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37145,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37147,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37149,"t":"code","b":[105,39],"m":"adc","o":"#$27"},{"a":37151,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37153,"t":"code","b":[173,243,100],"m":"lda","oa":25843,"o":"value_64f3"},{"a":37156,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":37158,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37160,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":37162,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":37164,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":37166,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":37169,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37171,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":37173,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37175,"t":"code","b":[173,243,100],"m":"lda","oa":25843,"o":"value_64f3"},{"a":37178,"t":"code","b":[233,5],"m":"sbc","o":"#$05"},{"a":37180,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":37182,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37184,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37186,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":37188,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":37190,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":37192,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":37195,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37197,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37199,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37201,"t":"code","b":[105,121],"m":"adc","o":"#$79"},{"a":37203,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37205,"t":"code","b":[169,102],"m":"lda","o":"#$66"},{"a":37207,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":37209,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":37211,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":37213,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":37215,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":37218,"t":"code","b":[96],"m":"rts"},{"a":37219,"l":"copy_1191_to_35d8","c":"Copies 48-byte runs from $1191 onward to $35D8,Y until Y = $F0, advancing its own source operand ($916B/$916C) after each run, then $9190 copies 48 more bytes to $36C8. $1191 is code in the image, so the copy would put code bytes into the bitmap. No caller found; a leftover whose purpose is not known.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":37221,"l":"b_9165","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[37251,37262]},{"a":37223,"l":"b_9167","t":"code","b":[185,145,17],"m":"lda","oa":4497,"o":"draw_pic_mc_sprite1,y","x":[37233]},{"a":37226,"t":"code","b":[153,216,53],"m":"sta","oa":13784,"o":"f_35D8,y"},{"a":37227,"t":"note","l":"copy_1191_src_lo","c":"Low byte of the source operand of LDA $1191,Y at $916A, raised by $10 per run by the loop at $9163 (self-modified).","note":"inside the item at $916A","x":[37238,37244,37270]},{"a":37228,"t":"note","l":"copy_1191_src_hi","c":"High byte of the source operand of LDA $1191,Y at $916A, incremented by the loop at $9163 (self-modified).","note":"inside the item at $916A","x":[37235,37257,37264]},{"a":37229,"t":"code","b":[232],"m":"inx"},{"a":37230,"t":"code","b":[200],"m":"iny"},{"a":37231,"t":"code","b":[224,48],"m":"cpx","o":"#$30"},{"a":37233,"t":"code","b":[208,244],"m":"bne","oa":37223,"o":"b_9167"},{"a":37235,"t":"code","b":[238,108,145],"m":"inc","oa":37228,"o":"copy_1191_src_hi"},{"a":37238,"t":"code","b":[173,107,145],"m":"lda","oa":37227,"o":"copy_1191_src_lo"},{"a":37241,"t":"code","b":[24],"m":"clc"},{"a":37242,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":37244,"t":"code","b":[141,107,145],"m":"sta","oa":37227,"o":"copy_1191_src_lo"},{"a":37247,"t":"code","b":[176,8],"m":"bcs","oa":37257,"o":"b_9189"},{"a":37249,"t":"code","b":[192,240],"m":"cpy","o":"#$F0"},{"a":37251,"t":"code","b":[208,224],"m":"bne","oa":37221,"o":"b_9165"},{"a":37253,"t":"code","b":[32,144,145],"m":"jsr","oa":37264,"o":"copy_1281_to_36c8"},{"a":37256,"t":"code","b":[96],"m":"rts"},{"a":37257,"l":"b_9189","t":"code","b":[238,108,145],"m":"inc","oa":37228,"o":"copy_1191_src_hi","x":[37247]},{"a":37260,"t":"code","b":[192,240],"m":"cpy","o":"#$F0"},{"a":37262,"t":"code","b":[208,213],"m":"bne","oa":37221,"o":"b_9165"},{"a":37264,"l":"copy_1281_to_36c8","c":"Tail of $9163: sets its own source operand ($91AA/$91AB) to the current $916B/$916C plus $F0 and copies 48 bytes from there to $36C8-$36F7 of the bitmap.","t":"code","b":[173,108,145],"m":"lda","oa":37228,"o":"copy_1191_src_hi","x":[37253]},{"a":37267,"t":"code","b":[141,171,145],"m":"sta","oa":37291,"o":"copy_1281_src_hi"},{"a":37270,"t":"code","b":[173,107,145],"m":"lda","oa":37227,"o":"copy_1191_src_lo"},{"a":37273,"t":"code","b":[24],"m":"clc"},{"a":37274,"t":"code","b":[105,240],"m":"adc","o":"#$F0"},{"a":37276,"t":"code","b":[141,170,145],"m":"sta","oa":37290,"o":"copy_1281_src_lo"},{"a":37279,"t":"code","b":[144,3],"m":"bcc","oa":37284,"o":"b_91A4"},{"a":37281,"t":"code","b":[238,171,145],"m":"inc","oa":37291,"o":"copy_1281_src_hi"},{"a":37284,"l":"b_91A4","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[37279]},{"a":37286,"l":"b_91A6","t":"code","b":[189,129,18],"m":"lda","oa":4737,"o":"f_1281,x","x":[37295]},{"a":37289,"t":"code","b":[157,200,54],"m":"sta","oa":14024,"o":"f_36C8,x"},{"a":37290,"t":"note","l":"copy_1281_src_lo","c":"Low byte of the source operand of LDA $1281,X at $91A6, written by $9190 (self-modified).","note":"inside the item at $91A9","x":[37276]},{"a":37291,"t":"note","l":"copy_1281_src_hi","c":"High byte of the source operand of LDA $1281,X at $91A6, written by $9190 (self-modified).","note":"inside the item at $91A9","x":[37267,37281]},{"a":37292,"t":"code","b":[232],"m":"inx"},{"a":37293,"t":"code","b":[224,48],"m":"cpx","o":"#$30"},{"a":37295,"t":"code","b":[208,245],"m":"bne","oa":37286,"o":"b_91A6"},{"a":37297,"t":"code","b":[96],"m":"rts"},{"a":37298,"l":"draw_7265_panel","c":"Copies four one-row bitmap strips of 48 bytes through $5713 (its source operand $5718/$5719 set to $7265, $7295, $72C5, $72F5) to $3100, $3240, $3380 and $34C0, then colours $0620 6x4 with $9C and $0649 3x2 with $FB through $56ED, and writes $09 to $064C and $79 to $0674. No caller found.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37300,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37302,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":37304,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37306,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":37308,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":37310,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":37312,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":37314,"t":"code","b":[169,101],"m":"lda","o":"#$65"},{"a":37316,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":37319,"t":"code","b":[169,114],"m":"lda","o":"#$72"},{"a":37321,"t":"code","b":[141,25,87],"m":"sta","oa":22297,"o":"pattern_src_hi"},{"a":37324,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":37327,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":37329,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37331,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":37333,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37335,"t":"code","b":[169,149],"m":"lda","o":"#$95"},{"a":37337,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":37340,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":37343,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":37345,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37347,"t":"code","b":[169,51],"m":"lda","o":"#$33"},{"a":37349,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37351,"t":"code","b":[169,197],"m":"lda","o":"#$C5"},{"a":37353,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":37356,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":37359,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":37361,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37363,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":37365,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37367,"t":"code","b":[169,245],"m":"lda","o":"#$F5"},{"a":37369,"t":"code","b":[141,24,87],"m":"sta","oa":22296,"o":"pattern_src_lo"},{"a":37372,"t":"code","b":[32,19,87],"m":"jsr","oa":22291,"o":"copy_pattern_rows"},{"a":37375,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":37377,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37379,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37381,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37383,"t":"code","b":[169,156],"m":"lda","o":"#$9C"},{"a":37385,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":37387,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37389,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":37391,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":37393,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":37395,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":37398,"t":"code","b":[169,73],"m":"lda","o":"#$49"},{"a":37400,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37402,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":37404,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37406,"t":"code","b":[169,251],"m":"lda","o":"#$FB"},{"a":37408,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":37410,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":37412,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":37414,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":37416,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":37418,"t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect"},{"a":37421,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":37423,"t":"code","b":[141,76,6],"m":"sta","oa":1612,"o":"a_064C"},{"a":37426,"t":"code","b":[169,121],"m":"lda","o":"#$79"},{"a":37428,"t":"code","b":[141,116,6],"m":"sta","oa":1652,"o":"a_0674"},{"a":37431,"t":"code","b":[96],"m":"rts"},{"a":37432,"l":"irq_tail_anim_5039","c":"An IRQ tail: counts $64F2 and, while it is below 16, copies 24 bytes from $5039 (+ a self-advancing low byte at $9245, +$27 a frame) to the bitmap at $3248 and $3388, resets $64F2, and ends at the KERNAL's $EA31. Same shape as $96B0 without its room test. No caller or vector found.","t":"code","b":[238,242,100],"m":"inc","oa":25842,"o":"counter_64f2"},{"a":37435,"t":"code","b":[173,242,100],"m":"lda","oa":25842,"o":"counter_64f2"},{"a":37438,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":37440,"t":"code","b":[176,29],"m":"bcs","oa":37471,"o":"b_925F"},{"a":37442,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":37444,"l":"b_9244","t":"code","b":[189,57,80],"m":"lda","oa":20537,"o":"f_5039,x","x":[37456]},{"a":37445,"t":"note","l":"anim_5039_src_lo","c":"Low byte of the source operand of LDA $5039,X at $9244, advanced by $27 each pass of $9238 (self-modified).","note":"inside the item at $9244","x":[37458,37463]},{"a":37447,"t":"code","b":[157,72,50],"m":"sta","oa":12872,"o":"f_3248,x"},{"a":37450,"t":"code","b":[157,136,51],"m":"sta","oa":13192,"o":"f_3388,x"},{"a":37453,"t":"code","b":[232],"m":"inx"},{"a":37454,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":37456,"t":"code","b":[208,242],"m":"bne","oa":37444,"o":"b_9244"},{"a":37458,"t":"code","b":[173,69,146],"m":"lda","oa":37445,"o":"anim_5039_src_lo"},{"a":37461,"t":"code","b":[105,39],"m":"adc","o":"#$27"},{"a":37463,"t":"code","b":[141,69,146],"m":"sta","oa":37445,"o":"anim_5039_src_lo"},{"a":37466,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37468,"t":"code","b":[141,242,100],"m":"sta","oa":25842,"o":"counter_64f2"},{"a":37471,"l":"b_925F","t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31","x":[37440]},{"a":37474,"t":"gap","n":3},{"a":37477,"l":"bitmap_mode_on","c":"Called from $0870, the start of every new game: reached after the title from the entry ($086D), and by JMP $0870 from $5BA4, $7CF3, $8012, $801A and $802A. $01 = $36, prints CHR$(147) (clear screen), border $0C, INC $D022, sets $D018 bit 3 (bitmap at $2000) and $D011 bit 5 (bitmap mode), and sets $FB/$FC = $2000.","t":"code","b":[169,54],"m":"lda","o":"#$36","x":[2160]},{"a":37479,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"cpu_port_banks"},{"a":37481,"t":"code","b":[169,147],"m":"lda","o":"#$93"},{"a":37483,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":37486,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":37488,"t":"code","b":[141,32,208],"m":"sta","o":"vic_border"},{"a":37491,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":37494,"t":"code","b":[173,24,208],"m":"lda","o":"vic_memory"},{"a":37497,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":37499,"t":"code","b":[141,24,208],"m":"sta","o":"vic_memory"},{"a":37502,"t":"code","b":[173,17,208],"m":"lda","o":"vic_control1"},{"a":37505,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":37507,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":37510,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37512,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":37514,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":37516,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":37518,"t":"code","b":[96],"m":"rts"},{"a":37519,"t":"gap","n":16},{"a":37535,"l":"text_mode_call_a000","c":"Switches to text mode ($D018 = $15, $D011 = $1B, $DD00 = $17), sets ($FE/$FF) = $A0B0 and calls $A000. $A000-$A1F5 is all zero in the image, so the call would execute BRK. No caller found; it looks like a leftover of the text display that Lupenio's text at $A1F6 belonged to.","t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":37537,"t":"code","b":[141,24,208],"m":"sta","o":"vic_memory"},{"a":37540,"t":"code","b":[169,27],"m":"lda","o":"#$1B"},{"a":37542,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":37545,"t":"code","b":[169,23],"m":"lda","o":"#$17"},{"a":37547,"t":"code","b":[141,0,221],"m":"sta","o":"cia2_port_a"},{"a":37550,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":37552,"t":"code","b":[133,254],"m":"sta","oa":254,"o":"zp_ptr_lo"},{"a":37554,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":37556,"t":"code","b":[133,255],"m":"sta","oa":255,"o":"zp_ptr_hi_or_walk_frame_left"},{"a":37558,"t":"code","b":[32,0,160],"m":"jsr","oa":40960,"o":"zeroed_a000"},{"a":37561,"t":"code","b":[96],"m":"rts"},{"a":37562,"t":"gap","n":6},{"a":37568,"l":"reset_patched_bytes","c":"Called from $708A: writes start values into bytes of other room blocks ($73D3 = $7C, $8A28 = $60, $8A2E = 0, $8A34 = $90, $8C58 = $90, $8C5E = $30, $8C64 = $90, $8503 = $50), restores the BRK vector $0316/$0317 to the KERNAL's $FE66, sets $D021 = $EA and $01 = $36. Then JSR $92FF, which is only an RTS.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[28810]},{"a":37570,"t":"code","b":[141,211,115],"m":"sta","oa":29651,"o":"room9_treasure_colour_op_b"},{"a":37573,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":37575,"t":"code","b":[141,40,138],"m":"sta","oa":35368,"o":"tune2_ptr_lo"},{"a":37578,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37580,"t":"code","b":[141,46,138],"m":"sta","oa":35374,"o":"tune2_ptr_hi"},{"a":37583,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":37585,"t":"code","b":[141,52,138],"m":"sta","oa":35380,"o":"tune2_ptr_len"},{"a":37588,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":37590,"t":"code","b":[141,88,140],"m":"sta","oa":35928,"o":"tune1_ptr_d022"},{"a":37593,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":37595,"t":"code","b":[141,94,140],"m":"sta","oa":35934,"o":"tune1_ptr_hi"},{"a":37598,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":37600,"t":"code","b":[141,100,140],"m":"sta","oa":35940,"o":"tune1_ptr_len"},{"a":37603,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":37605,"t":"code","b":[141,3,133],"m":"sta","oa":34051,"o":"room11_block_colour"},{"a":37608,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":37610,"t":"code","b":[141,23,3],"m":"sta","oa":791,"o":"brk_vector_hi"},{"a":37613,"t":"code","b":[169,102],"m":"lda","o":"#$66"},{"a":37615,"t":"code","b":[141,22,3],"m":"sta","oa":790,"o":"brk_vector_lo"},{"a":37618,"t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":37620,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":37623,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":37625,"t":"code","b":[141,1,0],"m":"sta","oa":1,"o":"cpu_port_banks"},{"a":37628,"t":"code","b":[32,255,146],"m":"jsr","oa":37631,"o":"rts_92ff"},{"a":37631,"l":"rts_92ff","c":"A lone RTS, called by $92FC.","t":"code","b":[96],"m":"rts","x":[37628]},{"a":37632,"l":"room4_irq_tail","c":"Reached from the room IRQ at $B9AD when $100C is not 7 (JMP $9300 at $B9B4): JSR $B877 (which moves sprite 3 one pixel left), moves sprite 3 one more pixel left ($D006), and when it reaches 0 flips its X high bit in $D010 and restarts it at $FE; then jumps to $96B0.","t":"code","b":[32,119,184],"m":"jsr","oa":47223,"o":"anim_sprite3_walk_left","x":[47540]},{"a":37635,"t":"code","b":[206,6,208],"m":"dec","o":"vic_sprite3_x"},{"a":37638,"t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x"},{"a":37641,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":37643,"t":"code","b":[208,13],"m":"bne","oa":37658,"o":"b_931A"},{"a":37645,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":37648,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":37650,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":37653,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":37655,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":37658,"l":"b_931A","t":"code","b":[76,176,150],"m":"jmp","oa":38576,"o":"anim_5069_if_room_e0","x":[37643]},{"a":37661,"l":"room47_loop_start","c":"Start of the play loop of rooms $100C = 4 and 7: $96A4 ($1E08 = $FA, $99 = 0), then the loop at $9320.","t":"code","b":[32,164,150],"m":"jsr","oa":38564,"o":"room47_loop_init","x":[37116]},{"a":37664,"l":"room47_loop","c":"The play loop of rooms $100C = 4 and 7, re-entered through $A83B. A copy of the loops at $86B0 and $76B0 (58 of the first 360 bytes differ, nearly all of them call targets). $D8 = $40 leaves to $4475; JSR $5D45 and $94A0; then the stick on $DC00: $77 (right) walks right ($5340), $7B (left) walks left ($5370), $7D (down) holds the crouch frame ($9488); then $B655 (reads $DC00, or 0 while the screen is blanked): $6F (fire alone) jumps ($935E). Fire+right $67 and fire+left $6B go to $9450. Up alone ($7E) is not tested here.","t":"code","b":[165,216],"m":"lda","oa":216,"o":"game_state_d8","x":[43070]},{"a":37666,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":37668,"t":"code","b":[208,3],"m":"bne","oa":37673,"o":"b_9329"},{"a":37670,"t":"code","b":[76,117,68],"m":"jmp","oa":17525,"o":"game_over"},{"a":37673,"l":"b_9329","t":"code","b":[32,69,93],"m":"jsr","oa":23877,"o":"respawn_left_if_off","x":[37668]},{"a":37676,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37679,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":37682,"t":"code","b":[201,119],"m":"cmp","o":"#$77"},{"a":37684,"t":"code","b":[208,6],"m":"bne","oa":37692,"o":"b_933C"},{"a":37686,"t":"code","b":[32,64,83],"m":"jsr","oa":21312,"o":"walk_right"},{"a":37689,"t":"code","b":[76,54,148],"m":"jmp","oa":37942,"o":"j_9436"},{"a":37692,"l":"b_933C","t":"code","b":[201,123],"m":"cmp","o":"#$7B","x":[37684]},{"a":37694,"t":"code","b":[208,6],"m":"bne","oa":37702,"o":"b_9346"},{"a":37696,"t":"code","b":[32,112,83],"m":"jsr","oa":21360,"o":"walk_left"},{"a":37699,"t":"code","b":[76,54,148],"m":"jmp","oa":37942,"o":"j_9436"},{"a":37702,"l":"b_9346","t":"code","b":[201,125],"m":"cmp","o":"#$7D","x":[37694]},{"a":37704,"t":"code","b":[208,9],"m":"bne","oa":37715,"o":"b_9353"},{"a":37706,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37709,"t":"code","b":[32,136,148],"m":"jsr","oa":38024,"o":"hat_crouch_while_down"},{"a":37712,"t":"code","b":[76,28,148],"m":"jmp","oa":37916,"o":"room47_fire_diagonal"},{"a":37715,"l":"b_9353","t":"code","b":[234],"m":"nop","x":[37704]},{"a":37716,"t":"code","b":[234],"m":"nop"},{"a":37717,"t":"code","b":[234],"m":"nop"},{"a":37718,"t":"code","b":[234],"m":"nop"},{"a":37719,"t":"code","b":[32,85,182],"m":"jsr","oa":46677,"o":"read_stick_if_screen_on"},{"a":37722,"t":"code","b":[201,111],"m":"cmp","o":"#$6F"},{"a":37724,"t":"code","b":[208,97],"m":"bne","oa":37823,"o":"b_93BF"},{"a":37726,"l":"room47_jump","c":"The jump: facing right (frame below $2F) it rises with frame $2D (Y-1, X+1) for 21 steps, then flies level with frame $2C for 21, then falls with frame $2E (Y+1, X+1) for 21, pausing at $42E0 between phases; facing left the same with frames $30, $2F, $31 and X-1. Each step calls $94A0 (edge and exit checks) and counts in $99. Mr Hat's position is his sprite registers $D008/$D009.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[37975,37985]},{"a":37729,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":37731,"t":"code","b":[176,93],"m":"bcs","oa":37826,"o":"b_93C2"},{"a":37733,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":37735,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":37738,"t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2"},{"a":37741,"l":"b_936D","t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound","x":[37759]},{"a":37744,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":37747,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":37750,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":37752,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37755,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37757,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":37759,"t":"code","b":[208,236],"m":"bne","oa":37741,"o":"b_936D"},{"a":37761,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37763,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":37765,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":37768,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":37770,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":37773,"l":"b_938D","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[37785]},{"a":37776,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":37778,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37781,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37783,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":37785,"t":"code","b":[208,242],"m":"bne","oa":37773,"o":"b_938D"},{"a":37787,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37789,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":37791,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":37794,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":37796,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":37799,"l":"b_93A7","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[37814]},{"a":37802,"t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x"},{"a":37805,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":37807,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37810,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37812,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":37814,"t":"code","b":[208,239],"m":"bne","oa":37799,"o":"b_93A7"},{"a":37816,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37818,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":37820,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":37823,"l":"b_93BF","t":"code","b":[76,28,148],"m":"jmp","oa":37916,"o":"room47_fire_diagonal","x":[37724]},{"a":37826,"l":"b_93C2","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[37731]},{"a":37828,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":37831,"l":"b_93C7","t":"code","b":[32,242,28],"m":"jsr","oa":7410,"o":"silence_voice2","x":[37852]},{"a":37834,"t":"code","b":[32,176,65],"m":"jsr","oa":16816,"o":"jump_step_sound"},{"a":37837,"t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y"},{"a":37840,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":37843,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":37845,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37848,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37850,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":37852,"t":"code","b":[208,233],"m":"bne","oa":37831,"o":"b_93C7"},{"a":37854,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37856,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":37858,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":37861,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":37863,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":37866,"l":"b_93EA","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[37878]},{"a":37869,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":37871,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37874,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37876,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":37878,"t":"code","b":[208,242],"m":"bne","oa":37866,"o":"b_93EA"},{"a":37880,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37882,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":37884,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":37887,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":37889,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":37892,"l":"b_9404","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[37907]},{"a":37895,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":37898,"t":"code","b":[230,153],"m":"inc","oa":153,"o":"jump_step"},{"a":37900,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37903,"t":"code","b":[165,153],"m":"lda","oa":153,"o":"jump_step"},{"a":37905,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":37907,"t":"code","b":[208,239],"m":"bne","oa":37892,"o":"b_9404"},{"a":37909,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37911,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":37913,"t":"code","b":[32,224,66],"m":"jsr","oa":17120,"o":"delay_80x256"},{"a":37916,"l":"room47_fire_diagonal","c":"Fire with a direction: $B655 = $67 (fire+right) or $6B (fire+left) goes, after $94A0, to $9450; anything else goes on to $9470.","t":"code","b":[32,85,182],"m":"jsr","oa":46677,"o":"read_stick_if_screen_on","x":[37712,37823]},{"a":37919,"t":"code","b":[201,103],"m":"cmp","o":"#$67"},{"a":37921,"t":"code","b":[208,6],"m":"bne","oa":37929,"o":"b_9429"},{"a":37923,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37926,"t":"code","b":[76,80,148],"m":"jmp","oa":37968,"o":"room47_diagonal_jump_check"},{"a":37929,"l":"b_9429","t":"code","b":[201,107],"m":"cmp","o":"#$6B","x":[37921]},{"a":37931,"t":"code","b":[208,9],"m":"bne","oa":37942,"o":"j_9436"},{"a":37933,"t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37936,"t":"code","b":[76,80,148],"m":"jmp","oa":37968,"o":"room47_diagonal_jump_check"},{"a":37939,"l":"dead_jsr_9433","c":"JSR $94A0 that nothing reaches: $9430 jumps over it and no branch lands here.","t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks"},{"a":37942,"l":"j_9436","t":"code","b":[76,112,148],"m":"jmp","oa":38000,"o":"room47_loop_end","x":[37689,37699,37931]},{"a":37945,"t":"gap","n":23},{"a":37968,"l":"room47_diagonal_jump_check","c":"Fire with a direction: jumps ($935E) while $D010 is below $29 or Mr Hat's X is below $4E; otherwise writes $7B to $DC00 (CIA 1 port A, the keyboard column register) and goes on to $9470.","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[37926,37936]},{"a":37971,"t":"code","b":[201,41],"m":"cmp","o":"#$29"},{"a":37973,"t":"code","b":[176,3],"m":"bcs","oa":37978,"o":"b_945A"},{"a":37975,"t":"code","b":[76,94,147],"m":"jmp","oa":37726,"o":"room47_jump"},{"a":37978,"l":"b_945A","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[37973]},{"a":37981,"t":"code","b":[201,78],"m":"cmp","o":"#$4E"},{"a":37983,"t":"code","b":[176,3],"m":"bcs","oa":37988,"o":"b_9464"},{"a":37985,"t":"code","b":[76,94,147],"m":"jmp","oa":37726,"o":"room47_jump"},{"a":37988,"l":"b_9464","t":"code","b":[169,123],"m":"lda","o":"#$7B","x":[37983]},{"a":37990,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":37993,"t":"code","b":[76,112,148],"m":"jmp","oa":38000,"o":"room47_loop_end"},{"a":37996,"t":"gap","n":4},{"a":38000,"l":"room47_loop_end","c":"End of one pass of the room loop: sets Mr Hat's standing frame by his facing ($2F if the frame was $2F or more, else $2C) and jumps to $A83B, which unblanks the screen if needed and re-enters the loop at $9320.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[37942,37993]},{"a":38003,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":38005,"t":"code","b":[144,8],"m":"bcc","oa":38015,"o":"b_947F"},{"a":38007,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":38009,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":38012,"t":"code","b":[76,59,168],"m":"jmp","oa":43067,"o":"reenter_loop_9320"},{"a":38015,"l":"b_947F","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[38005]},{"a":38017,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":38020,"t":"code","b":[76,59,168],"m":"jmp","oa":43067,"o":"reenter_loop_9320"},{"a":38023,"t":"gap","n":1},{"a":38024,"l":"hat_crouch_while_down","c":"While the stick reads $7D (down) keeps Mr Hat in frame $2A, calling $94A0 each pass; afterwards restores the frame he had. Called from $934D.","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[37709]},{"a":38027,"t":"code","b":[72],"m":"pha"},{"a":38028,"l":"b_948C","t":"code","b":[32,160,148],"m":"jsr","oa":38048,"o":"room47_step_checks","x":[38041]},{"a":38031,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":38033,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":38036,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":38039,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":38041,"t":"code","b":[240,241],"m":"beq","oa":38028,"o":"b_948C"},{"a":38043,"t":"code","b":[104],"m":"pla"},{"a":38044,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":38047,"t":"code","b":[96],"m":"rts"},{"a":38048,"l":"room47_step_checks","c":"One step's checks: $9699 (edges and exits, only while $D015 is $0F or more) then $5590.","t":"code","b":[32,153,150],"m":"jsr","oa":38553,"o":"edges_if_sprites_on","x":[37676,37706,37752,37778,37807,37845,37871,37900,37923,37933,37939,38028]},{"a":38051,"t":"code","b":[32,144,85],"m":"jsr","oa":21904,"o":"hazards_and_pickups"},{"a":38054,"t":"code","b":[96],"m":"rts"},{"a":38055,"l":"room47_edges_exits","c":"Mr Hat at the room's sides. X = $00 or $FF: $4610 moves him across the X high bit. While $D010 < $2F (tested as a whole register): the $0400 = $E0 test calls $9689 at X $D0-$DF; X below $10 leaves by the left: door code $10/$28 becomes $14 and jumps to $4642, $40/$48 becomes $44 and jumps to $5E10. $D010 >= $2F and X >= $56 leaves by the right: $10/$28 becomes $24 and jumps to $573D, $40/$48 becomes $46 and jumps to $65E0. The second $0400 test (INC $D020 at $94E9) can never match, and the second set of door tests ($9517-$9537, $9562-$9582) never matches: the same codes have already left, so its JMP $4D80s never run.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[38560]},{"a":38058,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":38060,"t":"code","b":[208,4],"m":"bne","oa":38066,"o":"b_94B2"},{"a":38062,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":38065,"t":"code","b":[96],"m":"rts"},{"a":38066,"l":"b_94B2","t":"code","b":[201,255],"m":"cmp","o":"#$FF","x":[38060]},{"a":38068,"t":"code","b":[208,4],"m":"bne","oa":38074,"o":"b_94BA"},{"a":38070,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":38073,"t":"code","b":[96],"m":"rts"},{"a":38074,"l":"b_94BA","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[38068]},{"a":38077,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":38079,"t":"code","b":[176,119],"m":"bcs","oa":38200,"o":"b_9538"},{"a":38081,"t":"code","b":[173,0,4],"m":"lda","oa":1024,"o":"room_marker_cell"},{"a":38084,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":38086,"t":"code","b":[208,15],"m":"bne","oa":38103,"o":"b_94D7"},{"a":38088,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":38091,"t":"code","b":[201,208],"m":"cmp","o":"#$D0"},{"a":38093,"t":"code","b":[144,8],"m":"bcc","oa":38103,"o":"b_94D7"},{"a":38095,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":38097,"t":"code","b":[176,4],"m":"bcs","oa":38103,"o":"b_94D7"},{"a":38099,"t":"code","b":[32,137,150],"m":"jsr","oa":38537,"o":"set_d022_70"},{"a":38102,"t":"code","b":[96],"m":"rts"},{"a":38103,"l":"b_94D7","t":"code","b":[173,0,4],"m":"lda","oa":1024,"o":"room_marker_cell","x":[38086,38093,38097]},{"a":38106,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":38108,"t":"code","b":[208,15],"m":"bne","oa":38125,"o":"b_94ED"},{"a":38110,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":38113,"t":"code","b":[201,208],"m":"cmp","o":"#$D0"},{"a":38115,"t":"code","b":[144,8],"m":"bcc","oa":38125,"o":"b_94ED"},{"a":38117,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":38119,"t":"code","b":[176,4],"m":"bcs","oa":38125,"o":"b_94ED"},{"a":38121,"t":"code","b":[238,32,208],"m":"inc","o":"vic_border"},{"a":38124,"l":"r_94EC","t":"code","b":[96],"m":"rts","x":[38130]},{"a":38125,"l":"b_94ED","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[38108,38115,38119]},{"a":38128,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":38130,"t":"code","b":[176,248],"m":"bcs","oa":38124,"o":"r_94EC"},{"a":38132,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":38135,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":38137,"t":"code","b":[208,8],"m":"bne","oa":38147,"o":"b_9503"},{"a":38139,"l":"b_94FB","t":"code","b":[169,20],"m":"lda","o":"#$14","x":[38149]},{"a":38141,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":38144,"t":"code","b":[76,66,70],"m":"jmp","oa":17986,"o":"room3_setup"},{"a":38147,"l":"b_9503","t":"code","b":[201,40],"m":"cmp","o":"#$28","x":[38137]},{"a":38149,"t":"code","b":[240,244],"m":"beq","oa":38139,"o":"b_94FB"},{"a":38151,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":38153,"t":"code","b":[208,8],"m":"bne","oa":38163,"o":"b_9513"},{"a":38155,"l":"b_950B","t":"code","b":[169,68],"m":"lda","o":"#$44","x":[38165]},{"a":38157,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":38160,"t":"code","b":[76,16,94],"m":"jmp","oa":24080,"o":"room6_setup"},{"a":38163,"l":"b_9513","t":"code","b":[201,72],"m":"cmp","o":"#$48","x":[38153]},{"a":38165,"t":"code","b":[240,244],"m":"beq","oa":38155,"o":"b_950B"},{"a":38167,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":38169,"t":"code","b":[208,8],"m":"bne","oa":38179,"o":"b_9523"},{"a":38171,"l":"b_951B","t":"code","b":[169,20],"m":"lda","o":"#$14","x":[38181]},{"a":38173,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":38176,"t":"code","b":[76,128,77],"m":"jmp","oa":19840,"o":"room2_setup"},{"a":38179,"l":"b_9523","t":"code","b":[201,40],"m":"cmp","o":"#$28","x":[38169]},{"a":38181,"t":"code","b":[240,244],"m":"beq","oa":38171,"o":"b_951B"},{"a":38183,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":38185,"t":"code","b":[208,8],"m":"bne","oa":38195,"o":"b_9533"},{"a":38187,"l":"b_952B","t":"code","b":[169,68],"m":"lda","o":"#$44","x":[38197]},{"a":38189,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":38192,"t":"code","b":[76,128,77],"m":"jmp","oa":19840,"o":"room2_setup"},{"a":38195,"l":"b_9533","t":"code","b":[201,72],"m":"cmp","o":"#$48","x":[38185]},{"a":38197,"t":"code","b":[240,244],"m":"beq","oa":38187,"o":"b_952B"},{"a":38199,"l":"r_9537","t":"code","b":[96],"m":"rts","x":[38205]},{"a":38200,"l":"b_9538","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[38079]},{"a":38203,"t":"code","b":[201,86],"m":"cmp","o":"#$56"},{"a":38205,"t":"code","b":[144,248],"m":"bcc","oa":38199,"o":"r_9537"},{"a":38207,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":38210,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":38212,"t":"code","b":[208,8],"m":"bne","oa":38222,"o":"b_954E"},{"a":38214,"l":"b_9546","t":"code","b":[169,36],"m":"lda","o":"#$24","x":[38224]},{"a":38216,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":38219,"t":"code","b":[76,61,87],"m":"jmp","oa":22333,"o":"room5_setup"},{"a":38222,"l":"b_954E","t":"code","b":[201,40],"m":"cmp","o":"#$28","x":[38212]},{"a":38224,"t":"code","b":[240,244],"m":"beq","oa":38214,"o":"b_9546"},{"a":38226,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":38228,"t":"code","b":[208,8],"m":"bne","oa":38238,"o":"b_955E"},{"a":38230,"l":"b_9556","t":"code","b":[169,70],"m":"lda","o":"#$46","x":[38240]},{"a":38232,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":38235,"t":"code","b":[76,224,101],"m":"jmp","oa":26080,"o":"room8_draw"},{"a":38238,"l":"b_955E","t":"code","b":[201,72],"m":"cmp","o":"#$48","x":[38228]},{"a":38240,"t":"code","b":[240,244],"m":"beq","oa":38230,"o":"b_9556"},{"a":38242,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":38244,"t":"code","b":[208,12],"m":"bne","oa":38258,"o":"b_9572"},{"a":38246,"l":"b_9566","t":"code","b":[169,20],"m":"lda","o":"#$14","x":[38256]},{"a":38248,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":38251,"t":"code","b":[76,128,77],"m":"jmp","oa":19840,"o":"room2_setup"},{"a":38254,"l":"dead_cmp_956e","c":"CMP #$28 / BEQ that nothing reaches (after a JMP); part of the unreachable second set of door tests in $94A7.","t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":38256,"t":"code","b":[240,244],"m":"beq","oa":38246,"o":"b_9566"},{"a":38258,"l":"b_9572","t":"code","b":[201,64],"m":"cmp","o":"#$40","x":[38244]},{"a":38260,"t":"code","b":[208,12],"m":"bne","oa":38274,"o":"r_9582"},{"a":38262,"l":"b_9576","t":"code","b":[169,68],"m":"lda","o":"#$44","x":[38272]},{"a":38264,"t":"code","b":[141,205,74],"m":"sta","oa":19149,"o":"room_exit_code"},{"a":38267,"t":"code","b":[76,128,77],"m":"jmp","oa":19840,"o":"room2_setup"},{"a":38270,"l":"dead_cmp_957e","c":"CMP #$48 / BEQ that nothing reaches (after a JMP); part of the unreachable second set of door tests in $94A7.","t":"code","b":[201,72],"m":"cmp","o":"#$48"},{"a":38272,"t":"code","b":[240,244],"m":"beq","oa":38262,"o":"b_9576"},{"a":38274,"l":"r_9582","t":"code","b":[96],"m":"rts","x":[38260]},{"a":38275,"l":"clear_step_count_99","c":"$99 = 0 (the jump's step counter; the walk counts in $FB). Called from $96A9.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[38569]},{"a":38277,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":38279,"t":"code","b":[96],"m":"rts"},{"a":38280,"l":"hat_y_floor_b4","c":"Mr Hat's Y ($D009) = $B4. Called from $90ED when a room of this block starts.","t":"code","b":[169,180],"m":"lda","o":"#$B4","x":[37101]},{"a":38282,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":38285,"t":"code","b":[96],"m":"rts"},{"a":38286,"t":"gap","n":2},{"a":38288,"l":"clear_fb_12_99","c":"Clears $FB, $12 and $99. Called from $5FBD (outside this block).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[24509]},{"a":38290,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":38292,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"flag_obj_0012"},{"a":38294,"t":"code","b":[133,153],"m":"sta","oa":153,"o":"jump_step"},{"a":38296,"t":"code","b":[96],"m":"rts"},{"a":38297,"t":"gap","n":7},{"a":38304,"l":"room7_setup","c":"Builds the room with $100C = 7 (reached from $8FF9): $FD = $98 and $56B0, $9023, copies $1670-$167F to $3D80 and $3EC0, draws the chest of drawers at (4,15) colour $1C ($ABB6), paintings at (21,14) and (27,14) colour $7C ($A9D6), the plant at (11,15) colour $3C ($AB74) and its pot at (11,18) colour $6C ($AB93), sets $100C = 7, enables sprite 3; then ($964C) door code $40 puts Mr Hat at the left (X $019, frame $2C), anything else at the right (X $145, frame $2F), and continues at $90C5.","t":"code","b":[169,152],"m":"lda","o":"#$98","x":[36857]},{"a":38306,"t":"code","b":[133,253],"m":"sta","oa":253,"o":"walk_frame_right_or_fill_rows"},{"a":38308,"t":"code","b":[32,176,86],"m":"jsr","oa":22192,"o":"room_blank_and_fill"},{"a":38311,"t":"code","b":[32,35,144],"m":"jsr","oa":36899,"o":"room47_colour_rows"},{"a":38314,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":38316,"l":"b_95AC","t":"code","b":[189,112,22],"m":"lda","oa":5744,"o":"digit_seven_top,x","x":[38331]},{"a":38319,"t":"code","b":[157,128,61],"m":"sta","oa":15744,"o":"status_room_digit_top,x"},{"a":38322,"t":"code","b":[189,120,22],"m":"lda","oa":5752,"o":"digit_seven_bottom,x"},{"a":38325,"t":"code","b":[157,192,62],"m":"sta","oa":16064,"o":"status_room_digit_bottom,x"},{"a":38328,"t":"code","b":[232],"m":"inx"},{"a":38329,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":38331,"t":"code","b":[208,239],"m":"bne","oa":38316,"o":"b_95AC"},{"a":38333,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":38335,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":38337,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":38339,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":38341,"t":"code","b":[32,182,171],"m":"jsr","oa":43958,"o":"draw_drawers_27"},{"a":38344,"t":"code","b":[162,21],"m":"ldx","o":"#$15"},{"a":38346,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":38348,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":38350,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":38352,"t":"code","b":[32,214,169],"m":"jsr","oa":43478,"o":"draw_painting_27"},{"a":38355,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":38357,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":38359,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":38361,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":38363,"t":"code","b":[32,214,169],"m":"jsr","oa":43478,"o":"draw_painting_27"},{"a":38366,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":38368,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":38370,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":38372,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":38374,"t":"code","b":[32,116,171],"m":"jsr","oa":43892,"o":"draw_plant_27"},{"a":38377,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":38379,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":38381,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":38383,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":38385,"t":"code","b":[32,147,171],"m":"jsr","oa":43923,"o":"draw_pot_27"},{"a":38388,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":38390,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":38393,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":38396,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":38398,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":38401,"t":"code","b":[234],"m":"nop"},{"a":38402,"t":"code","b":[234],"m":"nop"},{"a":38403,"t":"code","b":[234],"m":"nop"},{"a":38404,"t":"code","b":[234],"m":"nop"},{"a":38405,"t":"code","b":[234],"m":"nop"},{"a":38406,"t":"code","b":[234],"m":"nop"},{"a":38407,"t":"code","b":[234],"m":"nop"},{"a":38408,"t":"code","b":[234],"m":"nop"},{"a":38409,"t":"code","b":[234],"m":"nop"},{"a":38410,"t":"code","b":[234],"m":"nop"},{"a":38411,"t":"code","b":[234],"m":"nop"},{"a":38412,"t":"code","b":[234],"m":"nop"},{"a":38413,"t":"code","b":[234],"m":"nop"},{"a":38414,"t":"code","b":[234],"m":"nop"},{"a":38415,"t":"code","b":[234],"m":"nop"},{"a":38416,"t":"code","b":[234],"m":"nop"},{"a":38417,"t":"code","b":[234],"m":"nop"},{"a":38418,"t":"code","b":[234],"m":"nop"},{"a":38419,"t":"code","b":[234],"m":"nop"},{"a":38420,"t":"code","b":[234],"m":"nop"},{"a":38421,"t":"code","b":[234],"m":"nop"},{"a":38422,"t":"code","b":[234],"m":"nop"},{"a":38423,"t":"code","b":[234],"m":"nop"},{"a":38424,"t":"code","b":[234],"m":"nop"},{"a":38425,"t":"code","b":[234],"m":"nop"},{"a":38426,"t":"code","b":[234],"m":"nop"},{"a":38427,"t":"code","b":[234],"m":"nop"},{"a":38428,"t":"code","b":[234],"m":"nop"},{"a":38429,"t":"code","b":[234],"m":"nop"},{"a":38430,"t":"code","b":[234],"m":"nop"},{"a":38431,"t":"code","b":[234],"m":"nop"},{"a":38432,"t":"code","b":[234],"m":"nop"},{"a":38433,"t":"code","b":[234],"m":"nop"},{"a":38434,"t":"code","b":[234],"m":"nop"},{"a":38435,"t":"code","b":[234],"m":"nop"},{"a":38436,"t":"code","b":[234],"m":"nop"},{"a":38437,"t":"code","b":[234],"m":"nop"},{"a":38438,"t":"code","b":[234],"m":"nop"},{"a":38439,"t":"code","b":[234],"m":"nop"},{"a":38440,"t":"code","b":[234],"m":"nop"},{"a":38441,"t":"code","b":[234],"m":"nop"},{"a":38442,"t":"code","b":[234],"m":"nop"},{"a":38443,"t":"code","b":[234],"m":"nop"},{"a":38444,"t":"code","b":[234],"m":"nop"},{"a":38445,"t":"code","b":[234],"m":"nop"},{"a":38446,"t":"code","b":[234],"m":"nop"},{"a":38447,"t":"code","b":[234],"m":"nop"},{"a":38448,"t":"code","b":[234],"m":"nop"},{"a":38449,"t":"code","b":[234],"m":"nop"},{"a":38450,"t":"code","b":[234],"m":"nop"},{"a":38451,"t":"code","b":[234],"m":"nop"},{"a":38452,"t":"code","b":[234],"m":"nop"},{"a":38453,"t":"code","b":[234],"m":"nop"},{"a":38454,"t":"code","b":[234],"m":"nop"},{"a":38455,"t":"code","b":[234],"m":"nop"},{"a":38456,"t":"code","b":[234],"m":"nop"},{"a":38457,"t":"code","b":[234],"m":"nop"},{"a":38458,"t":"code","b":[234],"m":"nop"},{"a":38459,"t":"code","b":[234],"m":"nop"},{"a":38460,"t":"code","b":[234],"m":"nop"},{"a":38461,"t":"code","b":[234],"m":"nop"},{"a":38462,"t":"code","b":[234],"m":"nop"},{"a":38463,"t":"code","b":[234],"m":"nop"},{"a":38464,"t":"code","b":[234],"m":"nop"},{"a":38465,"t":"code","b":[234],"m":"nop"},{"a":38466,"t":"code","b":[234],"m":"nop"},{"a":38467,"t":"code","b":[234],"m":"nop"},{"a":38468,"t":"code","b":[234],"m":"nop"},{"a":38469,"t":"code","b":[234],"m":"nop"},{"a":38470,"t":"code","b":[234],"m":"nop"},{"a":38471,"t":"code","b":[234],"m":"nop"},{"a":38472,"t":"code","b":[234],"m":"nop"},{"a":38473,"t":"code","b":[234],"m":"nop"},{"a":38474,"t":"code","b":[234],"m":"nop"},{"a":38475,"t":"code","b":[234],"m":"nop"},{"a":38476,"t":"code","b":[173,205,74],"m":"lda","oa":19149,"o":"room_exit_code"},{"a":38479,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":38481,"t":"code","b":[208,21],"m":"bne","oa":38504,"o":"b_9668"},{"a":38483,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":38486,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":38488,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":38491,"t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":38493,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":38496,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":38498,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":38501,"t":"code","b":[76,197,144],"m":"jmp","oa":37061,"o":"room47_start_play"},{"a":38504,"l":"b_9668","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[38481]},{"a":38507,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":38509,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":38512,"t":"code","b":[169,69],"m":"lda","o":"#$45"},{"a":38514,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":38517,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":38519,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":38522,"t":"code","b":[76,197,144],"m":"jmp","oa":37061,"o":"room47_start_play"},{"a":38525,"l":"hat_reset_colour","c":"Clears $BD and $FB and sets Mr Hat's colour ($D02B) to $0B. Called from $90C8.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[37064]},{"a":38527,"t":"code","b":[133,189],"m":"sta","oa":189,"o":"flag_obj_00bd"},{"a":38529,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":38531,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":38533,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":38536,"t":"code","b":[96],"m":"rts"},{"a":38537,"l":"set_d022_70","c":"While Mr Hat's Y is below $B4: INC $D022 and then $D022 = $70 (the INC is overwritten at once). Called from $94D3 (and $79B5).","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[31157,38099]},{"a":38540,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":38542,"t":"code","b":[176,8],"m":"bcs","oa":38552,"o":"r_9698"},{"a":38544,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":38547,"t":"code","b":[169,112],"m":"lda","o":"#$70"},{"a":38549,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":38552,"l":"r_9698","t":"code","b":[96],"m":"rts","x":[38542]},{"a":38553,"l":"edges_if_sprites_on","c":"Calls the edge and exit checks $94A7 only while $D015 (sprite enable) is $0F or more.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[38048]},{"a":38556,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":38558,"t":"code","b":[144,3],"m":"bcc","oa":38563,"o":"r_96A3"},{"a":38560,"t":"code","b":[32,167,148],"m":"jsr","oa":38055,"o":"room47_edges_exits"},{"a":38563,"l":"r_96A3","t":"code","b":[96],"m":"rts","x":[38558]},{"a":38564,"l":"room47_loop_init","c":"$1E08 = $FA, then $9583 ($99 = 0). Called at the start of the loop ($931D) and from $8458.","t":"code","b":[169,250],"m":"lda","o":"#$FA","x":[33880,37661]},{"a":38566,"t":"code","b":[141,8,30],"m":"sta","oa":7688,"o":"var_1e08"},{"a":38569,"t":"code","b":[32,131,149],"m":"jsr","oa":38275,"o":"clear_step_count_99"},{"a":38572,"t":"code","b":[96],"m":"rts"},{"a":38573,"t":"gap","n":3},{"a":38576,"l":"anim_5069_if_room_e0","c":"IRQ tail after $9300: only when the colour cell $0400 holds $E0 (neither room of this block fills it with $E0: they use $BA and $98), copies 24 bytes from $5069 (+ a low byte at $96C4 advanced by $28 a pass: the ADC #$27 at $96D4 has no CLC, and the loop leaves on CPX #$18 with the carry set) to the bitmap at $3248 and $3388. $64F2 is reset after every copy, so it paces nothing. Then JMP $8215.","t":"code","b":[173,0,4],"m":"lda","oa":1024,"o":"room_marker_cell","x":[37658]},{"a":38579,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":38581,"t":"code","b":[208,39],"m":"bne","oa":38622,"o":"b_96DE"},{"a":38583,"t":"code","b":[238,242,100],"m":"inc","oa":25842,"o":"counter_64f2"},{"a":38586,"t":"code","b":[173,242,100],"m":"lda","oa":25842,"o":"counter_64f2"},{"a":38589,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":38591,"t":"code","b":[176,29],"m":"bcs","oa":38622,"o":"b_96DE"},{"a":38593,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":38595,"l":"b_96C3","t":"code","b":[189,105,80],"m":"lda","oa":20585,"o":"clear_sprite0_position_unused,x","x":[38607]},{"a":38596,"t":"note","l":"anim_5069_src_lo","c":"Low byte of the source operand of LDA $5069,X at $96C3, advanced by $27 each pass of $96B0 (self-modified).","note":"inside the item at $96C3","x":[38609,38614]},{"a":38598,"t":"code","b":[157,72,50],"m":"sta","oa":12872,"o":"f_3248,x"},{"a":38601,"t":"code","b":[157,136,51],"m":"sta","oa":13192,"o":"f_3388,x"},{"a":38604,"t":"code","b":[232],"m":"inx"},{"a":38605,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":38607,"t":"code","b":[208,242],"m":"bne","oa":38595,"o":"b_96C3"},{"a":38609,"t":"code","b":[173,196,150],"m":"lda","oa":38596,"o":"anim_5069_src_lo"},{"a":38612,"t":"code","b":[105,39],"m":"adc","o":"#$27"},{"a":38614,"t":"code","b":[141,196,150],"m":"sta","oa":38596,"o":"anim_5069_src_lo"},{"a":38617,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":38619,"t":"code","b":[141,242,100],"m":"sta","oa":25842,"o":"counter_64f2"},{"a":38622,"l":"b_96DE","t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms","x":[38581,38591]},{"a":38625,"t":"gap","n":15},{"a":38640,"l":"mon_setmsg_bank36","c":"Supermon's call of SETMSG ($FF90, A = $80: KERNAL messages on), followed by $01 = $36, replacing the monitor's own JSR SETMSG at $97FB. Called only from the monitor's entry at $97ED.","t":"code","b":[32,144,255],"m":"jsr","oa":65424,"o":"KERNAL_SETMSG","x":[38907]},{"a":38643,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":38645,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"cpu_port_banks"},{"a":38647,"t":"code","b":[96],"m":"rts"},{"a":38648,"t":"gap","n":8},{"a":38656,"l":"fill_9700","c":"$9700-$97EC, just below the monitor: 32 irregular bytes ($9700-$971F: 99 CD F7 7F ...), then a repeating pattern, 00 00 32 32 to $977F and 08 08 3A 3A from $9780. Nothing reads or writes it; not known what wrote it.","t":"byte","b":[153,205,247,127,141,137,255,63]},{"a":38664,"t":"byte","b":[77,0,127,254,221,137,114,50]},{"a":38672,"t":"byte","b":[64,201,50,50,137,0,114,50]},{"a":38680,"t":"byte","b":[0,0,50,55,0,0,50,126]},{"a":38688,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38696,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38704,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38712,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38720,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38728,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38736,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38744,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38752,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38760,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38768,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38776,"t":"byte","b":[0,0,50,50,0,0,50,50]},{"a":38784,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38792,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38800,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38808,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38816,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38824,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38832,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38840,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38848,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38856,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38864,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38872,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38880,"t":"byte","b":[8,8,58,58,8,8,58,58]},{"a":38888,"t":"byte","b":[8,8,58,58,8]},{"a":38893,"l":"mon_cold_start","c":"Supermon (Jim Butterfield's machine-code monitor for the C64), $97ED-$9FFF, 2,067 bytes ending exactly at $9FFF, as its relocator leaves it below $A000. Cold start: points the BRK vector $0316/$0317 at $97FF (from $9FE6), JSR $96F0 (SETMSG $80 and $01 = $36) and executes BRK to enter itself. Nothing in the game calls it: no JSR, JMP, pointer or vector to $96F0-$9FFF exists outside the monitor, and $0316 holds the KERNAL's $FE66 in the image.","t":"code","b":[173,230,159],"m":"lda","oa":40934,"o":"mon_brk_vector","x":[40936]},{"a":38896,"t":"code","b":[141,22,3],"m":"sta","oa":790,"o":"brk_vector_lo"},{"a":38899,"t":"code","b":[173,231,159],"m":"lda","oa":40935,"o":"mon_brk_vector_hi"},{"a":38902,"t":"code","b":[141,23,3],"m":"sta","oa":791,"o":"brk_vector_hi"},{"a":38905,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":38907,"t":"code","b":[32,240,150],"m":"jsr","oa":38640,"o":"mon_setmsg_bank36"},{"a":38910,"t":"code","b":[0],"m":"brk"},{"a":38911,"l":"mon_brk_entry","c":"BRK handler: pulls Y, X, A, SR and the PC off the stack into $023E, $023D, $023C, $023B and $0239/$023A (PC less 2), saves SP in $023F, prints CR, 'B*' and falls into the R command.","t":"code","b":[216],"m":"cld","x":[40934]},{"a":38912,"t":"code","b":[104],"m":"pla"},{"a":38913,"t":"code","b":[141,62,2],"m":"sta","oa":574,"o":"mon_reg_y"},{"a":38916,"t":"code","b":[104],"m":"pla"},{"a":38917,"t":"code","b":[141,61,2],"m":"sta","oa":573,"o":"mon_reg_x"},{"a":38920,"t":"code","b":[104],"m":"pla"},{"a":38921,"t":"code","b":[141,60,2],"m":"sta","oa":572,"o":"mon_reg_a"},{"a":38924,"t":"code","b":[104],"m":"pla"},{"a":38925,"t":"code","b":[141,59,2],"m":"sta","oa":571,"o":"mon_reg_sr"},{"a":38928,"t":"code","b":[104],"m":"pla"},{"a":38929,"t":"code","b":[170],"m":"tax"},{"a":38930,"t":"code","b":[104],"m":"pla"},{"a":38931,"t":"code","b":[168],"m":"tay"},{"a":38932,"t":"code","b":[56],"m":"sec"},{"a":38933,"t":"code","b":[138],"m":"txa"},{"a":38934,"t":"code","b":[233,2],"m":"sbc","o":"#$02"},{"a":38936,"t":"code","b":[141,58,2],"m":"sta","oa":570,"o":"mon_reg_pc_lo"},{"a":38939,"t":"code","b":[152],"m":"tya"},{"a":38940,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":38942,"t":"code","b":[141,57,2],"m":"sta","oa":569,"o":"mon_reg_pc_hi"},{"a":38945,"t":"code","b":[186],"m":"tsx"},{"a":38946,"t":"code","b":[142,63,2],"m":"stx","oa":575,"o":"mon_reg_sp"},{"a":38949,"t":"code","b":[32,87,157],"m":"jsr","oa":40279,"o":"mon_print_cr"},{"a":38952,"t":"code","b":[162,66],"m":"ldx","o":"#$42"},{"a":38954,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":38956,"t":"code","b":[32,87,154],"m":"jsr","oa":39511,"o":"mon_print_xa"},{"a":38959,"t":"code","b":[169,82],"m":"lda","o":"#$52"},{"a":38961,"t":"code","b":[208,52],"m":"bne","oa":39015,"o":"b_9867"},{"a":38963,"l":"mon_inc_addr","c":"Increments the address pointer $C1/$C2; wrapping past $FFFF sets $26 (the end-of-memory flag).","t":"code","b":[230,193],"m":"inc","oa":193,"o":"mon_ptr_lo","x":[39065,39089,39782,39862,39978]},{"a":38965,"t":"code","b":[208,6],"m":"bne","oa":38973,"o":"r_983D"},{"a":38967,"t":"code","b":[230,194],"m":"inc","oa":194,"o":"mon_ptr_hi"},{"a":38969,"t":"code","b":[208,2],"m":"bne","oa":38973,"o":"r_983D"},{"a":38971,"t":"code","b":[230,38],"m":"inc","oa":38,"o":"mon_zp_26"},{"a":38973,"l":"r_983D","t":"code","b":[96],"m":"rts","x":[38965,38969,38979]},{"a":38974,"l":"mon_getc","c":"Reads a character with CHRIN ($FFCF); on RETURN drops the caller's return address and ends the command at the prompt ($9847).","t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN","x":[39004,39160,39171,39244,39564,39571,39589,39628,39653,39839,39885,39890,39897,40338]},{"a":38977,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":38979,"t":"code","b":[208,248],"m":"bne","oa":38973,"o":"r_983D"},{"a":38981,"t":"code","b":[104],"m":"pla"},{"a":38982,"t":"code","b":[104],"m":"pla"},{"a":38983,"l":"mon_prompt","c":"The main loop: prints $90, clears $26, prints CR and '.', $05 (white), reads the command letter skipping dots and spaces, and looks it up among the 15 letters at $9FB7; the handler's address less one is pushed from $9FC6 and reached by RTS. An unknown letter goes to the error ($9AED).","t":"code","b":[169,144],"m":"lda","o":"#$90","x":[39252,39434,39486,39675,39870,39990,40039,40328]},{"a":38985,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":38988,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":38990,"t":"code","b":[133,38],"m":"sta","oa":38,"o":"mon_zp_26"},{"a":38992,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":38994,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":38996,"t":"code","b":[32,87,154],"m":"jsr","oa":39511,"o":"mon_print_xa"},{"a":38999,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":39001,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39004,"l":"b_985C","t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc","x":[39009,39013]},{"a":39007,"t":"code","b":[201,46],"m":"cmp","o":"#$2E"},{"a":39009,"t":"code","b":[240,249],"m":"beq","oa":39004,"o":"b_985C"},{"a":39011,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":39013,"t":"code","b":[240,245],"m":"beq","oa":39004,"o":"b_985C"},{"a":39015,"l":"b_9867","t":"code","b":[162,14],"m":"ldx","o":"#$0E","x":[38961]},{"a":39017,"l":"b_9869","t":"code","b":[221,183,159],"m":"cmp","oa":40887,"o":"mon_command_letters,x","x":[39035]},{"a":39020,"t":"code","b":[208,12],"m":"bne","oa":39034,"o":"b_987A"},{"a":39022,"t":"code","b":[138],"m":"txa"},{"a":39023,"t":"code","b":[10],"m":"asl","o":"a"},{"a":39024,"t":"code","b":[170],"m":"tax"},{"a":39025,"t":"code","b":[189,199,159],"m":"lda","oa":40903,"o":"mon_command_table_hi,x"},{"a":39028,"t":"code","b":[72],"m":"pha"},{"a":39029,"t":"code","b":[189,198,159],"m":"lda","oa":40902,"o":"mon_command_table,x"},{"a":39032,"t":"code","b":[72],"m":"pha"},{"a":39033,"t":"code","b":[96],"m":"rts"},{"a":39034,"l":"b_987A","t":"code","b":[202],"m":"dex","x":[39020]},{"a":39035,"t":"code","b":[16,236],"m":"bpl","oa":39017,"o":"b_9869"},{"a":39037,"t":"code","b":[76,237,154],"m":"jmp","oa":39661,"o":"mon_error"},{"a":39040,"l":"mon_addr_to_pc","c":"Copies the address in $C1/$C2 into the saved PC ($023A/$0239). Used by ; and G.","t":"code","b":[165,193],"m":"lda","oa":193,"o":"mon_ptr_lo","x":[39227,39271]},{"a":39042,"t":"code","b":[141,58,2],"m":"sta","oa":570,"o":"mon_reg_pc_lo"},{"a":39045,"t":"code","b":[165,194],"m":"lda","oa":194,"o":"mon_ptr_hi"},{"a":39047,"t":"code","b":[141,57,2],"m":"sta","oa":569,"o":"mon_reg_pc_hi"},{"a":39050,"t":"code","b":[96],"m":"rts"},{"a":39051,"l":"mon_hexdump_8","c":"Prints eight bytes from ($C1) in hex, each after a space, advancing $C1/$C2; $988D prints the count already in $1D.","t":"code","b":[169,8],"m":"lda","o":"#$08","x":[39214]},{"a":39053,"l":"mon_hexdump_n","c":"Prints $1D bytes from ($C1) in hex with spaces (entry of $988B with the count set by the caller).","t":"code","b":[133,29],"m":"sta","oa":29,"o":"mon_zp_1d","x":[39155]},{"a":39055,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":39057,"l":"b_9891","t":"code","b":[32,84,157],"m":"jsr","oa":40276,"o":"mon_print_space","x":[39070]},{"a":39060,"t":"code","b":[177,193],"m":"lda","oa":193,"o":"(mon_ptr_lo),y"},{"a":39062,"t":"code","b":[32,72,154],"m":"jsr","oa":39496,"o":"mon_print_hex"},{"a":39065,"t":"code","b":[32,51,152],"m":"jsr","oa":38963,"o":"mon_inc_addr"},{"a":39068,"t":"code","b":[198,29],"m":"dec","oa":29,"o":"mon_zp_1d"},{"a":39070,"t":"code","b":[208,241],"m":"bne","oa":39057,"o":"b_9891"},{"a":39072,"t":"code","b":[96],"m":"rts"},{"a":39073,"l":"mon_poke_byte","c":"Reads a hex byte; if one was typed stores it at ($C1) and reads it back, erroring ($9AED) if RAM did not take it; then advances $C1/$C2 and counts $1D down.","t":"code","b":[32,136,154],"m":"jsr","oa":39560,"o":"mon_read_hex_byte","x":[39247,40341]},{"a":39076,"t":"code","b":[144,11],"m":"bcc","oa":39089,"o":"b_98B1"},{"a":39078,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":39080,"t":"code","b":[129,193],"m":"sta","oa":193,"o":"(mon_ptr_lo,x)"},{"a":39082,"t":"code","b":[193,193],"m":"cmp","oa":193,"o":"(mon_ptr_lo,x)"},{"a":39084,"t":"code","b":[240,3],"m":"beq","oa":39089,"o":"b_98B1"},{"a":39086,"t":"code","b":[76,237,154],"m":"jmp","oa":39661,"o":"mon_error"},{"a":39089,"l":"b_98B1","t":"code","b":[32,51,152],"m":"jsr","oa":38963,"o":"mon_inc_addr","x":[39076,39084]},{"a":39092,"t":"code","b":[198,29],"m":"dec","oa":29,"o":"mon_zp_1d"},{"a":39094,"t":"code","b":[96],"m":"rts"},{"a":39095,"l":"mon_point_regs","c":"Points $C1/$C2 at the saved registers ($023B) and returns A = 5, their count.","t":"code","b":[169,59],"m":"lda","o":"#$3B","x":[39152,39230]},{"a":39097,"t":"code","b":[133,193],"m":"sta","oa":193,"o":"mon_ptr_lo"},{"a":39099,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":39101,"t":"code","b":[133,194],"m":"sta","oa":194,"o":"mon_ptr_hi"},{"a":39103,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":39105,"t":"code","b":[96],"m":"rts"},{"a":39106,"l":"mon_newline_dot","c":"Prints CR, '.' and the character in Y: the start of each line the monitor lists (':' memory, ';' registers, ',' disassembly, 'A' assembly).","t":"code","b":[152],"m":"tya","x":[39137,39208,40044,40612]},{"a":39107,"t":"code","b":[72],"m":"pha"},{"a":39108,"t":"code","b":[32,87,157],"m":"jsr","oa":40279,"o":"mon_print_cr"},{"a":39111,"t":"code","b":[104],"m":"pla"},{"a":39112,"t":"code","b":[162,46],"m":"ldx","o":"#$2E"},{"a":39114,"t":"code","b":[76,87,154],"m":"jmp","oa":39511,"o":"mon_print_xa"},{"a":39117,"l":"mon_cmd_r","c":"Command R: prints the header 'PC SR AC XR YR SP' ($9FEA), then '.;' with the saved PC and the five saved registers.","t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":39119,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39122,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":39124,"l":"b_98D4","t":"code","b":[189,234,159],"m":"lda","oa":40938,"o":"mon_register_header,x","x":[39133]},{"a":39127,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39130,"t":"code","b":[232],"m":"inx"},{"a":39131,"t":"code","b":[224,22],"m":"cpx","o":"#$16"},{"a":39133,"t":"code","b":[208,245],"m":"bne","oa":39124,"o":"b_98D4"},{"a":39135,"t":"code","b":[160,59],"m":"ldy","o":"#$3B"},{"a":39137,"t":"code","b":[32,194,152],"m":"jsr","oa":39106,"o":"mon_newline_dot"},{"a":39140,"t":"code","b":[173,57,2],"m":"lda","oa":569,"o":"mon_reg_pc_hi"},{"a":39143,"t":"code","b":[32,72,154],"m":"jsr","oa":39496,"o":"mon_print_hex"},{"a":39146,"t":"code","b":[173,58,2],"m":"lda","oa":570,"o":"mon_reg_pc_lo"},{"a":39149,"t":"code","b":[32,72,154],"m":"jsr","oa":39496,"o":"mon_print_hex"},{"a":39152,"t":"code","b":[32,183,152],"m":"jsr","oa":39095,"o":"mon_point_regs"},{"a":39155,"t":"code","b":[32,141,152],"m":"jsr","oa":39053,"o":"mon_hexdump_n"},{"a":39158,"t":"code","b":[240,92],"m":"beq","oa":39252,"o":"b_9954"},{"a":39160,"l":"mon_cmd_m","c":"Command M: reads a start and an end address and lists memory as '.:' lines of eight bytes until the end, the top of memory or STOP ($FFE1).","t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39163,"t":"code","b":[32,121,154],"m":"jsr","oa":39545,"o":"mon_read_addr"},{"a":39166,"t":"code","b":[144,51],"m":"bcc","oa":39219,"o":"b_9933"},{"a":39168,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39171,"t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39174,"t":"code","b":[32,121,154],"m":"jsr","oa":39545,"o":"mon_read_addr"},{"a":39177,"t":"code","b":[144,40],"m":"bcc","oa":39219,"o":"b_9933"},{"a":39179,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39182,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":39184,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39187,"l":"b_9913","t":"code","b":[32,225,255],"m":"jsr","oa":65505,"o":"KERNAL_STOP","x":[39217]},{"a":39190,"t":"code","b":[240,60],"m":"beq","oa":39252,"o":"b_9954"},{"a":39192,"t":"code","b":[166,38],"m":"ldx","oa":38,"o":"mon_zp_26"},{"a":39194,"t":"code","b":[208,56],"m":"bne","oa":39252,"o":"b_9954"},{"a":39196,"t":"code","b":[165,195],"m":"lda","oa":195,"o":"mon_ptr2_lo"},{"a":39198,"t":"code","b":[197,193],"m":"cmp","oa":193,"o":"mon_ptr_lo"},{"a":39200,"t":"code","b":[165,196],"m":"lda","oa":196,"o":"mon_ptr2_hi"},{"a":39202,"t":"code","b":[229,194],"m":"sbc","oa":194,"o":"mon_ptr_hi"},{"a":39204,"t":"code","b":[144,46],"m":"bcc","oa":39252,"o":"b_9954"},{"a":39206,"t":"code","b":[160,58],"m":"ldy","o":"#$3A"},{"a":39208,"t":"code","b":[32,194,152],"m":"jsr","oa":39106,"o":"mon_newline_dot"},{"a":39211,"t":"code","b":[32,65,154],"m":"jsr","oa":39489,"o":"mon_print_addr"},{"a":39214,"t":"code","b":[32,139,152],"m":"jsr","oa":39051,"o":"mon_hexdump_8"},{"a":39217,"t":"code","b":[240,224],"m":"beq","oa":39187,"o":"b_9913"},{"a":39219,"l":"b_9933","t":"code","b":[76,237,154],"m":"jmp","oa":39661,"o":"mon_error","x":[39166,39177,39238,39264]},{"a":39222,"l":"mon_cmd_semicolon","c":"Command ; : reads a new PC (optional, into $0239/$023A) and five register values (SR, A, X, Y, SP) into $023B-$023F.","t":"code","b":[32,121,154],"m":"jsr","oa":39545,"o":"mon_read_addr"},{"a":39225,"t":"code","b":[144,3],"m":"bcc","oa":39230,"o":"b_993E"},{"a":39227,"t":"code","b":[32,128,152],"m":"jsr","oa":39040,"o":"mon_addr_to_pc"},{"a":39230,"l":"b_993E","t":"code","b":[32,183,152],"m":"jsr","oa":39095,"o":"mon_point_regs","x":[39225]},{"a":39233,"t":"code","b":[208,7],"m":"bne","oa":39242,"o":"b_994A"},{"a":39235,"l":"mon_cmd_colon","c":"Command : : reads an address and up to eight hex bytes and stores them there ($98A1).","t":"code","b":[32,121,154],"m":"jsr","oa":39545,"o":"mon_read_addr"},{"a":39238,"t":"code","b":[144,235],"m":"bcc","oa":39219,"o":"b_9933"},{"a":39240,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":39242,"l":"b_994A","t":"code","b":[133,29],"m":"sta","oa":29,"o":"mon_zp_1d","x":[39233]},{"a":39244,"l":"b_994C","t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc","x":[39250]},{"a":39247,"t":"code","b":[32,161,152],"m":"jsr","oa":39073,"o":"mon_poke_byte"},{"a":39250,"t":"code","b":[208,248],"m":"bne","oa":39244,"o":"b_994C"},{"a":39252,"l":"b_9954","t":"code","b":[76,71,152],"m":"jmp","oa":38983,"o":"mon_prompt","x":[39158,39190,39194,39204]},{"a":39255,"l":"mon_cmd_g","c":"Command G: optionally takes an address as the new PC, restores SP, pushes PC and SR, loads A, X, Y from the saved registers and RTIs into the program.","t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN"},{"a":39258,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":39260,"t":"code","b":[240,12],"m":"beq","oa":39274,"o":"b_996A"},{"a":39262,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":39264,"t":"code","b":[208,209],"m":"bne","oa":39219,"o":"b_9933"},{"a":39266,"t":"code","b":[32,121,154],"m":"jsr","oa":39545,"o":"mon_read_addr"},{"a":39269,"t":"code","b":[144,3],"m":"bcc","oa":39274,"o":"b_996A"},{"a":39271,"t":"code","b":[32,128,152],"m":"jsr","oa":39040,"o":"mon_addr_to_pc"},{"a":39274,"l":"b_996A","t":"code","b":[169,144],"m":"lda","o":"#$90","x":[39260,39269]},{"a":39276,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39279,"t":"code","b":[174,63,2],"m":"ldx","oa":575,"o":"mon_reg_sp"},{"a":39282,"t":"code","b":[154],"m":"txs"},{"a":39283,"t":"code","b":[120],"m":"sei"},{"a":39284,"t":"code","b":[173,57,2],"m":"lda","oa":569,"o":"mon_reg_pc_hi"},{"a":39287,"t":"code","b":[72],"m":"pha"},{"a":39288,"t":"code","b":[173,58,2],"m":"lda","oa":570,"o":"mon_reg_pc_lo"},{"a":39291,"t":"code","b":[72],"m":"pha"},{"a":39292,"t":"code","b":[173,59,2],"m":"lda","oa":571,"o":"mon_reg_sr"},{"a":39295,"t":"code","b":[72],"m":"pha"},{"a":39296,"t":"code","b":[173,60,2],"m":"lda","oa":572,"o":"mon_reg_a"},{"a":39299,"t":"code","b":[174,61,2],"m":"ldx","oa":573,"o":"mon_reg_x"},{"a":39302,"t":"code","b":[172,62,2],"m":"ldy","oa":574,"o":"mon_reg_y"},{"a":39305,"t":"code","b":[64],"m":"rti"},{"a":39306,"l":"mon_cmd_x","c":"Command X: restores SP and leaves through JMP ($A002), BASIC's warm start. With $01 = $36 (BASIC banked out, as the game runs) $A002 reads RAM, which is zero.","t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":39308,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39311,"t":"code","b":[174,63,2],"m":"ldx","oa":575,"o":"mon_reg_sp"},{"a":39314,"t":"code","b":[154],"m":"txs"},{"a":39315,"t":"code","b":[108,2,160],"m":"jmp","oa":40962,"o":"(p_A002)"},{"a":39318,"l":"mon_parse_file_args","c":"L and S arguments: device 1 by default, name length 0, name buffer $0240; reads \"name\" (up to 16 characters) and an optional ,device; returns with the last character read.","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[39413,39437]},{"a":39320,"t":"code","b":[132,186],"m":"sty","oa":186,"o":"kernal_device"},{"a":39322,"t":"code","b":[132,185],"m":"sty","oa":185,"o":"kernal_sec_addr"},{"a":39324,"t":"code","b":[136],"m":"dey"},{"a":39325,"t":"code","b":[132,183],"m":"sty","oa":183,"o":"room1_zp_b7"},{"a":39327,"t":"code","b":[132,144],"m":"sty","oa":144,"o":"kernal_status"},{"a":39329,"t":"code","b":[132,147],"m":"sty","oa":147,"o":"kernal_verify_flag"},{"a":39331,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":39333,"t":"code","b":[133,187],"m":"sta","oa":187,"o":"flag_obj_00bb"},{"a":39335,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":39337,"t":"code","b":[133,188],"m":"sta","oa":188,"o":"kernal_name_hi"},{"a":39339,"l":"b_99AB","t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN","x":[39344]},{"a":39342,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":39344,"t":"code","b":[240,249],"m":"beq","oa":39339,"o":"b_99AB"},{"a":39346,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":39348,"t":"code","b":[240,56],"m":"beq","oa":39406,"o":"r_99EE"},{"a":39350,"t":"code","b":[201,34],"m":"cmp","o":"#$22"},{"a":39352,"l":"b_99B8","t":"code","b":[208,20],"m":"bne","oa":39374,"o":"b_99CE","x":[39386]},{"a":39354,"l":"b_99BA","t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN","x":[39372]},{"a":39357,"t":"code","b":[201,34],"m":"cmp","o":"#$22"},{"a":39359,"t":"code","b":[240,16],"m":"beq","oa":39377,"o":"b_99D1"},{"a":39361,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":39363,"t":"code","b":[240,41],"m":"beq","oa":39406,"o":"r_99EE"},{"a":39365,"t":"code","b":[145,187],"m":"sta","oa":187,"o":"(flag_obj_00bb),y"},{"a":39367,"t":"code","b":[230,183],"m":"inc","oa":183,"o":"room1_zp_b7"},{"a":39369,"t":"code","b":[200],"m":"iny"},{"a":39370,"t":"code","b":[192,16],"m":"cpy","o":"#$10"},{"a":39372,"l":"b_99CC","t":"code","b":[208,236],"m":"bne","oa":39354,"o":"b_99BA","x":[39393,39397]},{"a":39374,"l":"b_99CE","t":"code","b":[76,237,154],"m":"jmp","oa":39661,"o":"mon_error","x":[39352,39416,39432,39442,39455,39476]},{"a":39377,"l":"b_99D1","t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN","x":[39359]},{"a":39380,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":39382,"t":"code","b":[240,22],"m":"beq","oa":39406,"o":"r_99EE"},{"a":39384,"t":"code","b":[201,44],"m":"cmp","o":"#$2C"},{"a":39386,"t":"code","b":[208,220],"m":"bne","oa":39352,"o":"b_99B8"},{"a":39388,"t":"code","b":[32,136,154],"m":"jsr","oa":39560,"o":"mon_read_hex_byte"},{"a":39391,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":39393,"t":"code","b":[240,233],"m":"beq","oa":39372,"o":"b_99CC"},{"a":39395,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":39397,"t":"code","b":[240,229],"m":"beq","oa":39372,"o":"b_99CC"},{"a":39399,"t":"code","b":[133,186],"m":"sta","oa":186,"o":"kernal_device"},{"a":39401,"t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN"},{"a":39404,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":39406,"l":"r_99EE","t":"code","b":[96],"m":"rts","x":[39348,39363,39382]},{"a":39407,"l":"mon_call_load","c":"JMP ($0330): the KERNAL's LOAD vector, with A = 0 from the caller.","t":"code","b":[108,48,3],"m":"jmp","oa":816,"o":"(load_vector)","x":[39425]},{"a":39410,"l":"mon_call_save","c":"JMP ($0332): the KERNAL's SAVE vector.","t":"code","b":[108,50,3],"m":"jmp","oa":818,"o":"(save_vector)","x":[39483]},{"a":39413,"l":"mon_cmd_l","c":"Command L: reads the name and device ($9996) and loads through $99EF; a status bit 4 in $90 is an error.","t":"code","b":[32,150,153],"m":"jsr","oa":39318,"o":"mon_parse_file_args"},{"a":39416,"t":"code","b":[208,212],"m":"bne","oa":39374,"o":"b_99CE"},{"a":39418,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":39420,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39423,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39425,"t":"code","b":[32,239,153],"m":"jsr","oa":39407,"o":"mon_call_load"},{"a":39428,"t":"code","b":[165,144],"m":"lda","oa":144,"o":"kernal_status"},{"a":39430,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":39432,"t":"code","b":[208,196],"m":"bne","oa":39374,"o":"b_99CE"},{"a":39434,"t":"code","b":[76,71,152],"m":"jmp","oa":38983,"o":"mon_prompt"},{"a":39437,"l":"mon_cmd_s","c":"Command S: reads name, device, start and end address ($AE/$AF gets the end) and saves through $99F2.","t":"code","b":[32,150,153],"m":"jsr","oa":39318,"o":"mon_parse_file_args"},{"a":39440,"t":"code","b":[201,44],"m":"cmp","o":"#$2C"},{"a":39442,"t":"code","b":[208,186],"m":"bne","oa":39374,"o":"b_99CE"},{"a":39444,"t":"code","b":[32,121,154],"m":"jsr","oa":39545,"o":"mon_read_addr"},{"a":39447,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39450,"t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN"},{"a":39453,"t":"code","b":[201,44],"m":"cmp","o":"#$2C"},{"a":39455,"t":"code","b":[208,173],"m":"bne","oa":39374,"o":"b_99CE"},{"a":39457,"t":"code","b":[32,121,154],"m":"jsr","oa":39545,"o":"mon_read_addr"},{"a":39460,"t":"code","b":[165,193],"m":"lda","oa":193,"o":"mon_ptr_lo"},{"a":39462,"t":"code","b":[133,174],"m":"sta","oa":174,"o":"kernal_end_lo"},{"a":39464,"t":"code","b":[165,194],"m":"lda","oa":194,"o":"mon_ptr_hi"},{"a":39466,"t":"code","b":[133,175],"m":"sta","oa":175,"o":"kernal_end_hi"},{"a":39468,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39471,"t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN"},{"a":39474,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":39476,"t":"code","b":[208,152],"m":"bne","oa":39374,"o":"b_99CE"},{"a":39478,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":39480,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39483,"t":"code","b":[32,242,153],"m":"jsr","oa":39410,"o":"mon_call_save"},{"a":39486,"t":"code","b":[76,71,152],"m":"jmp","oa":38983,"o":"mon_prompt"},{"a":39489,"l":"mon_print_addr","c":"Prints the address $C2/$C1 as four hex digits.","t":"code","b":[165,194],"m":"lda","oa":194,"o":"mon_ptr_hi","x":[39211,39972,40050,40618]},{"a":39491,"t":"code","b":[32,72,154],"m":"jsr","oa":39496,"o":"mon_print_hex"},{"a":39494,"t":"code","b":[165,193],"m":"lda","oa":193,"o":"mon_ptr_lo"},{"a":39496,"l":"mon_print_hex","c":"Prints A as two hex digits (through $9A60 and $9A57).","t":"code","b":[72],"m":"pha","x":[39062,39143,39149,39491,40132]},{"a":39497,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":39498,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":39499,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":39500,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":39501,"t":"code","b":[32,96,154],"m":"jsr","oa":39520,"o":"mon_nybble_char"},{"a":39504,"t":"code","b":[170],"m":"tax"},{"a":39505,"t":"code","b":[104],"m":"pla"},{"a":39506,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":39508,"t":"code","b":[32,96,154],"m":"jsr","oa":39520,"o":"mon_nybble_char"},{"a":39511,"l":"mon_print_xa","c":"Prints the character in X, then the one in A, with CHROUT ($FFD2).","t":"code","b":[72],"m":"pha","x":[38956,38996,39114]},{"a":39512,"t":"code","b":[138],"m":"txa"},{"a":39513,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39516,"t":"code","b":[104],"m":"pla"},{"a":39517,"t":"code","b":[76,210,255],"m":"jmp","oa":65490,"o":"KERNAL_CHROUT"},{"a":39520,"l":"mon_nybble_char","c":"Turns a value 0-15 in A into its hex digit character '0'-'9', 'A'-'F'.","t":"code","b":[9,48],"m":"ora","o":"#$30","x":[39501,39508]},{"a":39522,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":39524,"t":"code","b":[144,2],"m":"bcc","oa":39528,"o":"r_9A68"},{"a":39526,"t":"code","b":[105,6],"m":"adc","o":"#$06"},{"a":39528,"l":"r_9A68","t":"code","b":[96],"m":"rts","x":[39524]},{"a":39529,"l":"mon_swap_c1_c3","c":"Swaps the two address pointers $C1/$C2 and $C3/$C4.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[39168,39179,39447,39468,39746,39761,39830,39836,39876,39882,40287,40293,40368,40547]},{"a":39531,"l":"b_9A6B","t":"code","b":[181,192],"m":"lda","oa":192,"o":"mon_zp_c0,x","x":[39542]},{"a":39533,"t":"code","b":[72],"m":"pha"},{"a":39534,"t":"code","b":[181,194],"m":"lda","oa":194,"o":"mon_ptr_hi,x"},{"a":39536,"t":"code","b":[149,192],"m":"sta","oa":192,"o":"mon_zp_c0,x"},{"a":39538,"t":"code","b":[104],"m":"pla"},{"a":39539,"t":"code","b":[149,194],"m":"sta","oa":194,"o":"mon_ptr_hi,x"},{"a":39541,"t":"code","b":[202],"m":"dex"},{"a":39542,"t":"code","b":[208,243],"m":"bne","oa":39531,"o":"b_9A6B"},{"a":39544,"t":"code","b":[96],"m":"rts"},{"a":39545,"l":"mon_read_addr","c":"Reads a four-digit hex address: the first byte into $C2 (high), the second into $C1 (low), each stored only if typed; carry clear if a field was empty. $9A7C, entered with the high byte already in A, stores it when carry is set and then reads the low byte.","t":"code","b":[32,136,154],"m":"jsr","oa":39560,"o":"mon_read_hex_byte","x":[39163,39174,39222,39235,39266,39444,39457,39656]},{"a":39548,"l":"mon_read_addr_lo","c":"Entry of $9A79 with the high byte already read into A (from $9ADF, after $9A8F): stores it in $C2 if carry is set, then reads a hex byte into $C1.","t":"code","b":[144,2],"m":"bcc","oa":39552,"o":"b_9A80","x":[39647]},{"a":39550,"t":"code","b":[133,194],"m":"sta","oa":194,"o":"mon_ptr_hi"},{"a":39552,"l":"b_9A80","t":"code","b":[32,136,154],"m":"jsr","oa":39560,"o":"mon_read_hex_byte","x":[39548]},{"a":39555,"t":"code","b":[144,2],"m":"bcc","oa":39559,"o":"r_9A87"},{"a":39557,"t":"code","b":[133,193],"m":"sta","oa":193,"o":"mon_ptr_lo"},{"a":39559,"l":"r_9A87","t":"code","b":[96],"m":"rts","x":[39555]},{"a":39560,"l":"mon_read_hex_byte","c":"Reads two hex digits into A (via $2A); returns carry clear if two spaces were typed instead. $9A8F starts with the first character already in A.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[39073,39388,39545,39552,39842,39936]},{"a":39562,"t":"code","b":[133,42],"m":"sta","oa":42,"o":"mon_zp_2a"},{"a":39564,"t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39567,"l":"mon_read_hex_byte_a","c":"Entry of $9A88 with the first character already read (from $9ADC and $9BF0).","t":"code","b":[201,32],"m":"cmp","o":"#$20","x":[39644,39920]},{"a":39569,"t":"code","b":[208,9],"m":"bne","oa":39580,"o":"b_9A9C"},{"a":39571,"t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39574,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":39576,"t":"code","b":[208,14],"m":"bne","oa":39592,"o":"b_9AA8"},{"a":39578,"t":"code","b":[24],"m":"clc"},{"a":39579,"t":"code","b":[96],"m":"rts"},{"a":39580,"l":"b_9A9C","t":"code","b":[32,175,154],"m":"jsr","oa":39599,"o":"mon_hex_digit","x":[39569,40422]},{"a":39583,"t":"code","b":[10],"m":"asl","o":"a"},{"a":39584,"t":"code","b":[10],"m":"asl","o":"a"},{"a":39585,"t":"code","b":[10],"m":"asl","o":"a"},{"a":39586,"t":"code","b":[10],"m":"asl","o":"a"},{"a":39587,"t":"code","b":[133,42],"m":"sta","oa":42,"o":"mon_zp_2a"},{"a":39589,"t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39592,"l":"b_9AA8","t":"code","b":[32,175,154],"m":"jsr","oa":39599,"o":"mon_hex_digit","x":[39576]},{"a":39595,"t":"code","b":[5,42],"m":"ora","oa":42,"o":"mon_zp_2a"},{"a":39597,"t":"code","b":[56],"m":"sec"},{"a":39598,"t":"code","b":[96],"m":"rts"},{"a":39599,"l":"mon_hex_digit","c":"Turns a hex digit character into its value 0-15.","t":"code","b":[201,58],"m":"cmp","o":"#$3A","x":[39580,39592]},{"a":39601,"t":"code","b":[144,2],"m":"bcc","oa":39605,"o":"b_9AB5"},{"a":39603,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":39605,"l":"b_9AB5","t":"code","b":[41,15],"m":"and","o":"#$0F","x":[39601]},{"a":39607,"t":"code","b":[96],"m":"rts"},{"a":39608,"l":"mon_dec_c3","c":"Decrements the pointer $C3/$C4 (X = 2); a BIT $00A2 hides the LDX #$00 of the entry $9ABB.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[39818]},{"a":39610,"t":"code","b":[44,162,0],"m":"bit","oa":162,"o":"jiffy_clock_lo"},{"a":39611,"t":"note","l":"mon_dec_c1","c":"Decrements the pointer $C1/$C2 (entered at the operand of the BIT at $9ABA, X = 0); sets $26 on wrap.","note":"inside the item at $9ABA","x":[39821]},{"a":39613,"t":"code","b":[180,193],"m":"ldy","oa":193,"o":"mon_ptr_lo,x"},{"a":39615,"t":"code","b":[208,8],"m":"bne","oa":39625,"o":"b_9AC9"},{"a":39617,"t":"code","b":[180,194],"m":"ldy","oa":194,"o":"mon_ptr_hi,x"},{"a":39619,"t":"code","b":[208,2],"m":"bne","oa":39623,"o":"b_9AC7"},{"a":39621,"t":"code","b":[230,38],"m":"inc","oa":38,"o":"mon_zp_26"},{"a":39623,"l":"b_9AC7","t":"code","b":[214,194],"m":"dec","oa":194,"o":"mon_ptr_hi,x","x":[39619]},{"a":39625,"l":"b_9AC9","t":"code","b":[214,193],"m":"dec","oa":193,"o":"mon_ptr_lo,x","x":[39615]},{"a":39627,"l":"r_9ACB","t":"code","b":[96],"m":"rts","x":[39659]},{"a":39628,"l":"mon_skip_spaces","c":"Reads characters until one is not a space.","t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc","x":[39633,39641,40376]},{"a":39631,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":39633,"t":"code","b":[240,249],"m":"beq","oa":39628,"o":"mon_skip_spaces"},{"a":39635,"t":"code","b":[96],"m":"rts"},{"a":39636,"l":"mon_read_first_addr","c":"Reads the command's first address into $C1/$C2 after the spaces, clearing $0100; any failure is the error ($9AED).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[39743,39827,39873,39993,40284,40331,40365]},{"a":39638,"t":"code","b":[141,0,1],"m":"sta","oa":256,"o":"a_0100"},{"a":39641,"t":"code","b":[32,204,154],"m":"jsr","oa":39628,"o":"mon_skip_spaces"},{"a":39644,"t":"code","b":[32,143,154],"m":"jsr","oa":39567,"o":"mon_read_hex_byte_a"},{"a":39647,"t":"code","b":[32,124,154],"m":"jsr","oa":39548,"o":"mon_read_addr_lo"},{"a":39650,"t":"code","b":[144,9],"m":"bcc","oa":39661,"o":"mon_error"},{"a":39652,"t":"code","b":[96],"m":"rts"},{"a":39653,"l":"mon_read_addr_or_error","c":"Reads one more address ($9A79); returns if one was given, else the error ($9AED).","t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc","x":[39749,39755,39833,39879,40290]},{"a":39656,"t":"code","b":[32,121,154],"m":"jsr","oa":39545,"o":"mon_read_addr"},{"a":39659,"t":"code","b":[176,222],"m":"bcs","oa":39627,"o":"r_9ACB"},{"a":39661,"l":"mon_error","c":"Error: restores SP, prints $90 and '?' and returns to the prompt.","t":"code","b":[174,63,2],"m":"ldx","oa":575,"o":"mon_reg_sp","x":[39037,39086,39219,39374,39650,39867,40572]},{"a":39664,"t":"code","b":[154],"m":"txs"},{"a":39665,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":39667,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39670,"t":"code","b":[169,63],"m":"lda","o":"#$3F"},{"a":39672,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39675,"t":"code","b":[76,71,152],"m":"jmp","oa":38983,"o":"mon_prompt"},{"a":39678,"l":"mon_print_spaces","c":"Prints X spaces.","t":"code","b":[32,84,157],"m":"jsr","oa":40276,"o":"mon_print_space","x":[39682,40230]},{"a":39681,"t":"code","b":[202],"m":"dex"},{"a":39682,"t":"code","b":[208,250],"m":"bne","oa":39678,"o":"mon_print_spaces"},{"a":39684,"t":"code","b":[96],"m":"rts"},{"a":39685,"l":"mon_inc_c3","c":"Increments the pointer $C3/$C4.","t":"code","b":[230,195],"m":"inc","oa":195,"o":"mon_ptr2_lo","x":[39779]},{"a":39687,"t":"code","b":[208,2],"m":"bne","oa":39691,"o":"r_9B0B"},{"a":39689,"t":"code","b":[230,196],"m":"inc","oa":196,"o":"mon_ptr2_hi"},{"a":39691,"l":"r_9B0B","t":"code","b":[96],"m":"rts","x":[39687]},{"a":39692,"l":"mon_swap_c1_27","c":"Swaps $C1/$C2 with $28/$29 (the monitor's third address).","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[39752,39802]},{"a":39694,"l":"b_9B0E","t":"code","b":[181,192],"m":"lda","oa":192,"o":"mon_zp_c0,x","x":[39705]},{"a":39696,"t":"code","b":[72],"m":"pha"},{"a":39697,"t":"code","b":[181,39],"m":"lda","oa":39,"o":"draw_src_lo,x"},{"a":39699,"t":"code","b":[149,192],"m":"sta","oa":192,"o":"mon_zp_c0,x"},{"a":39701,"t":"code","b":[104],"m":"pla"},{"a":39702,"t":"code","b":[149,39],"m":"sta","oa":39,"o":"draw_src_lo,x"},{"a":39704,"t":"code","b":[202],"m":"dex"},{"a":39705,"t":"code","b":[208,243],"m":"bne","oa":39694,"o":"b_9B0E"},{"a":39707,"t":"code","b":[96],"m":"rts"},{"a":39708,"l":"mon_branch_offset","c":"The assembler's branch offset: ($C3/$C4 - 2) - $C1/$C2 into $1E and Y.","t":"code","b":[165,195],"m":"lda","oa":195,"o":"mon_ptr2_lo","x":[40560]},{"a":39710,"t":"code","b":[164,196],"m":"ldy","oa":196,"o":"mon_ptr2_hi"},{"a":39712,"t":"code","b":[56],"m":"sec"},{"a":39713,"t":"code","b":[233,2],"m":"sbc","o":"#$02"},{"a":39715,"t":"code","b":[176,14],"m":"bcs","oa":39731,"o":"b_9B33"},{"a":39717,"t":"code","b":[136],"m":"dey"},{"a":39718,"t":"code","b":[144,11],"m":"bcc","oa":39731,"o":"b_9B33"},{"a":39720,"l":"mon_len_28","c":"Length from $C1/$C2 to $28/$29, into $1E and Y (through $9B33).","t":"code","b":[165,40],"m":"lda","oa":40,"o":"draw_src_hi","x":[39770,39787,39813]},{"a":39722,"t":"code","b":[164,41],"m":"ldy","oa":41,"o":"mon_zp_29"},{"a":39724,"t":"code","b":[76,51,155],"m":"jmp","oa":39731,"o":"b_9B33"},{"a":39727,"l":"mon_len_c3","c":"Length from $C1/$C2 to $C3/$C4, into $1E and Y; carry set while the end is not passed.","t":"code","b":[165,195],"m":"lda","oa":195,"o":"mon_ptr2_lo","x":[39758,39853,39985,40323]},{"a":39729,"t":"code","b":[164,196],"m":"ldy","oa":196,"o":"mon_ptr2_hi"},{"a":39731,"l":"b_9B33","t":"code","b":[56],"m":"sec","x":[39715,39718,39724]},{"a":39732,"t":"code","b":[229,193],"m":"sbc","oa":193,"o":"mon_ptr_lo"},{"a":39734,"t":"code","b":[133,30],"m":"sta","oa":30,"o":"mon_zp_1e"},{"a":39736,"t":"code","b":[152],"m":"tya"},{"a":39737,"t":"code","b":[229,194],"m":"sbc","oa":194,"o":"mon_ptr_hi"},{"a":39739,"t":"code","b":[168],"m":"tay"},{"a":39740,"t":"code","b":[5,30],"m":"ora","oa":30,"o":"mon_zp_1e"},{"a":39742,"t":"code","b":[96],"m":"rts"},{"a":39743,"l":"mon_cmd_t","c":"Command T: transfers (copies) memory from start-end to a destination, forwards or backwards so that overlapping ranges copy correctly.","t":"code","b":[32,212,154],"m":"jsr","oa":39636,"o":"mon_read_first_addr"},{"a":39746,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39749,"t":"code","b":[32,229,154],"m":"jsr","oa":39653,"o":"mon_read_addr_or_error"},{"a":39752,"t":"code","b":[32,12,155],"m":"jsr","oa":39692,"o":"mon_swap_c1_27"},{"a":39755,"t":"code","b":[32,229,154],"m":"jsr","oa":39653,"o":"mon_read_addr_or_error"},{"a":39758,"t":"code","b":[32,47,155],"m":"jsr","oa":39727,"o":"mon_len_c3"},{"a":39761,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39764,"t":"code","b":[144,21],"m":"bcc","oa":39787,"o":"b_9B6B"},{"a":39766,"l":"b_9B56","t":"code","b":[166,38],"m":"ldx","oa":38,"o":"mon_zp_26","x":[39785]},{"a":39768,"t":"code","b":[208,100],"m":"bne","oa":39870,"o":"b_9BBE"},{"a":39770,"t":"code","b":[32,40,155],"m":"jsr","oa":39720,"o":"mon_len_28"},{"a":39773,"t":"code","b":[144,95],"m":"bcc","oa":39870,"o":"b_9BBE"},{"a":39775,"t":"code","b":[161,193],"m":"lda","oa":193,"o":"(mon_ptr_lo,x)"},{"a":39777,"t":"code","b":[129,195],"m":"sta","oa":195,"o":"(mon_ptr2_lo,x)"},{"a":39779,"t":"code","b":[32,5,155],"m":"jsr","oa":39685,"o":"mon_inc_c3"},{"a":39782,"t":"code","b":[32,51,152],"m":"jsr","oa":38963,"o":"mon_inc_addr"},{"a":39785,"t":"code","b":[208,235],"m":"bne","oa":39766,"o":"b_9B56"},{"a":39787,"l":"b_9B6B","t":"code","b":[32,40,155],"m":"jsr","oa":39720,"o":"mon_len_28","x":[39764]},{"a":39790,"t":"code","b":[24],"m":"clc"},{"a":39791,"t":"code","b":[165,30],"m":"lda","oa":30,"o":"mon_zp_1e"},{"a":39793,"t":"code","b":[101,195],"m":"adc","oa":195,"o":"mon_ptr2_lo"},{"a":39795,"t":"code","b":[133,195],"m":"sta","oa":195,"o":"mon_ptr2_lo"},{"a":39797,"t":"code","b":[152],"m":"tya"},{"a":39798,"t":"code","b":[101,196],"m":"adc","oa":196,"o":"mon_ptr2_hi"},{"a":39800,"t":"code","b":[133,196],"m":"sta","oa":196,"o":"mon_ptr2_hi"},{"a":39802,"t":"code","b":[32,12,155],"m":"jsr","oa":39692,"o":"mon_swap_c1_27"},{"a":39805,"l":"j_9B7D","t":"code","b":[166,38],"m":"ldx","oa":38,"o":"mon_zp_26","x":[39824]},{"a":39807,"t":"code","b":[208,61],"m":"bne","oa":39870,"o":"b_9BBE"},{"a":39809,"t":"code","b":[161,193],"m":"lda","oa":193,"o":"(mon_ptr_lo,x)"},{"a":39811,"t":"code","b":[129,195],"m":"sta","oa":195,"o":"(mon_ptr2_lo,x)"},{"a":39813,"t":"code","b":[32,40,155],"m":"jsr","oa":39720,"o":"mon_len_28"},{"a":39816,"t":"code","b":[176,52],"m":"bcs","oa":39870,"o":"b_9BBE"},{"a":39818,"t":"code","b":[32,184,154],"m":"jsr","oa":39608,"o":"mon_dec_c3"},{"a":39821,"t":"code","b":[32,187,154],"m":"jsr","oa":39611,"o":"mon_dec_c1"},{"a":39824,"t":"code","b":[76,125,155],"m":"jmp","oa":39805,"o":"j_9B7D"},{"a":39827,"l":"mon_cmd_f","c":"Command F: fills start-end with a byte.","t":"code","b":[32,212,154],"m":"jsr","oa":39636,"o":"mon_read_first_addr"},{"a":39830,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39833,"t":"code","b":[32,229,154],"m":"jsr","oa":39653,"o":"mon_read_addr_or_error"},{"a":39836,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39839,"t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39842,"t":"code","b":[32,136,154],"m":"jsr","oa":39560,"o":"mon_read_hex_byte"},{"a":39845,"t":"code","b":[144,20],"m":"bcc","oa":39867,"o":"b_9BBB"},{"a":39847,"t":"code","b":[133,29],"m":"sta","oa":29,"o":"mon_zp_1d"},{"a":39849,"l":"b_9BA9","t":"code","b":[166,38],"m":"ldx","oa":38,"o":"mon_zp_26","x":[39865]},{"a":39851,"t":"code","b":[208,17],"m":"bne","oa":39870,"o":"b_9BBE"},{"a":39853,"t":"code","b":[32,47,155],"m":"jsr","oa":39727,"o":"mon_len_c3"},{"a":39856,"t":"code","b":[144,12],"m":"bcc","oa":39870,"o":"b_9BBE"},{"a":39858,"t":"code","b":[165,29],"m":"lda","oa":29,"o":"mon_zp_1d"},{"a":39860,"t":"code","b":[129,193],"m":"sta","oa":193,"o":"(mon_ptr_lo,x)"},{"a":39862,"t":"code","b":[32,51,152],"m":"jsr","oa":38963,"o":"mon_inc_addr"},{"a":39865,"t":"code","b":[208,238],"m":"bne","oa":39849,"o":"b_9BA9"},{"a":39867,"l":"b_9BBB","t":"code","b":[76,237,154],"m":"jmp","oa":39661,"o":"mon_error","x":[39845,39923,39939]},{"a":39870,"l":"b_9BBE","t":"code","b":[76,71,152],"m":"jmp","oa":38983,"o":"mon_prompt","x":[39768,39773,39807,39816,39851,39856,39983]},{"a":39873,"l":"mon_cmd_h","c":"Command H: hunts start-end for up to 32 hex bytes or a 'text string (built in $0210), printing each address where it matches.","t":"code","b":[32,212,154],"m":"jsr","oa":39636,"o":"mon_read_first_addr"},{"a":39876,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39879,"t":"code","b":[32,229,154],"m":"jsr","oa":39653,"o":"mon_read_addr_or_error"},{"a":39882,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":39885,"t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39888,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":39890,"t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39893,"t":"code","b":[201,39],"m":"cmp","o":"#$27"},{"a":39895,"t":"code","b":[208,20],"m":"bne","oa":39917,"o":"b_9BED"},{"a":39897,"t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc"},{"a":39900,"l":"b_9BDC","t":"code","b":[157,16,2],"m":"sta","oa":528,"o":"mon_buf_0210,x","x":[39913]},{"a":39903,"t":"code","b":[232],"m":"inx"},{"a":39904,"t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN"},{"a":39907,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":39909,"t":"code","b":[240,34],"m":"beq","oa":39945,"o":"b_9C09"},{"a":39911,"t":"code","b":[224,32],"m":"cpx","o":"#$20"},{"a":39913,"t":"code","b":[208,241],"m":"bne","oa":39900,"o":"b_9BDC"},{"a":39915,"t":"code","b":[240,28],"m":"beq","oa":39945,"o":"b_9C09"},{"a":39917,"l":"b_9BED","t":"code","b":[142,0,1],"m":"stx","oa":256,"o":"a_0100","x":[39895]},{"a":39920,"t":"code","b":[32,143,154],"m":"jsr","oa":39567,"o":"mon_read_hex_byte_a"},{"a":39923,"t":"code","b":[144,198],"m":"bcc","oa":39867,"o":"b_9BBB"},{"a":39925,"l":"b_9BF5","t":"code","b":[157,16,2],"m":"sta","oa":528,"o":"mon_buf_0210,x","x":[39943]},{"a":39928,"t":"code","b":[232],"m":"inx"},{"a":39929,"t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN"},{"a":39932,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":39934,"t":"code","b":[240,9],"m":"beq","oa":39945,"o":"b_9C09"},{"a":39936,"t":"code","b":[32,136,154],"m":"jsr","oa":39560,"o":"mon_read_hex_byte"},{"a":39939,"t":"code","b":[144,182],"m":"bcc","oa":39867,"o":"b_9BBB"},{"a":39941,"t":"code","b":[224,32],"m":"cpx","o":"#$20"},{"a":39943,"t":"code","b":[208,236],"m":"bne","oa":39925,"o":"b_9BF5"},{"a":39945,"l":"b_9C09","t":"code","b":[134,28],"m":"stx","oa":28,"o":"mon_zp_1c","x":[39909,39915,39934]},{"a":39947,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":39949,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":39952,"t":"code","b":[32,87,157],"m":"jsr","oa":40279,"o":"mon_print_cr"},{"a":39955,"l":"b_9C13","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[39988]},{"a":39957,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":39959,"l":"b_9C17","t":"code","b":[177,193],"m":"lda","oa":193,"o":"(mon_ptr_lo),y","x":[39970]},{"a":39961,"t":"code","b":[221,16,2],"m":"cmp","oa":528,"o":"mon_buf_0210,x"},{"a":39964,"t":"code","b":[208,12],"m":"bne","oa":39978,"o":"b_9C2A"},{"a":39966,"t":"code","b":[200],"m":"iny"},{"a":39967,"t":"code","b":[232],"m":"inx"},{"a":39968,"t":"code","b":[228,28],"m":"cpx","oa":28,"o":"mon_zp_1c"},{"a":39970,"t":"code","b":[208,243],"m":"bne","oa":39959,"o":"b_9C17"},{"a":39972,"t":"code","b":[32,65,154],"m":"jsr","oa":39489,"o":"mon_print_addr"},{"a":39975,"t":"code","b":[32,84,157],"m":"jsr","oa":40276,"o":"mon_print_space"},{"a":39978,"l":"b_9C2A","t":"code","b":[32,51,152],"m":"jsr","oa":38963,"o":"mon_inc_addr","x":[39964]},{"a":39981,"t":"code","b":[166,38],"m":"ldx","oa":38,"o":"mon_zp_26"},{"a":39983,"t":"code","b":[208,141],"m":"bne","oa":39870,"o":"b_9BBE"},{"a":39985,"t":"code","b":[32,47,155],"m":"jsr","oa":39727,"o":"mon_len_c3"},{"a":39988,"t":"code","b":[176,221],"m":"bcs","oa":39955,"o":"b_9C13"},{"a":39990,"t":"code","b":[76,71,152],"m":"jmp","oa":38983,"o":"mon_prompt"},{"a":39993,"l":"mon_cmd_d","c":"Command D: clears the screen and disassembles 22 lines from the address (kept in $20/$21 for the ',' command), then moves the cursor up.","t":"code","b":[32,212,154],"m":"jsr","oa":39636,"o":"mon_read_first_addr"},{"a":39996,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":39998,"t":"code","b":[165,194],"m":"lda","oa":194,"o":"mon_ptr_hi"},{"a":40000,"t":"code","b":[133,33],"m":"sta","oa":33,"o":"mon_zp_21"},{"a":40002,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":40004,"t":"code","b":[134,40],"m":"stx","oa":40,"o":"draw_src_hi"},{"a":40006,"l":"mon_disasm_page","c":"The D page: clears the screen and disassembles 22 lines from $C1/$C2 (entered from ',' at $9DA2 to redraw).","t":"code","b":[169,147],"m":"lda","o":"#$93","x":[40354]},{"a":40008,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":40011,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":40013,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":40016,"t":"code","b":[169,22],"m":"lda","o":"#$16"},{"a":40018,"t":"code","b":[133,29],"m":"sta","oa":29,"o":"mon_zp_1d"},{"a":40020,"l":"b_9C54","t":"code","b":[32,106,156],"m":"jsr","oa":40042,"o":"mon_disasm_line","x":[40032]},{"a":40023,"t":"code","b":[32,202,156],"m":"jsr","oa":40138,"o":"mon_next_instr"},{"a":40026,"t":"code","b":[133,193],"m":"sta","oa":193,"o":"mon_ptr_lo"},{"a":40028,"t":"code","b":[132,194],"m":"sty","oa":194,"o":"mon_ptr_hi"},{"a":40030,"t":"code","b":[198,29],"m":"dec","oa":29,"o":"mon_zp_1d"},{"a":40032,"t":"code","b":[208,242],"m":"bne","oa":40020,"o":"b_9C54"},{"a":40034,"t":"code","b":[169,145],"m":"lda","o":"#$91"},{"a":40036,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":40039,"t":"code","b":[76,71,152],"m":"jmp","oa":38983,"o":"mon_prompt"},{"a":40042,"l":"mon_disasm_line","c":"Prints one disassembly line: '.,' address, the instruction's bytes ($9D1F), the mnemonic ($9D35) and the operand in its addressing mode (characters from $9F2A/$9F30); $9C72 skips the prefix.","t":"code","b":[160,44],"m":"ldy","o":"#$2C","x":[40020]},{"a":40044,"t":"code","b":[32,194,152],"m":"jsr","oa":39106,"o":"mon_newline_dot"},{"a":40047,"t":"code","b":[32,84,157],"m":"jsr","oa":40276,"o":"mon_print_space"},{"a":40050,"l":"mon_disasm_line_body","c":"Entry of $9C6A without the '.,' prefix (used by P at $9D74).","t":"code","b":[32,65,154],"m":"jsr","oa":39489,"o":"mon_print_addr","x":[40308]},{"a":40053,"t":"code","b":[32,84,157],"m":"jsr","oa":40276,"o":"mon_print_space"},{"a":40056,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":40058,"t":"code","b":[161,193],"m":"lda","oa":193,"o":"(mon_ptr_lo,x)"},{"a":40060,"t":"code","b":[32,217,156],"m":"jsr","oa":40153,"o":"mon_decode_opcode"},{"a":40063,"t":"code","b":[72],"m":"pha"},{"a":40064,"t":"code","b":[32,31,157],"m":"jsr","oa":40223,"o":"mon_print_instr_bytes"},{"a":40067,"t":"code","b":[104],"m":"pla"},{"a":40068,"t":"code","b":[32,53,157],"m":"jsr","oa":40245,"o":"mon_print_mnemonic"},{"a":40071,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":40073,"l":"b_9C89","t":"code","b":[224,3],"m":"cpx","o":"#$03","x":[40114]},{"a":40075,"t":"code","b":[208,18],"m":"bne","oa":40095,"o":"b_9C9F"},{"a":40077,"t":"code","b":[164,31],"m":"ldy","oa":31,"o":"mon_zp_1f"},{"a":40079,"t":"code","b":[240,14],"m":"beq","oa":40095,"o":"b_9C9F"},{"a":40081,"l":"b_9C91","t":"code","b":[165,42],"m":"lda","oa":42,"o":"mon_zp_2a","x":[40093]},{"a":40083,"t":"code","b":[201,232],"m":"cmp","o":"#$E8"},{"a":40085,"t":"code","b":[177,193],"m":"lda","oa":193,"o":"(mon_ptr_lo),y"},{"a":40087,"t":"code","b":[176,28],"m":"bcs","oa":40117,"o":"b_9CB5"},{"a":40089,"t":"code","b":[32,194,156],"m":"jsr","oa":40130,"o":"mon_print_hex_keep_x"},{"a":40092,"t":"code","b":[136],"m":"dey"},{"a":40093,"t":"code","b":[208,242],"m":"bne","oa":40081,"o":"b_9C91"},{"a":40095,"l":"b_9C9F","t":"code","b":[6,42],"m":"asl","oa":42,"o":"mon_zp_2a","x":[40075,40079]},{"a":40097,"t":"code","b":[144,14],"m":"bcc","oa":40113,"o":"b_9CB1"},{"a":40099,"t":"code","b":[189,42,159],"m":"lda","oa":40746,"o":"mon_char1_base,x"},{"a":40102,"t":"code","b":[32,165,157],"m":"jsr","oa":40357,"o":"mon_print_unless_28"},{"a":40105,"t":"code","b":[189,48,159],"m":"lda","oa":40752,"o":"mon_char2_base,x"},{"a":40108,"t":"code","b":[240,3],"m":"beq","oa":40113,"o":"b_9CB1"},{"a":40110,"t":"code","b":[32,165,157],"m":"jsr","oa":40357,"o":"mon_print_unless_28"},{"a":40113,"l":"b_9CB1","t":"code","b":[202],"m":"dex","x":[40097,40108]},{"a":40114,"t":"code","b":[208,213],"m":"bne","oa":40073,"o":"b_9C89"},{"a":40116,"t":"code","b":[96],"m":"rts"},{"a":40117,"l":"b_9CB5","t":"code","b":[32,205,156],"m":"jsr","oa":40141,"o":"mon_add_offset","x":[40087]},{"a":40120,"t":"code","b":[170],"m":"tax"},{"a":40121,"t":"code","b":[232],"m":"inx"},{"a":40122,"t":"code","b":[208,1],"m":"bne","oa":40125,"o":"b_9CBD"},{"a":40124,"t":"code","b":[200],"m":"iny"},{"a":40125,"l":"b_9CBD","t":"code","b":[152],"m":"tya","x":[40122]},{"a":40126,"t":"code","b":[32,194,156],"m":"jsr","oa":40130,"o":"mon_print_hex_keep_x"},{"a":40129,"t":"code","b":[138],"m":"txa"},{"a":40130,"l":"mon_print_hex_keep_x","c":"Prints A in hex keeping X (saved in $1C).","t":"code","b":[134,28],"m":"stx","oa":28,"o":"mon_zp_1c","x":[40089,40126,40225]},{"a":40132,"t":"code","b":[32,72,154],"m":"jsr","oa":39496,"o":"mon_print_hex"},{"a":40135,"t":"code","b":[166,28],"m":"ldx","oa":28,"o":"mon_zp_1c"},{"a":40137,"t":"code","b":[96],"m":"rts"},{"a":40138,"l":"mon_next_instr","c":"Returns in A/Y the address of the next instruction: $C1/$C2 plus the length in $1F plus one.","t":"code","b":[165,31],"m":"lda","oa":31,"o":"mon_zp_1f","x":[40023,40311,40598]},{"a":40140,"t":"code","b":[56],"m":"sec"},{"a":40141,"l":"mon_add_offset","c":"Adds the signed value in A (with carry) to $C1/$C2, returning A/Y: the branch target for the disassembler.","t":"code","b":[164,194],"m":"ldy","oa":194,"o":"mon_ptr_hi","x":[40117]},{"a":40143,"t":"code","b":[170],"m":"tax"},{"a":40144,"t":"code","b":[16,1],"m":"bpl","oa":40147,"o":"b_9CD3"},{"a":40146,"t":"code","b":[136],"m":"dey"},{"a":40147,"l":"b_9CD3","t":"code","b":[101,193],"m":"adc","oa":193,"o":"mon_ptr_lo","x":[40144]},{"a":40149,"t":"code","b":[144,1],"m":"bcc","oa":40152,"o":"r_9CD8"},{"a":40151,"t":"code","b":[200],"m":"iny"},{"a":40152,"l":"r_9CD8","t":"code","b":[96],"m":"rts","x":[40149]},{"a":40153,"l":"mon_decode_opcode","c":"Classifies the opcode in A: looks up its addressing format in $9ED9 and $9F1D (into $2A, with the operand length in $1F) and returns the index of its mnemonic.","t":"code","b":[168],"m":"tay","x":[40060,40461]},{"a":40154,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":40155,"t":"code","b":[144,11],"m":"bcc","oa":40168,"o":"b_9CE8"},{"a":40157,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":40158,"t":"code","b":[176,23],"m":"bcs","oa":40183,"o":"b_9CF7"},{"a":40160,"t":"code","b":[201,34],"m":"cmp","o":"#$22"},{"a":40162,"t":"code","b":[240,19],"m":"beq","oa":40183,"o":"b_9CF7"},{"a":40164,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":40166,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":40168,"l":"b_9CE8","t":"code","b":[74],"m":"lsr","o":"a","x":[40155]},{"a":40169,"t":"code","b":[170],"m":"tax"},{"a":40170,"t":"code","b":[189,217,158],"m":"lda","oa":40665,"o":"mon_mode_table,x"},{"a":40173,"t":"code","b":[176,4],"m":"bcs","oa":40179,"o":"b_9CF3"},{"a":40175,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":40176,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":40177,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":40178,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":40179,"l":"b_9CF3","t":"code","b":[41,15],"m":"and","o":"#$0F","x":[40173]},{"a":40181,"t":"code","b":[208,4],"m":"bne","oa":40187,"o":"b_9CFB"},{"a":40183,"l":"b_9CF7","t":"code","b":[160,128],"m":"ldy","o":"#$80","x":[40158,40162]},{"a":40185,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":40187,"l":"b_9CFB","t":"code","b":[170],"m":"tax","x":[40181]},{"a":40188,"t":"code","b":[189,29,159],"m":"lda","oa":40733,"o":"mon_format_table,x"},{"a":40191,"t":"code","b":[133,42],"m":"sta","oa":42,"o":"mon_zp_2a"},{"a":40193,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":40195,"t":"code","b":[133,31],"m":"sta","oa":31,"o":"mon_zp_1f"},{"a":40197,"t":"code","b":[152],"m":"tya"},{"a":40198,"t":"code","b":[41,143],"m":"and","o":"#$8F"},{"a":40200,"t":"code","b":[170],"m":"tax"},{"a":40201,"t":"code","b":[152],"m":"tya"},{"a":40202,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":40204,"t":"code","b":[224,138],"m":"cpx","o":"#$8A"},{"a":40206,"t":"code","b":[240,11],"m":"beq","oa":40219,"o":"b_9D1B"},{"a":40208,"l":"b_9D10","t":"code","b":[74],"m":"lsr","o":"a","x":[40220]},{"a":40209,"t":"code","b":[144,8],"m":"bcc","oa":40219,"o":"b_9D1B"},{"a":40211,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":40212,"l":"b_9D14","t":"code","b":[74],"m":"lsr","o":"a","x":[40216]},{"a":40213,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":40215,"t":"code","b":[136],"m":"dey"},{"a":40216,"t":"code","b":[208,250],"m":"bne","oa":40212,"o":"b_9D14"},{"a":40218,"t":"code","b":[200],"m":"iny"},{"a":40219,"l":"b_9D1B","t":"code","b":[136],"m":"dey","x":[40206,40209]},{"a":40220,"t":"code","b":[208,242],"m":"bne","oa":40208,"o":"b_9D10"},{"a":40222,"t":"code","b":[96],"m":"rts"},{"a":40223,"l":"mon_print_instr_bytes","c":"Prints the instruction's bytes from ($C1) padded to three columns.","t":"code","b":[177,193],"m":"lda","oa":193,"o":"(mon_ptr_lo),y","x":[40064,40236]},{"a":40225,"t":"code","b":[32,194,156],"m":"jsr","oa":40130,"o":"mon_print_hex_keep_x"},{"a":40228,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":40230,"l":"b_9D26","t":"code","b":[32,254,154],"m":"jsr","oa":39678,"o":"mon_print_spaces","x":[40242]},{"a":40233,"t":"code","b":[196,31],"m":"cpy","oa":31,"o":"mon_zp_1f"},{"a":40235,"t":"code","b":[200],"m":"iny"},{"a":40236,"t":"code","b":[144,241],"m":"bcc","oa":40223,"o":"mon_print_instr_bytes"},{"a":40238,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":40240,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":40242,"t":"code","b":[144,242],"m":"bcc","oa":40230,"o":"b_9D26"},{"a":40244,"t":"code","b":[96],"m":"rts"},{"a":40245,"l":"mon_print_mnemonic","c":"Unpacks the three letters of mnemonic Y from $9F37 (left) and $9F77 (right), five bits each plus $3F, and prints them.","t":"code","b":[168],"m":"tay","x":[40068]},{"a":40246,"t":"code","b":[185,55,159],"m":"lda","oa":40759,"o":"mon_mnemonic_left,y"},{"a":40249,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":40251,"t":"code","b":[185,119,159],"m":"lda","oa":40823,"o":"mon_mnemonic_right,y"},{"a":40254,"t":"code","b":[133,41],"m":"sta","oa":41,"o":"mon_zp_29"},{"a":40256,"l":"b_9D40","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[40274]},{"a":40258,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":40260,"l":"b_9D44","t":"code","b":[6,41],"m":"asl","oa":41,"o":"mon_zp_29","x":[40266]},{"a":40262,"t":"code","b":[38,40],"m":"rol","oa":40,"o":"draw_src_hi"},{"a":40264,"t":"code","b":[42],"m":"rol","o":"a"},{"a":40265,"t":"code","b":[136],"m":"dey"},{"a":40266,"t":"code","b":[208,248],"m":"bne","oa":40260,"o":"b_9D44"},{"a":40268,"t":"code","b":[105,63],"m":"adc","o":"#$3F"},{"a":40270,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":40273,"t":"code","b":[202],"m":"dex"},{"a":40274,"t":"code","b":[208,236],"m":"bne","oa":40256,"o":"b_9D40"},{"a":40276,"l":"mon_print_space","c":"Prints a space; a BIT $0DA9 hides the LDA #$0D of $9D57.","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[39057,39678,39975,40047,40053,40615,40621]},{"a":40278,"t":"code","b":[44,169,13],"m":"bit","oa":3497,"o":"skip_operand_0da9"},{"a":40279,"t":"note","l":"mon_print_cr","c":"Prints a carriage return (entered at the operand of the BIT at $9D56).","note":"inside the item at $9D56","x":[38949,39108,39952,40305]},{"a":40281,"t":"code","b":[76,210,255],"m":"jmp","oa":65490,"o":"KERNAL_CHROUT"},{"a":40284,"l":"mon_cmd_p","c":"Command P: disassembles from the first address to the second without clearing the screen, stopping on STOP.","t":"code","b":[32,212,154],"m":"jsr","oa":39636,"o":"mon_read_first_addr"},{"a":40287,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":40290,"t":"code","b":[32,229,154],"m":"jsr","oa":39653,"o":"mon_read_addr_or_error"},{"a":40293,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":40296,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":40298,"t":"code","b":[134,40],"m":"stx","oa":40,"o":"draw_src_hi"},{"a":40300,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":40302,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":40305,"l":"b_9D71","t":"code","b":[32,87,157],"m":"jsr","oa":40279,"o":"mon_print_cr","x":[40326]},{"a":40308,"t":"code","b":[32,114,156],"m":"jsr","oa":40050,"o":"mon_disasm_line_body"},{"a":40311,"t":"code","b":[32,202,156],"m":"jsr","oa":40138,"o":"mon_next_instr"},{"a":40314,"t":"code","b":[133,193],"m":"sta","oa":193,"o":"mon_ptr_lo"},{"a":40316,"t":"code","b":[132,194],"m":"sty","oa":194,"o":"mon_ptr_hi"},{"a":40318,"t":"code","b":[32,225,255],"m":"jsr","oa":65505,"o":"KERNAL_STOP"},{"a":40321,"t":"code","b":[240,5],"m":"beq","oa":40328,"o":"b_9D88"},{"a":40323,"t":"code","b":[32,47,155],"m":"jsr","oa":39727,"o":"mon_len_c3"},{"a":40326,"t":"code","b":[176,233],"m":"bcs","oa":40305,"o":"b_9D71"},{"a":40328,"l":"b_9D88","t":"code","b":[76,71,152],"m":"jmp","oa":38983,"o":"mon_prompt","x":[40321]},{"a":40331,"l":"mon_cmd_comma","c":"Command , : stores up to three bytes at the address (a line of the D page edited in place) and redraws the D page from $20/$21.","t":"code","b":[32,212,154],"m":"jsr","oa":39636,"o":"mon_read_first_addr"},{"a":40334,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":40336,"t":"code","b":[133,29],"m":"sta","oa":29,"o":"mon_zp_1d"},{"a":40338,"l":"b_9D92","t":"code","b":[32,62,152],"m":"jsr","oa":38974,"o":"mon_getc","x":[40344]},{"a":40341,"t":"code","b":[32,161,152],"m":"jsr","oa":39073,"o":"mon_poke_byte"},{"a":40344,"t":"code","b":[208,248],"m":"bne","oa":40338,"o":"b_9D92"},{"a":40346,"t":"code","b":[165,32],"m":"lda","oa":32,"o":"draw_rows"},{"a":40348,"t":"code","b":[133,193],"m":"sta","oa":193,"o":"mon_ptr_lo"},{"a":40350,"t":"code","b":[165,33],"m":"lda","oa":33,"o":"mon_zp_21"},{"a":40352,"t":"code","b":[133,194],"m":"sta","oa":194,"o":"mon_ptr_hi"},{"a":40354,"t":"code","b":[76,70,156],"m":"jmp","oa":40006,"o":"mon_disasm_page"},{"a":40357,"l":"mon_print_unless_28","c":"Prints the character in A unless it equals the byte in zero page $28 (CMP $28, not an immediate). Called only by the disassembler ($9CA6, $9CAE), after $9D35 has shifted the mnemonic out of $28 and left $00 or $80 there, so the addressing-mode characters it is given are always printed.","t":"code","b":[197,40],"m":"cmp","oa":40,"o":"draw_src_hi","x":[40102,40110]},{"a":40359,"t":"code","b":[240,3],"m":"beq","oa":40364,"o":"r_9DAC"},{"a":40361,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":40364,"l":"r_9DAC","t":"code","b":[96],"m":"rts","x":[40359]},{"a":40365,"l":"mon_cmd_a","c":"Command A: the one-line assembler. Packs the three mnemonic letters into $0210/$0211, reads the operand into $0210+, tries every opcode 0-255 against it ($9E03 loop) and, on a match, stores the instruction at ($C1), prints the next '.A' line with the next address and loops.","t":"code","b":[32,212,154],"m":"jsr","oa":39636,"o":"mon_read_first_addr"},{"a":40368,"l":"mon_assemble_next","c":"Re-entry of the assembler for the next line (from $9EB5).","t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3","x":[40629]},{"a":40371,"t":"code","b":[142,17,2],"m":"stx","oa":529,"o":"mon_buf_0211"},{"a":40374,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":40376,"l":"b_9DB8","t":"code","b":[32,204,154],"m":"jsr","oa":39628,"o":"mon_skip_spaces","x":[40381]},{"a":40379,"t":"code","b":[72],"m":"pha"},{"a":40380,"t":"code","b":[202],"m":"dex"},{"a":40381,"t":"code","b":[208,249],"m":"bne","oa":40376,"o":"b_9DB8"},{"a":40383,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":40385,"l":"b_9DC1","t":"code","b":[104],"m":"pla","x":[40402]},{"a":40386,"t":"code","b":[56],"m":"sec"},{"a":40387,"t":"code","b":[233,63],"m":"sbc","o":"#$3F"},{"a":40389,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":40391,"l":"b_9DC7","t":"code","b":[74],"m":"lsr","o":"a","x":[40399]},{"a":40392,"t":"code","b":[110,17,2],"m":"ror","oa":529,"o":"mon_buf_0211"},{"a":40395,"t":"code","b":[110,16,2],"m":"ror","oa":528,"o":"mon_buf_0210"},{"a":40398,"t":"code","b":[136],"m":"dey"},{"a":40399,"t":"code","b":[208,246],"m":"bne","oa":40391,"o":"b_9DC7"},{"a":40401,"t":"code","b":[202],"m":"dex"},{"a":40402,"t":"code","b":[208,237],"m":"bne","oa":40385,"o":"b_9DC1"},{"a":40404,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":40406,"l":"b_9DD6","t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN","x":[40415,40441]},{"a":40409,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":40411,"t":"code","b":[240,30],"m":"beq","oa":40443,"o":"b_9DFB"},{"a":40413,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":40415,"t":"code","b":[240,245],"m":"beq","oa":40406,"o":"b_9DD6"},{"a":40417,"t":"code","b":[32,208,158],"m":"jsr","oa":40656,"o":"mon_is_hex_char"},{"a":40420,"t":"code","b":[176,15],"m":"bcs","oa":40437,"o":"b_9DF5"},{"a":40422,"t":"code","b":[32,156,154],"m":"jsr","oa":39580,"o":"b_9A9C"},{"a":40425,"t":"code","b":[164,193],"m":"ldy","oa":193,"o":"mon_ptr_lo"},{"a":40427,"t":"code","b":[132,194],"m":"sty","oa":194,"o":"mon_ptr_hi"},{"a":40429,"t":"code","b":[133,193],"m":"sta","oa":193,"o":"mon_ptr_lo"},{"a":40431,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":40433,"t":"code","b":[157,16,2],"m":"sta","oa":528,"o":"mon_buf_0210,x"},{"a":40436,"t":"code","b":[232],"m":"inx"},{"a":40437,"l":"b_9DF5","t":"code","b":[157,16,2],"m":"sta","oa":528,"o":"mon_buf_0210,x","x":[40420]},{"a":40440,"t":"code","b":[232],"m":"inx"},{"a":40441,"t":"code","b":[208,219],"m":"bne","oa":40406,"o":"b_9DD6"},{"a":40443,"l":"b_9DFB","t":"code","b":[134,40],"m":"stx","oa":40,"o":"draw_src_hi","x":[40411]},{"a":40445,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":40447,"t":"code","b":[134,38],"m":"stx","oa":38,"o":"mon_zp_26"},{"a":40449,"t":"code","b":[240,4],"m":"beq","oa":40455,"o":"b_9E07"},{"a":40451,"l":"b_9E03","t":"code","b":[230,38],"m":"inc","oa":38,"o":"mon_zp_26","x":[40478,40501,40506,40524,40534,40539,40545]},{"a":40453,"t":"code","b":[240,117],"m":"beq","oa":40572,"o":"b_9E7C"},{"a":40455,"l":"b_9E07","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[40449]},{"a":40457,"t":"code","b":[134,29],"m":"stx","oa":29,"o":"mon_zp_1d"},{"a":40459,"t":"code","b":[165,38],"m":"lda","oa":38,"o":"mon_zp_26"},{"a":40461,"t":"code","b":[32,217,156],"m":"jsr","oa":40153,"o":"mon_decode_opcode"},{"a":40464,"t":"code","b":[166,42],"m":"ldx","oa":42,"o":"mon_zp_2a"},{"a":40466,"t":"code","b":[134,41],"m":"stx","oa":41,"o":"mon_zp_29"},{"a":40468,"t":"code","b":[170],"m":"tax"},{"a":40469,"t":"code","b":[188,55,159],"m":"ldy","oa":40759,"o":"mon_mnemonic_left,x"},{"a":40472,"t":"code","b":[189,119,159],"m":"lda","oa":40823,"o":"mon_mnemonic_right,x"},{"a":40475,"t":"code","b":[32,185,158],"m":"jsr","oa":40633,"o":"mon_match_two"},{"a":40478,"t":"code","b":[208,227],"m":"bne","oa":40451,"o":"b_9E03"},{"a":40480,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":40482,"l":"b_9E22","t":"code","b":[224,3],"m":"cpx","o":"#$03","x":[40527]},{"a":40484,"t":"code","b":[208,25],"m":"bne","oa":40511,"o":"b_9E3F"},{"a":40486,"t":"code","b":[164,31],"m":"ldy","oa":31,"o":"mon_zp_1f"},{"a":40488,"t":"code","b":[240,21],"m":"beq","oa":40511,"o":"b_9E3F"},{"a":40490,"l":"b_9E2A","t":"code","b":[165,42],"m":"lda","oa":42,"o":"mon_zp_2a","x":[40509]},{"a":40492,"t":"code","b":[201,232],"m":"cmp","o":"#$E8"},{"a":40494,"t":"code","b":[169,48],"m":"lda","o":"#$30"},{"a":40496,"t":"code","b":[176,33],"m":"bcs","oa":40531,"o":"b_9E53"},{"a":40498,"t":"code","b":[32,191,158],"m":"jsr","oa":40639,"o":"mon_match_one"},{"a":40501,"t":"code","b":[208,204],"m":"bne","oa":40451,"o":"b_9E03"},{"a":40503,"t":"code","b":[32,193,158],"m":"jsr","oa":40641,"o":"mon_match_char"},{"a":40506,"t":"code","b":[208,199],"m":"bne","oa":40451,"o":"b_9E03"},{"a":40508,"t":"code","b":[136],"m":"dey"},{"a":40509,"t":"code","b":[208,235],"m":"bne","oa":40490,"o":"b_9E2A"},{"a":40511,"l":"b_9E3F","t":"code","b":[6,42],"m":"asl","oa":42,"o":"mon_zp_2a","x":[40484,40488]},{"a":40513,"t":"code","b":[144,11],"m":"bcc","oa":40526,"o":"b_9E4E"},{"a":40515,"t":"code","b":[188,48,159],"m":"ldy","oa":40752,"o":"mon_char2_base,x"},{"a":40518,"t":"code","b":[189,42,159],"m":"lda","oa":40746,"o":"mon_char1_base,x"},{"a":40521,"t":"code","b":[32,185,158],"m":"jsr","oa":40633,"o":"mon_match_two"},{"a":40524,"t":"code","b":[208,181],"m":"bne","oa":40451,"o":"b_9E03"},{"a":40526,"l":"b_9E4E","t":"code","b":[202],"m":"dex","x":[40513]},{"a":40527,"t":"code","b":[208,209],"m":"bne","oa":40482,"o":"b_9E22"},{"a":40529,"t":"code","b":[240,10],"m":"beq","oa":40541,"o":"b_9E5D"},{"a":40531,"l":"b_9E53","t":"code","b":[32,184,158],"m":"jsr","oa":40632,"o":"mon_match_pair","x":[40496]},{"a":40534,"t":"code","b":[208,171],"m":"bne","oa":40451,"o":"b_9E03"},{"a":40536,"t":"code","b":[32,184,158],"m":"jsr","oa":40632,"o":"mon_match_pair"},{"a":40539,"t":"code","b":[208,166],"m":"bne","oa":40451,"o":"b_9E03"},{"a":40541,"l":"b_9E5D","t":"code","b":[165,40],"m":"lda","oa":40,"o":"draw_src_hi","x":[40529]},{"a":40543,"t":"code","b":[197,29],"m":"cmp","oa":29,"o":"mon_zp_1d"},{"a":40545,"t":"code","b":[208,160],"m":"bne","oa":40451,"o":"b_9E03"},{"a":40547,"t":"code","b":[32,105,154],"m":"jsr","oa":39529,"o":"mon_swap_c1_c3"},{"a":40550,"t":"code","b":[164,31],"m":"ldy","oa":31,"o":"mon_zp_1f"},{"a":40552,"t":"code","b":[240,40],"m":"beq","oa":40594,"o":"b_9E92"},{"a":40554,"t":"code","b":[165,41],"m":"lda","oa":41,"o":"mon_zp_29"},{"a":40556,"t":"code","b":[201,157],"m":"cmp","o":"#$9D"},{"a":40558,"t":"code","b":[208,26],"m":"bne","oa":40586,"o":"b_9E8A"},{"a":40560,"t":"code","b":[32,28,155],"m":"jsr","oa":39708,"o":"mon_branch_offset"},{"a":40563,"t":"code","b":[144,10],"m":"bcc","oa":40575,"o":"b_9E7F"},{"a":40565,"t":"code","b":[152],"m":"tya"},{"a":40566,"t":"code","b":[208,4],"m":"bne","oa":40572,"o":"b_9E7C"},{"a":40568,"t":"code","b":[165,30],"m":"lda","oa":30,"o":"mon_zp_1e"},{"a":40570,"t":"code","b":[16,10],"m":"bpl","oa":40582,"o":"b_9E86"},{"a":40572,"l":"b_9E7C","t":"code","b":[76,237,154],"m":"jmp","oa":39661,"o":"mon_error","x":[40453,40566,40576,40580]},{"a":40575,"l":"b_9E7F","t":"code","b":[200],"m":"iny","x":[40563]},{"a":40576,"t":"code","b":[208,250],"m":"bne","oa":40572,"o":"b_9E7C"},{"a":40578,"t":"code","b":[165,30],"m":"lda","oa":30,"o":"mon_zp_1e"},{"a":40580,"t":"code","b":[16,246],"m":"bpl","oa":40572,"o":"b_9E7C"},{"a":40582,"l":"b_9E86","t":"code","b":[164,31],"m":"ldy","oa":31,"o":"mon_zp_1f","x":[40570]},{"a":40584,"t":"code","b":[208,3],"m":"bne","oa":40589,"o":"b_9E8D"},{"a":40586,"l":"b_9E8A","t":"code","b":[185,194,0],"m":"lda","oa":194,"o":"mon_ptr_hi,y","x":[40558,40592]},{"a":40589,"l":"b_9E8D","t":"code","b":[145,193],"m":"sta","oa":193,"o":"(mon_ptr_lo),y","x":[40584]},{"a":40591,"t":"code","b":[136],"m":"dey"},{"a":40592,"t":"code","b":[208,248],"m":"bne","oa":40586,"o":"b_9E8A"},{"a":40594,"l":"b_9E92","t":"code","b":[165,38],"m":"lda","oa":38,"o":"mon_zp_26","x":[40552]},{"a":40596,"t":"code","b":[145,193],"m":"sta","oa":193,"o":"(mon_ptr_lo),y"},{"a":40598,"t":"code","b":[32,202,156],"m":"jsr","oa":40138,"o":"mon_next_instr"},{"a":40601,"t":"code","b":[133,193],"m":"sta","oa":193,"o":"mon_ptr_lo"},{"a":40603,"t":"code","b":[132,194],"m":"sty","oa":194,"o":"mon_ptr_hi"},{"a":40605,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":40607,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":40610,"t":"code","b":[160,65],"m":"ldy","o":"#$41"},{"a":40612,"t":"code","b":[32,194,152],"m":"jsr","oa":39106,"o":"mon_newline_dot"},{"a":40615,"t":"code","b":[32,84,157],"m":"jsr","oa":40276,"o":"mon_print_space"},{"a":40618,"t":"code","b":[32,65,154],"m":"jsr","oa":39489,"o":"mon_print_addr"},{"a":40621,"t":"code","b":[32,84,157],"m":"jsr","oa":40276,"o":"mon_print_space"},{"a":40624,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":40626,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":40629,"t":"code","b":[76,176,157],"m":"jmp","oa":40368,"o":"mon_assemble_next"},{"a":40632,"l":"mon_match_pair","c":"Assembler: TAY, then $9EB9, so it matches the character in A twice against the next two typed operand characters. Used at $9E53 and $9E58 with A = '0' ($30).","t":"code","b":[168],"m":"tay","x":[40531,40536]},{"a":40633,"l":"mon_match_two","c":"Assembler: matches the character in A, then the one in Y, against the typed operand.","t":"code","b":[32,191,158],"m":"jsr","oa":40639,"o":"mon_match_one","x":[40475,40521]},{"a":40636,"t":"code","b":[208,17],"m":"bne","oa":40655,"o":"r_9ECF"},{"a":40638,"t":"code","b":[152],"m":"tya"},{"a":40639,"l":"mon_match_one","c":"Assembler: matches one character (A, if not zero) against the typed operand.","t":"code","b":[240,14],"m":"beq","oa":40655,"o":"r_9ECF","x":[40498,40633]},{"a":40641,"l":"mon_match_char","c":"Assembler: compares A with the typed operand character at $0210+$1D and advances $1D, keeping X.","t":"code","b":[134,28],"m":"stx","oa":28,"o":"mon_zp_1c","x":[40503]},{"a":40643,"t":"code","b":[166,29],"m":"ldx","oa":29,"o":"mon_zp_1d"},{"a":40645,"t":"code","b":[221,16,2],"m":"cmp","oa":528,"o":"mon_buf_0210,x"},{"a":40648,"t":"code","b":[8],"m":"php"},{"a":40649,"t":"code","b":[232],"m":"inx"},{"a":40650,"t":"code","b":[134,29],"m":"stx","oa":29,"o":"mon_zp_1d"},{"a":40652,"t":"code","b":[166,28],"m":"ldx","oa":28,"o":"mon_zp_1c"},{"a":40654,"t":"code","b":[40],"m":"plp"},{"a":40655,"l":"r_9ECF","t":"code","b":[96],"m":"rts","x":[40636,40639]},{"a":40656,"l":"mon_is_hex_char","c":"Carry clear if A is '0'-'F' (from $30 to below $47), set otherwise.","t":"code","b":[201,48],"m":"cmp","o":"#$30","x":[40417]},{"a":40658,"t":"code","b":[144,3],"m":"bcc","oa":40663,"o":"b_9ED7"},{"a":40660,"t":"code","b":[201,71],"m":"cmp","o":"#$47"},{"a":40662,"t":"code","b":[96],"m":"rts"},{"a":40663,"l":"b_9ED7","t":"code","b":[56],"m":"sec","x":[40658]},{"a":40664,"t":"code","b":[96],"m":"rts"},{"a":40665,"l":"mon_mode_table","c":"The disassembler's addressing-format table, 68 bytes ($9ED9-$9F1C): two formats (nybbles) per byte, indexed by the opcode's bits in $9CD9.","t":"byte","b":[64,2,69,3,208,8,64,9],"x":[40170]},{"a":40673,"t":"byte","b":[48,34,69,51,208,8,64,9]},{"a":40681,"t":"byte","b":[64,2,69,51,208,8,64,9]},{"a":40689,"t":"byte","b":[64,2,69,179,208,8,64,9]},{"a":40697,"t":"byte","b":[0,34,68,51,208,140,68,0]},{"a":40705,"t":"byte","b":[17,34,68,51,208,140,68,154]},{"a":40713,"t":"byte","b":[16,34,68,51,208,8,64,9]},{"a":40721,"t":"byte","b":[16,34,68,51,208,8,64,9]},{"a":40729,"t":"byte","b":[98,19,120,169]},{"a":40733,"l":"mon_format_table","c":"14 bytes ($9F1D-$9F2A): for each format, which operand characters to print and the operand length (bits 0-1), read into $2A and $1F by $9CD9.","t":"byte","b":[0,33,129,130,0,0,89,77],"x":[40188]},{"a":40741,"t":"byte","b":[145,146,134,74,133]},{"a":40746,"l":"mon_char1_base","c":"Base of the first addressing-mode character table (indexed 1-6 at $9CA3: , ) , # ( $); $9F2A itself is the last byte of $9F1D.","t":"byte","b":[157],"x":[40099,40518]},{"a":40747,"l":"mon_char1_table","c":"The first characters of the addressing modes, ',),#($' ($9F2B-$9F30).","t":"byte","b":[44,41,44,35,40]},{"a":40752,"l":"mon_char2_base","c":"Base of the second addressing-mode character table (indexed 1-6 at $9CA9); $9F30 itself is the last '$' of $9F2B.","t":"byte","b":[36],"x":[40105,40515]},{"a":40753,"l":"mon_char2_table","c":"The second characters of the addressing modes, 'Y', 0, 'X', '$', '$', 0 ($9F31-$9F36).","t":"byte","b":[89,0,88,36,36,0]},{"a":40759,"l":"mon_mnemonic_left","c":"Packed mnemonics, left bytes, 64 entries ($9F37-$9F76): with $9F77 each pair holds three letters of five bits (plus $3F).","t":"byte","b":[28,138,28,35,93,139,27,161],"x":[40246,40469]},{"a":40767,"t":"byte","b":[157,138,29,35,157,139,29,161]},{"a":40775,"t":"byte","b":[0,41,25,174,105,168,25,35]},{"a":40783,"t":"byte","b":[36,83,27,35,36,83,25,161]},{"a":40791,"t":"byte","b":[0,26,91,91,165,105,36,36]},{"a":40799,"t":"byte","b":[174,174,168,173,41,0,124,0]},{"a":40807,"t":"byte","b":[21,156,109,156,165,105,41,83]},{"a":40815,"t":"byte","b":[132,19,52,17,165,105,35,160]},{"a":40823,"l":"mon_mnemonic_right","c":"Packed mnemonics, right bytes, 64 entries ($9F77-$9FB6).","t":"byte","b":[216,98,90,72,38,98,148,136],"x":[40251,40472]},{"a":40831,"t":"byte","b":[84,68,200,84,104,68,232,148]},{"a":40839,"t":"byte","b":[0,180,8,132,116,180,40,110]},{"a":40847,"t":"byte","b":[116,244,204,74,114,242,164,138]},{"a":40855,"t":"byte","b":[0,170,162,162,116,116,116,114]},{"a":40863,"t":"byte","b":[68,104,178,50,178,0,34,0]},{"a":40871,"t":"byte","b":[26,26,38,38,114,114,136,200]},{"a":40879,"t":"byte","b":[196,202,38,72,68,68,162,200]},{"a":40887,"l":"mon_command_letters","c":"The 15 command letters searched by $9867: : ; R M G X L S T F H D P , A ($9FB7-$9FC5).","t":"byte","b":[58,59,82,77,71,88,76,83],"x":[39017]},{"a":40895,"t":"byte","b":[84,70,72,68,80,44,65]},{"a":40902,"l":"mon_command_table","c":"The handlers' addresses less one, 16 words ($9FC6-$9FE5), pushed and reached by RTS: : $9943, ; $9936, R $98CD, M $98F8, G $9957, X $998A, L $99F5, S $9A0D, T $9B3F, F $9B93, H $9BC1, D $9C39, P $9D5C, , $9D8B, A $9DAD. The 16th word ($9846) is never read: the search stops at 15 letters.","t":"word","b":[66,153,53,153,204,152,247,152],"d":[39234,39221,39116,39159],"x":[39029]},{"a":40903,"t":"note","l":"mon_command_table_hi","c":"The high bytes of $9FC6 as $9871 reads them (LDA $9FC7,X).","note":"inside the item at $9FC6","x":[39025]},{"a":40910,"t":"word","b":[86,153,137,153,244,153,12,154],"d":[39254,39305,39412,39436]},{"a":40918,"t":"word","b":[62,155,146,155,192,155,56,156],"d":[39742,39826,39872,39992]},{"a":40926,"t":"word","b":[91,157,138,157,172,157,70,152],"d":[40283,40330,40364,38982]},{"a":40934,"l":"mon_brk_vector","c":"Two addresses: $97FF, the BRK handler, which $97ED copies into $0316/$0317; and $97ED, the monitor's cold start.","t":"addr","b":[255,151],"oa":38911,"o":"mon_brk_entry","x":[38893]},{"a":40935,"t":"note","l":"mon_brk_vector_hi","c":"High byte of the BRK handler's address, read by $97F3.","note":"inside the item at $9FE6","x":[38899]},{"a":40936,"l":"mon_cold_start_ptr","c":"$97ED, the address of the monitor's cold start (nothing in the image reads it).","t":"addr","b":[237,151],"oa":38893,"o":"mon_cold_start"},{"a":40938,"l":"mon_register_header","c":"The R command's header: CR and '   PC  SR AC XR YR SP', 22 characters ($9FEA-$9FFF), printed by $98CD.","t":"byte","b":[13,32,32,32,80,67,32,32],"x":[39124]},{"a":40946,"t":"byte","b":[83,82,32,65,67,32,88,82]},{"a":40954,"t":"byte","b":[32,89,82,32,83,80]},{"a":40960,"l":"zeroed_a000","c":"$A000-$A1F5: all zero in the image. $92B6 (unreferenced, text mode) and $7E21 call $A000, which would execute BRK. Lupenio's text at $A1F6 starts in the middle of a word ('...CA CASA'), so the start of that text, and probably the routine the calls expected, are gone; what cleared them is not known.","t":"byte","b":[0,0],"x":[37558]},{"a":40962,"l":"p_A002","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[39315]},{"a":40970,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":40978,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":40986,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":40994,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41002,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41010,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41018,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41026,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41034,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41042,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41050,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41058,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41066,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41074,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41082,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41090,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41098,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41106,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41114,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41122,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41130,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41138,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41146,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41154,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41162,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41170,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41178,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41186,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41194,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41202,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41210,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41218,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41226,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41234,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41242,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41250,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41258,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41266,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41274,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41282,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41290,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41298,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41306,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41314,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41322,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41330,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41338,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41346,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41354,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41362,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41370,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41378,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41386,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41394,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41402,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41410,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41418,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41426,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41434,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41442,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41450,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41458,"t":"byte","b":[0,0,0,0]},{"a":41462,"l":"lupenio_intro_text","c":"Lupenio's introduction and credits in Italian PETSCII, $A1F6-$A35A, cursor-right ($1D) for spaces, $0D and $11 for new lines, ended by $10: '...CA CASA PIENA DI PERICOLOSISSIMI GUARDIANI E TRAPPOLE MORTALI. ATTENTO AMICO MIO E RICORDA.... OGNI CHIAVE APRE UNA ED UNA SOLA PORTA PERCIO' FAI ATTENZIONE E CERCA DI TROVARE LA GIUSTA STRATEGIA DI GIOCO. CREATO, DISEGNATO E PROGRAMMATO DA ANDREA CUCCHETTO E FRANCESCO CHIOLA. UNO SPECIALE RINGRAZIAMENTO A: ANNA, CINZIA, MARCO E MARIO.' No code in the image reads it.","t":"byte","b":[67,65,29,67,65,83,65,29]},{"a":41470,"t":"byte","b":[80,73,69,78,65,29,68,73]},{"a":41478,"t":"byte","b":[29,80,69,82,73,67,79,76]},{"a":41486,"t":"byte","b":[79,83,73,83,83,73,45,13]},{"a":41494,"t":"byte","b":[29,77,73,29,71,85,65,82]},{"a":41502,"t":"byte","b":[68,73,65,78,73,29,69,29]},{"a":41510,"t":"byte","b":[84,82,65,80,80,79,76,69]},{"a":41518,"t":"byte","b":[29,77,79,82,84,65,76,73]},{"a":41526,"t":"byte","b":[46,13,29,65,84,84,69,78]},{"a":41534,"t":"byte","b":[84,79,29,65,77,73,67,79]},{"a":41542,"t":"byte","b":[29,77,73,79,29,69,29,82]},{"a":41550,"t":"byte","b":[73,67,79,82,68,65,46,46]},{"a":41558,"t":"byte","b":[46,46,13,29,79,71,78,73]},{"a":41566,"t":"byte","b":[29,67,72,73,65,86,69,29]},{"a":41574,"t":"byte","b":[65,80,82,69,29,85,78,65]},{"a":41582,"t":"byte","b":[29,69,68,29,85,78,65,29]},{"a":41590,"t":"byte","b":[83,79,76,65,29,80,79,82]},{"a":41598,"t":"byte","b":[84,65,13,29,80,69,82,67]},{"a":41606,"t":"byte","b":[73,79,39,70,65,73,29,65]},{"a":41614,"t":"byte","b":[84,84,69,78,90,73,79,78]},{"a":41622,"t":"byte","b":[69,29,69,29,67,69,82,67]},{"a":41630,"t":"byte","b":[65,29,68,73,29,84,82,79]},{"a":41638,"t":"byte","b":[45,13,29,86,65,82,69,29]},{"a":41646,"t":"byte","b":[76,65,29,71,73,85,83,84]},{"a":41654,"t":"byte","b":[65,29,83,84,82,65,84,69]},{"a":41662,"t":"byte","b":[71,73,65,29,68,73,29,71]},{"a":41670,"t":"byte","b":[73,79,67,79,46,13,17,29]},{"a":41678,"t":"byte","b":[67,82,69,65,84,79,44,68]},{"a":41686,"t":"byte","b":[73,83,69,71,78,65,84,79]},{"a":41694,"t":"byte","b":[29,69,29,80,82,79,71,82]},{"a":41702,"t":"byte","b":[65,77,77,65,84,79,29,68]},{"a":41710,"t":"byte","b":[65,13,17,29,65,78,68,82]},{"a":41718,"t":"byte","b":[69,65,29,67,85,67,67,72]},{"a":41726,"t":"byte","b":[69,84,84,79,29,69,29,70]},{"a":41734,"t":"byte","b":[82,65,78,67,69,83,67,79]},{"a":41742,"t":"byte","b":[29,67,72,73,79,76,65,13]},{"a":41750,"t":"byte","b":[17,29,85,78,79,29,83,80]},{"a":41758,"t":"byte","b":[69,67,73,65,76,69,29,82]},{"a":41766,"t":"byte","b":[73,78,71,82,65,90,73,65]},{"a":41774,"t":"byte","b":[77,69,78,84,79,29,65,58]},{"a":41782,"t":"byte","b":[13,17,29,29,29,29,29,29]},{"a":41790,"t":"byte","b":[29,29,65,78,78,65,44,67]},{"a":41798,"t":"byte","b":[73,78,90,73,65,44,77,65]},{"a":41806,"t":"byte","b":[82,67,79,29,69,29,77,65]},{"a":41814,"t":"byte","b":[82,73,79,46,16]},{"a":41819,"l":"fill_a35b","c":"$A35B-$A3FF: zeros to $A36F, then the same 00 00 32 32 / 08 08 3A 3A pattern as $9700. Not referenced.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41827,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":41835,"t":"byte","b":[0,0,0,0,0,0,0,50]},{"a":41843,"t":"byte","b":[50,0,0,50,50,0,0,50]},{"a":41851,"t":"byte","b":[50,0,0,50,50,8,8,58]},{"a":41859,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41867,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41875,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41883,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41891,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41899,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41907,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41915,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41923,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41931,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41939,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41947,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41955,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41963,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41971,"t":"byte","b":[58,8,8,58,58,8,8,58]},{"a":41979,"t":"byte","b":[58,8,10,58,58]},{"a":41984,"l":"gfx_copy_block","c":"Graphics library (zero page $20 rows, $23 bytes per row, ($24) destination, ($27) source; workspace $3F40-$3F4B): copies $20 character rows of $23 bytes from ($27) to the bitmap at ($24), the source advancing by $23 and the destination by $140 (one character row) each row. Called by $A690.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[42750]},{"a":41986,"l":"b_A402","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[42022,42026]},{"a":41988,"l":"b_A404","t":"code","b":[177,39],"m":"lda","oa":39,"o":"(draw_src_lo),y","x":[41995]},{"a":41990,"t":"code","b":[145,36],"m":"sta","oa":36,"o":"(draw_dest_lo),y"},{"a":41992,"t":"code","b":[200],"m":"iny"},{"a":41993,"t":"code","b":[196,35],"m":"cpy","oa":35,"o":"draw_width"},{"a":41995,"t":"code","b":[144,247],"m":"bcc","oa":41988,"o":"b_A404"},{"a":41997,"t":"code","b":[232],"m":"inx"},{"a":41998,"t":"code","b":[228,32],"m":"cpx","oa":32,"o":"draw_rows"},{"a":42000,"t":"code","b":[176,27],"m":"bcs","oa":42029,"o":"r_A42D"},{"a":42002,"t":"code","b":[24],"m":"clc"},{"a":42003,"t":"code","b":[165,39],"m":"lda","oa":39,"o":"draw_src_lo"},{"a":42005,"t":"code","b":[101,35],"m":"adc","oa":35,"o":"draw_width"},{"a":42007,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42009,"t":"code","b":[144,2],"m":"bcc","oa":42013,"o":"b_A41D"},{"a":42011,"t":"code","b":[230,40],"m":"inc","oa":40,"o":"draw_src_hi"},{"a":42013,"l":"b_A41D","t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi","x":[42009]},{"a":42015,"t":"code","b":[24],"m":"clc"},{"a":42016,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42018,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":42020,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42022,"t":"code","b":[144,218],"m":"bcc","oa":41986,"o":"b_A402"},{"a":42024,"t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi"},{"a":42026,"t":"code","b":[76,2,164],"m":"jmp","oa":41986,"o":"b_A402"},{"a":42029,"l":"r_A42D","t":"code","b":[96],"m":"rts","x":[42000]},{"a":42030,"l":"gfx_repeat_row","c":"Copies the same $23 bytes from ($27) into $20 successive character rows of the bitmap at ($24) (destination +$140 a row, source fixed). Called by $A4CD.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[42189]},{"a":42032,"l":"b_A430","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[42057,42061]},{"a":42034,"l":"b_A432","t":"code","b":[177,39],"m":"lda","oa":39,"o":"(draw_src_lo),y","x":[42041]},{"a":42036,"t":"code","b":[145,36],"m":"sta","oa":36,"o":"(draw_dest_lo),y"},{"a":42038,"t":"code","b":[200],"m":"iny"},{"a":42039,"t":"code","b":[196,35],"m":"cpy","oa":35,"o":"draw_width"},{"a":42041,"t":"code","b":[144,247],"m":"bcc","oa":42034,"o":"b_A432"},{"a":42043,"t":"code","b":[232],"m":"inx"},{"a":42044,"t":"code","b":[228,32],"m":"cpx","oa":32,"o":"draw_rows"},{"a":42046,"t":"code","b":[176,16],"m":"bcs","oa":42064,"o":"r_A450"},{"a":42048,"t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi"},{"a":42050,"t":"code","b":[24],"m":"clc"},{"a":42051,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42053,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":42055,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42057,"t":"code","b":[144,229],"m":"bcc","oa":42032,"o":"b_A430"},{"a":42059,"t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi"},{"a":42061,"t":"code","b":[76,48,164],"m":"jmp","oa":42032,"o":"b_A430"},{"a":42064,"l":"r_A450","t":"code","b":[96],"m":"rts","x":[42046]},{"a":42065,"l":"gfx_fill_cells","c":"Fills a rectangle of a 40-column screen (screen $0400 or colour RAM $D800) at ($24) with the value in $27: $23 columns by $20 rows. The library's cell fill.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[42119,42143,42264,42283,42591]},{"a":42067,"l":"b_A453","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[42092]},{"a":42069,"l":"b_A455","t":"code","b":[165,39],"m":"lda","oa":39,"o":"draw_src_lo","x":[42076]},{"a":42071,"t":"code","b":[145,36],"m":"sta","oa":36,"o":"(draw_dest_lo),y"},{"a":42073,"t":"code","b":[200],"m":"iny"},{"a":42074,"t":"code","b":[196,35],"m":"cpy","oa":35,"o":"draw_width"},{"a":42076,"t":"code","b":[208,247],"m":"bne","oa":42069,"o":"b_A455"},{"a":42078,"t":"code","b":[24],"m":"clc"},{"a":42079,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42081,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":42083,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42085,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42087,"t":"code","b":[176,8],"m":"bcs","oa":42097,"o":"b_A471"},{"a":42089,"l":"j_A469","t":"code","b":[232],"m":"inx","x":[42099]},{"a":42090,"t":"code","b":[228,32],"m":"cpx","oa":32,"o":"draw_rows"},{"a":42092,"t":"code","b":[208,229],"m":"bne","oa":42067,"o":"b_A453"},{"a":42094,"t":"code","b":[76,118,164],"m":"jmp","oa":42102,"o":"r_A476"},{"a":42097,"l":"b_A471","t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi","x":[42087]},{"a":42099,"t":"code","b":[76,105,164],"m":"jmp","oa":42089,"o":"j_A469"},{"a":42102,"l":"r_A476","t":"code","b":[96],"m":"rts","x":[42094]},{"a":42103,"l":"gfx_fill_screen","c":"Fills the screen $0400 (40 x 23 cells) with $27: in bitmap mode the colours of the bitmap's pixels.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[42147]},{"a":42105,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42107,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":42109,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42111,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":42113,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42115,"t":"code","b":[169,23],"m":"lda","o":"#$17"},{"a":42117,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42119,"t":"code","b":[32,81,164],"m":"jsr","oa":42065,"o":"gfx_fill_cells"},{"a":42122,"t":"code","b":[96],"m":"rts"},{"a":42123,"l":"gfx_fill_colour_ram","c":"Fills colour RAM $D800 (40 x 22 cells) with the value in $28.","t":"code","b":[165,40],"m":"lda","oa":40,"o":"draw_src_hi","x":[42150]},{"a":42125,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42127,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42129,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42131,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":42133,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42135,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":42137,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42139,"t":"code","b":[169,22],"m":"lda","o":"#$16"},{"a":42141,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42143,"t":"code","b":[32,81,164],"m":"jsr","oa":42065,"o":"gfx_fill_cells"},{"a":42146,"t":"code","b":[96],"m":"rts"},{"a":42147,"l":"gfx_fill_screen_and_colour","c":"$A477 with $27, then $A48B with $28.","t":"code","b":[32,119,164],"m":"jsr","oa":42103,"o":"gfx_fill_screen","x":[42233]},{"a":42150,"t":"code","b":[32,139,164],"m":"jsr","oa":42123,"o":"gfx_fill_colour_ram"},{"a":42153,"t":"code","b":[96],"m":"rts"},{"a":42154,"l":"gfx_fill_bitmap_pattern","c":"Covers the bitmap from $2000 with a 16-byte pattern (two cells) from ($27): 20 columns of pairs by 23 rows, through $A42E; then $D023 = X, and the screen and colour RAM are filled with $3F41 and $3F42 ($A4A3).","t":"code","b":[138],"m":"txa","x":[42426]},{"a":42155,"t":"code","b":[72],"m":"pha"},{"a":42156,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42158,"t":"code","b":[141,64,63],"m":"sta","oa":16192,"o":"draw_count"},{"a":42161,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42163,"t":"code","b":[141,67,63],"m":"sta","oa":16195,"o":"bg_fill_ptr_lo"},{"a":42166,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":42168,"t":"code","b":[141,68,63],"m":"sta","oa":16196,"o":"bg_fill_ptr_hi"},{"a":42171,"l":"b_A4BB","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[42211,42216]},{"a":42173,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42175,"t":"code","b":[169,23],"m":"lda","o":"#$17"},{"a":42177,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42179,"t":"code","b":[173,67,63],"m":"lda","oa":16195,"o":"bg_fill_ptr_lo"},{"a":42182,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42184,"t":"code","b":[173,68,63],"m":"lda","oa":16196,"o":"bg_fill_ptr_hi"},{"a":42187,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42189,"t":"code","b":[32,46,164],"m":"jsr","oa":42030,"o":"gfx_repeat_row"},{"a":42192,"t":"code","b":[238,64,63],"m":"inc","oa":16192,"o":"draw_count"},{"a":42195,"t":"code","b":[173,64,63],"m":"lda","oa":16192,"o":"draw_count"},{"a":42198,"t":"code","b":[201,20],"m":"cmp","o":"#$14"},{"a":42200,"t":"code","b":[240,17],"m":"beq","oa":42219,"o":"b_A4EB"},{"a":42202,"t":"code","b":[24],"m":"clc"},{"a":42203,"t":"code","b":[173,67,63],"m":"lda","oa":16195,"o":"bg_fill_ptr_lo"},{"a":42206,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":42208,"t":"code","b":[141,67,63],"m":"sta","oa":16195,"o":"bg_fill_ptr_lo"},{"a":42211,"t":"code","b":[144,214],"m":"bcc","oa":42171,"o":"b_A4BB"},{"a":42213,"t":"code","b":[238,68,63],"m":"inc","oa":16196,"o":"bg_fill_ptr_hi"},{"a":42216,"t":"code","b":[76,187,164],"m":"jmp","oa":42171,"o":"b_A4BB"},{"a":42219,"l":"b_A4EB","t":"code","b":[104],"m":"pla","x":[42200]},{"a":42220,"t":"code","b":[141,35,208],"m":"sta","o":"vic_background2"},{"a":42223,"t":"code","b":[173,65,63],"m":"lda","oa":16193,"o":"bg_screen_byte"},{"a":42226,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42228,"t":"code","b":[173,66,63],"m":"lda","oa":16194,"o":"bg_colour_byte"},{"a":42231,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42233,"t":"code","b":[32,163,164],"m":"jsr","oa":42147,"o":"gfx_fill_screen_and_colour"},{"a":42236,"t":"code","b":[96],"m":"rts"},{"a":42237,"l":"display_toggle","c":"Flips the display on or off ($D011 bit 4) after calling $BD6A, which, only while the display is off, draws room-dependent things chosen by $100C (outside this range). Called from many places, including $56B3.","t":"code","b":[32,106,189],"m":"jsr","oa":48490,"o":"draw_room_objects","x":[22195,22218,22238,42435,43095,43120]},{"a":42240,"l":"display_toggle_plain","c":"Flips $D011 bit 4 (display on/off) without the redraw; called from the title routine at $16A0 and $16E1.","t":"code","b":[173,17,208],"m":"lda","o":"vic_control1","x":[5792,5857]},{"a":42243,"t":"code","b":[73,16],"m":"eor","o":"#$10"},{"a":42245,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":42248,"t":"code","b":[96],"m":"rts"},{"a":42249,"l":"nop_a509","c":"A lone NOP between two routines.","t":"code","b":[234],"m":"nop"},{"a":42250,"l":"gfx_fill_cc_box","c":"Fills the rectangle at ($24) ($23 by $20) with $CC on the screen and again in colour RAM ($25 + $D3 + the carry the fill leaves set = $D8 page). Called only from $A52F and $A5DC, which have no callers.","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[42351,42524]},{"a":42252,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42254,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42256,"t":"code","b":[141,64,63],"m":"sta","oa":16192,"o":"draw_count"},{"a":42259,"t":"code","b":[165,37],"m":"lda","oa":37,"o":"draw_dest_hi"},{"a":42261,"t":"code","b":[141,65,63],"m":"sta","oa":16193,"o":"bg_screen_byte"},{"a":42264,"t":"code","b":[32,81,164],"m":"jsr","oa":42065,"o":"gfx_fill_cells"},{"a":42267,"t":"code","b":[173,64,63],"m":"lda","oa":16192,"o":"draw_count"},{"a":42270,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42272,"t":"code","b":[173,65,63],"m":"lda","oa":16193,"o":"bg_screen_byte"},{"a":42275,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42277,"t":"code","b":[165,37],"m":"lda","oa":37,"o":"draw_dest_hi"},{"a":42279,"t":"code","b":[105,211],"m":"adc","o":"#$D3"},{"a":42281,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42283,"t":"code","b":[32,81,164],"m":"jsr","oa":42065,"o":"gfx_fill_cells"},{"a":42286,"t":"code","b":[96],"m":"rts"},{"a":42287,"l":"gfx_cc_box_a","c":"Fills a 5-row box Y columns wide with $CC through $A50A, at $0450, $0568 or $067F (X below $1F, below $2F, or more) plus X AND $CF. No caller found.","t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":42289,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42291,"t":"code","b":[152],"m":"tya"},{"a":42292,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42294,"t":"code","b":[138],"m":"txa"},{"a":42295,"t":"code","b":[141,64,63],"m":"sta","oa":16192,"o":"draw_count"},{"a":42298,"t":"code","b":[224,31],"m":"cpx","o":"#$1F"},{"a":42300,"t":"code","b":[176,11],"m":"bcs","oa":42313,"o":"b_A549"},{"a":42302,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":42304,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42306,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":42308,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42310,"t":"code","b":[76,96,165],"m":"jmp","oa":42336,"o":"j_A560"},{"a":42313,"l":"b_A549","t":"code","b":[224,47],"m":"cpx","o":"#$2F","x":[42300]},{"a":42315,"t":"code","b":[176,11],"m":"bcs","oa":42328,"o":"b_A558"},{"a":42317,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":42319,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42321,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":42323,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42325,"t":"code","b":[76,96,165],"m":"jmp","oa":42336,"o":"j_A560"},{"a":42328,"l":"b_A558","t":"code","b":[169,127],"m":"lda","o":"#$7F","x":[42315]},{"a":42330,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42332,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":42334,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42336,"l":"j_A560","t":"code","b":[173,64,63],"m":"lda","oa":16192,"o":"draw_count","x":[42310,42325]},{"a":42339,"t":"code","b":[41,207],"m":"and","o":"#$CF"},{"a":42341,"t":"code","b":[141,64,63],"m":"sta","oa":16192,"o":"draw_count"},{"a":42344,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42346,"t":"code","b":[109,64,63],"m":"adc","oa":16192,"o":"draw_count"},{"a":42349,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42351,"t":"code","b":[32,10,165],"m":"jsr","oa":42250,"o":"gfx_fill_cc_box"},{"a":42354,"t":"code","b":[96],"m":"rts"},{"a":42355,"l":"gfx_clear_room","c":"Clears a room's picture: X = $D023 colour (low nybble) and colour-RAM value (high nybble), Y = the screen colour byte, ($27) = a 16-byte pattern. Divides X by 16 into $3F42, keeps Y in $3F41, sets $D021 = $D022, and covers the bitmap through $A4AA. Called from $56C2 (X = $62, Y = $FD, pattern $3F60).","t":"code","b":[173,18,208],"m":"lda","o":"vic_raster","x":[22210]},{"a":42358,"t":"code","b":[138],"m":"txa"},{"a":42359,"t":"code","b":[141,66,63],"m":"sta","oa":16194,"o":"bg_colour_byte"},{"a":42362,"t":"code","b":[140,65,63],"m":"sty","oa":16193,"o":"bg_screen_byte"},{"a":42365,"t":"code","b":[165,39],"m":"lda","oa":39,"o":"draw_src_lo"},{"a":42367,"t":"code","b":[141,69,63],"m":"sta","oa":16197,"o":"saved_src_lo"},{"a":42370,"t":"code","b":[165,40],"m":"lda","oa":40,"o":"draw_src_hi"},{"a":42372,"t":"code","b":[141,70,63],"m":"sta","oa":16198,"o":"saved_src_hi"},{"a":42375,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42377,"t":"code","b":[141,64,63],"m":"sta","oa":16192,"o":"draw_count"},{"a":42380,"l":"j_A58C","t":"code","b":[173,66,63],"m":"lda","oa":16194,"o":"bg_colour_byte","x":[42398]},{"a":42383,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":42385,"t":"code","b":[144,14],"m":"bcc","oa":42401,"o":"b_A5A1"},{"a":42387,"t":"code","b":[173,66,63],"m":"lda","oa":16194,"o":"bg_colour_byte"},{"a":42390,"t":"code","b":[233,16],"m":"sbc","o":"#$10"},{"a":42392,"t":"code","b":[141,66,63],"m":"sta","oa":16194,"o":"bg_colour_byte"},{"a":42395,"t":"code","b":[238,64,63],"m":"inc","oa":16192,"o":"draw_count"},{"a":42398,"t":"code","b":[76,140,165],"m":"jmp","oa":42380,"o":"j_A58C"},{"a":42401,"l":"b_A5A1","t":"code","b":[173,64,63],"m":"lda","oa":16192,"o":"draw_count","x":[42385]},{"a":42404,"t":"code","b":[141,66,63],"m":"sta","oa":16194,"o":"bg_colour_byte"},{"a":42407,"t":"code","b":[32,189,165],"m":"jsr","oa":42429,"o":"rts_a5bd"},{"a":42410,"t":"code","b":[173,69,63],"m":"lda","oa":16197,"o":"saved_src_lo"},{"a":42413,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42415,"t":"code","b":[173,70,63],"m":"lda","oa":16198,"o":"saved_src_hi"},{"a":42418,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42420,"t":"code","b":[173,34,208],"m":"lda","o":"vic_background1"},{"a":42423,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":42426,"t":"code","b":[32,170,164],"m":"jsr","oa":42154,"o":"gfx_fill_bitmap_pattern"},{"a":42429,"l":"rts_a5bd","c":"An RTS, called by $A5A7 (a call that does nothing).","t":"code","b":[96],"m":"rts","x":[42407]},{"a":42430,"l":"gfx_bitmap_mode_alt","c":"Border $0C, display toggle ($A4FD), bitmap mode ($D011 bit 5, $D018 bit 3), and stores $D016 OR $10 into $D022, not into $D016 as a multicolour switch would. No caller found.","t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":42432,"t":"code","b":[141,32,208],"m":"sta","o":"vic_border"},{"a":42435,"t":"code","b":[32,253,164],"m":"jsr","oa":42237,"o":"display_toggle"},{"a":42438,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":42440,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":42443,"t":"code","b":[173,24,208],"m":"lda","o":"vic_memory"},{"a":42446,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":42448,"t":"code","b":[141,24,208],"m":"sta","o":"vic_memory"},{"a":42451,"t":"code","b":[173,22,208],"m":"lda","o":"vic_control2"},{"a":42454,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":42456,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":42459,"t":"code","b":[96],"m":"rts"},{"a":42460,"l":"gfx_cc_box_b","c":"As $A52F with bases $0460, $0578, $068F: a 5-row $CC box. No caller found.","t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":42462,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42464,"t":"code","b":[152],"m":"tya"},{"a":42465,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42467,"t":"code","b":[138],"m":"txa"},{"a":42468,"t":"code","b":[141,64,63],"m":"sta","oa":16192,"o":"draw_count"},{"a":42471,"t":"code","b":[224,31],"m":"cpx","o":"#$1F"},{"a":42473,"t":"code","b":[176,11],"m":"bcs","oa":42486,"o":"b_A5F6"},{"a":42475,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":42477,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42479,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":42481,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42483,"t":"code","b":[76,13,166],"m":"jmp","oa":42509,"o":"j_A60D"},{"a":42486,"l":"b_A5F6","t":"code","b":[224,47],"m":"cpx","o":"#$2F","x":[42473]},{"a":42488,"t":"code","b":[176,11],"m":"bcs","oa":42501,"o":"b_A605"},{"a":42490,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":42492,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42494,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":42496,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42498,"t":"code","b":[76,13,166],"m":"jmp","oa":42509,"o":"j_A60D"},{"a":42501,"l":"b_A605","t":"code","b":[169,143],"m":"lda","o":"#$8F","x":[42488]},{"a":42503,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42505,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":42507,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42509,"l":"j_A60D","t":"code","b":[173,64,63],"m":"lda","oa":16192,"o":"draw_count","x":[42483,42498]},{"a":42512,"t":"code","b":[41,207],"m":"and","o":"#$CF"},{"a":42514,"t":"code","b":[141,64,63],"m":"sta","oa":16192,"o":"draw_count"},{"a":42517,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42519,"t":"code","b":[109,64,63],"m":"adc","oa":16192,"o":"draw_count"},{"a":42522,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42524,"t":"code","b":[32,10,165],"m":"jsr","oa":42250,"o":"gfx_fill_cc_box"},{"a":42527,"t":"code","b":[96],"m":"rts"},{"a":42528,"l":"gfx_fill_cells_xy","c":"Fills $23 x $20 screen cells at column X, row Y of $0400 with $27 (the cell colours of a tile); keeps X, Y in $3F47/$3F48 and $3F49/$3F4A for $A690.","t":"code","b":[142,71,63],"m":"stx","oa":16199,"o":"rect_column","x":[42623]},{"a":42531,"t":"code","b":[140,72,63],"m":"sty","oa":16200,"o":"rect_row"},{"a":42534,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42536,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42538,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":42540,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42542,"l":"gfx_fill_cells_rows","c":"Inner part of $A620: adds 40 per row in $3F48 to ($24), adds the column $3F47 and fills ($A451).","t":"code","b":[173,72,63],"m":"lda","oa":16200,"o":"rect_row","x":[42619]},{"a":42545,"t":"code","b":[141,74,63],"m":"sta","oa":16202,"o":"rect_row_saved"},{"a":42548,"l":"j_A634","t":"code","b":[173,72,63],"m":"lda","oa":16200,"o":"rect_row","x":[42565]},{"a":42551,"t":"code","b":[240,20],"m":"beq","oa":42573,"o":"b_A64D"},{"a":42553,"t":"code","b":[24],"m":"clc"},{"a":42554,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42556,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":42558,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42560,"t":"code","b":[176,6],"m":"bcs","oa":42568,"o":"b_A648"},{"a":42562,"l":"j_A642","t":"code","b":[206,72,63],"m":"dec","oa":16200,"o":"rect_row","x":[42570]},{"a":42565,"t":"code","b":[76,52,166],"m":"jmp","oa":42548,"o":"j_A634"},{"a":42568,"l":"b_A648","t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi","x":[42560]},{"a":42570,"t":"code","b":[76,66,166],"m":"jmp","oa":42562,"o":"j_A642"},{"a":42573,"l":"b_A64D","t":"code","b":[173,71,63],"m":"lda","oa":16199,"o":"rect_column","x":[42551]},{"a":42576,"t":"code","b":[141,73,63],"m":"sta","oa":16201,"o":"rect_column_saved"},{"a":42579,"t":"code","b":[24],"m":"clc"},{"a":42580,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42582,"t":"code","b":[109,71,63],"m":"adc","oa":16199,"o":"rect_column"},{"a":42585,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42587,"t":"code","b":[144,2],"m":"bcc","oa":42591,"o":"b_A65F"},{"a":42589,"t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi"},{"a":42591,"l":"b_A65F","t":"code","b":[32,81,164],"m":"jsr","oa":42065,"o":"gfx_fill_cells","x":[42587]},{"a":42594,"t":"code","b":[96],"m":"rts"},{"a":42595,"l":"colour_fill_disabled","c":"RTS. The colour-RAM half of $A67F was switched off here: the byte $28 after it is what is left of an LDA $28 overwritten by the RTS, and $A665-$A67E (store $28 as the value, fill $D800 at the same X, Y) can no longer run.","t":"code","b":[96],"m":"rts","x":[42626]},{"a":42596,"l":"colour_fill_remnant","c":"$28: the operand of the LDA $28 whose opcode at $A663 became RTS.","t":"byte","b":[40]},{"a":42597,"l":"colour_fill_dead","c":"Unreachable rest of the colour-RAM fill: $27 = A (from $28), X/Y from $3F49/$3F4A, ($24) = $D800, then $A62E.","t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42599,"t":"code","b":[173,74,63],"m":"lda","oa":16202,"o":"rect_row_saved"},{"a":42602,"t":"code","b":[141,72,63],"m":"sta","oa":16200,"o":"rect_row"},{"a":42605,"t":"code","b":[173,73,63],"m":"lda","oa":16201,"o":"rect_column_saved"},{"a":42608,"t":"code","b":[141,71,63],"m":"sta","oa":16199,"o":"rect_column"},{"a":42611,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42613,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42615,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":42617,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42619,"t":"code","b":[32,46,166],"m":"jsr","oa":42542,"o":"gfx_fill_cells_rows"},{"a":42622,"t":"code","b":[96],"m":"rts"},{"a":42623,"l":"tile_colour_cells","c":"Colours a tile's cells: $A620 (screen cells at X, Y, $23 x $20, value $27) and $A663 (disabled colour-RAM fill). Called by every tile drawer: $17F6, $1809, $5F90, $5FA3, $7C60, $A68C-$ABEC, $B23F and $B816-$BF92.","t":"code","b":[32,32,166],"m":"jsr","oa":42528,"o":"gfx_fill_cells_xy","x":[6134,6153,24464,24483,31840,42636,42770,42867,42896,42925,42954,42985,43016,43496,43530,43554,43574,43605,43636,43659,43682,43783,43904,43935,43966,43989,44012,45631,47126,47159,47185,47218,48336,48367,48398,48429,48460,48758,48796,48833,48871,49011,49042]},{"a":42626,"t":"code","b":[32,99,166],"m":"jsr","oa":42595,"o":"colour_fill_disabled"},{"a":42629,"t":"code","b":[96],"m":"rts"},{"a":42630,"l":"tile_colour_cc","c":"$27 = $28 = $CC, then $A67F. No caller found.","t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":42632,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42634,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42636,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":42639,"t":"code","b":[96],"m":"rts"},{"a":42640,"l":"tile_draw","c":"Draws a tile into the bitmap: column $3F49, row $3F4A (from $A620), $23 cells wide, $20 rows high, row-major source ($27): destination $2000 + row*$140 + column*8, $23*8 bytes per row, through $A400. Called by every tile drawer after $A67F.","t":"code","b":[173,74,63],"m":"lda","oa":16202,"o":"rect_row_saved","x":[31851,42781,42878,42907,42936,42965,42996,43027,43507,43585,43616,43647,43670,43693,43915,43946,43977,47137,47196,48347,48378,48409,48440,48471,48769,48807,48844,48882,49022,49053]},{"a":42643,"t":"code","b":[141,72,63],"m":"sta","oa":16200,"o":"rect_row"},{"a":42646,"t":"code","b":[173,73,63],"m":"lda","oa":16201,"o":"rect_column_saved"},{"a":42649,"t":"code","b":[141,71,63],"m":"sta","oa":16199,"o":"rect_column"},{"a":42652,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42654,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42656,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":42658,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"draw_dest_hi"},{"a":42660,"l":"j_A6A4","t":"code","b":[173,72,63],"m":"lda","oa":16200,"o":"rect_row","x":[42679]},{"a":42663,"t":"code","b":[240,22],"m":"beq","oa":42687,"o":"b_A6BF"},{"a":42665,"t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi"},{"a":42667,"t":"code","b":[24],"m":"clc"},{"a":42668,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42670,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":42672,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42674,"t":"code","b":[176,6],"m":"bcs","oa":42682,"o":"b_A6BA"},{"a":42676,"l":"j_A6B4","t":"code","b":[206,72,63],"m":"dec","oa":16200,"o":"rect_row","x":[42684]},{"a":42679,"t":"code","b":[76,164,166],"m":"jmp","oa":42660,"o":"j_A6A4"},{"a":42682,"l":"b_A6BA","t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi","x":[42674]},{"a":42684,"t":"code","b":[76,180,166],"m":"jmp","oa":42676,"o":"j_A6B4"},{"a":42687,"l":"b_A6BF","t":"code","b":[173,71,63],"m":"lda","oa":16199,"o":"rect_column","x":[42663]},{"a":42690,"t":"code","b":[141,75,63],"m":"sta","oa":16203,"o":"rect_count"},{"a":42693,"l":"j_A6C5","t":"code","b":[173,75,63],"m":"lda","oa":16203,"o":"rect_count","x":[42710,42715]},{"a":42696,"t":"code","b":[240,20],"m":"beq","oa":42718,"o":"b_A6DE"},{"a":42698,"t":"code","b":[206,75,63],"m":"dec","oa":16203,"o":"rect_count"},{"a":42701,"t":"code","b":[24],"m":"clc"},{"a":42702,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"draw_dest_lo"},{"a":42704,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":42706,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"draw_dest_lo"},{"a":42708,"t":"code","b":[176,3],"m":"bcs","oa":42713,"o":"b_A6D9"},{"a":42710,"t":"code","b":[76,197,166],"m":"jmp","oa":42693,"o":"j_A6C5"},{"a":42713,"l":"b_A6D9","t":"code","b":[230,37],"m":"inc","oa":37,"o":"draw_dest_hi","x":[42708]},{"a":42715,"t":"code","b":[76,197,166],"m":"jmp","oa":42693,"o":"j_A6C5"},{"a":42718,"l":"b_A6DE","t":"code","b":[165,35],"m":"lda","oa":35,"o":"draw_width","x":[42696]},{"a":42720,"t":"code","b":[141,75,63],"m":"sta","oa":16203,"o":"rect_count"},{"a":42723,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42725,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42727,"l":"j_A6E7","t":"code","b":[173,75,63],"m":"lda","oa":16203,"o":"rect_count","x":[42741]},{"a":42730,"t":"code","b":[240,12],"m":"beq","oa":42744,"o":"b_A6F8"},{"a":42732,"t":"code","b":[165,35],"m":"lda","oa":35,"o":"draw_width"},{"a":42734,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":42736,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42738,"t":"code","b":[206,75,63],"m":"dec","oa":16203,"o":"rect_count"},{"a":42741,"t":"code","b":[76,231,166],"m":"jmp","oa":42727,"o":"j_A6E7"},{"a":42744,"l":"b_A6F8","t":"code","b":[165,35],"m":"lda","oa":35,"o":"draw_width","x":[42730]},{"a":42746,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":42748,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42750,"t":"code","b":[32,0,164],"m":"jsr","oa":41984,"o":"gfx_copy_block"},{"a":42753,"t":"code","b":[96],"m":"rts"},{"a":42754,"l":"draw_tile_3f80","c":"Draws the 8x2 tile at $3F80 at X, Y with cell colour $9C. Called from $1A25.","t":"code","b":[169,156],"m":"lda","o":"#$9C","x":[6693]},{"a":42756,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42758,"t":"code","b":[169,76],"m":"lda","o":"#$4C"},{"a":42760,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42762,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":42764,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42766,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":42768,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42770,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":42773,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":42775,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42777,"t":"code","b":[169,63],"m":"lda","o":"#$3F"},{"a":42779,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42781,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":42784,"t":"code","b":[96],"m":"rts"},{"a":42785,"l":"colour_box_and_sprite7","c":"Colour fill through $56ED, then sprite 7: colour $0A, X = Y = $94, frame $3B. Called from $6E23; the frame is flipped by the IRQ at $A73F.","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[28195]},{"a":42788,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":42790,"t":"code","b":[141,46,208],"m":"sta","o":"vic_sprite7_colour"},{"a":42793,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":42795,"t":"code","b":[141,14,208],"m":"sta","o":"vic_sprite7_x"},{"a":42798,"t":"code","b":[141,15,208],"m":"sta","o":"vic_sprite7_y"},{"a":42801,"t":"code","b":[169,59],"m":"lda","o":"#$3B"},{"a":42803,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":42806,"t":"code","b":[96],"m":"rts"},{"a":42807,"l":"colour_box_then_fb_cc","c":"Colour fill through $56ED, then $FB = $CC. Called from $6ECA.","t":"code","b":[32,237,86],"m":"jsr","oa":22253,"o":"fill_colour_rect","x":[28362]},{"a":42810,"t":"code","b":[169,204],"m":"lda","o":"#$CC"},{"a":42812,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":42814,"t":"code","b":[96],"m":"rts"},{"a":42815,"l":"irq_flash_sprite7","c":"Part of room 1's IRQ (from $AACF and $AAEC): counts frames in $64F0 and, in the frames whose bit 3 is set, flips sprite 7's frame ($07FF) between $3B and $3C every frame; then JMP $1C03, the rest of the IRQ at $1C00.","t":"code","b":[238,240,100],"m":"inc","oa":25840,"o":"sprite0_anim_count","x":[43727,43756]},{"a":42818,"t":"code","b":[173,240,100],"m":"lda","oa":25840,"o":"sprite0_anim_count"},{"a":42821,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":42823,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":42825,"t":"code","b":[208,20],"m":"bne","oa":42847,"o":"b_A75F"},{"a":42827,"t":"code","b":[173,255,7],"m":"lda","oa":2047,"o":"spr7_pointer"},{"a":42830,"t":"code","b":[201,59],"m":"cmp","o":"#$3B"},{"a":42832,"t":"code","b":[208,8],"m":"bne","oa":42842,"o":"b_A75A"},{"a":42834,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":42836,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":42839,"t":"code","b":[76,3,28],"m":"jmp","oa":7171,"o":"room1_move_guardians"},{"a":42842,"l":"b_A75A","t":"code","b":[169,59],"m":"lda","o":"#$3B","x":[42832]},{"a":42844,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":42847,"l":"b_A75F","t":"code","b":[76,3,28],"m":"jmp","oa":7171,"o":"room1_move_guardians","x":[42825]},{"a":42850,"t":"gap","n":1},{"a":42851,"l":"draw_keyhole","c":"Draws the keyhole tile ($AC00, 3x3 cells) at column X, row Y with cell colour $0C. Called from $18F2, $8FAC, $AAF4, $B1F7.","t":"code","b":[169,12],"m":"lda","o":"#$0C","x":[6386,36780,43764,45559]},{"a":42853,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42855,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42857,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42859,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":42861,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42863,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":42865,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42867,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":42870,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42872,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42874,"t":"code","b":[169,172],"m":"lda","o":"#$AC"},{"a":42876,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42878,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":42881,"t":"code","b":[96],"m":"rts"},{"a":42882,"l":"draw_switch","c":"Draws the switch tile ($AC48, 1x2) at X, Y with the cell colour in A. Called from $1950, $1A3C and $B1BD-$B254.","t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo","x":[6480,6716,45501,45580,45601,45652]},{"a":42884,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42886,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42888,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":42890,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42892,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":42894,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42896,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":42899,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":42901,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42903,"t":"code","b":[169,172],"m":"lda","o":"#$AC"},{"a":42905,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42907,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":42910,"t":"code","b":[96],"m":"rts"},{"a":42911,"l":"draw_cone_down","c":"Draws the 2x3 tile at $AC58 (a striped cone, point down, over a ball) at X, Y with the colour in A. Called from $187F, $1891, $B1C6-$B2BD.","t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo","x":[6271,6289,45510,45666,45705,45757]},{"a":42913,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42915,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42917,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":42919,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42921,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":42923,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42925,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":42928,"t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":42930,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42932,"t":"code","b":[169,172],"m":"lda","o":"#$AC"},{"a":42934,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42936,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":42939,"t":"code","b":[96],"m":"rts"},{"a":42940,"l":"draw_cone_up","c":"Draws the 2x3 tile at $AC78 (a ball over a striped cone, point up) at X, Y with the colour in A. Called from $1888, $189A, $B1CF-$B2C6.","t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo","x":[6280,6298,45519,45675,45714,45766]},{"a":42942,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42944,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42946,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":42948,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42950,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":42952,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42954,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":42957,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":42959,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42961,"t":"code","b":[169,172],"m":"lda","o":"#$AC"},{"a":42963,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42965,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":42968,"t":"code","b":[96],"m":"rts"},{"a":42969,"l":"draw_round_object","c":"Draws the 2x2 tile at $ACA8 (a round object, empty top row) at X, Y with colour $2C. Called from $108E, $1A2E, $4746, $583B, $6747, $6F7E and others.","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[4238,6702,6724,18246,18253,20213,22587,22601,26439,26446,28542]},{"a":42971,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42973,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42975,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42977,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":42979,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":42981,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":42983,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":42985,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":42988,"t":"code","b":[169,168],"m":"lda","o":"#$A8"},{"a":42990,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":42992,"t":"code","b":[169,172],"m":"lda","o":"#$AC"},{"a":42994,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":42996,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":42999,"t":"code","b":[96],"m":"rts"},{"a":43000,"l":"draw_oval_object","c":"Draws the 2x1 tile at $ACC8 (an oval) at X, Y with colour $1C. Called from $1095, $1A4B, $4754, $5842, $6755, $6EE4 and others.","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[4245,6731,18260,18267,20220,22594,22608,26453,26460,28388,28549]},{"a":43002,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43004,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43006,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43008,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":43010,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43012,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43014,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43016,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43019,"t":"code","b":[169,200],"m":"lda","o":"#$C8"},{"a":43021,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43023,"t":"code","b":[169,172],"m":"lda","o":"#$AC"},{"a":43025,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43027,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43030,"t":"code","b":[96],"m":"rts"},{"a":43031,"l":"reenter_loop_42ef","c":"Table of room-loop re-entries, six bytes each: JSR $A84E (display on) and JMP to a room's loop: $A817 $42EF, $A81D $4910, $A823 $5A60, $A829 $6220, $A82F $6A20, $A835 $76B0, $A83B $9320, $A841 $86B0, $A847 $51F4; $A85B $8410 after the gap. Each room loop ends by jumping to its own entry, and several set-ups enter their loop through it. $A817 itself is reached from $1BFC, $4601 and $4609.","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[7164,17921,17929]},{"a":43034,"t":"code","b":[76,239,66],"m":"jmp","oa":17135,"o":"room1_main_loop"},{"a":43037,"l":"reenter_loop_4910","c":"JSR $A84E and JMP $4910 (from $48AB).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[18603]},{"a":43040,"t":"code","b":[76,16,73],"m":"jmp","oa":18704,"o":"room3_main_loop"},{"a":43043,"l":"reenter_loop_5a60","c":"JSR $A84E and JMP $5A60 (from $5BBC, $5BC4, $B8B4).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[23484,23492,47284]},{"a":43046,"t":"code","b":[76,96,90],"m":"jmp","oa":23136,"o":"room5_main_loop"},{"a":43049,"l":"reenter_loop_6220","c":"JSR $A84E and JMP $6220 (from $637C, $6384, $712D).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[25468,25476,28973]},{"a":43052,"t":"code","b":[76,32,98],"m":"jmp","oa":25120,"o":"room6_main_loop"},{"a":43055,"l":"reenter_loop_6a20","c":"JSR $A84E and JMP $6A20 (from $17CC, $17D4, $6DBB, $6DD2, $7095, $7137).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[6092,6100,28091,28114,28821,28983]},{"a":43058,"t":"code","b":[76,32,106],"m":"jmp","oa":27168,"o":"room8_main_loop"},{"a":43061,"l":"reenter_loop_76b0","c":"JSR $A84E and JMP $76B0 (from $75E4, $780C, $7814).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[30180,30732,30740]},{"a":43064,"t":"code","b":[76,176,118],"m":"jmp","oa":30384,"o":"room9_main"},{"a":43067,"l":"reenter_loop_9320","c":"JSR $A84E and JMP $9320, the loop of rooms $100C = 4 and 7 (from $947C, $9484).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[38012,38020]},{"a":43070,"t":"code","b":[76,32,147],"m":"jmp","oa":37664,"o":"room47_loop"},{"a":43073,"l":"reenter_loop_86b0","c":"JSR $A84E and JMP $86B0 (from $865A, $880C, $8814).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[34394,34828,34836]},{"a":43076,"t":"code","b":[76,176,134],"m":"jmp","oa":34480,"o":"room11_loop"},{"a":43079,"l":"reenter_loop_51f4","c":"JSR $A84E and JMP $51F4 (from $5105, $566C, $5674).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[20741,22124,22132]},{"a":43082,"t":"code","b":[76,244,81],"m":"jmp","oa":20980,"o":"room2_main_loop"},{"a":43085,"t":"gap","n":1},{"a":43086,"l":"display_on_if_off","c":"If the display is off ($D011 bit 4 clear), turns it on through $A4FD (with the room redraw).","t":"code","b":[173,17,208],"m":"lda","o":"vic_control1","x":[43031,43037,43043,43049,43055,43061,43067,43073,43079,43099]},{"a":43089,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":43091,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":43093,"t":"code","b":[240,3],"m":"beq","oa":43098,"o":"r_A85A"},{"a":43095,"t":"code","b":[32,253,164],"m":"jsr","oa":42237,"o":"display_toggle"},{"a":43098,"l":"r_A85A","t":"code","b":[96],"m":"rts","x":[43093]},{"a":43099,"l":"reenter_loop_8410","c":"JSR $A84E and JMP $8410 (from $8450, $8470).","t":"code","b":[32,78,168],"m":"jsr","oa":43086,"o":"display_on_if_off","x":[33872,33904]},{"a":43102,"t":"code","b":[76,16,132],"m":"jmp","oa":33808,"o":"room10_loop"},{"a":43105,"t":"gap","n":1},{"a":43106,"l":"display_toggle_if_frame_32","c":"If Mr Hat's frame ($07FC) is $32 or $33, toggles the display ($A4FD); then JMP $7440 (from $7434).","t":"code","b":[173,252,7],"m":"lda","oa":2044,"o":"hat_sprite_pointer","x":[29748]},{"a":43109,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":43111,"t":"code","b":[240,7],"m":"beq","oa":43120,"o":"b_A870"},{"a":43113,"t":"code","b":[201,51],"m":"cmp","o":"#$33"},{"a":43115,"t":"code","b":[240,3],"m":"beq","oa":43120,"o":"b_A870"},{"a":43117,"t":"code","b":[76,64,116],"m":"jmp","oa":29760,"o":"room9_enter"},{"a":43120,"l":"b_A870","t":"code","b":[32,253,164],"m":"jsr","oa":42237,"o":"display_toggle","x":[43111,43115]},{"a":43123,"t":"code","b":[76,64,116],"m":"jmp","oa":29760,"o":"room9_enter"},{"a":43126,"t":"gap","n":1},{"a":43127,"l":"hat_death","c":"Mr Hat's death: keeps his Y in $ABFF, swaps in the death shape ($1DDD: frame $27, shape $ACD8 copied to $09C0), lets him sink to the floor ($A8A0) unless his frame was $32/$33, flashes and dissolves him ($A92D), hides sprite 4 and ends with $A8D6. Its first byte is a switch: $1255 writes $60 (RTS) here and into $4C52, so he cannot die, and $BF4F writes $AD back; $4CC7, $B530 and $BF30 read it (and the unused copy at $1265). Called from $4C52 (the kill on collision), $4CD2 (room 3's ladder guardian), $1D50, $55F5, $BB35-$BB84.","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[4693,4709,4742,7504,19538,19655,19666,22005,46384,47925,47947,47982,48004,48944,48977]},{"a":43130,"t":"code","b":[141,255,171],"m":"sta","oa":44031,"o":"death_saved_y"},{"a":43133,"t":"code","b":[32,221,29],"m":"jsr","oa":7645,"o":"show_death_frame"},{"a":43136,"t":"code","b":[173,5,30],"m":"lda","oa":7685,"o":"death_saved_frame"},{"a":43139,"t":"code","b":[234],"m":"nop"},{"a":43140,"t":"code","b":[234],"m":"nop"},{"a":43141,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":43143,"t":"code","b":[240,7],"m":"beq","oa":43152,"o":"b_A890"},{"a":43145,"t":"code","b":[201,51],"m":"cmp","o":"#$33"},{"a":43147,"t":"code","b":[240,3],"m":"beq","oa":43152,"o":"b_A890"},{"a":43149,"t":"code","b":[32,160,168],"m":"jsr","oa":43168,"o":"hat_sink_to_floor"},{"a":43152,"l":"b_A890","t":"code","b":[32,45,169],"m":"jsr","oa":43309,"o":"hat_flash","x":[43143,43147]},{"a":43155,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":43158,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":43160,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":43163,"t":"code","b":[32,214,168],"m":"jsr","oa":43222,"o":"hat_death_end"},{"a":43166,"t":"code","b":[96],"m":"rts"},{"a":43167,"t":"gap","n":1},{"a":43168,"l":"hat_sink_to_floor","c":"Moves Mr Hat down a pixel at a time ($D009 + 1, a delay $1DF7 each) until he reaches a floor line: $66, $9E or $D6 in the room whose colour cell $0400 is $6E, $66 or $BE elsewhere.","t":"code","b":[173,0,4],"m":"lda","oa":1024,"o":"room_marker_cell","x":[43149]},{"a":43171,"t":"code","b":[201,110],"m":"cmp","o":"#$6E"},{"a":43173,"t":"code","b":[240,21],"m":"beq","oa":43196,"o":"b_A8BC"},{"a":43175,"l":"j_A8A7","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[43192]},{"a":43178,"t":"code","b":[201,190],"m":"cmp","o":"#$BE"},{"a":43180,"t":"code","b":[240,13],"m":"beq","oa":43195,"o":"r_A8BB"},{"a":43182,"t":"code","b":[201,102],"m":"cmp","o":"#$66"},{"a":43184,"t":"code","b":[240,9],"m":"beq","oa":43195,"o":"r_A8BB"},{"a":43186,"t":"code","b":[32,247,29],"m":"jsr","oa":7671,"o":"delay_1df7"},{"a":43189,"t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y"},{"a":43192,"t":"code","b":[76,167,168],"m":"jmp","oa":43175,"o":"j_A8A7"},{"a":43195,"l":"r_A8BB","t":"code","b":[96],"m":"rts","x":[43180,43184]},{"a":43196,"l":"b_A8BC","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[43173,43217]},{"a":43199,"t":"code","b":[201,102],"m":"cmp","o":"#$66"},{"a":43201,"t":"code","b":[240,17],"m":"beq","oa":43220,"o":"r_A8D4"},{"a":43203,"t":"code","b":[201,158],"m":"cmp","o":"#$9E"},{"a":43205,"t":"code","b":[240,13],"m":"beq","oa":43220,"o":"r_A8D4"},{"a":43207,"t":"code","b":[201,214],"m":"cmp","o":"#$D6"},{"a":43209,"t":"code","b":[240,9],"m":"beq","oa":43220,"o":"r_A8D4"},{"a":43211,"t":"code","b":[32,247,29],"m":"jsr","oa":7671,"o":"delay_1df7"},{"a":43214,"t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y"},{"a":43217,"t":"code","b":[76,188,168],"m":"jmp","oa":43196,"o":"b_A8BC"},{"a":43220,"l":"r_A8D4","t":"code","b":[96],"m":"rts","x":[43201,43205,43209]},{"a":43221,"t":"gap","n":1},{"a":43222,"l":"hat_death_end","c":"Restores Mr Hat's Y from $ABFF, reads $D01E to clear the collision latch, then $1D6D in the room whose $0400 is $6E, $1D86 elsewhere (both outside this range).","t":"code","b":[173,255,171],"m":"lda","oa":44031,"o":"death_saved_y","x":[43163]},{"a":43225,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":43228,"t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision"},{"a":43231,"t":"code","b":[173,0,4],"m":"lda","oa":1024,"o":"room_marker_cell"},{"a":43234,"t":"code","b":[201,110],"m":"cmp","o":"#$6E"},{"a":43236,"t":"code","b":[240,4],"m":"beq","oa":43242,"o":"b_A8EA"},{"a":43238,"t":"code","b":[32,134,29],"m":"jsr","oa":7558,"o":"lose_life_upper_marks"},{"a":43241,"t":"code","b":[96],"m":"rts"},{"a":43242,"l":"b_A8EA","t":"code","b":[32,109,29],"m":"jsr","oa":7533,"o":"respawn_at_entry","x":[43236]},{"a":43245,"t":"code","b":[96],"m":"rts"},{"a":43246,"t":"gap","n":2},{"a":43248,"l":"hat_dissolve","c":"Dissolves the death shape: 16 passes, each ANDing four bytes of the sprite at $09C0-$09FF with the raster line ($D012, as a random mask) and waiting about 64 x 256 loops.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[43327]},{"a":43250,"l":"b_A8F2","t":"code","b":[189,192,9],"m":"lda","oa":2496,"o":"spr_27_hat_dying,x","x":[43305]},{"a":43253,"t":"code","b":[45,18,208],"m":"and","o":"vic_raster"},{"a":43256,"t":"code","b":[157,192,9],"m":"sta","oa":2496,"o":"spr_27_hat_dying,x"},{"a":43259,"t":"code","b":[189,208,9],"m":"lda","oa":2512,"o":"f_09D0,x"},{"a":43262,"t":"code","b":[45,18,208],"m":"and","o":"vic_raster"},{"a":43265,"t":"code","b":[157,208,9],"m":"sta","oa":2512,"o":"f_09D0,x"},{"a":43268,"t":"code","b":[189,224,9],"m":"lda","oa":2528,"o":"f_09E0,x"},{"a":43271,"t":"code","b":[45,18,208],"m":"and","o":"vic_raster"},{"a":43274,"t":"code","b":[157,224,9],"m":"sta","oa":2528,"o":"f_09E0,x"},{"a":43277,"t":"code","b":[189,240,9],"m":"lda","oa":2544,"o":"f_09F0,x"},{"a":43280,"t":"code","b":[45,18,208],"m":"and","o":"vic_raster"},{"a":43283,"t":"code","b":[157,240,9],"m":"sta","oa":2544,"o":"f_09F0,x"},{"a":43286,"t":"code","b":[138],"m":"txa"},{"a":43287,"t":"code","b":[72],"m":"pha"},{"a":43288,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":43290,"l":"b_A91A","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[43298]},{"a":43292,"l":"b_A91C","t":"code","b":[200],"m":"iny","x":[43293]},{"a":43293,"t":"code","b":[208,253],"m":"bne","oa":43292,"o":"b_A91C"},{"a":43295,"t":"code","b":[232],"m":"inx"},{"a":43296,"t":"code","b":[224,64],"m":"cpx","o":"#$40"},{"a":43298,"t":"code","b":[208,246],"m":"bne","oa":43290,"o":"b_A91A"},{"a":43300,"t":"code","b":[104],"m":"pla"},{"a":43301,"t":"code","b":[170],"m":"tax"},{"a":43302,"t":"code","b":[232],"m":"inx"},{"a":43303,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":43305,"t":"code","b":[208,199],"m":"bne","oa":43250,"o":"b_A8F2"},{"a":43307,"t":"code","b":[96],"m":"rts"},{"a":43308,"t":"gap","n":1},{"a":43309,"l":"hat_flash","c":"Flashes Mr Hat: 256 changes of his colour ($D02B) with a short delay each, colour $0B again, then the dissolve $A8F0.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[43152]},{"a":43311,"l":"b_A92F","t":"code","b":[238,43,208],"m":"inc","o":"vic_sprite4_colour","x":[43320]},{"a":43314,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":43316,"l":"b_A934","t":"code","b":[200],"m":"iny","x":[43317]},{"a":43317,"t":"code","b":[208,253],"m":"bne","oa":43316,"o":"b_A934"},{"a":43319,"t":"code","b":[232],"m":"inx"},{"a":43320,"t":"code","b":[208,245],"m":"bne","oa":43311,"o":"b_A92F"},{"a":43322,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":43324,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":43327,"t":"code","b":[32,240,168],"m":"jsr","oa":43248,"o":"hat_dissolve"},{"a":43330,"t":"code","b":[96],"m":"rts"},{"a":43331,"t":"gap","n":1},{"a":43332,"l":"sprite0_reenter_lane","c":"Called by the room 1 IRQ ($1C21) when sprite 0 comes back at X = $20: picks its Y by the raster line ($D012 below $60: $94, else $86) and stores A ($D015 with bit 0 set) into $D015.","t":"code","b":[72],"m":"pha","x":[7201]},{"a":43333,"t":"code","b":[173,18,208],"m":"lda","o":"vic_raster"},{"a":43336,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":43338,"t":"code","b":[176,10],"m":"bcs","oa":43350,"o":"b_A956"},{"a":43340,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":43342,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":43345,"t":"code","b":[104],"m":"pla"},{"a":43346,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":43349,"t":"code","b":[96],"m":"rts"},{"a":43350,"l":"b_A956","t":"code","b":[169,134],"m":"lda","o":"#$86","x":[43338]},{"a":43352,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":43355,"t":"code","b":[104],"m":"pla"},{"a":43356,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":43359,"t":"code","b":[96],"m":"rts"},{"a":43360,"l":"sprite1_reenter_lane","c":"Called by the room 1 IRQ ($1C30) when sprite 1 comes back at X = $20: Y = $5C if $D012 is below $88, else $4E, and A into $D015 (bit 1 set).","t":"code","b":[72],"m":"pha","x":[7216]},{"a":43361,"t":"code","b":[173,18,208],"m":"lda","o":"vic_raster"},{"a":43364,"t":"code","b":[201,136],"m":"cmp","o":"#$88"},{"a":43366,"t":"code","b":[176,10],"m":"bcs","oa":43378,"o":"b_A972"},{"a":43368,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":43370,"t":"code","b":[141,3,208],"m":"sta","o":"vic_sprite1_y"},{"a":43373,"t":"code","b":[104],"m":"pla"},{"a":43374,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":43377,"t":"code","b":[96],"m":"rts"},{"a":43378,"l":"b_A972","t":"code","b":[169,78],"m":"lda","o":"#$4E","x":[43366]},{"a":43380,"t":"code","b":[141,3,208],"m":"sta","o":"vic_sprite1_y"},{"a":43383,"t":"code","b":[104],"m":"pla"},{"a":43384,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":43387,"t":"code","b":[96],"m":"rts"},{"a":43388,"l":"hat_in_window","c":"Is Mr Hat at a spot? A = flags, X = left, Y = right edge (exclusive) for $D008 (kept in $1E06/$1E07). $1020 stores A's low nybble in $1009 and returns a high nybble that should say whether to test the X high bit ($10); it reads $400B (always $FC) where it wrote $40BB, so it returns $F0 and the high-bit test at $A986 never runs. Of the 42 calls, 18 pass A = $01, which never asks for the check; 24 pass $10 or $11 ($AB47 passes $10 only after $4610 has moved him across the high bit; on its other path A still holds his X, whose low nybble becomes $1009). 23 of the 24 callers test the X high bit themselves first ($1200): 4 call only on the right half ($8E7C, $B192, $B350, $B37D) and behave the same either way, 19 only on the left half, where they match only because the check never runs. $AB47 is not gated. Carry set if X is in the window and either $1009 = 1 or the stick reads $7D (down).","t":"code","b":[234],"m":"nop","x":[4181,4203,36394,36428,36476,36524,36558,36606,36660,36694,36742,43454,43847,43862,45335,45369,45417,45458,45815,45849,45904,45949,45994,46048,46093,46138,46182,46237,47913,47935,47970,47992,48034,48056,48078,48100,48135,48170,48212,48243,48265,48300]},{"a":43389,"t":"code","b":[32,32,16],"m":"jsr","oa":4128,"o":"set_range_mode"},{"a":43392,"t":"code","b":[234],"m":"nop"},{"a":43393,"t":"code","b":[234],"m":"nop"},{"a":43394,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":43396,"t":"code","b":[208,9],"m":"bne","oa":43407,"o":"b_A98F"},{"a":43398,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":43401,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":43403,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":43405,"t":"code","b":[208,37],"m":"bne","oa":43444,"o":"b_A9B4"},{"a":43407,"l":"b_A98F","t":"code","b":[142,6,30],"m":"stx","oa":7686,"o":"range_lo_or_column","x":[43396]},{"a":43410,"t":"code","b":[140,7,30],"m":"sty","oa":7687,"o":"range_hi_or_row"},{"a":43413,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":43416,"t":"code","b":[205,7,30],"m":"cmp","oa":7687,"o":"range_hi_or_row"},{"a":43419,"t":"code","b":[176,23],"m":"bcs","oa":43444,"o":"b_A9B4"},{"a":43421,"t":"code","b":[205,6,30],"m":"cmp","oa":7686,"o":"range_lo_or_column"},{"a":43424,"t":"code","b":[144,18],"m":"bcc","oa":43444,"o":"b_A9B4"},{"a":43426,"t":"code","b":[173,9,16],"m":"lda","oa":4105,"o":"range_mode_1009"},{"a":43429,"t":"code","b":[234],"m":"nop"},{"a":43430,"t":"code","b":[234],"m":"nop"},{"a":43431,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":43433,"t":"code","b":[240,7],"m":"beq","oa":43442,"o":"b_A9B2"},{"a":43435,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":43438,"t":"code","b":[201,125],"m":"cmp","o":"#$7D"},{"a":43440,"t":"code","b":[208,2],"m":"bne","oa":43444,"o":"b_A9B4"},{"a":43442,"l":"b_A9B2","t":"code","b":[56],"m":"sec","x":[43433]},{"a":43443,"t":"code","b":[96],"m":"rts"},{"a":43444,"l":"b_A9B4","t":"code","b":[24],"m":"clc","x":[43405,43419,43424,43440]},{"a":43445,"t":"code","b":[96],"m":"rts"},{"a":43446,"t":"gap","n":2},{"a":43448,"l":"check_spot_c4_f4","c":"From $1E20: Mr Hat at X $C4-$F3 (no stick needed) and Y = $CC calls $55F5.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[7712]},{"a":43450,"t":"code","b":[162,196],"m":"ldx","o":"#$C4"},{"a":43452,"t":"code","b":[160,244],"m":"ldy","o":"#$F4"},{"a":43454,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":43457,"t":"code","b":[144,13],"m":"bcc","oa":43472,"o":"r_A9D0"},{"a":43459,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":43462,"t":"code","b":[201,204],"m":"cmp","o":"#$CC"},{"a":43464,"t":"code","b":[208,6],"m":"bne","oa":43472,"o":"r_A9D0"},{"a":43466,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":43469,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":43472,"l":"r_A9D0","t":"code","b":[96],"m":"rts","x":[43457,43464]},{"a":43473,"t":"gap","n":1},{"a":43474,"l":"draw_painting","c":"Draws the painting tile ($AD18, 5x4) at column X, row Y with frame colour $9C, then colours its inside: $76 over 3x2 cells and $56 over 3x1 from X+1. $A9D4 takes the colour in A, $A9D6 the colour already in $27.","t":"code","b":[169,156],"m":"lda","o":"#$9C","x":[4156,4497,28556,36959]},{"a":43476,"l":"draw_painting_a","c":"Entry of $A9D2 with the frame colour in A (from $836C, $8377).","t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo","x":[33644,33655]},{"a":43478,"l":"draw_painting_27","c":"Entry of $A9D2 with the frame colour already in $27 (from $7232, $85AD, $95D0 and others).","t":"code","b":[142,6,30],"m":"stx","oa":7686,"o":"range_lo_or_column","x":[29234,29245,34221,34232,38352,38363]},{"a":43481,"t":"code","b":[140,7,30],"m":"sty","oa":7687,"o":"range_hi_or_row"},{"a":43484,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43486,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43488,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":43490,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43492,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":43494,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43496,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43499,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":43501,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43503,"t":"code","b":[169,173],"m":"lda","o":"#$AD"},{"a":43505,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43507,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43510,"t":"code","b":[174,6,30],"m":"ldx","oa":7686,"o":"range_lo_or_column"},{"a":43513,"t":"code","b":[172,7,30],"m":"ldy","oa":7687,"o":"range_hi_or_row"},{"a":43516,"t":"code","b":[232],"m":"inx"},{"a":43517,"t":"code","b":[200],"m":"iny"},{"a":43518,"t":"code","b":[169,118],"m":"lda","o":"#$76"},{"a":43520,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43522,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":43524,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43526,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":43528,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43530,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43533,"t":"code","b":[174,6,30],"m":"ldx","oa":7686,"o":"range_lo_or_column"},{"a":43536,"t":"code","b":[172,7,30],"m":"ldy","oa":7687,"o":"range_hi_or_row"},{"a":43539,"t":"code","b":[232],"m":"inx"},{"a":43540,"t":"code","b":[200],"m":"iny"},{"a":43541,"t":"code","b":[200],"m":"iny"},{"a":43542,"t":"code","b":[169,86],"m":"lda","o":"#$56"},{"a":43544,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43546,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":43548,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43550,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43552,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43554,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43557,"t":"code","b":[96],"m":"rts"},{"a":43558,"l":"draw_television","c":"Draws the television tile ($ADC0, 6x4, 'OK' on its screen) at X, Y with colour $BC. Called from $17E3, $5EE2, $837E.","t":"code","b":[169,188],"m":"lda","o":"#$BC","x":[6115,24290,33662]},{"a":43560,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43562,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43564,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43566,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":43568,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43570,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":43572,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43574,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43577,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":43579,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43581,"t":"code","b":[169,173],"m":"lda","o":"#$AD"},{"a":43583,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43585,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43588,"t":"code","b":[96],"m":"rts"},{"a":43589,"l":"draw_band_top","c":"Draws the 4x1 tile at $AEA0 (a striped band, rounded above) at X, Y with colour $7C. Called from $1810, $84E8.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[6160,34024]},{"a":43591,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43593,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43595,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43597,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":43599,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43601,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43603,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43605,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43608,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":43610,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43612,"t":"code","b":[169,174],"m":"lda","o":"#$AE"},{"a":43614,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43616,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43619,"t":"code","b":[96],"m":"rts"},{"a":43620,"l":"draw_band_bottom","c":"Draws the 4x1 tile at $AEC0 (a striped band, rounded below) at X, Y with colour $7C. Called from $1817, $855E.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[6167,34142]},{"a":43622,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43624,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43626,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43628,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":43630,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43632,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43634,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43636,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43639,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":43641,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43643,"t":"code","b":[169,174],"m":"lda","o":"#$AE"},{"a":43645,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43647,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43650,"t":"code","b":[96],"m":"rts"},{"a":43651,"l":"draw_arrow_up","c":"Draws the 2x1 up-arrow tile ($AE90) at X, Y with the colour in $27. Called from room 1's IRQ ($AACC, $AAE9) and room 11's ($885A, $8877).","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[34906,34935,43724,43753]},{"a":43653,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43655,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43657,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43659,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43662,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":43664,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43666,"t":"code","b":[169,174],"m":"lda","o":"#$AE"},{"a":43668,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43670,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43673,"t":"code","b":[96],"m":"rts"},{"a":43674,"l":"draw_arrow_down","c":"Draws the 2x1 down-arrow tile ($AE80) at X, Y with the colour in $27. Called from room 1's IRQ ($AAC1, $AADE) and room 11's ($884F, $886C).","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[34895,34924,43713,43742]},{"a":43676,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43678,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43680,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43682,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43685,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":43687,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43689,"t":"code","b":[169,174],"m":"lda","o":"#$AE"},{"a":43691,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43693,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43696,"t":"code","b":[96],"m":"rts"},{"a":43697,"t":"gap","n":1},{"a":43698,"l":"irq_room1","c":"The play IRQ installed in room 1 ($0314 = $1C00 in the room 1 snapshot; $1C00 jumps here). When sprite 1's X ($D002) is $80 redraws the arrows at column 35, rows 3 (down, $AA9A) and 20 (up, $AA83) with cell colour $DC; when it is 0, with $4C. Then $A73F (sprite 7's flashing) and back to $1C03.","t":"code","b":[173,2,208],"m":"lda","o":"vic_sprite1_x","x":[7168]},{"a":43701,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":43703,"t":"code","b":[208,25],"m":"bne","oa":43730,"o":"b_AAD2"},{"a":43705,"t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":43707,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":43709,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":43711,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43713,"t":"code","b":[32,154,170],"m":"jsr","oa":43674,"o":"draw_arrow_down"},{"a":43716,"t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":43718,"t":"code","b":[160,20],"m":"ldy","o":"#$14"},{"a":43720,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":43722,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43724,"t":"code","b":[32,131,170],"m":"jsr","oa":43651,"o":"draw_arrow_up"},{"a":43727,"t":"code","b":[76,63,167],"m":"jmp","oa":42815,"o":"irq_flash_sprite7"},{"a":43730,"l":"b_AAD2","t":"code","b":[201,0],"m":"cmp","o":"#$00","x":[43703]},{"a":43732,"t":"code","b":[208,22],"m":"bne","oa":43756,"o":"b_AAEC"},{"a":43734,"t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":43736,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":43738,"t":"code","b":[169,76],"m":"lda","o":"#$4C"},{"a":43740,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43742,"t":"code","b":[32,154,170],"m":"jsr","oa":43674,"o":"draw_arrow_down"},{"a":43745,"t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":43747,"t":"code","b":[160,20],"m":"ldy","o":"#$14"},{"a":43749,"t":"code","b":[169,76],"m":"lda","o":"#$4C"},{"a":43751,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43753,"t":"code","b":[32,131,170],"m":"jsr","oa":43651,"o":"draw_arrow_up"},{"a":43756,"l":"b_AAEC","t":"code","b":[76,63,167],"m":"jmp","oa":42815,"o":"irq_flash_sprite7","x":[43732]},{"a":43759,"t":"gap","n":1},{"a":43760,"l":"keyhole_and_pause","c":"From $44C8: draws the keyhole at (7,18) ($A763), colours 3x2 cells at (3,19) with $50, then waits: $1008 counts 1 to 7, 65,536 loops each.","t":"code","b":[162,7],"m":"ldx","o":"#$07","x":[17608]},{"a":43762,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":43764,"t":"code","b":[32,99,167],"m":"jsr","oa":42851,"o":"draw_keyhole"},{"a":43767,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":43769,"t":"code","b":[160,19],"m":"ldy","o":"#$13"},{"a":43771,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":43773,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43775,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":43777,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43779,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":43781,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43783,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43786,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43788,"t":"code","b":[141,8,16],"m":"sta","oa":4104,"o":"delay_count_1008"},{"a":43791,"l":"b_AB0F","t":"code","b":[238,8,16],"m":"inc","oa":4104,"o":"delay_count_1008","x":[43809]},{"a":43794,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":43796,"l":"b_AB14","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[43802]},{"a":43798,"l":"b_AB16","t":"code","b":[200],"m":"iny","x":[43799]},{"a":43799,"t":"code","b":[208,253],"m":"bne","oa":43798,"o":"b_AB16"},{"a":43801,"t":"code","b":[232],"m":"inx"},{"a":43802,"t":"code","b":[208,248],"m":"bne","oa":43796,"o":"b_AB14"},{"a":43804,"t":"code","b":[173,8,16],"m":"lda","oa":4104,"o":"delay_count_1008"},{"a":43807,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":43809,"t":"code","b":[208,236],"m":"bne","oa":43791,"o":"b_AB0F"},{"a":43811,"t":"code","b":[96],"m":"rts"},{"a":43812,"l":"room_spots_ab24","c":"From $4AD0: $ABCE ($6CA4, then Mr Hat's X); X = $FF or 0 moves him across the X high bit ($4610) and sets A = $10. Then: at X $20-$2F, X - 1 (after a crossing, A = $10, only while pulling down; otherwise A still holds his X, so the stick is needed except at X $21, whose low nybble is 1); at X $80-$AF with Y = $5C, the kill ($4C52).","t":"code","b":[32,206,171],"m":"jsr","oa":43982,"o":"call_6ca4_get_x","x":[19152]},{"a":43815,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":43817,"t":"code","b":[208,6],"m":"bne","oa":43825,"o":"b_AB31"},{"a":43819,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":43822,"t":"code","b":[76,65,171],"m":"jmp","oa":43841,"o":"j_AB41"},{"a":43825,"l":"b_AB31","t":"code","b":[201,0],"m":"cmp","o":"#$00","x":[43817]},{"a":43827,"t":"code","b":[208,14],"m":"bne","oa":43843,"o":"b_AB43"},{"a":43829,"t":"code","b":[32,16,70],"m":"jsr","oa":17936,"o":"mrhat_cross_x256"},{"a":43832,"t":"code","b":[76,65,171],"m":"jmp","oa":43841,"o":"j_AB41"},{"a":43835,"l":"dead_ab3b","c":"Unreachable: LDA #$FE / STA $D008 / RTS after the JMP at $AB38.","t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":43837,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":43840,"t":"code","b":[96],"m":"rts"},{"a":43841,"l":"j_AB41","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[43822,43832]},{"a":43843,"l":"b_AB43","t":"code","b":[162,32],"m":"ldx","o":"#$20","x":[43827]},{"a":43845,"t":"code","b":[160,48],"m":"ldy","o":"#$30"},{"a":43847,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":43850,"t":"code","b":[144,4],"m":"bcc","oa":43856,"o":"b_AB50"},{"a":43852,"t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x"},{"a":43855,"t":"code","b":[96],"m":"rts"},{"a":43856,"l":"b_AB50","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[43850]},{"a":43858,"t":"code","b":[162,128],"m":"ldx","o":"#$80"},{"a":43860,"t":"code","b":[160,176],"m":"ldy","o":"#$B0"},{"a":43862,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":43865,"t":"code","b":[144,11],"m":"bcc","oa":43878,"o":"b_AB66"},{"a":43867,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":43870,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":43872,"t":"code","b":[208,4],"m":"bne","oa":43878,"o":"b_AB66"},{"a":43874,"t":"code","b":[32,82,76],"m":"jsr","oa":19538,"o":"lose_life"},{"a":43877,"t":"code","b":[96],"m":"rts"},{"a":43878,"l":"b_AB66","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[43865,43872]},{"a":43881,"t":"code","b":[96],"m":"rts"},{"a":43882,"t":"gap","n":6},{"a":43888,"l":"draw_plant","c":"Draws the plant tile ($AEE0, 3x3) at X, Y with colour $DC; $AB74 takes the colour in $27. Called from $4769, $5FAA, $66EC, $7244, $8565 and others.","t":"code","b":[169,220],"m":"lda","o":"#$DC","x":[18281,18295,24490,26348,29252,34149,34167]},{"a":43890,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43892,"l":"draw_plant_27","c":"Entry of $AB70 with the colour already in $27 (from $585B, $95E6).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[22619,38374]},{"a":43894,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43896,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":43898,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43900,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":43902,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43904,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43907,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":43909,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43911,"t":"code","b":[169,174],"m":"lda","o":"#$AE"},{"a":43913,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43915,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43918,"t":"code","b":[96],"m":"rts"},{"a":43919,"l":"draw_pot","c":"Draws the 3x1 pot tile ($AF28, under the plant) at X, Y with colour $9C; $AB93 takes the colour in $27 (from $5866, $8570, $8582, $95F1), $AB97 the colour in $27 without clearing $28 (the size set-up on).","t":"code","b":[169,156],"m":"lda","o":"#$9C","x":[18288,26355,29259]},{"a":43921,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43923,"l":"draw_pot_27","c":"Entry of $AB8F with the colour already in $27.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[22630,34160,34178,38385]},{"a":43925,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43927,"l":"draw_pot_size","c":"Entry of $AB8F from the size set-up on (from $4782, $5FB5).","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[18306,24501]},{"a":43929,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43931,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43933,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43935,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43938,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":43940,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43942,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":43944,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43946,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43949,"t":"code","b":[96],"m":"rts"},{"a":43950,"l":"draw_drawers","c":"Draws the chest of drawers ($AF40, 4x4) at X, Y with colour $9C; $ABB2 with the colour already in $27 ($6683), $ABB6 with it in $27 and $28 not cleared ($95C5). Called from $4789, $57F8.","t":"code","b":[169,156],"m":"lda","o":"#$9C","x":[18313,22520]},{"a":43952,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43954,"l":"draw_drawers_a","c":"Entry of $ABAE with the colour already in $27 (the caller at $6683 stores $2C there first).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[26243]},{"a":43956,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43958,"l":"draw_drawers_27","c":"Entry of $ABAE with the colour already in $27.","t":"code","b":[169,4],"m":"lda","o":"#$04","x":[38341]},{"a":43960,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":43962,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":43964,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":43966,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":43969,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":43971,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":43973,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":43975,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":43977,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":43980,"t":"code","b":[96],"m":"rts"},{"a":43981,"t":"gap","n":1},{"a":43982,"l":"call_6ca4_get_x","c":"JSR $6CA4, then A = Mr Hat's X ($D008). Called from $AB24 and $6CF3.","t":"code","b":[32,164,108],"m":"jsr","oa":27812,"o":"drift_push","x":[27891,43812]},{"a":43985,"t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x"},{"a":43988,"t":"code","b":[96],"m":"rts"},{"a":43989,"l":"colour_cells_and_dot","c":"From $8395: colours the caller's cells ($A67F), then one cell at (15,18) with $8C.","t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells","x":[33685]},{"a":43992,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":43994,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":43996,"t":"code","b":[169,140],"m":"lda","o":"#$8C"},{"a":43998,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":44000,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44002,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":44004,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":44006,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":44008,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":44010,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":44012,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":44015,"t":"code","b":[96],"m":"rts"},{"a":44016,"l":"zero_abf0","c":"$ABF0-$ABFE: zero, unused.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44024,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":44031,"l":"death_saved_y","c":"Mr Hat's Y ($D009) kept during the death sequence: written by $A87A, read back by $A8D6.","t":"byte","b":[180],"x":[43130,43222]},{"a":44032,"l":"tile_keyhole","c":"Tile graphics, row-major, 8 bytes a cell, drawn by $A690. $AC00: the keyhole, 3x3 cells ($AC00-$AC47), by $A763.","t":"byte","b":[255,255,252,249,243,243,243,249]},{"a":44040,"t":"byte","b":[255,255,31,206,230,231,231,207]},{"a":44048,"t":"byte","b":[128,128,128,0,0,128,128,128]},{"a":44056,"t":"byte","b":[252,255,254,254,254,255,0,0]},{"a":44064,"t":"byte","b":[31,127,63,63,63,127,0,0]},{"a":44072,"t":"byte","b":[128,128,128,128,128,128,0,0]},{"a":44080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44104,"l":"tile_switch","c":"The switch, 1x2 cells ($AC48-$AC57), by $A782.","t":"byte","b":[255,255,255,255,195,195,195,195]},{"a":44112,"t":"byte","b":[195,195,195,195,255,255,255,255]},{"a":44120,"l":"tile_cone_down","c":"2x3 cells ($AC58-$AC87): a striped cone, point down, over a ball, by $A79F; its middle row ($AC68) also by $BF7E.","t":"byte","b":[255,127,0,127,63,0,31,15]},{"a":44128,"t":"byte","b":[255,254,0,254,252,0,248,240]},{"a":44136,"t":"byte","b":[0,3,31,31,15,7,3,0]},{"a":44144,"t":"byte","b":[0,192,248,248,240,224,192,0]},{"a":44152,"l":"tile_cone_up","c":"2x3 cells ($AC78-$ACA7), overlapping the end of $AC58: a ball over a cone, point up, by $A7BC; $AC88 (2x1) also by $BF9D.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44168,"t":"byte","b":[0,3,7,15,31,31,3,0]},{"a":44176,"t":"byte","b":[0,192,224,240,248,248,192,0]},{"a":44184,"t":"byte","b":[15,31,0,63,127,0,127,255]},{"a":44192,"t":"byte","b":[240,248,0,252,254,0,254,255]},{"a":44200,"l":"tile_round_object","c":"2x2 cells ($ACA8-$ACC7): a round object, by $A7D9.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44216,"t":"byte","b":[7,31,63,127,255,255,255,110]},{"a":44224,"t":"byte","b":[224,248,140,198,231,231,207,250]},{"a":44232,"l":"tile_oval","c":"2x1 cells ($ACC8-$ACD7): an oval, by $A7F8.","t":"byte","b":[0,15,63,127,127,127,127,63]},{"a":44240,"t":"byte","b":[0,240,252,254,254,254,254,252]},{"a":44248,"l":"sprite_hat_death","c":"64 bytes ($ACD8-$AD17): the multicolour sprite shape of Mr Hat dying, copied to $09C0 (frame $27) by $1DDD (LDA $ACD8,X at $1DE5).","t":"byte","b":[0,0,0,2,170,128,10,170],"x":[7653]},{"a":44256,"t":"byte","b":[160,10,170,160,10,170,160,10]},{"a":44264,"t":"byte","b":[170,160,10,170,160,10,170,160]},{"a":44272,"t":"byte","b":[0,0,0,42,170,168,42,170]},{"a":44280,"t":"byte","b":[168,0,0,0,0,0,0,0]},{"a":44288,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44312,"l":"tile_painting","c":"5x4 cells ($AD18-$ADB7): the painting, by $A9D2. $ADB8-$ADBF are zero, not part of any tile drawn by a found caller.","t":"byte","b":[0,0,60,62,63,63,28,13]},{"a":44320,"t":"byte","b":[0,0,60,126,255,255,0,255]},{"a":44328,"t":"byte","b":[0,0,60,102,231,255,0,255]},{"a":44336,"t":"byte","b":[0,0,60,126,255,255,0,255]},{"a":44344,"t":"byte","b":[0,0,60,124,252,252,56,176]},{"a":44352,"t":"byte","b":[13,29,61,61,61,61,29,13]},{"a":44360,"t":"byte","b":[0,0,7,15,15,15,15,7]},{"a":44368,"t":"byte","b":[0,0,128,192,192,192,192,128]},{"a":44376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44384,"t":"byte","b":[176,184,188,188,188,188,184,176]},{"a":44392,"t":"byte","b":[13,29,61,61,61,61,29,13]},{"a":44400,"t":"byte","b":[0,30,63,255,255,255,255,255]},{"a":44408,"t":"byte","b":[12,31,63,255,255,255,255,255]},{"a":44416,"t":"byte","b":[124,255,255,255,255,255,255,255]},{"a":44424,"t":"byte","b":[176,184,188,188,188,188,184,176]},{"a":44432,"t":"byte","b":[13,28,63,63,62,60,0,0]},{"a":44440,"t":"byte","b":[255,0,255]},{"a":44443,"l":"painting_patch_1","c":"A byte inside the painting tile (row 3, $AD18 + $83): $FF in the image. $8179 would overwrite it with $EE (together with $AD9E, $00 -> $EE), changing the picture of paintings drawn later, but $8179 lies in $816E, which has no caller found; in every snapshot (handover, play-room1, room2-room11) it still holds $FF. The tile continues to $ADB7.","t":"byte","b":[255,126,60],"x":[33145]},{"a":44446,"l":"painting_patch_2","c":"Second byte of the painting tile that $817C would change to $EE (in the image $00); $817C is in $816E, which has no caller found, and every snapshot still holds $00. The rest of the painting tile, to $ADB7.","t":"byte","b":[0,0,255,0,255,255,126,60],"x":[33148]},{"a":44454,"t":"byte","b":[0,0,255,0,255,255,126,60]},{"a":44462,"t":"byte","b":[0,0,176,56,252,252,124,60]},{"a":44470,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44478,"t":"byte","b":[0,0]},{"a":44480,"l":"tile_television","c":"6x4 cells ($ADC0-$AE7F): the television with 'OK' on its screen, by $AA26.","t":"byte","b":[0,0,3,31,31,31,60,60]},{"a":44488,"t":"byte","b":[0,0,255,255,255,255,0,0]},{"a":44496,"t":"byte","b":[0,0,255,255,255,255,0,0]},{"a":44504,"t":"byte","b":[0,0,255,255,255,255,0,0]},{"a":44512,"t":"byte","b":[0,0,192,248,248,248,60,60]},{"a":44520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44528,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":44536,"t":"byte","b":[255,255,255,248,247,247,247,247]},{"a":44544,"t":"byte","b":[255,255,255,123,187,186,185,186]},{"a":44552,"t":"byte","b":[255,255,255,127,127,255,255,255]},{"a":44560,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":44568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44576,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":44584,"t":"byte","b":[247,248,255,255,255,255,255,255]},{"a":44592,"t":"byte","b":[187,107,255,255,255,255,255,255]},{"a":44600,"t":"byte","b":[127,111,255,255,255,255,255,255]},{"a":44608,"t":"byte","b":[60,36,36,60,36,36,60,63]},{"a":44616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44624,"t":"byte","b":[60,60,31,31,31,3,0,0]},{"a":44632,"t":"byte","b":[0,0,255,153,153,255,0,0]},{"a":44640,"t":"byte","b":[0,0,255,152,152,255,0,0]},{"a":44648,"t":"byte","b":[0,0,255,0,0,255,0,0]},{"a":44656,"t":"byte","b":[63,63,248,248,248,192,0,0]},{"a":44664,"t":"byte","b":[130,77,49,2,12,16,39,31]},{"a":44672,"l":"tile_arrow_down","c":"2x1 cells ($AE80-$AE8F): an arrow pointing down, by $AA9A at column 35, row 3, from the IRQs of room 1 ($AAB2) and room 11 ($8840).","t":"byte","b":[63,63,31,0,15,7,3,0]},{"a":44680,"t":"byte","b":[252,252,248,0,240,224,192,0]},{"a":44688,"l":"tile_arrow_up","c":"2x1 cells ($AE90-$AE9F): an arrow pointing up, drawn by $AA83 at column 35, row 20, from the IRQs of room 1 ($AAB2) and room 11 ($8840).","t":"byte","b":[0,3,7,15,0,31,63,63]},{"a":44696,"t":"byte","b":[0,192,224,240,0,248,252,252]},{"a":44704,"l":"tile_band_top","c":"4x1 cells ($AEA0-$AEBF): a striped band rounded above, by $AA45.","t":"byte","b":[1,3,15,0,255,255,0,255]},{"a":44712,"t":"byte","b":[255,255,255,0,255,255,0,255]},{"a":44720,"t":"byte","b":[255,255,255,0,255,255,0,255]},{"a":44728,"t":"byte","b":[128,192,240,0,255,255,0,255]},{"a":44736,"l":"tile_band_bottom","c":"4x1 cells ($AEC0-$AEDF): a striped band rounded below, by $AA64.","t":"byte","b":[255,0,255,255,0,15,3,1]},{"a":44744,"t":"byte","b":[255,0,255,255,0,255,255,255]},{"a":44752,"t":"byte","b":[255,0,255,255,0,255,255,255]},{"a":44760,"t":"byte","b":[255,0,255,255,0,240,192,128]},{"a":44768,"l":"tile_plant","c":"3x3 cells ($AEE0-$AF27): the plant, by $AB70.","t":"byte","b":[0,0,0,0,0,0,3,7]},{"a":44776,"t":"byte","b":[0,0,0,56,124,255,255,255]},{"a":44784,"t":"byte","b":[0,0,0,0,0,0,192,224]},{"a":44792,"t":"byte","b":[15,63,63,55,59,58,61,30]},{"a":44800,"t":"byte","b":[126,126,125,155,231,247,238,244]},{"a":44808,"t":"byte","b":[240,252,220,220,188,108,156,248]},{"a":44816,"t":"byte","b":[30,15,15,15,7,1,0,0]},{"a":44824,"t":"byte","b":[243,47,200,231,239,255,126,0]},{"a":44832,"t":"byte","b":[248,112,240,240,224,128,0,0]},{"a":44840,"l":"tile_pot","c":"3x1 cells ($AF28-$AF3F): the pot under the plant, by $AB8F.","t":"byte","b":[31,31,31,31,15,15,7,7]},{"a":44848,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":44856,"t":"byte","b":[248,248,248,248,240,240,224,224]},{"a":44864,"l":"tile_drawers","c":"4x4 cells ($AF40-$AFBF): the chest of drawers, by $ABAE; $BD19, $BD38 and $BD57 draw its first bytes as narrower 2x2, 2x3 and 3x3 tiles.","t":"byte","b":[0,0,255,255,128,191,160,163]},{"a":44872,"t":"byte","b":[0,0,255,255,0,255,0,255]},{"a":44880,"t":"byte","b":[0,0,255,255,0,255,0,255]},{"a":44888,"t":"byte","b":[0,0,255,255,1,253,5,197]},{"a":44896,"t":"byte","b":[167,167,163,160,191,160,163,167]},{"a":44904,"t":"byte","b":[254,254,255,0,255,0,255,254]},{"a":44912,"t":"byte","b":[127,127,255,0,255,0,255,127]},{"a":44920,"t":"byte","b":[229,229,197,5,253,5,197,229]},{"a":44928,"t":"byte","b":[167,163,160,191,160,163,167,167]},{"a":44936,"t":"byte","b":[254,255,0,255,0,255,254,254]},{"a":44944,"t":"byte","b":[127,255,0,255,0,255,127,127]},{"a":44952,"t":"byte","b":[229,197,5,253,5,197,229,229]},{"a":44960,"t":"byte","b":[163,160,191,191,128,255,31,15]},{"a":44968,"t":"byte","b":[255,0,255,255,0,255,128,0]},{"a":44976,"t":"byte","b":[255,0,255,255,0,255,1,0]},{"a":44984,"t":"byte","b":[197,5,253,253,1,255,248,240]},{"a":44992,"l":"tile_floor_lamp","c":"2x3 cells ($AFC0-$AFEF): a lamp (shade, pole, base), by $B85C.","t":"byte","b":[31,31,63,63,127,0,255,255]},{"a":45000,"t":"byte","b":[248,248,252,252,254,0,255,255]},{"a":45008,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":45016,"t":"byte","b":[128,128,128,128,128,128,128,128]},{"a":45024,"t":"byte","b":[1,1,1,1,1,31,127,127]},{"a":45032,"t":"byte","b":[128,128,128,128,128,248,254,254]},{"a":45040,"l":"tile_hanging_lamp","c":"3x3 cells ($AFF0-$B037, crossing into $B000): a lamp hanging from a bar, by $B821.","t":"byte","b":[0,0,0,0,0,0,255,255]},{"a":45048,"t":"byte","b":[0,0,0,0,0,0,255,255]},{"a":45056,"l":"gfx_lamp_tail","c":"Graphics, bitmap cells, 8 bytes each, rows of cells laid out left to right: the last 56 bytes ($B000-$B037) of the 3x3-cell object that starts at $AFF0 and is drawn by draw_obj_3x3_aff0 ($B800). The shape is a bar across the top, a thin stem and a flared foot (it looks like a hanging lamp; not confirmed on screen).","t":"byte","b":[0,0,0,0,0,0,255,255]},{"a":45064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45072,"t":"byte","b":[60,60,60,60,60,60,60,24]},{"a":45080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45088,"t":"byte","b":[0,0,0,0,0,1,1,3]},{"a":45096,"t":"byte","b":[60,126,126,255,255,153,24,189]},{"a":45104,"t":"byte","b":[0,0,0,0,0,128,128,192]},{"a":45112,"l":"gfx_unused_b038","c":"56 bytes of cell graphics after the $AFF0 object: two narrow goblet-like shapes, one cell wide. No pointer to $B038-$B06F was found (searched: absolute operands, lo/hi immediates loaded into the draw pointer $27/$28, raw byte pairs); possibly unused.","t":"byte","b":[255,255,126,126,60,24,126,126]},{"a":45120,"t":"byte","b":[60,60,126,122,251,123,118,126]},{"a":45128,"t":"byte","b":[60,60,60,0,0,0,0,0]},{"a":45136,"t":"byte","b":[0,0,0,0,0,60,60,60]},{"a":45144,"t":"byte","b":[126,110,222,223,94,126,60,60]},{"a":45152,"t":"byte","b":[126,126,24,60,126,126,255,255]},{"a":45160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45168,"l":"gfx_sparkle_ball","c":"Graphics of a 2x2-cell treasure (32 bytes): a round lump with sparkle dots around it. Drawn by draw_sparkle_ball ($BCC0) in colour byte $7C; picked up for points in rooms 2 and 4 (flags $1372, $1374).","t":"byte","b":[0,0,0,0,0,8,34,128]},{"a":45176,"t":"byte","b":[0,0,0,0,0,0,16,132]},{"a":45184,"t":"byte","b":[16,67,15,159,63,191,31,95]},{"a":45192,"t":"byte","b":[16,197,224,186,184,185,120,242]},{"a":45200,"l":"gfx_ring","c":"Graphics of a 2x2-cell ring (32 bytes): $B090-$B09F the top row (a gem with sparkles), $B0A0-$B0AF the bottom row (the band). Drawn by draw_ring ($BEAB), top and bottom in separate colours; picked up in rooms 4, 6, 8 and 9.","t":"byte","b":[0,34,8,0,32,7,15,7]},{"a":45208,"t":"byte","b":[0,0,132,16,0,226,176,96]},{"a":45216,"t":"byte","b":[1,3,4,8,8,8,4,3]},{"a":45224,"t":"byte","b":[128,192,32,16,16,16,32,192]},{"a":45232,"l":"gfx_trophy","c":"Graphics of the trophy cup (48 bytes): $B0B0-$B0CF a 2x2-cell cup, $B0D0-$B0DF a 2x1-cell foot. Drawn by draw_trophy ($BE60); picked up in rooms 2, 5, 6 and 8.","t":"byte","b":[0,0,0,63,31,127,159,159]},{"a":45240,"t":"byte","b":[0,0,0,252,248,222,217,217]},{"a":45248,"t":"byte","b":[95,63,31,47,15,7,3,1]},{"a":45256,"t":"byte","b":[250,220,216,180,240,224,192,128]},{"a":45264,"t":"byte","b":[3,0,7,0,15,15,15,31]},{"a":45272,"t":"byte","b":[192,0,224,0,240,240,240,248]},{"a":45280,"l":"gfx_invuln_object","c":"Graphics of a 2x2-cell object (32 bytes, a small vessel with sparkle dots) drawn by draw_invuln_object ($BCDF) in rooms 3 and 7. Taking it calls $1250, which makes Mr Hat immune for a while (flags $1373, $1379).","t":"byte","b":[0,8,1,36,0,19,3,1]},{"a":45288,"t":"byte","b":[0,32,0,1,8,193,208,128]},{"a":45296,"t":"byte","b":[17,67,7,15,15,79,7,19]},{"a":45304,"t":"byte","b":[132,192,224,178,176,113,228,192]},{"a":45312,"l":"pickup_rooms_8_9","c":"Treasure pickup for rooms 8 and 9 (room id $100C), called from the pickup dispatcher at $8FA2 for rooms other than 2-7. Room 8: first room8_take_switch ($B3F6); then, left half of the screen only ($D010 bit 4 clear), stick down ($A97C with A=$10) over X $B4-$D3 on the upper floor ($D009 < $60) takes the ring at cell (22,6) (flag $137A, erase_2x2, 25 score steps via $1224), over X $1C-$3B on the lower floors takes the trophy at (3,16) ($137B, erase_2x3, 75 steps via $123A). Room 9: first room9_barriers ($B423); left half, lower floors, X $DC-$FB takes the ring at (27,17) ($137C, 25 steps); right half with $D009 >= $90, X $04-$23 (+256) takes the ring at (32,17) ($137D, 50 steps via $122F). Other rooms: nothing.","t":"code","b":[173,12,16],"m":"lda","oa":4108,"o":"room_number","x":[36770]},{"a":45315,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":45317,"t":"code","b":[208,78],"m":"bne","oa":45397,"o":"b_B155"},{"a":45319,"t":"code","b":[32,246,179],"m":"jsr","oa":46070,"o":"room8_take_switch"},{"a":45322,"t":"code","b":[240,72],"m":"beq","oa":45396,"o":"r_B154"},{"a":45324,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":45327,"t":"code","b":[176,34],"m":"bcs","oa":45363,"o":"b_B133"},{"a":45329,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":45331,"t":"code","b":[162,180],"m":"ldx","o":"#$B4"},{"a":45333,"t":"code","b":[160,212],"m":"ldy","o":"#$D4"},{"a":45335,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45338,"t":"code","b":[144,22],"m":"bcc","oa":45362,"o":"r_B132"},{"a":45340,"t":"code","b":[173,122,19],"m":"lda","oa":4986,"o":"object_flag_137a"},{"a":45343,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":45345,"t":"code","b":[240,15],"m":"beq","oa":45362,"o":"r_B132"},{"a":45347,"t":"code","b":[162,22],"m":"ldx","o":"#$16"},{"a":45349,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":45351,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":45354,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45356,"t":"code","b":[141,122,19],"m":"sta","oa":4986,"o":"object_flag_137a"},{"a":45359,"t":"code","b":[32,36,18],"m":"jsr","oa":4644,"o":"add_25000_points"},{"a":45362,"l":"r_B132","t":"code","b":[96],"m":"rts","x":[45338,45345]},{"a":45363,"l":"b_B133","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[45327]},{"a":45365,"t":"code","b":[162,28],"m":"ldx","o":"#$1C"},{"a":45367,"t":"code","b":[160,60],"m":"ldy","o":"#$3C"},{"a":45369,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45372,"t":"code","b":[144,22],"m":"bcc","oa":45396,"o":"r_B154"},{"a":45374,"t":"code","b":[173,123,19],"m":"lda","oa":4987,"o":"object_flag_137b"},{"a":45377,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":45379,"t":"code","b":[240,15],"m":"beq","oa":45396,"o":"r_B154"},{"a":45381,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":45383,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":45385,"t":"code","b":[32,29,189],"m":"jsr","oa":48413,"o":"erase_2x3"},{"a":45388,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45390,"t":"code","b":[141,123,19],"m":"sta","oa":4987,"o":"object_flag_137b"},{"a":45393,"t":"code","b":[32,58,18],"m":"jsr","oa":4666,"o":"add_75000_points"},{"a":45396,"l":"r_B154","t":"code","b":[96],"m":"rts","x":[45322,45372,45379]},{"a":45397,"l":"b_B155","t":"code","b":[201,9],"m":"cmp","o":"#$09","x":[45317]},{"a":45399,"t":"code","b":[208,85],"m":"bne","oa":45486,"o":"r_B1AE"},{"a":45401,"t":"code","b":[32,35,180],"m":"jsr","oa":46115,"o":"room9_barriers"},{"a":45404,"t":"code","b":[240,39],"m":"beq","oa":45445,"o":"b_B185"},{"a":45406,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":45409,"t":"code","b":[144,75],"m":"bcc","oa":45486,"o":"r_B1AE"},{"a":45411,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":45413,"t":"code","b":[162,220],"m":"ldx","o":"#$DC"},{"a":45415,"t":"code","b":[160,252],"m":"ldy","o":"#$FC"},{"a":45417,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45420,"t":"code","b":[144,22],"m":"bcc","oa":45444,"o":"r_B184"},{"a":45422,"t":"code","b":[173,124,19],"m":"lda","oa":4988,"o":"object_flag_137c"},{"a":45425,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":45427,"t":"code","b":[240,15],"m":"beq","oa":45444,"o":"r_B184"},{"a":45429,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":45431,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":45433,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":45436,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45438,"t":"code","b":[141,124,19],"m":"sta","oa":4988,"o":"object_flag_137c"},{"a":45441,"t":"code","b":[32,36,18],"m":"jsr","oa":4644,"o":"add_25000_points"},{"a":45444,"l":"r_B184","t":"code","b":[96],"m":"rts","x":[45420,45427]},{"a":45445,"l":"b_B185","t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y","x":[45404]},{"a":45448,"t":"code","b":[201,144],"m":"cmp","o":"#$90"},{"a":45450,"t":"code","b":[144,34],"m":"bcc","oa":45486,"o":"r_B1AE"},{"a":45452,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":45454,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":45456,"t":"code","b":[160,36],"m":"ldy","o":"#$24"},{"a":45458,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45461,"t":"code","b":[144,22],"m":"bcc","oa":45485,"o":"r_B1AD"},{"a":45463,"t":"code","b":[173,125,19],"m":"lda","oa":4989,"o":"object_flag_137d"},{"a":45466,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":45468,"t":"code","b":[240,15],"m":"beq","oa":45485,"o":"r_B1AD"},{"a":45470,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":45472,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":45474,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":45477,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45479,"t":"code","b":[141,125,19],"m":"sta","oa":4989,"o":"object_flag_137d"},{"a":45482,"t":"code","b":[32,47,18],"m":"jsr","oa":4655,"o":"add_50000_points"},{"a":45485,"l":"r_B1AD","t":"code","b":[96],"m":"rts","x":[45461,45468]},{"a":45486,"l":"r_B1AE","t":"code","b":[96],"m":"rts","x":[45399,45409,45450]},{"a":45487,"t":"gap","n":1},{"a":45488,"l":"draw_room2_fixtures","c":"Room 2 drawing, called from draw_room_objects ($BD7A) while the screen is blanked. If switch flag $1380 is 0, draws the 1x2 switch ($A782, graphics $AC48) in colour $B3 at cell (4,16). Always draws the two halves of the barrier ($A79F top at (21,2), $A7BC bottom at (21,5), colour $DC); if $1381 is set, adds the open marks (draw_barrier_open_top/bottom at (21,3) and (21,6)). Returns A = treasure flag $1371.","t":"code","b":[173,128,19],"m":"lda","oa":4992,"o":"event_flag_1380","x":[48506]},{"a":45491,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45493,"t":"code","b":[208,9],"m":"bne","oa":45504,"o":"b_B1C0"},{"a":45495,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":45497,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":45499,"t":"code","b":[169,179],"m":"lda","o":"#$B3"},{"a":45501,"t":"code","b":[32,130,167],"m":"jsr","oa":42882,"o":"draw_switch"},{"a":45504,"l":"b_B1C0","t":"code","b":[162,21],"m":"ldx","o":"#$15","x":[45493]},{"a":45506,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":45508,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":45510,"t":"code","b":[32,159,167],"m":"jsr","oa":42911,"o":"draw_cone_down"},{"a":45513,"t":"code","b":[162,21],"m":"ldx","o":"#$15"},{"a":45515,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45517,"t":"code","b":[169,220],"m":"lda","o":"#$DC"},{"a":45519,"t":"code","b":[32,188,167],"m":"jsr","oa":42940,"o":"draw_cone_up"},{"a":45522,"t":"code","b":[173,129,19],"m":"lda","oa":4993,"o":"event_flag_1381"},{"a":45525,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45527,"t":"code","b":[240,14],"m":"beq","oa":45543,"o":"b_B1E7"},{"a":45529,"l":"open_room2_barrier","c":"Entry inside draw_room2_fixtures, called by room2_switch_and_barrier ($B32A) the moment the room-2 barrier opens: draws the white open marks ($BF63 at cell (21,3), $BF82 at (21,6)) and returns A = $1371.","t":"code","b":[162,21],"m":"ldx","o":"#$15","x":[45866]},{"a":45531,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":45533,"t":"code","b":[32,99,191],"m":"jsr","oa":48995,"o":"draw_barrier_open_top"},{"a":45536,"t":"code","b":[162,21],"m":"ldx","o":"#$15"},{"a":45538,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":45540,"t":"code","b":[32,130,191],"m":"jsr","oa":49026,"o":"draw_barrier_open_bottom"},{"a":45543,"l":"b_B1E7","t":"code","b":[173,113,19],"m":"lda","oa":4977,"o":"object_flag_1371","x":[45527]},{"a":45546,"t":"code","b":[96],"m":"rts"},{"a":45547,"t":"gap","n":1},{"a":45548,"l":"draw_room3_keyhole","c":"Room 3 drawing: if flag $1382 is 0, draws the 3x3 keyhole icon ($A763: colour $0C, graphics $AC00) at cell (33,5). Returns A = treasure flag $1373 for draw_room_objects ($BD9B).","t":"code","b":[173,130,19],"m":"lda","oa":4994,"o":"event_flag_1382","x":[48539]},{"a":45551,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45553,"t":"code","b":[208,7],"m":"bne","oa":45562,"o":"b_B1FA"},{"a":45555,"t":"code","b":[162,33],"m":"ldx","o":"#$21"},{"a":45557,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45559,"t":"code","b":[32,99,167],"m":"jsr","oa":42851,"o":"draw_keyhole"},{"a":45562,"l":"b_B1FA","t":"code","b":[173,115,19],"m":"lda","oa":4979,"o":"object_flag_1373","x":[45553]},{"a":45565,"t":"code","b":[96],"m":"rts"},{"a":45566,"t":"gap","n":1},{"a":45567,"l":"draw_room5_switch","c":"Room 5 drawing: if switch flag $1383 is 0, draws the 1x2 switch ($A782) in colour $BD at cell (32,5). Returns A = treasure flag $1376 for draw_room_objects ($BDCF).","t":"code","b":[173,131,19],"m":"lda","oa":4995,"o":"event_flag_1383","x":[48591]},{"a":45570,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45572,"t":"code","b":[208,9],"m":"bne","oa":45583,"o":"b_B20F"},{"a":45574,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":45576,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45578,"t":"code","b":[169,189],"m":"lda","o":"#$BD"},{"a":45580,"t":"code","b":[32,130,167],"m":"jsr","oa":42882,"o":"draw_switch"},{"a":45583,"l":"b_B20F","t":"code","b":[173,118,19],"m":"lda","oa":4982,"o":"object_flag_1376","x":[45572]},{"a":45586,"t":"code","b":[96],"m":"rts"},{"a":45587,"t":"gap","n":1},{"a":45588,"l":"draw_room6_switch_lock","c":"Room 6 drawing: if switch flag $1384 is 0, draws the 1x2 switch in colour $B6 at cell (28,5); if lock flag $1385 is set (the keyhole has been used), recolours the 3x2 cells at (19,5) with $50 (the code at $B22B). Returns A = treasure flag $1377 for draw_room_objects ($BDE8).","t":"code","b":[173,132,19],"m":"lda","oa":4996,"o":"event_flag_1384","x":[48616]},{"a":45591,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45593,"t":"code","b":[208,9],"m":"bne","oa":45604,"o":"b_B224"},{"a":45595,"t":"code","b":[162,28],"m":"ldx","o":"#$1C"},{"a":45597,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45599,"t":"code","b":[169,182],"m":"lda","o":"#$B6"},{"a":45601,"t":"code","b":[32,130,167],"m":"jsr","oa":42882,"o":"draw_switch"},{"a":45604,"l":"b_B224","t":"code","b":[173,133,19],"m":"lda","oa":4997,"o":"event_flag_1385","x":[45593]},{"a":45607,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45609,"t":"code","b":[240,23],"m":"beq","oa":45634,"o":"b_B242"},{"a":45611,"l":"paint_room6_lock_open","c":"Entry inside draw_room6_switch_lock, also called from $8FAF when the room-6 lock opens: fills 3x2 cells of the colour matrix at (19,5) with colour byte $50 through $A67F (colour only, no graphics), then returns A = $1377.","t":"code","b":[162,19],"m":"ldx","o":"#$13","x":[36783]},{"a":45613,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45615,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":45617,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":45619,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45621,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":45623,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":45625,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":45627,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":45629,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":45631,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":45634,"l":"b_B242","t":"code","b":[173,119,19],"m":"lda","oa":4983,"o":"object_flag_1377","x":[45609]},{"a":45637,"t":"code","b":[96],"m":"rts"},{"a":45638,"t":"gap","n":1},{"a":45639,"l":"draw_room8_switch","c":"Room 8 drawing: if switch flag $1386 is 0, draws the 1x2 switch in colour $B9 at cell (11,5). Returns A = treasure flag $137A for draw_room_objects ($BE1C).","t":"code","b":[173,134,19],"m":"lda","oa":4998,"o":"event_flag_1386","x":[48668]},{"a":45642,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45644,"t":"code","b":[208,9],"m":"bne","oa":45655,"o":"b_B257"},{"a":45646,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":45648,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45650,"t":"code","b":[169,185],"m":"lda","o":"#$B9"},{"a":45652,"t":"code","b":[32,130,167],"m":"jsr","oa":42882,"o":"draw_switch"},{"a":45655,"l":"b_B257","t":"code","b":[173,122,19],"m":"lda","oa":4986,"o":"object_flag_137a","x":[45644]},{"a":45658,"t":"code","b":[96],"m":"rts"},{"a":45659,"t":"gap","n":1},{"a":45660,"l":"draw_room9_barriers","c":"Room 9 drawing: two barriers, the upper one at cell (27,2)/(27,5) in colour $6C (open marks added at (27,3)/(27,6) if flag $1387 is set) and the lower one at (20,13)/(20,16) in colour $9C (marks at (20,14)/(20,17) if $1388 is set). Returns A = treasure flag $137C for draw_room_objects ($BE3D).","t":"code","b":[162,27],"m":"ldx","o":"#$1B","x":[48701]},{"a":45662,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":45664,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":45666,"t":"code","b":[32,159,167],"m":"jsr","oa":42911,"o":"draw_cone_down"},{"a":45669,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":45671,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45673,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":45675,"t":"code","b":[32,188,167],"m":"jsr","oa":42940,"o":"draw_cone_up"},{"a":45678,"t":"code","b":[173,135,19],"m":"lda","oa":4999,"o":"event_flag_1387"},{"a":45681,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45683,"t":"code","b":[240,14],"m":"beq","oa":45699,"o":"b_B283"},{"a":45685,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":45687,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":45689,"t":"code","b":[32,99,191],"m":"jsr","oa":48995,"o":"draw_barrier_open_top"},{"a":45692,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":45694,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":45696,"t":"code","b":[32,130,191],"m":"jsr","oa":49026,"o":"draw_barrier_open_bottom"},{"a":45699,"l":"b_B283","t":"code","b":[162,20],"m":"ldx","o":"#$14","x":[45683]},{"a":45701,"t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":45703,"t":"code","b":[169,156],"m":"lda","o":"#$9C"},{"a":45705,"t":"code","b":[32,159,167],"m":"jsr","oa":42911,"o":"draw_cone_down"},{"a":45708,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":45710,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":45712,"t":"code","b":[169,156],"m":"lda","o":"#$9C"},{"a":45714,"t":"code","b":[32,188,167],"m":"jsr","oa":42940,"o":"draw_cone_up"},{"a":45717,"t":"code","b":[173,136,19],"m":"lda","oa":5000,"o":"event_flag_1388"},{"a":45720,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45722,"t":"code","b":[240,14],"m":"beq","oa":45738,"o":"b_B2AA"},{"a":45724,"l":"open_room9_lower_barrier","c":"Entry inside draw_room9_barriers, called by room9_barriers ($B477) when the lower barrier opens: draws the open marks at cells (20,14) and (20,17), returns A = $137C.","t":"code","b":[162,20],"m":"ldx","o":"#$14","x":[46199]},{"a":45726,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":45728,"t":"code","b":[32,99,191],"m":"jsr","oa":48995,"o":"draw_barrier_open_top"},{"a":45731,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":45733,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":45735,"t":"code","b":[32,130,191],"m":"jsr","oa":49026,"o":"draw_barrier_open_bottom"},{"a":45738,"l":"b_B2AA","t":"code","b":[173,124,19],"m":"lda","oa":4988,"o":"object_flag_137c","x":[45722]},{"a":45741,"t":"code","b":[96],"m":"rts"},{"a":45742,"t":"gap","n":2},{"a":45744,"l":"draw_room11_barrier","c":"Room id $11 drawing, the fallback of draw_room_objects ($BE5A): if $100C = $11, draws a barrier at cell (10,13)/(10,16) in colour $3C, with the open marks at (10,14)/(10,17) if flag $1389 is set. Any other room: nothing.","t":"code","b":[173,12,16],"m":"lda","oa":4108,"o":"room_number","x":[48730]},{"a":45747,"t":"code","b":[201,17],"m":"cmp","o":"#$11"},{"a":45749,"t":"code","b":[208,39],"m":"bne","oa":45790,"o":"r_B2DE"},{"a":45751,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":45753,"t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":45755,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":45757,"t":"code","b":[32,159,167],"m":"jsr","oa":42911,"o":"draw_cone_down"},{"a":45760,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":45762,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":45764,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":45766,"t":"code","b":[32,188,167],"m":"jsr","oa":42940,"o":"draw_cone_up"},{"a":45769,"t":"code","b":[173,137,19],"m":"lda","oa":5001,"o":"event_flag_1389"},{"a":45772,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45774,"t":"code","b":[240,14],"m":"beq","oa":45790,"o":"r_B2DE"},{"a":45776,"l":"open_room11_barrier","c":"Entry inside draw_room11_barrier, called by room11_barrier ($B4AE) when the barrier opens: draws the open marks at cells (10,14) and (10,17).","t":"code","b":[162,10],"m":"ldx","o":"#$0A","x":[46254]},{"a":45778,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":45780,"t":"code","b":[32,99,191],"m":"jsr","oa":48995,"o":"draw_barrier_open_top"},{"a":45783,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":45785,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":45787,"t":"code","b":[32,130,191],"m":"jsr","oa":49026,"o":"draw_barrier_open_bottom"},{"a":45790,"l":"r_B2DE","t":"code","b":[96],"m":"rts","x":[45749,45774]},{"a":45791,"t":"gap","n":1},{"a":45792,"l":"room2_switch_and_barrier","c":"Room 2 switch and barrier, called first by the pickup dispatcher ($8E1A); acts only while Mr Hat is in the left part of the screen ($D010 bit 4 clear). Lower floors ($D009 >= $60): touching X $24-$33 (no stick needed, $A97C with A=$11) takes the switch: $1380 = 1, erase_2x2 at cell (4,16). Upper floor: at X $AC-$CB the barrier stops him (DEC $D008 each frame) unless flag $1383 (room 5 switch) is set, in which case $1381 = 1 and the barrier is drawn open ($B1D9). Returns with Z from $1200 (Z set = right part).","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[36378]},{"a":45795,"t":"code","b":[240,35],"m":"beq","oa":45832,"o":"b_B308"},{"a":45797,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":45800,"t":"code","b":[144,34],"m":"bcc","oa":45836,"o":"b_B30C"},{"a":45802,"t":"code","b":[173,128,19],"m":"lda","oa":4992,"o":"event_flag_1380"},{"a":45805,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45807,"t":"code","b":[208,23],"m":"bne","oa":45832,"o":"b_B308"},{"a":45809,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":45811,"t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":45813,"t":"code","b":[160,52],"m":"ldy","o":"#$34"},{"a":45815,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45818,"t":"code","b":[144,12],"m":"bcc","oa":45832,"o":"b_B308"},{"a":45820,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45822,"t":"code","b":[141,128,19],"m":"sta","oa":4992,"o":"event_flag_1380"},{"a":45825,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":45827,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":45829,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":45832,"l":"b_B308","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[45795,45807,45818]},{"a":45835,"t":"code","b":[96],"m":"rts"},{"a":45836,"l":"b_B30C","t":"code","b":[173,129,19],"m":"lda","oa":4993,"o":"event_flag_1381","x":[45800]},{"a":45839,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45841,"t":"code","b":[208,26],"m":"bne","oa":45869,"o":"b_B32D"},{"a":45843,"t":"code","b":[162,172],"m":"ldx","o":"#$AC"},{"a":45845,"t":"code","b":[160,204],"m":"ldy","o":"#$CC"},{"a":45847,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":45849,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45852,"t":"code","b":[144,15],"m":"bcc","oa":45869,"o":"b_B32D"},{"a":45854,"t":"code","b":[173,131,19],"m":"lda","oa":4995,"o":"event_flag_1383"},{"a":45857,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":45859,"t":"code","b":[208,12],"m":"bne","oa":45873,"o":"b_B331"},{"a":45861,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45863,"t":"code","b":[141,129,19],"m":"sta","oa":4993,"o":"event_flag_1381"},{"a":45866,"t":"code","b":[32,217,177],"m":"jsr","oa":45529,"o":"open_room2_barrier"},{"a":45869,"l":"b_B32D","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[45841,45852]},{"a":45872,"t":"code","b":[96],"m":"rts"},{"a":45873,"l":"b_B331","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[45859]},{"a":45876,"t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255"},{"a":45879,"t":"code","b":[96],"m":"rts"},{"a":45880,"t":"gap","n":1},{"a":45881,"l":"room3_take_keyhole","c":"Room 3, called by the pickup dispatcher ($8E6C): with Mr Hat in the right part ($D010 bit 4 set) on the upper floor, touching X $0C-$33 (+256) takes the keyhole icon: $1382 = 1, erase_3x3 at cell (33,5). Returns with Z from $1200.","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[36460]},{"a":45884,"t":"code","b":[208,35],"m":"bne","oa":45921,"o":"b_B361"},{"a":45886,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":45889,"t":"code","b":[176,30],"m":"bcs","oa":45921,"o":"b_B361"},{"a":45891,"t":"code","b":[173,130,19],"m":"lda","oa":4994,"o":"event_flag_1382"},{"a":45894,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45896,"t":"code","b":[208,23],"m":"bne","oa":45921,"o":"b_B361"},{"a":45898,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":45900,"t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":45902,"t":"code","b":[160,52],"m":"ldy","o":"#$34"},{"a":45904,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45907,"t":"code","b":[144,12],"m":"bcc","oa":45921,"o":"b_B361"},{"a":45909,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45911,"t":"code","b":[141,130,19],"m":"sta","oa":4994,"o":"event_flag_1382"},{"a":45914,"t":"code","b":[162,33],"m":"ldx","o":"#$21"},{"a":45916,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45918,"t":"code","b":[32,60,189],"m":"jsr","oa":48444,"o":"erase_3x3"},{"a":45921,"l":"b_B361","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[45884,45889,45896,45907]},{"a":45924,"t":"code","b":[96],"m":"rts"},{"a":45925,"t":"gap","n":1},{"a":45926,"l":"room5_take_switch","c":"Room 5, called by the pickup dispatcher ($8EEE): with Mr Hat in the right part on the upper floor, touching X $04-$13 (+256) takes the switch: $1383 = 1, erase_2x2 at cell (32,5). Returns with Z from $1200.","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[36590]},{"a":45929,"t":"code","b":[208,35],"m":"bne","oa":45966,"o":"b_B38E"},{"a":45931,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":45934,"t":"code","b":[176,30],"m":"bcs","oa":45966,"o":"b_B38E"},{"a":45936,"t":"code","b":[173,131,19],"m":"lda","oa":4995,"o":"event_flag_1383"},{"a":45939,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45941,"t":"code","b":[208,23],"m":"bne","oa":45966,"o":"b_B38E"},{"a":45943,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":45945,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":45947,"t":"code","b":[160,20],"m":"ldy","o":"#$14"},{"a":45949,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45952,"t":"code","b":[144,12],"m":"bcc","oa":45966,"o":"b_B38E"},{"a":45954,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45956,"t":"code","b":[141,131,19],"m":"sta","oa":4995,"o":"event_flag_1383"},{"a":45959,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":45961,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45963,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":45966,"l":"b_B38E","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[45929,45934,45941,45952]},{"a":45969,"t":"code","b":[96],"m":"rts"},{"a":45970,"t":"gap","n":1},{"a":45971,"l":"room6_lock_and_switch","c":"Room 6, called by the pickup dispatcher ($8F24) when zero-page $22 is non-zero; left part, upper floor only. At X $94-$D3, while lock flag $1385 is 0: if the keyhole has been taken ($1382 set) it calls $8FA8 (draws the keyhole icon at (15,5) and the $50 colour patch) and sets $1385; otherwise it pushes Mr Hat back (DEC $D008). Then touching X $E4-$F3 takes the switch: $1384 = 1, erase_2x2 at (28,5). Returns with Z from $1200.","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[36644]},{"a":45974,"t":"code","b":[240,89],"m":"beq","oa":46065,"o":"b_B3F1"},{"a":45976,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":45979,"t":"code","b":[176,84],"m":"bcs","oa":46065,"o":"b_B3F1"},{"a":45981,"t":"code","b":[173,133,19],"m":"lda","oa":4997,"o":"event_flag_1385"},{"a":45984,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":45986,"t":"code","b":[208,37],"m":"bne","oa":46025,"o":"b_B3C9"},{"a":45988,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":45990,"t":"code","b":[162,148],"m":"ldx","o":"#$94"},{"a":45992,"t":"code","b":[160,212],"m":"ldy","o":"#$D4"},{"a":45994,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":45997,"t":"code","b":[144,26],"m":"bcc","oa":46025,"o":"b_B3C9"},{"a":45999,"t":"code","b":[173,130,19],"m":"lda","oa":4994,"o":"event_flag_1382"},{"a":46002,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46004,"t":"code","b":[240,12],"m":"beq","oa":46018,"o":"b_B3C2"},{"a":46006,"t":"code","b":[32,168,143],"m":"jsr","oa":36776,"o":"draw_objects_8fa8"},{"a":46009,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46011,"t":"code","b":[141,133,19],"m":"sta","oa":4997,"o":"event_flag_1385"},{"a":46014,"t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255"},{"a":46017,"t":"code","b":[96],"m":"rts"},{"a":46018,"l":"b_B3C2","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[46004]},{"a":46021,"t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255"},{"a":46024,"t":"code","b":[96],"m":"rts"},{"a":46025,"l":"b_B3C9","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[45986,45997]},{"a":46028,"t":"code","b":[240,35],"m":"beq","oa":46065,"o":"b_B3F1"},{"a":46030,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":46033,"t":"code","b":[176,30],"m":"bcs","oa":46065,"o":"b_B3F1"},{"a":46035,"t":"code","b":[173,132,19],"m":"lda","oa":4996,"o":"event_flag_1384"},{"a":46038,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46040,"t":"code","b":[208,23],"m":"bne","oa":46065,"o":"b_B3F1"},{"a":46042,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":46044,"t":"code","b":[162,228],"m":"ldx","o":"#$E4"},{"a":46046,"t":"code","b":[160,244],"m":"ldy","o":"#$F4"},{"a":46048,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":46051,"t":"code","b":[144,12],"m":"bcc","oa":46065,"o":"b_B3F1"},{"a":46053,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46055,"t":"code","b":[141,132,19],"m":"sta","oa":4996,"o":"event_flag_1384"},{"a":46058,"t":"code","b":[162,28],"m":"ldx","o":"#$1C"},{"a":46060,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":46062,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":46065,"l":"b_B3F1","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[45974,45979,46028,46033,46040,46051]},{"a":46068,"t":"code","b":[96],"m":"rts"},{"a":46069,"t":"gap","n":1},{"a":46070,"l":"room8_take_switch","c":"Room 8, called from pickup_rooms_8_9 ($B107): left part, upper floor, touching X $5C-$6B takes the switch: $1386 = 1, erase_2x2 at cell (11,5). Returns with Z from $1200.","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[45319]},{"a":46073,"t":"code","b":[240,35],"m":"beq","oa":46110,"o":"b_B41E"},{"a":46075,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":46078,"t":"code","b":[176,30],"m":"bcs","oa":46110,"o":"b_B41E"},{"a":46080,"t":"code","b":[173,134,19],"m":"lda","oa":4998,"o":"event_flag_1386"},{"a":46083,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46085,"t":"code","b":[208,23],"m":"bne","oa":46110,"o":"b_B41E"},{"a":46087,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":46089,"t":"code","b":[162,92],"m":"ldx","o":"#$5C"},{"a":46091,"t":"code","b":[160,108],"m":"ldy","o":"#$6C"},{"a":46093,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":46096,"t":"code","b":[144,12],"m":"bcc","oa":46110,"o":"b_B41E"},{"a":46098,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46100,"t":"code","b":[141,134,19],"m":"sta","oa":4998,"o":"event_flag_1386"},{"a":46103,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":46105,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":46107,"t":"code","b":[32,254,188],"m":"jsr","oa":48382,"o":"erase_2x2"},{"a":46110,"l":"b_B41E","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[46073,46078,46085,46096]},{"a":46113,"t":"code","b":[96],"m":"rts"},{"a":46114,"t":"gap","n":1},{"a":46115,"l":"room9_barriers","c":"Room 9 barriers, called from pickup_rooms_8_9 ($B159); left part only. Upper floor, X $DC-$FB: blocked (INC $D008, pushed back to the right) until flag $1384 (room 6 switch) is set, then $1387 = 1 and $8FB3 draws the upper barrier open. Lower floors, X $A4-$C3: blocked (DEC $D008) until $1386 (room 8 switch) is set, then $1388 = 1 and open_room9_lower_barrier ($B29C). Returns with Z from $1200.","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[45401]},{"a":46118,"t":"code","b":[240,38],"m":"beq","oa":46158,"o":"b_B44E"},{"a":46120,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":46123,"t":"code","b":[176,44],"m":"bcs","oa":46169,"o":"b_B459"},{"a":46125,"t":"code","b":[173,135,19],"m":"lda","oa":4999,"o":"event_flag_1387"},{"a":46128,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46130,"t":"code","b":[208,26],"m":"bne","oa":46158,"o":"b_B44E"},{"a":46132,"t":"code","b":[162,220],"m":"ldx","o":"#$DC"},{"a":46134,"t":"code","b":[160,252],"m":"ldy","o":"#$FC"},{"a":46136,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":46138,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":46141,"t":"code","b":[144,15],"m":"bcc","oa":46158,"o":"b_B44E"},{"a":46143,"t":"code","b":[173,132,19],"m":"lda","oa":4996,"o":"event_flag_1384"},{"a":46146,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":46148,"t":"code","b":[208,12],"m":"bne","oa":46162,"o":"b_B452"},{"a":46150,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46152,"t":"code","b":[141,135,19],"m":"sta","oa":4999,"o":"event_flag_1387"},{"a":46155,"t":"code","b":[32,179,143],"m":"jsr","oa":36787,"o":"draw_objects_8fb3"},{"a":46158,"l":"b_B44E","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[46118,46130,46141]},{"a":46161,"t":"code","b":[96],"m":"rts"},{"a":46162,"l":"b_B452","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[46148]},{"a":46165,"t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255"},{"a":46168,"t":"code","b":[96],"m":"rts"},{"a":46169,"l":"b_B459","t":"code","b":[173,136,19],"m":"lda","oa":5000,"o":"event_flag_1388","x":[46123]},{"a":46172,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46174,"t":"code","b":[208,26],"m":"bne","oa":46202,"o":"b_B47A"},{"a":46176,"t":"code","b":[162,164],"m":"ldx","o":"#$A4"},{"a":46178,"t":"code","b":[160,196],"m":"ldy","o":"#$C4"},{"a":46180,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":46182,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":46185,"t":"code","b":[144,15],"m":"bcc","oa":46202,"o":"b_B47A"},{"a":46187,"t":"code","b":[173,134,19],"m":"lda","oa":4998,"o":"event_flag_1386"},{"a":46190,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":46192,"t":"code","b":[208,12],"m":"bne","oa":46206,"o":"b_B47E"},{"a":46194,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46196,"t":"code","b":[141,136,19],"m":"sta","oa":5000,"o":"event_flag_1388"},{"a":46199,"t":"code","b":[32,156,178],"m":"jsr","oa":45724,"o":"open_room9_lower_barrier"},{"a":46202,"l":"b_B47A","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[46174,46185]},{"a":46205,"t":"code","b":[96],"m":"rts"},{"a":46206,"l":"b_B47E","t":"code","b":[206,8,208],"m":"dec","o":"vic_sprite4_x","x":[46192]},{"a":46209,"t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255"},{"a":46212,"t":"code","b":[96],"m":"rts"},{"a":46213,"t":"gap","n":1},{"a":46214,"l":"room11_barrier","c":"Room id $11 barrier, called from check_floor_hazards ($BC9D): left part, lower floors, X $54-$73: blocked (INC $D008) until flag $1380 (room 2 switch) is set, then $1389 = 1 and open_room11_barrier ($B2D0). Returns A = $D010, which the caller tests for bit 4.","t":"code","b":[32,0,18],"m":"jsr","oa":4608,"o":"hat_x_past_255","x":[48285]},{"a":46217,"t":"code","b":[240,38],"m":"beq","oa":46257,"o":"b_B4B1"},{"a":46219,"t":"code","b":[32,8,18],"m":"jsr","oa":4616,"o":"hat_y_cmp_60"},{"a":46222,"t":"code","b":[144,33],"m":"bcc","oa":46257,"o":"b_B4B1"},{"a":46224,"t":"code","b":[173,137,19],"m":"lda","oa":5001,"o":"event_flag_1389"},{"a":46227,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46229,"t":"code","b":[208,26],"m":"bne","oa":46257,"o":"b_B4B1"},{"a":46231,"t":"code","b":[162,84],"m":"ldx","o":"#$54"},{"a":46233,"t":"code","b":[160,116],"m":"ldy","o":"#$74"},{"a":46235,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":46237,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":46240,"t":"code","b":[144,15],"m":"bcc","oa":46257,"o":"b_B4B1"},{"a":46242,"t":"code","b":[173,128,19],"m":"lda","oa":4992,"o":"event_flag_1380"},{"a":46245,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":46247,"t":"code","b":[208,12],"m":"bne","oa":46261,"o":"b_B4B5"},{"a":46249,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46251,"t":"code","b":[141,137,19],"m":"sta","oa":5001,"o":"event_flag_1389"},{"a":46254,"t":"code","b":[32,208,178],"m":"jsr","oa":45776,"o":"open_room11_barrier"},{"a":46257,"l":"b_B4B1","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[46217,46222,46229,46240]},{"a":46260,"t":"code","b":[96],"m":"rts"},{"a":46261,"l":"b_B4B5","t":"code","b":[238,8,208],"m":"inc","o":"vic_sprite4_x","x":[46247]},{"a":46264,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":46267,"t":"code","b":[96],"m":"rts"},{"a":46268,"t":"gap","n":4},{"a":46272,"l":"sfx_raster_tone","c":"Sound effect A, the tail of an IRQ: entered by JMP from $8C2B in the in-play tune's tail (and from $89FB in tune 2's tail $89D0, which nothing found reaches), leaves by JMP $EA31 (the KERNAL IRQ end). Counts $1011 up (it is reset to 0 each time, so every call passes), then $B51B silences voice 3 and $B4CE sets volume 15 ($D418), voice 3 triangle with gate ($D412 = $11), attack/decay $20, and a frequency taken from the raster line $D012 (a varying value) for both $D40E and $D40F; then it stores $8BE4 into $D022 (an extra background colour register) and steps $D022 three times. Built on the same pattern as the tune step at $8C41, with fixed operands.","t":"code","b":[238,17,16],"m":"inc","oa":4113,"o":"sound_count_1011","x":[35323,35883]},{"a":46275,"t":"code","b":[173,17,16],"m":"lda","oa":4113,"o":"sound_count_1011"},{"a":46278,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":46280,"t":"code","b":[234],"m":"nop"},{"a":46281,"t":"code","b":[144,75],"m":"bcc","oa":46358,"o":"b_B516"},{"a":46283,"t":"code","b":[76,27,181],"m":"jmp","oa":46363,"o":"sfx_raster_tone_restart"},{"a":46286,"l":"j_B4CE","t":"code","b":[169,15],"m":"lda","o":"#$0F","x":[46375]},{"a":46288,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":46291,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":46293,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":46296,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":46298,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":46301,"t":"code","b":[173,229,180],"m":"lda","oa":46309,"o":"sfxa_op_raster_lo"},{"a":46304,"t":"code","b":[201,201],"m":"cmp","o":"#$C9"},{"a":46306,"t":"code","b":[176,35],"m":"bcs","oa":46343,"o":"b_B507"},{"a":46308,"t":"code","b":[173,18,208],"m":"lda","o":"vic_raster"},{"a":46309,"t":"note","l":"sfxa_op_raster_lo","c":"Operand byte (low half of LDA $D012 at $B4E4). All three effects compare it with $C9 and, if higher, would rewrite it and $B4EB/$B4F1 ($61, $01, $91); nothing else writes it and it holds $12, so that rewrite never happens: a leftover of the self-modifying tune pointer of $8C41.","note":"inside the item at $B4E4","x":[46301,46345,46440,46484,46587,46631]},{"a":46311,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":46314,"t":"code","b":[173,18,208],"m":"lda","o":"vic_raster"},{"a":46315,"t":"note","l":"sfxa_op_raster_lo2","c":"Operand byte (low half of LDA $D012 at $B4EA, the pitch high byte of effect A); target of the never-taken rewrite at $B50E, $B599 and $B62C.","note":"inside the item at $B4EA","x":[46350,46489,46636]},{"a":46317,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":46320,"t":"code","b":[173,228,139],"m":"lda","oa":35812,"o":"tune2_len_b4f0"},{"a":46321,"t":"note","l":"sfxa_op_colour_src","c":"Operand byte (low half of LDA $8BE4 at $B4F0, the value effect A puts into $D022); target of the never-taken rewrite at $B513, $B59E and $B631.","note":"inside the item at $B4F0","x":[46355,46494,46641]},{"a":46323,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":46326,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46328,"t":"code","b":[141,17,16],"m":"sta","oa":4113,"o":"sound_count_1011"},{"a":46331,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46334,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46337,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46340,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":46343,"l":"b_B507","t":"code","b":[169,97],"m":"lda","o":"#$61","x":[46306]},{"a":46345,"t":"code","b":[141,229,180],"m":"sta","oa":46309,"o":"sfxa_op_raster_lo"},{"a":46348,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46350,"t":"code","b":[141,235,180],"m":"sta","oa":46315,"o":"sfxa_op_raster_lo2"},{"a":46353,"t":"code","b":[169,145],"m":"lda","o":"#$91"},{"a":46355,"t":"code","b":[141,241,180],"m":"sta","oa":46321,"o":"sfxa_op_colour_src"},{"a":46358,"l":"b_B516","t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31","x":[46281]},{"a":46361,"t":"gap","n":2},{"a":46363,"l":"sfx_raster_tone_restart","c":"Clears $D40D-$D414 (voice 2 sustain/release and all of voice 3) to 0, then jumps back into effect A at $B4CE to set it going again.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[46283]},{"a":46365,"l":"b_B51D","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46373]},{"a":46367,"t":"code","b":[153,13,212],"m":"sta","o":"sid_v2_sustain_release,y"},{"a":46370,"t":"code","b":[200],"m":"iny"},{"a":46371,"t":"code","b":[192,8],"m":"cpy","o":"#$08"},{"a":46373,"t":"code","b":[208,246],"m":"bne","oa":46365,"o":"b_B51D"},{"a":46375,"t":"code","b":[76,206,180],"m":"jmp","oa":46286,"o":"j_B4CE"},{"a":46378,"t":"gap","n":6},{"a":46384,"l":"sfx_select","c":"Chooses the IRQ-tail sound, reached from irq_invuln_countdown ($BF5E). If $A877 holds $20 it would play the noise burst $B54B, but $A877 only ever holds $AD or $60, so that test never passes. Otherwise, for room id $100C < 5 goes to $B5B6, for >= 5 to $B5C3; the two are identical.","t":"code","b":[173,119,168],"m":"lda","oa":43127,"o":"hat_death","x":[48990]},{"a":46387,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":46389,"t":"code","b":[208,3],"m":"bne","oa":46394,"o":"b_B53A"},{"a":46391,"t":"code","b":[76,75,181],"m":"jmp","oa":46411,"o":"sfx_noise_burst"},{"a":46394,"l":"b_B53A","t":"code","b":[173,12,16],"m":"lda","oa":4108,"o":"room_number","x":[46389]},{"a":46397,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":46399,"t":"code","b":[176,3],"m":"bcs","oa":46404,"o":"b_B544"},{"a":46401,"t":"code","b":[76,182,181],"m":"jmp","oa":46518,"o":"sfx_score_or_tune"},{"a":46404,"l":"b_B544","t":"code","b":[76,195,181],"m":"jmp","oa":46531,"o":"j_B5C3","x":[46399]},{"a":46407,"t":"gap","n":4},{"a":46411,"l":"sfx_noise_burst","c":"Sound effect B, IRQ tail: every third call ($1011 counts to 3) silences voice 3 ($B5A6) and restarts it as noise with gate ($D412 = $81), volume 15, attack/decay $20, frequency from the raster line $D012; stores $8BE4 into $D022 and steps it three times; leaves by JMP $EA31. Played while Mr Hat is immune (from $BF47).","t":"code","b":[238,17,16],"m":"inc","oa":4113,"o":"sound_count_1011","x":[46391,48967]},{"a":46414,"t":"code","b":[173,17,16],"m":"lda","oa":4113,"o":"sound_count_1011"},{"a":46417,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":46419,"t":"code","b":[234],"m":"nop"},{"a":46420,"t":"code","b":[144,75],"m":"bcc","oa":46497,"o":"b_B5A1"},{"a":46422,"t":"code","b":[76,166,181],"m":"jmp","oa":46502,"o":"sfx_noise_restart"},{"a":46425,"l":"j_B559","t":"code","b":[169,15],"m":"lda","o":"#$0F","x":[46514]},{"a":46427,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":46430,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":46432,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":46435,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":46437,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":46440,"t":"code","b":[173,229,180],"m":"lda","oa":46309,"o":"sfxa_op_raster_lo"},{"a":46443,"t":"code","b":[201,201],"m":"cmp","o":"#$C9"},{"a":46445,"t":"code","b":[176,35],"m":"bcs","oa":46482,"o":"b_B592"},{"a":46447,"t":"code","b":[173,18,208],"m":"lda","o":"vic_raster"},{"a":46450,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":46453,"t":"code","b":[173,18,208],"m":"lda","o":"vic_raster"},{"a":46456,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":46459,"t":"code","b":[173,228,139],"m":"lda","oa":35812,"o":"tune2_len_b4f0"},{"a":46462,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":46465,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46467,"t":"code","b":[141,17,16],"m":"sta","oa":4113,"o":"sound_count_1011"},{"a":46470,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46473,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46476,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46479,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":46482,"l":"b_B592","t":"code","b":[169,97],"m":"lda","o":"#$61","x":[46445]},{"a":46484,"t":"code","b":[141,229,180],"m":"sta","oa":46309,"o":"sfxa_op_raster_lo"},{"a":46487,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46489,"t":"code","b":[141,235,180],"m":"sta","oa":46315,"o":"sfxa_op_raster_lo2"},{"a":46492,"t":"code","b":[169,145],"m":"lda","o":"#$91"},{"a":46494,"t":"code","b":[141,241,180],"m":"sta","oa":46321,"o":"sfxa_op_colour_src"},{"a":46497,"l":"b_B5A1","t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31","x":[46420]},{"a":46500,"t":"gap","n":2},{"a":46502,"l":"sfx_noise_restart","c":"Clears $D40D-$D414 (voice 3) and jumps to $B559 to restart the noise burst.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[46422]},{"a":46504,"l":"b_B5A8","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46512]},{"a":46506,"t":"code","b":[153,13,212],"m":"sta","o":"sid_v2_sustain_release,y"},{"a":46509,"t":"code","b":[200],"m":"iny"},{"a":46510,"t":"code","b":[192,8],"m":"cpy","o":"#$08"},{"a":46512,"t":"code","b":[208,246],"m":"bne","oa":46504,"o":"b_B5A8"},{"a":46514,"t":"code","b":[76,89,181],"m":"jmp","oa":46425,"o":"j_B559"},{"a":46517,"t":"gap","n":1},{"a":46518,"l":"sfx_score_or_tune","c":"IRQ tail used by sfx_select for rooms below 5 (a second copy at $B5C3 for rooms 5 and up, same code): if the score-tick flag $1015 is 0, goes on to $8C00, the in-play tune's IRQ tail (which ends at $7C70 or in effect A, $B4C0); if it is set, plays sfx_score_tick ($B5D1) instead.","t":"code","b":[173,21,16],"m":"lda","oa":4117,"o":"points_flag","x":[46401]},{"a":46521,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46523,"t":"code","b":[208,3],"m":"bne","oa":46528,"o":"b_B5C0"},{"a":46525,"t":"code","b":[76,0,140],"m":"jmp","oa":35840,"o":"tune1_irq"},{"a":46528,"l":"b_B5C0","t":"code","b":[76,209,181],"m":"jmp","oa":46545,"o":"sfx_score_tick","x":[46523]},{"a":46531,"l":"j_B5C3","t":"code","b":[173,21,16],"m":"lda","oa":4117,"o":"points_flag","x":[46404]},{"a":46534,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46536,"t":"code","b":[208,3],"m":"bne","oa":46541,"o":"b_B5CD"},{"a":46538,"t":"code","b":[76,0,140],"m":"jmp","oa":35840,"o":"tune1_irq"},{"a":46541,"l":"b_B5CD","t":"code","b":[76,209,181],"m":"jmp","oa":46545,"o":"sfx_score_tick","x":[46536]},{"a":46544,"t":"gap","n":1},{"a":46545,"l":"sfx_score_tick","c":"Sound effect C, the score tick, IRQ tail: steps $D022, counts $1016; after $40 calls ends ($B649 clears $1015 and $1016). Every tenth call ($1011 to $0A) silences voice 3 ($B639) and restarts it as a triangle with gate at the fixed frequency $8888, volume 15, attack/decay $20; stores $8BE4 into $D022 and steps it. $1015 is set by $8AD0, which adds one step to a score digit ($41DA). Leaves by JMP $EA31.","t":"code","b":[238,34,208],"m":"inc","o":"vic_background1","x":[46528,46541]},{"a":46548,"t":"code","b":[238,22,16],"m":"inc","oa":4118,"o":"points_flash_count"},{"a":46551,"t":"code","b":[173,22,16],"m":"lda","oa":4118,"o":"points_flash_count"},{"a":46554,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":46556,"t":"code","b":[176,107],"m":"bcs","oa":46665,"o":"sfx_score_tick_end"},{"a":46558,"t":"code","b":[238,17,16],"m":"inc","oa":4113,"o":"sound_count_1011"},{"a":46561,"t":"code","b":[173,17,16],"m":"lda","oa":4113,"o":"sound_count_1011"},{"a":46564,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":46566,"t":"code","b":[234],"m":"nop"},{"a":46567,"t":"code","b":[144,75],"m":"bcc","oa":46644,"o":"b_B634"},{"a":46569,"t":"code","b":[76,57,182],"m":"jmp","oa":46649,"o":"sfx_score_tick_restart"},{"a":46572,"l":"j_B5EC","t":"code","b":[169,15],"m":"lda","o":"#$0F","x":[46661]},{"a":46574,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":46577,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":46579,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":46582,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":46584,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":46587,"t":"code","b":[173,229,180],"m":"lda","oa":46309,"o":"sfxa_op_raster_lo"},{"a":46590,"t":"code","b":[201,201],"m":"cmp","o":"#$C9"},{"a":46592,"t":"code","b":[176,35],"m":"bcs","oa":46629,"o":"b_B625"},{"a":46594,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":46596,"t":"code","b":[234],"m":"nop"},{"a":46597,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":46600,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":46602,"t":"code","b":[234],"m":"nop"},{"a":46603,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":46606,"t":"code","b":[173,228,139],"m":"lda","oa":35812,"o":"tune2_len_b4f0"},{"a":46609,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":46612,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46614,"t":"code","b":[141,17,16],"m":"sta","oa":4113,"o":"sound_count_1011"},{"a":46617,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46620,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46623,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":46626,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":46629,"l":"b_B625","t":"code","b":[169,97],"m":"lda","o":"#$61","x":[46592]},{"a":46631,"t":"code","b":[141,229,180],"m":"sta","oa":46309,"o":"sfxa_op_raster_lo"},{"a":46634,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46636,"t":"code","b":[141,235,180],"m":"sta","oa":46315,"o":"sfxa_op_raster_lo2"},{"a":46639,"t":"code","b":[169,145],"m":"lda","o":"#$91"},{"a":46641,"t":"code","b":[141,241,180],"m":"sta","oa":46321,"o":"sfxa_op_colour_src"},{"a":46644,"l":"b_B634","t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31","x":[46567]},{"a":46647,"t":"gap","n":2},{"a":46649,"l":"sfx_score_tick_restart","c":"Clears $D40D-$D414 (voice 3) and jumps to $B5EC to retrigger the score tick.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[46569]},{"a":46651,"l":"b_B63B","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46659]},{"a":46653,"t":"code","b":[153,13,212],"m":"sta","o":"sid_v2_sustain_release,y"},{"a":46656,"t":"code","b":[200],"m":"iny"},{"a":46657,"t":"code","b":[192,8],"m":"cpy","o":"#$08"},{"a":46659,"t":"code","b":[208,246],"m":"bne","oa":46651,"o":"b_B63B"},{"a":46661,"t":"code","b":[76,236,181],"m":"jmp","oa":46572,"o":"j_B5EC"},{"a":46664,"t":"gap","n":1},{"a":46665,"l":"sfx_score_tick_end","c":"Ends the score tick: $1015 = 0 and $1016 = 0, then JMP $EA31.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46556]},{"a":46667,"t":"code","b":[141,21,16],"m":"sta","oa":4117,"o":"points_flag"},{"a":46670,"t":"code","b":[141,22,16],"m":"sta","oa":4118,"o":"points_flash_count"},{"a":46673,"t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":46676,"t":"gap","n":1},{"a":46677,"l":"read_stick_if_screen_on","c":"Returns A = $DC00 (joystick port 2) when the screen is switched on ($D011 bit 4 set), otherwise A = 0 (no stick input while the screen is blanked). Called from $9357 and $941C.","t":"code","b":[173,17,208],"m":"lda","o":"vic_control1","x":[37719,37916]},{"a":46680,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":46682,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":46684,"t":"code","b":[240,4],"m":"beq","oa":46690,"o":"b_B662"},{"a":46686,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46688,"t":"code","b":[234],"m":"nop"},{"a":46689,"t":"code","b":[96],"m":"rts"},{"a":46690,"l":"b_B662","t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a","x":[46684]},{"a":46693,"t":"code","b":[96],"m":"rts"},{"a":46694,"l":"check_hat_sprite7_hit","c":"Reads the sprite-sprite collision register $D01E; if it is exactly $90 (sprites 4 and 7, Mr Hat and the sprite-7 guardian, and no others) calls $4C52 (the kill call, turned into RTS while he is immune). Returns A = a second read of $D01E, which the caller at $4C40 compares with $14 and $18.","t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision","x":[19520]},{"a":46697,"t":"code","b":[201,144],"m":"cmp","o":"#$90"},{"a":46699,"t":"code","b":[208,3],"m":"bne","oa":46704,"o":"b_B670"},{"a":46701,"t":"code","b":[32,82,76],"m":"jsr","oa":19538,"o":"lose_life"},{"a":46704,"l":"b_B670","t":"code","b":[173,30,208],"m":"lda","o":"vic_sprite_collision","x":[46699]},{"a":46707,"t":"code","b":[96],"m":"rts"},{"a":46708,"t":"gap","n":1},{"a":46709,"l":"restore_kernal_irq","c":"Points the IRQ vector $0314/$0315 back at the KERNAL handler $EA31 (with SEI/CLI round it). Called from $7CE8, just before the game sets $1018 = 1 and returns to the title after the last room.","t":"code","b":[120],"m":"sei","x":[31976]},{"a":46710,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":46712,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":46715,"t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":46717,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":46720,"t":"code","b":[88],"m":"cli"},{"a":46721,"t":"code","b":[96],"m":"rts"},{"a":46722,"t":"gap","n":1},{"a":46723,"l":"draw_title_cast","c":"Draws the title screen text and sprites, called from $CDF9 when $1018 = 0. Sprite X high bits off, prints CHR$(31) and CHR$(147) (clear screen), border and background $0C, clears $0400-$07FF ($1744). Copies the screen-code words from $C000 to the screen, each letter twice (code on one row, code+$20 on the row below, the two-row font): MR HAT (row 10, col 2; code 0 is a blank, so no dot), OCTOPUS (7 of the 9 letters of OCTOPUSSY, row 12 col 16), SNAILY (row 10 col 30), DYNKY (row 18 col 9), KNIFFY (row 18 col 24), AND ALL OTHERS (row 23 col 12, colour 7), SYSTEMS PRESENTS A NEW GAME WITH (row 2 col 3, colour $0D). The word DOUBLE at $C007 is not drawn. Enables sprites 0-4, all multicolour, places each just above a name (sprite 2 at X $115, its $D010 bit set at $B75E) with pointers $2C, $3B, $3D, $25, $26 and colours $0B, $0A, $01, $0B, $06. $B72F and $B732 both store to $D001 ($D003 is set later at $B763).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[52729]},{"a":46725,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":46728,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":46730,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":46733,"t":"code","b":[169,147],"m":"lda","o":"#$93"},{"a":46735,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":46738,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":46740,"t":"code","b":[141,32,208],"m":"sta","o":"vic_border"},{"a":46743,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":46746,"t":"code","b":[234],"m":"nop"},{"a":46747,"t":"code","b":[234],"m":"nop"},{"a":46748,"t":"code","b":[32,68,23],"m":"jsr","oa":5956,"o":"clear_screen_ram"},{"a":46751,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46753,"l":"b_B6A1","t":"code","b":[189,0,192],"m":"lda","oa":49152,"o":"str_title_mr_hat,x","x":[46768]},{"a":46756,"t":"code","b":[157,146,5],"m":"sta","oa":1426,"o":"f_0592,x"},{"a":46759,"t":"code","b":[24],"m":"clc"},{"a":46760,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":46762,"t":"code","b":[157,186,5],"m":"sta","oa":1466,"o":"f_05BA,x"},{"a":46765,"t":"code","b":[232],"m":"inx"},{"a":46766,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":46768,"t":"code","b":[208,239],"m":"bne","oa":46753,"o":"b_B6A1"},{"a":46770,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46772,"l":"b_B6B4","t":"code","b":[189,14,192],"m":"lda","oa":49166,"o":"str_title_octopus,x","x":[46787]},{"a":46775,"t":"code","b":[157,240,5],"m":"sta","oa":1520,"o":"f_05F0,x"},{"a":46778,"t":"code","b":[24],"m":"clc"},{"a":46779,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":46781,"t":"code","b":[157,24,6],"m":"sta","oa":1560,"o":"f_0618,x"},{"a":46784,"t":"code","b":[232],"m":"inx"},{"a":46785,"t":"code","b":[224,7],"m":"cpx","o":"#$07"},{"a":46787,"t":"code","b":[208,239],"m":"bne","oa":46772,"o":"b_B6B4"},{"a":46789,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46791,"l":"b_B6C7","t":"code","b":[189,24,192],"m":"lda","oa":49176,"o":"str_title_snaily,x","x":[46806]},{"a":46794,"t":"code","b":[157,174,5],"m":"sta","oa":1454,"o":"f_05AE,x"},{"a":46797,"t":"code","b":[24],"m":"clc"},{"a":46798,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":46800,"t":"code","b":[157,214,5],"m":"sta","oa":1494,"o":"f_05D6,x"},{"a":46803,"t":"code","b":[232],"m":"inx"},{"a":46804,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":46806,"t":"code","b":[208,239],"m":"bne","oa":46791,"o":"b_B6C7"},{"a":46808,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46810,"l":"b_B6DA","t":"code","b":[189,30,192],"m":"lda","oa":49182,"o":"str_title_dynky,x","x":[46825]},{"a":46813,"t":"code","b":[157,217,6],"m":"sta","oa":1753,"o":"f_06D9,x"},{"a":46816,"t":"code","b":[24],"m":"clc"},{"a":46817,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":46819,"t":"code","b":[157,1,7],"m":"sta","oa":1793,"o":"f_0701,x"},{"a":46822,"t":"code","b":[232],"m":"inx"},{"a":46823,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":46825,"t":"code","b":[208,239],"m":"bne","oa":46810,"o":"b_B6DA"},{"a":46827,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46829,"l":"b_B6ED","t":"code","b":[189,36,192],"m":"lda","oa":49188,"o":"str_title_kniffy,x","x":[46844]},{"a":46832,"t":"code","b":[157,232,6],"m":"sta","oa":1768,"o":"f_06E8,x"},{"a":46835,"t":"code","b":[24],"m":"clc"},{"a":46836,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":46838,"t":"code","b":[157,16,7],"m":"sta","oa":1808,"o":"f_0710,x"},{"a":46841,"t":"code","b":[232],"m":"inx"},{"a":46842,"t":"code","b":[224,7],"m":"cpx","o":"#$07"},{"a":46844,"t":"code","b":[208,239],"m":"bne","oa":46829,"o":"b_B6ED"},{"a":46846,"t":"code","b":[169,159],"m":"lda","o":"#$9F"},{"a":46848,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":46851,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46853,"l":"b_B705","t":"code","b":[189,43,192],"m":"lda","oa":49195,"o":"str_title_and_all_others,x","x":[46868]},{"a":46856,"t":"code","b":[157,164,7],"m":"sta","oa":1956,"o":"f_07A4,x"},{"a":46859,"t":"code","b":[24],"m":"clc"},{"a":46860,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":46862,"t":"code","b":[157,204,7],"m":"sta","oa":1996,"o":"f_07CC,x"},{"a":46865,"t":"code","b":[232],"m":"inx"},{"a":46866,"t":"code","b":[224,14],"m":"cpx","o":"#$0E"},{"a":46868,"t":"code","b":[208,239],"m":"bne","oa":46853,"o":"b_B705"},{"a":46870,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46872,"l":"b_B718","t":"code","b":[169,7],"m":"lda","o":"#$07","x":[46883]},{"a":46874,"t":"code","b":[157,164,219],"m":"sta","o":"$DBA4,x"},{"a":46877,"t":"code","b":[157,204,219],"m":"sta","o":"$DBCC,x"},{"a":46880,"t":"code","b":[232],"m":"inx"},{"a":46881,"t":"code","b":[224,38],"m":"cpx","o":"#$26"},{"a":46883,"t":"code","b":[208,243],"m":"bne","oa":46872,"o":"b_B718"},{"a":46885,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":46888,"t":"code","b":[9,31],"m":"ora","o":"#$1F"},{"a":46890,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":46893,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":46895,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":46898,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":46901,"t":"code","b":[141,5,208],"m":"sta","o":"vic_sprite2_y"},{"a":46904,"t":"code","b":[169,168],"m":"lda","o":"#$A8"},{"a":46906,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":46909,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":46912,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":46914,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":46917,"t":"code","b":[169,169],"m":"lda","o":"#$A9"},{"a":46919,"t":"code","b":[141,2,208],"m":"sta","o":"vic_sprite1_x"},{"a":46922,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":46924,"t":"code","b":[141,4,208],"m":"sta","o":"vic_sprite2_x"},{"a":46927,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":46929,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":46932,"t":"code","b":[169,228],"m":"lda","o":"#$E4"},{"a":46934,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":46937,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":46940,"t":"code","b":[9,4],"m":"ora","o":"#$04"},{"a":46942,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":46945,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":46947,"t":"code","b":[141,3,208],"m":"sta","o":"vic_sprite1_y"},{"a":46950,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":46952,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":46955,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":46957,"t":"code","b":[141,40,208],"m":"sta","o":"vic_sprite1_colour"},{"a":46960,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46962,"t":"code","b":[141,41,208],"m":"sta","o":"vic_sprite2_colour"},{"a":46965,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":46967,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":46970,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":46972,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":46975,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":46978,"t":"code","b":[9,255],"m":"ora","o":"#$FF"},{"a":46980,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":46983,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46985,"l":"b_B789","t":"code","b":[189,57,192],"m":"lda","oa":49209,"o":"str_title_systems_presents,x","x":[47000]},{"a":46988,"t":"code","b":[157,83,4],"m":"sta","oa":1107,"o":"f_0453,x"},{"a":46991,"t":"code","b":[24],"m":"clc"},{"a":46992,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":46994,"t":"code","b":[157,123,4],"m":"sta","oa":1147,"o":"f_047B,x"},{"a":46997,"t":"code","b":[232],"m":"inx"},{"a":46998,"t":"code","b":[224,32],"m":"cpx","o":"#$20"},{"a":47000,"t":"code","b":[208,239],"m":"bne","oa":46985,"o":"b_B789"},{"a":47002,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":47004,"l":"b_B79C","t":"code","b":[169,13],"m":"lda","o":"#$0D","x":[47012]},{"a":47006,"t":"code","b":[157,80,216],"m":"sta","o":"$D850,x"},{"a":47009,"t":"code","b":[232],"m":"inx"},{"a":47010,"t":"code","b":[224,80],"m":"cpx","o":"#$50"},{"a":47012,"t":"code","b":[208,246],"m":"bne","oa":47004,"o":"b_B79C"},{"a":47014,"t":"code","b":[169,44],"m":"lda","o":"#$2C"},{"a":47016,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":47019,"t":"code","b":[169,59],"m":"lda","o":"#$3B"},{"a":47021,"t":"code","b":[141,249,7],"m":"sta","oa":2041,"o":"spr1_pointer"},{"a":47024,"t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":47026,"t":"code","b":[141,250,7],"m":"sta","oa":2042,"o":"spr2_pointer"},{"a":47029,"t":"code","b":[169,37],"m":"lda","o":"#$25"},{"a":47031,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":47034,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":47036,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":47039,"t":"code","b":[96],"m":"rts"},{"a":47040,"l":"dead_fire_wait_tail","c":"24 bytes of code that nothing reaches: the tail of an older routine whose first bytes were overwritten by the RTS at $B7BF. Decoded from $B7C2: CMP #$6F / BNE $B7BF (a wait for fire on $DC00), SEI, IRQ vector back to $EA31, CLI, $D418 = 0, RTS.","t":"byte","b":[0,220,201,111,208,249,120,169]},{"a":47048,"t":"byte","b":[49,141,20,3,169,234,141,21]},{"a":47056,"t":"byte","b":[3,88,169,0,141,24,212,96]},{"a":47064,"l":"str_wonderful","c":"Screen codes \"WONDERFUL\" (9 bytes), drawn by draw_ending_text ($BFBF) at row 7, col 15, in the two-row title font.","t":"byte","b":[23,15,14,4,5,18,6,21],"x":[49087]},{"a":47072,"t":"byte","b":[12]},{"a":47073,"l":"str_you_have_finished_your","c":"Screen codes \"YOU HAVE FINISHED YOUR \" (23 bytes, $00 is the space), drawn by draw_ending_text ($BFD2) at row 11, col 8.","t":"byte","b":[25,15,21,0,8,1,22,5],"x":[49106]},{"a":47081,"t":"byte","b":[0,6,9,14,9,19,8,5]},{"a":47089,"t":"byte","b":[4,0,25,15,21,18,0]},{"a":47096,"l":"str_mission","c":"Screen codes \"MISSION \" (8 bytes), drawn by draw_ending_text ($BFE5) at row 15, col 16.","t":"byte","b":[13,9,19,19,9,15,14,0],"x":[49125]},{"a":47104,"l":"draw_obj_3x3_aff0","c":"Draws a 3x3-cell object at cell X,Y (X = column, Y = row): colour byte $1C over 3x3 cells and the graphics at $AFF0 ($A67F, $A690), then recolours the two rows below the top (Y+1, Y+2) with $9C. Called from $1087, $668A and $9051 during room set-up.","t":"code","b":[142,6,30],"m":"stx","oa":7686,"o":"range_lo_or_column","x":[4231,26250,36945]},{"a":47107,"t":"code","b":[140,7,30],"m":"sty","oa":7687,"o":"range_hi_or_row"},{"a":47110,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":47112,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":47114,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47116,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":47118,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":47120,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":47122,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":47124,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":47126,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":47129,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":47131,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":47133,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":47135,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":47137,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":47140,"t":"code","b":[174,6,30],"m":"ldx","oa":7686,"o":"range_lo_or_column"},{"a":47143,"t":"code","b":[172,7,30],"m":"ldy","oa":7687,"o":"range_hi_or_row"},{"a":47146,"t":"code","b":[200],"m":"iny"},{"a":47147,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":47149,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":47151,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":47153,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":47155,"t":"code","b":[169,156],"m":"lda","o":"#$9C"},{"a":47157,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":47159,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":47162,"t":"code","b":[96],"m":"rts"},{"a":47163,"l":"draw_obj_2x3_afc0","c":"Draws a 2x3-cell object at cell X,Y: colour $7C and the graphics at $AFC0 (a wide top, a post and a foot), then recolours rows Y+1 and Y+2 with $FC. Called from $10AE and $9058.","t":"code","b":[142,6,30],"m":"stx","oa":7686,"o":"range_lo_or_column","x":[4270,36952]},{"a":47166,"t":"code","b":[140,7,30],"m":"sty","oa":7687,"o":"range_hi_or_row"},{"a":47169,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":47171,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":47173,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47175,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":47177,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":47179,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":47181,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":47183,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":47185,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":47188,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":47190,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":47192,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":47194,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":47196,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":47199,"t":"code","b":[174,6,30],"m":"ldx","oa":7686,"o":"range_lo_or_column"},{"a":47202,"t":"code","b":[172,7,30],"m":"ldy","oa":7687,"o":"range_hi_or_row"},{"a":47205,"t":"code","b":[200],"m":"iny"},{"a":47206,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":47208,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":47210,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":47212,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":47214,"t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":47216,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":47218,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":47221,"t":"code","b":[96],"m":"rts"},{"a":47222,"t":"gap","n":1},{"a":47223,"l":"anim_sprite3_walk_left","c":"Guardian step for sprite 3: moves it one pixel left (DEC $D006) and counts $100A; on the fifth count swaps its pointer $07FB between $3B and $3C (the frame the title shows beside OCTOPUS is $3B) and resets $100A; otherwise (and after a swap back to $3B) sets its colour to $0A. Called from the room IRQs at $48B6, $5970, $9300 and from $BA7D.","t":"code","b":[206,6,208],"m":"dec","o":"vic_sprite3_x","x":[18614,22896,37632,47741]},{"a":47226,"t":"code","b":[238,10,16],"m":"inc","oa":4106,"o":"anim_count_100a"},{"a":47229,"t":"code","b":[173,10,16],"m":"lda","oa":4106,"o":"anim_count_100a"},{"a":47232,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":47234,"t":"code","b":[144,28],"m":"bcc","oa":47264,"o":"b_B8A0"},{"a":47236,"t":"code","b":[173,251,7],"m":"lda","oa":2043,"o":"spr3_pointer"},{"a":47239,"t":"code","b":[201,59],"m":"cmp","o":"#$3B"},{"a":47241,"t":"code","b":[208,11],"m":"bne","oa":47254,"o":"b_B896"},{"a":47243,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":47245,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":47248,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47250,"t":"code","b":[141,10,16],"m":"sta","oa":4106,"o":"anim_count_100a"},{"a":47253,"t":"code","b":[96],"m":"rts"},{"a":47254,"l":"b_B896","t":"code","b":[169,59],"m":"lda","o":"#$3B","x":[47241]},{"a":47256,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":47259,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47261,"t":"code","b":[141,10,16],"m":"sta","oa":4106,"o":"anim_count_100a"},{"a":47264,"l":"b_B8A0","t":"code","b":[169,10],"m":"lda","o":"#$0A","x":[47234]},{"a":47266,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":47269,"t":"code","b":[96],"m":"rts"},{"a":47270,"t":"gap","n":1},{"a":47271,"l":"setup_sprite0_then_room","c":"End of a room set-up (JMP from $5963): sprite 0 multicolour on, colour $0B, then JMP $A823 into the room code.","t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour","x":[22883]},{"a":47274,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":47276,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":47279,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":47281,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":47284,"t":"code","b":[76,35,168],"m":"jmp","oa":43043,"o":"reenter_loop_5a60"},{"a":47287,"t":"gap","n":1},{"a":47288,"l":"wrap_hat_x","c":"Moves Mr Hat across the X high-bit boundary, called from $8919 when $D008 is $00 or $FF: at $00 clears his $D010 bit, puts X at $FE and turns sprite 4 on; at $FF sets the $D010 bit, puts X at $24 (X = $124) and turns sprite 4 off.","t":"code","b":[173,8,208],"m":"lda","o":"vic_sprite4_x","x":[35097]},{"a":47291,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":47293,"t":"code","b":[208,22],"m":"bne","oa":47317,"o":"b_B8D5"},{"a":47295,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":47298,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":47300,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":47303,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":47305,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":47308,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":47311,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":47313,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":47316,"t":"code","b":[96],"m":"rts"},{"a":47317,"l":"b_B8D5","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[47293]},{"a":47320,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":47322,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":47325,"t":"code","b":[169,36],"m":"lda","o":"#$24"},{"a":47327,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":47330,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":47333,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":47335,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":47338,"t":"code","b":[96],"m":"rts"},{"a":47339,"t":"gap","n":5},{"a":47344,"l":"hat_move_if_shown","c":"JMP from $8900: if sprite 4 is enabled or its X high bit is set, goes on to $8908 (edge check $8912, then hazards and pickups $5590); otherwise returns.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[35072]},{"a":47347,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":47349,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":47351,"t":"code","b":[240,10],"m":"beq","oa":47363,"o":"b_B903"},{"a":47353,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":47356,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":47358,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":47360,"t":"code","b":[240,1],"m":"beq","oa":47363,"o":"b_B903"},{"a":47362,"t":"code","b":[96],"m":"rts"},{"a":47363,"l":"b_B903","t":"code","b":[76,8,137],"m":"jmp","oa":35080,"o":"room11_rules","x":[47351,47360]},{"a":47366,"t":"gap","n":1},{"a":47367,"l":"hat_up_pin_x","c":"Moves Mr Hat one pixel up (DEC $D009) and sets $D008 = 1. Called from $828F when the stick is up ($DC00 = $7E); the caller moves sprite 5 with him ($D00B).","t":"code","b":[206,9,208],"m":"dec","o":"vic_sprite4_y","x":[33423]},{"a":47370,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":47372,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":47375,"t":"code","b":[96],"m":"rts"},{"a":47376,"l":"hat_down_pin_x","c":"Moves Mr Hat one pixel down (INC $D009) and sets $D008 = 1. Called from $898A while $D009 < $B4; the caller moves sprite 5 with him.","t":"code","b":[238,9,208],"m":"inc","o":"vic_sprite4_y","x":[35210]},{"a":47379,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":47381,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":47384,"t":"code","b":[96],"m":"rts"},{"a":47385,"t":"gap","n":1},{"a":47386,"l":"hat_upper_pose","c":"JMP from $6531: Mr Hat pointer $07FC = $2C (the frame the title shows above MR HAT) and Y = $5C, the height the hazard checks ($BB10) use for the upper floor.","t":"code","b":[169,44],"m":"lda","o":"#$2C","x":[25905]},{"a":47388,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"hat_sprite_pointer"},{"a":47391,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":47393,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":47396,"t":"code","b":[96],"m":"rts"},{"a":47397,"t":"gap","n":1},{"a":47398,"l":"set_room_6","c":"Sets the room id $100C to 6. Called from $607E.","t":"code","b":[169,6],"m":"lda","o":"#$06","x":[24702]},{"a":47400,"t":"code","b":[141,12,16],"m":"sta","oa":4108,"o":"room_number"},{"a":47403,"t":"code","b":[96],"m":"rts"},{"a":47404,"t":"gap","n":1},{"a":47405,"l":"anim_sprite7_shuffle","c":"Guardian step for sprite 7, counted by $100D: counts 1-7 show pointer $3D and move it one pixel left (DEC $D00E), counts 8-14 pointer $3E and one pixel right, count 15 resets $100D to 0. $3D is the frame the title shows beside SNAILY. Called from the IRQ at $48B0 and from $B97A.","t":"code","b":[238,13,16],"m":"inc","oa":4109,"o":"anim_count_100d","x":[18608,47482]},{"a":47408,"t":"code","b":[173,13,16],"m":"lda","oa":4109,"o":"anim_count_100d"},{"a":47411,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":47413,"t":"code","b":[176,9],"m":"bcs","oa":47424,"o":"b_B940"},{"a":47415,"t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":47417,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":47420,"t":"code","b":[206,14,208],"m":"dec","o":"vic_sprite7_x"},{"a":47423,"t":"code","b":[96],"m":"rts"},{"a":47424,"l":"b_B940","t":"code","b":[201,15],"m":"cmp","o":"#$0F","x":[47413]},{"a":47426,"t":"code","b":[176,9],"m":"bcs","oa":47437,"o":"b_B94D"},{"a":47428,"t":"code","b":[169,62],"m":"lda","o":"#$3E"},{"a":47430,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":47433,"t":"code","b":[238,14,208],"m":"inc","o":"vic_sprite7_x"},{"a":47436,"t":"code","b":[96],"m":"rts"},{"a":47437,"l":"b_B94D","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[47426]},{"a":47439,"t":"code","b":[141,13,16],"m":"sta","oa":4109,"o":"anim_count_100d"},{"a":47442,"t":"code","b":[96],"m":"rts"},{"a":47443,"t":"gap","n":1},{"a":47444,"l":"init_sprite7","c":"Sets up sprite 7: pointer $3D, colour 1, Y $B4 (the bottom floor), X $FF, enabled; clears its step counter $100D. Returns A = $D015. Called from $6785.","t":"code","b":[169,61],"m":"lda","o":"#$3D","x":[26501]},{"a":47446,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"spr7_pointer"},{"a":47449,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":47451,"t":"code","b":[141,46,208],"m":"sta","o":"vic_sprite7_colour"},{"a":47454,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":47456,"t":"code","b":[141,15,208],"m":"sta","o":"vic_sprite7_y"},{"a":47459,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":47461,"t":"code","b":[141,14,208],"m":"sta","o":"vic_sprite7_x"},{"a":47464,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":47467,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":47469,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":47472,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47474,"t":"code","b":[141,13,16],"m":"sta","oa":4109,"o":"anim_count_100d"},{"a":47477,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":47480,"t":"code","b":[96],"m":"rts"},{"a":47481,"t":"gap","n":1},{"a":47482,"l":"anim_sprite7_get_s0x","c":"Runs anim_sprite7_shuffle and returns A = sprite 0 X ($D000). Called from $B99F and $B9A8.","t":"code","b":[32,45,185],"m":"jsr","oa":47405,"o":"anim_sprite7_shuffle","x":[47519,47528]},{"a":47485,"t":"code","b":[173,0,208],"m":"lda","o":"vic_sprite0_x"},{"a":47488,"t":"code","b":[96],"m":"rts"},{"a":47489,"t":"gap","n":1},{"a":47490,"l":"set_1e08_sprite3_col6","c":"Stores A into $1E08 and sets sprite 3 colour to 6. Called from $809F with A = $FA.","t":"code","b":[141,8,30],"m":"sta","oa":7688,"o":"var_1e08","x":[32927]},{"a":47493,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":47495,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":47498,"t":"code","b":[96],"m":"rts"},{"a":47499,"t":"gap","n":1},{"a":47500,"l":"hat_sprite_enabled","c":"Returns A = $D015 AND $10: non-zero while sprite 4 (Mr Hat) is enabled. Called from $6BF0.","t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable","x":[27632]},{"a":47503,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":47505,"t":"code","b":[96],"m":"rts"},{"a":47506,"t":"gap","n":1},{"a":47507,"l":"anim_sprite0_frame","c":"Chooses sprite 0 pointer by height: $3A when $D001 >= $54, else $3F; then anim_sprite7_get_s0x. Returns A = $D000. Called from $684C.","t":"code","b":[173,1,208],"m":"lda","o":"vic_sprite0_y","x":[26700]},{"a":47510,"t":"code","b":[201,84],"m":"cmp","o":"#$54"},{"a":47512,"t":"code","b":[144,9],"m":"bcc","oa":47523,"o":"b_B9A3"},{"a":47514,"t":"code","b":[169,58],"m":"lda","o":"#$3A"},{"a":47516,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":47519,"t":"code","b":[32,122,185],"m":"jsr","oa":47482,"o":"anim_sprite7_get_s0x"},{"a":47522,"t":"code","b":[96],"m":"rts"},{"a":47523,"l":"b_B9A3","t":"code","b":[169,63],"m":"lda","o":"#$3F","x":[47512]},{"a":47525,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"spr0_pointer"},{"a":47528,"t":"code","b":[32,122,185],"m":"jsr","oa":47482,"o":"anim_sprite7_get_s0x"},{"a":47531,"t":"code","b":[96],"m":"rts"},{"a":47532,"t":"gap","n":1},{"a":47533,"l":"irq_room4_or_7","c":"IRQ handler installed at $90F1 (room 4 set-up). If the room id $100C is 7 it runs room7_bounce_sprite3 ($B9C0); otherwise JMP $9300 (the room-4 IRQ body).","t":"code","b":[173,12,16],"m":"lda","oa":4108,"o":"room_number"},{"a":47536,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":47538,"t":"code","b":[240,3],"m":"beq","oa":47543,"o":"b_B9B7"},{"a":47540,"t":"code","b":[76,0,147],"m":"jmp","oa":37632,"o":"room4_irq_tail"},{"a":47543,"l":"b_B9B7","t":"code","b":[76,192,185],"m":"jmp","oa":47552,"o":"room7_bounce_sprite3","x":[47538]},{"a":47546,"t":"gap","n":3},{"a":47549,"l":"dead_inc_border","c":"Three bytes EE 20 D0 (INC $D020) just before room7_bounce_sprite3; nothing jumps here (the JMP at $B9B7 goes to $B9C0), so it never runs.","t":"byte","b":[238,32,208]},{"a":47552,"l":"room7_bounce_sprite3","c":"Room 7 guardian, sprite 3, bouncing diagonally by self-modified INC/DEC opcodes: X two pixels a frame ($B9C0/$B9C3 become DEC when X >= $FE, INC when X < $60), Y by the pair at $B9C6/$B9C9 (DEC at Y >= $B5, INC below $9C). While Y < $A0 the second Y step is rewritten to INC/DEC $D021 (operand byte $B9CA = $21), so above that line it moves one pixel a frame and steps the background colour instead. Pointer from sprite3_frame_by_y. Ends with JMP $8215 (the next IRQ stage).","t":"code","b":[238,6,208],"m":"inc","o":"vic_sprite3_x","x":[47543,47573,47585]},{"a":47555,"l":"room7_op_x_step2","c":"Opcode byte of the second X step of room7_bounce_sprite3, rewritten $CE (DEC) or $EE (INC) together with $B9C0.","t":"code","b":[238,6,208],"m":"inc","o":"vic_sprite3_x","x":[47576,47588]},{"a":47558,"l":"room7_op_y_step1","c":"Opcode byte of the first Y step of room7_bounce_sprite3 (INC/DEC $D007), rewritten with $B9C9.","t":"code","b":[238,7,208],"m":"inc","o":"vic_sprite3_y","x":[47600,47612]},{"a":47561,"l":"room7_op_y_step2","c":"Opcode byte of the second Y step of room7_bounce_sprite3, rewritten $CE/$EE with $B9C6.","t":"code","b":[238,7,208],"m":"inc","o":"vic_sprite3_y","x":[47603,47615]},{"a":47562,"t":"note","l":"room7_op_y_step2_reg","c":"Operand low byte of the second Y step: $07 (acts on $D007, sprite 3 Y) when Y >= $A0, $21 (acts on $D021, the background colour) when Y < $A0. The store at $BA08 is always overwritten by $BA14 or $BA1C.","note":"inside the item at $B9C9","x":[47624,47636,47644]},{"a":47564,"t":"code","b":[32,38,186],"m":"jsr","oa":47654,"o":"sprite3_frame_by_y"},{"a":47567,"t":"code","b":[201,254],"m":"cmp","o":"#$FE"},{"a":47569,"t":"code","b":[144,8],"m":"bcc","oa":47579,"o":"b_B9DB"},{"a":47571,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":47573,"t":"code","b":[141,192,185],"m":"sta","oa":47552,"o":"room7_bounce_sprite3"},{"a":47576,"t":"code","b":[141,195,185],"m":"sta","oa":47555,"o":"room7_op_x_step2"},{"a":47579,"l":"b_B9DB","t":"code","b":[201,96],"m":"cmp","o":"#$60","x":[47569]},{"a":47581,"t":"code","b":[176,8],"m":"bcs","oa":47591,"o":"b_B9E7"},{"a":47583,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":47585,"t":"code","b":[141,192,185],"m":"sta","oa":47552,"o":"room7_bounce_sprite3"},{"a":47588,"t":"code","b":[141,195,185],"m":"sta","oa":47555,"o":"room7_op_x_step2"},{"a":47591,"l":"b_B9E7","t":"code","b":[173,7,208],"m":"lda","o":"vic_sprite3_y","x":[47581]},{"a":47594,"t":"code","b":[201,181],"m":"cmp","o":"#$B5"},{"a":47596,"t":"code","b":[144,8],"m":"bcc","oa":47606,"o":"b_B9F6"},{"a":47598,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":47600,"t":"code","b":[141,198,185],"m":"sta","oa":47558,"o":"room7_op_y_step1"},{"a":47603,"t":"code","b":[141,201,185],"m":"sta","oa":47561,"o":"room7_op_y_step2"},{"a":47606,"l":"b_B9F6","t":"code","b":[201,156],"m":"cmp","o":"#$9C","x":[47596]},{"a":47608,"t":"code","b":[176,8],"m":"bcs","oa":47618,"o":"b_BA02"},{"a":47610,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":47612,"t":"code","b":[141,198,185],"m":"sta","oa":47558,"o":"room7_op_y_step1"},{"a":47615,"t":"code","b":[141,201,185],"m":"sta","oa":47561,"o":"room7_op_y_step2"},{"a":47618,"l":"b_BA02","t":"code","b":[201,160],"m":"cmp","o":"#$A0","x":[47608]},{"a":47620,"t":"code","b":[144,5],"m":"bcc","oa":47627,"o":"b_BA0B"},{"a":47622,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":47624,"t":"code","b":[141,202,185],"m":"sta","oa":47562,"o":"room7_op_y_step2_reg"},{"a":47627,"l":"b_BA0B","t":"code","b":[173,7,208],"m":"lda","o":"vic_sprite3_y","x":[47620]},{"a":47630,"t":"code","b":[201,160],"m":"cmp","o":"#$A0"},{"a":47632,"t":"code","b":[176,8],"m":"bcs","oa":47642,"o":"b_BA1A"},{"a":47634,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":47636,"t":"code","b":[141,202,185],"m":"sta","oa":47562,"o":"room7_op_y_step2_reg"},{"a":47639,"t":"code","b":[76,34,186],"m":"jmp","oa":47650,"o":"j_BA22"},{"a":47642,"l":"b_BA1A","t":"code","b":[169,7],"m":"lda","o":"#$07","x":[47632]},{"a":47644,"t":"code","b":[141,202,185],"m":"sta","oa":47562,"o":"room7_op_y_step2_reg"},{"a":47647,"t":"code","b":[234],"m":"nop"},{"a":47648,"t":"code","b":[234],"m":"nop"},{"a":47649,"t":"code","b":[234],"m":"nop"},{"a":47650,"l":"j_BA22","t":"code","b":[76,21,130],"m":"jmp","oa":33301,"o":"irq_between_rooms","x":[47639]},{"a":47653,"t":"gap","n":1},{"a":47654,"l":"sprite3_frame_by_y","c":"Clears sprite 3 X high bit (sprite3_clear_xhigh), then sets its pointer $07FB to $3A when Y >= $AC, else $3F. Returns A = sprite 3 X ($D006).","t":"code","b":[32,100,186],"m":"jsr","oa":47716,"o":"sprite3_clear_xhigh","x":[47564]},{"a":47657,"t":"code","b":[201,172],"m":"cmp","o":"#$AC"},{"a":47659,"t":"code","b":[144,9],"m":"bcc","oa":47670,"o":"b_BA36"},{"a":47661,"t":"code","b":[169,58],"m":"lda","o":"#$3A"},{"a":47663,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":47666,"t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x"},{"a":47669,"t":"code","b":[96],"m":"rts"},{"a":47670,"l":"b_BA36","t":"code","b":[169,63],"m":"lda","o":"#$3F","x":[47659]},{"a":47672,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"spr3_pointer"},{"a":47675,"t":"code","b":[173,6,208],"m":"lda","o":"vic_sprite3_x"},{"a":47678,"t":"code","b":[96],"m":"rts"},{"a":47679,"t":"gap","n":1},{"a":47680,"l":"store_d010_or_room7","c":"Called from room 4 set-up ($90EA) with A = the wanted $D010: outside room 7 just stores it; in room 7 instead puts sprite 3 at Y $B4 with colour $0B, steps $D022 and clears sprite 3 X high bit.","t":"code","b":[170],"m":"tax","x":[37098]},{"a":47681,"t":"code","b":[173,12,16],"m":"lda","oa":4108,"o":"room_number"},{"a":47684,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":47686,"t":"code","b":[240,5],"m":"beq","oa":47693,"o":"b_BA4D"},{"a":47688,"t":"code","b":[138],"m":"txa"},{"a":47689,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":47692,"t":"code","b":[96],"m":"rts"},{"a":47693,"l":"b_BA4D","t":"code","b":[169,180],"m":"lda","o":"#$B4","x":[47686]},{"a":47695,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":47698,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":47700,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":47703,"t":"code","b":[238,34,208],"m":"inc","o":"vic_background1"},{"a":47706,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":47709,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":47711,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":47714,"t":"code","b":[96],"m":"rts"},{"a":47715,"t":"gap","n":1},{"a":47716,"l":"sprite3_clear_xhigh","c":"Clears bit 3 of $D010 (sprite 3 X high bit) and returns A = sprite 3 Y ($D007).","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[47654]},{"a":47719,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":47721,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":47724,"t":"code","b":[173,7,208],"m":"lda","o":"vic_sprite3_y"},{"a":47727,"t":"code","b":[96],"m":"rts"},{"a":47728,"t":"gap","n":1},{"a":47729,"l":"set_hat_colour_init_s2","c":"Sets Mr Hat colour $D02B = A (A = $0B from $50F6), sprite 3 Y = $B4, then init_sprite2.","t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour","x":[20726]},{"a":47732,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":47734,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":47737,"t":"code","b":[32,171,186],"m":"jsr","oa":47787,"o":"init_sprite2"},{"a":47740,"t":"code","b":[96],"m":"rts"},{"a":47741,"l":"anim_sprite2_patrol","c":"Room guardian step called from the IRQ at $5110: sprite 3 walks left (anim_sprite3_walk_left); sprite 2 moves two pixels a frame between X $70 and $EE, the direction held in the self-modified opcodes at $BA80/$BA83 (DEC from $EE, INC below $70); counts $100A and animates it (anim_sprite2_frame). $100A is shared with the sprite-3 step.","t":"code","b":[32,119,184],"m":"jsr","oa":47223,"o":"anim_sprite3_walk_left","x":[20752]},{"a":47744,"l":"s2_op_step1","c":"Opcode byte of the first sprite-2 X step (INC/DEC $D004), $EE or $CE; anim_sprite2_frame reads it to know the direction.","t":"code","b":[238,4,208],"m":"inc","o":"vic_sprite2_x","x":[47765,47777,47833]},{"a":47747,"l":"s2_op_step2","c":"Opcode byte of the second sprite-2 X step, rewritten with $BA80.","t":"code","b":[238,4,208],"m":"inc","o":"vic_sprite2_x","x":[47768,47780]},{"a":47750,"t":"code","b":[238,10,16],"m":"inc","oa":4106,"o":"anim_count_100a"},{"a":47753,"t":"code","b":[32,208,186],"m":"jsr","oa":47824,"o":"anim_sprite2_frame"},{"a":47756,"t":"code","b":[173,4,208],"m":"lda","o":"vic_sprite2_x"},{"a":47759,"t":"code","b":[201,238],"m":"cmp","o":"#$EE"},{"a":47761,"t":"code","b":[144,8],"m":"bcc","oa":47771,"o":"b_BA9B"},{"a":47763,"t":"code","b":[169,206],"m":"lda","o":"#$CE"},{"a":47765,"t":"code","b":[141,128,186],"m":"sta","oa":47744,"o":"s2_op_step1"},{"a":47768,"t":"code","b":[141,131,186],"m":"sta","oa":47747,"o":"s2_op_step2"},{"a":47771,"l":"b_BA9B","t":"code","b":[201,112],"m":"cmp","o":"#$70","x":[47761]},{"a":47773,"t":"code","b":[176,8],"m":"bcs","oa":47783,"o":"r_BAA7"},{"a":47775,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":47777,"t":"code","b":[141,128,186],"m":"sta","oa":47744,"o":"s2_op_step1"},{"a":47780,"t":"code","b":[141,131,186],"m":"sta","oa":47747,"o":"s2_op_step2"},{"a":47783,"l":"r_BAA7","t":"code","b":[96],"m":"rts","x":[47773]},{"a":47784,"t":"gap","n":3},{"a":47787,"l":"init_sprite2","c":"Sets up sprite 2: Y $5C (upper floor), pointer $24, X high bit off, enabled, colour 1, X $78.","t":"code","b":[169,92],"m":"lda","o":"#$5C","x":[47737]},{"a":47789,"t":"code","b":[141,5,208],"m":"sta","o":"vic_sprite2_y"},{"a":47792,"t":"code","b":[169,36],"m":"lda","o":"#$24"},{"a":47794,"t":"code","b":[141,250,7],"m":"sta","oa":2042,"o":"spr2_pointer"},{"a":47797,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":47800,"t":"code","b":[41,251],"m":"and","o":"#$FB"},{"a":47802,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":47805,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":47808,"t":"code","b":[9,4],"m":"ora","o":"#$04"},{"a":47810,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":47813,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":47815,"t":"code","b":[141,41,208],"m":"sta","o":"vic_sprite2_colour"},{"a":47818,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":47820,"t":"code","b":[141,4,208],"m":"sta","o":"vic_sprite2_x"},{"a":47823,"t":"code","b":[96],"m":"rts"},{"a":47824,"l":"anim_sprite2_frame","c":"Every fifth count of $100A swaps sprite 2 frames: moving left (opcode $CE at $BA80) between pointers $3D and $3E, moving right between $24 and $29; the store and the reset of $100A are in set_sprite2_pointer.","t":"code","b":[173,10,16],"m":"lda","oa":4106,"o":"anim_count_100a","x":[47753]},{"a":47827,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":47829,"t":"code","b":[144,46],"m":"bcc","oa":47877,"o":"r_BB05"},{"a":47831,"t":"code","b":[234],"m":"nop"},{"a":47832,"t":"code","b":[234],"m":"nop"},{"a":47833,"t":"code","b":[173,128,186],"m":"lda","oa":47744,"o":"s2_op_step1"},{"a":47836,"t":"code","b":[201,206],"m":"cmp","o":"#$CE"},{"a":47838,"t":"code","b":[208,19],"m":"bne","oa":47859,"o":"b_BAF3"},{"a":47840,"t":"code","b":[173,250,7],"m":"lda","oa":2042,"o":"spr2_pointer"},{"a":47843,"t":"code","b":[201,62],"m":"cmp","o":"#$3E"},{"a":47845,"t":"code","b":[208,6],"m":"bne","oa":47853,"o":"b_BAED"},{"a":47847,"t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":47849,"t":"code","b":[32,6,187],"m":"jsr","oa":47878,"o":"set_sprite2_pointer"},{"a":47852,"t":"code","b":[96],"m":"rts"},{"a":47853,"l":"b_BAED","t":"code","b":[169,62],"m":"lda","o":"#$3E","x":[47845]},{"a":47855,"t":"code","b":[32,6,187],"m":"jsr","oa":47878,"o":"set_sprite2_pointer"},{"a":47858,"t":"code","b":[96],"m":"rts"},{"a":47859,"l":"b_BAF3","t":"code","b":[173,250,7],"m":"lda","oa":2042,"o":"spr2_pointer","x":[47838]},{"a":47862,"t":"code","b":[201,36],"m":"cmp","o":"#$24"},{"a":47864,"t":"code","b":[208,6],"m":"bne","oa":47872,"o":"b_BB00"},{"a":47866,"t":"code","b":[169,41],"m":"lda","o":"#$29"},{"a":47868,"t":"code","b":[32,6,187],"m":"jsr","oa":47878,"o":"set_sprite2_pointer"},{"a":47871,"t":"code","b":[96],"m":"rts"},{"a":47872,"l":"b_BB00","t":"code","b":[169,36],"m":"lda","o":"#$24","x":[47864]},{"a":47874,"t":"code","b":[32,6,187],"m":"jsr","oa":47878,"o":"set_sprite2_pointer"},{"a":47877,"l":"r_BB05","t":"code","b":[96],"m":"rts","x":[47829]},{"a":47878,"l":"set_sprite2_pointer","c":"Stores A into sprite 2 pointer $07FA and clears the frame counter $100A.","t":"code","b":[141,250,7],"m":"sta","oa":2042,"o":"spr2_pointer","x":[47849,47855,47868,47874]},{"a":47881,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47883,"t":"code","b":[141,10,16],"m":"sta","oa":4106,"o":"anim_count_100a"},{"a":47886,"t":"code","b":[96],"m":"rts"},{"a":47887,"t":"gap","n":1},{"a":47888,"l":"check_floor_hazards","c":"Per-room deadly floor spots, called from $5590: first the collision and pickup dispatcher $8E10, then, by room id $100C, kills Mr Hat (JSR $A877 or $55F5, which is JMP $A877) when he stands at an exact height inside an X window ($A97C with A=$01, no stick needed). Heights: $B4 bottom floor, $5C upper floor. Windows: room 4 left X $C8-$EB and right X $18-$33 (+256); room 5 left $24-$53 and $C8-$E7; room 6 left, upper $3C-$5B, lower $34-$5B, $A8-$CB, $DC-$FB; room 7 left $5C-$83; room 9 left $44-$6B; room 8 upper right $04-$33, lower right $24-$4B, lower left $A8-$C7; room $11: room11_barrier, then left upper $B8-$EF. The height must match exactly, so presumably a jump carries him over (not tested). While he is immune $A877 is an RTS and nothing happens.","t":"code","b":[32,16,142],"m":"jsr","oa":36368,"o":"collisions_and_pickups","x":[21904]},{"a":47891,"t":"code","b":[173,12,16],"m":"lda","oa":4108,"o":"room_number"},{"a":47894,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":47896,"t":"code","b":[208,53],"m":"bne","oa":47951,"o":"b_BB4F"},{"a":47898,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":47901,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":47903,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":47905,"t":"code","b":[240,22],"m":"beq","oa":47929,"o":"b_BB39"},{"a":47907,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":47909,"t":"code","b":[162,200],"m":"ldx","o":"#$C8"},{"a":47911,"t":"code","b":[160,236],"m":"ldy","o":"#$EC"},{"a":47913,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":47916,"t":"code","b":[144,32],"m":"bcc","oa":47950,"o":"r_BB4E"},{"a":47918,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":47921,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":47923,"t":"code","b":[208,25],"m":"bne","oa":47950,"o":"r_BB4E"},{"a":47925,"t":"code","b":[32,119,168],"m":"jsr","oa":43127,"o":"hat_death"},{"a":47928,"t":"code","b":[96],"m":"rts"},{"a":47929,"l":"b_BB39","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[47905]},{"a":47931,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":47933,"t":"code","b":[160,52],"m":"ldy","o":"#$34"},{"a":47935,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":47938,"t":"code","b":[144,10],"m":"bcc","oa":47950,"o":"r_BB4E"},{"a":47940,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":47943,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":47945,"t":"code","b":[208,3],"m":"bne","oa":47950,"o":"r_BB4E"},{"a":47947,"t":"code","b":[32,119,168],"m":"jsr","oa":43127,"o":"hat_death"},{"a":47950,"l":"r_BB4E","t":"code","b":[96],"m":"rts","x":[47916,47923,47938,47945]},{"a":47951,"l":"b_BB4F","t":"code","b":[201,5],"m":"cmp","o":"#$05","x":[47896]},{"a":47953,"t":"code","b":[208,53],"m":"bne","oa":48008,"o":"b_BB88"},{"a":47955,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":47958,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":47960,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":47962,"t":"code","b":[240,43],"m":"beq","oa":48007,"o":"r_BB87"},{"a":47964,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":47966,"t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":47968,"t":"code","b":[160,84],"m":"ldy","o":"#$54"},{"a":47970,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":47973,"t":"code","b":[144,11],"m":"bcc","oa":47986,"o":"b_BB72"},{"a":47975,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":47978,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":47980,"t":"code","b":[208,3],"m":"bne","oa":47985,"o":"r_BB71"},{"a":47982,"t":"code","b":[32,119,168],"m":"jsr","oa":43127,"o":"hat_death"},{"a":47985,"l":"r_BB71","t":"code","b":[96],"m":"rts","x":[47980]},{"a":47986,"l":"b_BB72","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[47973]},{"a":47988,"t":"code","b":[162,200],"m":"ldx","o":"#$C8"},{"a":47990,"t":"code","b":[160,232],"m":"ldy","o":"#$E8"},{"a":47992,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":47995,"t":"code","b":[144,10],"m":"bcc","oa":48007,"o":"r_BB87"},{"a":47997,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48000,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":48002,"t":"code","b":[208,3],"m":"bne","oa":48007,"o":"r_BB87"},{"a":48004,"t":"code","b":[32,119,168],"m":"jsr","oa":43127,"o":"hat_death"},{"a":48007,"l":"r_BB87","t":"code","b":[96],"m":"rts","x":[47962,47995,48002]},{"a":48008,"l":"b_BB88","t":"code","b":[201,6],"m":"cmp","o":"#$06","x":[47953]},{"a":48010,"t":"code","b":[208,104],"m":"bne","oa":48116,"o":"b_BBF4"},{"a":48012,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":48015,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":48017,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":48019,"t":"code","b":[240,94],"m":"beq","oa":48115,"o":"r_BBF3"},{"a":48021,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48024,"t":"code","b":[201,160],"m":"cmp","o":"#$A0"},{"a":48026,"t":"code","b":[176,22],"m":"bcs","oa":48050,"o":"b_BBB2"},{"a":48028,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48030,"t":"code","b":[162,60],"m":"ldx","o":"#$3C"},{"a":48032,"t":"code","b":[160,92],"m":"ldy","o":"#$5C"},{"a":48034,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48037,"t":"code","b":[144,10],"m":"bcc","oa":48049,"o":"r_BBB1"},{"a":48039,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48042,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":48044,"t":"code","b":[208,3],"m":"bne","oa":48049,"o":"r_BBB1"},{"a":48046,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48049,"l":"r_BBB1","t":"code","b":[96],"m":"rts","x":[48037,48044]},{"a":48050,"l":"b_BBB2","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[48026]},{"a":48052,"t":"code","b":[162,52],"m":"ldx","o":"#$34"},{"a":48054,"t":"code","b":[160,92],"m":"ldy","o":"#$5C"},{"a":48056,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48059,"t":"code","b":[144,11],"m":"bcc","oa":48072,"o":"b_BBC8"},{"a":48061,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48064,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":48066,"t":"code","b":[208,3],"m":"bne","oa":48071,"o":"r_BBC7"},{"a":48068,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48071,"l":"r_BBC7","t":"code","b":[96],"m":"rts","x":[48066]},{"a":48072,"l":"b_BBC8","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[48059]},{"a":48074,"t":"code","b":[162,168],"m":"ldx","o":"#$A8"},{"a":48076,"t":"code","b":[160,204],"m":"ldy","o":"#$CC"},{"a":48078,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48081,"t":"code","b":[144,11],"m":"bcc","oa":48094,"o":"b_BBDE"},{"a":48083,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48086,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":48088,"t":"code","b":[208,3],"m":"bne","oa":48093,"o":"r_BBDD"},{"a":48090,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48093,"l":"r_BBDD","t":"code","b":[96],"m":"rts","x":[48088]},{"a":48094,"l":"b_BBDE","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[48081]},{"a":48096,"t":"code","b":[162,220],"m":"ldx","o":"#$DC"},{"a":48098,"t":"code","b":[160,252],"m":"ldy","o":"#$FC"},{"a":48100,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48103,"t":"code","b":[144,10],"m":"bcc","oa":48115,"o":"r_BBF3"},{"a":48105,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48108,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":48110,"t":"code","b":[208,3],"m":"bne","oa":48115,"o":"r_BBF3"},{"a":48112,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48115,"l":"r_BBF3","t":"code","b":[96],"m":"rts","x":[48019,48103,48110]},{"a":48116,"l":"b_BBF4","t":"code","b":[201,7],"m":"cmp","o":"#$07","x":[48010]},{"a":48118,"t":"code","b":[208,31],"m":"bne","oa":48151,"o":"b_BC17"},{"a":48120,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":48123,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":48125,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":48127,"t":"code","b":[240,21],"m":"beq","oa":48150,"o":"r_BC16"},{"a":48129,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48131,"t":"code","b":[162,92],"m":"ldx","o":"#$5C"},{"a":48133,"t":"code","b":[160,132],"m":"ldy","o":"#$84"},{"a":48135,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48138,"t":"code","b":[144,10],"m":"bcc","oa":48150,"o":"r_BC16"},{"a":48140,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48143,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":48145,"t":"code","b":[208,3],"m":"bne","oa":48150,"o":"r_BC16"},{"a":48147,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48150,"l":"r_BC16","t":"code","b":[96],"m":"rts","x":[48127,48138,48145]},{"a":48151,"l":"b_BC17","t":"code","b":[201,9],"m":"cmp","o":"#$09","x":[48118]},{"a":48153,"t":"code","b":[208,31],"m":"bne","oa":48186,"o":"b_BC3A"},{"a":48155,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":48158,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":48160,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":48162,"t":"code","b":[240,21],"m":"beq","oa":48185,"o":"r_BC39"},{"a":48164,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48166,"t":"code","b":[162,68],"m":"ldx","o":"#$44"},{"a":48168,"t":"code","b":[160,108],"m":"ldy","o":"#$6C"},{"a":48170,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48173,"t":"code","b":[144,10],"m":"bcc","oa":48185,"o":"r_BC39"},{"a":48175,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48178,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":48180,"t":"code","b":[208,3],"m":"bne","oa":48185,"o":"r_BC39"},{"a":48182,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48185,"l":"r_BC39","t":"code","b":[96],"m":"rts","x":[48162,48173,48180]},{"a":48186,"l":"b_BC3A","t":"code","b":[201,8],"m":"cmp","o":"#$08","x":[48153]},{"a":48188,"t":"code","b":[208,91],"m":"bne","oa":48281,"o":"b_BC99"},{"a":48190,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48193,"t":"code","b":[201,160],"m":"cmp","o":"#$A0"},{"a":48195,"t":"code","b":[176,31],"m":"bcs","oa":48228,"o":"b_BC64"},{"a":48197,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":48200,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":48202,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":48204,"t":"code","b":[208,21],"m":"bne","oa":48227,"o":"r_BC63"},{"a":48206,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48208,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":48210,"t":"code","b":[160,52],"m":"ldy","o":"#$34"},{"a":48212,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48215,"t":"code","b":[144,10],"m":"bcc","oa":48227,"o":"r_BC63"},{"a":48217,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48220,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":48222,"t":"code","b":[208,3],"m":"bne","oa":48227,"o":"r_BC63"},{"a":48224,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48227,"l":"r_BC63","t":"code","b":[96],"m":"rts","x":[48204,48215,48222]},{"a":48228,"l":"b_BC64","t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb","x":[48195]},{"a":48231,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":48233,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":48235,"t":"code","b":[208,22],"m":"bne","oa":48259,"o":"b_BC83"},{"a":48237,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48239,"t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":48241,"t":"code","b":[160,76],"m":"ldy","o":"#$4C"},{"a":48243,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48246,"t":"code","b":[144,10],"m":"bcc","oa":48258,"o":"r_BC82"},{"a":48248,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48251,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":48253,"t":"code","b":[208,3],"m":"bne","oa":48258,"o":"r_BC82"},{"a":48255,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48258,"l":"r_BC82","t":"code","b":[96],"m":"rts","x":[48246,48253]},{"a":48259,"l":"b_BC83","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[48235]},{"a":48261,"t":"code","b":[162,168],"m":"ldx","o":"#$A8"},{"a":48263,"t":"code","b":[160,200],"m":"ldy","o":"#$C8"},{"a":48265,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48268,"t":"code","b":[144,10],"m":"bcc","oa":48280,"o":"r_BC98"},{"a":48270,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48273,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":48275,"t":"code","b":[208,3],"m":"bne","oa":48280,"o":"r_BC98"},{"a":48277,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48280,"l":"r_BC98","t":"code","b":[96],"m":"rts","x":[48268,48275]},{"a":48281,"l":"b_BC99","t":"code","b":[201,17],"m":"cmp","o":"#$11","x":[48188]},{"a":48283,"t":"code","b":[208,31],"m":"bne","oa":48316,"o":"r_BCBC"},{"a":48285,"t":"code","b":[32,134,180],"m":"jsr","oa":46214,"o":"room11_barrier"},{"a":48288,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":48290,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":48292,"t":"code","b":[240,21],"m":"beq","oa":48315,"o":"r_BCBB"},{"a":48294,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48296,"t":"code","b":[162,184],"m":"ldx","o":"#$B8"},{"a":48298,"t":"code","b":[160,240],"m":"ldy","o":"#$F0"},{"a":48300,"t":"code","b":[32,124,169],"m":"jsr","oa":43388,"o":"hat_in_window"},{"a":48303,"t":"code","b":[144,10],"m":"bcc","oa":48315,"o":"r_BCBB"},{"a":48305,"t":"code","b":[173,9,208],"m":"lda","o":"vic_sprite4_y"},{"a":48308,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":48310,"t":"code","b":[208,3],"m":"bne","oa":48315,"o":"r_BCBB"},{"a":48312,"t":"code","b":[32,245,85],"m":"jsr","oa":22005,"o":"kill_hat"},{"a":48315,"l":"r_BCBB","t":"code","b":[96],"m":"rts","x":[48292,48303,48310]},{"a":48316,"l":"r_BCBC","t":"code","b":[96],"m":"rts","x":[48283]},{"a":48317,"t":"gap","n":3},{"a":48320,"l":"draw_sparkle_ball","c":"Draws the 2x2-cell treasure gfx_sparkle_ball ($B070) at cell X,Y in colour byte $7C ($A67F colours, $A690 graphics). Called from draw_room_objects for rooms 2 and 4.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[48531,48569]},{"a":48322,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48324,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48326,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48328,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48330,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48332,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48334,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48336,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48339,"t":"code","b":[169,112],"m":"lda","o":"#$70"},{"a":48341,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48343,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":48345,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48347,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48350,"t":"code","b":[96],"m":"rts"},{"a":48351,"l":"draw_invuln_object","c":"Draws the 2x2-cell object gfx_invuln_object ($B0E0) at cell X,Y in colour byte $DC. Called from draw_room_objects for rooms 3 and 7; taking it (the dispatcher at $8E94 and $8F9E) calls $1250, the immunity.","t":"code","b":[169,220],"m":"lda","o":"#$DC","x":[48550,48660]},{"a":48353,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48355,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48357,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48359,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48361,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48363,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48365,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48367,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48370,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":48372,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48374,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":48376,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48378,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48381,"t":"code","b":[96],"m":"rts"},{"a":48382,"l":"erase_2x2","c":"Removes a 2x2-cell object at cell X,Y: colour byte $CC (both nibbles $C) over the cells, drawn with the first bytes of the chest-of-drawers tile at $AF40 (invisible, since both colours are $C). Used to remove taken 2x2 treasures and switches.","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[36444,36492,36574,36710,36758,45351,45433,45474,45829,45963,46062,46107]},{"a":48384,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48386,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48388,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48390,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48392,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48394,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48396,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48398,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48401,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":48403,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48405,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":48407,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48409,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48412,"t":"code","b":[96],"m":"rts"},{"a":48413,"l":"erase_2x3","c":"Removes a 2x3-cell object (2 wide, 3 high) at cell X,Y the same way as erase_2x2: colour $CC, graphics $AF40. Used for the trophies and the room 4 ball.","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[36410,36540,36622,36676,45385]},{"a":48415,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48417,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48419,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48421,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48423,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48425,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":48427,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48429,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48432,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":48434,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48436,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":48438,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48440,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48443,"t":"code","b":[96],"m":"rts"},{"a":48444,"l":"erase_3x3","c":"Removes a 3x3-cell object at cell X,Y: colour $CC, graphics $AF40. Used once, for the room 3 keyhole icon (room3_take_keyhole).","t":"code","b":[169,204],"m":"lda","o":"#$CC","x":[45918]},{"a":48446,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48448,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48450,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48452,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":48454,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48456,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":48458,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48460,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48463,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":48465,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48467,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":48469,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48471,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48474,"t":"code","b":[96],"m":"rts"},{"a":48475,"l":"clear_object_flags","c":"Clears the 64 bytes $1371-$13B0: the treasure flags $1371-$137D and the switch, keyhole and barrier flags $1380-$1389, so that every object is back. Called from $6F1C, which then sets room id 0 and $1018 = 0 (apparently the new-game set-up).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[28444]},{"a":48477,"l":"b_BD5D","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[48485]},{"a":48479,"t":"code","b":[157,113,19],"m":"sta","oa":4977,"o":"object_flag_1371,x"},{"a":48482,"t":"code","b":[232],"m":"inx"},{"a":48483,"t":"code","b":[224,64],"m":"cpx","o":"#$40"},{"a":48485,"t":"code","b":[208,246],"m":"bne","oa":48477,"o":"b_BD5D"},{"a":48487,"t":"code","b":[96],"m":"rts"},{"a":48488,"t":"gap","n":2},{"a":48490,"l":"draw_room_objects","c":"Draws the objects of the current room that have not been taken, called from $A4FD just before the screen is switched back on; does nothing while the screen is on ($D011 bit 4 set). By room id $100C: room 2 fixtures ($B1B0), trophy at (14,5) unless $1371, ball at (16,17) unless $1372; room 3 keyhole ($B1EC), invulnerability object at (32,17) unless $1373; room 4 ball at (4,17) unless $1374, ring at (27,17) unless $1375; room 5 switch ($B1FF), yellow trophy at (26,5) unless $1376; room 6 (only if zero-page $22 is non-zero) switch and lock ($B214), yellow trophy at (3,5) unless $1377, green ring at (15,17) unless $1378; room 7 invulnerability object at (16,17) unless $1379; room 8 switch ($B247), ring at (22,6) unless $137A, cyan trophy at (3,16) unless $137B; room 9 barriers ($B25C), green rings at (27,17) unless $137C and (32,17) unless $137D; other rooms draw_room11_barrier.","t":"code","b":[173,17,208],"m":"lda","o":"vic_control1","x":[42237]},{"a":48493,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":48495,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":48497,"t":"code","b":[240,35],"m":"beq","oa":48534,"o":"r_BD96"},{"a":48499,"t":"code","b":[173,12,16],"m":"lda","oa":4108,"o":"room_number"},{"a":48502,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":48504,"t":"code","b":[208,29],"m":"bne","oa":48535,"o":"b_BD97"},{"a":48506,"t":"code","b":[32,176,177],"m":"jsr","oa":45488,"o":"draw_room2_fixtures"},{"a":48509,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48511,"t":"code","b":[208,7],"m":"bne","oa":48520,"o":"b_BD88"},{"a":48513,"t":"code","b":[162,14],"m":"ldx","o":"#$0E"},{"a":48515,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":48517,"t":"code","b":[32,96,190],"m":"jsr","oa":48736,"o":"draw_trophy"},{"a":48520,"l":"b_BD88","t":"code","b":[173,114,19],"m":"lda","oa":4978,"o":"object_flag_1372","x":[48511]},{"a":48523,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48525,"t":"code","b":[208,7],"m":"bne","oa":48534,"o":"r_BD96"},{"a":48527,"t":"code","b":[162,16],"m":"ldx","o":"#$10"},{"a":48529,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":48531,"t":"code","b":[32,192,188],"m":"jsr","oa":48320,"o":"draw_sparkle_ball"},{"a":48534,"l":"r_BD96","t":"code","b":[96],"m":"rts","x":[48497,48525]},{"a":48535,"l":"b_BD97","t":"code","b":[201,3],"m":"cmp","o":"#$03","x":[48504]},{"a":48537,"t":"code","b":[208,15],"m":"bne","oa":48554,"o":"b_BDAA"},{"a":48539,"t":"code","b":[32,236,177],"m":"jsr","oa":45548,"o":"draw_room3_keyhole"},{"a":48542,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48544,"t":"code","b":[208,7],"m":"bne","oa":48553,"o":"r_BDA9"},{"a":48546,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":48548,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":48550,"t":"code","b":[32,223,188],"m":"jsr","oa":48351,"o":"draw_invuln_object"},{"a":48553,"l":"r_BDA9","t":"code","b":[96],"m":"rts","x":[48544]},{"a":48554,"l":"b_BDAA","t":"code","b":[201,4],"m":"cmp","o":"#$04","x":[48537]},{"a":48556,"t":"code","b":[208,29],"m":"bne","oa":48587,"o":"b_BDCB"},{"a":48558,"t":"code","b":[173,116,19],"m":"lda","oa":4980,"o":"object_flag_1374"},{"a":48561,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48563,"t":"code","b":[208,7],"m":"bne","oa":48572,"o":"b_BDBC"},{"a":48565,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":48567,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":48569,"t":"code","b":[32,192,188],"m":"jsr","oa":48320,"o":"draw_sparkle_ball"},{"a":48572,"l":"b_BDBC","t":"code","b":[173,117,19],"m":"lda","oa":4981,"o":"object_flag_1375","x":[48563]},{"a":48575,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48577,"t":"code","b":[208,7],"m":"bne","oa":48586,"o":"r_BDCA"},{"a":48579,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":48581,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":48583,"t":"code","b":[32,171,190],"m":"jsr","oa":48811,"o":"draw_ring"},{"a":48586,"l":"r_BDCA","t":"code","b":[96],"m":"rts","x":[48577]},{"a":48587,"l":"b_BDCB","t":"code","b":[201,5],"m":"cmp","o":"#$05","x":[48556]},{"a":48589,"t":"code","b":[208,15],"m":"bne","oa":48606,"o":"b_BDDE"},{"a":48591,"t":"code","b":[32,255,177],"m":"jsr","oa":45567,"o":"draw_room5_switch"},{"a":48594,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48596,"t":"code","b":[208,7],"m":"bne","oa":48605,"o":"r_BDDD"},{"a":48598,"t":"code","b":[162,26],"m":"ldx","o":"#$1A"},{"a":48600,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":48602,"t":"code","b":[32,247,190],"m":"jsr","oa":48887,"o":"draw_trophy_yellow"},{"a":48605,"l":"r_BDDD","t":"code","b":[96],"m":"rts","x":[48596]},{"a":48606,"l":"b_BDDE","t":"code","b":[201,6],"m":"cmp","o":"#$06","x":[48589]},{"a":48608,"t":"code","b":[208,35],"m":"bne","oa":48645,"o":"b_BE05"},{"a":48610,"t":"code","b":[165,34],"m":"lda","oa":34,"o":"flag_obj_0022"},{"a":48612,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48614,"t":"code","b":[240,28],"m":"beq","oa":48644,"o":"r_BE04"},{"a":48616,"t":"code","b":[32,20,178],"m":"jsr","oa":45588,"o":"draw_room6_switch_lock"},{"a":48619,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48621,"t":"code","b":[208,7],"m":"bne","oa":48630,"o":"b_BDF6"},{"a":48623,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":48625,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":48627,"t":"code","b":[32,247,190],"m":"jsr","oa":48887,"o":"draw_trophy_yellow"},{"a":48630,"l":"b_BDF6","t":"code","b":[173,120,19],"m":"lda","oa":4984,"o":"object_flag_1378","x":[48621]},{"a":48633,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48635,"t":"code","b":[208,7],"m":"bne","oa":48644,"o":"r_BE04"},{"a":48637,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":48639,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":48641,"t":"code","b":[32,5,191],"m":"jsr","oa":48901,"o":"draw_ring_green"},{"a":48644,"l":"r_BE04","t":"code","b":[96],"m":"rts","x":[48614,48635]},{"a":48645,"l":"b_BE05","t":"code","b":[201,7],"m":"cmp","o":"#$07","x":[48608]},{"a":48647,"t":"code","b":[208,15],"m":"bne","oa":48664,"o":"b_BE18"},{"a":48649,"t":"code","b":[173,121,19],"m":"lda","oa":4985,"o":"object_flag_1379"},{"a":48652,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48654,"t":"code","b":[208,7],"m":"bne","oa":48663,"o":"r_BE17"},{"a":48656,"t":"code","b":[162,16],"m":"ldx","o":"#$10"},{"a":48658,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":48660,"t":"code","b":[32,223,188],"m":"jsr","oa":48351,"o":"draw_invuln_object"},{"a":48663,"l":"r_BE17","t":"code","b":[96],"m":"rts","x":[48654]},{"a":48664,"l":"b_BE18","t":"code","b":[201,8],"m":"cmp","o":"#$08","x":[48647]},{"a":48666,"t":"code","b":[208,29],"m":"bne","oa":48697,"o":"b_BE39"},{"a":48668,"t":"code","b":[32,71,178],"m":"jsr","oa":45639,"o":"draw_room8_switch"},{"a":48671,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48673,"t":"code","b":[208,7],"m":"bne","oa":48682,"o":"b_BE2A"},{"a":48675,"t":"code","b":[162,22],"m":"ldx","o":"#$16"},{"a":48677,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":48679,"t":"code","b":[32,171,190],"m":"jsr","oa":48811,"o":"draw_ring"},{"a":48682,"l":"b_BE2A","t":"code","b":[173,123,19],"m":"lda","oa":4987,"o":"object_flag_137b","x":[48673]},{"a":48685,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48687,"t":"code","b":[208,7],"m":"bne","oa":48696,"o":"r_BE38"},{"a":48689,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":48691,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":48693,"t":"code","b":[32,19,191],"m":"jsr","oa":48915,"o":"draw_trophy_cyan"},{"a":48696,"l":"r_BE38","t":"code","b":[96],"m":"rts","x":[48687]},{"a":48697,"l":"b_BE39","t":"code","b":[201,9],"m":"cmp","o":"#$09","x":[48666]},{"a":48699,"t":"code","b":[208,29],"m":"bne","oa":48730,"o":"b_BE5A"},{"a":48701,"t":"code","b":[32,92,178],"m":"jsr","oa":45660,"o":"draw_room9_barriers"},{"a":48704,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48706,"t":"code","b":[208,7],"m":"bne","oa":48715,"o":"b_BE4B"},{"a":48708,"t":"code","b":[162,27],"m":"ldx","o":"#$1B"},{"a":48710,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":48712,"t":"code","b":[32,5,191],"m":"jsr","oa":48901,"o":"draw_ring_green"},{"a":48715,"l":"b_BE4B","t":"code","b":[173,125,19],"m":"lda","oa":4989,"o":"object_flag_137d","x":[48706]},{"a":48718,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48720,"t":"code","b":[208,7],"m":"bne","oa":48729,"o":"r_BE59"},{"a":48722,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":48724,"t":"code","b":[160,17],"m":"ldy","o":"#$11"},{"a":48726,"t":"code","b":[32,5,191],"m":"jsr","oa":48901,"o":"draw_ring_green"},{"a":48729,"l":"r_BE59","t":"code","b":[96],"m":"rts","x":[48720]},{"a":48730,"l":"b_BE5A","t":"code","b":[32,176,178],"m":"jsr","oa":45744,"o":"draw_room11_barrier","x":[48699]},{"a":48733,"t":"code","b":[96],"m":"rts"},{"a":48734,"t":"gap","n":2},{"a":48736,"l":"draw_trophy","c":"Draws the trophy at cell X,Y: the 2x2 cup from $B0B0 in the colour byte held in the operand at $BE67 (normally $6C), then the 2x1 foot from $B0D0 at row Y+2 in colour $9C. X,Y are kept in $1E06/$1E07 between the two halves.","t":"code","b":[142,6,30],"m":"stx","oa":7686,"o":"range_lo_or_column","x":[48517,48892,48920]},{"a":48739,"t":"code","b":[140,7,30],"m":"sty","oa":7687,"o":"range_hi_or_row"},{"a":48742,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":48743,"t":"note","l":"trophy_colour_op","c":"Operand of LDA #$6C at $BE66: the trophy cup colour, rewritten to $7C by draw_trophy_yellow and to $3C by draw_trophy_cyan for one call, then put back to $6C.","note":"inside the item at $BE66","x":[48889,48897,48917,48925]},{"a":48744,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48746,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48748,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48750,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48752,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48754,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48756,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48758,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48761,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":48763,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48765,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":48767,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48769,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48772,"t":"code","b":[174,6,30],"m":"ldx","oa":7686,"o":"range_lo_or_column"},{"a":48775,"t":"code","b":[172,7,30],"m":"ldy","oa":7687,"o":"range_hi_or_row"},{"a":48778,"t":"code","b":[200],"m":"iny"},{"a":48779,"t":"code","b":[200],"m":"iny"},{"a":48780,"t":"code","b":[169,156],"m":"lda","o":"#$9C"},{"a":48782,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48784,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48786,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48788,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48790,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48792,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48794,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48796,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48799,"t":"code","b":[169,208],"m":"lda","o":"#$D0"},{"a":48801,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48803,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":48805,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48807,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48810,"t":"code","b":[96],"m":"rts"},{"a":48811,"l":"draw_ring","c":"Draws the ring at cell X,Y: the top row (gem) from $B090 in the colour byte held at $BEB2 (normally $3C), and the band from $B0A0 at row Y+1 in colour $7C.","t":"code","b":[142,6,30],"m":"stx","oa":7686,"o":"range_lo_or_column","x":[48583,48679,48906]},{"a":48814,"t":"code","b":[140,7,30],"m":"sty","oa":7687,"o":"range_hi_or_row"},{"a":48817,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":48818,"t":"note","l":"ring_colour_op","c":"Operand of LDA #$3C at $BEB1: the ring gem colour, set to $DC by draw_ring_green for one call.","note":"inside the item at $BEB1","x":[48903,48911]},{"a":48819,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48821,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48823,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48825,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48827,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48829,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48831,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48833,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48836,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":48838,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48840,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":48842,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48844,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48847,"t":"code","b":[174,6,30],"m":"ldx","oa":7686,"o":"range_lo_or_column"},{"a":48850,"t":"code","b":[172,7,30],"m":"ldy","oa":7687,"o":"range_hi_or_row"},{"a":48853,"t":"code","b":[200],"m":"iny"},{"a":48854,"t":"code","b":[234],"m":"nop"},{"a":48855,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":48857,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48859,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48861,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48863,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48865,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":48867,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48869,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":48871,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":48874,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":48876,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48878,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":48880,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":48882,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":48885,"t":"code","b":[96],"m":"rts"},{"a":48886,"t":"gap","n":1},{"a":48887,"l":"draw_trophy_yellow","c":"Draws the trophy with the cup in colour $7C (patches $BE67, calls draw_trophy, restores $6C). Rooms 5 and 6.","t":"code","b":[169,124],"m":"lda","o":"#$7C","x":[48602,48627]},{"a":48889,"t":"code","b":[141,103,190],"m":"sta","oa":48743,"o":"trophy_colour_op"},{"a":48892,"t":"code","b":[32,96,190],"m":"jsr","oa":48736,"o":"draw_trophy"},{"a":48895,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":48897,"t":"code","b":[141,103,190],"m":"sta","oa":48743,"o":"trophy_colour_op"},{"a":48900,"t":"code","b":[96],"m":"rts"},{"a":48901,"l":"draw_ring_green","c":"Draws the ring with the gem in colour $DC (patches $BEB2, calls draw_ring, restores $3C). Rooms 6 and 9.","t":"code","b":[169,220],"m":"lda","o":"#$DC","x":[48641,48712,48726]},{"a":48903,"t":"code","b":[141,178,190],"m":"sta","oa":48818,"o":"ring_colour_op"},{"a":48906,"t":"code","b":[32,171,190],"m":"jsr","oa":48811,"o":"draw_ring"},{"a":48909,"t":"code","b":[169,60],"m":"lda","o":"#$3C"},{"a":48911,"t":"code","b":[141,178,190],"m":"sta","oa":48818,"o":"ring_colour_op"},{"a":48914,"t":"code","b":[96],"m":"rts"},{"a":48915,"l":"draw_trophy_cyan","c":"Draws the trophy with the cup in colour $3C (patches $BE67, calls draw_trophy, restores $6C). Room 8.","t":"code","b":[169,60],"m":"lda","o":"#$3C","x":[48693]},{"a":48917,"t":"code","b":[141,103,190],"m":"sta","oa":48743,"o":"trophy_colour_op"},{"a":48920,"t":"code","b":[32,96,190],"m":"jsr","oa":48736,"o":"draw_trophy"},{"a":48923,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":48925,"t":"code","b":[141,103,190],"m":"sta","oa":48743,"o":"trophy_colour_op"},{"a":48928,"t":"code","b":[96],"m":"rts"},{"a":48929,"t":"gap","n":15},{"a":48944,"l":"irq_invuln_countdown","c":"IRQ stage reached from $8215 (JMP): while Mr Hat is immune ($A877 holds RTS, $60, as set by $1250) counts $100F up, steps the sprite multicolours $D025/$D026 on each pass (the flashing) and plays sfx_noise_burst; when $100F reaches $FE ends the immunity by writing JSR ($20) back to $4C52 and LDA ($AD) back to $A877 and setting $D026 = $0D, $D025 = $02, then goes on to sfx_select ($B530), as it does when he is not immune. A copy of $1265, which ends at $EA31 instead.","t":"code","b":[173,119,168],"m":"lda","oa":43127,"o":"hat_death","x":[33301]},{"a":48947,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":48949,"t":"code","b":[208,39],"m":"bne","oa":48990,"o":"b_BF5E"},{"a":48951,"t":"code","b":[238,15,16],"m":"inc","oa":4111,"o":"flash_timer"},{"a":48954,"t":"code","b":[173,15,16],"m":"lda","oa":4111,"o":"flash_timer"},{"a":48957,"t":"code","b":[201,254],"m":"cmp","o":"#$FE"},{"a":48959,"t":"code","b":[240,9],"m":"beq","oa":48970,"o":"b_BF4A"},{"a":48961,"t":"code","b":[238,38,208],"m":"inc","o":"vic_sprite_mc1"},{"a":48964,"t":"code","b":[238,37,208],"m":"inc","o":"vic_sprite_mc0"},{"a":48967,"t":"code","b":[76,75,181],"m":"jmp","oa":46411,"o":"sfx_noise_burst"},{"a":48970,"l":"b_BF4A","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[48959]},{"a":48972,"t":"code","b":[141,82,76],"m":"sta","oa":19538,"o":"lose_life"},{"a":48975,"t":"code","b":[169,173],"m":"lda","o":"#$AD"},{"a":48977,"t":"code","b":[141,119,168],"m":"sta","oa":43127,"o":"hat_death"},{"a":48980,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":48982,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":48985,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":48987,"t":"code","b":[141,37,208],"m":"sta","o":"vic_sprite_mc0"},{"a":48990,"l":"b_BF5E","t":"code","b":[76,48,181],"m":"jmp","oa":46384,"o":"sfx_select","x":[48949]},{"a":48993,"t":"gap","n":2},{"a":48995,"l":"draw_barrier_open_top","c":"Draws the white mark that shows a barrier open, top half: 2x1 cells at X,Y in colour $1C with the graphics at $AC68 (a drop shape).","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[36791,45533,45689,45728,45780]},{"a":48997,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":48999,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49001,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":49003,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":49005,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":49007,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":49009,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":49011,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":49014,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":49016,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":49018,"t":"code","b":[169,172],"m":"lda","o":"#$AC"},{"a":49020,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":49022,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":49025,"t":"code","b":[96],"m":"rts"},{"a":49026,"l":"draw_barrier_open_bottom","c":"Draws the lower white mark of an open barrier: 2x1 cells at X,Y in colour $1C with the graphics at $AC88.","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[36798,45540,45696,45735,45787]},{"a":49028,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":49030,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49032,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":49034,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":49036,"t":"code","b":[133,35],"m":"sta","oa":35,"o":"draw_width"},{"a":49038,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":49040,"t":"code","b":[133,32],"m":"sta","oa":32,"o":"draw_rows"},{"a":49042,"t":"code","b":[32,127,166],"m":"jsr","oa":42623,"o":"tile_colour_cells"},{"a":49045,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":49047,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"draw_src_lo"},{"a":49049,"t":"code","b":[169,172],"m":"lda","o":"#$AC"},{"a":49051,"t":"code","b":[133,40],"m":"sta","oa":40,"o":"draw_src_hi"},{"a":49053,"t":"code","b":[32,144,166],"m":"jsr","oa":42640,"o":"tile_draw"},{"a":49056,"t":"code","b":[96],"m":"rts"},{"a":49057,"t":"gap","n":7},{"a":49064,"l":"draw_ending_text","c":"The end screen, drawn instead of the cast by the title set-up $CDC0 when $1018 is non-zero (it is set to 1 at $7CED after the last room): CHR$(31), CHR$(147), border and background $0C, screen cleared ($1744), then WONDERFUL (row 7), YOU HAVE FINISHED YOUR (row 11), MISSION (row 15) from $B7D8-$B7FF in the two-row font (code, and code+$20 on the row below).","t":"code","b":[169,31],"m":"lda","o":"#$1F","x":[52725]},{"a":49066,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":49069,"t":"code","b":[169,147],"m":"lda","o":"#$93"},{"a":49071,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":49074,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":49076,"t":"code","b":[141,32,208],"m":"sta","o":"vic_border"},{"a":49079,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":49082,"t":"code","b":[32,68,23],"m":"jsr","oa":5956,"o":"clear_screen_ram"},{"a":49085,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":49087,"l":"b_BFBF","t":"code","b":[189,216,183],"m":"lda","oa":47064,"o":"str_wonderful,x","x":[49102]},{"a":49090,"t":"code","b":[157,39,5],"m":"sta","oa":1319,"o":"f_0527,x"},{"a":49093,"t":"code","b":[24],"m":"clc"},{"a":49094,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":49096,"t":"code","b":[157,79,5],"m":"sta","oa":1359,"o":"f_054F,x"},{"a":49099,"t":"code","b":[232],"m":"inx"},{"a":49100,"t":"code","b":[224,9],"m":"cpx","o":"#$09"},{"a":49102,"t":"code","b":[208,239],"m":"bne","oa":49087,"o":"b_BFBF"},{"a":49104,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":49106,"l":"b_BFD2","t":"code","b":[189,225,183],"m":"lda","oa":47073,"o":"str_you_have_finished_your,x","x":[49121]},{"a":49109,"t":"code","b":[157,192,5],"m":"sta","oa":1472,"o":"f_05C0,x"},{"a":49112,"t":"code","b":[24],"m":"clc"},{"a":49113,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":49115,"t":"code","b":[157,232,5],"m":"sta","oa":1512,"o":"f_05E8,x"},{"a":49118,"t":"code","b":[232],"m":"inx"},{"a":49119,"t":"code","b":[224,23],"m":"cpx","o":"#$17"},{"a":49121,"t":"code","b":[208,239],"m":"bne","oa":49106,"o":"b_BFD2"},{"a":49123,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":49125,"l":"b_BFE5","t":"code","b":[189,248,183],"m":"lda","oa":47096,"o":"str_mission,x","x":[49140]},{"a":49128,"t":"code","b":[157,104,6],"m":"sta","oa":1640,"o":"f_0668,x"},{"a":49131,"t":"code","b":[24],"m":"clc"},{"a":49132,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":49134,"t":"code","b":[157,144,6],"m":"sta","oa":1680,"o":"f_0690,x"},{"a":49137,"t":"code","b":[232],"m":"inx"},{"a":49138,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":49140,"t":"code","b":[208,239],"m":"bne","oa":49125,"o":"b_BFE5"},{"a":49142,"t":"code","b":[96],"m":"rts"},{"a":49143,"t":"gap","n":9},{"a":49152,"l":"str_title_mr_hat","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \"MR HAT\", 6 bytes, copied by $B6A1 to screen $0592 (top) and $05BA (bottom).","t":"byte","b":[13,18,0,8,1,20],"x":[46753]},{"a":49158,"l":"str_title_double_unused","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \" DOUBLE \", 8 bytes $C006-$C00D. No reader found (byte search for $C006-$C00D in the whole image, and $B683 skips from $C000 to $C00E): a leftover word the title does not show.","t":"byte","b":[0,4,15,21,2,12,5,0]},{"a":49166,"l":"str_title_octopus","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \"OCTOPUS\", 7 bytes, copied by $B6B4 to screen $05F0/$0618.","t":"byte","b":[15,3,20,15,16,21,19],"x":[46772]},{"a":49173,"l":"str_title_octopussy_tail","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \"SY \" ($13 $19 $00), 3 bytes after OCTOPUS that the copy at $B6B4 (7 bytes) never reaches: the string reads OCTOPUSSY; not shown.","t":"byte","b":[19,25,0]},{"a":49176,"l":"str_title_snaily","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \"SNAILY\", 6 bytes, copied by $B6C7 to screen $05AE/$05D6.","t":"byte","b":[19,14,1,9,12,25],"x":[46791]},{"a":49182,"l":"str_title_dynky","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \"DYNKY \" (spelt with a Y, as the title screen shows it), 6 bytes, copied by $B6DA to screen $06D9/$0701. The cherries the magazine calls Dinky.","t":"byte","b":[4,25,14,11,25,0],"x":[46810]},{"a":49188,"l":"str_title_kniffy","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \"KNIFFY \", 7 bytes, copied by $B6ED to screen $06E8/$0710.","t":"byte","b":[11,14,9,6,6,25,0],"x":[46829]},{"a":49195,"l":"str_title_and_all_others","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \"AND ALL OTHERS\", 14 bytes, copied by $B705 to screen $07A4/$07CC (colour 7, yellow, set at $B718).","t":"byte","b":[1,14,4,0,1,12,12,0],"x":[46853]},{"a":49203,"t":"byte","b":[15,20,8,5,18,19]},{"a":49209,"l":"str_title_systems_presents","c":"Title word, screen codes for the two-cell font at $CE00 (0 = blank, 1-26 = A-Z; the bottom half of each letter is code+32): \"SYSTEMS PRESENTS A NEW GAME WITH\", 32 bytes $C039-$C058, copied by $B789 to screen $0453 (top) and $047B (bottom), colour 13 set at $B79C.","t":"byte","b":[19,25,19,20,5,13,19,0],"x":[46985]},{"a":49217,"t":"byte","b":[16,18,5,19,5,14,20,19]},{"a":49225,"t":"byte","b":[0,1,0,14,5,23,0,7]},{"a":49233,"t":"byte","b":[1,13,5,0,23,9,20,8]},{"a":49241,"l":"title_text_unused_fill","c":"Unused: 39 zero bytes $C059-$C07F after the title words; no reader found.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49249,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49257,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49265,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49273,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":49280,"l":"music_restart","c":"Music: end-of-song restart. Reached by JMP from $C119 after the song has ended ($C103). 21 NOPs (room left for patching), then JSR music_init ($C09B) re-arms the player so its next IRQ starts the song again from the first position, and JMP ($CB05) chains to the saved KERNAL IRQ. So the title tune loops for as long as the title is up.","t":"code","b":[234],"m":"nop","x":[49433]},{"a":49281,"t":"code","b":[234],"m":"nop"},{"a":49282,"t":"code","b":[234],"m":"nop"},{"a":49283,"t":"code","b":[234],"m":"nop"},{"a":49284,"t":"code","b":[234],"m":"nop"},{"a":49285,"t":"code","b":[234],"m":"nop"},{"a":49286,"t":"code","b":[234],"m":"nop"},{"a":49287,"t":"code","b":[234],"m":"nop"},{"a":49288,"t":"code","b":[234],"m":"nop"},{"a":49289,"t":"code","b":[234],"m":"nop"},{"a":49290,"t":"code","b":[234],"m":"nop"},{"a":49291,"t":"code","b":[234],"m":"nop"},{"a":49292,"t":"code","b":[234],"m":"nop"},{"a":49293,"t":"code","b":[234],"m":"nop"},{"a":49294,"t":"code","b":[234],"m":"nop"},{"a":49295,"t":"code","b":[234],"m":"nop"},{"a":49296,"t":"code","b":[234],"m":"nop"},{"a":49297,"t":"code","b":[234],"m":"nop"},{"a":49298,"t":"code","b":[234],"m":"nop"},{"a":49299,"t":"code","b":[234],"m":"nop"},{"a":49300,"t":"code","b":[234],"m":"nop"},{"a":49301,"t":"code","b":[32,155,192],"m":"jsr","oa":49307,"o":"music_init"},{"a":49304,"t":"code","b":[108,5,203],"m":"jmp","oa":51973,"o":"(music_saved_irq)"},{"a":49307,"l":"music_init","c":"Music: initialise the player. Called by title_setup ($CDC0) and by music_restart ($C095). Clears music_voice_mode ($C437, all three voices play) and music_keys_enabled ($C439, the editor keyboard controls off), then JMPs to music_hook_irq ($C2D8), which saves the current IRQ vector $0314/$0315 in $CB05/$CB06 and points $0314 at music_first_irq ($C2EB). Returns to the caller with interrupts enabled.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[49301,52672]},{"a":49309,"t":"code","b":[141,55,196],"m":"sta","oa":50231,"o":"music_voice_mode"},{"a":49312,"t":"code","b":[141,57,196],"m":"sta","oa":50233,"o":"music_keys_enabled"},{"a":49315,"t":"code","b":[76,216,194],"m":"jmp","oa":49880,"o":"music_hook_irq"},{"a":49318,"l":"music_load_pattern_sound","c":"Music: called from $C1A3 with Y = music_pattern ($C434): loads that pattern's step length from music_tempo ($C443,Y) into music_tick_count ($C438), then falls through (JMP) to music_set_sid_sound ($C11D), which writes the pattern's SID sound set.","t":"code","b":[185,67,196],"m":"lda","oa":50243,"o":"music_tempo,y","x":[49571]},{"a":49321,"t":"code","b":[141,56,196],"m":"sta","oa":50232,"o":"music_tick_count"},{"a":49324,"t":"code","b":[76,29,193],"m":"jmp","oa":49437,"o":"music_set_sid_sound"},{"a":49327,"l":"music_irq","c":"Music: the title IRQ handler ($0314 = $C0AF, set by music_first_irq). Every IRQ it decrements music_tick_count ($C438); until it reaches zero it just chains to the saved KERNAL handler through ($CB05). At zero it reloads the count from music_tempo ($C443,pattern), advances music_step ($C436) and decides: past the end step (music_last_step $CA03) of the pattern's last block (music_block_last $C983) -> next pattern ($C0E4); past step 16 (music_block_len $C43C) of another block -> next block ($C2CD); otherwise play the new step ($C1CC -> $C357). Next pattern: music_pattern ($C434) + 1 while it is within the order entry's last pattern (music_order_last $CADB); otherwise music_position ($C433) + 1 and, while it is within music_song_len ($C43D), start at that entry's first pattern (music_order_first $CAC3, via $C183); otherwise the song has ended ($C103).","t":"code","b":[206,56,196],"m":"dec","oa":50232,"o":"music_tick_count"},{"a":49330,"t":"code","b":[240,3],"m":"beq","oa":49335,"o":"b_C0B7"},{"a":49332,"t":"code","b":[108,5,203],"m":"jmp","oa":51973,"o":"(music_saved_irq)"},{"a":49335,"l":"b_C0B7","t":"code","b":[172,52,196],"m":"ldy","oa":50228,"o":"music_pattern","x":[49330]},{"a":49338,"t":"code","b":[185,67,196],"m":"lda","oa":50243,"o":"music_tempo,y"},{"a":49341,"t":"code","b":[141,56,196],"m":"sta","oa":50232,"o":"music_tick_count"},{"a":49344,"t":"code","b":[238,54,196],"m":"inc","oa":50230,"o":"music_step"},{"a":49347,"t":"code","b":[185,131,201],"m":"lda","oa":51587,"o":"music_block_last,y"},{"a":49350,"t":"code","b":[205,53,196],"m":"cmp","oa":50229,"o":"music_block"},{"a":49353,"t":"code","b":[208,11],"m":"bne","oa":49366,"o":"b_C0D6"},{"a":49355,"t":"code","b":[185,3,202],"m":"lda","oa":51715,"o":"music_last_step,y"},{"a":49358,"t":"code","b":[205,54,196],"m":"cmp","oa":50230,"o":"music_step"},{"a":49361,"t":"code","b":[144,17],"m":"bcc","oa":49380,"o":"b_C0E4"},{"a":49363,"t":"code","b":[76,204,193],"m":"jmp","oa":49612,"o":"j_C1CC"},{"a":49366,"l":"b_C0D6","t":"code","b":[173,60,196],"m":"lda","oa":50236,"o":"music_block_len","x":[49353]},{"a":49369,"t":"code","b":[205,54,196],"m":"cmp","oa":50230,"o":"music_step"},{"a":49372,"t":"code","b":[144,3],"m":"bcc","oa":49377,"o":"b_C0E1"},{"a":49374,"t":"code","b":[76,204,193],"m":"jmp","oa":49612,"o":"j_C1CC"},{"a":49377,"l":"b_C0E1","t":"code","b":[76,205,194],"m":"jmp","oa":49869,"o":"music_next_block","x":[49372]},{"a":49380,"l":"b_C0E4","t":"code","b":[238,52,196],"m":"inc","oa":50228,"o":"music_pattern","x":[49361]},{"a":49383,"t":"code","b":[172,51,196],"m":"ldy","oa":50227,"o":"music_position"},{"a":49386,"t":"code","b":[185,219,202],"m":"lda","oa":51931,"o":"music_order_last,y"},{"a":49389,"t":"code","b":[205,52,196],"m":"cmp","oa":50228,"o":"music_pattern"},{"a":49392,"t":"code","b":[144,3],"m":"bcc","oa":49397,"o":"b_C0F5"},{"a":49394,"t":"code","b":[76,140,193],"m":"jmp","oa":49548,"o":"music_start_pattern"},{"a":49397,"l":"b_C0F5","t":"code","b":[238,51,196],"m":"inc","oa":50227,"o":"music_position","x":[49392]},{"a":49400,"t":"code","b":[173,61,196],"m":"lda","oa":50237,"o":"music_song_len"},{"a":49403,"t":"code","b":[205,51,196],"m":"cmp","oa":50227,"o":"music_position"},{"a":49406,"t":"code","b":[144,3],"m":"bcc","oa":49411,"o":"music_song_end"},{"a":49408,"t":"code","b":[76,131,193],"m":"jmp","oa":49539,"o":"music_start_position"},{"a":49411,"l":"music_song_end","c":"Music: the song has ended (or, with the editor keys on, a key other than 1/2/3/F7 was pressed, $C371). SEI, sets CIA 1 timer A latch $DC04/$DC05 to $411B (about 59 IRQs a second on PAL), JSR music_restore_irq ($CB07: $0314 back to the saved KERNAL vector), CLI, JMP music_restart ($C080), which re-arms the player. The SID is not silenced here; the voices ring on until the restart plays its first step.","t":"code","b":[120],"m":"sei","x":[49406,50033]},{"a":49412,"t":"code","b":[169,27],"m":"lda","o":"#$1B"},{"a":49414,"t":"code","b":[141,4,220],"m":"sta","o":"cia1_timer_a_lo"},{"a":49417,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":49419,"t":"code","b":[141,5,220],"m":"sta","o":"cia1_timer_a_hi"},{"a":49422,"t":"code","b":[32,7,203],"m":"jsr","oa":51975,"o":"music_restore_irq"},{"a":49425,"t":"code","b":[234],"m":"nop"},{"a":49426,"t":"code","b":[234],"m":"nop"},{"a":49427,"t":"code","b":[234],"m":"nop"},{"a":49428,"t":"code","b":[234],"m":"nop"},{"a":49429,"t":"code","b":[234],"m":"nop"},{"a":49430,"t":"code","b":[234],"m":"nop"},{"a":49431,"t":"code","b":[234],"m":"nop"},{"a":49432,"t":"code","b":[88],"m":"cli"},{"a":49433,"t":"code","b":[76,128,192],"m":"jmp","oa":49280,"o":"music_restart"},{"a":49436,"l":"music_pad_c11c","c":"A single NOP ($EA) between music_song_end's JMP $C080 and music_set_sid_sound: never executed, padding.","t":"byte","b":[234]},{"a":49437,"l":"music_set_sid_sound","c":"Music: write the sound set of pattern X = music_pattern ($C434) into the SID: attack/decay of voices 1-3 from $C543/$C583/$C5C3,X to $D405/$D40C/$D413; sustain/release from $C603/$C643/$C683,X to $D406/$D40D/$D414; pulse width lo from $C6C3/$C703/$C743,X to $D402/$D409/$D410 and hi from $C783/$C7C3/$C803,X to $D403/$D40A/$D411; filter resonance/routing $C843,X to $D417; filter mode/volume $C883,X to $D418; cutoff lo/hi $C8C3/$C903,X to $D415/$D416. The waveforms are applied per note (music_v1_ctrl $C483 and on). So the \"instrument\" is chosen per pattern, for all three voices at once, not per note.","t":"code","b":[174,52,196],"m":"ldx","oa":50228,"o":"music_pattern","x":[49324]},{"a":49440,"t":"code","b":[189,67,197],"m":"lda","oa":50499,"o":"music_v1_ad,x"},{"a":49443,"t":"code","b":[141,5,212],"m":"sta","o":"sid_v1_attack_decay"},{"a":49446,"t":"code","b":[189,131,197],"m":"lda","oa":50563,"o":"music_v2_ad,x"},{"a":49449,"t":"code","b":[141,12,212],"m":"sta","o":"sid_v2_attack_decay"},{"a":49452,"t":"code","b":[189,195,197],"m":"lda","oa":50627,"o":"music_v3_ad,x"},{"a":49455,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":49458,"t":"code","b":[189,3,198],"m":"lda","oa":50691,"o":"music_v1_sr,x"},{"a":49461,"t":"code","b":[141,6,212],"m":"sta","o":"sid_v1_sustain_release"},{"a":49464,"t":"code","b":[189,67,198],"m":"lda","oa":50755,"o":"music_v2_sr,x"},{"a":49467,"t":"code","b":[141,13,212],"m":"sta","o":"sid_v2_sustain_release"},{"a":49470,"t":"code","b":[189,131,198],"m":"lda","oa":50819,"o":"music_v3_sr,x"},{"a":49473,"t":"code","b":[141,20,212],"m":"sta","o":"sid_v3_sustain_release"},{"a":49476,"t":"code","b":[189,195,198],"m":"lda","oa":50883,"o":"music_v1_pw_lo,x"},{"a":49479,"t":"code","b":[141,2,212],"m":"sta","o":"sid_v1_pulse_lo"},{"a":49482,"t":"code","b":[189,3,199],"m":"lda","oa":50947,"o":"music_v2_pw_lo,x"},{"a":49485,"t":"code","b":[141,9,212],"m":"sta","o":"sid_v2_pulse_lo"},{"a":49488,"t":"code","b":[189,67,199],"m":"lda","oa":51011,"o":"music_v3_pw_lo,x"},{"a":49491,"t":"code","b":[141,16,212],"m":"sta","o":"sid_v3_pulse_lo"},{"a":49494,"t":"code","b":[189,131,199],"m":"lda","oa":51075,"o":"music_v1_pw_hi,x"},{"a":49497,"t":"code","b":[141,3,212],"m":"sta","o":"sid_v1_pulse_hi"},{"a":49500,"t":"code","b":[189,195,199],"m":"lda","oa":51139,"o":"music_v2_pw_hi,x"},{"a":49503,"t":"code","b":[141,10,212],"m":"sta","o":"sid_v2_pulse_hi"},{"a":49506,"t":"code","b":[189,3,200],"m":"lda","oa":51203,"o":"music_v3_pw_hi,x"},{"a":49509,"t":"code","b":[141,17,212],"m":"sta","o":"sid_v3_pulse_hi"},{"a":49512,"t":"code","b":[189,67,200],"m":"lda","oa":51267,"o":"music_filter_res,x"},{"a":49515,"t":"code","b":[141,23,212],"m":"sta","o":"sid_filter_resonance"},{"a":49518,"t":"code","b":[189,131,200],"m":"lda","oa":51331,"o":"music_filter_mode_vol,x"},{"a":49521,"t":"code","b":[234],"m":"nop"},{"a":49522,"t":"code","b":[234],"m":"nop"},{"a":49523,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":49526,"t":"code","b":[189,195,200],"m":"lda","oa":51395,"o":"music_filter_cut_lo,x"},{"a":49529,"t":"code","b":[141,21,212],"m":"sta","o":"sid_filter_cutoff_lo"},{"a":49532,"t":"code","b":[189,3,201],"m":"lda","oa":51459,"o":"music_filter_cut_hi,x"},{"a":49535,"t":"code","b":[141,22,212],"m":"sta","o":"sid_filter_cutoff_hi"},{"a":49538,"t":"code","b":[96],"m":"rts"},{"a":49539,"l":"music_start_position","c":"Music: start order position music_position ($C433): music_pattern ($C434) = music_order_first ($CAC3,position), then falls into music_start_pattern ($C18C).","t":"code","b":[172,51,196],"m":"ldy","oa":50227,"o":"music_position","x":[49408,49939]},{"a":49542,"t":"code","b":[185,195,202],"m":"lda","oa":51907,"o":"music_order_first,y"},{"a":49545,"t":"code","b":[141,52,196],"m":"sta","oa":50228,"o":"music_pattern"},{"a":49548,"l":"music_start_pattern","c":"Music: start pattern Y = music_pattern ($C434). Sets CIA 1 timer A latch $DC04/$DC05 from music_timer_lo/hi ($CA43/$CA83,Y) and force-loads it (ORA #$10 into $DC0E), so each pattern sets its own IRQ rate; JSR $C0A6 (step length and SID sound set); music_block ($C435) = music_block_first ($C943,Y), music_step ($C436) = music_first_step ($C9C3,Y); then computes the block pointer (at $C1B2) and plays the first step.","t":"code","b":[172,52,196],"m":"ldy","oa":50228,"o":"music_pattern","x":[49394]},{"a":49551,"t":"code","b":[185,67,202],"m":"lda","oa":51779,"o":"music_timer_lo,y"},{"a":49554,"t":"code","b":[141,4,220],"m":"sta","o":"cia1_timer_a_lo"},{"a":49557,"t":"code","b":[185,131,202],"m":"lda","oa":51843,"o":"music_timer_hi,y"},{"a":49560,"t":"code","b":[141,5,220],"m":"sta","o":"cia1_timer_a_hi"},{"a":49563,"t":"code","b":[173,14,220],"m":"lda","o":"cia1_control_a"},{"a":49566,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":49568,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":49571,"t":"code","b":[32,166,192],"m":"jsr","oa":49318,"o":"music_load_pattern_sound"},{"a":49574,"t":"code","b":[185,67,201],"m":"lda","oa":51523,"o":"music_block_first,y"},{"a":49577,"t":"code","b":[141,53,196],"m":"sta","oa":50229,"o":"music_block"},{"a":49580,"t":"code","b":[185,195,201],"m":"lda","oa":51651,"o":"music_first_step,y"},{"a":49583,"t":"code","b":[141,54,196],"m":"sta","oa":50230,"o":"music_step"},{"a":49586,"l":"music_block_pointer","c":"Music: point $C43A/$C43B at note block music_block ($C435): JSR $C31B (A = block, $C43B = 0), shift left six times (x 64) into $C43B:A, add $CAF2. Block n therefore sits at $CAF2 + 64 x n, with voice 1 at +$11..+$20, voice 2 at +$21..+$30 and voice 3 at +$31..+$40 (steps 1-16). Also entered from music_next_block ($C2D5). Ends with JMP $C357, which plays the current step.","t":"code","b":[32,27,195],"m":"jsr","oa":49947,"o":"music_block_hi_clear","x":[49877]},{"a":49589,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":49591,"l":"b_C1B7","t":"code","b":[10],"m":"asl","o":"a","x":[49596]},{"a":49592,"t":"code","b":[46,59,196],"m":"rol","oa":50235,"o":"music_block_ptr_hi"},{"a":49595,"t":"code","b":[202],"m":"dex"},{"a":49596,"t":"code","b":[208,249],"m":"bne","oa":49591,"o":"b_C1B7"},{"a":49598,"t":"code","b":[24],"m":"clc"},{"a":49599,"t":"code","b":[105,242],"m":"adc","o":"#$F2"},{"a":49601,"t":"code","b":[141,58,196],"m":"sta","oa":50234,"o":"music_block_ptr"},{"a":49604,"t":"code","b":[173,59,196],"m":"lda","oa":50235,"o":"music_block_ptr_hi"},{"a":49607,"t":"code","b":[105,202],"m":"adc","o":"#$CA"},{"a":49609,"t":"code","b":[141,59,196],"m":"sta","oa":50235,"o":"music_block_ptr_hi"},{"a":49612,"l":"j_C1CC","t":"code","b":[76,87,195],"m":"jmp","oa":50007,"o":"music_step_keys","x":[49363,49374]},{"a":49615,"l":"music_key_voice_select","c":"Music, editor keyboard control (only when music_keys_enabled $C439 is non-zero, which the game never sets): A = $C5, the KERNAL's last key. 64 (no key) leaves music_voice_mode ($C437) alone; F7 (3) sets 0, all voices; \"1\" (56) sets 1, \"2\" (59) sets 2, \"3\" (8) sets 3, one voice alone; any other key sets 4, which $C364 treats as stop (music_song_end). Key numbers from the KERNAL matrix (c64-reference). Then JMP $C364.","t":"code","b":[201,64],"m":"cmp","o":"#$40","x":[50017]},{"a":49617,"t":"code","b":[240,38],"m":"beq","oa":49657,"o":"b_C1F9"},{"a":49619,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":49621,"t":"code","b":[208,4],"m":"bne","oa":49627,"o":"b_C1DB"},{"a":49623,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49625,"t":"code","b":[240,26],"m":"beq","oa":49653,"o":"b_C1F5"},{"a":49627,"l":"b_C1DB","t":"code","b":[201,8],"m":"cmp","o":"#$08","x":[49621]},{"a":49629,"t":"code","b":[208,4],"m":"bne","oa":49635,"o":"b_C1E3"},{"a":49631,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":49633,"t":"code","b":[208,18],"m":"bne","oa":49653,"o":"b_C1F5"},{"a":49635,"l":"b_C1E3","t":"code","b":[201,59],"m":"cmp","o":"#$3B","x":[49629]},{"a":49637,"t":"code","b":[208,4],"m":"bne","oa":49643,"o":"b_C1EB"},{"a":49639,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":49641,"t":"code","b":[208,10],"m":"bne","oa":49653,"o":"b_C1F5"},{"a":49643,"l":"b_C1EB","t":"code","b":[201,56],"m":"cmp","o":"#$38","x":[49637]},{"a":49645,"t":"code","b":[208,4],"m":"bne","oa":49651,"o":"b_C1F3"},{"a":49647,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":49649,"t":"code","b":[208,2],"m":"bne","oa":49653,"o":"b_C1F5"},{"a":49651,"l":"b_C1F3","t":"code","b":[169,4],"m":"lda","o":"#$04","x":[49645]},{"a":49653,"l":"b_C1F5","t":"code","b":[141,55,196],"m":"sta","oa":50231,"o":"music_voice_mode","x":[49625,49633,49641,49649]},{"a":49656,"t":"code","b":[234],"m":"nop"},{"a":49657,"l":"b_C1F9","t":"code","b":[76,100,195],"m":"jmp","oa":50020,"o":"music_step_mode","x":[49617,50012]},{"a":49660,"l":"music_play_step","c":"Music: play step music_step ($C436) of the current block for the three voices, with Z/A = music_voice_mode ($C437) from $C36B. For voice v (1-3) that the mode lets play (mode 0 or v), read the note byte at ($C43A/$C43B) + $10v + step, through $FB/$FC: 0 = nothing (the note holds), $64 = gate off (write the voice's waveform byte with bit 0 clear to $D404/$D40B/$D412), 1-94 = set the frequency from music_freq_lo/hi ($C374/$C3D3,note) and retrigger (JSR $C324/$C335/$C346). A voice the mode silences is gated off every step. Afterwards, with music_keys_enabled ($C439) set, JSR $CB51 (an editor hook whose code is gone: $CB51 is now note data of block 1); then JMP ($CB05) to the KERNAL IRQ. A note therefore lasts until the next non-zero byte in its column; a gate-off lets the release run.","t":"code","b":[240,4],"m":"beq","oa":49666,"o":"b_C202","x":[50030]},{"a":49662,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":49664,"t":"code","b":[208,26],"m":"bne","oa":49692,"o":"b_C21C"},{"a":49666,"l":"b_C202","t":"code","b":[24],"m":"clc","x":[49660]},{"a":49667,"t":"code","b":[173,58,196],"m":"lda","oa":50234,"o":"music_block_ptr"},{"a":49670,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":49672,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":49674,"t":"code","b":[173,59,196],"m":"lda","oa":50235,"o":"music_block_ptr_hi"},{"a":49677,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":49679,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":49681,"t":"code","b":[172,54,196],"m":"ldy","oa":50230,"o":"music_step"},{"a":49684,"t":"code","b":[177,251],"m":"lda","oa":251,"o":"(walk_tick_or_fill_byte),y"},{"a":49686,"t":"code","b":[240,34],"m":"beq","oa":49722,"o":"b_C23A"},{"a":49688,"t":"code","b":[201,100],"m":"cmp","o":"#$64"},{"a":49690,"t":"code","b":[208,14],"m":"bne","oa":49706,"o":"b_C22A"},{"a":49692,"l":"b_C21C","t":"code","b":[174,52,196],"m":"ldx","oa":50228,"o":"music_pattern","x":[49664]},{"a":49695,"t":"code","b":[189,131,196],"m":"lda","oa":50307,"o":"music_v1_ctrl,x"},{"a":49698,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":49700,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":49703,"t":"code","b":[76,58,194],"m":"jmp","oa":49722,"o":"b_C23A"},{"a":49706,"l":"b_C22A","t":"code","b":[168],"m":"tay","x":[49690]},{"a":49707,"t":"code","b":[185,116,195],"m":"lda","oa":50036,"o":"music_freq_lo,y"},{"a":49710,"t":"code","b":[141,0,212],"m":"sta","o":"sid_v1_freq_lo"},{"a":49713,"t":"code","b":[185,211,195],"m":"lda","oa":50131,"o":"music_freq_hi,y"},{"a":49716,"t":"code","b":[141,1,212],"m":"sta","o":"sid_v1_freq_hi"},{"a":49719,"t":"code","b":[32,36,195],"m":"jsr","oa":49956,"o":"music_retrigger_v1"},{"a":49722,"l":"b_C23A","t":"code","b":[173,55,196],"m":"lda","oa":50231,"o":"music_voice_mode","x":[49686,49703]},{"a":49725,"t":"code","b":[240,4],"m":"beq","oa":49731,"o":"b_C243"},{"a":49727,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":49729,"t":"code","b":[208,26],"m":"bne","oa":49757,"o":"b_C25D"},{"a":49731,"l":"b_C243","t":"code","b":[24],"m":"clc","x":[49725]},{"a":49732,"t":"code","b":[173,58,196],"m":"lda","oa":50234,"o":"music_block_ptr"},{"a":49735,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":49737,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":49739,"t":"code","b":[173,59,196],"m":"lda","oa":50235,"o":"music_block_ptr_hi"},{"a":49742,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":49744,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":49746,"t":"code","b":[172,54,196],"m":"ldy","oa":50230,"o":"music_step"},{"a":49749,"t":"code","b":[177,251],"m":"lda","oa":251,"o":"(walk_tick_or_fill_byte),y"},{"a":49751,"t":"code","b":[240,37],"m":"beq","oa":49790,"o":"b_C27E"},{"a":49753,"t":"code","b":[201,100],"m":"cmp","o":"#$64"},{"a":49755,"t":"code","b":[208,14],"m":"bne","oa":49771,"o":"b_C26B"},{"a":49757,"l":"b_C25D","t":"code","b":[174,52,196],"m":"ldx","oa":50228,"o":"music_pattern","x":[49729]},{"a":49760,"t":"code","b":[189,195,196],"m":"lda","oa":50371,"o":"music_v2_ctrl,x"},{"a":49763,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":49765,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":49768,"t":"code","b":[76,126,194],"m":"jmp","oa":49790,"o":"b_C27E"},{"a":49771,"l":"b_C26B","t":"code","b":[168],"m":"tay","x":[49755]},{"a":49772,"t":"code","b":[185,116,195],"m":"lda","oa":50036,"o":"music_freq_lo,y"},{"a":49775,"t":"code","b":[141,7,212],"m":"sta","o":"sid_v2_freq_lo"},{"a":49778,"t":"code","b":[185,211,195],"m":"lda","oa":50131,"o":"music_freq_hi,y"},{"a":49781,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":49784,"t":"code","b":[32,53,195],"m":"jsr","oa":49973,"o":"music_retrigger_v2"},{"a":49787,"t":"code","b":[234],"m":"nop"},{"a":49788,"t":"code","b":[234],"m":"nop"},{"a":49789,"t":"code","b":[234],"m":"nop"},{"a":49790,"l":"b_C27E","t":"code","b":[173,55,196],"m":"lda","oa":50231,"o":"music_voice_mode","x":[49751,49768]},{"a":49793,"t":"code","b":[240,4],"m":"beq","oa":49799,"o":"b_C287"},{"a":49795,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":49797,"t":"code","b":[208,26],"m":"bne","oa":49825,"o":"b_C2A1"},{"a":49799,"l":"b_C287","t":"code","b":[24],"m":"clc","x":[49793]},{"a":49800,"t":"code","b":[173,58,196],"m":"lda","oa":50234,"o":"music_block_ptr"},{"a":49803,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":49805,"t":"code","b":[133,251],"m":"sta","oa":251,"o":"walk_tick_or_fill_byte"},{"a":49807,"t":"code","b":[173,59,196],"m":"lda","oa":50235,"o":"music_block_ptr_hi"},{"a":49810,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":49812,"t":"code","b":[133,252],"m":"sta","oa":252,"o":"room1_door_flag_or_fill_width"},{"a":49814,"t":"code","b":[172,54,196],"m":"ldy","oa":50230,"o":"music_step"},{"a":49817,"t":"code","b":[177,251],"m":"lda","oa":251,"o":"(walk_tick_or_fill_byte),y"},{"a":49819,"t":"code","b":[240,37],"m":"beq","oa":49858,"o":"b_C2C2"},{"a":49821,"t":"code","b":[201,100],"m":"cmp","o":"#$64"},{"a":49823,"t":"code","b":[208,14],"m":"bne","oa":49839,"o":"b_C2AF"},{"a":49825,"l":"b_C2A1","t":"code","b":[174,52,196],"m":"ldx","oa":50228,"o":"music_pattern","x":[49797]},{"a":49828,"t":"code","b":[189,3,197],"m":"lda","oa":50435,"o":"music_v3_ctrl,x"},{"a":49831,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":49833,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":49836,"t":"code","b":[76,194,194],"m":"jmp","oa":49858,"o":"b_C2C2"},{"a":49839,"l":"b_C2AF","t":"code","b":[168],"m":"tay","x":[49823]},{"a":49840,"t":"code","b":[185,116,195],"m":"lda","oa":50036,"o":"music_freq_lo,y"},{"a":49843,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":49846,"t":"code","b":[185,211,195],"m":"lda","oa":50131,"o":"music_freq_hi,y"},{"a":49849,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":49852,"t":"code","b":[32,70,195],"m":"jsr","oa":49990,"o":"music_retrigger_v3"},{"a":49855,"t":"code","b":[234],"m":"nop"},{"a":49856,"t":"code","b":[234],"m":"nop"},{"a":49857,"t":"code","b":[234],"m":"nop"},{"a":49858,"l":"b_C2C2","t":"code","b":[173,57,196],"m":"lda","oa":50233,"o":"music_keys_enabled","x":[49819,49836]},{"a":49861,"t":"code","b":[240,3],"m":"beq","oa":49866,"o":"b_C2CA"},{"a":49863,"t":"code","b":[32,81,203],"m":"jsr","oa":52049,"o":"music_block_1_hook_target"},{"a":49866,"l":"b_C2CA","t":"code","b":[108,5,203],"m":"jmp","oa":51973,"o":"(music_saved_irq)","x":[49861]},{"a":49869,"l":"music_next_block","c":"Music: move to the next block of the pattern: music_block ($C435) + 1, music_step ($C436) = 1, JMP $C1B2 to recompute the block pointer and play step 1.","t":"code","b":[238,53,196],"m":"inc","oa":50229,"o":"music_block","x":[49377]},{"a":49872,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":49874,"t":"code","b":[141,54,196],"m":"sta","oa":50230,"o":"music_step"},{"a":49877,"t":"code","b":[76,178,193],"m":"jmp","oa":49586,"o":"music_block_pointer"},{"a":49880,"l":"music_hook_irq","c":"Music: SEI, JSR music_save_irq ($CB14: saves $0314/$0315 in $CB05/$CB06 and installs music_first_irq $C2EB), 7 NOPs, CLI, RTS. The tail of music_init ($C09B).","t":"code","b":[120],"m":"sei","x":[49315]},{"a":49881,"t":"code","b":[32,20,203],"m":"jsr","oa":51988,"o":"music_save_irq"},{"a":49884,"t":"code","b":[234],"m":"nop"},{"a":49885,"t":"code","b":[234],"m":"nop"},{"a":49886,"t":"code","b":[234],"m":"nop"},{"a":49887,"t":"code","b":[234],"m":"nop"},{"a":49888,"t":"code","b":[234],"m":"nop"},{"a":49889,"t":"code","b":[234],"m":"nop"},{"a":49890,"t":"code","b":[234],"m":"nop"},{"a":49891,"t":"code","b":[88],"m":"cli"},{"a":49892,"t":"code","b":[96],"m":"rts"},{"a":49893,"l":"music_pad_c2e5","c":"Six NOPs ($EA) after music_hook_irq's RTS: never executed, padding.","t":"byte","b":[234,234,234,234,234,234]},{"a":49899,"l":"music_first_irq","c":"Music: the first IRQ after music_init (installed in $0314 by $CB14). Loads music_tick_count ($C438) with the step length (music_tempo $C443) of the song's first pattern (music_order_first entry 1, $CAC4); zeroes the CIA 1 time-of-day clock (writes 0 to $DC0B, $DC0A, $DC09, $DC08; nothing in the image reads the clock back, byte search for $DC08-$DC0B); music_position ($C433) = 1; installs music_irq ($C0AF) in $0314/$0315; JMP $C183 to start position 1, which plays its first step and chains to the KERNAL IRQ.","t":"code","b":[172,196,202],"m":"ldy","oa":51908,"o":"music_order_first_1"},{"a":49902,"t":"code","b":[185,67,196],"m":"lda","oa":50243,"o":"music_tempo,y"},{"a":49905,"t":"code","b":[141,56,196],"m":"sta","oa":50232,"o":"music_tick_count"},{"a":49908,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49910,"t":"code","b":[141,11,220],"m":"sta","o":"cia1_tod_hours"},{"a":49913,"t":"code","b":[141,10,220],"m":"sta","o":"cia1_tod_minutes"},{"a":49916,"t":"code","b":[141,9,220],"m":"sta","o":"cia1_tod_seconds"},{"a":49919,"t":"code","b":[141,8,220],"m":"sta","o":"cia1_tod_tenths"},{"a":49922,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":49924,"t":"code","b":[141,51,196],"m":"sta","oa":50227,"o":"music_position"},{"a":49927,"t":"code","b":[120],"m":"sei"},{"a":49928,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":49930,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":49933,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":49935,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":49938,"t":"code","b":[88],"m":"cli"},{"a":49939,"t":"code","b":[76,131,193],"m":"jmp","oa":49539,"o":"music_start_position"},{"a":49942,"l":"music_pad_c316","c":"Five NOPs ($EA) after music_first_irq's JMP $C183: never executed, padding.","t":"byte","b":[234,234,234,234,234]},{"a":49947,"l":"music_block_hi_clear","c":"Music: $C43B = 0 and A = music_block ($C435): the start of the x64 multiply in music_block_pointer ($C1B2).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[49586]},{"a":49949,"t":"code","b":[141,59,196],"m":"sta","oa":50235,"o":"music_block_ptr_hi"},{"a":49952,"t":"code","b":[173,53,196],"m":"lda","oa":50229,"o":"music_block"},{"a":49955,"t":"code","b":[96],"m":"rts"},{"a":49956,"l":"music_retrigger_v1","c":"Music: retrigger voice 1: X = music_pattern ($C434); writes music_v1_ctrl ($C483,X) to $D404 with the gate bit clear, then with it set, so the envelope starts again on every note.","t":"code","b":[174,52,196],"m":"ldx","oa":50228,"o":"music_pattern","x":[49719]},{"a":49959,"t":"code","b":[189,131,196],"m":"lda","oa":50307,"o":"music_v1_ctrl,x"},{"a":49962,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":49964,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":49967,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":49969,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":49972,"t":"code","b":[96],"m":"rts"},{"a":49973,"l":"music_retrigger_v2","c":"Music: retrigger voice 2: waveform byte music_v2_ctrl ($C4C3,pattern) to $D40B, gate off then gate on.","t":"code","b":[174,52,196],"m":"ldx","oa":50228,"o":"music_pattern","x":[49784]},{"a":49976,"t":"code","b":[189,195,196],"m":"lda","oa":50371,"o":"music_v2_ctrl,x"},{"a":49979,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":49981,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":49984,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":49986,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":49989,"t":"code","b":[96],"m":"rts"},{"a":49990,"l":"music_retrigger_v3","c":"Music: retrigger voice 3: waveform byte music_v3_ctrl ($C503,pattern) to $D412, gate off then gate on.","t":"code","b":[174,52,196],"m":"ldx","oa":50228,"o":"music_pattern","x":[49852]},{"a":49993,"t":"code","b":[189,3,197],"m":"lda","oa":50435,"o":"music_v3_ctrl,x"},{"a":49996,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":49998,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":50001,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":50003,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":50006,"t":"code","b":[96],"m":"rts"},{"a":50007,"l":"music_step_keys","c":"Music: before each step: if music_keys_enabled ($C439) is set, load the KERNAL's last key $C5 and go to music_key_voice_select ($C1CF); otherwise straight on to $C1F9 -> $C364.","t":"code","b":[173,57,196],"m":"lda","oa":50233,"o":"music_keys_enabled","x":[49612]},{"a":50010,"t":"code","b":[208,3],"m":"bne","oa":50015,"o":"b_C35F"},{"a":50012,"t":"code","b":[76,249,193],"m":"jmp","oa":49657,"o":"b_C1F9"},{"a":50015,"l":"b_C35F","t":"code","b":[165,197],"m":"lda","oa":197,"o":"kernal_last_key","x":[50010]},{"a":50017,"t":"code","b":[76,207,193],"m":"jmp","oa":49615,"o":"music_key_voice_select"},{"a":50020,"l":"music_step_mode","c":"Music: music_voice_mode ($C437) = 4 means stop: JMP music_song_end ($C103). Otherwise reload it and JMP music_play_step ($C1FC).","t":"code","b":[173,55,196],"m":"lda","oa":50231,"o":"music_voice_mode","x":[49657]},{"a":50023,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":50025,"t":"code","b":[240,6],"m":"beq","oa":50033,"o":"b_C371"},{"a":50027,"t":"code","b":[173,55,196],"m":"lda","oa":50231,"o":"music_voice_mode"},{"a":50030,"t":"code","b":[76,252,193],"m":"jmp","oa":49660,"o":"music_play_step"},{"a":50033,"l":"b_C371","t":"code","b":[76,3,193],"m":"jmp","oa":49411,"o":"music_song_end","x":[50025]},{"a":50036,"l":"music_freq_lo","c":"Music: SID frequency table, low bytes, indexed by note number 0-94 ($C374-$C3D2); the high bytes are music_freq_hi ($C3D3). Index 0 is $00FF, not a note (a note byte 0 means hold). Note n is the semitone n above C0 counted as 12 x octave + pitch (12 = C1, 48 = C4, 57 = A4 = $1CD6, 94 = A#7 = $F467); at the PAL clock (985,248 Hz) every entry is about a quarter semitone flat of equal temperament (A4 = 433.5 Hz). Read by $C22B, $C26C, $C2B0.","t":"byte","b":[255,35,52,70,90,110,132,155],"x":[49707,49772,49840]},{"a":50044,"t":"byte","b":[179,205,233,6,37,69,104,140]},{"a":50052,"t":"byte","b":[179,220,8,54,103,155,210,12]},{"a":50060,"t":"byte","b":[73,139,208,25,103,185,16,108]},{"a":50068,"t":"byte","b":[206,53,163,23,147,21,159,60]},{"a":50076,"t":"byte","b":[205,114,32,216,156,107,70,47]},{"a":50084,"t":"byte","b":[37,42,63,100,154,227,63,177]},{"a":50092,"t":"byte","b":[56,214,141,94,75,85,126,200]},{"a":50100,"t":"byte","b":[52,198,127,97,111,172,126,188]},{"a":50108,"t":"byte","b":[149,169,252,161,105,140,254,194]},{"a":50116,"t":"byte","b":[223,88,52,120,43,83,247,31]},{"a":50124,"t":"byte","b":[210,25,252,133,189,176,103]},{"a":50131,"l":"music_freq_hi","c":"Music: SID frequency table, high bytes for notes 0-94 ($C3D3-$C431), pairs with music_freq_lo ($C374). Read by $C231, $C272, $C2B6.","t":"byte","b":[0,1,1,1,1,1,1,1],"x":[49713,49778,49846]},{"a":50139,"t":"byte","b":[1,1,1,2,2,2,2,2]},{"a":50147,"t":"byte","b":[2,2,3,3,3,3,3,4]},{"a":50155,"t":"byte","b":[4,4,4,5,5,5,6,6]},{"a":50163,"t":"byte","b":[6,7,7,8,8,9,9,10]},{"a":50171,"t":"byte","b":[10,11,12,12,13,14,15,16]},{"a":50179,"t":"byte","b":[17,18,19,20,21,22,24,25]},{"a":50187,"t":"byte","b":[27,28,30,32,34,36,38,40]},{"a":50195,"t":"byte","b":[43,45,48,51,54,57,61,64]},{"a":50203,"t":"byte","b":[68,72,76,81,86,91,96,102]},{"a":50211,"t":"byte","b":[108,115,122,129,137,145,153,163]},{"a":50219,"t":"byte","b":[172,183,193,205,217,230,244]},{"a":50226,"l":"music_freq_tail_unused","c":"One byte $EA after the frequency tables; not read by the player (no reference found).","t":"byte","b":[234]},{"a":50227,"l":"music_position","c":"Music variable: the song's order position, 1 to music_song_len ($C43D); set to 1 by $C304, advanced by $C0F5; indexes music_order_first/last ($CAC3/$CADB). 1 at the hand-over.","t":"byte","b":[1],"x":[49383,49397,49403,49539,49924]},{"a":50228,"l":"music_pattern","c":"Music variable: the pattern playing (1-63 possible), from music_order_first ($C189), advanced at $C0E4; indexes every per-pattern table $C443-$CA83. 1 at the hand-over, 2 in the play snapshot (the tune was stopped in its second pattern when play took the IRQ).","t":"byte","b":[1],"x":[49335,49380,49389,49437,49545,49548,49692,49757,49825,49956,49973,49990]},{"a":50229,"l":"music_block","c":"Music variable: the note block playing, from music_block_first ($C1A9), advanced by $C2CD; compared with music_block_last at $C0C6; the block's data is at $CAF2 + 64 x block (pointer in $C43A/$C43B).","t":"byte","b":[1],"x":[49350,49577,49869,49952]},{"a":50230,"l":"music_step","c":"Music variable: the step (row) within the block, 1-16; set from music_first_step ($C1AF) or 1 ($C2D2), advanced at $C0C0 every music_tempo ticks; the Y index of the note reads in music_play_step.","t":"byte","b":[4],"x":[49344,49358,49369,49583,49681,49746,49814,49874]},{"a":50231,"l":"music_voice_mode","c":"Music variable: which voices play: 0 all (the game's setting, $C09D), 1-3 that voice alone, 4 stop. Changed only by music_key_voice_select ($C1F5), which runs only when music_keys_enabled is set.","t":"byte","b":[0],"x":[49309,49653,49722,49790,50020,50027]},{"a":50232,"l":"music_tick_count","c":"Music variable: IRQs left in this step; decremented by music_irq ($C0AF), reloaded from music_tempo ($C0BD, $C0A9, $C2F1).","t":"byte","b":[3],"x":[49321,49327,49341,49905]},{"a":50233,"l":"music_keys_enabled","c":"Music variable: non-zero turns on the music editor's keyboard controls ($C357) and its per-step hook JSR $CB51 ($C2C2). Only ever written with 0 (music_init $C0A0); byte search for $C439 finds no other writer. 0 at the hand-over.","t":"byte","b":[0],"x":[49312,49858,50007]},{"a":50234,"l":"music_block_ptr","c":"Music variable, two bytes $C43A/$C43B: address of the current note block, $CAF2 + 64 x music_block, written by $C1C1/$C1C9 ($C43B also used as the shift register at $C1B8); copied +$10/+$20/+$30 to $FB/$FC for each voice's column. $CB32 at the hand-over (block 1).","t":"byte","b":[50],"x":[49601,49667,49732,49800]},{"a":50235,"l":"music_block_ptr_hi","c":"Music variable: high byte of music_block_ptr ($C43A); zeroed by $C31D, used as the shift register of the x64 multiply at $C1B8, then $CA added at $C1C7.","t":"byte","b":[203],"x":[49592,49604,49609,49674,49739,49807,49949]},{"a":50236,"l":"music_block_len","c":"Music constant: steps in a full block, $10 (16); read at $C0D6 and compared with music_step at $C0D9. Only this reader found.","t":"byte","b":[16],"x":[49366]},{"a":50237,"l":"music_song_len","c":"Music constant: the number of order positions the song plays, 1; read at $C0F8 and compared with music_position at $C0FB. So only order entry 1 (patterns 1-2) plays; entries 2-6 of the order tables are never reached.","t":"byte","b":[1],"x":[49400]},{"a":50238,"l":"music_vars_unused","c":"Five bytes $C43E-$C442 (00 00 B3 CD 04) after the music variables; no reader or writer found by byte search. Unknown, perhaps editor state.","t":"byte","b":[0,0,179,205,4]},{"a":50243,"l":"music_tempo","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): IRQ ticks per step; pattern 1 and 2: 8. Read at $C0A6, $C0BA, $C2EE.","t":"byte","b":[4,8,8,8,8,8,4,8],"x":[49318,49338,49902]},{"a":50251,"t":"byte","b":[8,4,8,8,8,8,8,8]},{"a":50259,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":50267,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":50275,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":50283,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":50291,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":50299,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":50307,"l":"music_v1_ctrl","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 1 waveform byte for $D404 (the gate bit is added per note): patterns 1-2 $41, pulse.","t":"byte","b":[8,65,65,33,33,33,33,33],"x":[49695,49959]},{"a":50315,"t":"byte","b":[33,65,65,65,65,65,65,65]},{"a":50323,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50331,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50339,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50347,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50355,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50363,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50371,"l":"music_v2_ctrl","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 2 waveform byte for $D40B: patterns 1-2 $11, triangle.","t":"byte","b":[65,17,17,33,33,33,33,33],"x":[49760,49976]},{"a":50379,"t":"byte","b":[33,33,33,33,33,33,17,17]},{"a":50387,"t":"byte","b":[17,17,17,17,17,17,17,17]},{"a":50395,"t":"byte","b":[17,17,17,17,17,17,17,17]},{"a":50403,"t":"byte","b":[17,17,17,17,17,17,17,17]},{"a":50411,"t":"byte","b":[17,17,17,17,17,17,17,17]},{"a":50419,"t":"byte","b":[17,17,17,17,17,17,17,17]},{"a":50427,"t":"byte","b":[17,17,17,17,17,17,17,17]},{"a":50435,"l":"music_v3_ctrl","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 3 waveform byte for $D412: patterns 1-2 $41, pulse.","t":"byte","b":[17,65,65,65,65,65,65,65],"x":[49828,49993]},{"a":50443,"t":"byte","b":[65,33,33,33,33,33,65,65]},{"a":50451,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50459,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50467,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50475,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50483,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50491,"t":"byte","b":[65,65,65,65,65,65,65,65]},{"a":50499,"l":"music_v1_ad","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 1 attack/decay for $D405: patterns 1-2 $16.","t":"byte","b":[65,22,22,73,73,73,73,73],"x":[49440]},{"a":50507,"t":"byte","b":[73,73,73,73,73,73,73,73]},{"a":50515,"t":"byte","b":[73,73,73,73,73,73,73,73]},{"a":50523,"t":"byte","b":[73,73,73,73,73,73,73,73]},{"a":50531,"t":"byte","b":[73,73,73,73,73,73,73,73]},{"a":50539,"t":"byte","b":[73,73,73,73,73,73,73,73]},{"a":50547,"t":"byte","b":[73,73,73,73,73,73,73,73]},{"a":50555,"t":"byte","b":[73,73,73,73,73,73,73,73]},{"a":50563,"l":"music_v2_ad","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 2 attack/decay for $D40C: patterns 1-2 $4C.","t":"byte","b":[73,76,76,73,73,73,73,73],"x":[49446]},{"a":50571,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50579,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50587,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50595,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50603,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50611,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50619,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50627,"l":"music_v3_ad","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 3 attack/decay for $D413: patterns 1-2 $4A.","t":"byte","b":[9,74,74,9,9,9,9,9],"x":[49452]},{"a":50635,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50643,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50651,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50659,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50667,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50675,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50683,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50691,"l":"music_v1_sr","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 1 sustain/release for $D406: patterns 1-2 $0F.","t":"byte","b":[9,15,15,9,9,9,9,9],"x":[49458]},{"a":50699,"t":"byte","b":[9,25,25,25,9,9,9,9]},{"a":50707,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50715,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50723,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50731,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50739,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50747,"t":"byte","b":[9,9,9,9,9,9,9,9]},{"a":50755,"l":"music_v2_sr","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 2 sustain/release for $D40D: patterns 1-2 $09.","t":"byte","b":[9,9,9,9,9,9,9,9],"x":[49464]},{"a":50763,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50771,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50779,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50787,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50795,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50803,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50811,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50819,"l":"music_v3_sr","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 3 sustain/release for $D414: patterns 1-2 $71.","t":"byte","b":[0,113,113,0,0,0,0,0],"x":[49470]},{"a":50827,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50835,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50843,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50851,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50859,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50867,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50875,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50883,"l":"music_v1_pw_lo","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 1 pulse width low byte for $D402: patterns 1-2 $32 (width $0732).","t":"byte","b":[0,50,50,0,0,0,0,0],"x":[49476]},{"a":50891,"t":"byte","b":[0,0,12,24,24,24,24,24]},{"a":50899,"t":"byte","b":[24,24,24,24,24,24,24,24]},{"a":50907,"t":"byte","b":[24,24,24,24,24,24,24,24]},{"a":50915,"t":"byte","b":[24,24,24,24,24,24,24,24]},{"a":50923,"t":"byte","b":[24,24,24,24,24,24,24,24]},{"a":50931,"t":"byte","b":[24,24,24,24,24,24,24,24]},{"a":50939,"t":"byte","b":[24,24,24,24,24,24,24,24]},{"a":50947,"l":"music_v2_pw_lo","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 2 pulse width low byte for $D409: patterns 1-2 $E8 (voice 2 plays triangle, so no effect).","t":"byte","b":[24,232,232,232,232,232,232,232],"x":[49482]},{"a":50955,"t":"byte","b":[232,232,232,232,232,232,232,232]},{"a":50963,"t":"byte","b":[232,232,232,232,232,232,232,232]},{"a":50971,"t":"byte","b":[232,232,232,232,232,232,232,232]},{"a":50979,"t":"byte","b":[232,232,232,232,232,232,232,232]},{"a":50987,"t":"byte","b":[232,232,232,232,232,232,232,232]},{"a":50995,"t":"byte","b":[232,232,232,232,232,232,232,232]},{"a":51003,"t":"byte","b":[232,232,232,232,232,232,232,232]},{"a":51011,"l":"music_v3_pw_lo","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 3 pulse width low byte for $D410: patterns 1-2 $33 (width $0333).","t":"byte","b":[232,51,51,184,184,184,184,184],"x":[49488]},{"a":51019,"t":"byte","b":[184,184,184,184,184,184,184,184]},{"a":51027,"t":"byte","b":[184,184,184,184,184,184,184,184]},{"a":51035,"t":"byte","b":[184,184,184,184,184,184,184,184]},{"a":51043,"t":"byte","b":[184,184,184,184,184,184,184,184]},{"a":51051,"t":"byte","b":[184,184,184,184,184,184,184,184]},{"a":51059,"t":"byte","b":[184,184,184,184,184,184,184,184]},{"a":51067,"t":"byte","b":[184,184,184,184,184,184,184,184]},{"a":51075,"l":"music_v1_pw_hi","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 1 pulse width high byte for $D403: patterns 1-2 $07.","t":"byte","b":[184,7,7,8,8,8,8,8],"x":[49494]},{"a":51083,"t":"byte","b":[8,8,6,4,4,4,4,4]},{"a":51091,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":51099,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":51107,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":51115,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":51123,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":51131,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":51139,"l":"music_v2_pw_hi","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 2 pulse width high byte for $D40A: patterns 1-2 $03.","t":"byte","b":[4,3,3,3,3,3,3,3],"x":[49500]},{"a":51147,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":51155,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":51163,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":51171,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":51179,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":51187,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":51195,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":51203,"l":"music_v3_pw_hi","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): voice 3 pulse width high byte for $D411: patterns 1-2 $03.","t":"byte","b":[3,3,3,11,11,11,11,11],"x":[49506]},{"a":51211,"t":"byte","b":[11,11,11,11,11,11,11,11]},{"a":51219,"t":"byte","b":[11,11,11,11,11,11,11,11]},{"a":51227,"t":"byte","b":[11,11,11,11,11,11,11,11]},{"a":51235,"t":"byte","b":[11,11,11,11,11,11,11,11]},{"a":51243,"t":"byte","b":[11,11,11,11,11,11,11,11]},{"a":51251,"t":"byte","b":[11,11,11,11,11,11,11,11]},{"a":51259,"t":"byte","b":[11,11,11,11,11,11,11,11]},{"a":51267,"l":"music_filter_res","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): filter resonance and voice routing for $D417: patterns 1-2 $F0, resonance 15 with no voice routed through the filter.","t":"byte","b":[11,240,240,0,0,0,0,0],"x":[49512]},{"a":51275,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51283,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51291,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51299,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51307,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51315,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":51323,"t":"byte","b":[8,8,8,8,8,8,8,8]},{"a":51331,"l":"music_filter_mode_vol","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): filter mode and volume for $D418: patterns 1-2 $1F, low-pass, volume 15.","t":"byte","b":[8,31,31,76,76,76,76,76],"x":[49518]},{"a":51339,"t":"byte","b":[76,76,76,76,76,76,76,76]},{"a":51347,"t":"byte","b":[76,76,76,76,76,76,76,76]},{"a":51355,"t":"byte","b":[76,76,76,76,76,76,76,76]},{"a":51363,"t":"byte","b":[76,76,76,76,76,76,76,76]},{"a":51371,"t":"byte","b":[76,76,76,76,76,76,76,76]},{"a":51379,"t":"byte","b":[76,76,76,76,76,76,76,76]},{"a":51387,"t":"byte","b":[76,76,76,76,76,76,76,76]},{"a":51395,"l":"music_filter_cut_lo","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): filter cutoff low bits for $D415: patterns 1-2 $07.","t":"byte","b":[76,7,7,0,0,0,0,0],"x":[49526]},{"a":51403,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51411,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51419,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51427,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51435,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51443,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51451,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51459,"l":"music_filter_cut_hi","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): filter cutoff high byte for $D416: patterns 1-2 $96.","t":"byte","b":[0,150,150,255,255,255,255,255],"x":[49532]},{"a":51467,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":51475,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":51483,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":51491,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":51499,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":51507,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":51515,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":51523,"l":"music_block_first","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): first note block of the pattern (music_block at $C1A6): pattern 1 block 1, pattern 2 block 1. Patterns 3-13 name blocks 1 to 39; blocks 11 and up would lie from $CDB3 on, over the code at $CDC0 and the font, so those are not in this image.","t":"byte","b":[255,1,1,6,2,2,10,23],"x":[49574]},{"a":51531,"t":"byte","b":[25,35,1,6,2,39,1,1]},{"a":51539,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51547,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51555,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51563,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51571,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51579,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51587,"l":"music_block_last","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): last note block of the pattern (compared at $C0C3): pattern 1 block 10, pattern 2 block 8.","t":"byte","b":[1,10,8,9,5,4,22,24],"x":[49347]},{"a":51595,"t":"byte","b":[34,38,4,9,4,39,1,1]},{"a":51603,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51611,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51619,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51627,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51635,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51643,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51651,"l":"music_first_step","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): step the pattern starts on ($C1AC): 1 for patterns 1-2.","t":"byte","b":[1,1,1,1,1,1,1,1],"x":[49580]},{"a":51659,"t":"byte","b":[1,1,7,1,1,1,1,1]},{"a":51667,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51675,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51683,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51691,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51699,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51707,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":51715,"l":"music_last_step","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): last step played in the pattern's last block ($C0CB): 16 for patterns 1-2.","t":"byte","b":[1,16,16,12,12,12,12,12],"x":[49355]},{"a":51723,"t":"byte","b":[12,9,12,12,12,12,12,12]},{"a":51731,"t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":51739,"t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":51747,"t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":51755,"t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":51763,"t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":51771,"t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":51779,"l":"music_timer_lo","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): CIA 1 timer A latch low byte for the pattern ($C18F -> $DC04): patterns 1-2 $6A.","t":"byte","b":[12,106,106,160,160,160,160,160],"x":[49551]},{"a":51787,"t":"byte","b":[160,212,160,160,160,160,160,160]},{"a":51795,"t":"byte","b":[160,160,160,160,160,160,160,160]},{"a":51803,"t":"byte","b":[160,160,160,160,160,160,160,160]},{"a":51811,"t":"byte","b":[160,160,160,160,160,160,160,160]},{"a":51819,"t":"byte","b":[160,160,160,160,160,160,160,160]},{"a":51827,"t":"byte","b":[160,160,160,160,160,160,160,160]},{"a":51835,"t":"byte","b":[160,160,160,160,160,160,160,160]},{"a":51843,"l":"music_timer_hi","c":"Music, per-pattern table (64 bytes, index = music_pattern; the title tune uses entries 1 and 2; entries 3-63 hold values for patterns the song never reaches (patterns 2-3 and 5-13 are named by the unused order entries, pattern 4 by none), and entry 0 is unused): CIA 1 timer A latch high byte ($C195 -> $DC05): patterns 1-2 $3E, so latch $3E6A = 15978 cycles, about 61.7 IRQs a second on PAL; with 8 ticks a step, a step is about 0.13 s and a 16-step block about 2.1 s.","t":"byte","b":[160,62,62,93,93,93,93,93],"x":[49557]},{"a":51851,"t":"byte","b":[93,124,93,93,93,93,93,93]},{"a":51859,"t":"byte","b":[93,93,93,93,93,93,93,93]},{"a":51867,"t":"byte","b":[93,93,93,93,93,93,93,93]},{"a":51875,"t":"byte","b":[93,93,93,93,93,93,93,93]},{"a":51883,"t":"byte","b":[93,93,93,93,93,93,93,93]},{"a":51891,"t":"byte","b":[93,93,93,93,93,93,93,93]},{"a":51899,"t":"byte","b":[93,93,93,93,93,93,93,93]},{"a":51907,"l":"music_order_first","c":"Music: order table, first pattern of each order position (24 bytes $CAC3-$CADA, index = music_position; read at $C186 and, for the first pattern's step length, $C2EB). Entry 1 = pattern 1; entries 2-6 (2, 5, 2, 2, 8) are never reached because music_song_len ($C43D) is 1.","t":"byte","b":[93],"x":[49542]},{"a":51908,"l":"music_order_first_1","c":"Music: order entry 1's first pattern (1), read by name at $C2EB to fetch the song's opening step length; entries 2-23 follow to $CADA (2, 5, 2, 2, 8, then zeros), never reached.","t":"byte","b":[1,2,5,2,2,8,0,0],"x":[49899]},{"a":51916,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51924,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":51931,"l":"music_order_last","c":"Music: order table, last pattern of each order position (24 bytes $CADB-$CAF2, read at $C0EA). Entry 1 = pattern 2, so the title tune is pattern 1 (blocks 1-10) then pattern 2 (blocks 1-8), about 37 s, then it restarts. Entries 2-6 (3, 7, 3, 2, 13) are unused.","t":"byte","b":[0,2,3,7,3,2,13,0],"x":[49386]},{"a":51939,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51947,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51955,"l":"music_block0_leftover","c":"Music: 18 bytes $CAF3-$CB04 where block 0 would begin (never played; blocks start at 1). They hold PETSCII \"MUZA1\", 0, \"ISE\", 0, \"C\" at $CAF4-$CAFE among zeros, perhaps a file name left by the music editor. No reader found.","t":"byte","b":[0,77,85,90,65,49,0,73]},{"a":51963,"t":"byte","b":[83,69,0,67,0,0,0,0]},{"a":51971,"t":"byte","b":[0,0]},{"a":51973,"l":"music_saved_irq","c":"Music: the IRQ vector that was in $0314/$0315 before the music was hooked in ($EA31, the KERNAL's handler, at the hand-over). Written by music_save_irq ($CB17/$CB1D), put back by music_restore_irq ($CB07); every music IRQ path ends JMP ($CB05).","t":"addr","b":[49,234],"oa":59953,"o":"j_EA31","x":[49304,49332,49866,51975,51991]},{"a":51974,"t":"note","l":"music_saved_irq_hi","c":"Music: high byte of music_saved_irq ($CB05), the saved $0315 ($EA at the hand-over, for $EA31); written at $CB1D, read at $CB0D.","note":"inside the item at $CB05","x":[51981,51997]},{"a":51975,"l":"music_restore_irq","c":"Music: put the saved IRQ vector music_saved_irq ($CB05/$CB06) back into $0314/$0315. Called from music_song_end ($C10E).","t":"code","b":[173,5,203],"m":"lda","oa":51973,"o":"music_saved_irq","x":[49422]},{"a":51978,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":51981,"t":"code","b":[173,6,203],"m":"lda","oa":51974,"o":"music_saved_irq_hi"},{"a":51984,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":51987,"t":"code","b":[96],"m":"rts"},{"a":51988,"l":"music_save_irq","c":"Music: save $0314/$0315 into music_saved_irq ($CB05/$CB06) and install music_first_irq ($C2EB) as the IRQ handler. Called from music_hook_irq ($C2D9).","t":"code","b":[173,20,3],"m":"lda","oa":788,"o":"irq_vector_lo","x":[49881]},{"a":51991,"t":"code","b":[141,5,203],"m":"sta","oa":51973,"o":"music_saved_irq"},{"a":51994,"t":"code","b":[173,21,3],"m":"lda","oa":789,"o":"irq_vector_hi"},{"a":51997,"t":"code","b":[141,6,203],"m":"sta","oa":51974,"o":"music_saved_irq_hi"},{"a":52000,"t":"code","b":[169,235],"m":"lda","o":"#$EB"},{"a":52002,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"irq_vector_lo"},{"a":52005,"t":"code","b":[169,194],"m":"lda","o":"#$C2"},{"a":52007,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_vector_hi"},{"a":52010,"t":"code","b":[96],"m":"rts"},{"a":52011,"l":"music_block1_lead","c":"Music: 8 zero bytes $CB2B-$CB32, the tail of the unplayed block 0 ($CB32 would be its voice 3 step 16). Not read.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52019,"l":"music_block_1","c":"Music: note block 1 of the title tune, $CB33-$CB72: 16 lead bytes the player does not read, then voice 1 $CB43, voice 2 $CB53, voice 3 $CB63, 16 steps each (note 1-94, 0 hold, $64 gate off). F: bass F2/C3, voice 2 trills F4-G4, melody F3 G3 ... C4 C4 G3 G3 E3. Played by pattern 1 and pattern 2. (Its step 15 of voice 1, $CB51, is the target of the dead editor hook JSR $CB51 at $C2C7.)","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52027,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52035,"t":"byte","b":[41,43,0,0,41,43,0,100]},{"a":52043,"t":"byte","b":[41,43,100,48,48,43]},{"a":52049,"l":"music_block_1_hook_target","c":"Music: block 1, voice 1 steps 15-16 ($CB51 = $2B G3, $CB52 = $28 E3) and then voice 2 and 3 of block 1 to $CB72. $CB51 is also the target of JSR $CB51 at $C2C7, the music editor's per-step hook, which runs only when music_keys_enabled ($C439) is set and the game never sets it: the editor's code that was here has been overwritten by the tune's notes. Data, not code.","t":"byte","b":[43,40,53,55,53,55,53,55],"x":[49863]},{"a":52057,"t":"byte","b":[53,55,53,55,53,55,53,55]},{"a":52065,"t":"byte","b":[53,55,29,100,29,100,36,100]},{"a":52073,"t":"byte","b":[29,100,29,100,29,100,36,100]},{"a":52081,"t":"byte","b":[29,100]},{"a":52083,"l":"music_block_2","c":"Music: note block 2 of the title tune, $CB73-$CBB2: 16 lead bytes the player does not read, then voice 1 $CB83, voice 2 $CB93, voice 3 $CBA3, 16 steps each (note 1-94, 0 hold, $64 gate off). E: bass E2/C3, voice 2 trills E4-G4, melody E3 G3 ... C4 C4 G3 G3 E3. Played by pattern 1 and pattern 2.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52091,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52099,"t":"byte","b":[40,43,0,100,40,43,0,100]},{"a":52107,"t":"byte","b":[40,43,100,48,48,43,43,40]},{"a":52115,"t":"byte","b":[52,55,52,55,52,55,52,55]},{"a":52123,"t":"byte","b":[52,55,52,55,52,55,52,55]},{"a":52131,"t":"byte","b":[28,100,28,100,36,100,28,100]},{"a":52139,"t":"byte","b":[28,100,28,100,36,100,28,100]},{"a":52147,"l":"music_block_3","c":"Music: note block 3 of the title tune, $CBB3-$CBF2: 16 lead bytes the player does not read, then voice 1 $CBC3, voice 2 $CBD3, voice 3 $CBE3, 16 steps each (note 1-94, 0 hold, $64 gate off). block 1 an octave up: bass F3/C4, trill F5-G5, melody F4 G4 ... C5 C5 G4 G4 E4. Played by pattern 1 and pattern 2.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52155,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52163,"t":"byte","b":[53,55,0,0,53,55,0,100]},{"a":52171,"t":"byte","b":[53,55,100,60,60,55,55,52]},{"a":52179,"t":"byte","b":[65,67,65,67,65,67,65,67]},{"a":52187,"t":"byte","b":[65,67,65,67,65,67,65,67]},{"a":52195,"t":"byte","b":[41,100,41,100,48,100,41,100]},{"a":52203,"t":"byte","b":[41,100,41,100,48,100,41,100]},{"a":52211,"l":"music_block_4","c":"Music: note block 4 of the title tune, $CBF3-$CC32: 16 lead bytes the player does not read, then voice 1 $CC03, voice 2 $CC13, voice 3 $CC23, 16 steps each (note 1-94, 0 hold, $64 gate off). block 2 an octave up: bass E3/C4, trill E5-G5, melody E4 G4 ... C5 C5 G4 G4 E4. Played by pattern 1 and pattern 2.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52219,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52227,"t":"byte","b":[52,55,0,100,52,55,0,100]},{"a":52235,"t":"byte","b":[52,55,100,60,60,55,55,52]},{"a":52243,"t":"byte","b":[64,67,64,67,64,67,64,67]},{"a":52251,"t":"byte","b":[64,67,64,67,64,67,64,67]},{"a":52259,"t":"byte","b":[40,100,40,100,48,100,40,100]},{"a":52267,"t":"byte","b":[40,100,40,100,48,100,40,100]},{"a":52275,"l":"music_block_5","c":"Music: note block 5 of the title tune, $CC33-$CC72: 16 lead bytes the player does not read, then voice 1 $CC43, voice 2 $CC53, voice 3 $CC63, 16 steps each (note 1-94, 0 hold, $64 gate off). the same notes as block 1 (F). Played by pattern 1 and pattern 2.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52283,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52291,"t":"byte","b":[41,43,0,0,41,43,0,100]},{"a":52299,"t":"byte","b":[41,43,100,48,48,43,43,40]},{"a":52307,"t":"byte","b":[53,55,53,55,53,55,53,55]},{"a":52315,"t":"byte","b":[53,55,53,55,53,55,53,55]},{"a":52323,"t":"byte","b":[29,100,29,100,36,100,29,100]},{"a":52331,"t":"byte","b":[29,100,29,100,36,100,29,100]},{"a":52339,"l":"music_block_6","c":"Music: note block 6 of the title tune, $CC73-$CCB2: 16 lead bytes the player does not read, then voice 1 $CC83, voice 2 $CC93, voice 3 $CCA3, 16 steps each (note 1-94, 0 hold, $64 gate off). the same notes as block 2 (E). Played by pattern 1 and pattern 2.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52347,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52355,"t":"byte","b":[40,43,0,100,40,43,0,100]},{"a":52363,"t":"byte","b":[40,43,100,48,48,43,43,40]},{"a":52371,"t":"byte","b":[52,55,52,55,52,55,52,55]},{"a":52379,"t":"byte","b":[52,55,52,55,52,55,52,55]},{"a":52387,"t":"byte","b":[28,100,28,100,36,100,28,100]},{"a":52395,"t":"byte","b":[28,100,28,100,36,100,28,100]},{"a":52403,"l":"music_block_7","c":"Music: note block 7 of the title tune, $CCB3-$CCF2: 16 lead bytes the player does not read, then voice 1 $CCC3, voice 2 $CCD3, voice 3 $CCE3, 16 steps each (note 1-94, 0 hold, $64 gate off). D#: bass D#2/C3, trill D#4-G4, melody D#3 G3 ... C4 C4 G3 G3 E3. Played by pattern 1 and pattern 2. Its unread lead bytes are not zero: 15 00 14 00 05 00 14 00 15 00 14 00 04 00 14 00, meaning unknown.","t":"byte","b":[21,0,20,0,5,0,20,0]},{"a":52411,"t":"byte","b":[21,0,20,0,4,0,20,0]},{"a":52419,"t":"byte","b":[39,43,0,100,39,43,0,100]},{"a":52427,"t":"byte","b":[39,43,100,48,48,43,43,40]},{"a":52435,"t":"byte","b":[51,55,51,55,51,55,51,55]},{"a":52443,"t":"byte","b":[51,55,51,55,51,55,51,55]},{"a":52451,"t":"byte","b":[27,100,27,100,36,100,27,100]},{"a":52459,"t":"byte","b":[27,100,27,100,36,100,27,100]},{"a":52467,"l":"music_block_8","c":"Music: note block 8 of the title tune, $CCF3-$CD32: 16 lead bytes the player does not read, then voice 1 $CD03, voice 2 $CD13, voice 3 $CD23, 16 steps each (note 1-94, 0 hold, $64 gate off). C: bass C2/C3, trill C4-G4, melody D#3 G3 ... C4 C4 G3 G3 E3. Played by pattern 1 and pattern 2. Its unread lead bytes hold 01 at $CCF3, $CCF7 and $CCFB, meaning unknown.","t":"byte","b":[1,0,0,0,1,0,0,0]},{"a":52475,"t":"byte","b":[1,0,0,0,0,0,0,0]},{"a":52483,"t":"byte","b":[39,43,0,100,39,43,0,100]},{"a":52491,"t":"byte","b":[39,43,100,48,48,43,43,40]},{"a":52499,"t":"byte","b":[48,55,48,55,48,55,48,55]},{"a":52507,"t":"byte","b":[48,55,48,55,48,55,48,55]},{"a":52515,"t":"byte","b":[24,100,24,100,36,100,24,100]},{"a":52523,"t":"byte","b":[24,100,24,100,36,100,24,100]},{"a":52531,"l":"music_block_9","c":"Music: note block 9 of the title tune, $CD33-$CD72: 16 lead bytes the player does not read, then voice 1 $CD43, voice 2 $CD53, voice 3 $CD63, 16 steps each (note 1-94, 0 hold, $64 gate off). the same notes as block 3 (F, octave up). Played by pattern 1 only.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52539,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52547,"t":"byte","b":[53,55,0,0,53,55,0,100]},{"a":52555,"t":"byte","b":[53,55,100,60,60,55,55,52]},{"a":52563,"t":"byte","b":[65,67,65,67,65,67,65,67]},{"a":52571,"t":"byte","b":[65,67,65,67,65,67,65,67]},{"a":52579,"t":"byte","b":[41,100,41,100,48,100,41,100]},{"a":52587,"t":"byte","b":[41,100,41,100,48,100,41,100]},{"a":52595,"l":"music_block_10","c":"Music: note block 10 of the title tune, $CD73-$CDB2: 16 lead bytes the player does not read, then voice 1 $CD83, voice 2 $CD93, voice 3 $CDA3, 16 steps each (note 1-94, 0 hold, $64 gate off). The same notes as block 4 (E, octave up), except voice 3's last step ($CDB2) is 0, hold, where block 4 has $64, gate off. Played by pattern 1 only.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52603,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52611,"t":"byte","b":[52,55,0,100,52,55,0,100]},{"a":52619,"t":"byte","b":[52,55,100,60,60,55,55,52]},{"a":52627,"t":"byte","b":[64,67,64,67,64,67,64,67]},{"a":52635,"t":"byte","b":[64,67,64,67,64,67,64,67]},{"a":52643,"t":"byte","b":[40,100,40,100,48,100,40,100]},{"a":52651,"t":"byte","b":[40,100,40,100,48,100,40,0]},{"a":52659,"l":"music_tail_unused","c":"13 bytes $CDB3-$CDBF after the last note block: five zeros, then A9 00 8D 18 D0 EA EA EA, which would read LDA #$00 / STA $D018 / NOP x3 (the VIC-II memory-pointer register, not the SID volume $D418). No JSR, JMP or pointer to $CDB8 found in the image (no decoded transfer; byte search for B8 CD finds nothing); a leftover, typed as data.","t":"byte","b":[0,0,0,0,0,169,0,141]},{"a":52667,"t":"byte","b":[24,208,234,234,234]},{"a":52672,"l":"title_setup","c":"Title (and ending) screen set-up, called from $16D5 in the title routine $16A3: JSR music_init ($C09B, the title tune starts on the next IRQ); copies the two-cell font $CE00-$CFFF to $2800-$29FF; clears $D018 bit 3 and $D011 bit 5 (bitmap mode off), prints CHR$(147) (clear screen, $FFD2), sets $D018 = $1B (screen $0400, characters $2800). Then, by the flag $1018: 0 -> JSR $B683, the title screen with the cast and the words at $C000; non-zero -> JSR $BFA8, which writes \"WONDERFUL\" / \"YOU HAVE FINISHED YOUR\" / \"MISSION\" from $B7D8-$B7FF in the same font ($1018 is set to 1 at $7CED just before JSR $16A0, and cleared at $6F2C). Because the font is copied afresh each time, damage to $CE48-$CE55 in the shipped image (see $CE40) shows on every title after a game over, on the first title after a cold start at $086D, and on the end message.","t":"code","b":[32,155,192],"m":"jsr","oa":49307,"o":"music_init","x":[5845]},{"a":52675,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":52677,"l":"b_CDC5","t":"code","b":[189,0,206],"m":"lda","oa":52736,"o":"font_top_blank_a_g,x","x":[52690]},{"a":52680,"t":"code","b":[157,0,40],"m":"sta","oa":10240,"o":"f_2800,x"},{"a":52683,"t":"code","b":[189,0,207],"m":"lda","oa":52992,"o":"font_bot_blank_a_g,x"},{"a":52686,"t":"code","b":[157,0,41],"m":"sta","oa":10496,"o":"f_2900,x"},{"a":52689,"t":"code","b":[232],"m":"inx"},{"a":52690,"t":"code","b":[208,241],"m":"bne","oa":52677,"o":"b_CDC5"},{"a":52692,"t":"code","b":[173,24,208],"m":"lda","o":"vic_memory"},{"a":52695,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":52697,"t":"code","b":[141,24,208],"m":"sta","o":"vic_memory"},{"a":52700,"t":"code","b":[173,17,208],"m":"lda","o":"vic_control1"},{"a":52703,"t":"code","b":[41,223],"m":"and","o":"#$DF"},{"a":52705,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":52708,"t":"code","b":[169,147],"m":"lda","o":"#$93"},{"a":52710,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":52713,"t":"code","b":[169,27],"m":"lda","o":"#$1B"},{"a":52715,"t":"code","b":[141,24,208],"m":"sta","o":"vic_memory"},{"a":52718,"t":"code","b":[173,24,16],"m":"lda","oa":4120,"o":"title_mode_flag"},{"a":52721,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":52723,"t":"code","b":[240,4],"m":"beq","oa":52729,"o":"b_CDF9"},{"a":52725,"t":"code","b":[32,168,191],"m":"jsr","oa":49064,"o":"draw_ending_text"},{"a":52728,"t":"code","b":[96],"m":"rts"},{"a":52729,"l":"b_CDF9","t":"code","b":[32,131,182],"m":"jsr","oa":46723,"o":"draw_title_cast","x":[52723]},{"a":52732,"t":"code","b":[96],"m":"rts"},{"a":52733,"l":"title_setup_pad","c":"Three zero bytes $CDFD-$CDFF between title_setup and the font; unused.","t":"byte","b":[0,0,0]},{"a":52736,"l":"font_top_blank_a_g","c":"Title font (copied to $2800 by title_setup $CDC0; letters two cells high, top half at code n, bottom half at n+32; 8 bytes a glyph, one bit per pixel): glyphs 0-7, $CE00-$CE3F: 0 blank (the space's top), 1-7 the top halves of A-G.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[52677]},{"a":52744,"t":"byte","b":[0,0,54,119,85,99,99,85]},{"a":52752,"t":"byte","b":[0,0,118,87,117,51,51,54]},{"a":52760,"t":"byte","b":[0,0,20,54,85,115,115,112]},{"a":52768,"t":"byte","b":[0,0,116,86,117,51,51,51]},{"a":52776,"t":"byte","b":[0,0,118,85,115,49,48,54]},{"a":52784,"t":"byte","b":[0,0,118,87,117,51,49,48]},{"a":52792,"t":"byte","b":[0,0,22,55,85,115,112,112]},{"a":52800,"l":"font_top_h_o","c":"Title font (copied to $2800 by title_setup $CDC0; letters two cells high, top half at code n, bottom half at n+32; 8 bytes a glyph, one bit per pixel): glyphs 8-15, $CE40-$CE7F: the top halves of H-O. In the image as shipped (and in the tape copy), $CE48-$CE55, glyph 9 (I) and the first six rows of glyph 10 (J), hold 48 3C 32 26 2B 23 27 20 3F 36 51 22 22 22, not a letter; the copy at $2848 still holds the glyphs (00 00 3C 34 3C 18 18 18 00 00 07 05 07 07), so the damage came after the first title was set up and before the image was frozen. Nothing in the game writes here. Every title after a game over, and the end message, copies the damaged bytes and shows a broken I. botowrap's fixed version holds the clean bytes (facts.md, \"Versions\").","t":"byte","b":[0,0,119,85,119,54,54,62]},{"a":52808,"t":"byte","b":[72,60,50,38,43,35,39,32]},{"a":52816,"t":"byte","b":[63,54,81,34,34,34,2,2]},{"a":52824,"t":"byte","b":[0,0,115,83,117,54,54,48]},{"a":52832,"t":"byte","b":[0,0,112,80,112,112,48,48]},{"a":52840,"t":"byte","b":[0,0,99,119,93,127,42,42]},{"a":52848,"t":"byte","b":[0,0,119,85,119,119,50,58]},{"a":52856,"t":"byte","b":[0,0,54,119,85,99,99,99]},{"a":52864,"l":"font_top_p_w","c":"Title font (copied to $2800 by title_setup $CDC0; letters two cells high, top half at code n, bottom half at n+32; 8 bytes a glyph, one bit per pixel): glyphs 16-23, $CE80-$CEBF: the top halves of P-W.","t":"byte","b":[0,0,118,87,117,51,51,53]},{"a":52872,"t":"byte","b":[0,0,54,119,85,99,99,99]},{"a":52880,"t":"byte","b":[0,0,118,85,119,51,53,55]},{"a":52888,"t":"byte","b":[0,0,55,117,87,103,96,126]},{"a":52896,"t":"byte","b":[0,0,127,93,127,107,8,8]},{"a":52904,"t":"byte","b":[0,0,119,85,119,99,99,99]},{"a":52912,"t":"byte","b":[0,0,119,85,119,99,99,34]},{"a":52920,"t":"byte","b":[0,0,119,85,119,119,34,34]},{"a":52928,"l":"font_top_x_z_punct","c":"Title font (copied to $2800 by title_setup $CDC0; letters two cells high, top half at code n, bottom half at n+32; 8 bytes a glyph, one bit per pixel): glyphs 24-31, $CEC0-$CEFF: the top halves of X, Y, Z; 27 and 28 blank (tops of the full stop and comma); 29 the top of the exclamation mark (its stem); 30 and 31 blank. Neither screen shown through $CDC0 uses 27-31.","t":"byte","b":[0,0,99,99,119,85,62,28]},{"a":52936,"t":"byte","b":[0,0,119,117,103,115,43,27]},{"a":52944,"t":"byte","b":[0,0,127,93,119,0,15,26]},{"a":52952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52968,"t":"byte","b":[0,0,60,52,60,24,24,24]},{"a":52976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52992,"l":"font_bot_blank_a_g","c":"Title font (copied to $2800 by title_setup $CDC0; letters two cells high, top half at code n, bottom half at n+32; 8 bytes a glyph, one bit per pixel): glyphs 32-39, $CF00-$CF3F: 32 blank (the space's bottom), 33-39 the bottom halves of A-G.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[52683]},{"a":53000,"t":"byte","b":[127,127,99,119,85,119,0,0]},{"a":53008,"t":"byte","b":[54,51,51,117,87,118,0,0]},{"a":53016,"t":"byte","b":[112,115,115,85,54,20,0,0]},{"a":53024,"t":"byte","b":[51,51,51,117,86,116,0,0]},{"a":53032,"t":"byte","b":[54,48,49,115,85,118,0,0]},{"a":53040,"t":"byte","b":[54,54,48,112,80,112,0,0]},{"a":53048,"t":"byte","b":[119,119,115,85,55,22,0,0]},{"a":53056,"l":"font_bot_h_o","c":"Title font (copied to $2800 by title_setup $CDC0; letters two cells high, top half at code n, bottom half at n+32; 8 bytes a glyph, one bit per pixel): glyphs 40-47, $CF40-$CF7F: the bottom halves of H-O.","t":"byte","b":[62,54,54,119,85,119,0,0]},{"a":53064,"t":"byte","b":[24,24,24,60,44,60,0,0]},{"a":53072,"t":"byte","b":[2,71,103,85,119,54,0,0]},{"a":53080,"t":"byte","b":[48,54,54,117,83,115,0,0]},{"a":53088,"t":"byte","b":[48,48,115,115,93,127,0,0]},{"a":53096,"t":"byte","b":[34,34,119,119,85,119,0,0]},{"a":53104,"t":"byte","b":[46,38,119,85,119,119,0,0]},{"a":53112,"t":"byte","b":[99,99,99,85,119,54,0,0]},{"a":53120,"l":"font_bot_p_w","c":"Title font (copied to $2800 by title_setup $CDC0; letters two cells high, top half at code n, bottom half at n+32; 8 bytes a glyph, one bit per pixel): glyphs 48-55, $CF80-$CFBF: the bottom halves of P-W.","t":"byte","b":[55,54,48,112,80,112,0,0]},{"a":53128,"t":"byte","b":[107,109,110,87,115,53,0,0]},{"a":53136,"t":"byte","b":[48,54,54,119,83,115,0,0]},{"a":53144,"t":"byte","b":[63,3,115,117,87,118,0,0]},{"a":53152,"t":"byte","b":[8,8,8,62,54,62,0,0]},{"a":53160,"t":"byte","b":[99,99,99,85,119,54,0,0]},{"a":53168,"t":"byte","b":[99,99,54,54,28,8,0,0]},{"a":53176,"t":"byte","b":[42,42,127,93,119,99,0,0]},{"a":53184,"l":"font_bot_x_z_punct","c":"Title font (copied to $2800 by title_setup $CDC0; letters two cells high, top half at code n, bottom half at n+32; 8 bytes a glyph, one bit per pixel): glyphs 56-63, $CFC0-$CFFF: the bottom halves of X, Y, Z; 59 a full stop (a small ring), 60 a comma, 61 the dot of the exclamation mark (under 29); 62 and 63 blank.","t":"byte","b":[28,54,85,119,99,99,0,0]},{"a":53192,"t":"byte","b":[3,3,99,87,58,28,0,0]},{"a":53200,"t":"byte","b":[60,120,0,127,93,119,0,0]},{"a":53208,"t":"byte","b":[0,0,0,60,36,60,0,0]},{"a":53216,"t":"byte","b":[0,0,0,112,80,112,112,192]},{"a":53224,"t":"byte","b":[24,24,0,60,44,60,0,0]},{"a":53232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53248,"t":"gap","n":12288}]}