{"schema":1,"platform":"c64","game":"arkanoid","title":"Arkanoid","build":"","symbols_sha256":"4f5c7f1edc7a3cd0f718d69a12951136c1aed0c1b76a8a8d071bf3ca764bf16c","index":[{"a":0,"n":"cpu_port_dir","k":"variable","len":1,"c":true},{"a":1,"n":"cpu_port","k":"table","len":3,"c":true},{"a":4,"n":"mux_next","k":"variable","len":2,"c":true},{"a":6,"n":"sort_obj","k":"variable","len":1,"c":true},{"a":7,"n":"sort_from","k":"variable","len":1,"c":true},{"a":8,"n":"mux_sprite","k":"variable","len":1,"c":true},{"a":9,"n":"mux_obj_y","k":"variable","len":2,"c":true},{"a":11,"n":"sort_moves","k":"variable","len":1,"c":true},{"a":12,"n":"sort_to","k":"variable","len":1,"c":true},{"a":13,"n":"scr_ptr","k":"variable","len":1,"c":true},{"a":14,"n":"scr_ptr_hi","k":"variable","len":1,"c":true},{"a":15,"n":"col_ptr","k":"variable","len":1,"c":true},{"a":16,"n":"col_ptr_hi","k":"variable","len":1,"c":true},{"a":17,"n":"src_ptr","k":"variable","len":1,"c":true},{"a":18,"n":"src_ptr_hi","k":"variable","len":1,"c":true},{"a":19,"n":"save_y","k":"table","len":29,"c":true},{"a":48,"n":"v1_stack_lo","k":"variable","len":1,"c":true},{"a":49,"n":"v1_stack_lo_top","k":"table","len":7,"c":true},{"a":56,"n":"v1_stack_hi","k":"variable","len":1,"c":true},{"a":57,"n":"v1_stack_hi_top","k":"table","len":7,"c":true},{"a":64,"n":"v1_repeat","k":"variable","len":1,"c":true},{"a":65,"n":"v1_repeat_top","k":"table","len":31,"c":true},{"a":96,"n":"v3_stack_lo","k":"variable","len":1,"c":true},{"a":97,"n":"v3_stack_lo_top","k":"table","len":7,"c":true},{"a":104,"n":"v3_stack_hi","k":"variable","len":1,"c":true},{"a":105,"n":"v3_stack_hi_top","k":"table","len":7,"c":true},{"a":112,"n":"v3_repeat","k":"variable","len":1,"c":true},{"a":113,"n":"v3_repeat_top","k":"table","len":7,"c":true},{"a":120,"n":"drum_stack_lo","k":"variable","len":1,"c":true},{"a":121,"n":"drum_stack_lo_top","k":"table","len":7,"c":true},{"a":128,"n":"drum_stack_hi","k":"table","len":8,"c":true},{"a":136,"n":"drum_loops","k":"variable","len":1,"c":true},{"a":137,"n":"drum_loops_top","k":"table","len":31,"c":true},{"a":168,"n":"v2_stack_lo","k":"variable","len":1,"c":true},{"a":169,"n":"v2_stack_lo_top","k":"table","len":7,"c":true},{"a":176,"n":"v2_stack_hi","k":"variable","len":1,"c":true},{"a":177,"n":"v2_stack_hi_top","k":"table","len":7,"c":true},{"a":184,"n":"v2_repeat","k":"variable","len":1,"c":true},{"a":185,"n":"v2_repeat_top","k":"table","len":33,"c":true},{"a":218,"n":"drum_ptr","k":"variable","len":1,"c":true},{"a":219,"n":"drum_ptr_hi","k":"variable","len":1,"c":true},{"a":220,"n":"drum_wait","k":"variable","len":1,"c":true},{"a":221,"n":"drum_stack_index","k":"variable","len":1,"c":true},{"a":222,"n":"noise_acc","k":"variable","len":1,"c":true},{"a":223,"n":"drum_pending","k":"variable","len":1,"c":true},{"a":224,"n":"v1_seq_ptr","k":"variable","len":1,"c":true},{"a":225,"n":"v1_seq_ptr_hi","k":"variable","len":1,"c":true},{"a":226,"n":"v2_seq_ptr","k":"variable","len":1,"c":true},{"a":227,"n":"v2_seq_ptr_hi","k":"variable","len":1,"c":true},{"a":228,"n":"v3_seq_ptr","k":"variable","len":1,"c":true},{"a":229,"n":"v3_seq_ptr_hi","k":"variable","len":1,"c":true},{"a":230,"n":"v1_note_wait","k":"variable","len":1,"c":true},{"a":231,"n":"v2_note_wait","k":"variable","len":1,"c":true},{"a":232,"n":"v3_note_wait","k":"variable","len":1,"c":true},{"a":233,"n":"v1_stack_index","k":"variable","len":1,"c":true},{"a":234,"n":"v2_stack_index","k":"variable","len":1,"c":true},{"a":235,"n":"v3_stack_index","k":"variable","len":1,"c":true},{"a":236,"n":"v1_transpose","k":"variable","len":1,"c":true},{"a":237,"n":"v2_transpose","k":"variable","len":1,"c":true},{"a":238,"n":"v3_transpose","k":"variable","len":1,"c":true},{"a":239,"n":"cmd_ptr","k":"variable","len":1,"c":true},{"a":240,"n":"cmd_ptr_hi","k":"variable","len":1,"c":true},{"a":241,"n":"v1_pw","k":"variable","len":1,"c":true},{"a":242,"n":"v1_pw_hi","k":"variable","len":1,"c":true},{"a":243,"n":"v2_pw","k":"variable","len":1,"c":true},{"a":244,"n":"v2_pw_hi","k":"variable","len":1,"c":true},{"a":245,"n":"v3_pw","k":"variable","len":1,"c":true},{"a":246,"n":"v3_pw_hi","k":"variable","len":1,"c":true},{"a":247,"n":"v1_freq","k":"variable","len":1,"c":true},{"a":248,"n":"v1_freq_hi","k":"variable","len":1,"c":true},{"a":249,"n":"v2_freq","k":"variable","len":1,"c":true},{"a":250,"n":"v2_freq_hi","k":"variable","len":1,"c":true},{"a":251,"n":"v3_freq","k":"variable","len":1,"c":true},{"a":252,"n":"v3_freq_hi","k":"variable","len":1,"c":true},{"a":253,"n":"sfx_ptr","k":"variable","len":1,"c":true},{"a":254,"n":"sfx_ptr_hi","k":"variable","len":1,"c":true},{"a":255,"n":"note_byte","k":"variable","len":1,"c":true},{"a":512,"n":"frame_ticks","k":"variable","len":1,"c":true},{"a":513,"n":"frame_counter","k":"variable","len":1,"c":true},{"a":514,"n":"death_divider","k":"variable","len":1,"c":true},{"a":515,"n":"ctrl_bits","k":"variable","len":1,"c":true},{"a":516,"n":"aim_dx","k":"variable","len":1,"c":true},{"a":517,"n":"aim_dy","k":"variable","len":1,"c":true},{"a":518,"n":"vaus_x","k":"variable","len":1,"c":true},{"a":519,"n":"vaus_resize_state","k":"variable","len":1,"c":true},{"a":520,"n":"last_capsule","k":"variable","len":1,"c":true},{"a":521,"n":"drum_mode","k":"variable","len":1,"c":true},{"a":522,"n":"vaus_stretch","k":"variable","len":1,"c":true},{"a":523,"n":"vaus_overhang","k":"variable","len":1,"c":true},{"a":524,"n":"width_tmp","k":"variable","len":1,"c":true},{"a":525,"n":"x_save","k":"variable","len":1,"c":true},{"a":526,"n":"brick_colour","k":"variable","len":1,"c":true},{"a":527,"n":"blink_phase","k":"variable","len":1,"c":true},{"a":528,"n":"index_save","k":"variable","len":1,"c":true},{"a":529,"n":"bits_lo","k":"variable","len":1,"c":true},{"a":530,"n":"bits_hi","k":"variable","len":1,"c":true},{"a":531,"n":"key_y_save","k":"variable","len":1,"c":true},{"a":532,"n":"menu_key","k":"variable","len":1,"c":true},{"a":533,"n":"doh_flash_count","k":"variable","len":1,"c":true},{"a":534,"n":"tune_hold","k":"variable","len":1,"c":true},{"a":535,"n":"tune_hold_kind","k":"variable","len":1,"c":true},{"a":536,"n":"hit_row","k":"variable","len":1,"c":true},{"a":537,"n":"hit_col","k":"variable","len":2,"c":true},{"a":539,"n":"shadow_offset","k":"variable","len":1,"c":true},{"a":540,"n":"pattern_tmp","k":"variable","len":1,"c":true},{"a":541,"n":"pattern_phase","k":"variable","len":1,"c":true},{"a":542,"n":"row_counter","k":"variable","len":1,"c":true},{"a":543,"n":"doh_shot_acc","k":"variable","len":1,"c":true},{"a":544,"n":"anim_tick","k":"variable","len":1,"c":true},{"a":545,"n":"catch_offset","k":"variable","len":1,"c":true},{"a":546,"n":"wipe_rows","k":"variable","len":1,"c":true},{"a":547,"n":"laser_morph","k":"variable","len":2,"c":true},{"a":549,"n":"shine_divider","k":"variable","len":1,"c":true},{"a":550,"n":"row_bits_hi","k":"variable","len":1,"c":true},{"a":551,"n":"row_bits_lo","k":"variable","len":1,"c":true},{"a":552,"n":"ball_held","k":"variable","len":1,"c":true},{"a":553,"n":"enemy_spawn_timer","k":"variable","len":1,"c":true},{"a":554,"n":"catch_power","k":"variable","len":1,"c":true},{"a":555,"n":"laser_power","k":"variable","len":1,"c":true},{"a":556,"n":"laser_active","k":"variable","len":2,"c":true},{"a":558,"n":"laser_tick","k":"variable","len":2,"c":true},{"a":560,"n":"laser_hit","k":"variable","len":2,"c":true},{"a":562,"n":"enemy_col_tmp","k":"variable","len":1,"c":true},{"a":563,"n":"intro_step","k":"variable","len":1,"c":true},{"a":564,"n":"enemy_y_tmp","k":"variable","len":1,"c":true},{"a":565,"n":"fire_prev","k":"variable","len":1,"c":true},{"a":566,"n":"fire_now","k":"variable","len":1,"c":true},{"a":567,"n":"capsule_type","k":"variable","len":1,"c":true},{"a":568,"n":"capsule_roll","k":"variable","len":1,"c":true},{"a":569,"n":"capsule_roll_tick","k":"variable","len":1,"c":true},{"a":570,"n":"ball_speed","k":"variable","len":1,"c":true},{"a":571,"n":"ball_speed_frac","k":"variable","len":1,"c":true},{"a":572,"n":"break_state","k":"variable","len":1,"c":true},{"a":573,"n":"exiting","k":"variable","len":1,"c":true},{"a":574,"n":"vaus_at_wall","k":"variable","len":1,"c":true},{"a":575,"n":"doh_mouth_timer","k":"variable","len":1,"c":true},{"a":576,"n":"doh_mouth_frame","k":"variable","len":1,"c":true},{"a":577,"n":"frame_counter_hi","k":"variable","len":1,"c":true},{"a":578,"n":"gate_open","k":"variable","len":1,"c":true},{"a":579,"n":"gate_timer","k":"variable","len":1,"c":true},{"a":580,"n":"gate_moving","k":"variable","len":1,"c":true},{"a":581,"n":"gate_stage","k":"variable","len":1,"c":true},{"a":582,"n":"gate_side","k":"variable","len":1,"c":true},{"a":583,"n":"exit_step","k":"variable","len":1,"c":true},{"a":584,"n":"speed_acc","k":"variable","len":1,"c":true},{"a":585,"n":"death_frame","k":"variable","len":2,"c":true},{"a":587,"n":"ball_steps","k":"variable","len":1,"c":true},{"a":588,"n":"enemy_block_up","k":"table","len":3,"c":true},{"a":591,"n":"enemy_block_down","k":"table","len":3,"c":true},{"a":594,"n":"enemy_block_right","k":"table","len":3,"c":true},{"a":597,"n":"enemy_block_left","k":"table","len":3,"c":true},{"a":600,"n":"enemy_homed","k":"table","len":3,"c":true},{"a":603,"n":"enemy_anim_timer","k":"table","len":3,"c":true},{"a":606,"n":"enemy_entry","k":"table","len":3,"c":true},{"a":609,"n":"intro_speed","k":"table","len":3,"c":true},{"a":612,"n":"row_nibbles","k":"table","len":16,"c":true},{"a":628,"n":"enemy_state","k":"variable","len":1,"c":true},{"a":629,"n":"intro_shot_state","k":"variable","len":1,"c":true},{"a":630,"n":"intro_attacker_state","k":"variable","len":1,"c":true},{"a":631,"n":"enemy_anim","k":"variable","len":1,"c":true},{"a":632,"n":"enemy_anim_1","k":"variable","len":1,"c":true},{"a":633,"n":"enemy_anim_2","k":"variable","len":1,"c":true},{"a":634,"n":"enemy_dy","k":"table","len":3,"c":true},{"a":637,"n":"enemy_dx","k":"table","len":3,"c":true},{"a":640,"n":"enemy_rate_y","k":"table","len":3,"c":true},{"a":643,"n":"enemy_rate_x","k":"table","len":3,"c":true},{"a":646,"n":"enemy_acc","k":"table","len":3,"c":true},{"a":649,"n":"enemy_acc_add","k":"table","len":3,"c":true},{"a":652,"n":"enemy_last_dy","k":"table","len":3,"c":true},{"a":655,"n":"enemy_last_dx","k":"table","len":3,"c":true},{"a":658,"n":"enemy_anim_delay","k":"table","len":3,"c":true},{"a":661,"n":"ball_dy","k":"table","len":3,"c":true},{"a":664,"n":"ball_dx","k":"table","len":3,"c":true},{"a":667,"n":"ball_rate_y","k":"table","len":3,"c":true},{"a":670,"n":"ball_rate_x","k":"table","len":3,"c":true},{"a":673,"n":"ball_acc","k":"table","len":3,"c":true},{"a":676,"n":"ball_acc_add","k":"table","len":3,"c":true},{"a":679,"n":"ball_active","k":"table","len":3,"c":true},{"a":682,"n":"ball_cooldown","k":"table","len":3,"c":true},{"a":685,"n":"ball_loop_count","k":"table","len":3,"c":true},{"a":688,"n":"ending_chars","k":"table","len":6,"c":true},{"a":694,"n":"f_02B6","k":"table","len":6,"c":true},{"a":700,"n":"f_02BC","k":"table","len":6,"c":true},{"a":706,"n":"f_02C2","k":"table","len":6,"c":true},{"a":712,"n":"f_02C8","k":"table","len":6,"c":true},{"a":718,"n":"f_02CE","k":"table","len":6,"c":true},{"a":724,"n":"f_02D4","k":"table","len":6,"c":true},{"a":730,"n":"f_02DA","k":"table","len":6,"c":true},{"a":736,"n":"f_02E0","k":"table","len":6,"c":true},{"a":742,"n":"f_02E6","k":"table","len":26,"c":true},{"a":768,"n":"metal_state","k":"table","len":85,"c":true},{"a":853,"n":"metal_hits","k":"table","len":85,"c":true},{"a":938,"n":"metal_pos","k":"variable","len":1,"c":true},{"a":939,"n":"metal_pos_hi","k":"table","len":85,"c":true},{"a":1109,"n":"bricks_left","k":"variable","len":1,"c":true},{"a":1110,"n":"metal_count","k":"variable","len":1,"c":true},{"a":1111,"n":"bg_colour","k":"variable","len":1,"c":true},{"a":1112,"n":"bg_char_base","k":"variable","len":1,"c":true},{"a":1113,"n":"wall_buffer_p1","k":"table","len":159,"c":true},{"a":1272,"n":"f_04F8","k":"variable","len":1,"c":true},{"a":1273,"n":"wall_buffer_p2","k":"table","len":160,"c":true},{"a":1536,"n":"save_wall_of_player","k":"routine","len":18,"c":true},{"a":1554,"n":"save_wall_row","k":"routine","len":94,"c":true},{"a":1593,"n":"b_0639","k":"branch","len":1,"c":false},{"a":1599,"n":"b_063F","k":"branch","len":1,"c":false},{"a":1648,"n":"save_wall_colours","k":"routine","len":93,"c":true},{"a":1661,"n":"b_067D","k":"branch","len":1,"c":false},{"a":1672,"n":"b_0688","k":"branch","len":1,"c":false},{"a":1679,"n":"b_068F","k":"branch","len":1,"c":false},{"a":1681,"n":"j_0691","k":"branch","len":1,"c":false},{"a":1695,"n":"b_069F","k":"branch","len":1,"c":false},{"a":1740,"n":"r_06CC","k":"branch","len":1,"c":false},{"a":1741,"n":"wall_buffer_lo","k":"variable","len":2,"c":true},{"a":1743,"n":"wall_buffer_hi","k":"variable","len":2,"c":true},{"a":1745,"n":"intro_escape_animation","k":"routine","len":6,"c":true},{"a":1751,"n":"intro_frame_loop","k":"routine","len":19,"c":true},{"a":1769,"n":"r_06E9","k":"branch","len":1,"c":false},{"a":1770,"n":"intro_shot","k":"routine","len":127,"c":true},{"a":1833,"n":"b_0729","k":"branch","len":1,"c":false},{"a":1896,"n":"r_0768","k":"branch","len":1,"c":false},{"a":1897,"n":"intro_path_done","k":"routine","len":18,"c":true},{"a":1915,"n":"intro_attacker_path","k":"routine","len":55,"c":true},{"a":1933,"n":"b_078D","k":"branch","len":1,"c":false},{"a":1970,"n":"intro_path_start","k":"routine","len":42,"c":true},{"a":2012,"n":"intro_path_x","k":"table","len":29,"c":true},{"a":2041,"n":"intro_path_y","k":"table","len":7,"c":true},{"a":2048,"n":"intro_path_y_tail","k":"table","len":22,"c":true},{"a":2070,"n":"intro_path_speed","k":"table","len":28,"c":true},{"a":2098,"n":"key_held","k":"routine","len":58,"c":true},{"a":2141,"n":"b_085D","k":"branch","len":1,"c":false},{"a":2142,"n":"j_085E","k":"branch","len":1,"c":false},{"a":2156,"n":"key_row_select","k":"table","len":8,"c":true},{"a":2164,"n":"key_col_mask","k":"table","len":8,"c":true},{"a":2172,"n":"intro_move_slots","k":"routine","len":37,"c":true},{"a":2174,"n":"b_087E","k":"branch","len":1,"c":false},{"a":2199,"n":"b_0897","k":"branch","len":1,"c":false},{"a":2205,"n":"b_089D","k":"branch","len":1,"c":false},{"a":2209,"n":"intro_vaus_frames","k":"routine","len":43,"c":true},{"a":2240,"n":"r_08C0","k":"branch","len":1,"c":false},{"a":2241,"n":"b_08C1","k":"branch","len":1,"c":false},{"a":2252,"n":"intro_sprite_setup","k":"routine","len":63,"c":true},{"a":2275,"n":"b_08E3","k":"branch","len":1,"c":false},{"a":2315,"n":"intro_show_patch","k":"routine","len":28,"c":true},{"a":2343,"n":"score_p1","k":"variable","len":1,"c":true},{"a":2344,"n":"f_0928","k":"variable","len":1,"c":true},{"a":2345,"n":"f_0929","k":"variable","len":1,"c":true},{"a":2346,"n":"score_p2","k":"table","len":3,"c":true},{"a":2349,"n":"extra_life_p1","k":"variable","len":1,"c":true},{"a":2350,"n":"a_092E","k":"variable","len":1,"c":true},{"a":2351,"n":"a_092F","k":"variable","len":2,"c":true},{"a":2353,"n":"a_0931","k":"variable","len":1,"c":true},{"a":2354,"n":"a_0932","k":"variable","len":1,"c":true},{"a":2355,"n":"points_pending","k":"variable","len":1,"c":true},{"a":2356,"n":"a_0934","k":"variable","len":1,"c":true},{"a":2357,"n":"a_0935","k":"variable","len":1,"c":true},{"a":2358,"n":"lives_p1","k":"variable","len":1,"c":true},{"a":2359,"n":"lives_p2","k":"variable","len":1,"c":true},{"a":2360,"n":"current_player","k":"variable","len":1,"c":true},{"a":2361,"n":"players_left","k":"variable","len":1,"c":true},{"a":2362,"n":"two_players","k":"variable","len":1,"c":true},{"a":2363,"n":"bricks_saved","k":"variable","len":2,"c":true},{"a":2365,"n":"round_p1","k":"variable","len":1,"c":true},{"a":2366,"n":"round_p2","k":"variable","len":1,"c":true},{"a":2367,"n":"input_device","k":"variable","len":1,"c":true},{"a":2368,"n":"two_devices","k":"variable","len":1,"c":true},{"a":2369,"n":"high_score","k":"table","len":3,"c":true},{"a":2372,"n":"tamper_flag","k":"variable","len":1,"c":true},{"a":2373,"n":"attract_count","k":"variable","len":1,"c":true},{"a":2374,"n":"dissolve_masks","k":"variable","len":1,"c":true},{"a":2375,"n":"f_0947","k":"table","len":9,"c":true},{"a":2384,"n":"a_0950","k":"variable","len":1,"c":true},{"a":2385,"n":"dissolve_rows","k":"variable","len":1,"c":true},{"a":2386,"n":"f_0952","k":"table","len":7,"c":true},{"a":2393,"n":"a_0959","k":"variable","len":1,"c":true},{"a":2394,"n":"start_hop","k":"table","len":3,"c":true},{"a":2397,"n":"start_call","k":"routine","len":3,"c":true},{"a":2400,"n":"start_dead_tail","k":"table","len":11,"c":true},{"a":2411,"n":"stale_code_a971","k":"table","len":318,"c":true},{"a":2729,"n":"a_0AA9","k":"table","len":64,"c":true},{"a":3072,"n":"stale_code_ac06","k":"table","len":1024,"c":true},{"a":4096,"n":"stale_code_b006","k":"table","len":1024,"c":true},{"a":5120,"n":"stale_code_b406","k":"table","len":268,"c":true},{"a":5388,"n":"a_150C","k":"table","len":64,"c":true},{"a":5632,"n":"stale_start_hop","k":"table","len":17,"c":true},{"a":5649,"n":"ram_fill_1611","k":"table","len":495,"c":true},{"a":6144,"n":"stale_code_0600","k":"table","len":858,"c":true},{"a":7002,"n":"ram_fill_1b5a","k":"table","len":166,"c":true},{"a":7168,"n":"glyphs_80_9f","k":"table","len":256,"c":true},{"a":7424,"n":"glyphs_a0_bf","k":"table","len":256,"c":true},{"a":7680,"n":"glyphs_c0_df","k":"table","len":256,"c":true},{"a":7936,"n":"glyphs_e0_ff","k":"table","len":256,"c":true},{"a":8192,"n":"sfx_bat","k":"table","len":93,"c":true},{"a":8285,"n":"sfx_brick","k":"table","len":93,"c":true},{"a":8378,"n":"sfx_enlarge","k":"table","len":93,"c":true},{"a":8471,"n":"sfx_laser","k":"table","len":93,"c":true},{"a":8564,"n":"sfx_metal","k":"table","len":93,"c":true},{"a":8657,"n":"sfx_enemy","k":"table","len":93,"c":true},{"a":8750,"n":"sfx_exit","k":"table","len":93,"c":true},{"a":8843,"n":"sfx_catch","k":"table","len":93,"c":true},{"a":8936,"n":"sfx_start","k":"table","len":93,"c":true},{"a":9029,"n":"sfx_vaus_lost","k":"table","len":93,"c":true},{"a":9122,"n":"sfx_doh_hit","k":"table","len":93,"c":true},{"a":9215,"n":"sfx_doh_end","k":"table","len":93,"c":true},{"a":9308,"n":"v1_instr","k":"variable","len":1,"c":true},{"a":9309,"n":"v1_ins_pstep1_hi","k":"variable","len":1,"c":true},{"a":9310,"n":"v1_ins_pstep2_lo","k":"variable","len":1,"c":true},{"a":9311,"n":"v1_ins_pstep2_hi","k":"variable","len":1,"c":true},{"a":9312,"n":"v1_ins_pstep3_lo","k":"variable","len":1,"c":true},{"a":9313,"n":"v1_ins_pstep3_hi","k":"variable","len":1,"c":true},{"a":9314,"n":"v1_ins_pstep4_lo","k":"variable","len":1,"c":true},{"a":9315,"n":"v1_ins_pstep4_hi","k":"variable","len":1,"c":true},{"a":9316,"n":"v1_ins_plen1","k":"variable","len":1,"c":true},{"a":9317,"n":"v1_ins_plen2","k":"variable","len":1,"c":true},{"a":9318,"n":"v1_ins_plen3","k":"variable","len":1,"c":true},{"a":9319,"n":"v1_ins_plen4","k":"variable","len":1,"c":true},{"a":9320,"n":"v1_ins_pdelay","k":"variable","len":1,"c":true},{"a":9321,"n":"v1_ins_pmode","k":"variable","len":1,"c":true},{"a":9322,"n":"v1_ins_wlen1","k":"variable","len":1,"c":true},{"a":9323,"n":"v1_ins_wlen2","k":"variable","len":1,"c":true},{"a":9324,"n":"v1_ins_wdelay","k":"variable","len":1,"c":true},{"a":9325,"n":"v1_ins_wmode","k":"variable","len":1,"c":true},{"a":9326,"n":"v1_ins_wstep1_lo","k":"variable","len":1,"c":true},{"a":9327,"n":"v1_ins_wstep1_hi","k":"variable","len":1,"c":true},{"a":9328,"n":"v1_ins_wstep2_lo","k":"variable","len":1,"c":true},{"a":9329,"n":"v1_ins_wstep2_hi","k":"variable","len":1,"c":true},{"a":9330,"n":"v1_ins_pw_lo","k":"variable","len":1,"c":true},{"a":9331,"n":"v1_ins_pw_hi","k":"variable","len":1,"c":true},{"a":9332,"n":"v1_ins_ctrl","k":"variable","len":1,"c":true},{"a":9333,"n":"v1_ins_ad","k":"variable","len":1,"c":true},{"a":9334,"n":"v1_ins_sr","k":"variable","len":1,"c":true},{"a":9335,"n":"v1_ins_gate_time","k":"variable","len":1,"c":true},{"a":9336,"n":"v1_ins_life","k":"variable","len":1,"c":true},{"a":9337,"n":"v2_instr","k":"variable","len":1,"c":true},{"a":9338,"n":"v2_ins_pstep1_hi","k":"variable","len":1,"c":true},{"a":9339,"n":"v2_ins_pstep2_lo","k":"variable","len":1,"c":true},{"a":9340,"n":"v2_ins_pstep2_hi","k":"variable","len":1,"c":true},{"a":9341,"n":"v2_ins_pstep3_lo","k":"variable","len":1,"c":true},{"a":9342,"n":"v2_ins_pstep3_hi","k":"variable","len":1,"c":true},{"a":9343,"n":"v2_ins_pstep4_lo","k":"variable","len":1,"c":true},{"a":9344,"n":"v2_ins_pstep4_hi","k":"variable","len":1,"c":true},{"a":9345,"n":"v2_ins_plen1","k":"variable","len":1,"c":true},{"a":9346,"n":"v2_ins_plen2","k":"variable","len":1,"c":true},{"a":9347,"n":"v2_ins_plen3","k":"variable","len":1,"c":true},{"a":9348,"n":"v2_ins_plen4","k":"variable","len":1,"c":true},{"a":9349,"n":"v2_ins_pdelay","k":"variable","len":1,"c":true},{"a":9350,"n":"v2_ins_pmode","k":"variable","len":1,"c":true},{"a":9351,"n":"v2_ins_wlen1","k":"variable","len":1,"c":true},{"a":9352,"n":"v2_ins_wlen2","k":"variable","len":1,"c":true},{"a":9353,"n":"v2_ins_wdelay","k":"variable","len":1,"c":true},{"a":9354,"n":"v2_ins_wmode","k":"variable","len":1,"c":true},{"a":9355,"n":"v2_ins_wstep1_lo","k":"variable","len":1,"c":true},{"a":9356,"n":"v2_ins_wstep1_hi","k":"variable","len":1,"c":true},{"a":9357,"n":"v2_ins_wstep2_lo","k":"variable","len":1,"c":true},{"a":9358,"n":"v2_ins_wstep2_hi","k":"variable","len":1,"c":true},{"a":9359,"n":"v2_ins_pw_lo","k":"variable","len":1,"c":true},{"a":9360,"n":"v2_ins_pw_hi","k":"variable","len":1,"c":true},{"a":9361,"n":"v2_ins_ctrl","k":"variable","len":1,"c":true},{"a":9362,"n":"v2_ins_ad","k":"variable","len":1,"c":true},{"a":9363,"n":"v2_ins_sr","k":"variable","len":1,"c":true},{"a":9364,"n":"v2_ins_gate_time","k":"variable","len":1,"c":true},{"a":9365,"n":"v2_ins_life","k":"variable","len":1,"c":true},{"a":9366,"n":"v3_instr","k":"variable","len":1,"c":true},{"a":9367,"n":"v3_ins_pstep1_hi","k":"variable","len":1,"c":true},{"a":9368,"n":"v3_ins_pstep2_lo","k":"variable","len":1,"c":true},{"a":9369,"n":"v3_ins_pstep2_hi","k":"variable","len":1,"c":true},{"a":9370,"n":"v3_ins_pstep3_lo","k":"variable","len":1,"c":true},{"a":9371,"n":"v3_ins_pstep3_hi","k":"variable","len":1,"c":true},{"a":9372,"n":"v3_ins_pstep4_lo","k":"variable","len":1,"c":true},{"a":9373,"n":"v3_ins_pstep4_hi","k":"variable","len":1,"c":true},{"a":9374,"n":"v3_ins_plen1","k":"variable","len":1,"c":true},{"a":9375,"n":"v3_ins_plen2","k":"variable","len":1,"c":true},{"a":9376,"n":"v3_ins_plen3","k":"variable","len":1,"c":true},{"a":9377,"n":"v3_ins_plen4","k":"variable","len":1,"c":true},{"a":9378,"n":"v3_ins_pdelay","k":"variable","len":1,"c":true},{"a":9379,"n":"v3_ins_pmode","k":"variable","len":1,"c":true},{"a":9380,"n":"v3_ins_wlen1","k":"variable","len":1,"c":true},{"a":9381,"n":"v3_ins_wlen2","k":"variable","len":1,"c":true},{"a":9382,"n":"v3_ins_wdelay","k":"variable","len":1,"c":true},{"a":9383,"n":"v3_ins_wmode","k":"variable","len":1,"c":true},{"a":9384,"n":"v3_ins_wstep1_lo","k":"variable","len":1,"c":true},{"a":9385,"n":"v3_ins_wstep1_hi","k":"variable","len":1,"c":true},{"a":9386,"n":"v3_ins_wstep2_lo","k":"variable","len":1,"c":true},{"a":9387,"n":"v3_ins_wstep2_hi","k":"variable","len":1,"c":true},{"a":9388,"n":"v3_ins_pw_lo","k":"variable","len":1,"c":true},{"a":9389,"n":"v3_ins_pw_hi","k":"variable","len":1,"c":true},{"a":9390,"n":"v3_ins_ctrl","k":"variable","len":1,"c":true},{"a":9391,"n":"v3_ins_ad","k":"variable","len":1,"c":true},{"a":9392,"n":"v3_ins_sr","k":"variable","len":1,"c":true},{"a":9393,"n":"v3_ins_gate_time","k":"variable","len":1,"c":true},{"a":9394,"n":"v3_ins_life","k":"variable","len":1,"c":true},{"a":9395,"n":"filter_preset","k":"table","len":8,"c":true},{"a":9403,"n":"filter_preset_b","k":"table","len":8,"c":true},{"a":9411,"n":"filter_steps","k":"variable","len":1,"c":true},{"a":9412,"n":"filter_step1_hi","k":"variable","len":1,"c":true},{"a":9413,"n":"filter_step2_lo","k":"variable","len":1,"c":true},{"a":9414,"n":"filter_step2_hi","k":"variable","len":1,"c":true},{"a":9415,"n":"filter_step3_lo","k":"variable","len":1,"c":true},{"a":9416,"n":"filter_step3_hi","k":"variable","len":1,"c":true},{"a":9417,"n":"filter_step4_lo","k":"variable","len":1,"c":true},{"a":9418,"n":"filter_step4_hi","k":"variable","len":1,"c":true},{"a":9419,"n":"filter_len1","k":"variable","len":1,"c":true},{"a":9420,"n":"filter_len2","k":"variable","len":1,"c":true},{"a":9421,"n":"filter_len3","k":"variable","len":1,"c":true},{"a":9422,"n":"filter_len4","k":"variable","len":1,"c":true},{"a":9423,"n":"filter_delay","k":"variable","len":1,"c":true},{"a":9424,"n":"filter_mode","k":"variable","len":1,"c":true},{"a":9425,"n":"filter_start_lo","k":"variable","len":1,"c":true},{"a":9426,"n":"filter_start_hi","k":"variable","len":1,"c":true},{"a":9427,"n":"filter_cutoff","k":"variable","len":1,"c":true},{"a":9428,"n":"filter_cutoff_hi","k":"variable","len":1,"c":true},{"a":9429,"n":"filter_count1","k":"variable","len":1,"c":true},{"a":9430,"n":"filter_count2","k":"variable","len":1,"c":true},{"a":9431,"n":"filter_count3","k":"variable","len":1,"c":true},{"a":9432,"n":"filter_count4","k":"variable","len":1,"c":true},{"a":9433,"n":"v1_state","k":"variable","len":1,"c":true},{"a":9434,"n":"v1_pstep1_hi","k":"variable","len":1,"c":true},{"a":9435,"n":"v1_pstep2_lo","k":"variable","len":1,"c":true},{"a":9436,"n":"v1_pstep2_hi","k":"variable","len":1,"c":true},{"a":9437,"n":"v1_pstep3_lo","k":"variable","len":1,"c":true},{"a":9438,"n":"v1_pstep3_hi","k":"variable","len":1,"c":true},{"a":9439,"n":"v1_pstep4_lo","k":"variable","len":1,"c":true},{"a":9440,"n":"v1_pstep4_hi","k":"variable","len":1,"c":true},{"a":9441,"n":"v1_plen1","k":"variable","len":1,"c":true},{"a":9442,"n":"v1_plen2","k":"variable","len":1,"c":true},{"a":9443,"n":"v1_plen3","k":"variable","len":1,"c":true},{"a":9444,"n":"v1_plen4","k":"variable","len":1,"c":true},{"a":9445,"n":"v1_pdelay","k":"variable","len":1,"c":true},{"a":9446,"n":"v1_pmode","k":"variable","len":1,"c":true},{"a":9447,"n":"v1_wlen1","k":"variable","len":1,"c":true},{"a":9448,"n":"v1_wlen2","k":"variable","len":1,"c":true},{"a":9449,"n":"v1_wdelay","k":"variable","len":1,"c":true},{"a":9450,"n":"v1_wmode","k":"variable","len":1,"c":true},{"a":9451,"n":"v1_wstep1_lo","k":"variable","len":1,"c":true},{"a":9452,"n":"v1_wstep1_hi","k":"variable","len":1,"c":true},{"a":9453,"n":"v1_wstep2_lo","k":"variable","len":1,"c":true},{"a":9454,"n":"v1_wstep2_hi","k":"variable","len":1,"c":true},{"a":9455,"n":"v1_pw_start_lo","k":"variable","len":1,"c":true},{"a":9456,"n":"v1_pw_start_hi","k":"variable","len":1,"c":true},{"a":9457,"n":"v1_note_freq_lo","k":"variable","len":1,"c":true},{"a":9458,"n":"v1_note_freq_hi","k":"variable","len":1,"c":true},{"a":9459,"n":"v1_ctrl","k":"variable","len":1,"c":true},{"a":9460,"n":"v1_gate_timer","k":"variable","len":1,"c":true},{"a":9461,"n":"v1_life_timer","k":"variable","len":1,"c":true},{"a":9462,"n":"v1_pcount1","k":"variable","len":1,"c":true},{"a":9463,"n":"v1_pcount2","k":"variable","len":1,"c":true},{"a":9464,"n":"v1_pcount3","k":"variable","len":1,"c":true},{"a":9465,"n":"v1_pcount4","k":"variable","len":1,"c":true},{"a":9466,"n":"v1_wcount1","k":"variable","len":1,"c":true},{"a":9467,"n":"v1_wcount2","k":"variable","len":1,"c":true},{"a":9468,"n":"v2_state","k":"variable","len":1,"c":true},{"a":9469,"n":"v2_pstep1_hi","k":"variable","len":1,"c":true},{"a":9470,"n":"v2_pstep2_lo","k":"variable","len":1,"c":true},{"a":9471,"n":"v2_pstep2_hi","k":"variable","len":1,"c":true},{"a":9472,"n":"v2_pstep3_lo","k":"variable","len":1,"c":true},{"a":9473,"n":"v2_pstep3_hi","k":"variable","len":1,"c":true},{"a":9474,"n":"v2_pstep4_lo","k":"variable","len":1,"c":true},{"a":9475,"n":"v2_pstep4_hi","k":"variable","len":1,"c":true},{"a":9476,"n":"v2_plen1","k":"variable","len":1,"c":true},{"a":9477,"n":"v2_plen2","k":"variable","len":1,"c":true},{"a":9478,"n":"v2_plen3","k":"variable","len":1,"c":true},{"a":9479,"n":"v2_plen4","k":"variable","len":1,"c":true},{"a":9480,"n":"v2_pdelay","k":"variable","len":1,"c":true},{"a":9481,"n":"v2_pmode","k":"variable","len":1,"c":true},{"a":9482,"n":"v2_wlen1","k":"variable","len":1,"c":true},{"a":9483,"n":"v2_wlen2","k":"variable","len":1,"c":true},{"a":9484,"n":"v2_wdelay","k":"variable","len":1,"c":true},{"a":9485,"n":"v2_wmode","k":"variable","len":1,"c":true},{"a":9486,"n":"v2_wstep1_lo","k":"variable","len":1,"c":true},{"a":9487,"n":"v2_wstep1_hi","k":"variable","len":1,"c":true},{"a":9488,"n":"v2_wstep2_lo","k":"variable","len":1,"c":true},{"a":9489,"n":"v2_wstep2_hi","k":"variable","len":1,"c":true},{"a":9490,"n":"v2_pw_start_lo","k":"variable","len":1,"c":true},{"a":9491,"n":"v2_pw_start_hi","k":"variable","len":1,"c":true},{"a":9492,"n":"v2_note_freq_lo","k":"variable","len":1,"c":true},{"a":9493,"n":"v2_note_freq_hi","k":"variable","len":1,"c":true},{"a":9494,"n":"v2_ctrl","k":"variable","len":1,"c":true},{"a":9495,"n":"v2_gate_timer","k":"variable","len":1,"c":true},{"a":9496,"n":"v2_life_timer","k":"variable","len":1,"c":true},{"a":9497,"n":"v2_pcount1","k":"variable","len":1,"c":true},{"a":9498,"n":"v2_pcount2","k":"variable","len":1,"c":true},{"a":9499,"n":"v2_pcount3","k":"variable","len":1,"c":true},{"a":9500,"n":"v2_pcount4","k":"variable","len":1,"c":true},{"a":9501,"n":"v2_wcount1","k":"variable","len":1,"c":true},{"a":9502,"n":"v2_wcount2","k":"variable","len":1,"c":true},{"a":9503,"n":"v3_state","k":"variable","len":1,"c":true},{"a":9504,"n":"v3_pstep1_hi","k":"variable","len":1,"c":true},{"a":9505,"n":"v3_pstep2_lo","k":"variable","len":1,"c":true},{"a":9506,"n":"v3_pstep2_hi","k":"variable","len":1,"c":true},{"a":9507,"n":"v3_pstep3_lo","k":"variable","len":1,"c":true},{"a":9508,"n":"v3_pstep3_hi","k":"variable","len":1,"c":true},{"a":9509,"n":"v3_pstep4_lo","k":"variable","len":1,"c":true},{"a":9510,"n":"v3_pstep4_hi","k":"variable","len":1,"c":true},{"a":9511,"n":"v3_plen1","k":"variable","len":1,"c":true},{"a":9512,"n":"v3_plen2","k":"variable","len":1,"c":true},{"a":9513,"n":"v3_plen3","k":"variable","len":1,"c":true},{"a":9514,"n":"v3_plen4","k":"variable","len":1,"c":true},{"a":9515,"n":"v3_pdelay","k":"variable","len":1,"c":true},{"a":9516,"n":"v3_pmode","k":"variable","len":1,"c":true},{"a":9517,"n":"v3_wlen1","k":"variable","len":1,"c":true},{"a":9518,"n":"v3_wlen2","k":"variable","len":1,"c":true},{"a":9519,"n":"v3_wdelay","k":"variable","len":1,"c":true},{"a":9520,"n":"v3_wmode","k":"variable","len":1,"c":true},{"a":9521,"n":"v3_wstep1_lo","k":"variable","len":1,"c":true},{"a":9522,"n":"v3_wstep1_hi","k":"variable","len":1,"c":true},{"a":9523,"n":"v3_wstep2_lo","k":"variable","len":1,"c":true},{"a":9524,"n":"v3_wstep2_hi","k":"variable","len":1,"c":true},{"a":9525,"n":"v3_pw_start_lo","k":"variable","len":1,"c":true},{"a":9526,"n":"v3_pw_start_hi","k":"variable","len":1,"c":true},{"a":9527,"n":"v3_note_freq_lo","k":"variable","len":1,"c":true},{"a":9528,"n":"v3_note_freq_hi","k":"variable","len":1,"c":true},{"a":9529,"n":"v3_ctrl","k":"variable","len":1,"c":true},{"a":9530,"n":"v3_gate_timer","k":"variable","len":1,"c":true},{"a":9531,"n":"v3_life_timer","k":"variable","len":1,"c":true},{"a":9532,"n":"v3_pcount1","k":"variable","len":1,"c":true},{"a":9533,"n":"v3_pcount2","k":"variable","len":1,"c":true},{"a":9534,"n":"v3_pcount3","k":"variable","len":1,"c":true},{"a":9535,"n":"v3_pcount4","k":"variable","len":1,"c":true},{"a":9536,"n":"v3_wcount1","k":"variable","len":1,"c":true},{"a":9537,"n":"v3_wcount2","k":"variable","len":1,"c":true},{"a":9538,"n":"filter_voice","k":"variable","len":1,"c":true},{"a":9539,"n":"cutoff_tmp","k":"variable","len":1,"c":true},{"a":9540,"n":"tune_header","k":"variable","len":1,"c":true},{"a":9541,"n":"v1_playing","k":"variable","len":1,"c":true},{"a":9542,"n":"v2_playing","k":"variable","len":1,"c":true},{"a":9543,"n":"v3_playing","k":"variable","len":1,"c":true},{"a":9544,"n":"voice_tmp","k":"variable","len":1,"c":true},{"a":9545,"n":"pair_tmp","k":"variable","len":1,"c":true},{"a":9546,"n":"note_lengths","k":"table","len":32,"c":true},{"a":9578,"n":"sfx_sid_offset","k":"table","len":3,"c":true},{"a":9581,"n":"instr_offset","k":"table","len":3,"c":true},{"a":9584,"n":"state_offset","k":"table","len":3,"c":true},{"a":9587,"n":"freq_lo","k":"table","len":81,"c":true},{"a":9668,"n":"freq_hi","k":"table","len":60,"c":true},{"a":9728,"n":"note_freq_hi_tail","k":"table","len":21,"c":true},{"a":9749,"n":"sound_tick_unused","k":"routine","len":22,"c":true},{"a":9771,"n":"music_start_tune","k":"routine","len":91,"c":true},{"a":9793,"n":"b_2641","k":"branch","len":1,"c":false},{"a":9845,"n":"b_2675","k":"branch","len":1,"c":false},{"a":9861,"n":"b_2685","k":"branch","len":1,"c":false},{"a":9862,"n":"a_2686","k":"routine","len":10,"c":true},{"a":9872,"n":"sound_reset","k":"routine","len":53,"c":true},{"a":9874,"n":"b_2692","k":"branch","len":1,"c":false},{"a":9925,"n":"pulse0_restart","k":"routine","len":6,"c":true},{"a":9931,"n":"pulse0_reload","k":"routine","len":17,"c":true},{"a":9948,"n":"pulse1_restart","k":"routine","len":6,"c":true},{"a":9954,"n":"pulse1_reload","k":"routine","len":17,"c":true},{"a":9971,"n":"pulse2_restart","k":"routine","len":6,"c":true},{"a":9977,"n":"pulse2_reload","k":"routine","len":17,"c":true},{"a":9994,"n":"filter_restart","k":"routine","len":12,"c":true},{"a":10006,"n":"filter_reload","k":"routine","len":25,"c":true},{"a":10031,"n":"sound_effect_start","k":"routine","len":38,"c":true},{"a":10066,"n":"b_2752","k":"branch","len":1,"c":false},{"a":10069,"n":"a_2755","k":"routine","len":80,"c":true},{"a":10129,"n":"b_2791","k":"branch","len":1,"c":false},{"a":10149,"n":"freq0_restart","k":"routine","len":10,"c":true},{"a":10159,"n":"freq0_reload","k":"routine","len":25,"c":true},{"a":10184,"n":"b_27C8","k":"routine","len":17,"c":true},{"a":10196,"n":"b_27D4","k":"branch","len":1,"c":false},{"a":10201,"n":"freq1_restart","k":"routine","len":10,"c":true},{"a":10211,"n":"freq1_reload","k":"routine","len":38,"c":true},{"a":10235,"n":"r_27FB","k":"branch","len":1,"c":false},{"a":10236,"n":"b_27FC","k":"branch","len":1,"c":false},{"a":10244,"n":"b_2804","k":"branch","len":1,"c":false},{"a":10249,"n":"freq2_restart","k":"routine","len":10,"c":true},{"a":10259,"n":"freq2_reload","k":"routine","len":25,"c":true},{"a":10284,"n":"v0_cmd_c6_transpose_call","k":"routine","len":7,"c":true},{"a":10291,"n":"skip_bit_2833","k":"variable","len":1,"c":true},{"a":10292,"n":"v0_cmd_c2_call","k":"routine","len":30,"c":true},{"a":10322,"n":"v0_cmd_de_set_workspace_word","k":"routine","len":20,"c":true},{"a":10342,"n":"v0_cmd_d2_load_instrument","k":"routine","len":16,"c":true},{"a":10357,"n":"b_2875","k":"branch","len":1,"c":false},{"a":10358,"n":"a_2876","k":"routine","len":1,"c":true},{"a":10359,"n":"a_2877","k":"routine","len":12,"c":true},{"a":10371,"n":"v0_cmd_cc_repeat","k":"routine","len":26,"c":true},{"a":10397,"n":"v0_cmd_f0_load_pitch_program","k":"routine","len":14,"c":true},{"a":10410,"n":"b_28AA","k":"branch","len":1,"c":false},{"a":10411,"n":"a_28AB","k":"routine","len":1,"c":true},{"a":10412,"n":"a_28AC","k":"routine","len":10,"c":true},{"a":10422,"n":"v0_cmd_c4_jump","k":"routine","len":13,"c":true},{"a":10435,"n":"v0_cmd_ca_set_instrument_byte","k":"routine","len":12,"c":true},{"a":10447,"n":"v0_cmd_ce_repeat_end","k":"routine","len":23,"c":true},{"a":10464,"n":"b_28E0","k":"branch","len":1,"c":false},{"a":10470,"n":"v0_cmd_c0_return","k":"routine","len":24,"c":true},{"a":10490,"n":"b_28FA","k":"branch","len":1,"c":false},{"a":10494,"n":"v0_cmd_d6_set_workspace_byte","k":"routine","len":12,"c":true},{"a":10506,"n":"v0_cmd_d4_load_envelope","k":"routine","len":22,"c":true},{"a":10517,"n":"b_2915","k":"branch","len":1,"c":false},{"a":10528,"n":"v1_cmd_c2_call","k":"routine","len":30,"c":true},{"a":10558,"n":"v1_cmd_dc_set_instrument_word","k":"routine","len":20,"c":true},{"a":10578,"n":"v1_cmd_de_set_workspace_word","k":"routine","len":20,"c":true},{"a":10598,"n":"v1_cmd_d2_load_instrument","k":"routine","len":16,"c":true},{"a":10613,"n":"b_2975","k":"branch","len":1,"c":false},{"a":10614,"n":"a_2976","k":"routine","len":1,"c":true},{"a":10615,"n":"a_2977","k":"routine","len":12,"c":true},{"a":10627,"n":"v1_cmd_cc_repeat","k":"routine","len":26,"c":true},{"a":10653,"n":"v1_cmd_f0_load_pitch_program","k":"routine","len":14,"c":true},{"a":10666,"n":"b_29AA","k":"branch","len":1,"c":false},{"a":10667,"n":"a_29AB","k":"routine","len":1,"c":true},{"a":10668,"n":"a_29AC","k":"routine","len":10,"c":true},{"a":10678,"n":"v1_cmd_c4_jump","k":"routine","len":13,"c":true},{"a":10691,"n":"v1_cmd_ca_set_instrument_byte","k":"routine","len":12,"c":true},{"a":10703,"n":"v1_cmd_ce_repeat_end","k":"routine","len":23,"c":true},{"a":10720,"n":"b_29E0","k":"branch","len":1,"c":false},{"a":10726,"n":"v1_cmd_c0_return","k":"routine","len":24,"c":true},{"a":10746,"n":"b_29FA","k":"branch","len":1,"c":false},{"a":10750,"n":"v1_cmd_d6_set_workspace_byte","k":"routine","len":12,"c":true},{"a":10762,"n":"v1_cmd_d4_load_envelope","k":"routine","len":22,"c":true},{"a":10773,"n":"b_2A15","k":"branch","len":1,"c":false},{"a":10784,"n":"v2_cmd_c6_transpose_call","k":"routine","len":7,"c":true},{"a":10791,"n":"skip_bit_2a27","k":"variable","len":1,"c":true},{"a":10792,"n":"v2_cmd_c2_call","k":"routine","len":30,"c":true},{"a":10822,"n":"v2_cmd_d8_call_native","k":"routine","len":18,"c":true},{"a":10840,"n":"v2_cmd_dc_set_instrument_word","k":"routine","len":20,"c":true},{"a":10860,"n":"v2_cmd_de_set_workspace_word","k":"routine","len":20,"c":true},{"a":10880,"n":"v2_cmd_e2_load_filter_program","k":"routine","len":14,"c":true},{"a":10893,"n":"b_2A8D","k":"branch","len":1,"c":false},{"a":10894,"n":"a_2A8E","k":"routine","len":1,"c":true},{"a":10895,"n":"a_2A8F","k":"routine","len":10,"c":true},{"a":10905,"n":"v2_cmd_d2_load_instrument","k":"routine","len":16,"c":true},{"a":10920,"n":"b_2AA8","k":"branch","len":1,"c":false},{"a":10921,"n":"a_2AA9","k":"routine","len":1,"c":true},{"a":10922,"n":"a_2AAA","k":"routine","len":12,"c":true},{"a":10934,"n":"v2_cmd_cc_repeat","k":"routine","len":26,"c":true},{"a":10960,"n":"v2_cmd_f0_load_pitch_program","k":"routine","len":14,"c":true},{"a":10973,"n":"b_2ADD","k":"branch","len":1,"c":false},{"a":10974,"n":"a_2ADE","k":"routine","len":1,"c":true},{"a":10975,"n":"a_2ADF","k":"routine","len":10,"c":true},{"a":10985,"n":"v2_cmd_c4_jump","k":"routine","len":13,"c":true},{"a":10998,"n":"v2_filter_on_body","k":"routine","len":18,"c":true},{"a":11016,"n":"v2_cmd_e0_filter_on","k":"routine","len":4,"c":true},{"a":11020,"n":"v2_cmd_ca_set_instrument_byte","k":"routine","len":12,"c":true},{"a":11032,"n":"v2_cmd_ce_repeat_end","k":"routine","len":23,"c":true},{"a":11049,"n":"b_2B29","k":"branch","len":1,"c":false},{"a":11055,"n":"v2_cmd_c0_return","k":"routine","len":24,"c":true},{"a":11075,"n":"b_2B43","k":"branch","len":1,"c":false},{"a":11079,"n":"v2_cmd_d4_load_envelope","k":"routine","len":22,"c":true},{"a":11090,"n":"b_2B52","k":"branch","len":1,"c":false},{"a":11101,"n":"filter_tick","k":"routine","len":161,"c":true},{"a":11128,"n":"r_2B78","k":"branch","len":1,"c":false},{"a":11129,"n":"j_2B79","k":"branch","len":1,"c":false},{"a":11130,"n":"b_2B7A","k":"branch","len":1,"c":false},{"a":11150,"n":"b_2B8E","k":"branch","len":1,"c":false},{"a":11170,"n":"b_2BA2","k":"branch","len":1,"c":false},{"a":11190,"n":"b_2BB6","k":"branch","len":1,"c":false},{"a":11198,"n":"b_2BBE","k":"branch","len":1,"c":false},{"a":11207,"n":"j_2BC7","k":"branch","len":1,"c":false},{"a":11208,"n":"b_2BC8","k":"branch","len":1,"c":false},{"a":11214,"n":"j_2BCE","k":"branch","len":1,"c":false},{"a":11241,"n":"b_2BE9","k":"branch","len":1,"c":false},{"a":11256,"n":"b_2BF8","k":"branch","len":1,"c":false},{"a":11262,"n":"filter_start","k":"routine","len":23,"c":true},{"a":11264,"n":"b_2C00","k":"branch","len":1,"c":false},{"a":11285,"n":"seq0_tick","k":"routine","len":38,"c":true},{"a":11294,"n":"r_2C1E","k":"branch","len":1,"c":false},{"a":11295,"n":"b_2C1F","k":"branch","len":1,"c":false},{"a":11299,"n":"j_2C23","k":"branch","len":1,"c":false},{"a":11301,"n":"j_2C25","k":"branch","len":1,"c":false},{"a":11308,"n":"j_2C2C","k":"branch","len":1,"c":false},{"a":11323,"n":"a_2C3B","k":"routine","len":5,"c":true},{"a":11325,"n":"b_2C3D","k":"branch","len":1,"c":false},{"a":11328,"n":"b_2C40","k":"routine","len":300,"c":true},{"a":11336,"n":"b_2C48","k":"branch","len":1,"c":false},{"a":11360,"n":"b_2C60","k":"branch","len":1,"c":false},{"a":11479,"n":"b_2CD7","k":"branch","len":1,"c":false},{"a":11577,"n":"b_2D39","k":"branch","len":1,"c":false},{"a":11584,"n":"b_2D40","k":"branch","len":1,"c":false},{"a":11587,"n":"b_2D43","k":"branch","len":1,"c":false},{"a":11599,"n":"j_2D4F","k":"branch","len":1,"c":false},{"a":11613,"n":"b_2D5D","k":"branch","len":1,"c":false},{"a":11625,"n":"b_2D69","k":"branch","len":1,"c":false},{"a":11628,"n":"seq1_tick","k":"routine","len":38,"c":true},{"a":11637,"n":"r_2D75","k":"branch","len":1,"c":false},{"a":11638,"n":"b_2D76","k":"branch","len":1,"c":false},{"a":11642,"n":"j_2D7A","k":"branch","len":1,"c":false},{"a":11644,"n":"j_2D7C","k":"branch","len":1,"c":false},{"a":11651,"n":"j_2D83","k":"branch","len":1,"c":false},{"a":11666,"n":"a_2D92","k":"routine","len":5,"c":true},{"a":11668,"n":"b_2D94","k":"branch","len":1,"c":false},{"a":11671,"n":"b_2D97","k":"routine","len":302,"c":true},{"a":11679,"n":"b_2D9F","k":"branch","len":1,"c":false},{"a":11705,"n":"b_2DB9","k":"branch","len":1,"c":false},{"a":11824,"n":"b_2E30","k":"branch","len":1,"c":false},{"a":11922,"n":"b_2E92","k":"branch","len":1,"c":false},{"a":11929,"n":"b_2E99","k":"branch","len":1,"c":false},{"a":11932,"n":"b_2E9C","k":"branch","len":1,"c":false},{"a":11944,"n":"j_2EA8","k":"branch","len":1,"c":false},{"a":11958,"n":"b_2EB6","k":"branch","len":1,"c":false},{"a":11970,"n":"b_2EC2","k":"branch","len":1,"c":false},{"a":11973,"n":"seq2_tick","k":"routine","len":38,"c":true},{"a":11982,"n":"r_2ECE","k":"branch","len":1,"c":false},{"a":11983,"n":"b_2ECF","k":"branch","len":1,"c":false},{"a":11987,"n":"j_2ED3","k":"branch","len":1,"c":false},{"a":11989,"n":"j_2ED5","k":"branch","len":1,"c":false},{"a":11996,"n":"j_2EDC","k":"branch","len":1,"c":false},{"a":12011,"n":"a_2EEB","k":"routine","len":5,"c":true},{"a":12013,"n":"b_2EED","k":"branch","len":1,"c":false},{"a":12016,"n":"b_2EF0","k":"routine","len":306,"c":true},{"a":12024,"n":"b_2EF8","k":"branch","len":1,"c":false},{"a":12034,"n":"b_2F02","k":"branch","len":1,"c":false},{"a":12054,"n":"b_2F16","k":"branch","len":1,"c":false},{"a":12173,"n":"b_2F8D","k":"branch","len":1,"c":false},{"a":12271,"n":"b_2FEF","k":"branch","len":1,"c":false},{"a":12278,"n":"b_2FF6","k":"branch","len":1,"c":false},{"a":12281,"n":"b_2FF9","k":"branch","len":1,"c":false},{"a":12293,"n":"j_3005","k":"branch","len":1,"c":false},{"a":12307,"n":"b_3013","k":"branch","len":1,"c":false},{"a":12319,"n":"b_301F","k":"branch","len":1,"c":false},{"a":12321,"n":"r_3021","k":"branch","len":1,"c":false},{"a":12322,"n":"fx0_tick","k":"routine","len":71,"c":true},{"a":12356,"n":"b_3044","k":"branch","len":1,"c":false},{"a":12374,"n":"b_3056","k":"branch","len":1,"c":false},{"a":12380,"n":"j_305C","k":"branch","len":1,"c":false},{"a":12390,"n":"b_3066","k":"branch","len":1,"c":false},{"a":12393,"n":"a_3069","k":"routine","len":247,"c":true},{"a":12406,"n":"b_3076","k":"branch","len":1,"c":false},{"a":12409,"n":"b_3079","k":"branch","len":1,"c":false},{"a":12425,"n":"b_3089","k":"branch","len":1,"c":false},{"a":12451,"n":"b_30A3","k":"branch","len":1,"c":false},{"a":12472,"n":"b_30B8","k":"branch","len":1,"c":false},{"a":12487,"n":"b_30C7","k":"branch","len":1,"c":false},{"a":12493,"n":"j_30CD","k":"branch","len":1,"c":false},{"a":12503,"n":"b_30D7","k":"branch","len":1,"c":false},{"a":12528,"n":"r_30F0","k":"branch","len":1,"c":false},{"a":12529,"n":"j_30F1","k":"branch","len":1,"c":false},{"a":12530,"n":"b_30F2","k":"branch","len":1,"c":false},{"a":12550,"n":"b_3106","k":"branch","len":1,"c":false},{"a":12570,"n":"b_311A","k":"branch","len":1,"c":false},{"a":12590,"n":"b_312E","k":"branch","len":1,"c":false},{"a":12598,"n":"b_3136","k":"branch","len":1,"c":false},{"a":12607,"n":"j_313F","k":"branch","len":1,"c":false},{"a":12608,"n":"b_3140","k":"branch","len":1,"c":false},{"a":12618,"n":"r_314A","k":"branch","len":1,"c":false},{"a":12619,"n":"b_314B","k":"branch","len":1,"c":false},{"a":12634,"n":"b_315A","k":"branch","len":1,"c":false},{"a":12640,"n":"fx1_tick","k":"routine","len":206,"c":true},{"a":12674,"n":"b_3182","k":"branch","len":1,"c":false},{"a":12692,"n":"b_3194","k":"branch","len":1,"c":false},{"a":12703,"n":"b_319F","k":"branch","len":1,"c":false},{"a":12719,"n":"b_31AF","k":"branch","len":1,"c":false},{"a":12722,"n":"b_31B2","k":"branch","len":1,"c":false},{"a":12738,"n":"b_31C2","k":"branch","len":1,"c":false},{"a":12764,"n":"b_31DC","k":"branch","len":1,"c":false},{"a":12785,"n":"b_31F1","k":"branch","len":1,"c":false},{"a":12800,"n":"b_3200","k":"branch","len":1,"c":false},{"a":12806,"n":"j_3206","k":"branch","len":1,"c":false},{"a":12816,"n":"b_3210","k":"branch","len":1,"c":false},{"a":12845,"n":"r_322D","k":"branch","len":1,"c":false},{"a":12846,"n":"b_322E","k":"routine","len":164,"c":true},{"a":12865,"n":"b_3241","k":"branch","len":1,"c":false},{"a":12899,"n":"j_3263","k":"branch","len":1,"c":false},{"a":12900,"n":"b_3264","k":"branch","len":1,"c":false},{"a":12920,"n":"b_3278","k":"branch","len":1,"c":false},{"a":12940,"n":"b_328C","k":"branch","len":1,"c":false},{"a":12960,"n":"b_32A0","k":"branch","len":1,"c":false},{"a":12968,"n":"b_32A8","k":"branch","len":1,"c":false},{"a":12977,"n":"j_32B1","k":"branch","len":1,"c":false},{"a":12978,"n":"b_32B2","k":"branch","len":1,"c":false},{"a":12988,"n":"r_32BC","k":"branch","len":1,"c":false},{"a":12989,"n":"b_32BD","k":"branch","len":1,"c":false},{"a":13004,"n":"b_32CC","k":"branch","len":1,"c":false},{"a":13010,"n":"fx2_tick","k":"routine","len":325,"c":true},{"a":13044,"n":"b_32F4","k":"branch","len":1,"c":false},{"a":13062,"n":"b_3306","k":"branch","len":1,"c":false},{"a":13073,"n":"b_3311","k":"branch","len":1,"c":false},{"a":13089,"n":"b_3321","k":"branch","len":1,"c":false},{"a":13092,"n":"b_3324","k":"branch","len":1,"c":false},{"a":13114,"n":"b_333A","k":"branch","len":1,"c":false},{"a":13140,"n":"b_3354","k":"branch","len":1,"c":false},{"a":13161,"n":"b_3369","k":"branch","len":1,"c":false},{"a":13176,"n":"b_3378","k":"branch","len":1,"c":false},{"a":13182,"n":"j_337E","k":"branch","len":1,"c":false},{"a":13192,"n":"b_3388","k":"branch","len":1,"c":false},{"a":13223,"n":"r_33A7","k":"branch","len":1,"c":false},{"a":13224,"n":"j_33A8","k":"branch","len":1,"c":false},{"a":13225,"n":"b_33A9","k":"branch","len":1,"c":false},{"a":13245,"n":"b_33BD","k":"branch","len":1,"c":false},{"a":13265,"n":"b_33D1","k":"branch","len":1,"c":false},{"a":13285,"n":"b_33E5","k":"branch","len":1,"c":false},{"a":13293,"n":"b_33ED","k":"branch","len":1,"c":false},{"a":13302,"n":"j_33F6","k":"branch","len":1,"c":false},{"a":13303,"n":"b_33F7","k":"branch","len":1,"c":false},{"a":13314,"n":"b_3402","k":"branch","len":1,"c":false},{"a":13329,"n":"b_3411","k":"branch","len":1,"c":false},{"a":13335,"n":"sound_busy","k":"routine","len":19,"c":true},{"a":13354,"n":"tune_table","k":"variable","len":1,"c":true},{"a":13355,"n":"f_342B","k":"table","len":5,"c":true},{"a":13360,"n":"tune0_tempo","k":"variable","len":1,"c":true},{"a":13361,"n":"tune1","k":"table","len":6,"c":true},{"a":13367,"n":"tune1_tempo","k":"variable","len":1,"c":true},{"a":13368,"n":"tune2","k":"table","len":6,"c":true},{"a":13374,"n":"tune2_tempo","k":"variable","len":1,"c":true},{"a":13375,"n":"tune3_unused","k":"table","len":7,"c":true},{"a":13382,"n":"tune4","k":"table","len":6,"c":true},{"a":13388,"n":"tune4_tempo","k":"variable","len":1,"c":true},{"a":13389,"n":"tune5","k":"table","len":6,"c":true},{"a":13395,"n":"tune5_tempo","k":"variable","len":1,"c":true},{"a":13396,"n":"tune6","k":"table","len":6,"c":true},{"a":13402,"n":"tune6_tempo","k":"variable","len":1,"c":true},{"a":13403,"n":"tune7","k":"table","len":6,"c":true},{"a":13409,"n":"tune7_tempo","k":"variable","len":1,"c":true},{"a":13410,"n":"tune8","k":"table","len":6,"c":true},{"a":13416,"n":"tune8_tempo","k":"variable","len":1,"c":true},{"a":13417,"n":"instrument_3469","k":"table","len":29,"c":true},{"a":13446,"n":"instrument_3486","k":"table","len":29,"c":true},{"a":13475,"n":"tune8_voice0","k":"table","len":71,"c":true},{"a":13546,"n":"instrument_34ea","k":"table","len":29,"c":true},{"a":13575,"n":"arpeggio_3507","k":"table","len":4,"c":true},{"a":13579,"n":"arpeggio_350b","k":"table","len":4,"c":true},{"a":13583,"n":"arpeggio_350f","k":"table","len":4,"c":true},{"a":13587,"n":"arpeggio_3513","k":"table","len":4,"c":true},{"a":13591,"n":"instrument_3517","k":"table","len":29,"c":true},{"a":13620,"n":"tune8_voice1","k":"table","len":299,"c":true},{"a":13919,"n":"filter_program_365f","k":"table","len":16,"c":true},{"a":13935,"n":"instrument_366f","k":"table","len":29,"c":true},{"a":13964,"n":"filter_program_368c","k":"table","len":16,"c":true},{"a":13980,"n":"instrument_369c","k":"table","len":29,"c":true},{"a":14009,"n":"pitch_program_36b9","k":"table","len":14,"c":true},{"a":14023,"n":"phrase_36c7","k":"variable","len":2,"c":true},{"a":14025,"n":"phrase_36c9","k":"table","len":27,"c":true},{"a":14052,"n":"phrase_36e4","k":"table","len":103,"c":true},{"a":14155,"n":"title_filter_bit_on","k":"routine","len":6,"c":true},{"a":14161,"n":"title_filter_bits_off","k":"routine","len":12,"c":true},{"a":14173,"n":"tune8_voice2","k":"table","len":121,"c":true},{"a":14294,"n":"instrument_37d6","k":"table","len":29,"c":true},{"a":14323,"n":"phrase_37f3","k":"table","len":15,"c":true},{"a":14338,"n":"phrase_3802","k":"table","len":13,"c":true},{"a":14351,"n":"phrase_380f","k":"table","len":74,"c":true},{"a":14425,"n":"tune5_voice0","k":"table","len":6,"c":true},{"a":14431,"n":"phrase_385f","k":"table","len":14,"c":true},{"a":14445,"n":"instrument_386d","k":"table","len":29,"c":true},{"a":14474,"n":"tune5_voice1","k":"table","len":6,"c":true},{"a":14480,"n":"phrase_3890","k":"table","len":19,"c":true},{"a":14499,"n":"instrument_38a3","k":"table","len":29,"c":true},{"a":14528,"n":"phrase_38c0","k":"table","len":12,"c":true},{"a":14540,"n":"phrase_38cc","k":"table","len":17,"c":true},{"a":14557,"n":"tune5_voice2","k":"table","len":6,"c":true},{"a":14563,"n":"phrase_38e3","k":"table","len":28,"c":true},{"a":14591,"n":"envelope_38ff","k":"table","len":5,"c":true},{"a":14596,"n":"tune6_voice0","k":"table","len":18,"c":true},{"a":14614,"n":"tune6_voice1","k":"table","len":20,"c":true},{"a":14634,"n":"envelope_392a","k":"table","len":5,"c":true},{"a":14639,"n":"tune6_voice2","k":"table","len":24,"c":true},{"a":14663,"n":"pitch_program_3947","k":"table","len":14,"c":true},{"a":14677,"n":"envelope_3955","k":"table","len":5,"c":true},{"a":14682,"n":"tune4_voice0","k":"table","len":5,"c":true},{"a":14687,"n":"phrase_395f","k":"table","len":27,"c":true},{"a":14714,"n":"tune4_voice1","k":"table","len":8,"c":true},{"a":14722,"n":"envelope_3982","k":"table","len":5,"c":true},{"a":14727,"n":"tune4_voice2","k":"table","len":12,"c":true},{"a":14739,"n":"instrument_3993","k":"table","len":29,"c":true},{"a":14768,"n":"tune0_voice0","k":"table","len":35,"c":true},{"a":14803,"n":"tune0_voice1","k":"table","len":35,"c":true},{"a":14838,"n":"filter_program_39f6","k":"table","len":16,"c":true},{"a":14854,"n":"instrument_3a06","k":"table","len":29,"c":true},{"a":14883,"n":"tune0_voice2","k":"table","len":35,"c":true},{"a":14918,"n":"tune1_voice2","k":"table","len":32,"c":true},{"a":14950,"n":"tune1_voice1","k":"variable","len":2,"c":true},{"a":14952,"n":"tune1_voice0","k":"table","len":21,"c":true},{"a":14973,"n":"phrase_3a7d","k":"table","len":31,"c":true},{"a":15004,"n":"tune2_voice0","k":"table","len":37,"c":true},{"a":15041,"n":"tune2_voice1","k":"table","len":29,"c":true},{"a":15070,"n":"tune2_voice2","k":"table","len":36,"c":true},{"a":15106,"n":"envelope_3b02","k":"table","len":5,"c":true},{"a":15111,"n":"tune7_voice0","k":"table","len":42,"c":true},{"a":15153,"n":"tune7_voice1","k":"table","len":60,"c":true},{"a":15213,"n":"tune7_voice2","k":"table","len":30,"c":true},{"a":15243,"n":"stale_driver_copy_3b8b","k":"table","len":885,"c":true},{"a":16128,"n":"seq0_command_vectors","k":"table","len":12,"c":true},{"a":16140,"n":"p_3F0C","k":"table","len":38,"c":true},{"a":16178,"n":"seq1_command_vectors","k":"table","len":12,"c":true},{"a":16190,"n":"p_3F3E","k":"table","len":38,"c":true},{"a":16228,"n":"seq2_command_vectors","k":"table","len":14,"c":true},{"a":16242,"n":"p_3F72","k":"table","len":36,"c":true},{"a":16278,"n":"stale_driver_copy_3f96","k":"table","len":105,"c":true},{"a":16383,"n":"sample_filter_bits","k":"variable","len":1,"c":true},{"a":16384,"n":"title_bitmap_rows_0_2","k":"table","len":960,"c":true},{"a":17344,"n":"title_bitmap_rows_3_5","k":"table","len":960,"c":true},{"a":18304,"n":"title_bitmap_rows_6_8","k":"table","len":41,"c":true},{"a":18345,"n":"title_bitmap_47a9","k":"table","len":919,"c":true},{"a":19264,"n":"title_bitmap_rows_9_11","k":"table","len":960,"c":true},{"a":20224,"n":"title_bitmap_rows_12_14","k":"table","len":960,"c":true},{"a":21184,"n":"title_bitmap_rows_15_17","k":"table","len":960,"c":true},{"a":22144,"n":"title_bitmap_rows_18_20","k":"table","len":960,"c":true},{"a":23104,"n":"title_bitmap_rows_21_23","k":"table","len":960,"c":true},{"a":24064,"n":"title_bitmap_row_24","k":"table","len":320,"c":true},{"a":24384,"n":"protection_area","k":"variable","len":2,"c":true},{"a":24386,"n":"protection_serial_check","k":"routine","len":2,"c":true},{"a":24388,"n":"undoc_nop_5f44","k":"variable","len":2,"c":true},{"a":24390,"n":"protection_start_timer","k":"routine","len":8,"c":true},{"a":24398,"n":"undoc_nop_5f4e","k":"table","len":3,"c":true},{"a":24401,"n":"protection_decrypt_and_send","k":"routine","len":6,"c":true},{"a":24407,"n":"b_5F57","k":"routine","len":56,"c":true},{"a":24412,"n":"b_5F5C","k":"branch","len":1,"c":false},{"a":24436,"n":"b_5F74","k":"branch","len":1,"c":false},{"a":24441,"n":"b_5F79","k":"branch","len":1,"c":false},{"a":24456,"n":"b_5F88","k":"branch","len":1,"c":false},{"a":24463,"n":"stale_matrix_copy_5f8f","k":"table","len":113,"c":true},{"a":24576,"n":"title_colour_matrix","k":"table","len":1000,"c":true},{"a":25576,"n":"title_matrix_spare","k":"table","len":16,"c":true},{"a":25592,"n":"title_sprite_pointers","k":"table","len":8,"c":true},{"a":25600,"n":"title_colour_ram_rows_0_6","k":"table","len":256,"c":true},{"a":25856,"n":"title_colour_ram_rows_6_12","k":"table","len":256,"c":true},{"a":26112,"n":"title_colour_ram_rows_12_19","k":"table","len":256,"c":true},{"a":26368,"n":"title_colour_ram_rows_19_24","k":"table","len":256,"c":true},{"a":26624,"n":"intro_sprites_puff","k":"table","len":128,"c":true},{"a":26752,"n":"intro_sprites_vaus_turning","k":"table","len":1024,"c":true},{"a":27776,"n":"intro_sprite_b2","k":"table","len":256,"c":true},{"a":28032,"n":"intro_sprites_craft_near","k":"table","len":1024,"c":true},{"a":29056,"n":"intro_sprites_craft_far","k":"table","len":512,"c":true},{"a":29568,"n":"intro_sprites_misc","k":"table","len":512,"c":true},{"a":30080,"n":"unknown_colour_pairs_7580","k":"table","len":640,"c":true},{"a":30720,"n":"panel_template","k":"table","len":325,"c":true},{"a":31045,"n":"unused_fill_7945","k":"table","len":587,"c":true},{"a":31632,"n":"doh_screen","k":"table","len":624,"c":true},{"a":32256,"n":"stale_charset_7e00","k":"table","len":511,"c":true},{"a":32767,"n":"f_7FFF","k":"variable","len":1,"c":true},{"a":32768,"n":"round_01_bricks","k":"table","len":160,"c":true},{"a":32928,"n":"round_02_bricks","k":"table","len":9,"c":true},{"a":32937,"n":"round_02_byte_9","k":"table","len":151,"c":true},{"a":33088,"n":"round_03_bricks","k":"table","len":160,"c":true},{"a":33248,"n":"round_04_bricks","k":"table","len":160,"c":true},{"a":33408,"n":"round_05_bricks","k":"table","len":160,"c":true},{"a":33568,"n":"round_06_bricks","k":"table","len":160,"c":true},{"a":33728,"n":"round_07_bricks","k":"table","len":160,"c":true},{"a":33888,"n":"round_08_bricks","k":"table","len":160,"c":true},{"a":34048,"n":"round_09_bricks","k":"table","len":160,"c":true},{"a":34208,"n":"round_10_bricks","k":"table","len":9,"c":true},{"a":34217,"n":"round_10_byte_9","k":"table","len":151,"c":true},{"a":34368,"n":"round_11_bricks","k":"table","len":160,"c":true},{"a":34528,"n":"round_12_bricks","k":"table","len":160,"c":true},{"a":34688,"n":"round_13_bricks","k":"table","len":160,"c":true},{"a":34848,"n":"round_14_bricks","k":"table","len":160,"c":true},{"a":35008,"n":"round_15_bricks","k":"table","len":160,"c":true},{"a":35168,"n":"round_16_bricks","k":"table","len":160,"c":true},{"a":35328,"n":"round_17_bricks","k":"table","len":160,"c":true},{"a":35488,"n":"round_18_bricks","k":"table","len":128,"c":true},{"a":35616,"n":"round_18_row_12","k":"table","len":32,"c":true},{"a":35648,"n":"round_19_bricks","k":"table","len":160,"c":true},{"a":35808,"n":"round_20_bricks","k":"table","len":160,"c":true},{"a":35968,"n":"round_21_bricks","k":"table","len":160,"c":true},{"a":36128,"n":"round_22_bricks","k":"table","len":160,"c":true},{"a":36288,"n":"round_23_bricks","k":"table","len":160,"c":true},{"a":36448,"n":"round_24_bricks","k":"table","len":160,"c":true},{"a":36608,"n":"round_25_bricks","k":"table","len":160,"c":true},{"a":36768,"n":"round_26_bricks","k":"table","len":160,"c":true},{"a":36928,"n":"round_27_bricks","k":"table","len":160,"c":true},{"a":37088,"n":"round_28_bricks","k":"table","len":160,"c":true},{"a":37248,"n":"round_29_bricks","k":"table","len":160,"c":true},{"a":37408,"n":"round_30_bricks","k":"table","len":160,"c":true},{"a":37568,"n":"round_31_bricks","k":"table","len":160,"c":true},{"a":37728,"n":"round_32_bricks","k":"table","len":160,"c":true},{"a":37888,"n":"game_entry","k":"routine","len":4,"c":true},{"a":37892,"n":"entry_nop_imm","k":"variable","len":2,"c":true},{"a":37894,"n":"entry_jmp","k":"routine","len":3,"c":true},{"a":37897,"n":"mux_order","k":"table","len":11,"c":true},{"a":37908,"n":"obj_order_m1","k":"variable","len":1,"c":true},{"a":37909,"n":"obj_order","k":"table","len":3,"c":true},{"a":37912,"n":"d418_decoy","k":"table","len":9,"c":true},{"a":37921,"n":"mux_y","k":"table","len":12,"c":true},{"a":37933,"n":"obj_y","k":"variable","len":1,"c":true},{"a":37934,"n":"vaus_right_y","k":"variable","len":1,"c":true},{"a":37935,"n":"laser_y","k":"variable","len":1,"c":true},{"a":37936,"n":"laser2_y","k":"variable","len":1,"c":true},{"a":37937,"n":"ball_y","k":"table","len":3,"c":true},{"a":37940,"n":"capsule_y","k":"variable","len":1,"c":true},{"a":37941,"n":"enemy_y","k":"variable","len":1,"c":true},{"a":37942,"n":"enemy2_y","k":"variable","len":1,"c":true},{"a":37943,"n":"enemy3_y","k":"variable","len":1,"c":true},{"a":37944,"n":"obj11_y","k":"variable","len":1,"c":true},{"a":37945,"n":"mux_x","k":"variable","len":1,"c":true},{"a":37946,"n":"mux_x_1","k":"table","len":11,"c":true},{"a":37957,"n":"obj_x","k":"variable","len":1,"c":true},{"a":37958,"n":"vaus_right_x","k":"variable","len":1,"c":true},{"a":37959,"n":"laser_x","k":"variable","len":1,"c":true},{"a":37960,"n":"laser2_x","k":"variable","len":1,"c":true},{"a":37961,"n":"ball_x","k":"table","len":3,"c":true},{"a":37964,"n":"capsule_x","k":"variable","len":1,"c":true},{"a":37965,"n":"enemy_x","k":"variable","len":1,"c":true},{"a":37966,"n":"enemy2_x","k":"variable","len":1,"c":true},{"a":37967,"n":"enemy3_x","k":"variable","len":1,"c":true},{"a":37968,"n":"obj11_x","k":"variable","len":1,"c":true},{"a":37969,"n":"unused_9451","k":"table","len":10,"c":true},{"a":37979,"n":"attract_rounds","k":"table","len":4,"c":true},{"a":37983,"n":"unused_945f","k":"table","len":94,"c":true},{"a":38077,"n":"stale_attract_copy","k":"table","len":67,"c":true},{"a":38144,"n":"attract_mode","k":"routine","len":127,"c":true},{"a":38183,"n":"b_9527","k":"branch","len":1,"c":false},{"a":38266,"n":"b_957A","k":"branch","len":1,"c":false},{"a":38271,"n":"game_loop","k":"routine","len":59,"c":true},{"a":38315,"n":"b_95AB","k":"branch","len":1,"c":false},{"a":38330,"n":"game_loop_wait","k":"routine","len":21,"c":true},{"a":38351,"n":"round_cleared","k":"routine","len":42,"c":true},{"a":38373,"n":"b_95E5","k":"branch","len":1,"c":false},{"a":38393,"n":"doh_loop","k":"routine","len":77,"c":true},{"a":38437,"n":"b_9625","k":"branch","len":1,"c":false},{"a":38440,"n":"b_9628","k":"branch","len":1,"c":false},{"a":38470,"n":"doh_defeated","k":"routine","len":127,"c":true},{"a":38475,"n":"b_964B","k":"branch","len":1,"c":false},{"a":38564,"n":"b_96A4","k":"branch","len":1,"c":false},{"a":38597,"n":"next_round","k":"routine","len":18,"c":true},{"a":38615,"n":"round_start","k":"routine","len":52,"c":true},{"a":38639,"n":"b_96EF","k":"branch","len":1,"c":false},{"a":38644,"n":"j_96F4","k":"branch","len":1,"c":false},{"a":38667,"n":"doh_dissolve","k":"routine","len":168,"c":true},{"a":38669,"n":"b_970D","k":"branch","len":1,"c":false},{"a":38732,"n":"j_974C","k":"branch","len":1,"c":false},{"a":38734,"n":"b_974E","k":"branch","len":1,"c":false},{"a":38742,"n":"b_9756","k":"branch","len":1,"c":false},{"a":38770,"n":"b_9772","k":"branch","len":1,"c":false},{"a":38782,"n":"b_977E","k":"branch","len":1,"c":false},{"a":38794,"n":"b_978A","k":"branch","len":1,"c":false},{"a":38813,"n":"b_979D","k":"branch","len":1,"c":false},{"a":38834,"n":"r_97B2","k":"branch","len":1,"c":false},{"a":38835,"n":"doh_flash","k":"routine","len":70,"c":true},{"a":38847,"n":"b_97BF","k":"branch","len":1,"c":false},{"a":38859,"n":"b_97CB","k":"branch","len":1,"c":false},{"a":38904,"n":"r_97F8","k":"branch","len":1,"c":false},{"a":38905,"n":"doh_flash_colours","k":"table","len":4,"c":true},{"a":38909,"n":"move_doh_shots","k":"routine","len":28,"c":true},{"a":38922,"n":"b_980A","k":"branch","len":1,"c":false},{"a":38930,"n":"b_9812","k":"branch","len":1,"c":false},{"a":38936,"n":"r_9818","k":"branch","len":1,"c":false},{"a":38937,"n":"doh_mouth","k":"routine","len":101,"c":true},{"a":38948,"n":"b_9824","k":"branch","len":1,"c":false},{"a":38957,"n":"j_982D","k":"branch","len":1,"c":false},{"a":38986,"n":"b_984A","k":"branch","len":1,"c":false},{"a":38990,"n":"b_984E","k":"branch","len":1,"c":false},{"a":39032,"n":"b_9878","k":"branch","len":1,"c":false},{"a":39038,"n":"doh_mouth_chars","k":"table","len":10,"c":true},{"a":39048,"n":"gate_now_open","k":"routine","len":11,"c":true},{"a":39059,"n":"gate_now_closed","k":"routine","len":9,"c":true},{"a":39068,"n":"gate_close_step","k":"routine","len":24,"c":true},{"a":39092,"n":"update_gate","k":"routine","len":69,"c":true},{"a":39128,"n":"j_98D8","k":"branch","len":1,"c":false},{"a":39137,"n":"b_98E1","k":"branch","len":1,"c":false},{"a":39161,"n":"drum_bar","k":"table","len":46,"c":true},{"a":39207,"n":"update_gate_rts","k":"routine","len":1,"c":true},{"a":39208,"n":"gate_copy_rows","k":"routine","len":29,"c":true},{"a":39237,"n":"start_drums","k":"routine","len":11,"c":true},{"a":39248,"n":"gate_rows","k":"table","len":8,"c":true},{"a":39256,"n":"gate_rows_right","k":"table","len":8,"c":true},{"a":39264,"n":"drums_title","k":"table","len":273,"c":true},{"a":39537,"n":"drums_idle","k":"table","len":5,"c":true},{"a":39542,"n":"reset_life_state","k":"routine","len":115,"c":true},{"a":39545,"n":"b_9A79","k":"branch","len":1,"c":false},{"a":39558,"n":"b_9A86","k":"branch","len":1,"c":false},{"a":39657,"n":"check_vaus_lost","k":"routine","len":15,"c":true},{"a":39664,"n":"b_9AF0","k":"branch","len":1,"c":false},{"a":39672,"n":"vaus_destroyed","k":"routine","len":137,"c":true},{"a":39733,"n":"b_9B35","k":"branch","len":1,"c":false},{"a":39751,"n":"j_9B47","k":"branch","len":1,"c":false},{"a":39769,"n":"r_9B59","k":"branch","len":1,"c":false},{"a":39770,"n":"b_9B5A","k":"branch","len":1,"c":false},{"a":39809,"n":"game_over","k":"routine","len":131,"c":true},{"a":39813,"n":"b_9B85","k":"branch","len":1,"c":false},{"a":39833,"n":"b_9B99","k":"branch","len":1,"c":false},{"a":39841,"n":"j_9BA1","k":"branch","len":1,"c":false},{"a":39854,"n":"b_9BAE","k":"branch","len":1,"c":false},{"a":39875,"n":"b_9BC3","k":"branch","len":1,"c":false},{"a":39885,"n":"b_9BCD","k":"branch","len":1,"c":false},{"a":39904,"n":"b_9BE0","k":"branch","len":1,"c":false},{"a":39929,"n":"b_9BF9","k":"branch","len":1,"c":false},{"a":39940,"n":"resume_player","k":"routine","len":76,"c":true},{"a":39986,"n":"b_9C32","k":"branch","len":1,"c":false},{"a":40016,"n":"vaus_explode_frames","k":"table","len":9,"c":true},{"a":40025,"n":"doh_setup","k":"routine","len":124,"c":true},{"a":40027,"n":"b_9C5B","k":"branch","len":1,"c":false},{"a":40090,"n":"j_9C9A","k":"branch","len":1,"c":false},{"a":40092,"n":"b_9C9C","k":"branch","len":1,"c":false},{"a":40143,"n":"b_9CCF","k":"branch","len":1,"c":false},{"a":40149,"n":"enemies_vs_enemies","k":"routine","len":55,"c":true},{"a":40151,"n":"b_9CD7","k":"branch","len":1,"c":false},{"a":40163,"n":"b_9CE3","k":"branch","len":1,"c":false},{"a":40188,"n":"b_9CFC","k":"branch","len":1,"c":false},{"a":40191,"n":"b_9CFF","k":"branch","len":1,"c":false},{"a":40194,"n":"b_9D02","k":"branch","len":1,"c":false},{"a":40198,"n":"b_9D06","k":"branch","len":1,"c":false},{"a":40204,"n":"enemy_bump_v","k":"routine","len":101,"c":true},{"a":40256,"n":"r_9D40","k":"branch","len":1,"c":false},{"a":40257,"n":"b_9D41","k":"branch","len":1,"c":false},{"a":40305,"n":"enemy_bump_h","k":"routine","len":101,"c":true},{"a":40357,"n":"r_9DA5","k":"branch","len":1,"c":false},{"a":40358,"n":"b_9DA6","k":"branch","len":1,"c":false},{"a":40406,"n":"game_over_text","k":"table","len":58,"c":true},{"a":40464,"n":"game_over_msg_index","k":"table","len":3,"c":true},{"a":40467,"n":"balls_vs_enemies","k":"routine","len":29,"c":true},{"a":40469,"n":"b_9E15","k":"branch","len":1,"c":false},{"a":40476,"n":"b_9E1C","k":"branch","len":1,"c":false},{"a":40489,"n":"b_9E29","k":"branch","len":1,"c":false},{"a":40492,"n":"b_9E2C","k":"branch","len":1,"c":false},{"a":40496,"n":"ball_enemy_v","k":"routine","len":102,"c":true},{"a":40549,"n":"r_9E65","k":"branch","len":1,"c":false},{"a":40550,"n":"b_9E66","k":"branch","len":1,"c":false},{"a":40597,"n":"r_9E95","k":"branch","len":1,"c":false},{"a":40598,"n":"ball_enemy_h","k":"routine","len":101,"c":true},{"a":40650,"n":"r_9ECA","k":"branch","len":1,"c":false},{"a":40651,"n":"b_9ECB","k":"branch","len":1,"c":false},{"a":40698,"n":"r_9EFA","k":"branch","len":1,"c":false},{"a":40699,"n":"enemy_destroyed","k":"routine","len":99,"c":true},{"a":40731,"n":"b_9F1B","k":"branch","len":1,"c":false},{"a":40789,"n":"r_9F55","k":"branch","len":1,"c":false},{"a":40790,"n":"b_9F56","k":"branch","len":1,"c":false},{"a":40798,"n":"update_enemies","k":"routine","len":212,"c":true},{"a":40811,"n":"b_9F6B","k":"branch","len":1,"c":false},{"a":40830,"n":"b_9F7E","k":"branch","len":1,"c":false},{"a":40837,"n":"b_9F85","k":"branch","len":1,"c":false},{"a":40870,"n":"b_9FA6","k":"branch","len":1,"c":false},{"a":40907,"n":"b_9FCB","k":"branch","len":1,"c":false},{"a":40917,"n":"b_9FD5","k":"branch","len":1,"c":false},{"a":40932,"n":"b_9FE4","k":"branch","len":1,"c":false},{"a":40935,"n":"b_9FE7","k":"branch","len":1,"c":false},{"a":40940,"n":"b_9FEC","k":"branch","len":1,"c":false},{"a":40997,"n":"b_A025","k":"branch","len":1,"c":false},{"a":41007,"n":"b_A02F","k":"branch","len":1,"c":false},{"a":41010,"n":"drum_push","k":"routine","len":31,"c":true},{"a":41027,"n":"b_A043","k":"branch","len":1,"c":false},{"a":41040,"n":"r_A050","k":"branch","len":1,"c":false},{"a":41041,"n":"enemy_steer","k":"routine","len":165,"c":true},{"a":41072,"n":"b_A070","k":"branch","len":1,"c":false},{"a":41078,"n":"b_A076","k":"branch","len":1,"c":false},{"a":41103,"n":"r_A08F","k":"branch","len":1,"c":false},{"a":41104,"n":"b_A090","k":"branch","len":1,"c":false},{"a":41141,"n":"b_A0B5","k":"branch","len":1,"c":false},{"a":41162,"n":"r_A0CA","k":"branch","len":1,"c":false},{"a":41163,"n":"b_A0CB","k":"branch","len":1,"c":false},{"a":41173,"n":"b_A0D5","k":"branch","len":1,"c":false},{"a":41185,"n":"b_A0E1","k":"branch","len":1,"c":false},{"a":41192,"n":"b_A0E8","k":"branch","len":1,"c":false},{"a":41206,"n":"enemy_try_down","k":"routine","len":140,"c":true},{"a":41224,"n":"r_A108","k":"branch","len":1,"c":false},{"a":41225,"n":"b_A109","k":"branch","len":1,"c":false},{"a":41237,"n":"b_A115","k":"branch","len":1,"c":false},{"a":41248,"n":"b_A120","k":"branch","len":1,"c":false},{"a":41254,"n":"b_A126","k":"branch","len":1,"c":false},{"a":41275,"n":"j_A13B","k":"branch","len":1,"c":false},{"a":41289,"n":"b_A149","k":"branch","len":1,"c":false},{"a":41308,"n":"b_A15C","k":"branch","len":1,"c":false},{"a":41327,"n":"b_A16F","k":"branch","len":1,"c":false},{"a":41346,"n":"enemy_steer_v","k":"routine","len":100,"c":true},{"a":41360,"n":"r_A190","k":"branch","len":1,"c":false},{"a":41361,"n":"b_A191","k":"branch","len":1,"c":false},{"a":41366,"n":"b_A196","k":"branch","len":1,"c":false},{"a":41379,"n":"b_A1A3","k":"branch","len":1,"c":false},{"a":41385,"n":"b_A1A9","k":"branch","len":1,"c":false},{"a":41410,"n":"b_A1C2","k":"branch","len":1,"c":false},{"a":41432,"n":"j_A1D8","k":"branch","len":1,"c":false},{"a":41446,"n":"drum_return","k":"routine","len":4,"c":true},{"a":41450,"n":"drum_reload","k":"routine","len":69,"c":true},{"a":41459,"n":"b_A1F3","k":"branch","len":1,"c":false},{"a":41479,"n":"b_A207","k":"branch","len":1,"c":false},{"a":41504,"n":"b_A220","k":"branch","len":1,"c":false},{"a":41516,"n":"b_A22C","k":"branch","len":1,"c":false},{"a":41519,"n":"enemy_probe","k":"routine","len":36,"c":true},{"a":41555,"n":"drum_handler_hi_base","k":"routine","len":129,"c":true},{"a":41683,"n":"r_A2D3","k":"branch","len":1,"c":false},{"a":41684,"n":"drum_handler_hi","k":"table","len":7,"c":true},{"a":41691,"n":"move_object","k":"routine","len":93,"c":true},{"a":41740,"n":"r_A30C","k":"branch","len":1,"c":false},{"a":41741,"n":"b_A30D","k":"branch","len":1,"c":false},{"a":41773,"n":"b_A32D","k":"branch","len":1,"c":false},{"a":41784,"n":"object_off","k":"routine","len":12,"c":true},{"a":41796,"n":"animate_object","k":"routine","len":50,"c":true},{"a":41812,"n":"j_A354","k":"branch","len":1,"c":false},{"a":41825,"n":"b_A361","k":"branch","len":1,"c":false},{"a":41829,"n":"b_A365","k":"branch","len":1,"c":false},{"a":41842,"n":"b_A372","k":"branch","len":1,"c":false},{"a":41846,"n":"anim_lists","k":"table","len":98,"c":true},{"a":41944,"n":"doh_shot_anim","k":"table","len":16,"c":true},{"a":41960,"n":"enemy_anim_start","k":"table","len":4,"c":true},{"a":41964,"n":"enemy_colour","k":"table","len":4,"c":true},{"a":41968,"n":"enemy_anim_speed","k":"table","len":4,"c":true},{"a":41972,"n":"vaus_appear","k":"routine","len":37,"c":true},{"a":41974,"n":"b_A3F6","k":"branch","len":1,"c":false},{"a":42008,"n":"r_A418","k":"branch","len":1,"c":false},{"a":42009,"n":"vaus_appear_frames","k":"table","len":6,"c":true},{"a":42015,"n":"break_exit","k":"routine","len":42,"c":true},{"a":42024,"n":"b_A428","k":"branch","len":1,"c":false},{"a":42033,"n":"b_A431","k":"branch","len":1,"c":false},{"a":42053,"n":"r_A445","k":"branch","len":1,"c":false},{"a":42054,"n":"b_A446","k":"branch","len":1,"c":false},{"a":42057,"n":"drum_call","k":"routine","len":5,"c":true},{"a":42062,"n":"drum_jump","k":"routine","len":213,"c":true},{"a":42074,"n":"b_A45A","k":"branch","len":1,"c":false},{"a":42080,"n":"b_A460","k":"branch","len":1,"c":false},{"a":42151,"n":"b_A4A7","k":"branch","len":1,"c":false},{"a":42180,"n":"b_A4C4","k":"branch","len":1,"c":false},{"a":42205,"n":"b_A4DD","k":"branch","len":1,"c":false},{"a":42234,"n":"r_A4FA","k":"branch","len":1,"c":false},{"a":42235,"n":"b_A4FB","k":"branch","len":1,"c":false},{"a":42264,"n":"j_A518","k":"branch","len":1,"c":false},{"a":42270,"n":"b_A51E","k":"branch","len":1,"c":false},{"a":42275,"n":"wipe_memory","k":"routine","len":2,"c":true},{"a":42277,"n":"wipe_memory_body","k":"table","len":21,"c":true},{"a":42298,"n":"wipe_memory_code","k":"table","len":27,"c":true},{"a":42325,"n":"drum_figures","k":"table","len":114,"c":true},{"a":42439,"n":"laser_on_shape","k":"routine","len":35,"c":true},{"a":42473,"n":"r_A5E9","k":"branch","len":1,"c":false},{"a":42474,"n":"laser_on_frames","k":"table","len":9,"c":true},{"a":42483,"n":"update_lasers","k":"routine","len":129,"c":true},{"a":42490,"n":"b_A5FA","k":"branch","len":1,"c":false},{"a":42522,"n":"b_A61A","k":"branch","len":1,"c":false},{"a":42524,"n":"b_A61C","k":"branch","len":1,"c":false},{"a":42562,"n":"b_A642","k":"branch","len":1,"c":false},{"a":42586,"n":"b_A65A","k":"branch","len":1,"c":false},{"a":42590,"n":"b_A65E","k":"branch","len":1,"c":false},{"a":42598,"n":"b_A666","k":"branch","len":1,"c":false},{"a":42612,"n":"laser_vs_enemies","k":"routine","len":60,"c":true},{"a":42614,"n":"b_A676","k":"branch","len":1,"c":false},{"a":42668,"n":"b_A6AC","k":"branch","len":1,"c":false},{"a":42672,"n":"laser_vs_bricks","k":"routine","len":13,"c":true},{"a":42685,"n":"laser_beam_brick","k":"routine","len":93,"c":true},{"a":42741,"n":"r_A6F5","k":"branch","len":1,"c":false},{"a":42742,"n":"b_A6F6","k":"branch","len":1,"c":false},{"a":42778,"n":"vaus_vs_enemies","k":"routine","len":86,"c":true},{"a":42780,"n":"b_A71C","k":"branch","len":1,"c":false},{"a":42857,"n":"b_A769","k":"branch","len":1,"c":false},{"a":42861,"n":"b_A76D","k":"branch","len":1,"c":false},{"a":42864,"n":"fire_laser","k":"routine","len":89,"c":true},{"a":42866,"n":"b_A772","k":"branch","len":1,"c":false},{"a":42912,"n":"b_A7A0","k":"branch","len":1,"c":false},{"a":42949,"n":"b_A7C5","k":"branch","len":1,"c":false},{"a":42952,"n":"r_A7C8","k":"branch","len":1,"c":false},{"a":42953,"n":"drum_repeat","k":"routine","len":19,"c":true},{"a":42972,"n":"capsule_letter","k":"routine","len":51,"c":true},{"a":42995,"n":"b_A7F3","k":"branch","len":1,"c":false},{"a":42998,"n":"b_A7F6","k":"branch","len":1,"c":false},{"a":43022,"n":"r_A80E","k":"branch","len":1,"c":false},{"a":43023,"n":"capsule_letter_now","k":"table","len":8,"c":true},{"a":43031,"n":"capsule_letters","k":"table","len":57,"c":true},{"a":43088,"n":"capsule_mask","k":"table","len":8,"c":true},{"a":43096,"n":"capsule_actions","k":"variable","len":1,"c":true},{"a":43097,"n":"capsule_actions_hi","k":"table","len":15,"c":true},{"a":43112,"n":"capsule_break","k":"routine","len":8,"c":true},{"a":43120,"n":"capsule_laser","k":"routine","len":18,"c":true},{"a":43138,"n":"capsule_player","k":"routine","len":42,"c":true},{"a":43177,"n":"b_A8A9","k":"branch","len":1,"c":false},{"a":43180,"n":"capsule_catch","k":"routine","len":8,"c":true},{"a":43188,"n":"debug_loop","k":"routine","len":6,"c":true},{"a":43194,"n":"capsule_slow","k":"routine","len":19,"c":true},{"a":43205,"n":"b_A8C5","k":"branch","len":1,"c":false},{"a":43213,"n":"capsule_disrupt","k":"routine","len":95,"c":true},{"a":43215,"n":"b_A8CF","k":"branch","len":1,"c":false},{"a":43223,"n":"b_A8D7","k":"branch","len":1,"c":false},{"a":43243,"n":"b_A8EB","k":"branch","len":1,"c":false},{"a":43308,"n":"disrupt_dx","k":"table","len":3,"c":true},{"a":43311,"n":"disrupt_angle","k":"table","len":3,"c":true},{"a":43314,"n":"drum_next","k":"routine","len":23,"c":true},{"a":43328,"n":"b_A940","k":"branch","len":1,"c":false},{"a":43336,"n":"r_A948","k":"branch","len":1,"c":false},{"a":43337,"n":"decrypt_ba0a","k":"routine","len":15,"c":true},{"a":43339,"n":"b_A94B","k":"branch","len":1,"c":false},{"a":43352,"n":"old_shine_reset","k":"routine","len":61,"c":true},{"a":43357,"n":"b_A95D","k":"branch","len":1,"c":false},{"a":43375,"n":"b_A96F","k":"branch","len":1,"c":false},{"a":43399,"n":"b_A987","k":"branch","len":1,"c":false},{"a":43409,"n":"b_A991","k":"branch","len":1,"c":false},{"a":43413,"n":"update_capsule","k":"routine","len":101,"c":true},{"a":43514,"n":"capsule_jsr","k":"routine","len":1,"c":true},{"a":43515,"n":"capsule_jsr_lo","k":"routine","len":1,"c":true},{"a":43516,"n":"capsule_jsr_hi","k":"routine","len":17,"c":true},{"a":43517,"n":"r_A9FD","k":"branch","len":1,"c":false},{"a":43518,"n":"b_A9FE","k":"branch","len":1,"c":false},{"a":43533,"n":"capsule_clear","k":"routine","len":10,"c":true},{"a":43543,"n":"cancel_powers","k":"routine","len":45,"c":true},{"a":43553,"n":"b_AA21","k":"branch","len":1,"c":false},{"a":43572,"n":"b_AA34","k":"branch","len":1,"c":false},{"a":43587,"n":"r_AA43","k":"branch","len":1,"c":false},{"a":43588,"n":"capsule_enlarge","k":"routine","len":45,"c":true},{"a":43633,"n":"held_ball","k":"routine","len":47,"c":true},{"a":43652,"n":"b_AA84","k":"branch","len":1,"c":false},{"a":43660,"n":"b_AA8C","k":"branch","len":1,"c":false},{"a":43679,"n":"r_AA9F","k":"branch","len":1,"c":false},{"a":43680,"n":"drum_figures_2","k":"table","len":74,"c":true},{"a":43754,"n":"ball_release","k":"routine","len":38,"c":true},{"a":43792,"n":"drums_ending","k":"table","len":69,"c":true},{"a":43861,"n":"silver_shine","k":"routine","len":94,"c":true},{"a":43875,"n":"b_AB63","k":"branch","len":1,"c":false},{"a":43885,"n":"b_AB6D","k":"branch","len":1,"c":false},{"a":43928,"n":"b_AB98","k":"branch","len":1,"c":false},{"a":43931,"n":"r_AB9B","k":"branch","len":1,"c":false},{"a":43932,"n":"b_AB9C","k":"branch","len":1,"c":false},{"a":43948,"n":"b_ABAC","k":"branch","len":1,"c":false},{"a":43951,"n":"r_ABAF","k":"branch","len":1,"c":false},{"a":43952,"n":"b_ABB0","k":"branch","len":1,"c":false},{"a":43955,"n":"bat_collision","k":"routine","len":291,"c":true},{"a":43962,"n":"b_ABBA","k":"branch","len":1,"c":false},{"a":44050,"n":"b_AC12","k":"branch","len":1,"c":false},{"a":44071,"n":"b_AC27","k":"branch","len":1,"c":false},{"a":44074,"n":"b_AC2A","k":"branch","len":1,"c":false},{"a":44077,"n":"b_AC2D","k":"branch","len":1,"c":false},{"a":44090,"n":"b_AC3A","k":"branch","len":1,"c":false},{"a":44100,"n":"j_AC44","k":"branch","len":1,"c":false},{"a":44113,"n":"b_AC51","k":"branch","len":1,"c":false},{"a":44195,"n":"b_ACA3","k":"branch","len":1,"c":false},{"a":44231,"n":"j_ACC7","k":"branch","len":1,"c":false},{"a":44239,"n":"b_ACCF","k":"branch","len":1,"c":false},{"a":44245,"n":"r_ACD5","k":"branch","len":1,"c":false},{"a":44246,"n":"drum_sample_86","k":"routine","len":31,"c":true},{"a":44256,"n":"b_ACE0","k":"branch","len":1,"c":false},{"a":44258,"n":"b_ACE2","k":"branch","len":1,"c":false},{"a":44262,"n":"b_ACE6","k":"branch","len":1,"c":false},{"a":44277,"n":"drum86_store_hi","k":"routine","len":86,"c":true},{"a":44290,"n":"j_AD02","k":"branch","len":1,"c":false},{"a":44303,"n":"b_AD0F","k":"branch","len":1,"c":false},{"a":44324,"n":"b_AD24","k":"branch","len":1,"c":false},{"a":44337,"n":"b_AD31","k":"branch","len":1,"c":false},{"a":44347,"n":"j_AD3B","k":"branch","len":1,"c":false},{"a":44360,"n":"b_AD48","k":"branch","len":1,"c":false},{"a":44363,"n":"vaus_resize","k":"routine","len":58,"c":true},{"a":44387,"n":"b_AD63","k":"branch","len":1,"c":false},{"a":44392,"n":"r_AD68","k":"branch","len":1,"c":false},{"a":44393,"n":"b_AD69","k":"branch","len":1,"c":false},{"a":44415,"n":"b_AD7F","k":"branch","len":1,"c":false},{"a":44421,"n":"laser_off_shape","k":"routine","len":37,"c":true},{"a":44457,"n":"r_ADA9","k":"branch","len":1,"c":false},{"a":44458,"n":"laser_off_frames","k":"table","len":9,"c":true},{"a":44467,"n":"move_balls","k":"routine","len":78,"c":true},{"a":44492,"n":"b_ADCC","k":"branch","len":1,"c":false},{"a":44495,"n":"b_ADCF","k":"branch","len":1,"c":false},{"a":44497,"n":"b_ADD1","k":"branch","len":1,"c":false},{"a":44508,"n":"b_ADDC","k":"branch","len":1,"c":false},{"a":44541,"n":"r_ADFD","k":"branch","len":1,"c":false},{"a":44542,"n":"b_ADFE","k":"branch","len":1,"c":false},{"a":44545,"n":"ball_vs_bricks","k":"routine","len":170,"c":true},{"a":44610,"n":"b_AE42","k":"branch","len":1,"c":false},{"a":44635,"n":"b_AE5B","k":"branch","len":1,"c":false},{"a":44657,"n":"b_AE71","k":"branch","len":1,"c":false},{"a":44714,"n":"r_AEAA","k":"branch","len":1,"c":false},{"a":44715,"n":"ball_hit_left","k":"routine","len":34,"c":true},{"a":44739,"n":"b_AEC3","k":"branch","len":1,"c":false},{"a":44749,"n":"ball_hit_right","k":"routine","len":34,"c":true},{"a":44773,"n":"b_AEE5","k":"branch","len":1,"c":false},{"a":44783,"n":"drum_sample_83","k":"routine","len":31,"c":true},{"a":44793,"n":"b_AEF9","k":"branch","len":1,"c":false},{"a":44795,"n":"b_AEFB","k":"branch","len":1,"c":false},{"a":44798,"n":"b_AEFE","k":"branch","len":1,"c":false},{"a":44814,"n":"drum83_store_hi","k":"routine","len":13,"c":true},{"a":44827,"n":"ball_hit_below","k":"routine","len":34,"c":true},{"a":44851,"n":"b_AF33","k":"branch","len":1,"c":false},{"a":44861,"n":"ball_hit_above","k":"routine","len":34,"c":true},{"a":44885,"n":"b_AF55","k":"branch","len":1,"c":false},{"a":44895,"n":"speed_up","k":"routine","len":12,"c":true},{"a":44906,"n":"r_AF6A","k":"branch","len":1,"c":false},{"a":44907,"n":"bounce_reangle","k":"routine","len":57,"c":true},{"a":44930,"n":"b_AF82","k":"branch","len":1,"c":false},{"a":44953,"n":"b_AF99","k":"branch","len":1,"c":false},{"a":44964,"n":"cell_above","k":"routine","len":27,"c":true},{"a":44991,"n":"cell_below","k":"routine","len":27,"c":true},{"a":45018,"n":"cell_left","k":"routine","len":27,"c":true},{"a":45045,"n":"cell_right","k":"routine","len":27,"c":true},{"a":45072,"n":"gold_brick_hit","k":"routine","len":99,"c":true},{"a":45087,"n":"b_B01F","k":"branch","len":1,"c":false},{"a":45165,"n":"b_B06D","k":"branch","len":1,"c":false},{"a":45167,"n":"b_B06F","k":"branch","len":1,"c":false},{"a":45171,"n":"silver_brick_hit","k":"routine","len":10,"c":true},{"a":45181,"n":"drum_lo_base","k":"routine","len":129,"c":true},{"a":45186,"n":"b_B082","k":"branch","len":1,"c":false},{"a":45274,"n":"b_B0DA","k":"branch","len":1,"c":false},{"a":45277,"n":"b_B0DD","k":"branch","len":1,"c":false},{"a":45281,"n":"b_B0E1","k":"branch","len":1,"c":false},{"a":45307,"n":"b_B0FB","k":"branch","len":1,"c":false},{"a":45310,"n":"drum_lo_81_87","k":"table","len":7,"c":true},{"a":45317,"n":"brick_hit_gold_jump","k":"routine","len":3,"c":true},{"a":45320,"n":"brick_hit","k":"routine","len":392,"c":true},{"a":45385,"n":"r_B149","k":"branch","len":1,"c":false},{"a":45386,"n":"b_B14A","k":"branch","len":1,"c":false},{"a":45421,"n":"j_B16D","k":"branch","len":1,"c":false},{"a":45438,"n":"b_B17E","k":"branch","len":1,"c":false},{"a":45441,"n":"b_B181","k":"branch","len":1,"c":false},{"a":45474,"n":"b_B1A2","k":"branch","len":1,"c":false},{"a":45521,"n":"b_B1D1","k":"branch","len":1,"c":false},{"a":45541,"n":"b_B1E5","k":"branch","len":1,"c":false},{"a":45554,"n":"b_B1F2","k":"branch","len":1,"c":false},{"a":45577,"n":"j_B209","k":"branch","len":1,"c":false},{"a":45584,"n":"b_B210","k":"branch","len":1,"c":false},{"a":45595,"n":"b_B21B","k":"branch","len":1,"c":false},{"a":45612,"n":"b_B22C","k":"branch","len":1,"c":false},{"a":45657,"n":"b_B259","k":"branch","len":1,"c":false},{"a":45706,"n":"b_B28A","k":"branch","len":1,"c":false},{"a":45712,"n":"drum_85","k":"routine","len":31,"c":true},{"a":45722,"n":"b_B29A","k":"branch","len":1,"c":false},{"a":45724,"n":"b_B29C","k":"branch","len":1,"c":false},{"a":45727,"n":"b_B29F","k":"branch","len":1,"c":false},{"a":45743,"n":"drum_85_store_hi","k":"routine","len":13,"c":true},{"a":45756,"n":"capsule_colours","k":"table","len":8,"c":true},{"a":45764,"n":"brick_points","k":"table","len":8,"c":true},{"a":45772,"n":"background_char_at","k":"routine","len":26,"c":true},{"a":45795,"n":"b_B2E3","k":"branch","len":1,"c":false},{"a":45798,"n":"choose_capsule","k":"routine","len":78,"c":true},{"a":45824,"n":"b_B300","k":"branch","len":1,"c":false},{"a":45834,"n":"b_B30A","k":"branch","len":1,"c":false},{"a":45844,"n":"b_B314","k":"branch","len":1,"c":false},{"a":45857,"n":"b_B321","k":"branch","len":1,"c":false},{"a":45873,"n":"b_B331","k":"branch","len":1,"c":false},{"a":45876,"n":"move_ball","k":"routine","len":198,"c":true},{"a":45929,"n":"j_B369","k":"branch","len":1,"c":false},{"a":45941,"n":"b_B375","k":"branch","len":1,"c":false},{"a":45946,"n":"r_B37A","k":"branch","len":1,"c":false},{"a":45947,"n":"b_B37B","k":"branch","len":1,"c":false},{"a":45983,"n":"b_B39F","k":"branch","len":1,"c":false},{"a":45996,"n":"b_B3AC","k":"branch","len":1,"c":false},{"a":46010,"n":"b_B3BA","k":"branch","len":1,"c":false},{"a":46036,"n":"b_B3D4","k":"branch","len":1,"c":false},{"a":46041,"n":"b_B3D9","k":"branch","len":1,"c":false},{"a":46044,"n":"b_B3DC","k":"branch","len":1,"c":false},{"a":46073,"n":"r_B3F9","k":"branch","len":1,"c":false},{"a":46074,"n":"aim_at_vaus","k":"routine","len":120,"c":true},{"a":46101,"n":"b_B415","k":"branch","len":1,"c":false},{"a":46109,"n":"j_B41D","k":"branch","len":1,"c":false},{"a":46136,"n":"b_B438","k":"branch","len":1,"c":false},{"a":46144,"n":"j_B440","k":"branch","len":1,"c":false},{"a":46173,"n":"b_B45D","k":"branch","len":1,"c":false},{"a":46194,"n":"wait_tick","k":"routine","len":9,"c":true},{"a":46203,"n":"drum_command_hi","k":"table","len":5,"c":true},{"a":46208,"n":"show_title_picture","k":"routine","len":68,"c":true},{"a":46235,"n":"b_B49B","k":"branch","len":1,"c":false},{"a":46264,"n":"b_B4B8","k":"branch","len":1,"c":false},{"a":46276,"n":"title_screen","k":"routine","len":28,"c":true},{"a":46304,"n":"title_wait_loop","k":"routine","len":32,"c":true},{"a":46330,"n":"b_B4FA","k":"branch","len":1,"c":false},{"a":46336,"n":"drum_84","k":"routine","len":31,"c":true},{"a":46346,"n":"b_B50A","k":"branch","len":1,"c":false},{"a":46348,"n":"b_B50C","k":"branch","len":1,"c":false},{"a":46351,"n":"b_B50F","k":"branch","len":1,"c":false},{"a":46367,"n":"drum_84_store_hi","k":"routine","len":13,"c":true},{"a":46380,"n":"drum_script_init","k":"routine","len":16,"c":true},{"a":46396,"n":"text_screen_mode","k":"routine","len":27,"c":true},{"a":46413,"n":"b_B54D","k":"branch","len":1,"c":false},{"a":46423,"n":"input_menu","k":"routine","len":69,"c":true},{"a":46451,"n":"b_B573","k":"branch","len":1,"c":false},{"a":46458,"n":"b_B57A","k":"branch","len":1,"c":false},{"a":46472,"n":"b_B588","k":"branch","len":1,"c":false},{"a":46480,"n":"b_B590","k":"branch","len":1,"c":false},{"a":46492,"n":"menu_keys","k":"routine","len":33,"c":true},{"a":46494,"n":"b_B59E","k":"branch","len":1,"c":false},{"a":46508,"n":"b_B5AC","k":"branch","len":1,"c":false},{"a":46524,"n":"r_B5BC","k":"branch","len":1,"c":false},{"a":46525,"n":"menu_key_codes","k":"table","len":7,"c":true},{"a":46532,"n":"menu_key_pressed","k":"routine","len":46,"c":true},{"a":46550,"n":"b_B5D6","k":"branch","len":1,"c":false},{"a":46567,"n":"b_B5E7","k":"branch","len":1,"c":false},{"a":46578,"n":"menu_marker_lo","k":"table","len":4,"c":true},{"a":46582,"n":"menu_marker_hi","k":"table","len":4,"c":true},{"a":46586,"n":"draw_menu_choices","k":"routine","len":59,"c":true},{"a":46588,"n":"b_B5FC","k":"branch","len":1,"c":false},{"a":46645,"n":"print_menu_text","k":"routine","len":61,"c":true},{"a":46652,"n":"j_B63C","k":"branch","len":1,"c":false},{"a":46672,"n":"j_B650","k":"branch","len":1,"c":false},{"a":46688,"n":"b_B660","k":"branch","len":1,"c":false},{"a":46696,"n":"b_B668","k":"branch","len":1,"c":false},{"a":46705,"n":"r_B671","k":"branch","len":1,"c":false},{"a":46706,"n":"print_story_text","k":"routine","len":63,"c":true},{"a":46715,"n":"j_B67B","k":"branch","len":1,"c":false},{"a":46735,"n":"j_B68F","k":"branch","len":1,"c":false},{"a":46751,"n":"b_B69F","k":"branch","len":1,"c":false},{"a":46759,"n":"b_B6A7","k":"branch","len":1,"c":false},{"a":46768,"n":"r_B6B0","k":"branch","len":1,"c":false},{"a":46769,"n":"print_ending_text","k":"routine","len":63,"c":true},{"a":46778,"n":"j_B6BA","k":"branch","len":1,"c":false},{"a":46798,"n":"j_B6CE","k":"branch","len":1,"c":false},{"a":46814,"n":"b_B6DE","k":"branch","len":1,"c":false},{"a":46822,"n":"b_B6E6","k":"branch","len":1,"c":false},{"a":46831,"n":"r_B6EF","k":"branch","len":1,"c":false},{"a":46832,"n":"clear_text_screen","k":"routine","len":34,"c":true},{"a":46834,"n":"b_B6F2","k":"branch","len":1,"c":false},{"a":46866,"n":"menu_text","k":"table","len":236,"c":true},{"a":47102,"n":"story_text","k":"table","len":178,"c":true},{"a":47280,"n":"ending_text","k":"table","len":211,"c":true},{"a":47491,"n":"title_sprite_animate","k":"routine","len":22,"c":true},{"a":47512,"n":"r_B998","k":"branch","len":1,"c":false},{"a":47513,"n":"title_sprite_frames","k":"table","len":9,"c":true},{"a":47522,"n":"screen_off_after_tick","k":"routine","len":14,"c":true},{"a":47536,"n":"screen_on_after_tick","k":"routine","len":19,"c":true},{"a":47555,"n":"startup","k":"routine","len":53,"c":true},{"a":47598,"n":"b_B9EE","k":"branch","len":1,"c":false},{"a":47608,"n":"unused_protection_entry","k":"table","len":18,"c":true},{"a":47626,"n":"protection_check_plain","k":"table","len":91,"c":true},{"a":47717,"n":"protection_status","k":"table","len":6,"c":true},{"a":47723,"n":"old_build_irq_tail","k":"table","len":16,"c":true},{"a":47739,"n":"old_build_slot_colours","k":"table","len":30,"c":true},{"a":47769,"n":"old_build_slot_shapes","k":"table","len":30,"c":true},{"a":47799,"n":"old_build_irq_init","k":"table","len":36,"c":true},{"a":47835,"n":"old_build_nmi_a","k":"table","len":166,"c":true},{"a":48001,"n":"old_build_nmi_b","k":"table","len":88,"c":true},{"a":48089,"n":"old_build_mux_first","k":"table","len":100,"c":true},{"a":48189,"n":"old_build_mux_sort","k":"table","len":72,"c":true},{"a":48261,"n":"old_build_panel","k":"table","len":107,"c":true},{"a":48368,"n":"old_build_mux_irq","k":"table","len":171,"c":true},{"a":48539,"n":"old_build_read_input","k":"table","len":186,"c":true},{"a":48725,"n":"old_build_joystick","k":"table","len":82,"c":true},{"a":48807,"n":"old_build_paddle","k":"table","len":56,"c":true},{"a":48863,"n":"old_build_mouse","k":"table","len":143,"c":true},{"a":49006,"n":"old_build_irq_sound","k":"table","len":48,"c":true},{"a":49054,"n":"old_build_drum_play","k":"table","len":97,"c":true},{"a":49151,"n":"clear_screen_base","k":"variable","len":1,"c":true},{"a":50176,"n":"chars_unused","k":"table","len":1024,"c":true},{"a":51200,"n":"charset","k":"table","len":256,"c":true},{"a":51456,"n":"charset_digits","k":"table","len":256,"c":true},{"a":52224,"n":"charset_upper","k":"table","len":256,"c":true},{"a":52480,"n":"charset_160","k":"table","len":256,"c":true},{"a":52736,"n":"charset_192","k":"table","len":256,"c":true},{"a":52992,"n":"charset_224","k":"table","len":64,"c":true},{"a":53056,"n":"chars_exit","k":"variable","len":1,"c":true},{"a":53057,"n":"f_CF41","k":"table","len":22,"c":true},{"a":53079,"n":"a_CF57","k":"variable","len":1,"c":true},{"a":53080,"n":"chars_gate_left","k":"table","len":8,"c":true},{"a":53088,"n":"f_CF60","k":"table","len":8,"c":true},{"a":53096,"n":"chars_exit_open","k":"table","len":72,"c":true},{"a":53168,"n":"chars_wall_right","k":"table","len":56,"c":true},{"a":53224,"n":"chars_gate_right","k":"table","len":24,"c":true},{"a":53248,"n":"spr_vaus","k":"table","len":64,"c":true},{"a":53312,"n":"spr_vaus_1r","k":"table","len":64,"c":true},{"a":53376,"n":"spr_ball","k":"table","len":64,"c":true},{"a":53440,"n":"spr_vaus_alt","k":"table","len":64,"c":true},{"a":53504,"n":"spr_vaus_alt_1r","k":"table","len":64,"c":true},{"a":53568,"n":"spr_lines","k":"table","len":64,"c":true},{"a":53632,"n":"spr_scatter","k":"table","len":64,"c":true},{"a":53696,"n":"spr_scatter_2","k":"table","len":64,"c":true},{"a":53760,"n":"spr_scatter_3","k":"table","len":64,"c":true},{"a":53824,"n":"spr_scatter_4","k":"table","len":64,"c":true},{"a":53888,"n":"spr_cone","k":"table","len":64,"c":true},{"a":53952,"n":"spr_cone_2","k":"table","len":64,"c":true},{"a":54016,"n":"spr_cone_3","k":"table","len":64,"c":true},{"a":54080,"n":"spr_cone_4","k":"table","len":64,"c":true},{"a":54144,"n":"spr_cone_5","k":"table","len":64,"c":true},{"a":54208,"n":"spr_cone_6","k":"table","len":62,"c":true},{"a":54270,"n":"f_D3FE","k":"variable","len":1,"c":true},{"a":54271,"n":"f_D3FF","k":"variable","len":1,"c":true},{"a":54272,"n":"spr_cone_7","k":"table","len":64,"c":true},{"a":54336,"n":"spr_cone_8","k":"table","len":64,"c":true},{"a":54400,"n":"spr_pyramid","k":"table","len":64,"c":true},{"a":54464,"n":"spr_pyramid_2","k":"table","len":64,"c":true},{"a":54528,"n":"spr_pyramid_3","k":"table","len":64,"c":true},{"a":54592,"n":"spr_pyramid_4","k":"table","len":64,"c":true},{"a":54656,"n":"spr_pyramid_5","k":"table","len":64,"c":true},{"a":54720,"n":"spr_pyramid_6","k":"table","len":64,"c":true},{"a":54784,"n":"spr_pyramid_7","k":"table","len":64,"c":true},{"a":54848,"n":"spr_pyramid_8","k":"table","len":64,"c":true},{"a":54912,"n":"spr_pyramid_9","k":"table","len":64,"c":true},{"a":54976,"n":"spr_pyramid_10","k":"table","len":64,"c":true},{"a":55040,"n":"spr_pyramid_11","k":"table","len":64,"c":true},{"a":55104,"n":"spr_pyramid_12","k":"table","len":64,"c":true},{"a":55168,"n":"spr_pyramid_13","k":"table","len":64,"c":true},{"a":55232,"n":"spr_orb","k":"table","len":63,"c":true},{"a":55295,"n":"f_D7FF","k":"variable","len":1,"c":true},{"a":55296,"n":"f_D800","k":"table","len":28,"c":true},{"a":55324,"n":"f_D81C","k":"table","len":36,"c":true},{"a":55360,"n":"spr_orb_3","k":"table","len":4,"c":true},{"a":55364,"n":"f_D844","k":"table","len":60,"c":true},{"a":55424,"n":"spr_orb_4","k":"table","len":20,"c":true},{"a":55444,"n":"f_D894","k":"table","len":11,"c":true},{"a":55455,"n":"a_D89F","k":"table","len":31,"c":true},{"a":55486,"n":"f_D8BE","k":"variable","len":2,"c":true},{"a":55488,"n":"spr_orb_5","k":"table","len":19,"c":true},{"a":55507,"n":"f_D8D3","k":"table","len":28,"c":true},{"a":55535,"n":"a_D8EF","k":"table","len":10,"c":true},{"a":55545,"n":"f_D8F9","k":"variable","len":2,"c":true},{"a":55547,"n":"f_D8FB","k":"table","len":5,"c":true},{"a":55552,"n":"f_D900","k":"table","len":35,"c":true},{"a":55587,"n":"f_D923","k":"table","len":29,"c":true},{"a":55616,"n":"spr_orb_7","k":"table","len":11,"c":true},{"a":55627,"n":"f_D94B","k":"table","len":19,"c":true},{"a":55646,"n":"f_D95E","k":"table","len":21,"c":true},{"a":55667,"n":"f_D973","k":"table","len":13,"c":true},{"a":55680,"n":"spr_orb_8","k":"table","len":6,"c":true},{"a":55686,"n":"f_D986","k":"table","len":21,"c":true},{"a":55707,"n":"f_D99B","k":"table","len":19,"c":true},{"a":55726,"n":"f_D9AE","k":"table","len":18,"c":true},{"a":55744,"n":"spr_orb_9","k":"table","len":3,"c":true},{"a":55747,"n":"f_D9C3","k":"table","len":19,"c":true},{"a":55766,"n":"f_D9D6","k":"table","len":21,"c":true},{"a":55787,"n":"f_D9EB","k":"table","len":8,"c":true},{"a":55795,"n":"f_D9F3","k":"table","len":13,"c":true},{"a":55808,"n":"f_DA00","k":"table","len":19,"c":true},{"a":55827,"n":"f_DA13","k":"table","len":40,"c":true},{"a":55867,"n":"f_DA3B","k":"table","len":5,"c":true},{"a":55872,"n":"spr_orb_11","k":"table","len":23,"c":true},{"a":55895,"n":"a_DA57","k":"table","len":41,"c":true},{"a":55936,"n":"spr_orb_12","k":"table","len":64,"c":true},{"a":56000,"n":"spr_orb_13","k":"table","len":6,"c":true},{"a":56006,"n":"f_DAC6","k":"table","len":10,"c":true},{"a":56016,"n":"f_DAD0","k":"table","len":29,"c":true},{"a":56045,"n":"f_DAED","k":"variable","len":1,"c":true},{"a":56046,"n":"f_DAEE","k":"table","len":10,"c":true},{"a":56056,"n":"f_DAF8","k":"table","len":8,"c":true},{"a":56064,"n":"f_DB00","k":"table","len":22,"c":true},{"a":56086,"n":"f_DB16","k":"table","len":10,"c":true},{"a":56096,"n":"f_DB20","k":"table","len":30,"c":true},{"a":56126,"n":"f_DB3E","k":"variable","len":2,"c":true},{"a":56128,"n":"spr_cluster","k":"table","len":64,"c":true},{"a":56192,"n":"spr_cluster_2","k":"table","len":11,"c":true},{"a":56203,"n":"a_DB8B","k":"table","len":40,"c":true},{"a":56243,"n":"a_DBB3","k":"table","len":13,"c":true},{"a":56256,"n":"spr_cluster_3","k":"table","len":27,"c":true},{"a":56283,"n":"a_DBDB","k":"table","len":37,"c":true},{"a":56320,"n":"spr_cluster_4","k":"table","len":64,"c":true},{"a":56384,"n":"spr_cluster_5","k":"table","len":64,"c":true},{"a":56448,"n":"spr_cluster_6","k":"table","len":64,"c":true},{"a":56512,"n":"spr_vaus_fade","k":"table","len":64,"c":true},{"a":56576,"n":"spr_vaus_fade_1r","k":"table","len":24,"c":true},{"a":56600,"n":"a_DD18","k":"table","len":40,"c":true},{"a":56640,"n":"spr_vaus_fade_2l","k":"table","len":64,"c":true},{"a":56704,"n":"spr_vaus_fade_2r","k":"table","len":64,"c":true},{"a":56768,"n":"spr_vaus_fade_3l","k":"table","len":29,"c":true},{"a":56797,"n":"s_DDDD","k":"table","len":35,"c":true},{"a":56832,"n":"spr_vaus_fade_3r","k":"table","len":64,"c":true},{"a":56896,"n":"spr_vaus_fade_4l","k":"table","len":64,"c":true},{"a":56960,"n":"spr_vaus_fade_4r","k":"table","len":64,"c":true},{"a":57024,"n":"spr_burst","k":"table","len":64,"c":true},{"a":57088,"n":"spr_burst_2","k":"table","len":64,"c":true},{"a":57152,"n":"spr_burst_3","k":"table","len":64,"c":true},{"a":57216,"n":"spr_burst_4","k":"table","len":64,"c":true},{"a":57280,"n":"spr_burst_5","k":"table","len":64,"c":true},{"a":57344,"n":"spr_burst_end","k":"table","len":64,"c":true},{"a":57408,"n":"spr_burst_7","k":"table","len":64,"c":true},{"a":57472,"n":"spr_burst_8","k":"table","len":64,"c":true},{"a":57536,"n":"spr_burst_9","k":"table","len":64,"c":true},{"a":57600,"n":"spr_vaus_breakup","k":"table","len":64,"c":true},{"a":57664,"n":"spr_vaus_breakup_1r","k":"table","len":64,"c":true},{"a":57728,"n":"spr_vaus_breakup_2l","k":"table","len":64,"c":true},{"a":57792,"n":"spr_vaus_breakup_2r","k":"table","len":64,"c":true},{"a":57856,"n":"spr_vaus_breakup_3l","k":"table","len":64,"c":true},{"a":57920,"n":"spr_vaus_breakup_3r","k":"table","len":64,"c":true},{"a":57984,"n":"spr_vaus_breakup_4l","k":"table","len":64,"c":true},{"a":58048,"n":"spr_vaus_breakup_4r","k":"table","len":64,"c":true},{"a":58112,"n":"spr_vaus_breakup_5l","k":"table","len":64,"c":true},{"a":58176,"n":"spr_vaus_breakup_5r","k":"table","len":64,"c":true},{"a":58240,"n":"spr_vaus_breakup_6l","k":"table","len":64,"c":true},{"a":58304,"n":"spr_vaus_breakup_6r","k":"table","len":64,"c":true},{"a":58368,"n":"spr_vaus_breakup_7l","k":"table","len":64,"c":true},{"a":58432,"n":"spr_vaus_breakup_7r","k":"table","len":64,"c":true},{"a":58496,"n":"spr_vaus_breakup_8l","k":"table","len":64,"c":true},{"a":58560,"n":"spr_vaus_breakup_8r","k":"table","len":64,"c":true},{"a":58624,"n":"spr_capsule","k":"variable","len":1,"c":true},{"a":58625,"n":"f_E501","k":"table","len":63,"c":true},{"a":58688,"n":"spr_capsule_letter","k":"variable","len":1,"c":true},{"a":58689,"n":"f_E541","k":"table","len":63,"c":true},{"a":58752,"n":"spr_frame_work","k":"table","len":64,"c":true},{"a":58816,"n":"spr_frame_work_r","k":"table","len":3,"c":true},{"a":58819,"n":"a_E5C3","k":"table","len":61,"c":true},{"a":58880,"n":"spr_frame_master","k":"table","len":64,"c":true},{"a":58944,"n":"spr_frame_master_r","k":"table","len":64,"c":true},{"a":59008,"n":"spr_cube","k":"table","len":64,"c":true},{"a":59072,"n":"spr_cube_2","k":"table","len":64,"c":true},{"a":59136,"n":"spr_cube_3","k":"table","len":64,"c":true},{"a":59200,"n":"spr_cube_4","k":"table","len":64,"c":true},{"a":59264,"n":"spr_cube_5","k":"table","len":64,"c":true},{"a":59328,"n":"spr_cube_6","k":"table","len":64,"c":true},{"a":59392,"n":"spr_cube_7","k":"table","len":64,"c":true},{"a":59456,"n":"spr_cube_8","k":"table","len":64,"c":true},{"a":59520,"n":"spr_cube_9","k":"table","len":64,"c":true},{"a":59584,"n":"spr_cube_10","k":"table","len":64,"c":true},{"a":59648,"n":"spr_cube_11","k":"table","len":64,"c":true},{"a":59712,"n":"spr_cube_12","k":"table","len":64,"c":true},{"a":59776,"n":"spr_cube_13","k":"table","len":64,"c":true},{"a":59840,"n":"spr_cube_14","k":"table","len":64,"c":true},{"a":59904,"n":"tiles_round33","k":"table","len":24,"c":true},{"a":59928,"n":"a_EA18","k":"table","len":64,"c":true},{"a":59992,"n":"tiles_round33_4b","k":"table","len":168,"c":true},{"a":60160,"n":"tiles_round33_96","k":"table","len":256,"c":true},{"a":60416,"n":"tiles_set_a","k":"table","len":256,"c":true},{"a":60672,"n":"tiles_set_a_96","k":"table","len":256,"c":true},{"a":60928,"n":"tiles_set_b","k":"table","len":256,"c":true},{"a":61184,"n":"tiles_set_b_96","k":"table","len":256,"c":true},{"a":61440,"n":"main_entry","k":"routine","len":158,"c":true},{"a":61551,"n":"b_F06F","k":"branch","len":1,"c":false},{"a":61598,"n":"vaus_shapes_restore","k":"routine","len":12,"c":true},{"a":61600,"n":"b_F0A0","k":"branch","len":1,"c":false},{"a":61610,"n":"vaus_shapes_clear","k":"routine","len":25,"c":true},{"a":61614,"n":"b_F0AE","k":"branch","len":1,"c":false},{"a":61622,"n":"b_F0B6","k":"branch","len":1,"c":false},{"a":61635,"n":"nmi_timer_init","k":"routine","len":34,"c":true},{"a":61669,"n":"unused_pattern_f0e5","k":"table","len":210,"c":true},{"a":61879,"n":"new_game_init","k":"routine","len":254,"c":true},{"a":61886,"n":"b_F1BE","k":"branch","len":1,"c":false},{"a":61918,"n":"b_F1DE","k":"branch","len":1,"c":false},{"a":61957,"n":"b_F205","k":"branch","len":1,"c":false},{"a":61965,"n":"b_F20D","k":"branch","len":1,"c":false},{"a":62133,"n":"draw_side_panel","k":"routine","len":144,"c":true},{"a":62157,"n":"j_F2CD","k":"branch","len":1,"c":false},{"a":62159,"n":"b_F2CF","k":"branch","len":1,"c":false},{"a":62210,"n":"b_F302","k":"branch","len":1,"c":false},{"a":62212,"n":"b_F304","k":"branch","len":1,"c":false},{"a":62230,"n":"b_F316","k":"branch","len":1,"c":false},{"a":62277,"n":"drum_82","k":"routine","len":31,"c":true},{"a":62287,"n":"b_F34F","k":"branch","len":1,"c":false},{"a":62289,"n":"b_F351","k":"branch","len":1,"c":false},{"a":62292,"n":"b_F354","k":"branch","len":1,"c":false},{"a":62308,"n":"drum_82_store_hi","k":"routine","len":13,"c":true},{"a":62321,"n":"rebuild_wall_from_buffer","k":"routine","len":24,"c":true},{"a":62345,"n":"number_to_two_digits","k":"routine","len":18,"c":true},{"a":62351,"n":"b_F38F","k":"branch","len":1,"c":false},{"a":62358,"n":"b_F396","k":"branch","len":1,"c":false},{"a":62363,"n":"draw_round_numbers","k":"routine","len":39,"c":true},{"a":62402,"n":"draw_round_wall","k":"routine","len":76,"c":true},{"a":62478,"n":"draw_wall","k":"routine","len":284,"c":true},{"a":62497,"n":"j_F421","k":"branch","len":1,"c":false},{"a":62511,"n":"b_F42F","k":"branch","len":1,"c":false},{"a":62540,"n":"b_F44C","k":"branch","len":1,"c":false},{"a":62596,"n":"b_F484","k":"branch","len":1,"c":false},{"a":62601,"n":"b_F489","k":"branch","len":1,"c":false},{"a":62628,"n":"b_F4A4","k":"branch","len":1,"c":false},{"a":62635,"n":"r_F4AB","k":"branch","len":1,"c":false},{"a":62636,"n":"b_F4AC","k":"branch","len":1,"c":false},{"a":62655,"n":"b_F4BF","k":"branch","len":1,"c":false},{"a":62698,"n":"b_F4EA","k":"branch","len":1,"c":false},{"a":62754,"n":"b_F522","k":"branch","len":1,"c":false},{"a":62762,"n":"silver_hits_by_round","k":"table","len":32,"c":true},{"a":62794,"n":"background_colour_by_round","k":"table","len":4,"c":true},{"a":62798,"n":"background_char_base_by_round","k":"table","len":4,"c":true},{"a":62802,"n":"draw_playfield_background","k":"routine","len":178,"c":true},{"a":62814,"n":"b_F55E","k":"branch","len":1,"c":false},{"a":62831,"n":"b_F56F","k":"branch","len":1,"c":false},{"a":62833,"n":"b_F571","k":"branch","len":1,"c":false},{"a":62848,"n":"b_F580","k":"branch","len":1,"c":false},{"a":62884,"n":"j_F5A4","k":"branch","len":1,"c":false},{"a":62911,"n":"b_F5BF","k":"branch","len":1,"c":false},{"a":62953,"n":"b_F5E9","k":"branch","len":1,"c":false},{"a":62980,"n":"drum_81","k":"routine","len":31,"c":true},{"a":62990,"n":"b_F60E","k":"branch","len":1,"c":false},{"a":62992,"n":"b_F610","k":"branch","len":1,"c":false},{"a":62995,"n":"b_F613","k":"branch","len":1,"c":false},{"a":63011,"n":"drum_81_store_hi","k":"routine","len":13,"c":true},{"a":63024,"n":"draw_walls","k":"routine","len":146,"c":true},{"a":63055,"n":"b_F64F","k":"branch","len":1,"c":false},{"a":63077,"n":"b_F665","k":"branch","len":1,"c":false},{"a":63133,"n":"b_F69D","k":"branch","len":1,"c":false},{"a":63153,"n":"b_F6B1","k":"branch","len":1,"c":false},{"a":63170,"n":"exit_gate_close","k":"routine","len":23,"c":true},{"a":63172,"n":"b_F6C4","k":"branch","len":1,"c":false},{"a":63193,"n":"drum_script_commands","k":"table","len":5,"c":true},{"a":63198,"n":"top_wall_row","k":"table","len":28,"c":true},{"a":63226,"n":"clear_variables","k":"routine","len":18,"c":true},{"a":63229,"n":"b_F6FD","k":"branch","len":1,"c":false},{"a":63237,"n":"b_F705","k":"branch","len":1,"c":false},{"a":63244,"n":"wait_tune_end","k":"routine","len":6,"c":true},{"a":63250,"n":"unused_colours_f712","k":"table","len":7,"c":true},{"a":63257,"n":"play_screen_colours","k":"table","len":7,"c":true},{"a":63264,"n":"irq_frame_bottom","k":"routine","len":62,"c":true},{"a":63298,"n":"b_F742","k":"branch","len":1,"c":false},{"a":63326,"n":"irq_frame_top","k":"routine","len":44,"c":true},{"a":63370,"n":"pad_f78a","k":"variable","len":1,"c":true},{"a":63371,"n":"screen_row_addresses","k":"variable","len":1,"c":true},{"a":63372,"n":"screen_row_addresses_hi","k":"table","len":49,"c":true},{"a":63421,"n":"unused_bit_masks_f7bd","k":"table","len":16,"c":true},{"a":63437,"n":"mux_copy_tables","k":"routine","len":24,"c":true},{"a":63439,"n":"b_F7CF","k":"branch","len":1,"c":false},{"a":63461,"n":"bit_masks_f7e5","k":"table","len":6,"c":true},{"a":63467,"n":"mux_count_active","k":"routine","len":18,"c":true},{"a":63469,"n":"b_F7ED","k":"branch","len":1,"c":false},{"a":63482,"n":"b_F7FA","k":"branch","len":1,"c":false},{"a":63485,"n":"spare_rts_f7fd","k":"variable","len":1,"c":true},{"a":63486,"n":"mux_init","k":"routine","len":27,"c":true},{"a":63488,"n":"b_F800","k":"branch","len":1,"c":false},{"a":63513,"n":"slot_colours","k":"variable","len":1,"c":true},{"a":63514,"n":"slot_colour_1","k":"variable","len":1,"c":true},{"a":63515,"n":"slot_colour_2","k":"variable","len":1,"c":true},{"a":63516,"n":"slot_colour_3","k":"variable","len":1,"c":true},{"a":63517,"n":"slot_colour_4","k":"variable","len":1,"c":true},{"a":63518,"n":"slot_colour_5","k":"variable","len":1,"c":true},{"a":63519,"n":"slot_colour_6","k":"variable","len":1,"c":true},{"a":63520,"n":"slot_colour_7","k":"variable","len":1,"c":true},{"a":63521,"n":"slot_colour_8","k":"variable","len":1,"c":true},{"a":63522,"n":"slot_colour_9","k":"variable","len":1,"c":true},{"a":63523,"n":"slot_colour_10","k":"variable","len":2,"c":true},{"a":63525,"n":"slot_shapes","k":"variable","len":1,"c":true},{"a":63526,"n":"slot_shape_1","k":"variable","len":1,"c":true},{"a":63527,"n":"slot_shape_2","k":"variable","len":1,"c":true},{"a":63528,"n":"slot_shape_3","k":"variable","len":1,"c":true},{"a":63529,"n":"slot_shape_4","k":"variable","len":1,"c":true},{"a":63530,"n":"slot_shape_5","k":"variable","len":1,"c":true},{"a":63531,"n":"slot_shape_6","k":"variable","len":1,"c":true},{"a":63532,"n":"slot_shape_7","k":"variable","len":1,"c":true},{"a":63533,"n":"slot_shape_8","k":"variable","len":2,"c":true},{"a":63535,"n":"slot_shape_10","k":"variable","len":2,"c":true},{"a":63537,"n":"irq_init","k":"routine","len":36,"c":true},{"a":63573,"n":"nmi_frame_a","k":"routine","len":52,"c":true},{"a":63584,"n":"j_F860","k":"branch","len":1,"c":false},{"a":63590,"n":"b_F866","k":"branch","len":1,"c":false},{"a":63625,"n":"sound_tick","k":"routine","len":31,"c":true},{"a":63634,"n":"b_F892","k":"branch","len":1,"c":false},{"a":63656,"n":"drum_command_lo","k":"table","len":5,"c":true},{"a":63661,"n":"nmi_frame_a_tick","k":"routine","len":86,"c":true},{"a":63688,"n":"b_F8C8","k":"branch","len":1,"c":false},{"a":63691,"n":"b_F8CB","k":"branch","len":1,"c":false},{"a":63695,"n":"b_F8CF","k":"branch","len":1,"c":false},{"a":63726,"n":"b_F8EE","k":"branch","len":1,"c":false},{"a":63744,"n":"b_F900","k":"branch","len":1,"c":false},{"a":63747,"n":"nmi_frame_end","k":"routine","len":85,"c":true},{"a":63755,"n":"j_F90B","k":"branch","len":1,"c":false},{"a":63783,"n":"b_F927","k":"branch","len":1,"c":false},{"a":63797,"n":"b_F935","k":"branch","len":1,"c":false},{"a":63832,"n":"nmi_phase","k":"variable","len":1,"c":true},{"a":63833,"n":"drum_85_delays","k":"table","len":6,"c":true},{"a":63839,"n":"mux_first_six","k":"routine","len":23,"c":true},{"a":63862,"n":"mux_first_ptr_page","k":"routine","len":70,"c":true},{"a":63908,"n":"b_F9A4","k":"branch","len":1,"c":false},{"a":63932,"n":"unused_checksum","k":"table","len":74,"c":true},{"a":64006,"n":"mux_sort","k":"routine","len":72,"c":true},{"a":64012,"n":"b_FA0C","k":"branch","len":1,"c":false},{"a":64034,"n":"b_FA22","k":"branch","len":1,"c":false},{"a":64047,"n":"b_FA2F","k":"branch","len":1,"c":false},{"a":64054,"n":"b_FA36","k":"branch","len":1,"c":false},{"a":64072,"n":"b_FA48","k":"branch","len":1,"c":false},{"a":64078,"n":"draw_lives","k":"routine","len":87,"c":true},{"a":64093,"n":"b_FA5D","k":"branch","len":1,"c":false},{"a":64096,"n":"b_FA60","k":"branch","len":1,"c":false},{"a":64113,"n":"b_FA71","k":"branch","len":1,"c":false},{"a":64116,"n":"j_FA74","k":"branch","len":1,"c":false},{"a":64136,"n":"b_FA88","k":"branch","len":1,"c":false},{"a":64139,"n":"b_FA8B","k":"branch","len":1,"c":false},{"a":64156,"n":"b_FA9C","k":"branch","len":1,"c":false},{"a":64159,"n":"j_FA9F","k":"branch","len":1,"c":false},{"a":64165,"n":"check_extra_life","k":"routine","len":89,"c":true},{"a":64176,"n":"b_FAB0","k":"branch","len":1,"c":false},{"a":64190,"n":"b_FABE","k":"branch","len":1,"c":false},{"a":64200,"n":"b_FAC8","k":"branch","len":1,"c":false},{"a":64252,"n":"b_FAFC","k":"branch","len":1,"c":false},{"a":64254,"n":"update_scores_display","k":"routine","len":191,"c":true},{"a":64271,"n":"b_FB0F","k":"branch","len":1,"c":false},{"a":64274,"n":"b_FB12","k":"branch","len":1,"c":false},{"a":64288,"n":"b_FB20","k":"branch","len":1,"c":false},{"a":64293,"n":"b_FB25","k":"branch","len":1,"c":false},{"a":64303,"n":"b_FB2F","k":"branch","len":1,"c":false},{"a":64307,"n":"b_FB33","k":"branch","len":1,"c":false},{"a":64339,"n":"b_FB53","k":"branch","len":1,"c":false},{"a":64371,"n":"b_FB73","k":"branch","len":1,"c":false},{"a":64430,"n":"r_FBAE","k":"branch","len":1,"c":false},{"a":64431,"n":"b_FBAF","k":"branch","len":1,"c":false},{"a":64445,"n":"add_score","k":"routine","len":49,"c":true},{"a":64452,"n":"b_FBC4","k":"branch","len":1,"c":false},{"a":64494,"n":"irq_mux","k":"routine","len":41,"c":true},{"a":64505,"n":"b_FBF9","k":"branch","len":1,"c":false},{"a":64535,"n":"mux_ptr_page","k":"routine","len":30,"c":true},{"a":64565,"n":"unused_fragment_fc35","k":"table","len":7,"c":true},{"a":64572,"n":"irq_mux_end","k":"routine","len":63,"c":true},{"a":64605,"n":"b_FC5D","k":"branch","len":1,"c":false},{"a":64620,"n":"b_FC6C","k":"branch","len":1,"c":false},{"a":64626,"n":"b_FC72","k":"branch","len":1,"c":false},{"a":64635,"n":"mux_sprite_offsets","k":"table","len":6,"c":true},{"a":64641,"n":"unused_bit_masks_fc81","k":"table","len":16,"c":true},{"a":64657,"n":"bit_masks_fc91","k":"table","len":8,"c":true},{"a":64665,"n":"read_input_move_vaus","k":"routine","len":6,"c":true},{"a":64671,"n":"read_input_device","k":"routine","len":12,"c":true},{"a":64683,"n":"input_reader_lo","k":"table","len":4,"c":true},{"a":64687,"n":"input_reader_hi","k":"table","len":4,"c":true},{"a":64691,"n":"read_paddle_entry","k":"routine","len":53,"c":true},{"a":64705,"n":"b_FCC1","k":"branch","len":1,"c":false},{"a":64724,"n":"b_FCD4","k":"branch","len":1,"c":false},{"a":64730,"n":"b_FCDA","k":"branch","len":1,"c":false},{"a":64738,"n":"b_FCE2","k":"branch","len":1,"c":false},{"a":64744,"n":"drum_84_delays","k":"table","len":6,"c":true},{"a":64750,"n":"place_vaus","k":"routine","len":9,"c":true},{"a":64759,"n":"place_vaus_stx_lo","k":"routine","len":126,"c":true},{"a":64771,"n":"b_FD03","k":"branch","len":1,"c":false},{"a":64784,"n":"b_FD10","k":"branch","len":1,"c":false},{"a":64802,"n":"b_FD22","k":"branch","len":1,"c":false},{"a":64814,"n":"b_FD2E","k":"branch","len":1,"c":false},{"a":64854,"n":"b_FD56","k":"branch","len":1,"c":false},{"a":64885,"n":"table_fd75","k":"table","len":6,"c":true},{"a":64891,"n":"read_keyboard","k":"routine","len":39,"c":true},{"a":64908,"n":"b_FD8C","k":"branch","len":1,"c":false},{"a":64923,"n":"b_FD9B","k":"branch","len":1,"c":false},{"a":64930,"n":"read_joystick","k":"routine","len":29,"c":true},{"a":64947,"n":"b_FDB3","k":"branch","len":1,"c":false},{"a":64949,"n":"b_FDB5","k":"branch","len":1,"c":false},{"a":64959,"n":"joystick_step","k":"routine","len":74,"c":true},{"a":64982,"n":"b_FDD6","k":"branch","len":1,"c":false},{"a":64989,"n":"b_FDDD","k":"branch","len":1,"c":false},{"a":65006,"n":"b_FDEE","k":"branch","len":1,"c":false},{"a":65018,"n":"b_FDFA","k":"branch","len":1,"c":false},{"a":65020,"n":"b_FDFC","k":"branch","len":1,"c":false},{"a":65030,"n":"b_FE06","k":"branch","len":1,"c":false},{"a":65033,"n":"read_paddle","k":"routine","len":40,"c":true},{"a":65053,"n":"b_FE1D","k":"branch","len":1,"c":false},{"a":65073,"n":"paddle_fire_bits","k":"variable","len":2,"c":true},{"a":65075,"n":"mouse_port_bits","k":"variable","len":2,"c":true},{"a":65077,"n":"drum_82_delays","k":"table","len":14,"c":true},{"a":65091,"n":"read_neos_mouse","k":"routine","len":134,"c":true},{"a":65104,"n":"b_FE50","k":"branch","len":1,"c":false},{"a":65222,"n":"b_FEC6","k":"branch","len":1,"c":false},{"a":65225,"n":"delay_y","k":"routine","len":5,"c":true},{"a":65230,"n":"drum_81_delays","k":"table","len":6,"c":true},{"a":65236,"n":"unused_fragment_fed4","k":"table","len":11,"c":true},{"a":65247,"n":"mouse_nibble","k":"variable","len":1,"c":true},{"a":65248,"n":"drum_play","k":"routine","len":9,"c":true},{"a":65257,"n":"drum_jsr_lo","k":"routine","len":1,"c":true},{"a":65258,"n":"drum_jsr_hi","k":"routine","len":10,"c":true},{"a":65268,"n":"drum_script_step","k":"routine","len":31,"c":true},{"a":65272,"n":"j_FEF8","k":"branch","len":1,"c":false},{"a":65280,"n":"b_FF00","k":"branch","len":1,"c":false},{"a":65299,"n":"command_jsr_lo","k":"routine","len":1,"c":true},{"a":65300,"n":"command_jsr_hi","k":"routine","len":38,"c":true},{"a":65304,"n":"b_FF18","k":"branch","len":1,"c":false},{"a":65337,"n":"r_FF39","k":"branch","len":1,"c":false},{"a":65338,"n":"unused_tail_ff3a","k":"table","len":36,"c":true},{"a":65374,"n":"unused_data_ff5e","k":"table","len":156,"c":true},{"a":65530,"n":"nmi_vector","k":"variable","len":2,"c":true},{"a":65532,"n":"reset_vector","k":"variable","len":2,"c":true},{"a":65534,"n":"irq_vector","k":"variable","len":2,"c":true}],"records":[{"a":0,"l":"cpu_port_dir","c":"6510 data-direction register. No instruction in the game writes it; the port's directions stay as the loader left them. The RAM byte under it is not used.","t":"byte","b":[0],"x":[43096]},{"a":1,"l":"cpu_port","c":"6510 processor port: $35 (BASIC and KERNAL ROMs out, I/O in) from the first instruction ($9402) and again in irq_setup ($F849); never changed in play, so $A000-$BFFF and $E000-$FFFF are RAM.","t":"byte","b":[15,255,211],"x":[37890,63561]},{"a":4,"l":"mux_next","c":"Sprite multiplexer: position in the Y-sorted object list ($9409) of the next object to get a hardware sprite. Set to the last visible object by $F7EB, counted down by the raster handlers at $F95F/$FBF9 as each object is placed, reset to 11 at the end of the frame ($F9A8, $FC40).","t":"byte","b":[65,0],"x":[63482,63721,63839,63877,63889,63914,64505,64550,64578]},{"a":6,"l":"sort_obj","c":"Sprite sort scratch ($FA06): the object number being moved up the Y-sorted list $9415 by the insertion sort.","t":"byte","b":[7],"x":[64029,64065]},{"a":7,"l":"sort_from","c":"Sprite sort scratch ($FA06): list position the object in sort_obj is taken from.","t":"byte","b":[34],"x":[64031,64052,64070]},{"a":8,"l":"mux_sprite","c":"Sprite multiplexer: hardware sprite slot (5 down to 0, i.e. sprites 7 to 2; $FC7B maps it to the $D000 register offset) the next object goes to; wraps to 5 ($F98D, $FC2E). Set to 5 by irq_setup ($F84B).","t":"byte","b":[34],"x":[63565,63849,63881,63887,63910,64522,64554,64560,64574]},{"a":9,"l":"mux_obj_y","c":"Sprite multiplexer: Y position of the object being placed, from the frame's copy $9421 ($F967, $FC01), written to the sprite's Y register.","t":"byte","b":[0,0],"x":[63847,63872,64513,64545]},{"a":11,"l":"sort_moves","c":"Sprite sort: count of objects moved this frame ($FA08 clears, $FA30 increments); nothing reads it.","t":"byte","b":[76],"x":[64008,64048]},{"a":12,"l":"sort_to","c":"Sprite sort scratch ($FA32): list position the moved object is inserted at.","t":"byte","b":[0],"x":[64050,64061]},{"a":13,"l":"scr_ptr","c":"General pointer, low byte (with scr_ptr_hi), 93 accesses: mostly a screen row in $C000-$C3FF, for the wall builder ($F40E), the brick-hit code ($B163, rows from the table $F78B), save_wall_of_player, the metal-brick shimmer ($AB7A) and the menu text ($B644); in the panel copy ($F2B9) and the Doh set-up ($9C86) the source data ($7800, $7B90).","t":"byte","b":[255],"x":[1573,1593,1661,40070,40092,40106,40111,41538,41567,41570,41589,41611,41614,41629,41639,41657,41667,42705,42737,43381,43390,43401,43407,43898,43907,43912,43918,44570,44606,44628,44653,44676,44707,45074,45076,45104,45115,45120,45173,45175,45204,45223,45228,45289,45294,45334,45411,45429,45434,45455,45467,45492,45507,45514,45524,45534,46591,46602,46613,46624,46660,46690,46723,46753,46786,46816,62137,62159,62173,62178,62482,62568,62573,62581,62585,62588,62594,62613,62618,62657,62663,62719,62739,62743,62746,62752,62860,62888,62893,62918,63039,63086,63093,63097,63105,63136,63141]},{"a":14,"l":"scr_ptr_hi","c":"General screen pointer, high byte ($C0-$C3).","t":"byte","b":[0],"x":[1582,40074,40113,40117,41545,41596,42712,43386,43903,44577,44683,45078,45082,45097,45177,45181,45197,45296,45300,46596,46618,46665,46728,46791,62141,62180,62184,62486,62624,62724,62864,62897,62901,63045,63149]},{"a":15,"l":"col_ptr","c":"Colour RAM pointer, low byte (with col_ptr_hi): the $D800 cell of the same screen position as scr_ptr, set alongside it ($F40E, $A244, $AE1C); in the panel copy ($F2C1) and the Doh set-up ($9C8E) the destination screen row instead.","t":"byte","b":[2],"x":[1575,1648,40078,40094,40119,40124,41540,41591,42707,44572,44678,45404,45460,45497,45519,45539,62145,62161,62186,62191,62480,62561,62564,62620,62640,62643,62895,62923,63041,63090,63109,63143]},{"a":16,"l":"col_ptr_hi","c":"Colour RAM pointer, high byte ($D8-$DB, made from the screen pointer's high byte AND 3 + $D8).","t":"byte","b":[0],"x":[1589,40084,40128,40132,41552,41603,42719,44584,44690,62151,62195,62199,62493,62626,62908,63051,63147]},{"a":17,"l":"src_ptr","c":"Source pointer, low byte (with src_ptr_hi): the round layout being drawn (round x 160 + $8000, $F3C2) or a player's saved wall ($F371), the wall buffer written by save_wall_of_player, the glyph being dissolved in the ending ($9758); in the panel copy ($F2C3) and the Doh set-up ($9C90) the colour RAM destination.","t":"byte","b":[0],"x":[1547,1636,1642,1707,1714,1719,38744,38760,38775,38780,40080,40098,40126,62147,62165,62193,62327,62415,62428,62432,62436,62454,62456,62468,62470,62497,62503,62511]},{"a":18,"l":"src_ptr_hi","c":"Source pointer, high byte.","t":"byte","b":[0],"x":[1552,1721,1725,38746,38752,38755,38758,38762,38766,40088,40138,62155,62205,62332,62411,62426,62430,62434,62461,62463,62474,62476]},{"a":19,"l":"save_y","c":"Saved Y index: the offset into the round record while a row is drawn ($F446/$F493), the metal-brick slot during the gold-brick search ($B024), the column of the brick hit ($B155-$B1AD).","t":"byte","b":[0,0,0,25,22,0,10,118],"x":[45092,45122,45165,45292,45302,45397,45449,45485,62534,62611]},{"a":27,"t":"byte","b":[163,0,0,0,0,0,0,118]},{"a":35,"t":"byte","b":[163,179,189,0,0,0,0,0]},{"a":43,"t":"byte","b":[1,8,0,4,3]},{"a":48,"l":"v1_stack_lo","c":"Music driver, voice 1 sequence call stack, return address low bytes ($30-$37), indexed by v1_stack_index ($E9, 7 counting down); pushed by the call ($2836) and repeat ($2883) commands.","t":"byte","b":[8],"x":[10299,10378]},{"a":49,"l":"v1_stack_lo_top","c":"Same array as v1_stack_lo, addressed one entry up: the return ($28EE) and repeat-loop ($28D5) commands read the entry last pushed after the index has moved on.","t":"byte","b":[3,8,0,160,0,160,0],"x":[10453,10478]},{"a":56,"l":"v1_stack_hi","c":"Music driver, voice 1 sequence call stack, return address high bytes ($38-$3F).","t":"byte","b":[160],"x":[10305,10384]},{"a":57,"l":"v1_stack_hi_top","c":"Same array as v1_stack_hi, one entry up, read by the return and repeat-loop commands ($28D7, $28F0).","t":"byte","b":[0,255,0,0,0,0,0],"x":[10455,10480]},{"a":64,"l":"v1_repeat","c":"Music driver, voice 1 repeat counts ($40-$47), one per stack level, set by the repeat command ($2894).","t":"byte","b":[0],"x":[10388]},{"a":65,"l":"v1_repeat_top","c":"Same array as v1_repeat, one entry up: counted down by the end-of-repeat command ($28D1), which jumps back until it reaches 0.","t":"byte","b":[0,8,0,0,0,0,36,0],"x":[10449]},{"a":73,"t":"byte","b":[8,0,0,0,0,0,0,25]},{"a":81,"t":"byte","b":[0,0,3,76,0,0,0,0]},{"a":89,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":96,"l":"v3_stack_lo","c":"Music driver, voice 3 sequence call stack, return address low bytes ($60-$67), indexed by v3_stack_index ($EB).","t":"byte","b":[0],"x":[10799,10941]},{"a":97,"l":"v3_stack_lo_top","c":"Voice 3 call stack low bytes one entry up, read by its return and repeat-loop commands ($2B1E, $2B37).","t":"byte","b":[10,118,163,25,0,0,0],"x":[11038,11063]},{"a":104,"l":"v3_stack_hi","c":"Music driver, voice 3 sequence call stack, return address high bytes ($68-$6F).","t":"byte","b":[0],"x":[10805,10947]},{"a":105,"l":"v3_stack_hi_top","c":"Voice 3 call stack high bytes one entry up ($2B20, $2B39).","t":"byte","b":[0,0,0,0,0,0,118],"x":[11040,11065]},{"a":112,"l":"v3_repeat","c":"Music driver, voice 3 repeat counts ($70-$77), set by its repeat command ($2AC7).","t":"byte","b":[0],"x":[10951]},{"a":113,"l":"v3_repeat_top","c":"Voice 3 repeat counts one entry up, counted down by its end-of-repeat command ($2B1A).","t":"byte","b":[128,163,230,122,208,2,230],"x":[11034]},{"a":120,"l":"drum_stack_lo","c":"Drum sequencer call stack, return address low bytes ($78-$7F), indexed by drum_stack_index ($DD, 7 counting down): pushed by drum_push ($A032) for the sequence's call and loop commands, popped by $A1E6.","t":"byte","b":[123],"x":[41015,41450]},{"a":121,"l":"drum_stack_lo_top","c":"Drum sequencer stack low bytes one entry up, read by the loop command at $A7D7.","t":"byte","b":[173,8,2,201,58,176,10],"x":[42967]},{"a":128,"l":"drum_stack_hi","c":"Drum sequencer call stack, return address high bytes ($80-$87).","t":"byte","b":[201,32,240,239,56,233,48,56],"x":[41021,41454]},{"a":136,"l":"drum_loops","c":"Drum sequencer loop counts ($88-$8F), one per stack level, alongside drum_stack_lo/hi: counted down by the end-of-loop command ($A936), which jumps back until the count reaches 0.","t":"byte","b":[233],"x":[43318]},{"a":137,"l":"drum_loops_top","c":"Same array as drum_loops, addressed one entry up: the loop command ($A7D2) stores the count here after its push has moved the index on.","t":"byte","b":[208,96,128,79,199,82,88,0],"x":[42962]},{"a":145,"t":"byte","b":[255,0,0,85,255,0,0,0]},{"a":153,"t":"byte","b":[0,3,0,0,0,0,0,0]},{"a":161,"t":"byte","b":[0,207,85,241,0,0,0]},{"a":168,"l":"v2_stack_lo","c":"Music driver, voice 2 sequence call stack, return address low bytes ($A8-$AF), indexed by v2_stack_index ($EA).","t":"byte","b":[0],"x":[10535,10634]},{"a":169,"l":"v2_stack_lo_top","c":"Voice 2 call stack low bytes one entry up ($29D5, $29EE). Also the operand of BIT $00A9 at $B180, a skip over LDA #$00 that reads it to no purpose.","t":"byte","b":[0,0,0,0,0,0,255],"x":[10709,10734,45440,45473,65029]},{"a":176,"l":"v2_stack_hi","c":"Music driver, voice 2 sequence call stack, return address high bytes ($B0-$B7).","t":"byte","b":[0],"x":[10541,10640]},{"a":177,"l":"v2_stack_hi_top","c":"Voice 2 call stack high bytes one entry up ($29D7, $29F0).","t":"byte","b":[0,60,3,0,0,0,8],"x":[10711,10736]},{"a":184,"l":"v2_repeat","c":"Music driver, voice 2 repeat counts ($B8-$BF), set by its repeat command ($2994).","t":"byte","b":[8],"x":[10644]},{"a":185,"l":"v2_repeat_top","c":"Voice 2 repeat counts one entry up, counted down by its end-of-repeat command ($29D1).","t":"byte","b":[96,8,185,64,0,0,0,0],"x":[10705]},{"a":193,"t":"byte","b":[0,160,0,4,64,0,0,11]},{"a":201,"t":"byte","b":[0,11,64,1,2,32,0,0]},{"a":209,"t":"byte","b":[104,5,7,0,39,9,71,0]},{"a":217,"t":"byte","b":[132]},{"a":218,"l":"drum_ptr","c":"Drum sequencer: pointer to the next entry of the drum sequence (low byte; drum_ptr_hi high), set by drum_start ($9945) for the title ($9960) and the ending ($AB10), and by $B52C; advanced two bytes per drum by drum_step ($FEF4).","t":"byte","b":[132],"x":[39239,41013,41452,42063,42067,42069,42960,42969,43330,46391,65274,65308,65312,65317]},{"a":219,"l":"drum_ptr_hi","c":"Drum sequencer pointer, high byte.","t":"byte","b":[132],"x":[39241,41017,41456,42071,42965,43334,46393,65319,65323]},{"a":220,"l":"drum_wait","c":"Drum sequencer: frames until the next sequence entry is read; counted down by drum_step ($FEF4) and reloaded from each drum entry's second byte.","t":"byte","b":[132],"x":[39237,46385,65268,65310]},{"a":221,"l":"drum_stack_index","c":"Drum sequencer: stack index for drum_stack_lo/hi and drum_loops, 7 at start (drum_start $994B), decremented by a push ($A040), incremented by a pop ($A1E6) or a finished loop.","t":"byte","b":[132],"x":[39245,41010,41024,41446,41448,43314,43316,43325,43328]},{"a":222,"l":"noise_acc","c":"Running sum the digital drum routines ($F345, $F604, $ACD6, $AEEF, $B290, $B500) step by a constant each sample and write AND 15 to the SID volume register, making the drum sound.","t":"byte","b":[132],"x":[44266,44271,44803,44808,45732,45737,46356,46361,62297,62302,63000,63005]},{"a":223,"l":"drum_pending","c":"Drum sequencer: the drum entry ($80 or more) waiting to be played; set by drum_step ($FF18), played and cleared by drum_play ($FEE0, through the JSR it patches at $FEE8) from the title and ending loops.","t":"byte","b":[132],"x":[46382,65248,65254,65304]},{"a":224,"l":"v1_seq_ptr","c":"Music driver: voice 1 sequence pointer, low byte (with v1_seq_ptr_hi), set from the tune table by play_tune ($264F), advanced by voice 1's step ($2C15).","t":"byte","b":[133],"x":[9807,10284,10297,10309,10313,10315,10322,10326,10332,10342,10346,10352,10376,10386,10397,10403,10422,10426,10428,10435,10439,10457,10483,10494,10498,10506,10511,11302,11304,11310,11601,11618,11620]},{"a":225,"l":"v1_seq_ptr_hi","c":"Music driver: voice 1 sequence pointer, high byte.","t":"byte","b":[133],"x":[9812,10303,10317,10382,10430,10459,10485,11295,11625]},{"a":226,"l":"v2_seq_ptr","c":"Music driver: voice 2 sequence pointer, low byte (step at $2D6C).","t":"byte","b":[133],"x":[10533,10545,10549,10551,10558,10562,10568,10578,10582,10588,10598,10602,10608,10632,10642,10653,10659,10678,10682,10684,10691,10695,10713,10739,10750,10754,10762,10767,11645,11647,11653,11946,11963,11965]},{"a":227,"l":"v2_seq_ptr_hi","c":"Music driver: voice 2 sequence pointer, high byte.","t":"byte","b":[133],"x":[10539,10553,10638,10686,10715,10741,11638,11970]},{"a":228,"l":"v3_seq_ptr","c":"Music driver: voice 3 sequence pointer, low byte (step at $2EC5).","t":"byte","b":[133],"x":[10784,10797,10809,10813,10815,10828,10833,10840,10844,10850,10860,10864,10870,10880,10886,10905,10909,10915,10939,10949,10960,10966,10985,10989,10991,11020,11024,11042,11068,11079,11084,11990,11992,11998,12295,12312,12314]},{"a":229,"l":"v3_seq_ptr_hi","c":"Music driver: voice 3 sequence pointer, high byte.","t":"byte","b":[133],"x":[10803,10817,10945,10993,11044,11070,11983,12319]},{"a":230,"l":"v1_note_wait","c":"Music driver: frames left of voice 1's note; at 0 its step reads the next sequence entry. Set from note_lengths ($2D5D), 1 at tune start.","t":"byte","b":[134],"x":[9838,11290,11613,12334]},{"a":231,"l":"v2_note_wait","c":"Music driver: frames left of voice 2's note ($2D71, $2EB6).","t":"byte","b":[134],"x":[11633,11958,12652]},{"a":232,"l":"v3_note_wait","c":"Music driver: frames left of voice 3's note ($2ECA, $3013).","t":"byte","b":[134],"x":[11978,12307,13022]},{"a":233,"l":"v1_stack_index","c":"Music driver: voice 1 call-stack index (7 at tune start, $266A), into v1_stack_lo/hi and v1_repeat.","t":"byte","b":[134],"x":[9834,10294,10307,10371,10390,10447,10464,10470,10476]},{"a":234,"l":"v2_stack_index","c":"Music driver: voice 2 call-stack index.","t":"byte","b":[134],"x":[10530,10543,10627,10646,10703,10720,10726,10732]},{"a":235,"l":"v3_stack_index","c":"Music driver: voice 3 call-stack index.","t":"byte","b":[134],"x":[10794,10807,10934,10953,11032,11049,11055,11061]},{"a":236,"l":"v1_transpose","c":"Music driver: voice 1 transpose in semitones, added to each note before the frequency lookup ($2C4C); 0 at tune start, set by a sequence command ($282E).","t":"byte","b":[134],"x":[9824,10286,11340,11577]},{"a":237,"l":"v2_transpose","c":"Music driver: voice 2 transpose ($2DA3, $2E92).","t":"byte","b":[135],"x":[11683,11922]},{"a":238,"l":"v3_transpose","c":"Music driver: voice 3 transpose ($2F00).","t":"byte","b":[135],"x":[10786,12032,12271]},{"a":239,"l":"cmd_ptr","c":"Music driver scratch pointer, low byte: the address of a five-byte instrument tail ($290A, $2A0A, $2B47) or the target of the jump command at $2A55; also a saved X at $2C59.","t":"byte","b":[135],"x":[10508,10517,10764,10773,10830,10837,11081,11090,11353,11358,11698,11703,12047,12052,12868,12879]},{"a":240,"l":"cmd_ptr_hi","c":"Music driver scratch pointer, high byte.","t":"byte","b":[135],"x":[10513,10769,10835,11086,12873]},{"a":241,"l":"v1_pw","c":"Music driver: voice 1 pulse width as swept, low byte (v1_pw_hi high), written to $D402/$D403 ($30CD).","t":"byte","b":[135],"x":[9931,11427,12426,12493]},{"a":242,"l":"v1_pw_hi","c":"Music driver: voice 1 pulse width as swept, high byte.","t":"byte","b":[135],"x":[9933,11429,12428,12495]},{"a":243,"l":"v2_pw","c":"Music driver: voice 2 pulse width as swept, low byte ($D409, $3206).","t":"byte","b":[104],"x":[9954,11772,12739,12806]},{"a":244,"l":"v2_pw_hi","c":"Music driver: voice 2 pulse width as swept, high byte.","t":"byte","b":[217],"x":[9956,11774,12741,12808]},{"a":245,"l":"v3_pw","c":"Music driver: voice 3 pulse width as swept, low byte ($D410).","t":"byte","b":[0],"x":[9977,12121,13115,13182]},{"a":246,"l":"v3_pw_hi","c":"Music driver: voice 3 pulse width as swept, high byte.","t":"byte","b":[0],"x":[9979,12123,13117,13184]},{"a":247,"l":"v1_freq","c":"Music driver: voice 1 frequency as bent by the pitch envelope, low byte (v1_freq_hi high), written to $D400/$D401 ($3140).","t":"byte","b":[0],"x":[10155,12508,12614]},{"a":248,"l":"v1_freq_hi","c":"Music driver: voice 1 frequency as bent, high byte.","t":"byte","b":[0],"x":[10157,12510,12616]},{"a":249,"l":"v2_freq","c":"Music driver: voice 2 frequency as bent, low byte ($D407, $32B2).","t":"byte","b":[0],"x":[10207,12825,12984]},{"a":250,"l":"v2_freq_hi","c":"Music driver: voice 2 frequency as bent, high byte.","t":"byte","b":[0],"x":[10209,12827,12986]},{"a":251,"l":"v3_freq","c":"Music driver: voice 3 frequency as bent, low byte ($D40E, $33F7); 0 in both bytes stops voice 3's envelope ($338D).","t":"byte","b":[0],"x":[10255,13097,13197,13203,13309]},{"a":252,"l":"v3_freq_hi","c":"Music driver: voice 3 frequency as bent, high byte.","t":"byte","b":[0],"x":[10257,13099,13199,13205,13311]},{"a":253,"l":"sfx_ptr","c":"Music driver: address of the sound-effect patch play_sfx ($272F) loads (low byte; A on entry), also Y's save in play_tune ($2656).","t":"byte","b":[0],"x":[9814,9843,10031,10066,10080,10086,10103,10109,10115,10122,10129]},{"a":254,"l":"sfx_ptr_hi","c":"Music driver: sound-effect patch address, high byte (Y on entry to play_sfx).","t":"byte","b":[0],"x":[10033]},{"a":255,"l":"note_byte","c":"Music driver: the sequence byte being played as a note: $00-$5E a note followed by a length code (note_lengths), $60-$BE a note followed by a length in frames, $5F and $BF a rest; kept for the length step ($2D53) and voice 2's arpeggio base ($2E8A).","t":"byte","b":[32],"x":[11328,11569,11603,11671,11914,11948,12016,12263,12297]},{"a":256,"t":"gap","n":256},{"a":256,"t":"note","l":"loader_stack_code","c":"Stack page as the fast loader left it: its two-bit serial receiver and helpers ($0103-$01E6: JSR $018B byte reads, the load-address pointers $AE/$AF and $C3/$C4, the KERNAL serial calls at $015B-$0168, the final JMP $9400 at $0186), see orientation.md. The game's own stack grows down from $01FF over the top of it. Typed as bytes: not annotated further, by policy.","note":"outside the tracked image"},{"a":263,"t":"note","l":"nmi_serial_target","c":"Target of the JMP $0107 at $F932, the end of the NMI handler's CIA 2 serial-port branch ($F90B-$F932), which needs a serial-port interrupt from CIA 2 (a signal on the user port's CNT2) and never ran in the simulator. $0107 is the middle of the loader's STA $AE ($0106), so the bytes decode as LDX $8B20 / ORA ($85,X) / LAX $02A5 / BNE $0119 ...: not a routine. Purpose not known.","note":"outside the tracked image","x":[63794]},{"a":418,"t":"note","l":"a_01A2","c":"Not a variable: operand of BIT $01A2 at $FE4F, a skip over LDX #$01 (entered at $FE50); the stray read lands in the loader's leftovers.","note":"outside the tracked image","x":[65103]},{"a":425,"t":"note","l":"a_01A9","c":"Not a variable: operand of BIT $01A9 at $FEC5 (and $A024), a skip over LDA #$01; the stray read lands in the loader's leftovers.","note":"outside the tracked image","x":[40996,65221]},{"a":512,"l":"frame_ticks","c":"Frames waiting: the NMI handler adds 1 once a frame ($F8AD); wait_frame ($B472) waits until it is non-zero and takes 1. Cleared before a wait for a fresh frame ($9704, $9BC8, $B9A4, $B9B2, $F06C). The whole page $0200-$02FF is cleared at power-on ($F6FA) and at every life ($9A76).","t":"byte","b":[147],"x":[38660,39545,39880,46194,46199,47524,47538,61548,63229,63661]},{"a":513,"l":"frame_counter","c":"Frame counter, low byte, +1 per frame from the raster interrupt ($F73A; carries into frame_counter_hi). Reset to 0 at each life's start ($9707) and to 1 when the ball is caught ($AC9E): the held ball launches by itself when it reaches $80 ($AA79). Its bits pace animations ($0889, $A3F9, $A7DC, $AD8A), the enemy's turns ($A05A) and the capsule draw ($B2E6, $B321).","t":"byte","b":[34],"x":[2186,2214,38663,41050,41977,42442,42972,43638,44190,44426,45798,45857,47491,62124,63290,64399]},{"a":514,"l":"death_divider","c":"Vaus explosion pace: counts 0-2 ($9B36-$9B42) so the explosion frame advances every third call.","t":"byte","b":[42],"x":[39734,39737,39746]},{"a":515,"l":"ctrl_bits","c":"Control directions, joystick format (bit 2 left, bit 3 right, bit 4 fire): the joystick port read and inverted ($FDB5-$FDBC), or the keyboard's two SHIFT keys (left SHIFT sets bit 2, right SHIFT bit 3, $FD7B-$FD98). Read by the joystick/keyboard mover ($FDBF).","t":"byte","b":[34],"x":[64895,64905,64915,64920,64956,64959,64989]},{"a":516,"l":"aim_dx","c":"Enemy steering scratch ($B3FA): horizontal distance from the enemy to object 0 (the Vaus, or the intro's target), compared with aim_dy to choose which axis moves every step.","t":"byte","b":[44],"x":[46090,46101,46147,46157,46187]},{"a":517,"l":"aim_dy","c":"Enemy steering scratch ($B3FA): vertical distance from the enemy to object 0.","t":"byte","b":[56],"x":[46125,46136,46144,46166,46178]},{"a":518,"l":"vaus_x","c":"The Vaus's centre X (sprite coordinates): $80 at each life ($9A8E), moved by the input routine (paddle $FCBB, mouse/joystick/keyboard $FCD4/$FCE2), kept inside the walls by vaus_place ($FCEE), which puts the two Vaus sprites at vaus_x - vaus_stretch and that + 2 x vaus_stretch ($9445, $9446).","t":"byte","b":[44],"x":[38189,39566,40989,42814,42832,42886,43445,43466,43660,43993,44014,44031,44124,62015,64699,64717,64724,64731,64738,64750,64771,64784,64802,64814,64845,64859,64873,65062]},{"a":519,"l":"vaus_resize_state","c":"Vaus size change in progress ($AD4B): 1 and up growing (the E capsule, $AA46), vaus_stretch +1 per frame up to $0C; $80 and up shrinking back to 4 after another capsule ($AA40); 0 none.","t":"byte","b":[49],"x":[43584,43590,44363,44383,44389,44411,44417]},{"a":520,"l":"last_capsule","c":"Type (1-7) of the last capsule caught ($A9E9); the capsule draw re-rolls a type equal to it ($B210), so the same power does not fall twice running.","t":"byte","b":[0],"x":[43497,45584]},{"a":521,"l":"drum_mode","c":"$FF while the title or the ending plays its digital drums ($B4CF, $9679): the NMI handler then also steps the drum sequence (drum_step $FEF4, $F88A) and skips its second call of the music driver ($F8F8). 0 otherwise ($B4F4, $96AF).","t":"byte","b":[44],"x":[38521,38575,46287,46324,46332,63626,63736]},{"a":522,"l":"vaus_stretch","c":"Half the gap between the Vaus's two sprites: 4 normally ($9AA8, the hit test's narrow case at $AC0D), up to $0C enlarged (vaus_resize_state, $AD4B-$AD7B); $0C is also set for the explosion ($9AFF). Collision tests with the ball, capsules and enemies use vaus_x +/- multiples of it.","t":"byte","b":[0],"x":[39592,39679,42113,42490,42806,42825,43439,43459,43575,43985,44007,44042,44295,44370,44380,44398,44408,62010,64762,64775,64788,64806,64822,64828,64842,64863,64869]},{"a":523,"l":"vaus_overhang","c":"How far the Vaus would pass a side wall (vaus_place $FCEE-$FD2B: left edge below $20, right edge above $DB); vaus_x is pulled back by it.","t":"byte","b":[0],"x":[64755,64781,64811,64818,64854]},{"a":524,"l":"width_tmp","c":"Scratch: a Vaus half-width for a collision test ($A73B, $A9B2, $ABD6); in the disruption the first ball's Y ($A8E0).","t":"byte","b":[0],"x":[42811,42817,42829,42836,43232,43265,43442,43451,43463,43470,43990,43999,44011,44018]},{"a":525,"l":"x_save","c":"Scratch: X saved over a call ($B1EA-$B236 brick hit, $F4CA wall builder); in the disruption the first ball's X ($A8DA); read by the capsule draw as the ball's index ($B314).","t":"byte","b":[0],"x":[43226,43271,45546,45560,45622,45844,62666,62731]},{"a":526,"l":"brick_colour","c":"Colour (colour RAM AND 7) of the brick just broken ($B160); picks its points from the table $B2C4 ($B259).","t":"byte","b":[0],"x":[45408,45657]},{"a":527,"l":"blink_phase","c":"Last value of frame_counter bit 3, so the current player's panel marker ($D8EF or $DA57) flashes every 8 frames ($FB8F-$FBB9).","t":"byte","b":[0],"x":[64404,64409]},{"a":528,"l":"index_save","c":"Scratch: an index kept over a call: the enemy being tested ($9CDE, $9F25), the metal-brick slot ($B087-$B0E1), the score offset for the high-score check ($FB0F), the first ball's direction in the disruption ($A8E6).","t":"byte","b":[0],"x":[40158,40163,40741,40783,43238,43248,45191,45211,45230,45274,45281,64271,64290]},{"a":529,"l":"bits_lo","c":"16-bit scratch, low byte: the brick-presence bits of a row in save_wall_of_player; round x 128 for the layout address ($F3D1-$F3F2); the laser's X offset ($A6B2, $A6BA).","t":"byte","b":[0],"x":[1556,1601,1613,1619,1625,1639,42674,42682,42725,42758,62417,62447,62450]},{"a":530,"l":"bits_hi","c":"16-bit scratch, high byte (with bits_lo).","t":"byte","b":[0],"x":[1559,1604,1616,1622,1628,1633,62441,62444,62458]},{"a":531,"l":"key_y_save","c":"Y saved over key_held ($0832/$085E).","t":"byte","b":[0],"x":[2098,2142]},{"a":532,"l":"menu_key","c":"Menu: the menu key (0-6) last seen held, so a held key acts once ($B5A9-$B5C9); $FF when none.","t":"byte","b":[0],"x":[46505,46532,46537]},{"a":533,"l":"doh_flash_count","c":"Round 33: Doh's hit flash. Set to 1 by a hit ($B123); the flash routine ($97B3) makes it $80 and steps it to $86, colouring Doh's face from $97F9, then clears it. Set to $80 again while Doh has no hits left ($9620).","t":"byte","b":[0],"x":[38427,38434,38481,38835,38844,38847,38892,38901,45347]},{"a":534,"l":"tune_hold","c":"Frames during which a jingle has the SID: while non-zero the bat, brick and catch effects are not started ($AC75, $B049, $B26A). Counted down by the NMI handler ($F8C8); with tune_hold_kind 2 it waits for the music to end instead ($F8B5).","t":"byte","b":[0],"x":[39695,40719,40738,42118,42900,42919,43164,43595,44149,44195,45129,45238,45674,63664,63683,63688,64236]},{"a":535,"l":"tune_hold_kind","c":"What set tune_hold: 1 a short effect (enemy hit $9F1D, laser $A7A2), 2 a jingle that must finish (death $9B0C, enlarge $AA50, extra life $A8A1, exit $A489, bonus life $FAF1).","t":"byte","b":[0],"x":[39692,40724,40733,42121,42905,42914,43169,43600,63669,64241]},{"a":536,"l":"hit_row","c":"Brick hit: the brick row of the hit, from the ball's or the laser's Y ($AFAD-$B00C, $A6FF); +1 for the lower half ($B1C0); places the capsule ($B239) and picks the background pattern ($B2CD).","t":"byte","b":[0],"x":[42751,44973,45000,45027,45054,45504,45625,45773]},{"a":537,"l":"hit_col","c":"Brick hit: the screen column of the hit (even), from the ball's or the laser's X ($AFBB-$B00C, $A70E), stepped across the brick's cells ($B1A7, $B1D8).","t":"byte","b":[0,0],"x":[42766,44987,45014,45041,45068,45479,45528,45637,45783]},{"a":539,"l":"shadow_offset","c":"Brick removal: $10 when a brick still stands on the shadow side of the cell (the cell above it, or above and to the left), so the background character put back is the shadowed one, else 0 ($B175-$B1A4).","t":"byte","b":[0],"x":[45443,45452,45476,45489]},{"a":540,"l":"pattern_tmp","c":"Brick removal scratch: (row x 4) AND $0C, the row part of the background pattern ($B2D4).","t":"byte","b":[0],"x":[45780,45788]},{"a":541,"l":"pattern_phase","c":"Background fill ($F552): the pattern row offset, (row AND 3) x 4, added to bg_char_base for each screen row.","t":"byte","b":[0],"x":[62855,62915,62947]},{"a":542,"l":"row_counter","c":"Row counter for screen builders: the background rows ($F582-$F5D8, to 25), the side walls ($F632-$F68A, to 24), the menu and story text lines ($B639-$B6E9), and save_wall_of_player's brick rows (1-16).","t":"byte","b":[0],"x":[1538,1562,1727,1730,46649,46652,46696,46699,46712,46715,46759,46762,46775,46778,46822,46825,62850,62933,62936,63026,63111,63114]},{"a":543,"l":"doh_shot_acc","c":"Round 33: Doh's shots move only on frames when adding $A1 to this carries ($97FD), about 5 frames in 8. In the intro the last bit 2 of frame_counter (intro_vaus_frames, $08AB).","t":"byte","b":[0],"x":[2219,2224,38909,38915,40798,40804]},{"a":544,"l":"anim_tick","c":"Last frame_counter bit seen (bit 2 or bit 1), so an animation steps when it changes: the Vaus appearing ($A3FE), the laser change ($A5CF, $AD8F). The side-wall builder ($F637-$F69D) uses it as the wall's phase 0-4.","t":"byte","b":[0],"x":[41982,41987,42447,42452,44431,44436,63031,63079,63121,63133]},{"a":545,"l":"catch_offset","c":"Held ball: vaus_x minus the ball's X, kept while the ball sits on the Vaus ($AA8C); $F8 (ball 8 to the right) at each life ($9AE5), the contact point after a catch ($AC63).","t":"byte","b":[0],"x":[39653,43664,44131,62116]},{"a":546,"l":"wipe_rows","c":"Exit: rows left to mask in the Vaus sprite during its exit ($A4C6, counting from 10).","t":"byte","b":[0],"x":[42182,42219,42249]},{"a":547,"l":"laser_morph","c":"Laser change animation: steps left (8 down to 0) of the Vaus turning into the laser Vaus ($A877; $A5C7 with shapes from $A5EA) or back ($AA1E; $AD85 with shapes from $ADAA).","t":"byte","b":[0,0],"x":[42439,42470,43127,43550,44393,44421,44454]},{"a":549,"l":"shine_divider","c":"Metal-brick shine pace: counts 0-3, the shine steps every fourth frame ($AB55).","t":"byte","b":[0],"x":[43861,43871,43877]},{"a":550,"l":"row_bits_hi","c":"Wall builder: first byte of a round row's brick-presence bits (bricks 0-7, bit 7 first), shifted out one per brick ($F424, $F44F).","t":"byte","b":[0],"x":[62500,62543]},{"a":551,"l":"row_bits_lo","c":"Wall builder: second byte of the row's brick-presence bits (bricks 8-12).","t":"byte","b":[0],"x":[62506,62540]},{"a":552,"l":"ball_held","c":"1 while the ball sits on the Vaus: at each life ($9AD6), after a catch ($AC9B); released by fire or when frame_counter reaches $80 ($AA71-$AAF1). While set no ball moves ($ADB3) and the Vaus-hit test is skipped ($ABB5). The disruption's loop clears it with the two bytes after it ($A91A).","t":"byte","b":[0],"x":[39638,43290,43564,43633,43761,43957,44187,44467,62106]},{"a":553,"l":"enemy_spawn_timer","c":"Frames (to $C0) before the next enemy is let in through a gate ($9F8A-$9F96).","t":"byte","b":[0],"x":[40842,40845,40854]},{"a":554,"l":"catch_power","c":"1 while the catch power (C capsule) is on ($A8AE); a Vaus hit then holds the ball ($AC70). Cleared by the next capsule ($AA23) and by the disruption ($A91A).","t":"byte","b":[0],"x":[43182,43555,44144]},{"a":555,"l":"laser_power","c":"1 while the laser power (L capsule) is on ($A872); fire then shoots ($A5F3). Cleared by the next capsule ($AA26).","t":"byte","b":[0],"x":[42483,43122,43543,43558]},{"a":556,"l":"laser_active","c":"Laser shots, two slots ($022C-$022D): 1 while a shot is in flight or showing its hit ($A779); cleared when the hit animation ends ($A668).","t":"byte","b":[0,0],"x":[42524,42600,42866,42873]},{"a":558,"l":"laser_tick","c":"Laser shots, two slots ($022E-$022F): frame divider for the shot's hit animation ($A626).","t":"byte","b":[0,0],"x":[42534,42537,42546]},{"a":560,"l":"laser_hit","c":"Laser shots, two slots ($0230-$0231): 1 once the shot has hit a brick, an enemy or the top ($A660, $A6A9, $A716); it then animates and stops.","t":"byte","b":[0,0],"x":[42529,42562,42592,42603,42665,42774]},{"a":562,"l":"enemy_col_tmp","c":"Enemy collision scratch ($A25C): the screen column under the enemy.","t":"byte","b":[0],"x":[41564,41605]},{"a":563,"l":"intro_step","c":"Intro animation: the attacker's waypoint, 0-25 ($077B, $07D8).","t":"byte","b":[0],"x":[1770,1915,1947,2008]},{"a":564,"l":"enemy_y_tmp","c":"Enemy collision scratch ($A232): the enemy's Y.","t":"byte","b":[0],"x":[41522,41575]},{"a":565,"l":"fire_prev","c":"Fire button as last seen, so a press acts once (the menu $B5B2, the laser $A60B); copied from fire_now at each life ($9AD1), cleared by the menu ($B55F) and when the laser power starts ($A87C).","t":"byte","b":[0],"x":[39633,42507,42512,43132,46431,46514,46519]},{"a":566,"l":"fire_now","c":"Fire button now (1 pressed), written by every input routine ($FCB8 paddles, $FCC4 others, $FE1D) and set to 1 in attract mode ($9568).","t":"byte","b":[0],"x":[38248,39630,42504,43645,46434,46511,64696,64708,65053,65069]},{"a":567,"l":"capsule_type","c":"The falling capsule, 0 none, else its type 1-7: 1 S slow, 2 C catch, 3 E enlarge, 4 D disruption, 5 L laser, 6 B break, 7 P extra Vaus (handlers from $A858). Chosen when a brick breaks ($B223), cleared when it is caught or lost ($AA12).","t":"byte","b":[0],"x":[43413,43494,43538,45541,45603]},{"a":568,"l":"capsule_roll","c":"Capsule letter roll: phase 7-0 of the letter scrolling across the capsule sprite ($A7EB-$A7F3).","t":"byte","b":[0],"x":[42987,42995]},{"a":569,"l":"capsule_roll_tick","c":"Last frame_counter bit 2 seen by the capsule roll ($A7E1).","t":"byte","b":[0],"x":[42977,42982]},{"a":570,"l":"ball_speed","c":"Ball speed, whole steps per frame less one: 2 at each life ($9ADB, 4 in attract mode), -1 by the S capsule (not below 1, $A8BA), +1 by the disruption ($A926), raised to frame_counter_hi / 4 as the round goes on, up to 11 ($ADE7). The joystick and keyboard move the Vaus 2 x (ball_speed + 1) pixels a frame ($FDCC).","t":"byte","b":[0],"x":[38180,39643,43194,43202,43296,43302,44481,44524,44533,62111,64972,64996]},{"a":571,"l":"ball_speed_frac","c":"Ball speed, fraction: +4 for every brick the ball strikes ($AF5F, held below $100), added into speed_acc each frame; reset when the speed is raised by time ($ADFA).","t":"byte","b":[0],"x":[44475,44538,44895,44903]},{"a":572,"l":"break_state","c":"Break power: 1 when the B capsule is caught ($A86A); the next frame opens the exit in the right wall and makes it $FF ($A42C); the exit glyphs then animate. Cleared by the next capsule ($AA29).","t":"byte","b":[0],"x":[42015,42028,43114,43561]},{"a":573,"l":"exiting","c":"Non-zero while the Vaus leaves through the open exit ($A477); stops the input ($FC99), the ball and most of the main loop ($9582).","t":"byte","b":[0],"x":[38274,38396,42098,42103,43478,64665]},{"a":574,"l":"vaus_at_wall","c":"1 when the Vaus is pushed against the right wall ($FD1F); with the exit open this starts the exit ($A46D). Cleared every frame the exit is closed ($A424).","t":"byte","b":[0],"x":[42020,42093,64799]},{"a":575,"l":"doh_mouth_timer","c":"Round 33: frames (0-4) between steps of Doh's mouth ($9819).","t":"byte","b":[0],"x":[38937,38944,38950]},{"a":576,"l":"doh_mouth_frame","c":"Round 33: position in Doh's mouth sequence $987E; a 0 entry fires shots from the free enemy slots ($984A).","t":"byte","b":[0],"x":[38953,38982]},{"a":577,"l":"frame_counter_hi","c":"Frame counter, high byte (+1 every 256 frames, $F73F); reset with the page each life. Raises the ball speed ($ADE7: ball_speed becomes this / 4) and steers the capsule choice ($B300).","t":"byte","b":[0],"x":[44519,45824,63295]},{"a":578,"l":"gate_open","c":"Top-wall gate: 1 when open (stage 0 reached, $988F), 0 when shut ($9898); an enemy waits for it ($9FDA).","t":"byte","b":[0],"x":[39055,39064,39112,40922]},{"a":579,"l":"gate_timer","c":"Top-wall gate animation: frames (0-5) between steps ($98B9). Also, before play, the intro's slot-0 tick ($088F) and the position in the title's sprite sequence $B999 ($B98A, $F04C).","t":"byte","b":[0],"x":[2191,2196,39097,39100,39109,47498,47509,61516]},{"a":580,"l":"gate_moving","c":"Top-wall gate: 1 while it opens or closes ($9FE1 for an enemy, $9FFB after it); cleared at the end ($988A, $9895).","t":"byte","b":[0],"x":[39050,39061,39092,40917,40929,40955]},{"a":581,"l":"gate_stage","c":"Top-wall gate: stage 3 shut to 0 open, the glyphs at $CF58/$CF60 drawn from $9950/$9958 ($9928).","t":"byte","b":[0],"x":[39068,39078,39117,39125,39130,39137,39648,62129]},{"a":582,"l":"gate_side","c":"Read when an enemy enters ($9F9E: X $AF if non-zero, else $47; $9FCD: skip the gate wait). No instruction writes it; it is cleared with the page, so enemies always enter at X $47 through the gate.","t":"byte","b":[0],"x":[40862,40909]},{"a":583,"l":"exit_step","c":"Exit: step of the Vaus's disappearance, from $17 ($A47C) down ($A4F0, $A513), masking its sprite shapes at $E5C0 and $E580 with $FC91.","t":"byte","b":[0],"x":[42108,42151,42185,42191,42224,42231,42254,42259]},{"a":584,"l":"speed_acc","c":"Ball speed accumulator: + ball_speed_frac each frame; the carry adds an extra ball step that frame ($ADB8). Cleared by the S capsule ($A8C7).","t":"byte","b":[0],"x":[43207,44472,44478]},{"a":585,"l":"death_frame","c":"Vaus explosion: 0 alive, else position+1 in the shape list $9C50 ($9B56); set when no ball is left ($9AF0). Pauses most of the main loop ($957F).","t":"byte","b":[0,0],"x":[38271,38393,39657,39674,39766,39788]},{"a":587,"l":"ball_steps","c":"Ball steps left this frame (ball_speed + carry, at most 11, $ADCC).","t":"byte","b":[0],"x":[44492,44514]},{"a":588,"l":"enemy_block_up","c":"Enemies, three slots ($024C-$024E): the characters above the enemy ORed ($A264); bit 7 set means a brick blocks the way up.","t":"byte","b":[0,0,0],"x":[40294,41146,41289,41308,41361,41572]},{"a":591,"l":"enemy_block_down","c":"Enemies, three slots ($024F-$0251): bit 7 set when a brick is below ($A290).","t":"byte","b":[0,0,0],"x":[40246,41078,41206,41259,41327,41353,41616]},{"a":594,"l":"enemy_block_right","c":"Enemies, three slots ($0252-$0254): bit 7 set when a brick is to the right ($A2BB-$A2C8).","t":"byte","b":[0,0,0],"x":[40347,41127,41168,41242,41379,41390,41479,41659,41669,41672]},{"a":597,"l":"enemy_block_left","c":"Enemies, three slots ($0255-$0257): bit 7 set when a brick is to the left ($A29F-$A2AC).","t":"byte","b":[0,0,0],"x":[40395,41185,41192,41248,41373,41410,41459,41631,41641,41644]},{"a":600,"l":"enemy_homed","c":"Enemies, three slots: 1 once the enemy, on reaching Y $B8, has been turned toward the Vaus ($A043-$A04D); cleared when it is lower still ($A072).","t":"byte","b":[0,8,2],"x":[41027,41037,41074]},{"a":603,"l":"enemy_anim_timer","c":"Enemies, three slots: frames since the last animation frame ($A361), against enemy_anim_delay.","t":"byte","b":[0,0,0],"x":[41799,41806,41825]},{"a":606,"l":"enemy_entry","c":"Enemies, three slots: entry phase: 0 waiting for enemy_spawn_timer, 1 at the gate waiting for it to open ($9FC8), $80 coming down through it ($9FE9) until Y $38, then 0 with the enemy active ($A02C).","t":"byte","b":[0,0,0],"x":[40837,40904,40937,41004]},{"a":609,"l":"intro_speed","c":"Intro animation, three slots ($0261-$0263): extra steps per frame of each moving object ($070B, $07A4, read $0883).","t":"byte","b":[0,0,8],"x":[1803,1863,1956,2179]},{"a":612,"l":"row_nibbles","c":"16 bytes ($0264-$0273), one colour code per brick of a row: unpacked from the round layout by the wall builder ($F437/$F43E), packed into the wall buffer by save_wall_of_player ($0691).","t":"byte","b":[8,0,0,0,0,0,0,0],"x":[1681,1695,1703,62519,62526,62548]},{"a":620,"t":"byte","b":[0,96,98,0,0,0,0,0]},{"a":628,"l":"enemy_state","c":"Enemies, three slots (objects 8-10, Y at $9435, X at $944D): 0 none, 1 moving ($9FFE), $FF exploding ($9F07). The intro uses the same slots for its attacker, shot and escaping Vaus.","t":"byte","b":[0],"x":[1781,1798,1858,1907,1992,2174,2209,2248,38922,38990,39007,40151,40168,40476,40711,40811,40958,41786,42614,42780]},{"a":629,"l":"intro_shot_state","c":"enemy_state of slot 1, named for the intro's shot ($0729, $0737).","t":"byte","b":[0],"x":[1833,1847]},{"a":630,"l":"intro_attacker_state","c":"enemy_state of slot 2, named for the intro's attacker ($076B).","t":"byte","b":[0],"x":[1899]},{"a":631,"l":"enemy_anim","c":"Enemies, three slots: position in the frame list $A376 (a 0 ends a list, the byte after it says where to restart); set from $A3E8 by the round (AND 3, $9FB7, $F5F5), from $A3D8 for Doh's shots ($9865), 0 for the explosion ($9EFD).","t":"byte","b":[0],"x":[39013,40701,40887,41809,41822,41835,62965]},{"a":632,"l":"enemy_anim_1","c":"enemy_anim of slot 1, set directly at the round's start ($F5F8).","t":"byte","b":[0],"x":[62968]},{"a":633,"l":"enemy_anim_2","c":"enemy_anim of slot 2, set directly at the round's start ($F5FB).","t":"byte","b":[0],"x":[62971]},{"a":634,"l":"enemy_dy","c":"Enemies, three slots: Y step, +1 down, $FF up, 0 still.","t":"byte","b":[0,0,0],"x":[40180,40204,40253,40301,40965,41083,41090,41104,41141,41151,41159,41218,41272,41296,41321,41340,41346,41395,41426,41434,41464,41495,41504,41512,41698,41759,46130,46141]},{"a":637,"l":"enemy_dx","c":"Enemies, three slots: X step, +1 right, $FF left, 0 still.","t":"byte","b":[0,0,0],"x":[40175,40305,40354,40402,40970,41100,41109,41134,41163,41173,41181,41199,41225,41233,41237,41264,41277,41299,41313,41332,41366,41404,41423,41473,41492,41730,41773,46095,46106]},{"a":640,"l":"enemy_rate_y","c":"Enemies, three slots: $FF when Y is the axis that moves every step; otherwise the amount taken from enemy_acc per step, Y moving on a borrow ($A2DB-$A30C, set by $B3FA).","t":"byte","b":[0,0,8],"x":[40978,41095,41213,41285,41437,41691,41745,46169,46175]},{"a":643,"l":"enemy_rate_x","c":"Enemies, three slots: the amount taken from enemy_acc per step when Y is the major axis, X moving on a borrow.","t":"byte","b":[0,160,0],"x":[40973,41116,41280,41442,41716,46154,46190]},{"a":646,"l":"enemy_acc","c":"Enemies, three slots: line-drawing accumulator for the minor axis.","t":"byte","b":[14,14,4],"x":[41712,41719,41727,41741,41748,41756,46160,46181]},{"a":649,"l":"enemy_acc_add","c":"Enemies, three slots: added back to enemy_acc on a borrow (the larger distance, $B453).","t":"byte","b":[10,0,4],"x":[41724,41753,46163,46184]},{"a":652,"l":"enemy_last_dy","c":"Enemies, three slots: Y direction to resume after an obstacle ($A105, $A1B6).","t":"byte","b":[10,0,0],"x":[40983,41221,41254,41398,41429,41467,41498]},{"a":655,"l":"enemy_last_dx","c":"Enemies, three slots: X direction to resume after an obstacle ($A027, $A0B1).","t":"byte","b":[72,235,0],"x":[40999,41137,41202,41267,41302,41316,41335,41385,41401,41415,41470,41484]},{"a":658,"l":"enemy_anim_delay","c":"Enemies, three slots: frames per animation frame ($A3F0 by round AND 3 at $9FC3, 1 for the explosion $9F02, 2 for Doh's shots $986F).","t":"byte","b":[0,0,0],"x":[39023,40706,40899,41796]},{"a":661,"l":"ball_dy","c":"Balls, three slots (objects 4-6, Y at $9431, X at $9449): Y step, $FF up, +1 down.","t":"byte","b":[0,0,0],"x":[39597,40496,40546,40594,43235,43251,44113,44121,44586,44657,44827,44835,44861,44869,45883,45965,46010,46018,62083]},{"a":664,"l":"ball_dx","c":"Balls, three slots: X step, $FF left, +1 right.","t":"byte","b":[0,0,0],"x":[39602,40598,40647,40695,43257,44100,44110,44347,44357,44610,44635,44715,44723,44749,44757,45919,45930,45983,46049,46057,62088]},{"a":667,"l":"ball_rate_y","c":"Balls, three slots: $FF when Y moves every step; otherwise taken from ball_acc each step, Y moving on a borrow. With ball_rate_x it is the angle: ($FF,$40) steep, ($FF,$F0) about 45 degrees, ($80,$FF) shallow, chosen by where the ball meets the Vaus ($AC1A-$AC41).","t":"byte","b":[0,0,0],"x":[39619,43279,44060,44079,44092,44313,44326,44339,44907,44916,44932,45876,45951,62093]},{"a":670,"l":"ball_rate_x","c":"Balls, three slots: $FF when X moves every step; otherwise taken from ball_acc each step, X moving on a borrow.","t":"byte","b":[0,0,0],"x":[39624,43285,44065,44084,44097,44318,44331,44344,44921,44944,44955,45905,62098]},{"a":673,"l":"ball_acc","c":"Balls, three slots: line-drawing accumulator; cleared at each Vaus or brick hit ($AC68, $B159).","t":"byte","b":[0,0,0],"x":[44136,45401,45901,45908,45916,45947,45954,45962,46046]},{"a":676,"l":"ball_acc_add","c":"Balls, three slots: added to ball_acc on a borrow ($B359, $B387); no instruction writes it, so it stays 0 and the accumulator simply wraps.","t":"byte","b":[0,0,1],"x":[45913,45959]},{"a":679,"l":"ball_active","c":"Balls, three slots: 1 in play, 0 lost ($B3B0); one at each life ($9AB5), three after the disruption ($A8FE). No ball left ends the life ($9AF0).","t":"byte","b":[0,0,0],"x":[39605,39664,40469,43215,43262,43652,43962,44497,44545,45554,46000,62103]},{"a":682,"l":"ball_cooldown","c":"Balls, three slots: frames (5 after the Vaus, 2 after the top wall) before the ball may bounce off the Vaus again ($AC6D, $B3D0, $ACCC).","t":"byte","b":[0,0,0],"x":[40786,43245,43756,44026,44141,44231,44236,46032]},{"a":685,"l":"ball_loop_count","c":"Balls, three slots: bounces off walls and unbreakable bricks since a brick last broke ($AEB6, $B3EC; cleared $B265); at 50 the angle is changed ($AF6B) to break a loop.","t":"byte","b":[0,0,0],"x":[44726,44729,44760,44763,44838,44841,44872,44875,44926,44949,44960,45669,46060,46063]},{"a":688,"l":"ending_chars","c":"Ending: the 60 character codes of a 6-by-10 block of the screen (rows from $C0D3, $C0FB ... $C23B), saved by $970B; their glyphs are then eaten away pixel by pixel with dissolve_masks ($9754). This label: row 1.","t":"byte","b":[0,0,0,0,0,0],"x":[38672,38748]},{"a":694,"l":"f_02B6","c":"ending_chars row 2, from $C0FB.","t":"byte","b":[0,0,0,0,0,0],"x":[38678]},{"a":700,"l":"f_02BC","c":"ending_chars row 3, from $C123.","t":"byte","b":[0,0,0,0,0,0],"x":[38684]},{"a":706,"l":"f_02C2","c":"ending_chars row 4, from $C14B.","t":"byte","b":[0,0,0,0,0,0],"x":[38690]},{"a":712,"l":"f_02C8","c":"ending_chars row 5, from $C173.","t":"byte","b":[0,0,0,0,0,0],"x":[38696]},{"a":718,"l":"f_02CE","c":"ending_chars row 6, from $C19B.","t":"byte","b":[0,0,0,0,0,0],"x":[38702]},{"a":724,"l":"f_02D4","c":"ending_chars row 7, from $C1C3.","t":"byte","b":[0,0,0,0,0,0],"x":[38708]},{"a":730,"l":"f_02DA","c":"ending_chars row 8, from $C1EB.","t":"byte","b":[0,0,0,0,0,0],"x":[38714]},{"a":736,"l":"f_02E0","c":"ending_chars row 9, from $C213.","t":"byte","b":[0,0,0,0,0,0],"x":[38720]},{"a":742,"l":"f_02E6","c":"ending_chars row 10, from $C23B.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[38726]},{"a":750,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":758,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":766,"t":"byte","b":[0,0]},{"a":768,"l":"metal_state","c":"Silver and gold bricks of the round, slots 1-84 ($0301-$0354, slot n at $0300+n; counted by metal_count): $80 while the brick shines after a hit (or at the round's start), 1 at rest, 0 destroyed. The shine ($AB55) steps its two characters every fourth frame. Cleared with $0200 at each life ($9A7C).","t":"byte","b":[139,227,131,164,124,165,26,167],"x":[39548,43357,43364,43885,43934,45087,45126,45186,45235,45286,62705]},{"a":776,"t":"byte","b":[228,167,134,174,0,0,0,0]},{"a":784,"t":"byte","b":[76,72,178,0,49,234,102,254]},{"a":792,"t":"byte","b":[71,254,74,243,145,242,14,242]},{"a":800,"t":"byte","b":[80,242,51,243,87,241,202,241]},{"a":808,"t":"byte","b":[237,246,62,241,47,243,102,254]},{"a":816,"t":"byte","b":[213,65,237,245,0,0,0,0]},{"a":824,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":832,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":840,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":848,"t":"byte","b":[0,0,0,0,0]},{"a":853,"l":"metal_hits","c":"Silver and gold bricks, slots 1-84: hits left before a silver brick breaks ($F52A by round + 1: 2 for rounds 1-8 up to 5 for rounds 25-32), $80 for gold, which never breaks ($F4EC).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[43367,43372,43937,43942,45214,62700]},{"a":861,"t":"byte","b":[0,0,0,0,0,0,120,169]},{"a":869,"t":"byte","b":[55,133,1,169,241,141,39,3]},{"a":877,"t":"byte","b":[169,202,141,38,3,169,0,133]},{"a":885,"t":"byte","b":[157,88,169,1,162,8,160,255]},{"a":893,"t":"byte","b":[32,186,255,169,1,162,149,160]},{"a":901,"t":"byte","b":[3,32,189,255,160,4,162,0]},{"a":909,"t":"byte","b":[169,0,32,213,255,76,0,64]},{"a":917,"t":"byte","b":[70,0,0,0,0,0,0,0]},{"a":925,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":933,"t":"byte","b":[0,0,0,0]},{"a":937,"c":"Not a variable: operand of BIT $03A9 at $2833, a skip over LDA #$03.","t":"byte","b":[0]},{"a":938,"l":"metal_pos","c":"Silver and gold bricks, slots 1-84: screen address of the brick's left cell, two bytes per slot (slot n at $03AA + 2n, low byte first), matched against the brick hit ($B08D-$B099).","t":"byte","b":[0],"x":[43378,43895,45106,45206,62721]},{"a":939,"l":"metal_pos_hi","c":"High bytes of metal_pos, addressed one up ($AB7C, $B08F, $F508).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[43383,43900,45099,45199,62728]},{"a":947,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":955,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":963,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":971,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":979,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":987,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":995,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1003,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1011,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1019,"t":"byte","b":[0,0,0,0,0]},{"a":1024,"t":"gap","n":85},{"a":1109,"l":"bricks_left","c":"Bricks still to break in the round (gold not counted), counted while the wall is drawn ($F45D, $F4D5), -1 per brick ($B16D); 0 ends the round ($95BD). In round 33 Doh's hits left: 22 at the start ($95F6), the round ends when it passes 0 ($9634). Saved per player in bricks_saved.","t":"byte","b":[0],"x":[38261,38333,38390,38422,38452,39907,39992,45342,45421,45567,62339,62420,62557,62677]},{"a":1110,"l":"metal_count","c":"Number of silver and gold bricks in the round (slots in metal_state), counted by the wall builder ($F4F4).","t":"byte","b":[0],"x":[43352,43880,45084,45183,45834,62336,62423,62669,62690,62708]},{"a":1111,"l":"bg_colour","c":"Colour RAM value of the round's background pattern ($F54A by round AND 3, $F59B), put back where a brick is removed ($B191).","t":"byte","b":[0],"x":[45457,45494,45516,45536,62875,62920]},{"a":1112,"l":"bg_char_base","c":"First character of the round's background pattern ($F54E by round AND 3, $F5A1); a cell's character is this + (row AND 3) x 4 + (column AND 3), +$10 under a brick's shadow ($B2DF). Also the base the wall buffers are copied from at the game's start ($F210, Y 1-160).","t":"byte","b":[0],"x":[45791,61968,62881,62912]},{"a":1113,"l":"wall_buffer_p1","c":"Player 1's saved wall, 160 bytes ($0459-$04F8) in the layout of a round record (16 rows x 10 bytes: two bytes of brick bits, eight of colour codes): written by save_wall_of_player when the turn passes, read back by the wall builder ($F371). Filled from $8000 (round 1) at the game's start ($F20D).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1121,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1129,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1137,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1145,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1153,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1161,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1169,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1177,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1185,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1193,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1201,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1209,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1217,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1225,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1233,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1241,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1249,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1257,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1265,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":1272,"l":"f_04F8","c":"Last byte of wall_buffer_p1, addressed as the base of the copy into wall_buffer_p2 ($F213, Y 1-160).","t":"byte","b":[0],"x":[61971]},{"a":1273,"l":"wall_buffer_p2","c":"Player 2's saved wall, 160 bytes ($04F9-$0598), as wall_buffer_p1.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1281,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1289,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1297,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1305,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1313,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1321,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1329,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1337,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1345,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1353,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1361,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1369,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1377,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1385,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1393,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1401,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1409,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1417,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1425,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1433,"t":"gap","n":103},{"a":1536,"l":"save_wall_of_player","c":"Save the current player's wall from the screen into that player's 160-byte wall buffer (pointer from wall_buffer_lo/hi indexed by current_player), so it can be rebuilt when that player's turn comes back. Called from $9B67 when a life is lost. For each of the 16 brick rows (row_counter 1..16, screen row address from the table at $F78B, colour RAM at the same offset in $D800): bytes 0-1 of the row record get one bit per brick (13 bricks, every second screen column from column 1, bit set when the character is $80 or above, i.e. a brick, shifted to bits 15..3); bytes 2-9 get one colour nibble per brick (colour RAM & 7, or for colour 9 cells 1 / 9 / $0A by character: below $82, $82-$85 silver, $86 and above gold), built in row_nibbles ($0264). Same record layout as the round layouts at $8000 that rebuild_wall ($F371/$F3C2) reads. Uses $0D/$0E (screen), $0F/$10 (colour RAM), $11/$12 (buffer), $0211/$0212 (bit accumulator).","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[39783]},{"a":1538,"t":"code","b":[141,30,2],"m":"sta","oa":542,"o":"row_counter"},{"a":1541,"t":"code","b":[172,56,9],"m":"ldy","oa":2360,"o":"current_player"},{"a":1544,"t":"code","b":[185,205,6],"m":"lda","oa":1741,"o":"wall_buffer_lo,y"},{"a":1547,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":1549,"t":"code","b":[185,207,6],"m":"lda","oa":1743,"o":"wall_buffer_hi,y"},{"a":1552,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":1554,"l":"save_wall_row","c":"One brick row: clear the 16-bit presence accumulator $0211/$0212, then take the screen row's address from $F78B + 2*row_counter, plus 1 (column 1 holds the left half of brick 0).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[1737]},{"a":1556,"t":"code","b":[141,17,2],"m":"sta","oa":529,"o":"bits_lo"},{"a":1559,"t":"code","b":[141,18,2],"m":"sta","oa":530,"o":"bits_hi"},{"a":1562,"t":"code","b":[173,30,2],"m":"lda","oa":542,"o":"row_counter"},{"a":1565,"t":"code","b":[10],"m":"asl","o":"a"},{"a":1566,"t":"code","b":[170],"m":"tax"},{"a":1567,"t":"code","b":[189,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,x"},{"a":1570,"t":"code","b":[24],"m":"clc"},{"a":1571,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":1573,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":1575,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":1577,"t":"code","b":[189,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,x"},{"a":1580,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":1582,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":1584,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":1586,"t":"code","b":[24],"m":"clc"},{"a":1587,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":1589,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":1591,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":1593,"l":"b_0639","t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y","x":[1611]},{"a":1595,"t":"code","b":[16,2],"m":"bpl","oa":1599,"o":"b_063F"},{"a":1597,"t":"code","b":[56],"m":"sec"},{"a":1598,"s":"BIT $EA18 skips the CLC: carry = 1 when the character is a brick ($80+), 0 otherwise","t":"code","b":[44,24,234],"m":"bit","oa":59928,"o":"a_EA18"},{"a":1601,"t":"code","b":[46,17,2],"m":"rol","oa":529,"o":"bits_lo"},{"a":1604,"t":"code","b":[46,18,2],"m":"rol","oa":530,"o":"bits_hi"},{"a":1607,"t":"code","b":[200],"m":"iny"},{"a":1608,"t":"code","b":[200],"m":"iny"},{"a":1609,"t":"code","b":[192,26],"m":"cpy","o":"#$1A"},{"a":1611,"t":"code","b":[144,236],"m":"bcc","oa":1593,"o":"b_0639"},{"a":1613,"t":"code","b":[14,17,2],"m":"asl","oa":529,"o":"bits_lo"},{"a":1616,"t":"code","b":[46,18,2],"m":"rol","oa":530,"o":"bits_hi"},{"a":1619,"t":"code","b":[14,17,2],"m":"asl","oa":529,"o":"bits_lo"},{"a":1622,"t":"code","b":[46,18,2],"m":"rol","oa":530,"o":"bits_hi"},{"a":1625,"t":"code","b":[14,17,2],"m":"asl","oa":529,"o":"bits_lo"},{"a":1628,"t":"code","b":[46,18,2],"m":"rol","oa":530,"o":"bits_hi"},{"a":1631,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":1633,"t":"code","b":[173,18,2],"m":"lda","oa":530,"o":"bits_hi"},{"a":1636,"t":"code","b":[145,17],"m":"sta","oa":17,"o":"(src_ptr),y"},{"a":1638,"t":"code","b":[200],"m":"iny"},{"a":1639,"t":"code","b":[173,17,2],"m":"lda","oa":529,"o":"bits_lo"},{"a":1642,"t":"code","b":[145,17],"m":"sta","oa":17,"o":"(src_ptr),y"},{"a":1644,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":1646,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":1648,"l":"save_wall_colours","c":"Colour nibbles of the row's 13 bricks into row_nibbles, then packed two to a byte into record bytes 2..9; after the row the record pointer $11/$12 moves on 10 bytes and row_counter counts to 16.","t":"code","b":[177,15],"m":"lda","oa":15,"o":"(col_ptr),y","x":[1689]},{"a":1650,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":1652,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":1654,"t":"code","b":[240,5],"m":"beq","oa":1661,"o":"b_067D"},{"a":1656,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":1658,"t":"code","b":[76,145,6],"m":"jmp","oa":1681,"o":"j_0691"},{"a":1661,"l":"b_067D","t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y","x":[1654]},{"a":1663,"t":"code","b":[201,130],"m":"cmp","o":"#$82"},{"a":1665,"t":"code","b":[176,5],"m":"bcs","oa":1672,"o":"b_0688"},{"a":1667,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":1669,"t":"code","b":[76,145,6],"m":"jmp","oa":1681,"o":"j_0691"},{"a":1672,"l":"b_0688","t":"code","b":[201,134],"m":"cmp","o":"#$86","x":[1665]},{"a":1674,"t":"code","b":[176,3],"m":"bcs","oa":1679,"o":"b_068F"},{"a":1676,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":1678,"s":"BIT $0AA9 is a skip: the bytes $A9 $0A are LDA #$0A, reached by the BCS at $068A for gold bricks (character $86 or above); $0AA9 itself is never meant to be read","t":"code","b":[44,169,10],"m":"bit","oa":2729,"o":"a_0AA9"},{"a":1681,"l":"j_0691","t":"code","b":[157,100,2],"m":"sta","oa":612,"o":"row_nibbles,x","x":[1658,1669]},{"a":1684,"t":"code","b":[232],"m":"inx"},{"a":1685,"t":"code","b":[200],"m":"iny"},{"a":1686,"t":"code","b":[200],"m":"iny"},{"a":1687,"t":"code","b":[224,13],"m":"cpx","o":"#$0D"},{"a":1689,"t":"code","b":[144,213],"m":"bcc","oa":1648,"o":"save_wall_colours"},{"a":1691,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":1693,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":1695,"l":"b_069F","t":"code","b":[189,100,2],"m":"lda","oa":612,"o":"row_nibbles,x","x":[1712]},{"a":1698,"t":"code","b":[232],"m":"inx"},{"a":1699,"t":"code","b":[10],"m":"asl","o":"a"},{"a":1700,"t":"code","b":[10],"m":"asl","o":"a"},{"a":1701,"t":"code","b":[10],"m":"asl","o":"a"},{"a":1702,"t":"code","b":[10],"m":"asl","o":"a"},{"a":1703,"t":"code","b":[29,100,2],"m":"ora","oa":612,"o":"row_nibbles,x"},{"a":1706,"t":"code","b":[232],"m":"inx"},{"a":1707,"t":"code","b":[145,17],"m":"sta","oa":17,"o":"(src_ptr),y"},{"a":1709,"t":"code","b":[200],"m":"iny"},{"a":1710,"t":"code","b":[192,10],"m":"cpy","o":"#$0A"},{"a":1712,"t":"code","b":[144,237],"m":"bcc","oa":1695,"o":"b_069F"},{"a":1714,"t":"code","b":[165,17],"m":"lda","oa":17,"o":"src_ptr"},{"a":1716,"t":"code","b":[24],"m":"clc"},{"a":1717,"t":"code","b":[105,10],"m":"adc","o":"#$0A"},{"a":1719,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":1721,"t":"code","b":[165,18],"m":"lda","oa":18,"o":"src_ptr_hi"},{"a":1723,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":1725,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":1727,"t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter"},{"a":1730,"t":"code","b":[173,30,2],"m":"lda","oa":542,"o":"row_counter"},{"a":1733,"t":"code","b":[201,17],"m":"cmp","o":"#$11"},{"a":1735,"t":"code","b":[176,3],"m":"bcs","oa":1740,"o":"r_06CC"},{"a":1737,"t":"code","b":[76,18,6],"m":"jmp","oa":1554,"o":"save_wall_row"},{"a":1740,"l":"r_06CC","t":"code","b":[96],"m":"rts","x":[1735]},{"a":1741,"l":"wall_buffer_lo","c":"Split pointer table, two entries: low bytes $59 $F9, high bytes (at $06CF) $04 $04. Entry n is player n's saved-wall buffer: player 1 at $0459, player 2 at $04F9. Read by save_wall_of_player ($0608, $060D) and the wall rebuild at $F374/$F379.","t":"byte","b":[89,249],"x":[1544,62324]},{"a":1743,"l":"wall_buffer_hi","c":"High bytes of the two saved-wall buffer pointers ($04, $04); low bytes at wall_buffer_lo.","t":"byte","b":[4,4],"x":[1549,62329]},{"a":1745,"l":"intro_escape_animation","c":"The sprite animation played over the title picture before round 1 (called once per game from $F03F, after the menu and the story; the screen is the bank-1 bitmap, so intro_sprite_setup first points the sprite multiplexer at $63F8). It drives the three enemy slots (objects 8-10: Y at $9435, X at $944D, enemy_state $0274) with the enemy mover ($A2DB), each steered by $B3FA toward object 0 (Y $942D, X $9445), used as an invisible target: object 10, an attacking craft, flies a 25-point path (intro_attacker_path), shape $B4 + step; at step 12 object 9, a shot (shape $CD), leaves it toward the ship at X $87, Y $A0; when the shot's X falls below $A0, intro_show_patch puts two black sprites there and object 8, the Vaus (shapes $A2-$B3), flies off from X $87, Y $A0 toward X $60, Y $50. Ends when the path is done and the Vaus has run through its frames: intro_path_done then drops this routine's return address and returns to $F042. The story reading of the shapes (bank-1 sprites at $6880-$7540) was judged by eye from renders, not watched live.","t":"code","b":[32,204,8],"m":"jsr","oa":2252,"o":"intro_sprite_setup","x":[61503]},{"a":1748,"t":"code","b":[32,176,185],"m":"jsr","oa":47536,"o":"screen_on_after_tick"},{"a":1751,"l":"intro_frame_loop","c":"Once a frame (wait_frame at $B472): step the attacker's path, launch or land the shot, move the three objects, animate the escaping Vaus. Leaves only through the PLA/PLA/RTS at $0778.","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[1766]},{"a":1754,"t":"code","b":[32,123,7],"m":"jsr","oa":1915,"o":"intro_attacker_path"},{"a":1757,"t":"code","b":[32,234,6],"m":"jsr","oa":1770,"o":"intro_shot"},{"a":1760,"t":"code","b":[32,124,8],"m":"jsr","oa":2172,"o":"intro_move_slots"},{"a":1763,"t":"code","b":[32,161,8],"m":"jsr","oa":2209,"o":"intro_vaus_frames"},{"a":1766,"t":"code","b":[76,215,6],"m":"jmp","oa":1751,"o":"intro_frame_loop"},{"a":1769,"l":"r_06E9","t":"code","b":[96],"m":"rts","x":[1775,1836]},{"a":1770,"l":"intro_shot","c":"The shot. Nothing before path step 12. At step 12, if slot 1 is idle: put the steering target (object 0) on the ship at Y $A0, X $87; start slot 1 (object 9: 2 extra steps a frame, shape $CD) 6 pixels left of and 6 below the attacker (X $944F - 6, Y $9437 + 6) and aim it ($B3FA). After step 12, once the shot's X is below $A0: stop it, show the patch (intro_show_patch) and launch the Vaus, slot 0 (object 8), from X $87, Y $A0 toward X $60, Y $50, no extra steps, first shape $A2.","t":"code","b":[172,51,2],"m":"ldy","oa":563,"o":"intro_step","x":[1757]},{"a":1773,"t":"code","b":[192,12],"m":"cpy","o":"#$0C"},{"a":1775,"t":"code","b":[144,248],"m":"bcc","oa":1769,"o":"r_06E9"},{"a":1777,"t":"code","b":[208,54],"m":"bne","oa":1833,"o":"b_0729"},{"a":1779,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":1781,"t":"code","b":[189,116,2],"m":"lda","oa":628,"o":"enemy_state,x"},{"a":1784,"t":"code","b":[208,47],"m":"bne","oa":1833,"o":"b_0729"},{"a":1786,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":1788,"t":"code","b":[141,45,148],"m":"sta","oa":37933,"o":"obj_y"},{"a":1791,"t":"code","b":[169,135],"m":"lda","o":"#$87"},{"a":1793,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":1796,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":1798,"t":"code","b":[157,116,2],"m":"sta","oa":628,"o":"enemy_state,x"},{"a":1801,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":1803,"t":"code","b":[157,97,2],"m":"sta","oa":609,"o":"intro_speed,x"},{"a":1806,"t":"code","b":[169,205],"m":"lda","o":"#$CD"},{"a":1808,"t":"code","b":[157,45,248],"m":"sta","oa":63533,"o":"slot_shape_8,x"},{"a":1811,"t":"code","b":[173,79,148],"m":"lda","oa":37967,"o":"enemy3_x"},{"a":1814,"t":"code","b":[56],"m":"sec"},{"a":1815,"t":"code","b":[233,6],"m":"sbc","o":"#$06"},{"a":1817,"t":"code","b":[141,78,148],"m":"sta","oa":37966,"o":"enemy2_x"},{"a":1820,"t":"code","b":[173,55,148],"m":"lda","oa":37943,"o":"enemy3_y"},{"a":1823,"t":"code","b":[24],"m":"clc"},{"a":1824,"t":"code","b":[105,6],"m":"adc","o":"#$06"},{"a":1826,"t":"code","b":[141,54,148],"m":"sta","oa":37942,"o":"enemy2_y"},{"a":1829,"t":"code","b":[32,250,179],"m":"jsr","oa":46074,"o":"aim_at_vaus"},{"a":1832,"t":"code","b":[96],"m":"rts"},{"a":1833,"l":"b_0729","t":"code","b":[173,117,2],"m":"lda","oa":629,"o":"intro_shot_state","x":[1777,1784]},{"a":1836,"t":"code","b":[240,187],"m":"beq","oa":1769,"o":"r_06E9"},{"a":1838,"t":"code","b":[173,78,148],"m":"lda","oa":37966,"o":"enemy2_x"},{"a":1841,"t":"code","b":[201,160],"m":"cmp","o":"#$A0"},{"a":1843,"t":"code","b":[176,51],"m":"bcs","oa":1896,"o":"r_0768"},{"a":1845,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":1847,"t":"code","b":[141,117,2],"m":"sta","oa":629,"o":"intro_shot_state"},{"a":1850,"t":"code","b":[141,54,148],"m":"sta","oa":37942,"o":"enemy2_y"},{"a":1853,"t":"code","b":[32,11,9],"m":"jsr","oa":2315,"o":"intro_show_patch"},{"a":1856,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":1858,"t":"code","b":[141,116,2],"m":"sta","oa":628,"o":"enemy_state"},{"a":1861,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":1863,"t":"code","b":[141,97,2],"m":"sta","oa":609,"o":"intro_speed"},{"a":1866,"t":"code","b":[169,162],"m":"lda","o":"#$A2"},{"a":1868,"t":"code","b":[141,45,248],"m":"sta","oa":63533,"o":"slot_shape_8"},{"a":1871,"t":"code","b":[169,135],"m":"lda","o":"#$87"},{"a":1873,"t":"code","b":[141,77,148],"m":"sta","oa":37965,"o":"enemy_x"},{"a":1876,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":1878,"t":"code","b":[141,53,148],"m":"sta","oa":37941,"o":"enemy_y"},{"a":1881,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":1883,"t":"code","b":[141,45,148],"m":"sta","oa":37933,"o":"obj_y"},{"a":1886,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":1888,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":1891,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":1893,"t":"code","b":[32,250,179],"m":"jsr","oa":46074,"o":"aim_at_vaus"},{"a":1896,"l":"r_0768","t":"code","b":[96],"m":"rts","x":[1843,1910]},{"a":1897,"l":"intro_path_done","c":"Path finished: clear intro_attacker_state ($0276), give object 10 the empty shape $D5; return while the Vaus (slot 0) is still flying, otherwise drop the caller's return address so that the RTS leaves intro_escape_animation.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[1936]},{"a":1899,"t":"code","b":[141,118,2],"m":"sta","oa":630,"o":"intro_attacker_state"},{"a":1902,"t":"code","b":[169,213],"m":"lda","o":"#$D5"},{"a":1904,"t":"code","b":[141,47,248],"m":"sta","oa":63535,"o":"slot_shape_10"},{"a":1907,"t":"code","b":[173,116,2],"m":"lda","oa":628,"o":"enemy_state"},{"a":1910,"t":"code","b":[208,240],"m":"bne","oa":1896,"o":"r_0768"},{"a":1912,"t":"code","b":[104],"m":"pla"},{"a":1913,"t":"code","b":[104],"m":"pla"},{"a":1914,"t":"code","b":[96],"m":"rts"},{"a":1915,"l":"intro_attacker_path","c":"The attacker's path, one waypoint per call when reached. intro_step 0: intro_path_start. Later steps: when the attacker's Y ($9437) equals intro_path_y[step], move to the next step: the target (object 0) goes to X intro_path_x[step], Y intro_path_y[step], the attacker's extra steps per frame to intro_path_speed[step], its shape to $B4 + step, and it is re-aimed ($B3FA). At step 25 (intro_path_done) it hides the attacker and, once the Vaus has finished, leaves intro_escape_animation.","t":"code","b":[172,51,2],"m":"ldy","oa":563,"o":"intro_step","x":[1754]},{"a":1918,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":1920,"t":"code","b":[192,0],"m":"cpy","o":"#$00"},{"a":1922,"t":"code","b":[240,46],"m":"beq","oa":1970,"o":"intro_path_start"},{"a":1924,"t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x"},{"a":1927,"t":"code","b":[217,249,7],"m":"cmp","oa":2041,"o":"intro_path_y,y"},{"a":1930,"t":"code","b":[240,1],"m":"beq","oa":1933,"o":"b_078D"},{"a":1932,"t":"code","b":[96],"m":"rts"},{"a":1933,"l":"b_078D","t":"code","b":[200],"m":"iny","x":[1930]},{"a":1934,"t":"code","b":[192,25],"m":"cpy","o":"#$19"},{"a":1936,"t":"code","b":[240,215],"m":"beq","oa":1897,"o":"intro_path_done"},{"a":1938,"t":"code","b":[185,220,7],"m":"lda","oa":2012,"o":"intro_path_x,y"},{"a":1941,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":1944,"t":"code","b":[185,249,7],"m":"lda","oa":2041,"o":"intro_path_y,y"},{"a":1947,"t":"code","b":[140,51,2],"m":"sty","oa":563,"o":"intro_step"},{"a":1950,"t":"code","b":[141,45,148],"m":"sta","oa":37933,"o":"obj_y"},{"a":1953,"t":"code","b":[185,22,8],"m":"lda","oa":2070,"o":"intro_path_speed,y"},{"a":1956,"t":"code","b":[157,97,2],"m":"sta","oa":609,"o":"intro_speed,x"},{"a":1959,"t":"code","b":[152],"m":"tya"},{"a":1960,"t":"code","b":[24],"m":"clc"},{"a":1961,"t":"code","b":[105,180],"m":"adc","o":"#$B4"},{"a":1963,"t":"code","b":[157,45,248],"m":"sta","oa":63533,"o":"slot_shape_8,x"},{"a":1966,"t":"code","b":[32,250,179],"m":"jsr","oa":46074,"o":"aim_at_vaus"},{"a":1969,"t":"code","b":[96],"m":"rts"},{"a":1970,"l":"intro_path_start","c":"Step 0 of the path: attacker (object 10) at X $F0, Y $40, active; object 8's shape set to $B4 (overwritten when the Vaus launches); the target, object 0, given the empty shape $D5 and put at X $87, Y $A0; aim the attacker and step to 1.","t":"code","b":[169,240],"m":"lda","o":"#$F0","x":[1922]},{"a":1972,"t":"code","b":[157,77,148],"m":"sta","oa":37965,"o":"enemy_x,x"},{"a":1975,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":1977,"t":"code","b":[157,53,148],"m":"sta","oa":37941,"o":"enemy_y,x"},{"a":1980,"t":"code","b":[169,180],"m":"lda","o":"#$B4"},{"a":1982,"t":"code","b":[141,45,248],"m":"sta","oa":63533,"o":"slot_shape_8"},{"a":1985,"t":"code","b":[169,213],"m":"lda","o":"#$D5"},{"a":1987,"t":"code","b":[141,37,248],"m":"sta","oa":63525,"o":"slot_shapes"},{"a":1990,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":1992,"t":"code","b":[157,116,2],"m":"sta","oa":628,"o":"enemy_state,x"},{"a":1995,"t":"code","b":[169,135],"m":"lda","o":"#$87"},{"a":1997,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":2000,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":2002,"t":"code","b":[141,45,148],"m":"sta","oa":37933,"o":"obj_y"},{"a":2005,"t":"code","b":[32,250,179],"m":"jsr","oa":46074,"o":"aim_at_vaus"},{"a":2008,"t":"code","b":[238,51,2],"m":"inc","oa":563,"o":"intro_step"},{"a":2011,"t":"code","b":[96],"m":"rts"},{"a":2012,"l":"intro_path_x","c":"Intro path, X of each waypoint (stored into the target's X, $9445), indexed by intro_step 1-24 (29 bytes; entries 0 and 25-28 are not read): $FA at step 1, falling to $6F, right to left across the picture.","t":"byte","b":[248,250,252,254,254,248,244,240],"x":[1938]},{"a":2020,"t":"byte","b":[238,224,220,208,200,176,144,124]},{"a":2028,"t":"byte","b":[123,122,121,120,119,118,117,116]},{"a":2036,"t":"byte","b":[115,114,113,112,111]},{"a":2041,"l":"intro_path_y","c":"Intro path, Y of each waypoint (the target's Y, $942D), indexed by intro_step 0-24 (29 bytes, entries 25-28 not read): $42 at step 1 down the screen to $7E at steps 13-14, then back up to $6B. The step advances when the attacker's Y equals this value exactly; the movement steps one pixel at a time on its major axis, which makes an exact hit likely but is not proved for every waypoint.","t":"byte","b":[64,66,68,70,84,90,95],"x":[1927,1944]},{"a":2048,"l":"intro_path_y_tail","c":"The last 22 Y positions of the intro animation path intro_path_y ($07F9), split here only because a data span stops at $0800; read through intro_path_y,X by the intro at $06D1.","t":"byte","b":[100,102,112,116,120,122,126,126]},{"a":2056,"t":"byte","b":[120,119,118,117,116,115,114,113]},{"a":2064,"t":"byte","b":[112,111,110,109,108,107]},{"a":2070,"l":"intro_path_speed","c":"Intro path, the attacker's extra steps per frame for each waypoint (into intro_speed+2, $0263), indexed by intro_step 1-24: 0 for steps 1-12, 2 for 13-15, 1 for 16-17, 0 after (28 bytes to $0831).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[1953]},{"a":2078,"t":"byte","b":[0,0,0,0,0,2,2,2]},{"a":2086,"t":"byte","b":[1,1,0,0,0,0,0,0]},{"a":2094,"t":"byte","b":[0,0,0,0]},{"a":2098,"l":"key_held","c":"Test one key of the keyboard matrix. In: A = key number, 8 x row + column (the KERNAL's numbering: row selects the $DC00 bit through key_row_select, column the $DC01 bit through key_col_mask). Out: carry set when that key is down. A column bit that also reads low with no row selected is a joystick in port 1 (or another key line held), not the key, and returns carry clear. Leaves $DC00 = $7F and $DC01 = $FF; Y preserved through key_y_save ($0213). Callers: the menu ($B5A1, keys N J K P 1 2 D), the keyboard control ($FD82 left SHIFT $0F, $FD8E right SHIFT $34).","t":"code","b":[140,19,2],"m":"sty","oa":531,"o":"key_y_save","x":[46497,64898,64910]},{"a":2101,"t":"code","b":[72],"m":"pha"},{"a":2102,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2103,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2104,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2105,"t":"code","b":[168],"m":"tay"},{"a":2106,"t":"code","b":[185,108,8],"m":"lda","oa":2156,"o":"key_row_select,y"},{"a":2109,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":2112,"t":"code","b":[104],"m":"pla"},{"a":2113,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":2115,"t":"code","b":[168],"m":"tay"},{"a":2116,"t":"code","b":[173,1,220],"m":"lda","o":"cia1_port_b"},{"a":2119,"t":"code","b":[57,116,8],"m":"and","oa":2164,"o":"key_col_mask,y"},{"a":2122,"t":"code","b":[208,17],"m":"bne","oa":2141,"o":"b_085D"},{"a":2124,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":2126,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":2129,"t":"code","b":[173,1,220],"m":"lda","o":"cia1_port_b"},{"a":2132,"t":"code","b":[57,116,8],"m":"and","oa":2164,"o":"key_col_mask,y"},{"a":2135,"t":"code","b":[240,4],"m":"beq","oa":2141,"o":"b_085D"},{"a":2137,"t":"code","b":[56],"m":"sec"},{"a":2138,"t":"code","b":[76,94,8],"m":"jmp","oa":2142,"o":"j_085E"},{"a":2141,"l":"b_085D","t":"code","b":[24],"m":"clc","x":[2122,2135]},{"a":2142,"l":"j_085E","t":"code","b":[172,19,2],"m":"ldy","oa":531,"o":"key_y_save","x":[2138]},{"a":2145,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":2147,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":2150,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":2152,"t":"code","b":[141,1,220],"m":"sta","o":"cia1_port_b"},{"a":2155,"t":"code","b":[96],"m":"rts"},{"a":2156,"l":"key_row_select","c":"Eight $DC00 values, one keyboard row driven low each: $FE $FD $FB $F7 $EF $DF $BF $7F, indexed by key number / 8.","t":"byte","b":[254,253,251,247,239,223,191,127],"x":[2106]},{"a":2164,"l":"key_col_mask","c":"Eight $DC01 bit masks, $01 to $80, indexed by key number AND 7.","t":"byte","b":[1,2,4,8,16,32,64,128],"x":[2119,2132]},{"a":2172,"l":"intro_move_slots","c":"Move the intro's three objects, slot 2 down to 0: each active slot (enemy_state) takes 1 + intro_speed Bresenham steps through the enemy mover $A2DB. Slot 0, the Vaus, moves only on frames where bit 1 of frame_counter has changed since last time (kept in gate_timer, $0243, here a tick), i.e. every second frame.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[1760]},{"a":2174,"l":"b_087E","t":"code","b":[189,116,2],"m":"lda","oa":628,"o":"enemy_state,x","x":[2206]},{"a":2177,"t":"code","b":[240,26],"m":"beq","oa":2205,"o":"b_089D"},{"a":2179,"t":"code","b":[188,97,2],"m":"ldy","oa":609,"o":"intro_speed,x"},{"a":2182,"t":"code","b":[224,0],"m":"cpx","o":"#$00"},{"a":2184,"t":"code","b":[208,13],"m":"bne","oa":2199,"o":"b_0897"},{"a":2186,"t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter"},{"a":2189,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":2191,"t":"code","b":[205,67,2],"m":"cmp","oa":579,"o":"gate_timer"},{"a":2194,"t":"code","b":[240,9],"m":"beq","oa":2205,"o":"b_089D"},{"a":2196,"t":"code","b":[141,67,2],"m":"sta","oa":579,"o":"gate_timer"},{"a":2199,"l":"b_0897","t":"code","b":[32,219,162],"m":"jsr","oa":41691,"o":"move_object","x":[2184,2203]},{"a":2202,"t":"code","b":[136],"m":"dey"},{"a":2203,"t":"code","b":[16,250],"m":"bpl","oa":2199,"o":"b_0897"},{"a":2205,"l":"b_089D","t":"code","b":[202],"m":"dex","x":[2177,2194]},{"a":2206,"t":"code","b":[16,222],"m":"bpl","oa":2174,"o":"b_087E"},{"a":2208,"t":"code","b":[96],"m":"rts"},{"a":2209,"l":"intro_vaus_frames","c":"Animate the escaping Vaus: every fourth frame (bit 2 of frame_counter changed, kept in doh_shot_acc $021F, here a tick) advance object 8's sprite pointer ($F82D); after shape $B3 give it the empty shape $D5 and stop the slot.","t":"code","b":[173,116,2],"m":"lda","oa":628,"o":"enemy_state","x":[1763]},{"a":2212,"t":"code","b":[240,26],"m":"beq","oa":2240,"o":"r_08C0"},{"a":2214,"t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter"},{"a":2217,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":2219,"t":"code","b":[205,31,2],"m":"cmp","oa":543,"o":"doh_shot_acc"},{"a":2222,"t":"code","b":[240,16],"m":"beq","oa":2240,"o":"r_08C0"},{"a":2224,"t":"code","b":[141,31,2],"m":"sta","oa":543,"o":"doh_shot_acc"},{"a":2227,"t":"code","b":[173,45,248],"m":"lda","oa":63533,"o":"slot_shape_8"},{"a":2230,"t":"code","b":[24],"m":"clc"},{"a":2231,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":2233,"t":"code","b":[201,180],"m":"cmp","o":"#$B4"},{"a":2235,"t":"code","b":[176,4],"m":"bcs","oa":2241,"o":"b_08C1"},{"a":2237,"t":"code","b":[141,45,248],"m":"sta","oa":63533,"o":"slot_shape_8"},{"a":2240,"l":"r_08C0","t":"code","b":[96],"m":"rts","x":[2212,2222]},{"a":2241,"l":"b_08C1","t":"code","b":[169,213],"m":"lda","o":"#$D5","x":[2235]},{"a":2243,"t":"code","b":[141,45,248],"m":"sta","oa":63533,"o":"slot_shape_8"},{"a":2246,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2248,"t":"code","b":[141,116,2],"m":"sta","oa":628,"o":"enemy_state"},{"a":2251,"t":"code","b":[96],"m":"rts"},{"a":2252,"l":"intro_sprite_setup","c":"Sprites for the intro over the title bitmap: patch the multiplexer's pointer stores ($FC17 and $F976, the high bytes of their STA $C3FA,Y operands) to $63 so that sprite pointers go to $63F8, the bank-1 screen of the title; enable sprites 2-7 in multicolour, clear the X high bits, clear the Y positions of objects 0-11 ($942D-$9438; Y 0 hides an object), sprite multicolours $D025 = 3 (cyan) and $D026 = $0A (light red), colour 1 (white) for objects 8-10 ($F821-$F823), colour 0 (black) for objects 2-3 ($F81B/$F81C).","t":"code","b":[169,99],"m":"lda","o":"#$63","x":[1745]},{"a":2254,"t":"code","b":[141,23,252],"m":"sta","oa":64535,"o":"mux_ptr_page"},{"a":2257,"t":"code","b":[141,118,249],"m":"sta","oa":63862,"o":"mux_first_ptr_page"},{"a":2260,"t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":2262,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":2265,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":2268,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2270,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":2273,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":2275,"l":"b_08E3","t":"code","b":[157,45,148],"m":"sta","oa":37933,"o":"obj_y,x","x":[2279]},{"a":2278,"t":"code","b":[202],"m":"dex"},{"a":2279,"t":"code","b":[16,250],"m":"bpl","oa":2275,"o":"b_08E3"},{"a":2281,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":2283,"t":"code","b":[141,37,208],"m":"sta","o":"vic_sprite_mc0"},{"a":2286,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":2288,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":2291,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2293,"t":"code","b":[141,35,248],"m":"sta","oa":63523,"o":"slot_colour_10"},{"a":2296,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2298,"t":"code","b":[141,34,248],"m":"sta","oa":63522,"o":"slot_colour_9"},{"a":2301,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2303,"t":"code","b":[141,33,248],"m":"sta","oa":63521,"o":"slot_colour_8"},{"a":2306,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2308,"t":"code","b":[141,27,248],"m":"sta","oa":63515,"o":"slot_colour_2"},{"a":2311,"t":"code","b":[141,28,248],"m":"sta","oa":63516,"o":"slot_colour_3"},{"a":2314,"t":"code","b":[96],"m":"rts"},{"a":2315,"l":"intro_show_patch","c":"Put objects 2 and 3 at Y $A0, X $87 and X $9F, shapes $A0 and $A1 (black, set by intro_sprite_setup): two sprites side by side at the spot the Vaus leaves from. Assumed to cover the Vaus drawn in the bitmap; not checked live.","t":"code","b":[169,135],"m":"lda","o":"#$87","x":[1853]},{"a":2317,"t":"code","b":[141,71,148],"m":"sta","oa":37959,"o":"laser_x"},{"a":2320,"t":"code","b":[169,159],"m":"lda","o":"#$9F"},{"a":2322,"t":"code","b":[141,72,148],"m":"sta","oa":37960,"o":"laser2_x"},{"a":2325,"t":"code","b":[169,160],"m":"lda","o":"#$A0"},{"a":2327,"t":"code","b":[141,47,148],"m":"sta","oa":37935,"o":"laser_y"},{"a":2330,"t":"code","b":[141,48,148],"m":"sta","oa":37936,"o":"laser2_y"},{"a":2333,"t":"code","b":[160,160],"m":"ldy","o":"#$A0"},{"a":2335,"t":"code","b":[140,39,248],"m":"sty","oa":63527,"o":"slot_shape_2"},{"a":2338,"t":"code","b":[200],"m":"iny"},{"a":2339,"t":"code","b":[140,40,248],"m":"sty","oa":63528,"o":"slot_shape_3"},{"a":2342,"t":"code","b":[96],"m":"rts"},{"a":2343,"l":"score_p1","c":"Player 1's score, three BCD bytes, least significant first ($0927-$0929), in units of 10 points: the panel ($FB4F) prints six digits before a fixed 0, so $33 $01 $00 reads 1330. Points are added from points_pending by add_points ($FBBD); cleared at the game's start ($F1BE).","t":"byte","b":[0],"x":[61886,64176,64274,64293,64339,64457,64460]},{"a":2344,"l":"f_0928","c":"score_p1, middle BCD byte (tens and hundreds of the stored units).","t":"byte","b":[0],"x":[64466,64469]},{"a":2345,"l":"f_0929","c":"score_p1, most significant BCD byte.","t":"byte","b":[0],"x":[64475,64478]},{"a":2346,"l":"score_p2","c":"Player 2's score, three BCD bytes ($092A-$092C), as score_p1, printed at $C2EF ($FB73).","t":"byte","b":[0,0,0],"x":[64371]},{"a":2349,"l":"extra_life_p1","c":"Player 1's next extra-life score, three BCD bytes ($092D-$092F) in score units: 00 20 00 at the game's start (20,000 points, $F1C4-$F1CC); when the score reaches it ($FAA5) a life is added (up to 87) and $20 is added to the middle byte, so every 20,000 points. The low byte is never written.","t":"byte","b":[0],"x":[64179]},{"a":2350,"l":"a_092E","c":"extra_life_p1, middle BCD byte ($20 at the start, +$20 per extra life, $FACB).","t":"byte","b":[0],"x":[61900,64203,64206]},{"a":2351,"l":"a_092F","c":"extra_life_p1, most significant BCD byte (carry from the middle byte, $FAD6).","t":"byte","b":[0,0],"x":[61892,64209,64214]},{"a":2353,"l":"a_0931","c":"extra_life_p2, middle BCD byte ($20 at the start); player 2's threshold is $0930-$0932, reached through extra_life_p1 indexed with X = 3.","t":"byte","b":[0],"x":[61903]},{"a":2354,"l":"a_0932","c":"extra_life_p2, most significant BCD byte.","t":"byte","b":[0],"x":[61895]},{"a":2355,"l":"points_pending","c":"Points to add, three BCD bytes ($0933-$0935, in units of 10 points), added to the current player's score and cleared by add_points ($FBBD): the brick's value from $B2C4 ($B260), $10 (100 points) for an enemy ($9F47, $9F58).","t":"byte","b":[0],"x":[40775,40792,45664,64453,64483]},{"a":2356,"l":"a_0934","c":"points_pending, middle BCD byte: 1 (1,000 points) for a capsule caught ($A9DD).","t":"byte","b":[0],"x":[43485,64463,64486]},{"a":2357,"l":"a_0935","c":"points_pending, most significant BCD byte (always 0 when written).","t":"byte","b":[0],"x":[64472,64489]},{"a":2358,"l":"lives_p1","c":"Player 1's lives, BCD: 4 at the start ($F1D4), -1 per Vaus lost ($9B76), +1 per extra life (capsule P $A891, score $FAE6); $99 after the last one is lost, ending that player's game ($9B7D). The panel shows it at $C1B5.","t":"byte","b":[0],"x":[38588,39795,39801,43141,43153,45814,61908,64078,64101,64220,64230]},{"a":2359,"l":"lives_p2","c":"Player 2's lives, BCD: 4 in a two-player game, $99 (none) in a one-player game ($F1DC); shown at $C31D.","t":"byte","b":[0],"x":[61918,64121,64144]},{"a":2360,"l":"current_player","c":"Player whose turn it is, 0 or 1: picks the score, lives, round and wall buffer of that player, and the input port in two-device games; flipped when a life is lost and the other player is still in ($9BF3, $9C01). 0 at the start ($F015).","t":"byte","b":[0],"x":[1541,38338,38357,38457,38583,38621,39792,39829,39904,39918,39923,39932,39937,39955,39986,40875,42844,43138,45322,45811,61461,62321,62405,62680,62802,62953,64169,64193,64217,64261,64412,64445,64938,65043,65091]},{"a":2361,"l":"players_left","c":"1 while the other player is still in the game: copied from two_players by the menu ($B56B, $B5DE) and shown there as the player count ($B622); when a player is out, decremented and the turn passes, or at 0 the game ends ($9BD3-$9BF9).","t":"byte","b":[1],"x":[39891,39913,39929,46443,46558,46626,61911]},{"a":2362,"l":"two_players","c":"0 one player, 1 two (menu keys 1 and 2, $B5E1); picks the GAME OVER message ($9B90).","t":"byte","b":[0],"x":[39824,46440,46561]},{"a":2363,"l":"bricks_saved","c":"bricks_left saved per player when a life is lost ($9BE6; $093B player 1, $093C player 2); restored only in round 33, where it is Doh's hits ($9C35); other rounds recount while the wall is rebuilt.","t":"byte","b":[0,0],"x":[39910,39989]},{"a":2365,"l":"round_p1","c":"Player 1's round, 0-32 ($20 is round 33, Doh): set at the start ($F092; the attract mode picks 4, 13, 20 or 23 from $945B), +1 per round cleared ($95D8), 0 after Doh's defeat ($9648). Picks the layout ($8000 + round x 160), the background, the enemy kind and the silver hits; shown at $C1DD.","t":"byte","b":[0],"x":[38169,38341,38360,38363,38460,38472,38624,39958,40878,42847,45325,61586,62363,62408,62438,62683,62805,62866,62956]},{"a":2366,"l":"round_p2","c":"Player 2's round, as round_p1 (indexed by current_player); shown at $C345.","t":"byte","b":[0],"x":[38172,61589,62382]},{"a":2367,"l":"input_device","c":"Control chosen on the menu ($B5D0): 0 N Neos mouse, 1 J joystick, 2 K keyboard, 3 P paddles (3 as loaded); picks the input routine through the RTS table at $FCAB/$FCAF ($FC9F).","t":"byte","b":[3],"x":[46446,46544,46607,64671]},{"a":2368,"l":"two_devices","c":"Menu key D toggles it ($B5E7): 0 one control shared by both players (port 1), 1 one each (player 2 on port 2, $FDA4, $FE48); shown as 1 or 2 ($B62B).","t":"byte","b":[0],"x":[46567,46572,46635,64932,65096]},{"a":2369,"l":"high_score","c":"High score, three BCD bytes ($0941-$0943) in units of 10 points, most significant last; replaced by the current player's score when that is higher ($FB01-$FB2D) and printed at $C0BF. When player 2's score equals it exactly, the compare runs on with X = $FF and reads $0A40 (harmless).","t":"byte","b":[0,0,0],"x":[64277,64296,64307]},{"a":2372,"l":"tamper_flag","c":"Read by the enemy collision test ($A2CB): non-zero would run $A523, which copies a routine to $01C0 and jumps to it with interrupts off. Writers found: STA $0944 at $F9F9, the failure exit of a checksum of $9500-$A5FF at $F9BC, and at $BA5A, the failure exit of a serial-port check in the block $BA0A-$BA6A; nothing calls either in this build, so the flag stays 0. Named for what the code suggests, not proved.","t":"byte","b":[0],"x":[41675]},{"a":2373,"l":"attract_count","c":"Attract mode: counts the demonstrations; its low two bits pick the demo round from $945B ($950D-$9516).","t":"byte","b":[0],"x":[38157,38166]},{"a":2374,"l":"dissolve_masks","c":"Ending: 11 AND masks ($0946-$0950: $7F $FD $F7 $BF $FE $FB $FD $F7 $BF $DF $EF), one per glyph row, each clearing one pixel; applied to the glyphs of ending_chars ($9779) and rotated by one place after every pass ($9784-$9794).","t":"byte","b":[127],"x":[38777,38794,38804]},{"a":2375,"l":"f_0947","c":"dissolve_masks from the second entry on, the destination of the rotation ($978D).","t":"byte","b":[253,247,191,254,251,253,247,191],"x":[38797]},{"a":2383,"t":"byte","b":[223]},{"a":2384,"l":"a_0950","c":"dissolve_masks, last entry, moved to the front by each rotation ($9786).","t":"byte","b":[239],"x":[38790]},{"a":2385,"l":"dissolve_rows","c":"Ending: 9 flags ($0951-$0959: 1 1 0 1 1 0 1 1 0) saying which glyph rows the dissolve touches this pass ($9772); rotated like dissolve_masks ($9797-$97A7).","t":"byte","b":[1],"x":[38770,38813,38823]},{"a":2386,"l":"f_0952","c":"dissolve_rows from the second entry on, the destination of the rotation ($97A0).","t":"byte","b":[1,0,1,1,0,1,1],"x":[38816]},{"a":2393,"l":"a_0959","c":"dissolve_rows, last entry, moved to the front by each rotation ($9799).","t":"byte","b":[0],"x":[38809]},{"a":2394,"l":"start_hop","c":"Reached by JMP $095A from the first instruction ($9406). $FC $AD $03 is an undocumented NOP $03AD,X: a three-byte no-op (it reads $03AD+X, to no effect), then JSR start_up ($B9C3) at $095D, which never returns.","t":"byte","b":[252,173,3],"x":[37894]},{"a":2397,"l":"start_call","c":"JSR $B9C3: the start-up (timers, protection, interrupts); it ends in JMP $F000 and does not come back here.","t":"code","b":[32,195,185],"m":"jsr","oa":47555,"o":"startup"},{"a":2400,"l":"start_dead_tail","c":"Never executed (the JSR before it does not return; the simulator ran none of $0960-$096A): AF 04 F0 LAX $F004 (undocumented: A and X from $F004), 8E F7 FC STX $FCF7 (would patch the operand of STX $150C at $FCF6), 44 AD NOP $AD (undocumented two-byte no-op), 4C 00 F0 JMP $F000.","t":"byte","b":[175,4,240,142,247,252,68,173]},{"a":2408,"t":"byte","b":[76,0,240]},{"a":2411,"l":"stale_code_a971","c":"Leftover bytes, part 1 of 4 ($096B-$0BFF): an earlier assembly of the game code now at $A971-$AC05, 6 bytes lower (where this build's code is unchanged the bytes match at offset +$A006, e.g. $0B60-$0B6F = $AB66-$AB75); the differences are where the code changed since. Nothing runs or uses them: the simulator never executed, read or wrote $096B-$15FF except the stray accesses noted at $0A40, $0AA9 and $150C. Loaded only because the game was saved as one memory image.","t":"byte","b":[168,185,170,3,133,13,185,171]},{"a":2419,"t":"byte","b":[3,133,14,160,0,177,13,201]},{"a":2427,"t":"byte","b":[138,144,3,169,141,44,169,133]},{"a":2435,"t":"byte","b":[145,13,200,24,105,4,145,13]},{"a":2443,"t":"byte","b":[202,208,201,96,173,55,2,240]},{"a":2451,"t":"byte","b":[99,32,214,167,173,99,148,24]},{"a":2459,"t":"byte","b":[105,12,205,106,148,144,86,233]},{"a":2467,"t":"byte","b":[8,205,106,148,176,79,173,10]},{"a":2475,"t":"byte","b":[2,141,12,2,173,6,2,24]},{"a":2483,"t":"byte","b":[105,12,109,12,2,205,166,148]},{"a":2491,"t":"byte","b":[144,59,173,10,2,10,141,12]},{"a":2499,"t":"byte","b":[2,173,6,2,56,237,12,2]},{"a":2507,"t":"byte","b":[205,166,148,176,40,173,61,2]},{"a":2515,"t":"byte","b":[208,35,169,1,141,52,9,32]},{"a":2523,"t":"byte","b":[222,251,32,17,170,173,55,2]},{"a":2531,"t":"byte","b":[141,8,2,10,170,189,82,168]},{"a":2539,"t":"byte","b":[141,245,169,189,83,168,141,246]},{"a":2547,"t":"byte","b":[169,32,244,169,96,173,106,148]},{"a":2555,"t":"byte","b":[24,105,1,201,250,176,5,141]},{"a":2563,"t":"byte","b":[106,148,208,240,169,0,141,106]},{"a":2571,"t":"byte","b":[148,141,55,2,240,230,173,43]},{"a":2579,"t":"byte","b":[2,240,5,169,8,141,35,2]},{"a":2587,"t":"byte","b":[169,0,141,42,2,141,43,2]},{"a":2595,"t":"byte","b":[141,60,2,173,40,2,240,3]},{"a":2603,"t":"byte","b":[32,228,170,32,194,246,173,10]},{"a":2611,"t":"byte","b":[2,201,12,208,5,169,128,141]},{"a":2619,"t":"byte","b":[7,2,96,169,1,141,7,2]},{"a":2627,"t":"byte","b":[169,40,141,22,2,169,2,141]},{"a":2635,"t":"byte","b":[23,2,162,0,169,186,160,32]},{"a":2643,"t":"byte","b":[32,47,39,162,1,169,217,160]},{"a":2651,"t":"byte","b":[32,32,47,39,162,2,169,248]},{"a":2659,"t":"byte","b":[160,32,32,47,39,76,7,170]},{"a":2667,"t":"byte","b":[173,40,2,240,41,173,1,2]},{"a":2675,"t":"byte","b":[201,128,176,109,173,54,2,208]},{"a":2683,"t":"byte","b":[104,162,2,189,167,2,208,3]},{"a":2691,"t":"byte","b":[202,208,248,173,6,2,56,237]},{"a":2699,"t":"byte","b":[33,2,157,163,148,173,99,148]},{"a":2707,"t":"byte","b":[24,105,8,157,103,148,96,32]},{"a":2715,"t":"byte","b":[110,165,32,153,165,32,110,165]},{"a":2723,"t":"byte","b":[32,164,165,32,110,165]},{"a":2729,"l":"a_0AA9","c":"Not a variable: operand of BIT $0AA9 at $068E, a skip over LDA #$0A in save_wall_of_player; the read of this leftover byte has no effect.","t":"byte","b":[32,153,165,76,110,165,32,170],"x":[1678]},{"a":2737,"t":"byte","b":[165,32,159,165,131,2,131,6]},{"a":2745,"t":"byte","b":[32,159,165,32,146,165,32,159]},{"a":2753,"t":"byte","b":[165,131,2,131,6,76,159,165]},{"a":2761,"t":"byte","b":[132,2,132,6,32,159,165,131]},{"a":2769,"t":"byte","b":[2,131,6,32,159,165,32,146]},{"a":2777,"t":"byte","b":[165,32,159,165,131,2,131,6]},{"a":2785,"t":"byte","b":[76,159,165,169,5,141,170,2]},{"a":2793,"t":"gap","n":279},{"a":3072,"l":"stale_code_ac06","c":"Leftover bytes, part 2 of 4 ($0C00-$0FFF): the earlier assembly of the code now at $AC06-$B005 (offset +$A006, e.g. $0C60 = $AC66, $0F60 = $AF66). Not used.","t":"byte","b":[163,148,48,32,172,10,2,192]},{"a":3080,"t":"byte","b":[4,240,1,74,201,8,176,36]},{"a":3088,"t":"byte","b":[201,4,144,19,169,255,157,155]},{"a":3096,"t":"byte","b":[2,169,64,157,158,2,76,62]},{"a":3104,"t":"byte","b":[172,76,193,172,76,252,172,169]},{"a":3112,"t":"byte","b":[255,157,155,2,169,240,157,158]},{"a":3120,"t":"byte","b":[2,76,62,172,169,128,157,155]},{"a":3128,"t":"byte","b":[2,169,255,157,158,2,189,152]},{"a":3136,"t":"byte","b":[2,48,8,73,255,24,105,1]},{"a":3144,"t":"byte","b":[157,152,2,189,149,2,73,255]},{"a":3152,"t":"byte","b":[24,105,1,157,149,2,173,6]},{"a":3160,"t":"byte","b":[2,56,253,163,148,141,33,2]},{"a":3168,"t":"byte","b":[169,0,157,161,2,169,5,157]},{"a":3176,"t":"byte","b":[170,2,173,42,2,240,46,173]},{"a":3184,"t":"byte","b":[22,2,208,41,138,72,162,0]},{"a":3192,"t":"byte","b":[169,139,160,34,32,47,39,162]},{"a":3200,"t":"byte","b":[1,169,170,160,34,32,47,39]},{"a":3208,"t":"byte","b":[162,2,169,201,160,34,32,47]},{"a":3216,"t":"byte","b":[39,104,170,169,1,141,40,2]},{"a":3224,"t":"byte","b":[141,1,2,208,36,173,22,2]},{"a":3232,"t":"byte","b":[208,31,138,72,162,0,169,0]},{"a":3240,"t":"byte","b":[160,32,32,47,39,162,1,169]},{"a":3248,"t":"byte","b":[31,160,32,32,47,39,162,2]},{"a":3256,"t":"byte","b":[169,62,160,32,32,47,39,104]},{"a":3264,"t":"byte","b":[170,189,170,2,240,3,222,170]},{"a":3272,"t":"byte","b":[2,202,48,3,76,180,171,96]},{"a":3280,"t":"byte","b":[160,5,169,148,24,105,64,141]},{"a":3288,"t":"byte","b":[239,172,162,20,185,150,253,56]},{"a":3296,"t":"byte","b":[233,1,208,252,165,222,24,105]},{"a":3304,"t":"byte","b":[152,133,222,41,15,141,24,148]},{"a":3312,"t":"byte","b":[202,208,233,136,16,228,169,148]},{"a":3320,"t":"byte","b":[141,239,172,96,73,255,24,105]},{"a":3328,"t":"byte","b":[1,172,10,2,192,4,240,1]},{"a":3336,"t":"byte","b":[74,201,8,176,30,201,4,176]},{"a":3344,"t":"byte","b":[13,169,255,157,155,2,169,64]},{"a":3352,"t":"byte","b":[157,158,2,76,53,173,169,255]},{"a":3360,"t":"byte","b":[157,155,2,169,240,157,158,2]},{"a":3368,"t":"byte","b":[76,53,173,169,128,157,155,2]},{"a":3376,"t":"byte","b":[169,255,157,158,2,189,152,2]},{"a":3384,"t":"byte","b":[16,8,73,255,24,105,1,157]},{"a":3392,"t":"byte","b":[152,2,76,75,172,173,7,2]},{"a":3400,"t":"byte","b":[240,24,16,23,173,10,2,56]},{"a":3408,"t":"byte","b":[233,1,201,4,144,7,141,10]},{"a":3416,"t":"byte","b":[2,238,7,2,96,169,0,141]},{"a":3424,"t":"byte","b":[7,2,96,173,35,2,208,250]},{"a":3432,"t":"byte","b":[173,10,2,24,105,1,201,13]},{"a":3440,"t":"byte","b":[176,7,141,10,2,238,7,2]},{"a":3448,"t":"byte","b":[96,169,0,141,7,2,96,172]},{"a":3456,"t":"byte","b":[35,2,240,31,173,1,2,41]},{"a":3464,"t":"byte","b":[2,205,32,2,240,21,141,32]},{"a":3472,"t":"byte","b":[2,185,164,173,240,13,141,58]},{"a":3480,"t":"byte","b":[248,24,105,1,141,59,248,136]},{"a":3488,"t":"byte","b":[140,35,2,96,0,64,115,117]},{"a":3496,"t":"byte","b":[119,121,119,117,115,173,40,2]},{"a":3504,"t":"byte","b":[208,69,173,72,2,109,59,2]},{"a":3512,"t":"byte","b":[141,72,2,173,58,2,105,0]},{"a":3520,"t":"byte","b":[201,12,144,2,169,11,141,75]},{"a":3528,"t":"byte","b":[2,162,2,189,167,2,240,6]},{"a":3536,"t":"byte","b":[32,46,179,32,251,173,202,16]},{"a":3544,"t":"byte","b":[242,32,173,171,206,75,2,208]},{"a":3552,"t":"byte","b":[232,173,65,2,74,74,205,58]},{"a":3560,"t":"byte","b":[2,144,12,201,12,176,8,141]},{"a":3568,"t":"byte","b":[58,2,169,0,141,59,2,96]},{"a":3576,"t":"byte","b":[76,55,175,189,167,2,240,247]},{"a":3584,"t":"byte","b":[189,103,148,201,192,176,240,56]},{"a":3592,"t":"byte","b":[233,59,144,235,74,74,41,254]},{"a":3600,"t":"byte","b":[168,185,142,247,133,13,133,15]},{"a":3608,"t":"byte","b":[185,143,247,133,14,41,3,24]},{"a":3616,"t":"byte","b":[105,216,133,16,189,149,2,16]},{"a":3624,"t":"byte","b":[19,189,163,148,56,233,30,41]},{"a":3632,"t":"byte","b":[240,74,74,74,24,105,41,168]},{"a":3640,"t":"byte","b":[177,13,48,188,189,152,2,16]},{"a":3648,"t":"byte","b":[20,189,163,148,56,233,24,74]},{"a":3656,"t":"byte","b":[74,74,24,105,40,168,177,13]},{"a":3664,"t":"byte","b":[16,3,76,165,174,189,152,2]},{"a":3672,"t":"byte","b":[48,17,189,163,148,56,233,36]},{"a":3680,"t":"byte","b":[74,74,74,24,105,42,168,177]},{"a":3688,"t":"byte","b":[13,48,92,189,149,2,48,52]},{"a":3696,"t":"byte","b":[189,103,148,56,233,56,74,74]},{"a":3704,"t":"byte","b":[41,254,168,185,142,247,133,13]},{"a":3712,"t":"byte","b":[133,15,185,143,247,133,14,41]},{"a":3720,"t":"byte","b":[3,24,105,216,133,16,189,163]},{"a":3728,"t":"byte","b":[148,56,233,30,41,240,74,74]},{"a":3736,"t":"byte","b":[74,24,105,41,168,177,13,16]},{"a":3744,"t":"byte","b":[3,76,21,175,96,189,152,2]},{"a":3752,"t":"byte","b":[73,255,24,105,1,157,152,2]},{"a":3760,"t":"byte","b":[254,173,2,189,173,2,201,50]},{"a":3768,"t":"byte","b":[144,3,32,101,175,32,212,175]},{"a":3776,"t":"byte","b":[32,2,177,32,89,175,96,189]},{"a":3784,"t":"byte","b":[152,2,73,255,24,105,1,157]},{"a":3792,"t":"byte","b":[152,2,254,173,2,189,173,2]},{"a":3800,"t":"byte","b":[201,50,144,3,32,101,175,32]},{"a":3808,"t":"byte","b":[239,175,32,2,177,32,89,175]},{"a":3816,"t":"byte","b":[96,160,5,169,148,24,105,64]},{"a":3824,"t":"byte","b":[141,8,175,162,25,185,232,247]},{"a":3832,"t":"byte","b":[56,233,1,208,251,165,222,24]},{"a":3840,"t":"byte","b":[105,101,133,222,41,15,141,24]},{"a":3848,"t":"byte","b":[212,202,208,233,136,16,228,169]},{"a":3856,"t":"byte","b":[148,141,8,175,96,189,149,2]},{"a":3864,"t":"byte","b":[73,255,24,105,1,157,149,2]},{"a":3872,"t":"byte","b":[254,173,2,189,173,2,201,50]},{"a":3880,"t":"byte","b":[144,3,32,101,175,32,185,175]},{"a":3888,"t":"byte","b":[32,2,177,32,89,175,96,189]},{"a":3896,"t":"byte","b":[149,2,73,255,24,105,1,157]},{"a":3904,"t":"byte","b":[149,2,254,173,2,189,173,2]},{"a":3912,"t":"byte","b":[201,50,144,3,32,101,175,32]},{"a":3920,"t":"byte","b":[158,175,32,89,175,32,2,177]},{"a":3928,"t":"byte","b":[96,173,59,2,24,105,4,176]},{"a":3936,"t":"byte","b":[3,141,59,2,96,189,155,2]},{"a":3944,"t":"byte","b":[201,255,208,16,169,128,157,155]},{"a":3952,"t":"byte","b":[2,169,255,157,158,2,169,0]},{"a":3960,"t":"byte","b":[157,173,2,96,169,255,157,155]},{"a":3968,"t":"byte","b":[2,173,18,208,41,1,240,11]},{"a":3976,"t":"byte","b":[169,240,157,158,2,169,0,157]},{"a":3984,"t":"byte","b":[173,2,96,169,64,157,158,2]},{"a":3992,"t":"byte","b":[169,0,157,173,2,96,189,103]},{"a":4000,"t":"byte","b":[148,56,233,51,74,74,74,141]},{"a":4008,"t":"byte","b":[24,2,189,163,148,56,233,30]},{"a":4016,"t":"byte","b":[74,74,74,41,254,141,25,2]},{"a":4024,"t":"byte","b":[96,189,103,148,56,233,46,74]},{"a":4032,"t":"byte","b":[74,74,141,24,2,189,163,148]},{"a":4040,"t":"byte","b":[56,233,30,74,74,74,41,254]},{"a":4048,"t":"byte","b":[141,25,2,96,189,103,148,56]},{"a":4056,"t":"byte","b":[233,51,74,74,74,141,24,2]},{"a":4064,"t":"byte","b":[189,163,148,56,233,33,74,74]},{"a":4072,"t":"byte","b":[74,41,254,141,25,2,96,189]},{"a":4080,"t":"byte","b":[103,148,56,233,51,74,74,74]},{"a":4088,"t":"byte","b":[141,24,2,189,163,148,56,233]},{"a":4096,"l":"stale_code_b006","c":"Leftover bytes, part 3 of 4 ($1000-$13FF): the earlier assembly of the code now at $B006-$B405 (offset +$A006, e.g. $1060 = $B066, $12E0 = $B2E6). Not used.","t":"byte","b":[16,74,74,74,41,254,141,25]},{"a":4104,"t":"byte","b":[2,96,152,24,101,13,133,13]},{"a":4112,"t":"byte","b":[165,14,105,0,133,14,172,86]},{"a":4120,"t":"byte","b":[4,185,0,3,240,75,132,19]},{"a":4128,"t":"byte","b":[152,10,168,165,14,217,171,3]},{"a":4136,"t":"byte","b":[208,61,165,13,217,170,3,208]},{"a":4144,"t":"byte","b":[54,169,141,160,0,145,13,200]},{"a":4152,"t":"byte","b":[169,145,145,13,164,19,169,128]},{"a":4160,"t":"byte","b":[153,0,3,173,22,2,208,31]},{"a":4168,"t":"byte","b":[138,72,162,0,169,116,160,33]},{"a":4176,"t":"byte","b":[32,47,39,162,1,169,147,160]},{"a":4184,"t":"byte","b":[33,32,47,39,162,2,169,178]},{"a":4192,"t":"byte","b":[160,33,32,47,39,104,170,164]},{"a":4200,"t":"byte","b":[19,136,208,173,96,152,24,101]},{"a":4208,"t":"byte","b":[13,133,13,165,14,105,0,133]},{"a":4216,"t":"byte","b":[14,172,86,4,185,0,3,240]},{"a":4224,"t":"byte","b":[86,140,16,2,152,10,168,165]},{"a":4232,"t":"byte","b":[14,217,171,3,208,70,165,13]},{"a":4240,"t":"byte","b":[217,170,3,208,63,172,16,2]},{"a":4248,"t":"byte","b":[185,85,3,240,62,169,133,160]},{"a":4256,"t":"byte","b":[0,145,13,200,169,137,145,13]},{"a":4264,"t":"byte","b":[172,16,2,169,128,153,0,3]},{"a":4272,"t":"byte","b":[173,22,2,208,31,138,72,162]},{"a":4280,"t":"byte","b":[0,169,116,160,33,32,47,39]},{"a":4288,"t":"byte","b":[162,1,169,147,160,33,32,47]},{"a":4296,"t":"byte","b":[39,162,2,169,178,160,33,32]},{"a":4304,"t":"byte","b":[47,39,104,170,172,16,2,136]},{"a":4312,"t":"byte","b":[208,162,96,172,16,2,169,0]},{"a":4320,"t":"byte","b":[153,0,3,165,13,56,229,19]},{"a":4328,"t":"byte","b":[133,13,165,14,233,0,133,14]},{"a":4336,"t":"byte","b":[164,19,76,103,177,76,109,176]},{"a":4344,"t":"byte","b":[4,69,233,1,138,208,47,76]},{"a":4352,"t":"byte","b":[10,176,138,72,174,56,9,189]},{"a":4360,"t":"byte","b":[61,9,201,32,208,54,104,170]},{"a":4368,"t":"byte","b":[177,13,16,47,201,232,176,43]},{"a":4376,"t":"byte","b":[206,85,4,169,1,141,21,2]},{"a":4384,"t":"byte","b":[138,72,152,72,162,0,169,162]},{"a":4392,"t":"byte","b":[160,35,32,47,39,162,1,169]},{"a":4400,"t":"byte","b":[193,160,35,32,47,39,162,2]},{"a":4408,"t":"byte","b":[169,224,160,35,32,47,39,104]},{"a":4416,"t":"byte","b":[168,104,170,96,104,170,152,56]},{"a":4424,"t":"byte","b":[233,1,41,254,9,1,168,132]},{"a":4432,"t":"byte","b":[19,169,0,157,161,2,177,15]},{"a":4440,"t":"byte","b":[41,7,141,14,2,177,13,201]},{"a":4448,"t":"byte","b":[138,176,156,201,130,176,142,206]},{"a":4456,"t":"byte","b":[85,4,152,56,233,42,168,177]},{"a":4464,"t":"byte","b":[13,48,5,200,177,13,16,3]},{"a":4472,"t":"byte","b":[169,16,44,169,0,141,27,2]},{"a":4480,"t":"byte","b":[32,198,178,164,19,24,109,27]},{"a":4488,"t":"byte","b":[2,145,13,173,87,4,145,15]},{"a":4496,"t":"byte","b":[152,56,233,40,168,177,13,16]},{"a":4504,"t":"byte","b":[3,169,16,44,169,0,141,27]},{"a":4512,"t":"byte","b":[2,238,25,2,32,198,178,164]},{"a":4520,"t":"byte","b":[19,200,24,109,27,2,145,13]},{"a":4528,"t":"byte","b":[173,87,4,145,15,152,24,105]},{"a":4536,"t":"byte","b":[40,168,238,24,2,177,13,48]},{"a":4544,"t":"byte","b":[10,32,198,178,145,13,173,87]},{"a":4552,"t":"byte","b":[4,145,15,200,176,17,177,13]},{"a":4560,"t":"byte","b":[48,13,238,25,2,32,198,178]},{"a":4568,"t":"byte","b":[145,13,173,87,4,145,15,173]},{"a":4576,"t":"byte","b":[55,2,208,111,142,13,2,162]},{"a":4584,"t":"byte","b":[2,169,0,24,125,167,2,202]},{"a":4592,"t":"byte","b":[16,250,174,13,2,201,1,208]},{"a":4600,"t":"byte","b":[90,173,85,4,240,85,32,224]},{"a":4608,"t":"byte","b":[178,48,80,41,7,208,3,24]},{"a":4616,"t":"byte","b":[105,1,205,8,2,208,6,24]},{"a":4624,"t":"byte","b":[105,1,76,3,178,168,185,182]},{"a":4632,"t":"byte","b":[178,141,35,248,152,141,55,2]},{"a":4640,"t":"byte","b":[10,10,10,168,162,7,185,17]},{"a":4648,"t":"byte","b":[168,157,9,168,136,202,16,246]},{"a":4656,"t":"byte","b":[174,13,2,173,24,2,10,10]},{"a":4664,"t":"byte","b":[10,24,105,50,141,106,148,173]},{"a":4672,"t":"byte","b":[25,2,56,233,1,41,254,24]},{"a":4680,"t":"byte","b":[105,2,10,10,10,24,105,14]},{"a":4688,"t":"byte","b":[141,166,148,173,14,2,168,185]},{"a":4696,"t":"byte","b":[190,178,141,51,9,169,0,157]},{"a":4704,"t":"byte","b":[173,2,138,72,173,22,2,208]},{"a":4712,"t":"byte","b":[27,162,0,169,93,160,32,32]},{"a":4720,"t":"byte","b":[47,39,162,1,169,124,160,32]},{"a":4728,"t":"byte","b":[32,47,39,162,2,169,155,160]},{"a":4736,"t":"byte","b":[32,32,47,39,32,222,251,104]},{"a":4744,"t":"byte","b":[170,96,160,5,169,148,24,105]},{"a":4752,"t":"byte","b":[64,141,169,178,162,25,185,128]},{"a":4760,"t":"byte","b":[249,56,233,1,208,251,165,222]},{"a":4768,"t":"byte","b":[24,105,221,133,222,41,15,141]},{"a":4776,"t":"byte","b":[24,212,202,208,233,136,16,228]},{"a":4784,"t":"byte","b":[169,148,141,169,178,96,0,8]},{"a":4792,"t":"byte","b":[5,6,3,2,10,11,0,16]},{"a":4800,"t":"byte","b":[8,18,9,17,7,19,24,173]},{"a":4808,"t":"byte","b":[24,2,10,10,41,12,141,28]},{"a":4816,"t":"byte","b":[2,173,25,2,41,3,109,28]},{"a":4824,"t":"byte","b":[2,109,88,4,96,169,255,96]},{"a":4832,"t":"byte","b":[173,1,2,201,160,176,246,48]},{"a":4840,"t":"byte","b":[50,201,10,176,240,174,56,9]},{"a":4848,"t":"byte","b":[189,54,9,41,2,240,3,169]},{"a":4856,"t":"byte","b":[6,96,173,65,2,201,18,144]},{"a":4864,"t":"byte","b":[3,169,5,96,173,86,4,201]},{"a":4872,"t":"byte","b":[4,144,3,169,4,96,174,13]},{"a":4880,"t":"byte","b":[2,189,103,148,201,128,176,3]},{"a":4888,"t":"byte","b":[169,3,96,173,1,2,93,163]},{"a":4896,"t":"byte","b":[148,41,3,240,6,56,233,1]},{"a":4904,"t":"byte","b":[240,1,96,169,2,96,189,155]},{"a":4912,"t":"byte","b":[2,201,255,208,64,189,149,2]},{"a":4920,"t":"byte","b":[24,125,103,148,157,103,148,201]},{"a":4928,"t":"byte","b":[59,144,99,201,252,176,95,189]},{"a":4936,"t":"byte","b":[161,2,56,253,158,2,157,161]},{"a":4944,"t":"byte","b":[2,176,33,125,164,2,157,161]},{"a":4952,"t":"byte","b":[2,189,152,2,24,125,163,148]},{"a":4960,"t":"byte","b":[157,163,148,72,189,152,2,16]},{"a":4968,"t":"byte","b":[6,104,201,36,144,96,96,104]},{"a":4976,"t":"byte","b":[201,232,176,95,96,189,161,2]},{"a":4984,"t":"byte","b":[56,253,155,2,157,161,2,176]},{"a":4992,"t":"byte","b":[24,125,164,2,157,161,2,189]},{"a":5000,"t":"byte","b":[149,2,24,125,103,148,157,103]},{"a":5008,"t":"byte","b":[148,201,59,144,17,201,252,176]},{"a":5016,"t":"byte","b":[13,189,152,2,24,125,163,148]},{"a":5024,"t":"byte","b":[157,163,148,76,99,179,144,12]},{"a":5032,"t":"byte","b":[169,0,157,167,2,157,103,148]},{"a":5040,"t":"byte","b":[157,163,148,96,189,149,2,73]},{"a":5048,"t":"byte","b":[255,24,105,1,157,149,2,189]},{"a":5056,"t":"byte","b":[103,148,24,105,1,157,103,148]},{"a":5064,"t":"byte","b":[169,2,157,170,2,96,254,163]},{"a":5072,"t":"byte","b":[148,208,3,222,163,148,169,0]},{"a":5080,"t":"byte","b":[157,161,2,189,152,2,73,255]},{"a":5088,"t":"byte","b":[24,105,1,157,152,2,254,173]},{"a":5096,"t":"byte","b":[2,189,173,2,201,50,144,3]},{"a":5104,"t":"byte","b":[32,101,175,96,189,167,148,56]},{"a":5112,"t":"byte","b":[237,159,148,176,18,173,159,148]},{"a":5120,"l":"stale_code_b406","c":"Leftover bytes, part 4 of 4 ($1400-$15FF): the earlier assembly of the code now at about $B406-$B5FF; the offset drifts from +$A006 to +$9FFF near $1500 (e.g. $1460 = $B466, $1560 = $B55F). Not used.","t":"byte","b":[56,253,167,148,141,4,2,169]},{"a":5128,"t":"byte","b":[1,157,125,2,76,23,180,141]},{"a":5136,"t":"byte","b":[4,2,169,255,157,125,2,189]},{"a":5144,"t":"byte","b":[107,148,56,237,99,148,176,18]},{"a":5152,"t":"byte","b":[173,99,148,56,253,107,148,141]},{"a":5160,"t":"byte","b":[5,2,169,1,157,122,2,76]},{"a":5168,"t":"byte","b":[58,180,141,5,2,169,255,157]},{"a":5176,"t":"byte","b":[122,2,173,5,2,205,4,2]},{"a":5184,"t":"byte","b":[176,21,169,255,157,131,2,173]},{"a":5192,"t":"byte","b":[4,2,157,134,2,157,137,2]},{"a":5200,"t":"byte","b":[173,5,2,157,128,2,96,169]},{"a":5208,"t":"byte","b":[255,157,128,2,173,5,2,157]},{"a":5216,"t":"byte","b":[134,2,157,137,2,173,4,2]},{"a":5224,"t":"byte","b":[157,131,2,96,173,0,2,240]},{"a":5232,"t":"byte","b":[251,206,0,2,152,72,32,227]},{"a":5240,"t":"byte","b":[249,104,168,96,164,169,161,167]},{"a":5248,"t":"byte","b":[164,169,43,141,17,208,169,194]},{"a":5256,"t":"byte","b":[141,0,221,169,128,141,24,208]},{"a":5264,"t":"byte","b":[169,0,141,32,208,169,1,141]},{"a":5272,"t":"byte","b":[33,208,160,0,185,0,100,153]},{"a":5280,"t":"byte","b":[0,216,185,0,101,153,0,217]},{"a":5288,"t":"byte","b":[185,0,102,153,0,218,185,0]},{"a":5296,"t":"byte","b":[103,153,0,219,136,208,229,160]},{"a":5304,"t":"byte","b":[29,153,99,148,136,16,250,169]},{"a":5312,"t":"byte","b":[59,141,17,208,96,32,129,180]},{"a":5320,"t":"byte","b":[32,144,38,32,45,181,169,255]},{"a":5328,"t":"byte","b":[141,9,2,160,61,32,43,38]},{"a":5336,"t":"byte","b":[162,96,160,153,169,2,32,69]},{"a":5344,"t":"byte","b":[153,32,1,255,173,1,220,45]},{"a":5352,"t":"byte","b":[0,220,201,127,208,13,32,23]},{"a":5360,"t":"byte","b":[52,208,238,169,0,141,9,2]},{"a":5368,"t":"byte","b":[76,0,149,169,0,141,9,2]},{"a":5376,"t":"byte","b":[96,160,5,169,148,24,105,64]},{"a":5384,"t":"byte","b":[141,32,181,162]},{"a":5388,"l":"a_150C","c":"Written with 0 by STX $150C at $FCF6 in the Vaus placement, whose operand low byte $FD50/$FD6F then patch to $15 (so later calls write $1515). Both land in the leftover code and have no effect; why the store is there is not known.","t":"byte","b":[0,185,9,253,56,233,1,208],"x":[64758]},{"a":5396,"t":"byte","b":[251,0,222,24,105,221,133,222]},{"a":5404,"t":"byte","b":[41,15,141,24,148,202,208,233]},{"a":5412,"t":"byte","b":[136,16,228,169,148,141,32,181]},{"a":5420,"t":"byte","b":[96,162,0,134,223,202,134,220]},{"a":5428,"t":"byte","b":[162,113,160,154,134,218,132,219]},{"a":5436,"t":"byte","b":[96,169,144,141,0,221,169,2]},{"a":5444,"t":"byte","b":[141,24,208,169,27,141,17,208]},{"a":5452,"t":"gap","n":180},{"a":5632,"l":"stale_start_hop","c":"Leftover: an older version of start_hop ($095A), $1600-$1610: NOP $03AD,X / JSR $B9CA / LAX $F004 / STX $FD18 / NOP $AD / JMP $F000, with targets of an earlier build. Never run.","t":"byte","b":[252,173,3,32,202,185,175,4]},{"a":5640,"t":"byte","b":[240,142,24,253,68,173,76,0]},{"a":5648,"t":"byte","b":[240]},{"a":5649,"l":"ram_fill_1611","c":"$1611-$17FF: alternating $00/$FF bytes in 64-byte groups (one stray $40 at $161C), the pattern C64 RAM holds at power-on: memory the build never wrote, saved with the image. Not used.","t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5657,"t":"byte","b":[255,0,255,64,255,0,255,0]},{"a":5665,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5673,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5681,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5689,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5697,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5705,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5713,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5721,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5729,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5737,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5745,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5753,"t":"byte","b":[255,0,255,0,255,0,255,255]},{"a":5761,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5769,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5777,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5785,"t":"byte","b":[0,255,0,191,0,255,0,255]},{"a":5793,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5801,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5809,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5817,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5825,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5833,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5841,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5849,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5857,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5865,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5873,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":5881,"t":"byte","b":[0,255,0,255,0,255,0,0]},{"a":5889,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5897,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5905,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5913,"t":"byte","b":[255,0,255,64,255,0,255,0]},{"a":5921,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5929,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5937,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5945,"t":"byte","b":[255,0,255,0,255,0,239,0]},{"a":5953,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5961,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5969,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5977,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5985,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":5993,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":6001,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":6009,"t":"byte","b":[255,0,255,0,255,0,255,255]},{"a":6017,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6025,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6033,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6041,"t":"byte","b":[0,255,0,191,0,255,0,255]},{"a":6049,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6057,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6065,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6073,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6081,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6089,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6097,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6105,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6113,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6121,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6129,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":6137,"t":"byte","b":[0,255,0,255,0,255,0]},{"a":6144,"l":"stale_code_0600","c":"Leftover bytes, $1800-$1B59: an earlier assembly of the code and data now at $0600-$0959 (save_wall_of_player, the intro, key_held, the variables), $1200 bytes higher (e.g. $1866 = $0666, $19E6 = $07E6), with differences where it changed. Not used.","t":"byte","b":[169,1,141,30,2,172,56,9]},{"a":6152,"t":"byte","b":[185,205,6,133,17,185,207,6]},{"a":6160,"t":"byte","b":[133,18,0,0,141,17,2,141]},{"a":6168,"t":"byte","b":[18,2,173,30,2,10,170,189]},{"a":6176,"t":"byte","b":[145,247,24,105,1,133,13,133]},{"a":6184,"t":"byte","b":[15,189,146,247,105,0,133,14]},{"a":6192,"t":"byte","b":[41,3,24,105,216,133,16,0]},{"a":6200,"t":"byte","b":[0,177,13,16,2,56,44,24]},{"a":6208,"t":"byte","b":[234,46,17,2,46,18,200,200]},{"a":6216,"t":"byte","b":[200,192,26,144,236,14,17,2]},{"a":6224,"t":"byte","b":[46,18,2,14,17,2,46,18]},{"a":6232,"t":"byte","b":[2,14,17,2,46,18,2,160]},{"a":6240,"t":"byte","b":[0,173,18,2,145,17,200,173]},{"a":6248,"t":"byte","b":[17,2,145,17,160,0,162,0]},{"a":6256,"t":"byte","b":[177,15,41,15,201,9,240,5]},{"a":6264,"t":"byte","b":[41,7,76,145,6,177,13,201]},{"a":6272,"t":"byte","b":[130,176,5,169,1,76,145,6]},{"a":6280,"t":"byte","b":[201,134,176,3,169,9,44,169]},{"a":6288,"t":"byte","b":[10,157,100,2,232,200,200,224]},{"a":6296,"t":"byte","b":[13,144,213,162,0,160,2,189]},{"a":6304,"t":"byte","b":[100,2,232,10,10,10,10,29]},{"a":6312,"t":"byte","b":[100,2,232,145,17,200,192,10]},{"a":6320,"t":"byte","b":[144,237,165,17,24,105,10,133]},{"a":6328,"t":"byte","b":[17,165,18,105,0,133,18,238]},{"a":6336,"t":"byte","b":[30,2,173,30,2,201,17,176]},{"a":6344,"t":"byte","b":[3,76,18,6,96,89,249,4]},{"a":6352,"t":"byte","b":[4,204,204,8,32,170,185,32]},{"a":6360,"t":"byte","b":[108,180,32,123,7,32,234,6]},{"a":6368,"t":"byte","b":[32,124,8,32,161,8,76,215]},{"a":6376,"t":"byte","b":[6,96,172,51,2,192,12,144]},{"a":6384,"t":"byte","b":[248,208,54,162,1,189,116,2]},{"a":6392,"t":"byte","b":[208,47,169,160,141,97,148,169]},{"a":6400,"t":"byte","b":[135,141,157,148,169,1,157,116]},{"a":6408,"t":"byte","b":[2,169,157,157,97,2,169,205]},{"a":6416,"t":"byte","b":[157,69,248,173,167,148,56,233]},{"a":6424,"t":"byte","b":[6,141,166,148,173,107,148,24]},{"a":6432,"t":"byte","b":[105,6,141,106,148,32,244,179]},{"a":6440,"t":"byte","b":[96,173,117,2,240,187,173,166]},{"a":6448,"t":"byte","b":[148,201,160,176,51,169,0,141]},{"a":6456,"t":"byte","b":[117,2,141,106,32,32,11,9]},{"a":6464,"t":"byte","b":[169,1,141,116,2,169,0,97]},{"a":6472,"t":"byte","b":[97,2,169,162,141,69,248,169]},{"a":6480,"t":"byte","b":[135,141,165,148,169,160,141,105]},{"a":6488,"t":"byte","b":[148,169,80,141,97,148,169,96]},{"a":6496,"t":"byte","b":[141,157,148,162,0,32,244,179]},{"a":6504,"t":"byte","b":[96,0,0,141,118,2,169,213]},{"a":6512,"t":"byte","b":[141,71,248,173,116,2,208,240]},{"a":6520,"t":"byte","b":[104,104,96,172,51,2,162,2]},{"a":6528,"t":"byte","b":[192,0,240,46,189,105,148,217]},{"a":6536,"t":"byte","b":[249,7,240,1,96,200,192,25]},{"a":6544,"t":"byte","b":[240,215,185,220,7,141,157,148]},{"a":6552,"t":"byte","b":[185,7,7,140,51,2,141,97]},{"a":6560,"t":"byte","b":[148,185,22,8,157,97,2,24]},{"a":6568,"t":"byte","b":[24,105,180,157,69,248,32,244]},{"a":6576,"t":"byte","b":[179,96,169,240,157,165,148,169]},{"a":6584,"t":"byte","b":[64,157,105,148,169,180,141,69]},{"a":6592,"t":"byte","b":[248,169,213,141,61,248,169,1]},{"a":6600,"t":"byte","b":[157,116,2,169,135,141,157,148]},{"a":6608,"t":"byte","b":[169,160,141,97,148,32,244,179]},{"a":6616,"t":"byte","b":[238,51,2,96,248,250,252,254]},{"a":6624,"t":"byte","b":[254,248,244,240,238,224,220,208]},{"a":6632,"t":"byte","b":[200,176,144,124,123,122,121,120]},{"a":6640,"t":"byte","b":[119,118,117,116,115,114,113,112]},{"a":6648,"t":"byte","b":[111,64,66,68,70,84,90,95]},{"a":6656,"t":"byte","b":[100,102,112,116,120,122,126,126]},{"a":6664,"t":"byte","b":[120,119,118,117,116,115,114,113]},{"a":6672,"t":"byte","b":[112,111,110,109,108,107,0,0]},{"a":6680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6688,"t":"byte","b":[0,0,2,2,2,2,1,1]},{"a":6696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6704,"t":"byte","b":[0,0,140,19,2,72,74,74]},{"a":6712,"t":"byte","b":[74,168,185,108,8,141,0,220]},{"a":6720,"t":"byte","b":[104,41,168,168,173,1,220,57]},{"a":6728,"t":"byte","b":[116,8,208,17,169,255,141,0]},{"a":6736,"t":"byte","b":[220,173,1,220,57,116,8,240]},{"a":6744,"t":"byte","b":[4,56,76,94,8,24,172,19]},{"a":6752,"t":"byte","b":[2,169,127,141,0,220,169,255]},{"a":6760,"t":"byte","b":[141,1,220,96,254,253,251,247]},{"a":6768,"t":"byte","b":[239,191,191,127,1,2,4,8]},{"a":6776,"t":"byte","b":[16,32,64,128,162,2,189,116]},{"a":6784,"t":"byte","b":[2,240,26,188,97,2,224,0]},{"a":6792,"t":"byte","b":[208,13,173,1,2,41,2,205]},{"a":6800,"t":"byte","b":[67,2,240,9,141,67,2,32]},{"a":6808,"t":"byte","b":[219,162,136,16,250,202,16,222]},{"a":6816,"t":"byte","b":[96,173,116,2,240,173,173,1]},{"a":6824,"t":"byte","b":[2,41,4,205,31,2,240,16]},{"a":6832,"t":"byte","b":[141,31,2,173,69,248,24,105]},{"a":6840,"t":"byte","b":[1,201,180,176,4,141,69,248]},{"a":6848,"t":"byte","b":[96,169,213,141,248,248,169,0]},{"a":6856,"t":"byte","b":[141,116,2,96,169,99,141,59]},{"a":6864,"t":"byte","b":[252,141,160,249,169,252,141,21]},{"a":6872,"t":"byte","b":[208,141,28,208,169,0,141,16]},{"a":6880,"t":"byte","b":[208,162,29,157,97,148,202,16]},{"a":6888,"t":"byte","b":[169,169,3,141,37,208,169,10]},{"a":6896,"t":"byte","b":[141,38,208,169,1,141,248,248]},{"a":6904,"t":"byte","b":[169,1,141,40,248,169,1,141]},{"a":6912,"t":"byte","b":[39,248,169,0,141,33,248,141]},{"a":6920,"t":"byte","b":[34,248,96,169,135,141,159,148]},{"a":6928,"t":"byte","b":[169,159,141,148,148,169,141,141]},{"a":6936,"t":"byte","b":[99,148,141,100,148,160,160,63]},{"a":6944,"t":"byte","b":[63,248,200,140,64,248,96,0]},{"a":6952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6968,"t":"byte","b":[0,1,0,0,0,0,0,3]},{"a":6976,"t":"byte","b":[0,0,0,0,0,0,127,253]},{"a":6984,"t":"byte","b":[247,191,254,251,253,247,191,223]},{"a":6992,"t":"byte","b":[239,1,1,0,1,1,0,1]},{"a":7000,"t":"byte","b":[1,0]},{"a":7002,"l":"ram_fill_1b5a","c":"$1B5A-$1BFF: the power-on $00/$FF RAM pattern again, never written by the build. Not used.","t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":7010,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":7018,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":7026,"t":"byte","b":[0,255,0,255,0,255,0,255]},{"a":7034,"t":"byte","b":[0,255,0,255,0,255,255,0]},{"a":7042,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7050,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7058,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7066,"t":"byte","b":[255,0,191,0,255,0,255,0]},{"a":7074,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7082,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7090,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7098,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7106,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7114,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7122,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7130,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7138,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7146,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7154,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":7162,"t":"byte","b":[255,0,255,0,255,0]},{"a":7168,"l":"glyphs_80_9f","c":"Clean copy of the play character set's glyphs $80-$FF ($1C00-$1FFF, 8 bytes each), copied over $CC00-$CFFF by the round-33 set-up ($9C59: at Doh's round, $95E8, and after a life lost in it, $9C41). It differs from the loaded $CC00 only in glyphs $AF, $E8-$EC and $FE, those the game redraws (the exit $E8-$EA, the gates $EB-$EC). This part: glyphs $80-$9F (bricks and the start of Doh's face).","t":"byte","b":[255,255,255,255,255,255,255,0],"x":[40039]},{"a":7176,"t":"byte","b":[252,252,252,252,252,252,252,0]},{"a":7184,"t":"byte","b":[255,213,213,213,213,213,213,0]},{"a":7192,"t":"byte","b":[85,127,127,127,127,255,253,0]},{"a":7200,"t":"byte","b":[255,213,213,213,213,213,255,0]},{"a":7208,"t":"byte","b":[85,85,85,85,85,85,255,0]},{"a":7216,"t":"byte","b":[252,84,84,84,84,84,84,0]},{"a":7224,"t":"byte","b":[124,252,252,244,244,244,84,0]},{"a":7232,"t":"byte","b":[252,92,92,92,92,92,252,0]},{"a":7240,"t":"byte","b":[84,92,92,92,92,92,252,0]},{"a":7248,"t":"byte","b":[255,234,234,234,234,234,234,0]},{"a":7256,"t":"byte","b":[170,191,191,191,191,255,254,0]},{"a":7264,"t":"byte","b":[255,234,234,234,234,234,255,0]},{"a":7272,"t":"byte","b":[170,170,170,170,170,170,255,0]},{"a":7280,"t":"byte","b":[252,168,168,168,168,168,168,0]},{"a":7288,"t":"byte","b":[248,248,248,248,248,248,168,0]},{"a":7296,"t":"byte","b":[252,172,172,172,172,172,252,0]},{"a":7304,"t":"byte","b":[172,172,172,172,172,172,252,0]},{"a":7312,"t":"byte","b":[0,0,0,2,2,2,2,2]},{"a":7320,"t":"byte","b":[47,191,175,62,251,42,250,42]},{"a":7328,"t":"byte","b":[255,255,187,238,169,101,149,85]},{"a":7336,"t":"byte","b":[255,255,187,238,171,86,85,86]},{"a":7344,"t":"byte","b":[252,255,190,239,191,171,175,171]},{"a":7352,"t":"byte","b":[0,0,0,128,128,224,32,224]},{"a":7360,"t":"byte","b":[4,11,4,11,4,11,4,4]},{"a":7368,"t":"byte","b":[16,208,16,208,16,208,16,16]},{"a":7376,"t":"byte","b":[7,10,6,8,4,40,42,47]},{"a":7384,"t":"byte","b":[224,160,160,32,32,32,168,232]},{"a":7392,"t":"byte","b":[19,31,18,31,18,31,18,31]},{"a":7400,"t":"byte","b":[244,244,196,180,196,180,196,180]},{"a":7408,"t":"byte","b":[19,30,31,31,20,11,11,9]},{"a":7416,"t":"byte","b":[196,180,244,196,36,224,32,160]},{"a":7424,"l":"glyphs_a0_bf","c":"Clean glyph copy, glyphs $A0-$BF ($1D00-$1DFF), to $CD00 by $9C6D.","t":"byte","b":[2,2,2,2,10,10,11,11],"x":[40045]},{"a":7432,"t":"byte","b":[128,64,128,64,160,208,224,208]},{"a":7440,"t":"byte","b":[7,7,27,24,31,28,31,28]},{"a":7448,"t":"byte","b":[208,208,208,228,52,244,52,244]},{"a":7456,"t":"byte","b":[47,8,11,2,2,3,11,40]},{"a":7464,"t":"byte","b":[56,224,224,128,128,192,224,232]},{"a":7472,"t":"byte","b":[35,47,115,78,191,206,123,206]},{"a":7480,"t":"byte","b":[4,248,205,177,205,179,238,191]},{"a":7488,"t":"byte","b":[0,1,3,3,7,15,31,31]},{"a":7496,"t":"byte","b":[128,184,187,191,187,185,187,191]},{"a":7504,"t":"byte","b":[0,14,14,142,206,238,207,143]},{"a":7512,"t":"byte","b":[0,0,24,60,121,243,231,207]},{"a":7520,"t":"byte","b":[187,206,243,206,47,10,0,0]},{"a":7528,"t":"byte","b":[238,179,255,178,200,160,0,0]},{"a":7536,"t":"byte","b":[166,233,166,233,182,237,255,15]},{"a":7544,"t":"byte","b":[106,155,181,155,106,187,255,240]},{"a":7552,"t":"byte","b":[102,153,85,85,85,150,233,255]},{"a":7560,"t":"byte","b":[102,153,85,85,85,85,171,255]},{"a":7568,"t":"byte","b":[85,106,106,106,106,106,107,107]},{"a":7576,"t":"byte","b":[85,170,170,170,170,170,255,0]},{"a":7584,"t":"byte","b":[80,247,86,206,60,248,224,0]},{"a":7592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7600,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":7608,"t":"byte","b":[0,0,119,119,119,119,119,119]},{"a":7616,"t":"byte","b":[107,107,106,106,106,106,106,127]},{"a":7624,"t":"byte","b":[0,85,170,170,170,170,170,255]},{"a":7632,"t":"byte","b":[0,119,119,119,119,119,102,68]},{"a":7640,"t":"byte","b":[85,170,170,170,170,170,170,170]},{"a":7648,"t":"byte","b":[85,171,171,171,171,171,171,171]},{"a":7656,"t":"byte","b":[85,191,178,182,191,176,176,240]},{"a":7664,"t":"byte","b":[197,203,203,203,203,11,11,15]},{"a":7672,"t":"byte","b":[0,0,0,0,0,0,84,252]},{"a":7680,"l":"glyphs_c0_df","c":"Clean glyph copy, glyphs $C0-$DF ($1E00-$1EFF), to $CE00 by $9C73.","t":"byte","b":[85,191,178,182,191,178,178,243],"x":[40051]},{"a":7688,"t":"byte","b":[197,203,203,207,192,192,192,192]},{"a":7696,"t":"byte","b":[84,252,44,108,236,44,44,60]},{"a":7704,"t":"byte","b":[20,44,44,188,176,176,176,176]},{"a":7712,"t":"byte","b":[85,191,176,181,191,176,181,255]},{"a":7720,"t":"byte","b":[37,47,44,45,47,44,44,60]},{"a":7728,"t":"byte","b":[112,240,176,112,192,176,176,240]},{"a":7736,"t":"byte","b":[0,8,12,254,255,254,12,8]},{"a":7744,"t":"byte","b":[96,240,120,60,30,60,120,240]},{"a":7752,"t":"byte","b":[0,224,192,128,0,0,0,0]},{"a":7760,"t":"byte","b":[169,172,176,176,160,160,180,186]},{"a":7768,"t":"byte","b":[106,58,14,14,10,10,30,174]},{"a":7776,"t":"byte","b":[189,236,171,234,250,190,106,154]},{"a":7784,"t":"byte","b":[126,58,235,170,175,190,170,169]},{"a":7792,"t":"byte","b":[169,160,128,128,160,164,186,173]},{"a":7800,"t":"byte","b":[106,10,2,2,10,26,174,126]},{"a":7808,"t":"byte","b":[172,235,166,233,250,190,106,154]},{"a":7816,"t":"byte","b":[58,234,155,106,171,190,170,169]},{"a":7824,"t":"byte","b":[169,160,128,168,182,173,172,171]},{"a":7832,"t":"byte","b":[106,10,2,26,174,186,58,234]},{"a":7840,"t":"byte","b":[154,229,169,229,250,190,106,154]},{"a":7848,"t":"byte","b":[166,90,107,90,107,190,170,169]},{"a":7856,"t":"byte","b":[169,160,190,169,172,170,165,169]},{"a":7864,"t":"byte","b":[106,10,190,154,58,170,154,106]},{"a":7872,"t":"byte","b":[165,233,169,234,250,190,106,154]},{"a":7880,"t":"byte","b":[90,170,107,170,171,190,170,169]},{"a":7888,"t":"byte","b":[175,238,171,230,170,229,169,229]},{"a":7896,"t":"byte","b":[185,238,172,235,250,190,106,154]},{"a":7904,"t":"byte","b":[110,186,59,234,171,190,170,169]},{"a":7912,"t":"byte","b":[254,250,251,234,155,170,91,106]},{"a":7920,"t":"byte","b":[245,233,251,253,187,142,35,204]},{"a":7928,"t":"byte","b":[102,85,85,149,166,234,187,239]},{"a":7936,"l":"glyphs_e0_ff","c":"Clean glyph copy, glyphs $E0-$FF ($1F00-$1FFF), to $CF00 by $9C79; glyphs $E8-$EC here are the unaltered exit and gate pieces.","t":"byte","b":[101,85,85,86,107,238,187,238],"x":[40057]},{"a":7944,"t":"byte","b":[91,111,188,239,179,254,200,51]},{"a":7952,"t":"byte","b":[48,252,239,187,174,171,170,218]},{"a":7960,"t":"byte","b":[51,204,243,188,238,187,238,170]},{"a":7968,"t":"byte","b":[63,243,62,251,238,187,234,170]},{"a":7976,"t":"byte","b":[15,255,238,187,238,170,166,154]},{"a":7984,"t":"byte","b":[15,255,238,187,238,170,166,154]},{"a":7992,"t":"byte","b":[0,0,0,3,15,14,143,238]},{"a":8000,"t":"byte","b":[23,43,60,0,15,63,247,220]},{"a":8008,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":8016,"t":"byte","b":[252,176,112,112,176,176,176,252]},{"a":8024,"t":"byte","b":[236,255,63,15,0,60,43,63]},{"a":8032,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":8040,"t":"byte","b":[140,140,188,48,248,200,200,200]},{"a":8048,"t":"byte","b":[248,48,188,140,140,140,188,48]},{"a":8056,"t":"byte","b":[248,200,200,200,248,48,252,140]},{"a":8064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":8072,"t":"byte","b":[63,251,251,251,251,251,251,251]},{"a":8080,"t":"byte","b":[239,204,239,204,239,204,239,204]},{"a":8088,"t":"byte","b":[255,251,251,251,251,251,59,59]},{"a":8096,"t":"byte","b":[63,59,59,59,59,59,59,59]},{"a":8104,"t":"byte","b":[59,59,59,59,59,59,59,59]},{"a":8112,"t":"byte","b":[252,239,239,239,239,239,239,239]},{"a":8120,"t":"byte","b":[251,51,251,51,251,51,251,51]},{"a":8128,"t":"byte","b":[255,239,239,239,239,239,236,236]},{"a":8136,"t":"byte","b":[252,236,236,236,236,236,236,236]},{"a":8144,"t":"byte","b":[236,236,236,236,236,236,236,236]},{"a":8152,"t":"byte","b":[0,15,62,59,59,59,59,63]},{"a":8160,"t":"byte","b":[0,255,170,85,255,255,255,0]},{"a":8168,"t":"byte","b":[252,168,84,255,255,252,168,252]},{"a":8176,"t":"byte","b":[136,136,204,255,187,204,136,204]},{"a":8184,"t":"byte","b":[0,240,188,236,252,252,252,252]},{"a":8192,"l":"sfx_bat","c":"Sound-effect patches: the ball bounces off the Vaus ($ACAA, when no jingle holds the sound) or the held ball is released ($AAF4). Three 31-byte patches, one per voice ($2000, $201F, $203E), loaded by play_sfx ($272F, X voice, A/Y address). Patch layout: $00-$17 the pitch and pulse envelopes (to the voice state), $16-$1A pulse width, control, attack/decay, sustain/release (also straight to the SID), $1B gate time, $1C life, $1D-$1E start frequency.","t":"byte","b":[58,32,0,0,198,223,0,0]},{"a":8200,"t":"byte","b":[1,2,1,1,1,5,0,0]},{"a":8208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":8216,"t":"byte","b":[33,3,138,15,90,58,32,198]},{"a":8224,"t":"byte","b":[223,0,0,58,32,0,0,1]},{"a":8232,"t":"byte","b":[1,1,2,1,5,0,0,0]},{"a":8240,"t":"byte","b":[0,0,0,0,0,0,0,33]},{"a":8248,"t":"byte","b":[3,138,15,90,216,64,158,32]},{"a":8256,"t":"byte","b":[0,0,98,223,0,0,1,1]},{"a":8264,"t":"byte","b":[1,1,2,5,0,0,0,0]},{"a":8272,"t":"byte","b":[0,0,0,0,0,0,33,3]},{"a":8280,"t":"byte","b":[138,15,90,60,65]},{"a":8285,"l":"sfx_brick","c":"Sound-effect patches ($205D, $207C, $209B): a brick breaks ($B26F), unless a jingle holds the sound.","t":"byte","b":[31,24,0,0,225,231,0,0]},{"a":8293,"t":"byte","b":[1,2,1,1,1,5,0,0]},{"a":8301,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":8309,"t":"byte","b":[33,3,138,15,90,62,48,94]},{"a":8317,"t":"byte","b":[207,0,0,162,48,0,0,1]},{"a":8325,"t":"byte","b":[1,1,2,1,5,0,0,0]},{"a":8333,"t":"byte","b":[0,0,0,0,0,0,0,33]},{"a":8341,"t":"byte","b":[3,138,15,90,68,97,6,49]},{"a":8349,"t":"byte","b":[0,0,250,206,0,0,1,1]},{"a":8357,"t":"byte","b":[1,1,2,5,0,0,0,0]},{"a":8365,"t":"byte","b":[0,0,0,0,0,0,33,3]},{"a":8373,"t":"byte","b":[138,15,90,12,98]},{"a":8378,"l":"sfx_enlarge","c":"Sound-effect patches ($20BA, $20D9, $20F8): the E capsule enlarges the Vaus ($AA53).","t":"byte","b":[4,0,0,0,0,0,0,0]},{"a":8386,"t":"byte","b":[255,0,0,0,0,4,0,0]},{"a":8394,"t":"byte","b":[0,0,0,0,0,0,0,8]},{"a":8402,"t":"byte","b":[65,0,240,50,1,32,3,4]},{"a":8410,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":8418,"t":"byte","b":[0,0,0,0,4,0,0,0]},{"a":8426,"t":"byte","b":[0,0,0,0,0,0,8,65]},{"a":8434,"t":"byte","b":[0,240,50,1,42,3,4,0]},{"a":8442,"t":"byte","b":[0,0,0,0,0,0,255,0]},{"a":8450,"t":"byte","b":[0,0,0,4,0,0,0,0]},{"a":8458,"t":"byte","b":[0,0,0,0,0,8,65,0]},{"a":8466,"t":"byte","b":[240,50,1,52,3]},{"a":8471,"l":"sfx_laser","c":"Sound-effect patches ($2117, $2136, $2155): a laser shot is fired ($A7AA). The simulated games never fired, so the simulator did not read these.","t":"byte","b":[240,216,24,252,156,255,0,0]},{"a":8479,"t":"byte","b":[4,5,10,0,0,133,0,0]},{"a":8487,"t":"byte","b":[0,0,0,0,0,0,0,8]},{"a":8495,"t":"byte","b":[65,9,185,30,50,80,195,240]},{"a":8503,"t":"byte","b":[216,24,252,156,255,124,21,4]},{"a":8511,"t":"byte","b":[5,10,0,10,135,0,0,0]},{"a":8519,"t":"byte","b":[0,0,0,0,0,0,8,67]},{"a":8527,"t":"byte","b":[9,185,30,50,1,0,240,216]},{"a":8535,"t":"byte","b":[24,252,156,255,184,11,4,5]},{"a":8543,"t":"byte","b":[10,0,20,135,0,0,0,0]},{"a":8551,"t":"byte","b":[0,0,0,0,0,8,65,9]},{"a":8559,"t":"byte","b":[185,30,50,1,0]},{"a":8564,"l":"sfx_metal","c":"Sound-effect patches ($2174, $2193, $21B2): a silver brick is hit without breaking ($B0BD) or a gold brick is hit ($B050).","t":"byte","b":[116,64,0,0,140,191,0,0]},{"a":8572,"t":"byte","b":[1,2,1,1,1,5,0,0]},{"a":8580,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":8588,"t":"byte","b":[33,3,138,15,90,116,64,140]},{"a":8596,"t":"byte","b":[191,0,0,116,64,0,0,1]},{"a":8604,"t":"byte","b":[1,1,2,1,5,0,0,0]},{"a":8612,"t":"byte","b":[0,0,0,0,0,0,0,33]},{"a":8620,"t":"byte","b":[3,138,15,90,216,64,60,65]},{"a":8628,"t":"byte","b":[0,0,196,190,0,0,1,1]},{"a":8636,"t":"byte","b":[1,1,2,5,0,0,0,0]},{"a":8644,"t":"byte","b":[0,0,0,0,0,0,33,3]},{"a":8652,"t":"byte","b":[138,15,90,120,130]},{"a":8657,"l":"sfx_enemy","c":"Sound-effect patches ($21D1, $21F0, $220F): an enemy is destroyed ($9F2A).","t":"byte","b":[226,4,56,205,0,0,0,0]},{"a":8665,"t":"byte","b":[9,1,0,0,0,5,0,0]},{"a":8673,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":8681,"t":"byte","b":[33,21,155,20,70,58,32,54]},{"a":8689,"t":"byte","b":[247,56,74,0,0,0,0,9]},{"a":8697,"t":"byte","b":[1,1,0,0,5,0,0,0]},{"a":8705,"t":"byte","b":[0,0,0,0,0,0,0,33]},{"a":8713,"t":"byte","b":[21,155,20,70,216,64,22,13]},{"a":8721,"t":"byte","b":[136,150,0,0,0,0,7,1]},{"a":8729,"t":"byte","b":[0,0,0,5,0,0,0,0]},{"a":8737,"t":"byte","b":[0,0,0,0,0,0,33,21]},{"a":8745,"t":"byte","b":[155,20,70,60,65]},{"a":8750,"l":"sfx_exit","c":"Sound-effect patches ($222E, $224D, $226C): the Vaus starts to leave through the open exit ($A48C).","t":"byte","b":[144,232,221,255,10,0,0,0]},{"a":8758,"t":"byte","b":[10,80,255,0,0,4,255,0]},{"a":8766,"t":"byte","b":[0,0,8,0,0,0,0,8]},{"a":8774,"t":"byte","b":[65,25,187,40,200,12,248,144]},{"a":8782,"t":"byte","b":[232,221,255,10,0,0,0,10]},{"a":8790,"t":"byte","b":[80,255,0,4,4,255,0,0]},{"a":8798,"t":"byte","b":[0,8,0,0,0,0,8,65]},{"a":8806,"t":"byte","b":[25,187,40,200,0,250,144,232]},{"a":8814,"t":"byte","b":[221,255,10,0,0,0,10,80]},{"a":8822,"t":"byte","b":[255,0,8,4,255,0,0,0]},{"a":8830,"t":"byte","b":[8,0,0,0,0,8,65,25]},{"a":8838,"t":"byte","b":[187,40,200,244,251]},{"a":8843,"l":"sfx_catch","c":"Sound-effect patches ($228B, $22AA, $22C9): the ball is caught with the C power ($AC7C).","t":"byte","b":[58,32,0,0,198,223,0,0]},{"a":8851,"t":"byte","b":[1,2,1,1,1,5,0,0]},{"a":8859,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":8867,"t":"byte","b":[33,2,166,5,8,58,32,198]},{"a":8875,"t":"byte","b":[223,0,0,58,32,0,0,1]},{"a":8883,"t":"byte","b":[1,1,2,1,5,0,0,0]},{"a":8891,"t":"byte","b":[0,0,0,0,0,0,0,33]},{"a":8899,"t":"byte","b":[2,166,5,8,216,64,158,32]},{"a":8907,"t":"byte","b":[0,0,98,223,0,0,1,1]},{"a":8915,"t":"byte","b":[1,1,2,5,0,0,0,0]},{"a":8923,"t":"byte","b":[0,0,0,0,0,0,33,2]},{"a":8931,"t":"byte","b":[166,5,8,60,65]},{"a":8936,"l":"sfx_start","c":"Sound-effect patches ($22E8, $2307, $2326): played after the intro animation, before the first round ($F04F); the game waits for it to end ($F06F-$F078).","t":"byte","b":[226,4,8,213,0,0,0,0]},{"a":8944,"t":"byte","b":[10,1,0,0,1,5,0,0]},{"a":8952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":8960,"t":"byte","b":[33,21,155,20,140,58,32,54]},{"a":8968,"t":"byte","b":[247,8,82,0,0,0,0,9]},{"a":8976,"t":"byte","b":[1,0,0,2,5,0,0,0]},{"a":8984,"t":"byte","b":[0,0,0,0,0,0,0,33]},{"a":8992,"t":"byte","b":[21,155,20,140,216,64,22,13]},{"a":9000,"t":"byte","b":[112,154,0,0,0,0,8,1]},{"a":9008,"t":"byte","b":[0,0,3,5,0,0,0,0]},{"a":9016,"t":"byte","b":[0,0,0,0,0,0,33,21]},{"a":9024,"t":"byte","b":[155,20,140,60,65]},{"a":9029,"l":"sfx_vaus_lost","c":"Sound-effect patches ($2345, $2364, $2383): the last ball is lost and the Vaus explodes ($9B15).","t":"byte","b":[144,232,206,255,48,242,0,0]},{"a":9037,"t":"byte","b":[10,40,1,0,0,5,255,0]},{"a":9045,"t":"byte","b":[0,0,8,0,0,0,0,8]},{"a":9053,"t":"byte","b":[65,25,187,40,140,49,242,144]},{"a":9061,"t":"byte","b":[232,206,255,48,242,0,0,10]},{"a":9069,"t":"byte","b":[40,1,0,2,5,255,0,0]},{"a":9077,"t":"byte","b":[0,8,0,0,0,0,8,65]},{"a":9085,"t":"byte","b":[25,187,40,140,25,246,144,232]},{"a":9093,"t":"byte","b":[206,255,48,242,0,0,10,40]},{"a":9101,"t":"byte","b":[1,0,4,5,255,0,0,0]},{"a":9109,"t":"byte","b":[8,0,0,0,0,8,65,25]},{"a":9117,"t":"byte","b":[187,40,140,1,250]},{"a":9122,"l":"sfx_doh_hit","c":"Sound-effect patches ($23A2, $23C1, $23E0): the ball hits Doh ($B12A).","t":"byte","b":[226,4,56,205,0,0,0,0]},{"a":9130,"t":"byte","b":[9,2,1,0,0,5,0,0]},{"a":9138,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":9146,"t":"byte","b":[21,21,233,10,90,58,32,54]},{"a":9154,"t":"byte","b":[247,56,74,0,0,0,0,1]},{"a":9162,"t":"byte","b":[2,9,0,5,5,0,0,0]},{"a":9170,"t":"byte","b":[0,0,0,0,0,0,0,21]},{"a":9178,"t":"byte","b":[21,153,10,90,216,64,22,13]},{"a":9186,"t":"byte","b":[136,150,0,0,0,0,2,7]},{"a":9194,"t":"byte","b":[1,0,0,5,0,0,0,0]},{"a":9202,"t":"byte","b":[0,0,0,0,0,0,21,21]},{"a":9210,"t":"byte","b":[153,10,90,60,65]},{"a":9215,"l":"sfx_doh_end","c":"Sound-effect patches ($23FF, $241E, $243D, to $245B): Doh is destroyed, before the ending ($9659).","t":"byte","b":[30,251,248,42,232,3,8,213]},{"a":9223,"t":"byte","b":[10,1,10,1,1,5,0,0]},{"a":9231,"t":"byte","b":[0,0,0,0,0,0,0,8]},{"a":9239,"t":"byte","b":[65,204,252,254,254,16,39,202]},{"a":9247,"t":"byte","b":[8,248,173,0,0,0,0,9]},{"a":9255,"t":"byte","b":[1,0,0,2,5,0,0,0]},{"a":9263,"t":"byte","b":[0,0,0,0,0,0,8,65]},{"a":9271,"t":"byte","b":[204,252,254,254,206,86,234,242]},{"a":9279,"t":"byte","b":[144,101,0,0,0,0,8,1]},{"a":9287,"t":"byte","b":[0,0,3,5,0,0,0,0]},{"a":9295,"t":"byte","b":[0,0,0,0,0,8,65,204]},{"a":9303,"t":"byte","b":[252,254,254,7,135]},{"a":9308,"l":"v1_instr","c":"Music driver, voice 1 instrument, 29 bytes ($245C-$2478), the sound the next notes take; +$00: pitch-envelope segment 1 step, low byte (copied to the voice state at note start when the pitch mode is non-zero). Filled by the sequence commands that copy an instrument from an address given in the sequence (self-modified LDA operands at $2875, $28AA for voice 1, $2975, $29AA voice 2, $2AA8, $2ADD voice 3) or poke single bytes ($28C3, $29C3, $2B0C) or the last five ($290A, $2A0A, $2B47); read at each note ($2C95-$2D46 for voice 1, $2DCB-$2E9F voice 2, $2F28-$2FFC voice 3).","t":"byte","b":[20],"x":[10360,10413,10441,11559]},{"a":9309,"l":"v1_ins_pstep1_hi","c":"Music driver, voice 1 instrument +$01: pitch-envelope segment 1 step, high byte.","t":"byte","b":[0],"x":[11553]},{"a":9310,"l":"v1_ins_pstep2_lo","c":"Music driver, voice 1 instrument +$02: pitch-envelope segment 2 step, low byte.","t":"byte","b":[236],"x":[11547]},{"a":9311,"l":"v1_ins_pstep2_hi","c":"Music driver, voice 1 instrument +$03: pitch-envelope segment 2 step, high byte.","t":"byte","b":[255],"x":[11541]},{"a":9312,"l":"v1_ins_pstep3_lo","c":"Music driver, voice 1 instrument +$04: pitch-envelope segment 3 step, low byte.","t":"byte","b":[20],"x":[11535]},{"a":9313,"l":"v1_ins_pstep3_hi","c":"Music driver, voice 1 instrument +$05: pitch-envelope segment 3 step, high byte.","t":"byte","b":[0],"x":[11529]},{"a":9314,"l":"v1_ins_pstep4_lo","c":"Music driver, voice 1 instrument +$06: pitch-envelope segment 4 step, low byte.","t":"byte","b":[0],"x":[11523]},{"a":9315,"l":"v1_ins_pstep4_hi","c":"Music driver, voice 1 instrument +$07: pitch-envelope segment 4 step, high byte.","t":"byte","b":[0],"x":[11517]},{"a":9316,"l":"v1_ins_plen1","c":"Music driver, voice 1 instrument +$08: pitch-envelope segment 1 length in frames.","t":"byte","b":[3],"x":[11511]},{"a":9317,"l":"v1_ins_plen2","c":"Music driver, voice 1 instrument +$09: pitch-envelope segment 2 length in frames.","t":"byte","b":[6],"x":[11505]},{"a":9318,"l":"v1_ins_plen3","c":"Music driver, voice 1 instrument +$0A: pitch-envelope segment 3 length in frames.","t":"byte","b":[3],"x":[11499]},{"a":9319,"l":"v1_ins_plen4","c":"Music driver, voice 1 instrument +$0B: pitch-envelope segment 4 length in frames.","t":"byte","b":[0],"x":[11493]},{"a":9320,"l":"v1_ins_pdelay","c":"Music driver, voice 1 instrument +$0C: frames before the pitch envelope starts.","t":"byte","b":[30],"x":[11487]},{"a":9321,"l":"v1_ins_pmode","c":"Music driver, voice 1 instrument +$0D: pitch-envelope mode: 0 off; bit 1 apply segment 4's step during the start delay; bit 7 restart from the note, bit 0 repeat from where it is, when the four segments run out; bit 3 (voice 2 only acts on it) arpeggio instead of slides.","t":"byte","b":[5],"x":[9826,11479]},{"a":9322,"l":"v1_ins_wlen1","c":"Music driver, voice 1 instrument +$0E: pulse-width sweep segment 1 length in frames.","t":"byte","b":[50],"x":[11461]},{"a":9323,"l":"v1_ins_wlen2","c":"Music driver, voice 1 instrument +$0F: pulse-width sweep segment 2 length in frames.","t":"byte","b":[50],"x":[11464]},{"a":9324,"l":"v1_ins_wdelay","c":"Music driver, voice 1 instrument +$10: frames before the pulse-width sweep starts.","t":"byte","b":[10],"x":[11455]},{"a":9325,"l":"v1_ins_wmode","c":"Music driver, voice 1 instrument +$11: pulse-width sweep mode: 0 off; bit 7 restart from the start width, bit 0 repeat, when both segments run out.","t":"byte","b":[5],"x":[9829,11413]},{"a":9326,"l":"v1_ins_wstep1_lo","c":"Music driver, voice 1 instrument +$12: pulse-width sweep segment 1 step, low byte.","t":"byte","b":[10],"x":[11449]},{"a":9327,"l":"v1_ins_wstep1_hi","c":"Music driver, voice 1 instrument +$13: pulse-width sweep segment 1 step, high byte.","t":"byte","b":[0],"x":[11443]},{"a":9328,"l":"v1_ins_wstep2_lo","c":"Music driver, voice 1 instrument +$14: pulse-width sweep segment 2 step, low byte.","t":"byte","b":[246],"x":[11437]},{"a":9329,"l":"v1_ins_wstep2_hi","c":"Music driver, voice 1 instrument +$15: pulse-width sweep segment 2 step, high byte.","t":"byte","b":[255],"x":[11431]},{"a":9330,"l":"v1_ins_pw_lo","c":"Music driver, voice 1 instrument +$16: pulse width, low byte, written to the SID at each note.","t":"byte","b":[0],"x":[11378]},{"a":9331,"l":"v1_ins_pw_hi","c":"Music driver, voice 1 instrument +$17: pulse width, high nibble, written to the SID at each note.","t":"byte","b":[8],"x":[11381]},{"a":9332,"l":"v1_ins_ctrl","c":"Music driver, voice 1 instrument +$18: SID control byte (waveform and gate), written without bit 3 at each note; bit 3 here means: release the gate a set time before the note ends.","t":"byte","b":[65],"x":[10519,11402]},{"a":9333,"l":"v1_ins_ad","c":"Music driver, voice 1 instrument +$19: attack/decay byte written to the SID at each note.","t":"byte","b":[20],"x":[11390]},{"a":9334,"l":"v1_ins_sr","c":"Music driver, voice 1 instrument +$1A: sustain/release byte written to the SID at each note.","t":"byte","b":[200],"x":[11396]},{"a":9335,"l":"v1_ins_gate_time","c":"Music driver, voice 1 instrument +$1B: gate-off time: frames into the note (or, with control bit 3, frames before its end) at which the gate is cleared; $FF never.","t":"byte","b":[255],"x":[11587]},{"a":9336,"l":"v1_ins_life","c":"Music driver, voice 1 instrument +$1C: voice life: frames after the gate goes off before the voice's SID registers are cleared; $FF never; 0 stops all of the voice's timers and envelopes.","t":"byte","b":[250],"x":[11590]},{"a":9337,"l":"v2_instr","c":"Music driver, voice 2 instrument, 29 bytes ($2479-$2495), the sound the next notes take; +$00: pitch-envelope segment 1 step, low byte (copied to the voice state at note start when the pitch mode is non-zero). Filled by the sequence commands that copy an instrument from an address given in the sequence (self-modified LDA operands at $2875, $28AA for voice 1, $2975, $29AA voice 2, $2AA8, $2ADD voice 3) or poke single bytes ($28C3, $29C3, $2B0C) or the last five ($290A, $2A0A, $2B47); read at each note ($2C95-$2D46 for voice 1, $2DCB-$2E9F voice 2, $2F28-$2FFC voice 3).","t":"byte","b":[20],"x":[10564,10616,10669,10697,11904]},{"a":9338,"l":"v2_ins_pstep1_hi","c":"Music driver, voice 2 instrument +$01: pitch-envelope segment 1 step, high byte.","t":"byte","b":[0],"x":[10570,11898]},{"a":9339,"l":"v2_ins_pstep2_lo","c":"Music driver, voice 2 instrument +$02: pitch-envelope segment 2 step, low byte.","t":"byte","b":[236],"x":[11892]},{"a":9340,"l":"v2_ins_pstep2_hi","c":"Music driver, voice 2 instrument +$03: pitch-envelope segment 2 step, high byte.","t":"byte","b":[255],"x":[11886]},{"a":9341,"l":"v2_ins_pstep3_lo","c":"Music driver, voice 2 instrument +$04: pitch-envelope segment 3 step, low byte.","t":"byte","b":[20],"x":[11880]},{"a":9342,"l":"v2_ins_pstep3_hi","c":"Music driver, voice 2 instrument +$05: pitch-envelope segment 3 step, high byte.","t":"byte","b":[0],"x":[11874]},{"a":9343,"l":"v2_ins_pstep4_lo","c":"Music driver, voice 2 instrument +$06: pitch-envelope segment 4 step, low byte.","t":"byte","b":[0],"x":[11868]},{"a":9344,"l":"v2_ins_pstep4_hi","c":"Music driver, voice 2 instrument +$07: pitch-envelope segment 4 step, high byte.","t":"byte","b":[0],"x":[11862]},{"a":9345,"l":"v2_ins_plen1","c":"Music driver, voice 2 instrument +$08: pitch-envelope segment 1 length in frames.","t":"byte","b":[3],"x":[11856]},{"a":9346,"l":"v2_ins_plen2","c":"Music driver, voice 2 instrument +$09: pitch-envelope segment 2 length in frames.","t":"byte","b":[6],"x":[11850]},{"a":9347,"l":"v2_ins_plen3","c":"Music driver, voice 2 instrument +$0A: pitch-envelope segment 3 length in frames.","t":"byte","b":[3],"x":[11844]},{"a":9348,"l":"v2_ins_plen4","c":"Music driver, voice 2 instrument +$0B: pitch-envelope segment 4 length in frames.","t":"byte","b":[0],"x":[11838]},{"a":9349,"l":"v2_ins_pdelay","c":"Music driver, voice 2 instrument +$0C: frames before the pitch envelope starts.","t":"byte","b":[10],"x":[11832]},{"a":9350,"l":"v2_ins_pmode","c":"Music driver, voice 2 instrument +$0D: pitch-envelope mode: 0 off; bit 1 apply segment 4's step during the start delay; bit 7 restart from the note, bit 0 repeat from where it is, when the four segments run out; bit 3 (voice 2 only acts on it) arpeggio instead of slides.","t":"byte","b":[5],"x":[11824]},{"a":9351,"l":"v2_ins_wlen1","c":"Music driver, voice 2 instrument +$0E: pulse-width sweep segment 1 length in frames.","t":"byte","b":[50],"x":[11806]},{"a":9352,"l":"v2_ins_wlen2","c":"Music driver, voice 2 instrument +$0F: pulse-width sweep segment 2 length in frames.","t":"byte","b":[50],"x":[11809]},{"a":9353,"l":"v2_ins_wdelay","c":"Music driver, voice 2 instrument +$10: frames before the pulse-width sweep starts.","t":"byte","b":[20],"x":[11800]},{"a":9354,"l":"v2_ins_wmode","c":"Music driver, voice 2 instrument +$11: pulse-width sweep mode: 0 off; bit 7 restart from the start width, bit 0 repeat, when both segments run out.","t":"byte","b":[5],"x":[11758]},{"a":9355,"l":"v2_ins_wstep1_lo","c":"Music driver, voice 2 instrument +$12: pulse-width sweep segment 1 step, low byte.","t":"byte","b":[10],"x":[11794]},{"a":9356,"l":"v2_ins_wstep1_hi","c":"Music driver, voice 2 instrument +$13: pulse-width sweep segment 1 step, high byte.","t":"byte","b":[0],"x":[11788]},{"a":9357,"l":"v2_ins_wstep2_lo","c":"Music driver, voice 2 instrument +$14: pulse-width sweep segment 2 step, low byte.","t":"byte","b":[246],"x":[11782]},{"a":9358,"l":"v2_ins_wstep2_hi","c":"Music driver, voice 2 instrument +$15: pulse-width sweep segment 2 step, high byte.","t":"byte","b":[255],"x":[11776]},{"a":9359,"l":"v2_ins_pw_lo","c":"Music driver, voice 2 instrument +$16: pulse width, low byte, written to the SID at each note.","t":"byte","b":[0],"x":[11723]},{"a":9360,"l":"v2_ins_pw_hi","c":"Music driver, voice 2 instrument +$17: pulse width, high nibble, written to the SID at each note.","t":"byte","b":[8],"x":[11726]},{"a":9361,"l":"v2_ins_ctrl","c":"Music driver, voice 2 instrument +$18: SID control byte (waveform and gate), written without bit 3 at each note; bit 3 here means: release the gate a set time before the note ends.","t":"byte","b":[65],"x":[10775,11747]},{"a":9362,"l":"v2_ins_ad","c":"Music driver, voice 2 instrument +$19: attack/decay byte written to the SID at each note.","t":"byte","b":[20],"x":[11735]},{"a":9363,"l":"v2_ins_sr","c":"Music driver, voice 2 instrument +$1A: sustain/release byte written to the SID at each note.","t":"byte","b":[196],"x":[11741]},{"a":9364,"l":"v2_ins_gate_time","c":"Music driver, voice 2 instrument +$1B: gate-off time: frames into the note (or, with control bit 3, frames before its end) at which the gate is cleared; $FF never.","t":"byte","b":[255],"x":[11932]},{"a":9365,"l":"v2_ins_life","c":"Music driver, voice 2 instrument +$1C: voice life: frames after the gate goes off before the voice's SID registers are cleared; $FF never; 0 stops all of the voice's timers and envelopes.","t":"byte","b":[5],"x":[11935]},{"a":9366,"l":"v3_instr","c":"Music driver, voice 3 instrument, 29 bytes ($2496-$24B2), the sound the next notes take; +$00: pitch-envelope segment 1 step, low byte (copied to the voice state at note start when the pitch mode is non-zero). Filled by the sequence commands that copy an instrument from an address given in the sequence (self-modified LDA operands at $2875, $28AA for voice 1, $2975, $29AA voice 2, $2AA8, $2ADD voice 3) or poke single bytes ($28C3, $29C3, $2B0C) or the last five ($290A, $2A0A, $2B47); read at each note ($2C95-$2D46 for voice 1, $2DCB-$2E9F voice 2, $2F28-$2FFC voice 3).","t":"byte","b":[20],"x":[10846,10923,10976,11026,12253]},{"a":9367,"l":"v3_ins_pstep1_hi","c":"Music driver, voice 3 instrument +$01: pitch-envelope segment 1 step, high byte.","t":"byte","b":[0],"x":[10852,12247]},{"a":9368,"l":"v3_ins_pstep2_lo","c":"Music driver, voice 3 instrument +$02: pitch-envelope segment 2 step, low byte.","t":"byte","b":[236],"x":[12241]},{"a":9369,"l":"v3_ins_pstep2_hi","c":"Music driver, voice 3 instrument +$03: pitch-envelope segment 2 step, high byte.","t":"byte","b":[255],"x":[12235]},{"a":9370,"l":"v3_ins_pstep3_lo","c":"Music driver, voice 3 instrument +$04: pitch-envelope segment 3 step, low byte.","t":"byte","b":[20],"x":[12229]},{"a":9371,"l":"v3_ins_pstep3_hi","c":"Music driver, voice 3 instrument +$05: pitch-envelope segment 3 step, high byte.","t":"byte","b":[0],"x":[12223]},{"a":9372,"l":"v3_ins_pstep4_lo","c":"Music driver, voice 3 instrument +$06: pitch-envelope segment 4 step, low byte.","t":"byte","b":[28],"x":[12217]},{"a":9373,"l":"v3_ins_pstep4_hi","c":"Music driver, voice 3 instrument +$07: pitch-envelope segment 4 step, high byte.","t":"byte","b":[0],"x":[12211]},{"a":9374,"l":"v3_ins_plen1","c":"Music driver, voice 3 instrument +$08: pitch-envelope segment 1 length in frames.","t":"byte","b":[3],"x":[12205]},{"a":9375,"l":"v3_ins_plen2","c":"Music driver, voice 3 instrument +$09: pitch-envelope segment 2 length in frames.","t":"byte","b":[6],"x":[12199]},{"a":9376,"l":"v3_ins_plen3","c":"Music driver, voice 3 instrument +$0A: pitch-envelope segment 3 length in frames.","t":"byte","b":[3],"x":[12193]},{"a":9377,"l":"v3_ins_plen4","c":"Music driver, voice 3 instrument +$0B: pitch-envelope segment 4 length in frames.","t":"byte","b":[0],"x":[12187]},{"a":9378,"l":"v3_ins_pdelay","c":"Music driver, voice 3 instrument +$0C: frames before the pitch envelope starts.","t":"byte","b":[40],"x":[12181]},{"a":9379,"l":"v3_ins_pmode","c":"Music driver, voice 3 instrument +$0D: pitch-envelope mode: 0 off; bit 1 apply segment 4's step during the start delay; bit 7 restart from the note, bit 0 repeat from where it is, when the four segments run out; bit 3 (voice 2 only acts on it) arpeggio instead of slides.","t":"byte","b":[7],"x":[12173]},{"a":9380,"l":"v3_ins_wlen1","c":"Music driver, voice 3 instrument +$0E: pulse-width sweep segment 1 length in frames.","t":"byte","b":[50],"x":[12155]},{"a":9381,"l":"v3_ins_wlen2","c":"Music driver, voice 3 instrument +$0F: pulse-width sweep segment 2 length in frames.","t":"byte","b":[50],"x":[12158]},{"a":9382,"l":"v3_ins_wdelay","c":"Music driver, voice 3 instrument +$10: frames before the pulse-width sweep starts.","t":"byte","b":[40],"x":[12149]},{"a":9383,"l":"v3_ins_wmode","c":"Music driver, voice 3 instrument +$11: pulse-width sweep mode: 0 off; bit 7 restart from the start width, bit 0 repeat, when both segments run out.","t":"byte","b":[5],"x":[12107]},{"a":9384,"l":"v3_ins_wstep1_lo","c":"Music driver, voice 3 instrument +$12: pulse-width sweep segment 1 step, low byte.","t":"byte","b":[10],"x":[12143]},{"a":9385,"l":"v3_ins_wstep1_hi","c":"Music driver, voice 3 instrument +$13: pulse-width sweep segment 1 step, high byte.","t":"byte","b":[0],"x":[12137]},{"a":9386,"l":"v3_ins_wstep2_lo","c":"Music driver, voice 3 instrument +$14: pulse-width sweep segment 2 step, low byte.","t":"byte","b":[246],"x":[12131]},{"a":9387,"l":"v3_ins_wstep2_hi","c":"Music driver, voice 3 instrument +$15: pulse-width sweep segment 2 step, high byte.","t":"byte","b":[255],"x":[12125]},{"a":9388,"l":"v3_ins_pw_lo","c":"Music driver, voice 3 instrument +$16: pulse width, low byte, written to the SID at each note.","t":"byte","b":[0],"x":[12072]},{"a":9389,"l":"v3_ins_pw_hi","c":"Music driver, voice 3 instrument +$17: pulse width, high nibble, written to the SID at each note.","t":"byte","b":[8],"x":[12075]},{"a":9390,"l":"v3_ins_ctrl","c":"Music driver, voice 3 instrument +$18: SID control byte (waveform and gate), written without bit 3 at each note; bit 3 here means: release the gate a set time before the note ends.","t":"byte","b":[65],"x":[11092,12096]},{"a":9391,"l":"v3_ins_ad","c":"Music driver, voice 3 instrument +$19: attack/decay byte written to the SID at each note.","t":"byte","b":[20],"x":[12084]},{"a":9392,"l":"v3_ins_sr","c":"Music driver, voice 3 instrument +$1A: sustain/release byte written to the SID at each note.","t":"byte","b":[200],"x":[12090]},{"a":9393,"l":"v3_ins_gate_time","c":"Music driver, voice 3 instrument +$1B: gate-off time: frames into the note (or, with control bit 3, frames before its end) at which the gate is cleared; $FF never.","t":"byte","b":[255],"x":[12281]},{"a":9394,"l":"v3_ins_life","c":"Music driver, voice 3 instrument +$1C: voice life: frames after the gate goes off before the voice's SID registers are cleared; $FF never; 0 stops all of the voice's timers and envelopes.","t":"byte","b":[50],"x":[12284]},{"a":9395,"l":"filter_preset","c":"Music driver, filter sweep as loaded by the voice 3 sequence command at $2A80 from the table at $368C: 16 bytes, copied to filter_steps..filter_start ($24C3-$24D2) by filter_restart ($2BFE) whenever a sweep starts.","t":"byte","b":[77,1,211,255,251,255,255,255],"x":[10896,11264]},{"a":9403,"l":"filter_preset_b","c":"Second half of filter_preset: the four segment lengths, the delay, the mode and the start cutoff ($24BB-$24C2), copied to $24CB-$24D2.","t":"byte","b":[3,20,10,50,0,4,1,0],"x":[11270]},{"a":9411,"l":"filter_steps","c":"Music driver, filter sweep segment 1 step, low byte (four 16-bit cutoff steps at $24C3-$24CA, added to the cutoff each frame while that segment's counter runs, $2B7A-$2BC4).","t":"byte","b":[77],"x":[11139,11267]},{"a":9412,"l":"filter_step1_hi","c":"Filter sweep segment 1 cutoff step, high byte.","t":"byte","b":[1],"x":[11144]},{"a":9413,"l":"filter_step2_lo","c":"Filter sweep segment 2 cutoff step, low byte.","t":"byte","b":[211],"x":[11159]},{"a":9414,"l":"filter_step2_hi","c":"Filter sweep segment 2 cutoff step, high byte.","t":"byte","b":[255],"x":[11164]},{"a":9415,"l":"filter_step3_lo","c":"Filter sweep segment 3 cutoff step, low byte.","t":"byte","b":[20],"x":[11179]},{"a":9416,"l":"filter_step3_hi","c":"Filter sweep segment 3 cutoff step, high byte.","t":"byte","b":[0],"x":[11184]},{"a":9417,"l":"filter_step4_lo","c":"Filter sweep segment 4 cutoff step, low byte.","t":"byte","b":[236],"x":[11199]},{"a":9418,"l":"filter_step4_hi","c":"Filter sweep segment 4 cutoff step, high byte.","t":"byte","b":[255],"x":[11204]},{"a":9419,"l":"filter_len1","c":"Filter sweep segment 1 length in frames, reloaded into filter_count1 ($24D5) by $2716.","t":"byte","b":[3],"x":[10006,11273]},{"a":9420,"l":"filter_len2","c":"Filter sweep segment 2 length, reloaded into filter_count2.","t":"byte","b":[20],"x":[10012]},{"a":9421,"l":"filter_len3","c":"Filter sweep segment 3 length, reloaded into filter_count3.","t":"byte","b":[50],"x":[10018]},{"a":9422,"l":"filter_len4","c":"Filter sweep segment 4 length, reloaded into filter_count4.","t":"byte","b":[50],"x":[10024]},{"a":9423,"l":"filter_delay","c":"Frames before the filter sweep starts; counted down at $2B6E.","t":"byte","b":[0],"x":[11113,11118]},{"a":9424,"l":"filter_mode","c":"Filter sweep mode: 0 off (cleared by sound_reset $2690 and when the filtered voice falls silent, $3062); bit 1 apply segment 4's step during the delay; bit 7 restart from the start cutoff, bit 0 repeat, when the segments run out ($2BE9).","t":"byte","b":[0],"x":[9896,11101,11121,11241,12386]},{"a":9425,"l":"filter_start_lo","c":"Filter sweep start cutoff, low byte (copied to filter_cutoff by $270A).","t":"byte","b":[1],"x":[9994]},{"a":9426,"l":"filter_start_hi","c":"Filter sweep start cutoff, high byte.","t":"byte","b":[0],"x":[9997]},{"a":9427,"l":"filter_cutoff","c":"Filter cutoff as swept, low byte of a 16-bit value whose bits 0-2 go to $D415 and bits 3-10 to $D416 ($2BCE-$2BE5).","t":"byte","b":[208],"x":[10000,11106,11208]},{"a":9428,"l":"filter_cutoff_hi","c":"Filter cutoff as swept, high byte.","t":"byte","b":[2],"x":[10003,11109,11211]},{"a":9429,"l":"filter_count1","c":"Frames left in filter sweep segment 1.","t":"byte","b":[0],"x":[10009,11130,11135]},{"a":9430,"l":"filter_count2","c":"Frames left in filter sweep segment 2.","t":"byte","b":[0],"x":[10015,11150,11155]},{"a":9431,"l":"filter_count3","c":"Frames left in filter sweep segment 3.","t":"byte","b":[0],"x":[10021,11170,11175]},{"a":9432,"l":"filter_count4","c":"Frames left in filter sweep segment 4.","t":"byte","b":[31],"x":[10027,11190,11195]},{"a":9433,"l":"v1_state","c":"Music driver, voice 1 state, 35 bytes ($24D9-$24FB): the envelopes of the sounding note, loaded from the instrument at each note or from a sound-effect patch by play_sfx ($272F, patch bytes $00-$17 to +$00-$17, $18 to +$1A, $1B-$1C to +$1B-$1C, $1D-$1E to +$18-$19); +$00: pitch step of segment 1, low byte, added to the frequency every frame while the segment 1 counter runs.","t":"byte","b":[20],"x":[10131,10328,10500,11562,12539]},{"a":9434,"l":"v1_pstep1_hi","c":"Music driver, voice 1 state +$01: pitch step of segment 1, high byte.","t":"byte","b":[0],"x":[10105,10334,11556,12544]},{"a":9435,"l":"v1_pstep2_lo","c":"Music driver, voice 1 state +$02: pitch step of segment 2, low byte.","t":"byte","b":[236],"x":[10099,11550,12559]},{"a":9436,"l":"v1_pstep2_hi","c":"Music driver, voice 1 state +$03: pitch step of segment 2, high byte.","t":"byte","b":[255],"x":[10124,11544,12564]},{"a":9437,"l":"v1_pstep3_lo","c":"Music driver, voice 1 state +$04: pitch step of segment 3, low byte.","t":"byte","b":[20],"x":[10117,11538,12579]},{"a":9438,"l":"v1_pstep3_hi","c":"Music driver, voice 1 state +$05: pitch step of segment 3, high byte.","t":"byte","b":[0],"x":[10111,11532,12584]},{"a":9439,"l":"v1_pstep4_lo","c":"Music driver, voice 1 state +$06: pitch step of segment 4, low byte.","t":"byte","b":[0],"x":[11526,12599]},{"a":9440,"l":"v1_pstep4_hi","c":"Music driver, voice 1 state +$07: pitch step of segment 4, high byte.","t":"byte","b":[0],"x":[11520,12604]},{"a":9441,"l":"v1_plen1","c":"Music driver, voice 1 state +$08: segment 1 length, reloaded into its counter (+$1D) when the envelope restarts.","t":"byte","b":[3],"x":[10177,11514]},{"a":9442,"l":"v1_plen2","c":"Music driver, voice 1 state +$09: segment 2 length, reloaded into the counter at +$1E.","t":"byte","b":[6],"x":[10171,11508]},{"a":9443,"l":"v1_plen3","c":"Music driver, voice 1 state +$0A: segment 3 length, reloaded into the counter at +$1F.","t":"byte","b":[3],"x":[10165,11502,11579]},{"a":9444,"l":"v1_plen4","c":"Music driver, voice 1 state +$0B: segment 4 length, reloaded into the counter at +$20.","t":"byte","b":[0],"x":[10159,11496]},{"a":9445,"l":"v1_pdelay","c":"Music driver, voice 1 state +$0C: frames left before the pitch envelope starts.","t":"byte","b":[0],"x":[11490,12513,12518]},{"a":9446,"l":"v1_pmode","c":"Music driver, voice 1 state +$0D: pitch-envelope mode for the sounding note (0 off; bits as in the instrument).","t":"byte","b":[5],"x":[11482,12503,12521,12619]},{"a":9447,"l":"v1_wlen1","c":"Music driver, voice 1 state +$0E: pulse sweep segment 1 length, reloaded into the counter at +$21.","t":"byte","b":[50],"x":[9935,11467]},{"a":9448,"l":"v1_wlen2","c":"Music driver, voice 1 state +$0F: pulse sweep segment 2 length, reloaded into the counter at +$22.","t":"byte","b":[50],"x":[9941,11473]},{"a":9449,"l":"v1_wdelay","c":"Music driver, voice 1 state +$10: frames left before the pulse-width sweep starts.","t":"byte","b":[0],"x":[11458,12414,12419]},{"a":9450,"l":"v1_wmode","c":"Music driver, voice 1 state +$11: pulse-width sweep mode for the sounding note (0 off).","t":"byte","b":[5],"x":[10141,11416,12409,12472]},{"a":9451,"l":"v1_wstep1_lo","c":"Music driver, voice 1 state +$12: pulse-width step of segment 1, low byte.","t":"byte","b":[10],"x":[11452,12439]},{"a":9452,"l":"v1_wstep1_hi","c":"Music driver, voice 1 state +$13: pulse-width step of segment 1, high byte.","t":"byte","b":[0],"x":[11446,12444]},{"a":9453,"l":"v1_wstep2_lo","c":"Music driver, voice 1 state +$14: pulse-width step of segment 2, low byte.","t":"byte","b":[246],"x":[11440,12460]},{"a":9454,"l":"v1_wstep2_hi","c":"Music driver, voice 1 state +$15: pulse-width step of segment 2, high byte.","t":"byte","b":[255],"x":[11434,12465]},{"a":9455,"l":"v1_pw_start_lo","c":"Music driver, voice 1 state +$16: pulse width the sweep restarts from, low byte.","t":"byte","b":[0],"x":[9925,11421]},{"a":9456,"l":"v1_pw_start_hi","c":"Music driver, voice 1 state +$17: pulse width the sweep restarts from, high byte.","t":"byte","b":[8],"x":[9928,11424]},{"a":9457,"l":"v1_note_freq_lo","c":"Music driver, voice 1 state +$18: frequency of the note as played, low byte (the pitch envelope restarts from it).","t":"byte","b":[212],"x":[10149,11366]},{"a":9458,"l":"v1_note_freq_hi","c":"Music driver, voice 1 state +$19: frequency of the note as played, high byte.","t":"byte","b":[5],"x":[10152,11369]},{"a":9459,"l":"v1_ctrl","c":"Music driver, voice 1 state +$1A: control byte of the sounding note; the gate is cleared from this copy.","t":"byte","b":[65],"x":[11405,12327,12346,12351,12401]},{"a":9460,"l":"v1_gate_timer","c":"Music driver, voice 1 state +$1B: frames until the gate is cleared ($FF never).","t":"byte","b":[255],"x":[11593,12336,12343,12356,12390,12396]},{"a":9461,"l":"v1_life_timer","c":"Music driver, voice 1 state +$1C: frames until the voice's SID registers are cleared after the gate goes off; 0 means the voice is idle and its envelopes are not run ($3022); polled with the others by music_busy ($3417); $FF never ends.","t":"byte","b":[250],"x":[9887,11596,12322,12361,12367,13344]},{"a":9462,"l":"v1_pcount1","c":"Music driver, voice 1 state +$1D: frames left in pitch segment 1.","t":"byte","b":[0],"x":[10180,12530,12535]},{"a":9463,"l":"v1_pcount2","c":"Music driver, voice 1 state +$1E: frames left in pitch segment 2.","t":"byte","b":[3],"x":[10174,12550,12555]},{"a":9464,"l":"v1_pcount3","c":"Music driver, voice 1 state +$1F: frames left in pitch segment 3.","t":"byte","b":[3],"x":[10168,12570,12575]},{"a":9465,"l":"v1_pcount4","c":"Music driver, voice 1 state +$20: frames left in pitch segment 4.","t":"byte","b":[0],"x":[10162,12590,12595]},{"a":9466,"l":"v1_wcount1","c":"Music driver, voice 1 state +$21: frames left in pulse sweep segment 1.","t":"byte","b":[0],"x":[9938,11470,12430,12435]},{"a":9467,"l":"v1_wcount2","c":"Music driver, voice 1 state +$22: frames left in pulse sweep segment 2.","t":"byte","b":[6],"x":[9944,11476,12451,12456]},{"a":9468,"l":"v2_state","c":"Music driver, voice 2 state, 35 bytes ($24FC-$251E): the envelopes of the sounding note, loaded from the instrument at each note or from a sound-effect patch by play_sfx ($272F, patch bytes $00-$17 to +$00-$17, $18 to +$1A, $1B-$1C to +$1B-$1C, $1D-$1E to +$18-$19); +$00: pitch step of segment 1, low byte, added to the frequency every frame while the segment 1 counter runs.","t":"byte","b":[20],"x":[10584,10756,11907,12909]},{"a":9469,"l":"v2_pstep1_hi","c":"Music driver, voice 2 state +$01: pitch step of segment 1, high byte.","t":"byte","b":[0],"x":[10590,11901,12914]},{"a":9470,"l":"v2_pstep2_lo","c":"Music driver, voice 2 state +$02: pitch step of segment 2, low byte.","t":"byte","b":[236],"x":[11895,12929]},{"a":9471,"l":"v2_pstep2_hi","c":"Music driver, voice 2 state +$03: pitch step of segment 2, high byte.","t":"byte","b":[255],"x":[11889,12934]},{"a":9472,"l":"v2_pstep3_lo","c":"Music driver, voice 2 state +$04: pitch step of segment 3, low byte; in arpeggio mode (pmode bit 3) the frame countdown to the next arpeggio note.","t":"byte","b":[20],"x":[11883,12846,12854,12949]},{"a":9473,"l":"v2_pstep3_hi","c":"Music driver, voice 2 state +$05: pitch step of segment 3, high byte.","t":"byte","b":[0],"x":[11877,12954]},{"a":9474,"l":"v2_pstep4_lo","c":"Music driver, voice 2 state +$06: pitch step of segment 4, low byte; in arpeggio mode the countdown reload, frames per arpeggio note.","t":"byte","b":[0],"x":[11871,12851,12969]},{"a":9475,"l":"v2_pstep4_hi","c":"Music driver, voice 2 state +$07: pitch step of segment 4, high byte.","t":"byte","b":[0],"x":[11865,12974]},{"a":9476,"l":"v2_plen1","c":"Music driver, voice 2 state +$08: segment 1 length, reloaded into its counter (+$1D) when the envelope restarts; in arpeggio mode the low byte of the arpeggio table's address.","t":"byte","b":[3],"x":[10229,11859,12865]},{"a":9477,"l":"v2_plen2","c":"Music driver, voice 2 state +$09: segment 2 length, reloaded into the counter at +$1E; in arpeggio mode the high byte of the arpeggio table's address.","t":"byte","b":[6],"x":[10223,11853,12870]},{"a":9478,"l":"v2_plen3","c":"Music driver, voice 2 state +$0A: segment 3 length, reloaded into the counter at +$1F; in arpeggio mode the note the arpeggio offsets are added to (set from the sequence's note at $2E94).","t":"byte","b":[3],"x":[10217,11847,11924,12875]},{"a":9479,"l":"v2_plen4","c":"Music driver, voice 2 state +$0B: segment 4 length, reloaded into the counter at +$20; in arpeggio mode the index the arpeggio restarts at.","t":"byte","b":[0],"x":[10211,11841,12862]},{"a":9480,"l":"v2_pdelay","c":"Music driver, voice 2 state +$0C: frames left before the pitch envelope starts; in arpeggio mode the current arpeggio table index, counting down.","t":"byte","b":[0],"x":[11835,12830,12835,12857,12882]},{"a":9481,"l":"v2_pmode","c":"Music driver, voice 2 state +$0D: pitch-envelope mode for the sounding note (0 off; bits as in the instrument).","t":"byte","b":[5],"x":[10196,11827,12816,12838,12989]},{"a":9482,"l":"v2_wlen1","c":"Music driver, voice 2 state +$0E: pulse sweep segment 1 length, reloaded into the counter at +$21.","t":"byte","b":[50],"x":[9958,11812]},{"a":9483,"l":"v2_wlen2","c":"Music driver, voice 2 state +$0F: pulse sweep segment 2 length, reloaded into the counter at +$22.","t":"byte","b":[50],"x":[9964,11818]},{"a":9484,"l":"v2_wdelay","c":"Music driver, voice 2 state +$10: frames left before the pulse-width sweep starts.","t":"byte","b":[0],"x":[11803,12727,12732]},{"a":9485,"l":"v2_wmode","c":"Music driver, voice 2 state +$11: pulse-width sweep mode for the sounding note (0 off).","t":"byte","b":[5],"x":[10188,11761,12722,12785]},{"a":9486,"l":"v2_wstep1_lo","c":"Music driver, voice 2 state +$12: pulse-width step of segment 1, low byte.","t":"byte","b":[10],"x":[11797,12752]},{"a":9487,"l":"v2_wstep1_hi","c":"Music driver, voice 2 state +$13: pulse-width step of segment 1, high byte.","t":"byte","b":[0],"x":[11791,12757]},{"a":9488,"l":"v2_wstep2_lo","c":"Music driver, voice 2 state +$14: pulse-width step of segment 2, low byte.","t":"byte","b":[246],"x":[11785,12773]},{"a":9489,"l":"v2_wstep2_hi","c":"Music driver, voice 2 state +$15: pulse-width step of segment 2, high byte.","t":"byte","b":[255],"x":[11779,12778]},{"a":9490,"l":"v2_pw_start_lo","c":"Music driver, voice 2 state +$16: pulse width the sweep restarts from, low byte.","t":"byte","b":[0],"x":[9948,11766]},{"a":9491,"l":"v2_pw_start_hi","c":"Music driver, voice 2 state +$17: pulse width the sweep restarts from, high byte.","t":"byte","b":[8],"x":[9951,11769]},{"a":9492,"l":"v2_note_freq_lo","c":"Music driver, voice 2 state +$18: frequency of the note as played, low byte (the pitch envelope restarts from it).","t":"byte","b":[212],"x":[10201,11711]},{"a":9493,"l":"v2_note_freq_hi","c":"Music driver, voice 2 state +$19: frequency of the note as played, high byte.","t":"byte","b":[5],"x":[10204,11714]},{"a":9494,"l":"v2_ctrl","c":"Music driver, voice 2 state +$1A: control byte of the sounding note; the gate is cleared from this copy.","t":"byte","b":[65],"x":[11750,12645,12664,12669,12714]},{"a":9495,"l":"v2_gate_timer","c":"Music driver, voice 2 state +$1B: frames until the gate is cleared ($FF never).","t":"byte","b":[255],"x":[11938,12654,12661,12674,12703,12709]},{"a":9496,"l":"v2_life_timer","c":"Music driver, voice 2 state +$1C: frames until the voice's SID registers are cleared after the gate goes off; 0 means the voice is idle and its envelopes are not run ($3022); polled with the others by music_busy ($3417); $FF never ends.","t":"byte","b":[5],"x":[9890,11941,12640,12679,12685,13347]},{"a":9497,"l":"v2_pcount1","c":"Music driver, voice 2 state +$1D: frames left in pitch segment 1.","t":"byte","b":[1],"x":[10232,12900,12905]},{"a":9498,"l":"v2_pcount2","c":"Music driver, voice 2 state +$1E: frames left in pitch segment 2.","t":"byte","b":[6],"x":[10226,12920,12925]},{"a":9499,"l":"v2_pcount3","c":"Music driver, voice 2 state +$1F: frames left in pitch segment 3.","t":"byte","b":[3],"x":[10220,12940,12945]},{"a":9500,"l":"v2_pcount4","c":"Music driver, voice 2 state +$20: frames left in pitch segment 4.","t":"byte","b":[0],"x":[10214,12960,12965]},{"a":9501,"l":"v2_wcount1","c":"Music driver, voice 2 state +$21: frames left in pulse sweep segment 1.","t":"byte","b":[0],"x":[9961,11815,12743,12748]},{"a":9502,"l":"v2_wcount2","c":"Music driver, voice 2 state +$22: frames left in pulse sweep segment 2.","t":"byte","b":[16],"x":[9967,11821,12764,12769]},{"a":9503,"l":"v3_state","c":"Music driver, voice 3 state, 35 bytes ($251F-$2541): the envelopes of the sounding note, loaded from the instrument at each note or from a sound-effect patch by play_sfx ($272F, patch bytes $00-$17 to +$00-$17, $18 to +$1A, $1B-$1C to +$1B-$1C, $1D-$1E to +$18-$19); +$00: pitch step of segment 1, low byte, added to the frequency every frame while the segment 1 counter runs.","t":"byte","b":[20],"x":[10866,12256,13234]},{"a":9504,"l":"v3_pstep1_hi","c":"Music driver, voice 3 state +$01: pitch step of segment 1, high byte.","t":"byte","b":[0],"x":[10872,12250,13239]},{"a":9505,"l":"v3_pstep2_lo","c":"Music driver, voice 3 state +$02: pitch step of segment 2, low byte.","t":"byte","b":[236],"x":[12244,13254]},{"a":9506,"l":"v3_pstep2_hi","c":"Music driver, voice 3 state +$03: pitch step of segment 2, high byte.","t":"byte","b":[255],"x":[12238,13259]},{"a":9507,"l":"v3_pstep3_lo","c":"Music driver, voice 3 state +$04: pitch step of segment 3, low byte.","t":"byte","b":[20],"x":[12232,13274]},{"a":9508,"l":"v3_pstep3_hi","c":"Music driver, voice 3 state +$05: pitch step of segment 3, high byte.","t":"byte","b":[0],"x":[12226,13279]},{"a":9509,"l":"v3_pstep4_lo","c":"Music driver, voice 3 state +$06: pitch step of segment 4, low byte.","t":"byte","b":[28],"x":[12220,13294]},{"a":9510,"l":"v3_pstep4_hi","c":"Music driver, voice 3 state +$07: pitch step of segment 4, high byte.","t":"byte","b":[0],"x":[12214,13299]},{"a":9511,"l":"v3_plen1","c":"Music driver, voice 3 state +$08: segment 1 length, reloaded into its counter (+$1D) when the envelope restarts.","t":"byte","b":[3],"x":[10277,12208]},{"a":9512,"l":"v3_plen2","c":"Music driver, voice 3 state +$09: segment 2 length, reloaded into the counter at +$1E.","t":"byte","b":[6],"x":[10271,12202]},{"a":9513,"l":"v3_plen3","c":"Music driver, voice 3 state +$0A: segment 3 length, reloaded into the counter at +$1F.","t":"byte","b":[3],"x":[10265,12196,12273]},{"a":9514,"l":"v3_plen4","c":"Music driver, voice 3 state +$0B: segment 4 length, reloaded into the counter at +$20.","t":"byte","b":[0],"x":[10259,12190]},{"a":9515,"l":"v3_pdelay","c":"Music driver, voice 3 state +$0C: frames left before the pitch envelope starts.","t":"byte","b":[0],"x":[12184,13208,13213]},{"a":9516,"l":"v3_pmode","c":"Music driver, voice 3 state +$0D: pitch-envelope mode for the sounding note (0 off; bits as in the instrument).","t":"byte","b":[7],"x":[10244,12176,13192,13216,13314]},{"a":9517,"l":"v3_wlen1","c":"Music driver, voice 3 state +$0E: pulse sweep segment 1 length, reloaded into the counter at +$21.","t":"byte","b":[50],"x":[9981,12161]},{"a":9518,"l":"v3_wlen2","c":"Music driver, voice 3 state +$0F: pulse sweep segment 2 length, reloaded into the counter at +$22.","t":"byte","b":[50],"x":[9987,12167]},{"a":9519,"l":"v3_wdelay","c":"Music driver, voice 3 state +$10: frames left before the pulse-width sweep starts.","t":"byte","b":[0],"x":[12152,13103,13108]},{"a":9520,"l":"v3_wmode","c":"Music driver, voice 3 state +$11: pulse-width sweep mode for the sounding note (0 off).","t":"byte","b":[5],"x":[10236,12110,13092,13161]},{"a":9521,"l":"v3_wstep1_lo","c":"Music driver, voice 3 state +$12: pulse-width step of segment 1, low byte.","t":"byte","b":[10],"x":[12146,13128]},{"a":9522,"l":"v3_wstep1_hi","c":"Music driver, voice 3 state +$13: pulse-width step of segment 1, high byte.","t":"byte","b":[0],"x":[12140,13133]},{"a":9523,"l":"v3_wstep2_lo","c":"Music driver, voice 3 state +$14: pulse-width step of segment 2, low byte.","t":"byte","b":[246],"x":[12134,13149]},{"a":9524,"l":"v3_wstep2_hi","c":"Music driver, voice 3 state +$15: pulse-width step of segment 2, high byte.","t":"byte","b":[255],"x":[12128,13154]},{"a":9525,"l":"v3_pw_start_lo","c":"Music driver, voice 3 state +$16: pulse width the sweep restarts from, low byte.","t":"byte","b":[0],"x":[9971,12115]},{"a":9526,"l":"v3_pw_start_hi","c":"Music driver, voice 3 state +$17: pulse width the sweep restarts from, high byte.","t":"byte","b":[8],"x":[9974,12118]},{"a":9527,"l":"v3_note_freq_lo","c":"Music driver, voice 3 state +$18: frequency of the note as played, low byte (the pitch envelope restarts from it).","t":"byte","b":[117],"x":[10249,12060]},{"a":9528,"l":"v3_note_freq_hi","c":"Music driver, voice 3 state +$19: frequency of the note as played, high byte.","t":"byte","b":[1],"x":[10252,12063]},{"a":9529,"l":"v3_ctrl","c":"Music driver, voice 3 state +$1A: control byte of the sounding note; the gate is cleared from this copy.","t":"byte","b":[65],"x":[12099,13015,13034,13039,13084]},{"a":9530,"l":"v3_gate_timer","c":"Music driver, voice 3 state +$1B: frames until the gate is cleared ($FF never).","t":"byte","b":[255],"x":[12287,13024,13031,13044,13073,13079]},{"a":9531,"l":"v3_life_timer","c":"Music driver, voice 3 state +$1C: frames until the voice's SID registers are cleared after the gate goes off; 0 means the voice is idle and its envelopes are not run ($3022); polled with the others by music_busy ($3417); $FF never ends.","t":"byte","b":[50],"x":[9893,12290,13010,13049,13055,13350]},{"a":9532,"l":"v3_pcount1","c":"Music driver, voice 3 state +$1D: frames left in pitch segment 1.","t":"byte","b":[0],"x":[10280,13225,13230]},{"a":9533,"l":"v3_pcount2","c":"Music driver, voice 3 state +$1E: frames left in pitch segment 2.","t":"byte","b":[0],"x":[10274,13245,13250]},{"a":9534,"l":"v3_pcount3","c":"Music driver, voice 3 state +$1F: frames left in pitch segment 3.","t":"byte","b":[0],"x":[10268,13265,13270]},{"a":9535,"l":"v3_pcount4","c":"Music driver, voice 3 state +$20: frames left in pitch segment 4.","t":"byte","b":[0],"x":[10262,13285,13290]},{"a":9536,"l":"v3_wcount1","c":"Music driver, voice 3 state +$21: frames left in pulse sweep segment 1.","t":"byte","b":[46],"x":[9984,12164,13119,13124]},{"a":9537,"l":"v3_wcount2","c":"Music driver, voice 3 state +$22: frames left in pulse sweep segment 2.","t":"byte","b":[50],"x":[9990,12170,13140,13145]},{"a":9538,"l":"filter_voice","c":"Music driver: which voice's notes restart the filter sweep (0 voice 1 at $2C54, 1 voice 2 at $2DAB, 2 voice 3 at $2F08); $FF none (sound_reset $2690, and $3751 writes 0). Set with the resonance/routing by the sequence commands at $2AF6/$2B08.","t":"byte","b":[255],"x":[9908,11003,11348,11691,12040,12380,14169]},{"a":9539,"l":"cutoff_tmp","c":"Music driver scratch: the cutoff's low byte while it is shifted into the $D416 value ($2BD5-$2BE1).","t":"byte","b":[180],"x":[11221,11225,11229,11233]},{"a":9540,"l":"tune_header","c":"Music driver: the tune's first header byte as read by play_tune ($262E); its low nibble is the tempo, frames per length unit (self-modified into the ADC at $2685). Written, never read as a variable.","t":"byte","b":[4],"x":[9774]},{"a":9541,"l":"v1_playing","c":"Music driver: voice 1 sequence running (1), set by play_tune ($2670), cleared by sound_reset and counted down at the sequence's end ($28FA); voice 1's step ($2C15) does nothing while it is 0. Polled with the other voices by music_busy ($3417).","t":"byte","b":[1],"x":[9840,9899,10490,11285,13335]},{"a":9542,"l":"v2_playing","c":"Music driver: voice 2 sequence running flag (play_tune $2670 indexed, end at $29FA, step at $2D6C).","t":"byte","b":[1],"x":[9902,10746,11628,13338]},{"a":9543,"l":"v3_playing","c":"Music driver: voice 3 sequence running flag (play_tune $2670 indexed, end at $2B43, step at $2EC5).","t":"byte","b":[1],"x":[9905,11075,11973,13341]},{"a":9544,"l":"voice_tmp","c":"Music driver scratch: the voice number being set up, in play_tune ($2638-$267D, counting 2 to 0) and play_sfx ($2733).","t":"byte","b":[255],"x":[9784,9816,9853,10035,10091]},{"a":9545,"l":"pair_tmp","c":"Music driver scratch: twice the voice number in play_tune ($263D-$267A); also the base of note_lengths, read as $2549,X with X = a note's length code 1-32 ($2D5A, $2EB3, $3010).","t":"byte","b":[254],"x":[9789,9801,9847,9850,11610,11955,12304]},{"a":9546,"l":"note_lengths","c":"Music driver: 32 note lengths in frames, entry n = (n+1) x tempo, rebuilt for each tune by play_tune ($2682-$268D); a note's length code 1-32 picks $2549+code. As loaded: 4, 8, ... 128 (tempo 4).","t":"byte","b":[4,8,12,16,20,24,28,32],"x":[9863]},{"a":9554,"t":"byte","b":[36,40,44,48,52,56,60,64]},{"a":9562,"t":"byte","b":[68,72,76,80,84,88,92,96]},{"a":9570,"t":"byte","b":[100,104,108,112,116,120,124,128]},{"a":9578,"l":"sfx_sid_offset","c":"Music driver: per voice, the SID register offset of the pulse-width register ($02, $09, $10); play_sfx ($2740) writes a patch's bytes $16-$1A to registers +0..+4 from there (pulse width, control, attack/decay, sustain/release) and its bytes $1D-$1E to the frequency just below.","t":"byte","b":[2,9,16],"x":[10048,10056]},{"a":9581,"l":"instr_offset","c":"Music driver: per voice, the offset of its instrument block from v1_instr ($00, $1D, $3A), used by play_tune ($265B) to clear the instrument's mode bytes.","t":"byte","b":[0,29,58],"x":[9819]},{"a":9584,"l":"state_offset","c":"Music driver: per voice, the offset of byte +$17 of its state block from v1_state ($17, $3A, $5D); play_sfx ($276E) copies a patch's first 24 bytes in backwards from there.","t":"byte","b":[23,58,93],"x":[10094]},{"a":9587,"l":"freq_lo","c":"Music driver: SID frequency table, low bytes, 81 entries for notes 0-80 (note + transpose): note 0 is 279 ($0117, 16.4 Hz on a PAL clock, C0), note 48 is 4471 (262.6 Hz, middle C), note 79 G6; entry 80 is 0. High bytes at freq_hi ($25C4).","t":"byte","b":[23,40,58,76,96,117,139,163],"x":[11363,11708,12057,12886]},{"a":9595,"t":"byte","b":[188,214,242,16,47,80,115,153]},{"a":9603,"t":"byte","b":[192,234,22,69,119,172,228,31]},{"a":9611,"t":"byte","b":[94,160,231,50,128,212,45,139]},{"a":9619,"t":"byte","b":[238,88,200,62,188,65,205,99]},{"a":9627,"t":"byte","b":[1,168,90,22,221,176,144,124]},{"a":9635,"t":"byte","b":[119,129,155,197,2,81,180,44]},{"a":9643,"t":"byte","b":[186,96,31,249,239,3,54,139]},{"a":9651,"t":"byte","b":[3,161,103,87,115,192,62,241]},{"a":9659,"t":"byte","b":[222,5,108,22,6,67,206,174]},{"a":9667,"t":"byte","b":[0]},{"a":9668,"l":"freq_hi","c":"Music driver: SID frequency table, high bytes, 81 entries, $25C4-$2614 (this label's range ends at $25FF; $2600-$2614 continue the table).","t":"byte","b":[1,1,1,1,1,1,1,1],"x":[11360,11705,12054,12889]},{"a":9676,"t":"byte","b":[1,1,1,2,2,2,2,2]},{"a":9684,"t":"byte","b":[2,2,3,3,3,3,3,4]},{"a":9692,"t":"byte","b":[4,4,4,5,5,5,6,6]},{"a":9700,"t":"byte","b":[6,7,7,8,8,9,9,10]},{"a":9708,"t":"byte","b":[11,11,12,13,13,14,15,16]},{"a":9716,"t":"byte","b":[17,18,19,20,22,23,24,26]},{"a":9724,"t":"byte","b":[27,29,31,32]},{"a":9728,"l":"note_freq_hi_tail","c":"High bytes of the SID frequencies of notes 60-80, the last 21 entries of the 81-entry note table whose high bytes start at $25C4 and low bytes at $2573 (note 0 = C0 at 16.4 Hz, equal temperament, A4 = note 57; note 80 is frequency 0, silence). Read through LDY $25C4,X at $2C60/$2DB9/$2F16 and LDA $25C4,Y at $3259","t":"byte","b":[34,37,39,41,44,46,49,52]},{"a":9736,"t":"byte","b":[55,58,62,65,69,74,78,83]},{"a":9744,"t":"byte","b":[88,93,98,104,0]},{"a":9749,"l":"sound_tick_unused","c":"Unreferenced copy of the per-frame sound tick: the three sequencer ticks ($2C15, $2D6C, $2EC5), the three effect ticks ($3022, $3160, $32D2), then the filter tick $2B5D. Nothing in the image calls or points at $2615 and the simulator never ran it; the live tick is the same seven calls with the filter tick first, at $F892 inside the CIA 2 NMI handler","t":"code","b":[32,21,44],"m":"jsr","oa":11285,"o":"seq0_tick"},{"a":9752,"t":"code","b":[32,108,45],"m":"jsr","oa":11628,"o":"seq1_tick"},{"a":9755,"t":"code","b":[32,197,46],"m":"jsr","oa":11973,"o":"seq2_tick"},{"a":9758,"t":"code","b":[32,34,48],"m":"jsr","oa":12322,"o":"fx0_tick"},{"a":9761,"t":"code","b":[32,96,49],"m":"jsr","oa":12640,"o":"fx1_tick"},{"a":9764,"t":"code","b":[32,210,50],"m":"jsr","oa":13010,"o":"fx2_tick"},{"a":9767,"t":"code","b":[32,93,43],"m":"jsr","oa":11101,"o":"filter_tick"},{"a":9770,"t":"code","b":[96],"m":"rts"},{"a":9771,"l":"music_start_tune","c":"Start tune n: Y = 7n+5, the index of the tune's tempo byte in tune_table ($342A + 7n + 6). Stores the tempo byte in $2544 (never read again) and its low nibble into the ADC operand $2686. For voice 2, 1, 0 in turn, when the tune's pointer for that voice is not zero: sequence pointer $E4/$E2/$E0 = pointer, transpose $EE/$ED/$EC = 0, pitch-program mode and pulse-program mode of the voice's instrument block cleared ($2469/$246D + $256D,X, i.e. +$0D/+$11 of the block at $245C/$2479/$2496), call-stack index $EB/$EA/$E9 = 7 (empty), duration counter $E6/$E7/$E8 = 1 so the next tick reads the first event, sequence-active flag $2545-$2547 = 1. A voice whose pointer is zero is left as it was. Then fills the note-length table. Callers: $F03C (tune 0), $96E9 / $96F1 (tunes 1 / 2), $9B8D (tune 4), $967E (tune 5), $A8A6 and $FAF6 (tune 6), $B4D4 (tune 8, the title); no caller of tune 7 (Y = $36) was found. Does not silence anything: $2690 is called first","t":"code","b":[185,43,52],"m":"lda","oa":13355,"o":"f_342B,y","x":[38526,38633,38641,39821,43174,46292,61500,64246]},{"a":9774,"t":"code","b":[141,68,37],"m":"sta","oa":9540,"o":"tune_header"},{"a":9777,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":9779,"t":"code","b":[141,134,38],"m":"sta","oa":9862,"o":"a_2686"},{"a":9782,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":9784,"t":"code","b":[142,72,37],"m":"stx","oa":9544,"o":"voice_tmp"},{"a":9787,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":9789,"t":"code","b":[142,73,37],"m":"stx","oa":9545,"o":"pair_tmp"},{"a":9792,"t":"code","b":[136],"m":"dey"},{"a":9793,"l":"b_2641","t":"code","b":[185,42,52],"m":"lda","oa":13354,"o":"tune_table,y","x":[9856]},{"a":9796,"t":"code","b":[25,43,52],"m":"ora","oa":13355,"o":"f_342B,y"},{"a":9799,"t":"code","b":[240,44],"m":"beq","oa":9845,"o":"b_2675"},{"a":9801,"t":"code","b":[174,73,37],"m":"ldx","oa":9545,"o":"pair_tmp"},{"a":9804,"t":"code","b":[185,42,52],"m":"lda","oa":13354,"o":"tune_table,y"},{"a":9807,"t":"code","b":[149,224],"m":"sta","oa":224,"o":"v1_seq_ptr,x"},{"a":9809,"t":"code","b":[185,43,52],"m":"lda","oa":13355,"o":"f_342B,y"},{"a":9812,"t":"code","b":[149,225],"m":"sta","oa":225,"o":"v1_seq_ptr_hi,x"},{"a":9814,"t":"code","b":[132,253],"m":"sty","oa":253,"o":"sfx_ptr"},{"a":9816,"t":"code","b":[174,72,37],"m":"ldx","oa":9544,"o":"voice_tmp"},{"a":9819,"t":"code","b":[188,109,37],"m":"ldy","oa":9581,"o":"instr_offset,x"},{"a":9822,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":9824,"t":"code","b":[149,236],"m":"sta","oa":236,"o":"v1_transpose,x"},{"a":9826,"t":"code","b":[153,105,36],"m":"sta","oa":9321,"o":"v1_ins_pmode,y"},{"a":9829,"t":"code","b":[153,109,36],"m":"sta","oa":9325,"o":"v1_ins_wmode,y"},{"a":9832,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":9834,"t":"code","b":[149,233],"m":"sta","oa":233,"o":"v1_stack_index,x"},{"a":9836,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":9838,"t":"code","b":[149,230],"m":"sta","oa":230,"o":"v1_note_wait,x"},{"a":9840,"t":"code","b":[157,69,37],"m":"sta","oa":9541,"o":"v1_playing,x"},{"a":9843,"t":"code","b":[164,253],"m":"ldy","oa":253,"o":"sfx_ptr"},{"a":9845,"l":"b_2675","t":"code","b":[136],"m":"dey","x":[9799]},{"a":9846,"t":"code","b":[136],"m":"dey"},{"a":9847,"t":"code","b":[206,73,37],"m":"dec","oa":9545,"o":"pair_tmp"},{"a":9850,"t":"code","b":[206,73,37],"m":"dec","oa":9545,"o":"pair_tmp"},{"a":9853,"t":"code","b":[206,72,37],"m":"dec","oa":9544,"o":"voice_tmp"},{"a":9856,"t":"code","b":[16,191],"m":"bpl","oa":9793,"o":"b_2641"},{"a":9858,"c":"Note-length table: $254A+i = (i+1) x tempo for i = 0..31 (8 bits; the largest index any tune uses times its tempo stays below 256). A note whose byte is below $60 takes its length, in ticks, from $2549 + its second byte","t":"code","b":[24],"m":"clc"},{"a":9859,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":9861,"l":"b_2685","t":"code","b":[105,4],"m":"adc","o":"#$04","x":[9869]},{"a":9862,"t":"note","l":"a_2686","c":"Self-modified operand: $262B writes the tune tempo (low nibble of the tune record byte 6) here, so ADC #tempo builds the note-length table $254A-$2569 as tempo, 2*tempo, 3*tempo ...","note":"inside the item at $2685","x":[9779]},{"a":9863,"t":"code","b":[157,74,37],"m":"sta","oa":9546,"o":"note_lengths,x"},{"a":9866,"t":"code","b":[232],"m":"inx"},{"a":9867,"t":"code","b":[224,32],"m":"cpx","o":"#$20"},{"a":9869,"t":"code","b":[144,246],"m":"bcc","oa":9861,"o":"b_2685"},{"a":9871,"t":"code","b":[96],"m":"rts"},{"a":9872,"l":"sound_reset","c":"Silence the SID and reset the driver: each register $D416 down to $D400 gets $08 then $00 (so each control register's test bit is set and cleared, stopping the oscillators); clears the sequence-active flags $2545-$2547, the three voices' life counters ($24F5, $2518, $253B) and the filter-program mode $24D0; filter voice $2542 = $FF (none); $D417 = $F0 (resonance 15, no voice filtered); $D418 = $0F and $3FFF = $0F (volume 15, no filter mode). Called before tunes and at screen changes: $F018, $F02E, $9695, $9B12, $B4C7","t":"code","b":[162,22],"m":"ldx","o":"#$16","x":[38549,39698,46279,61464,61486]},{"a":9874,"l":"b_2692","t":"code","b":[169,8],"m":"lda","o":"#$08","x":[9885]},{"a":9876,"t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x"},{"a":9879,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":9881,"t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x"},{"a":9884,"t":"code","b":[202],"m":"dex"},{"a":9885,"t":"code","b":[16,243],"m":"bpl","oa":9874,"o":"b_2692"},{"a":9887,"t":"code","b":[141,245,36],"m":"sta","oa":9461,"o":"v1_life_timer"},{"a":9890,"t":"code","b":[141,24,37],"m":"sta","oa":9496,"o":"v2_life_timer"},{"a":9893,"t":"code","b":[141,59,37],"m":"sta","oa":9531,"o":"v3_life_timer"},{"a":9896,"t":"code","b":[141,208,36],"m":"sta","oa":9424,"o":"filter_mode"},{"a":9899,"t":"code","b":[141,69,37],"m":"sta","oa":9541,"o":"v1_playing"},{"a":9902,"t":"code","b":[141,70,37],"m":"sta","oa":9542,"o":"v2_playing"},{"a":9905,"t":"code","b":[141,71,37],"m":"sta","oa":9543,"o":"v3_playing"},{"a":9908,"t":"code","b":[142,66,37],"m":"stx","oa":9538,"o":"filter_voice"},{"a":9911,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":9913,"t":"code","b":[141,23,212],"m":"sta","o":"sid_filter_resonance"},{"a":9916,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":9918,"t":"code","b":[141,255,63],"m":"sta","oa":16383,"o":"sample_filter_bits"},{"a":9921,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":9924,"t":"code","b":[96],"m":"rts"},{"a":9925,"l":"pulse0_restart","c":"Voice 0 pulse program, start again: running pulse width $F1/$F2 = the note's start width ($24EF/$24F0), then (falling into $26CB with the same X/Y) the phase counters $24FA/$24FB = the phase lengths $24E7/$24E8. Called from $279D (sound effect) and from fx0_tick when the program ends with mode bit 7 set","t":"code","b":[174,239,36],"m":"ldx","oa":9455,"o":"v1_pw_start_lo","x":[10146,12481]},{"a":9928,"t":"code","b":[172,240,36],"m":"ldy","oa":9456,"o":"v1_pw_start_hi"},{"a":9931,"l":"pulse0_reload","c":"Voice 0 pulse program, next cycle without returning to the start width: stores X/Y (the running width) in $F1/$F2 and reloads the phase counters $24FA/$24FB from $24E7/$24E8. fx0_tick calls it when the program ends with mode bit 0 set, so the width keeps sweeping up and down","t":"code","b":[134,241],"m":"stx","oa":241,"o":"v1_pw","x":[12487]},{"a":9933,"t":"code","b":[132,242],"m":"sty","oa":242,"o":"v1_pw_hi"},{"a":9935,"t":"code","b":[173,231,36],"m":"lda","oa":9447,"o":"v1_wlen1"},{"a":9938,"t":"code","b":[141,250,36],"m":"sta","oa":9466,"o":"v1_wcount1"},{"a":9941,"t":"code","b":[173,232,36],"m":"lda","oa":9448,"o":"v1_wlen2"},{"a":9944,"t":"code","b":[141,251,36],"m":"sta","oa":9467,"o":"v1_wcount2"},{"a":9947,"t":"code","b":[96],"m":"rts"},{"a":9948,"l":"pulse1_restart","c":"Voice 1 pulse program, start again: $F3/$F4 = start width $2512/$2513, then (falling into $26E2) phase counters $251D/$251E = $250A/$250B","t":"code","b":[174,18,37],"m":"ldx","oa":9490,"o":"v2_pw_start_lo","x":[10193,12794]},{"a":9951,"t":"code","b":[172,19,37],"m":"ldy","oa":9491,"o":"v2_pw_start_hi"},{"a":9954,"l":"pulse1_reload","c":"Voice 1 pulse program, next cycle: $F3/$F4 = X/Y, phase counters $251D/$251E reloaded from $250A/$250B (mode bit 0)","t":"code","b":[134,243],"m":"stx","oa":243,"o":"v2_pw","x":[12800]},{"a":9956,"t":"code","b":[132,244],"m":"sty","oa":244,"o":"v2_pw_hi"},{"a":9958,"t":"code","b":[173,10,37],"m":"lda","oa":9482,"o":"v2_wlen1"},{"a":9961,"t":"code","b":[141,29,37],"m":"sta","oa":9501,"o":"v2_wcount1"},{"a":9964,"t":"code","b":[173,11,37],"m":"lda","oa":9483,"o":"v2_wlen2"},{"a":9967,"t":"code","b":[141,30,37],"m":"sta","oa":9502,"o":"v2_wcount2"},{"a":9970,"t":"code","b":[96],"m":"rts"},{"a":9971,"l":"pulse2_restart","c":"Voice 2 pulse program, start again: $F5/$F6 = start width $2535/$2536, then (falling into $26F9) phase counters $2540/$2541 = $252D/$252E","t":"code","b":[174,53,37],"m":"ldx","oa":9525,"o":"v3_pw_start_lo","x":[10241,13170]},{"a":9974,"t":"code","b":[172,54,37],"m":"ldy","oa":9526,"o":"v3_pw_start_hi"},{"a":9977,"l":"pulse2_reload","c":"Voice 2 pulse program, next cycle: $F5/$F6 = X/Y, phase counters $2540/$2541 reloaded from $252D/$252E (mode bit 0)","t":"code","b":[134,245],"m":"stx","oa":245,"o":"v3_pw","x":[13176]},{"a":9979,"t":"code","b":[132,246],"m":"sty","oa":246,"o":"v3_pw_hi"},{"a":9981,"t":"code","b":[173,45,37],"m":"lda","oa":9517,"o":"v3_wlen1"},{"a":9984,"t":"code","b":[141,64,37],"m":"sta","oa":9536,"o":"v3_wcount1"},{"a":9987,"t":"code","b":[173,46,37],"m":"lda","oa":9518,"o":"v3_wlen2"},{"a":9990,"t":"code","b":[141,65,37],"m":"sta","oa":9537,"o":"v3_wcount2"},{"a":9993,"t":"code","b":[96],"m":"rts"},{"a":9994,"l":"filter_restart","c":"Filter program, start again: running cutoff $24D3/$24D4 = start cutoff $24D1/$24D2, then (falling into $2716) phase counters $24D5-$24D8 = phase lengths $24CB-$24CE","t":"code","b":[174,209,36],"m":"ldx","oa":9425,"o":"filter_start_lo","x":[11250,11279]},{"a":9997,"t":"code","b":[172,210,36],"m":"ldy","oa":9426,"o":"filter_start_hi"},{"a":10000,"t":"code","b":[142,211,36],"m":"stx","oa":9427,"o":"filter_cutoff"},{"a":10003,"t":"code","b":[140,212,36],"m":"sty","oa":9428,"o":"filter_cutoff_hi"},{"a":10006,"l":"filter_reload","c":"Filter program, next cycle: phase counters $24D5-$24D8 = $24CB-$24CE, the running cutoff kept (filter_tick, mode bit 0)","t":"code","b":[173,203,36],"m":"lda","oa":9419,"o":"filter_len1","x":[11256]},{"a":10009,"t":"code","b":[141,213,36],"m":"sta","oa":9429,"o":"filter_count1"},{"a":10012,"t":"code","b":[173,204,36],"m":"lda","oa":9420,"o":"filter_len2"},{"a":10015,"t":"code","b":[141,214,36],"m":"sta","oa":9430,"o":"filter_count2"},{"a":10018,"t":"code","b":[173,205,36],"m":"lda","oa":9421,"o":"filter_len3"},{"a":10021,"t":"code","b":[141,215,36],"m":"sta","oa":9431,"o":"filter_count3"},{"a":10024,"t":"code","b":[173,206,36],"m":"lda","oa":9422,"o":"filter_len4"},{"a":10027,"t":"code","b":[141,216,36],"m":"sta","oa":9432,"o":"filter_count4"},{"a":10030,"t":"code","b":[96],"m":"rts"},{"a":10031,"l":"sound_effect_start","c":"Start a sound on voice X (0-2) at once, outside any sequence: A/Y = address (low/high) of a 31-byte record. Turns the filter off for every voice ($D417 = 0) and sets volume 15 ($D418 = $0F), sets the voice's test bit, writes record bytes $16-$1A to the voice's pulse width low/high, control, AD and SR and $1D/$1E to its frequency (the register base comes from $256A,X = 2/9/16, patched into the STA at $2754), then copies the record into the voice's 35-byte workspace ($24D9/$24FC/$251F, end offsets from $2570,X): bytes $00-$17 to +$00..+$17 (pitch program, pulse program, start width), $18 to +$1A (control), $1B to +$1B (gate time), $1C to +$1C (life), $1D/$1E to +$18/+$19 (base frequency); then starts the voice's pulse and pitch programs. The effect ticks then run it each frame until its life ends. The sequencer is not stopped: a tune playing on that voice replaces the sound at its next note. Called with three records in a row (X = 0, 1, 2) for each game sound, e.g. the JSRs at $F055, $9B1B, $9F30, $AA59, $AC82 (records in $2000-$24FF)","t":"code","b":[133,253],"m":"sta","oa":253,"o":"sfx_ptr","x":[38495,38504,38513,39707,39716,39725,40752,40761,40770,42130,42139,42148,42928,42937,42946,43609,43618,43627,43770,43779,43788,44162,44171,44180,44208,44217,44226,45142,45151,45160,45251,45260,45269,45360,45369,45378,45685,45694,45703,61525,61534,61543]},{"a":10033,"t":"code","b":[132,254],"m":"sty","oa":254,"o":"sfx_ptr_hi"},{"a":10035,"t":"code","b":[142,72,37],"m":"stx","oa":9544,"o":"voice_tmp"},{"a":10038,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10040,"t":"code","b":[141,23,212],"m":"sta","o":"sid_filter_resonance"},{"a":10043,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":10045,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":10048,"t":"code","b":[189,106,37],"m":"lda","oa":9578,"o":"sfx_sid_offset,x"},{"a":10051,"t":"code","b":[141,85,39],"m":"sta","oa":10069,"o":"a_2755"},{"a":10054,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":10056,"t":"code","b":[188,106,37],"m":"ldy","oa":9578,"o":"sfx_sid_offset,x"},{"a":10059,"t":"code","b":[153,2,212],"m":"sta","o":"sid_v1_pulse_lo,y"},{"a":10062,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":10064,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":10066,"l":"b_2752","t":"code","b":[177,253],"m":"lda","oa":253,"o":"(sfx_ptr),y","x":[10073]},{"a":10068,"t":"code","b":[157,16,212],"m":"sta","o":"sid_v3_pulse_lo,x"},{"a":10069,"t":"note","l":"a_2755","c":"Operand low byte of STA $D410,X at $2754, rewritten by $2743 with the voice's register offset ($256A,X = 2, 9 or 16) so the loop writes $D402-$D406, $D409-$D40D or $D410-$D414; $275D reads it back as the base of the frequency writes STA $D3FE,X / $D3FF,X","note":"inside the item at $2754","x":[10051,10077]},{"a":10071,"t":"code","b":[136],"m":"dey"},{"a":10072,"t":"code","b":[202],"m":"dex"},{"a":10073,"t":"code","b":[16,247],"m":"bpl","oa":10066,"o":"b_2752"},{"a":10075,"t":"code","b":[160,29],"m":"ldy","o":"#$1D"},{"a":10077,"t":"code","b":[174,85,39],"m":"ldx","oa":10069,"o":"a_2755"},{"a":10080,"t":"code","b":[177,253],"m":"lda","oa":253,"o":"(sfx_ptr),y"},{"a":10082,"t":"code","b":[157,254,211],"m":"sta","o":"$D3FE,x"},{"a":10085,"t":"code","b":[200],"m":"iny"},{"a":10086,"t":"code","b":[177,253],"m":"lda","oa":253,"o":"(sfx_ptr),y"},{"a":10088,"t":"code","b":[157,255,211],"m":"sta","o":"$D3FF,x"},{"a":10091,"t":"code","b":[172,72,37],"m":"ldy","oa":9544,"o":"voice_tmp"},{"a":10094,"t":"code","b":[190,112,37],"m":"ldx","oa":9584,"o":"state_offset,y"},{"a":10097,"t":"code","b":[160,30],"m":"ldy","o":"#$1E"},{"a":10099,"t":"code","b":[157,219,36],"m":"sta","oa":9435,"o":"v1_pstep2_lo,x"},{"a":10102,"t":"code","b":[136],"m":"dey"},{"a":10103,"t":"code","b":[177,253],"m":"lda","oa":253,"o":"(sfx_ptr),y"},{"a":10105,"t":"code","b":[157,218,36],"m":"sta","oa":9434,"o":"v1_pstep1_hi,x"},{"a":10108,"t":"code","b":[136],"m":"dey"},{"a":10109,"t":"code","b":[177,253],"m":"lda","oa":253,"o":"(sfx_ptr),y"},{"a":10111,"t":"code","b":[157,222,36],"m":"sta","oa":9438,"o":"v1_pstep3_hi,x"},{"a":10114,"t":"code","b":[136],"m":"dey"},{"a":10115,"t":"code","b":[177,253],"m":"lda","oa":253,"o":"(sfx_ptr),y"},{"a":10117,"t":"code","b":[157,221,36],"m":"sta","oa":9437,"o":"v1_pstep3_lo,x"},{"a":10120,"t":"code","b":[160,24],"m":"ldy","o":"#$18"},{"a":10122,"t":"code","b":[177,253],"m":"lda","oa":253,"o":"(sfx_ptr),y"},{"a":10124,"t":"code","b":[157,220,36],"m":"sta","oa":9436,"o":"v1_pstep2_hi,x"},{"a":10127,"t":"code","b":[160,23],"m":"ldy","o":"#$17"},{"a":10129,"l":"b_2791","t":"code","b":[177,253],"m":"lda","oa":253,"o":"(sfx_ptr),y","x":[10136]},{"a":10131,"t":"code","b":[157,217,36],"m":"sta","oa":9433,"o":"v1_state,x"},{"a":10134,"t":"code","b":[202],"m":"dex"},{"a":10135,"t":"code","b":[136],"m":"dey"},{"a":10136,"t":"code","b":[16,247],"m":"bpl","oa":10129,"o":"b_2791"},{"a":10138,"t":"code","b":[232],"m":"inx"},{"a":10139,"t":"code","b":[208,43],"m":"bne","oa":10184,"o":"b_27C8"},{"a":10141,"t":"code","b":[173,234,36],"m":"lda","oa":9450,"o":"v1_wmode"},{"a":10144,"t":"code","b":[240,3],"m":"beq","oa":10149,"o":"freq0_restart"},{"a":10146,"t":"code","b":[32,197,38],"m":"jsr","oa":9925,"o":"pulse0_restart"},{"a":10149,"l":"freq0_restart","c":"Voice 0 pitch program, start again: running frequency $F7/$F8 = the note's frequency $24F1/$24F2, then (falling into $27AF) phase counters $24F6-$24F9 = phase lengths $24E1-$24E4. Called at each note start ($2D40) unless the program is in arpeggio mode, and by fx0_tick when the program ends with mode bit 7 set","t":"code","b":[174,241,36],"m":"ldx","oa":9457,"o":"v1_note_freq_lo","x":[10144,11584,12628]},{"a":10152,"t":"code","b":[172,242,36],"m":"ldy","oa":9458,"o":"v1_note_freq_hi"},{"a":10155,"t":"code","b":[134,247],"m":"stx","oa":247,"o":"v1_freq"},{"a":10157,"t":"code","b":[132,248],"m":"sty","oa":248,"o":"v1_freq_hi"},{"a":10159,"l":"freq0_reload","c":"Voice 0 pitch program, next cycle from the current frequency: phase counters $24F6-$24F9 = $24E1-$24E4 (fx0_tick, mode bit 0: a repeating wobble such as vibrato)","t":"code","b":[173,228,36],"m":"lda","oa":9444,"o":"v1_plen4","x":[12634]},{"a":10162,"t":"code","b":[141,249,36],"m":"sta","oa":9465,"o":"v1_pcount4"},{"a":10165,"t":"code","b":[173,227,36],"m":"lda","oa":9443,"o":"v1_plen3"},{"a":10168,"t":"code","b":[141,248,36],"m":"sta","oa":9464,"o":"v1_pcount3"},{"a":10171,"t":"code","b":[173,226,36],"m":"lda","oa":9442,"o":"v1_plen2"},{"a":10174,"t":"code","b":[141,247,36],"m":"sta","oa":9463,"o":"v1_pcount2"},{"a":10177,"t":"code","b":[173,225,36],"m":"lda","oa":9441,"o":"v1_plen1"},{"a":10180,"t":"code","b":[141,246,36],"m":"sta","oa":9462,"o":"v1_pcount1"},{"a":10183,"t":"code","b":[96],"m":"rts"},{"a":10184,"l":"b_27C8","c":"sound_effect_start, voices 1 and 2 (X is the workspace end index + 1, so $23 means voice 1, $46 voice 2): start the pulse program when its mode is set ($250D / $2530), then the pitch program when its mode is set ($2509 / $252C)","t":"code","b":[224,70],"m":"cpx","o":"#$46","x":[10139]},{"a":10186,"t":"code","b":[240,48],"m":"beq","oa":10236,"o":"b_27FC"},{"a":10188,"t":"code","b":[173,13,37],"m":"lda","oa":9485,"o":"v2_wmode"},{"a":10191,"t":"code","b":[240,3],"m":"beq","oa":10196,"o":"b_27D4"},{"a":10193,"t":"code","b":[32,220,38],"m":"jsr","oa":9948,"o":"pulse1_restart"},{"a":10196,"l":"b_27D4","t":"code","b":[173,9,37],"m":"lda","oa":9481,"o":"v2_pmode","x":[10191]},{"a":10199,"t":"code","b":[240,34],"m":"beq","oa":10235,"o":"r_27FB"},{"a":10201,"l":"freq1_restart","c":"Voice 1 pitch program, start again: $F9/$FA = note frequency $2514/$2515, then (falling into $27E3) phase counters $2519-$251C = $2504-$2507","t":"code","b":[174,20,37],"m":"ldx","oa":9492,"o":"v2_note_freq_lo","x":[11929,12998]},{"a":10204,"t":"code","b":[172,21,37],"m":"ldy","oa":9493,"o":"v2_note_freq_hi"},{"a":10207,"t":"code","b":[134,249],"m":"stx","oa":249,"o":"v2_freq"},{"a":10209,"t":"code","b":[132,250],"m":"sty","oa":250,"o":"v2_freq_hi"},{"a":10211,"l":"freq1_reload","c":"Voice 1 pitch program, next cycle: phase counters $2519-$251C reloaded from $2504-$2507, frequency kept (mode bit 0)","t":"code","b":[173,7,37],"m":"lda","oa":9479,"o":"v2_plen4","x":[13004]},{"a":10214,"t":"code","b":[141,28,37],"m":"sta","oa":9500,"o":"v2_pcount4"},{"a":10217,"t":"code","b":[173,6,37],"m":"lda","oa":9478,"o":"v2_plen3"},{"a":10220,"t":"code","b":[141,27,37],"m":"sta","oa":9499,"o":"v2_pcount3"},{"a":10223,"t":"code","b":[173,5,37],"m":"lda","oa":9477,"o":"v2_plen2"},{"a":10226,"t":"code","b":[141,26,37],"m":"sta","oa":9498,"o":"v2_pcount2"},{"a":10229,"t":"code","b":[173,4,37],"m":"lda","oa":9476,"o":"v2_plen1"},{"a":10232,"t":"code","b":[141,25,37],"m":"sta","oa":9497,"o":"v2_pcount1"},{"a":10235,"l":"r_27FB","t":"code","b":[96],"m":"rts","x":[10199,10247]},{"a":10236,"l":"b_27FC","t":"code","b":[173,48,37],"m":"lda","oa":9520,"o":"v3_wmode","x":[10186]},{"a":10239,"t":"code","b":[240,3],"m":"beq","oa":10244,"o":"b_2804"},{"a":10241,"t":"code","b":[32,243,38],"m":"jsr","oa":9971,"o":"pulse2_restart"},{"a":10244,"l":"b_2804","t":"code","b":[173,44,37],"m":"lda","oa":9516,"o":"v3_pmode","x":[10239]},{"a":10247,"t":"code","b":[240,242],"m":"beq","oa":10235,"o":"r_27FB"},{"a":10249,"l":"freq2_restart","c":"Voice 2 pitch program, start again: $FB/$FC = note frequency $2537/$2538, then (falling into $2813) phase counters $253C-$253F = $2527-$252A","t":"code","b":[174,55,37],"m":"ldx","oa":9527,"o":"v3_note_freq_lo","x":[12278,13323]},{"a":10252,"t":"code","b":[172,56,37],"m":"ldy","oa":9528,"o":"v3_note_freq_hi"},{"a":10255,"t":"code","b":[134,251],"m":"stx","oa":251,"o":"v3_freq"},{"a":10257,"t":"code","b":[132,252],"m":"sty","oa":252,"o":"v3_freq_hi"},{"a":10259,"l":"freq2_reload","c":"Voice 2 pitch program, next cycle: phase counters $253C-$253F reloaded from $2527-$252A, frequency kept (mode bit 0)","t":"code","b":[173,42,37],"m":"lda","oa":9514,"o":"v3_plen4","x":[13329]},{"a":10262,"t":"code","b":[141,63,37],"m":"sta","oa":9535,"o":"v3_pcount4"},{"a":10265,"t":"code","b":[173,41,37],"m":"lda","oa":9513,"o":"v3_plen3"},{"a":10268,"t":"code","b":[141,62,37],"m":"sta","oa":9534,"o":"v3_pcount3"},{"a":10271,"t":"code","b":[173,40,37],"m":"lda","oa":9512,"o":"v3_plen2"},{"a":10274,"t":"code","b":[141,61,37],"m":"sta","oa":9533,"o":"v3_pcount2"},{"a":10277,"t":"code","b":[173,39,37],"m":"lda","oa":9511,"o":"v3_plen1"},{"a":10280,"t":"code","b":[141,60,37],"m":"sta","oa":9532,"o":"v3_pcount1"},{"a":10283,"t":"code","b":[96],"m":"rts"},{"a":10284,"l":"v0_cmd_c6_transpose_call","c":"Voice 0 sequence command $C6 t lo hi: transpose $EC = t (added to every following note byte), then call the phrase at hi/lo like $C2, returning after these 4 bytes. Command handlers are entered through the vector table $3F00 with Y = 1 and the sequence pointer in $E0/$E1","t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10286,"t":"code","b":[133,236],"m":"sta","oa":236,"o":"v1_transpose"},{"a":10288,"t":"code","b":[200],"m":"iny"},{"a":10289,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10291,"l":"skip_bit_2833","c":"$2C, the opcode of a BIT $xxxx that swallows the two bytes after it: code arriving here from above skips the instruction those bytes hold, while the vector table enters at $2834 and runs it. Part of the driver's code, typed as a byte because it is both.","t":"byte","b":[44]},{"a":10292,"l":"v0_cmd_c2_call","c":"Voice 0 command $C2 lo hi: call a phrase. Pushes the return address (pointer + 3, or + 4 from $C6) on voice 0's call stack ($30+i low, $38+i high, index $E9 from 7 down to 0, so 8 levels counting repeats; unchecked: a ninth would wrap to $2F/$37/$3F), then continues at hi/lo; $C0 returns","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":10294,"t":"code","b":[166,233],"m":"ldx","oa":233,"o":"v1_stack_index"},{"a":10296,"t":"code","b":[24],"m":"clc"},{"a":10297,"t":"code","b":[101,224],"m":"adc","oa":224,"o":"v1_seq_ptr"},{"a":10299,"t":"code","b":[149,48],"m":"sta","oa":48,"o":"v1_stack_lo,x"},{"a":10301,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10303,"t":"code","b":[101,225],"m":"adc","oa":225,"o":"v1_seq_ptr_hi"},{"a":10305,"t":"code","b":[149,56],"m":"sta","oa":56,"o":"v1_stack_hi,x"},{"a":10307,"t":"code","b":[198,233],"m":"dec","oa":233,"o":"v1_stack_index"},{"a":10309,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10311,"t":"code","b":[170],"m":"tax"},{"a":10312,"t":"code","b":[200],"m":"iny"},{"a":10313,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10315,"t":"code","b":[134,224],"m":"stx","oa":224,"o":"v1_seq_ptr"},{"a":10317,"t":"code","b":[133,225],"m":"sta","oa":225,"o":"v1_seq_ptr_hi"},{"a":10319,"t":"code","b":[76,44,44],"m":"jmp","oa":11308,"o":"j_2C2C"},{"a":10322,"l":"v0_cmd_de_set_workspace_word","c":"Voice 0 command $DE i lo hi: store a 16-bit value in voice 0's live workspace at $24D9+i/$24DA+i (pitch or pulse program parameters, effective at once, overwritten at the next note when the instrument has that program); advance 4","t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10324,"t":"code","b":[170],"m":"tax"},{"a":10325,"t":"code","b":[200],"m":"iny"},{"a":10326,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10328,"t":"code","b":[157,217,36],"m":"sta","oa":9433,"o":"v1_state,x"},{"a":10331,"t":"code","b":[200],"m":"iny"},{"a":10332,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10334,"t":"code","b":[157,218,36],"m":"sta","oa":9434,"o":"v1_pstep1_hi,x"},{"a":10337,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10339,"t":"code","b":[76,37,44],"m":"jmp","oa":11301,"o":"j_2C25"},{"a":10342,"l":"v0_cmd_d2_load_instrument","c":"Voice 0 command $D2 n lo hi: copy n+1 bytes from hi/lo to voice 0's instrument block $245C.. (n = $1C loads all 29 bytes); the source address is patched into the LDA at $2875; advance 4","t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10344,"t":"code","b":[170],"m":"tax"},{"a":10345,"t":"code","b":[200],"m":"iny"},{"a":10346,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10348,"t":"code","b":[141,118,40],"m":"sta","oa":10358,"o":"a_2876"},{"a":10351,"t":"code","b":[200],"m":"iny"},{"a":10352,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10354,"t":"code","b":[141,119,40],"m":"sta","oa":10359,"o":"a_2877"},{"a":10357,"l":"b_2875","t":"code","b":[189,105,52],"m":"lda","oa":13417,"o":"instrument_3469,x","x":[10364]},{"a":10358,"t":"note","l":"a_2876","c":"Operand low byte of LDA $3469,X at $2875, written by $286C from the $D2 command's third byte; $3469 is only the last source used before the file was saved","note":"inside the item at $2875","x":[10348]},{"a":10359,"t":"note","l":"a_2877","c":"Operand high byte of LDA $3469,X at $2875, written by $2872 from the $D2 command's fourth byte","note":"inside the item at $2875","x":[10354]},{"a":10360,"t":"code","b":[157,92,36],"m":"sta","oa":9308,"o":"v1_instr,x"},{"a":10363,"t":"code","b":[202],"m":"dex"},{"a":10364,"t":"code","b":[16,247],"m":"bpl","oa":10357,"o":"b_2875"},{"a":10366,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10368,"t":"code","b":[76,37,44],"m":"jmp","oa":11301,"o":"j_2C25"},{"a":10371,"l":"v0_cmd_cc_repeat","c":"Voice 0 command $CC n: start a repeat. Pushes the address after it and the count n on the call stack ($30/$38/$40 + index $E9); the matching $CE jumps back n-1 times; advance 2","t":"code","b":[166,233],"m":"ldx","oa":233,"o":"v1_stack_index"},{"a":10373,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":10375,"t":"code","b":[24],"m":"clc"},{"a":10376,"t":"code","b":[101,224],"m":"adc","oa":224,"o":"v1_seq_ptr"},{"a":10378,"t":"code","b":[149,48],"m":"sta","oa":48,"o":"v1_stack_lo,x"},{"a":10380,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10382,"t":"code","b":[101,225],"m":"adc","oa":225,"o":"v1_seq_ptr_hi"},{"a":10384,"t":"code","b":[149,56],"m":"sta","oa":56,"o":"v1_stack_hi,x"},{"a":10386,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10388,"t":"code","b":[149,64],"m":"sta","oa":64,"o":"v1_repeat,x"},{"a":10390,"t":"code","b":[198,233],"m":"dec","oa":233,"o":"v1_stack_index"},{"a":10392,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":10394,"t":"code","b":[76,37,44],"m":"jmp","oa":11301,"o":"j_2C25"},{"a":10397,"l":"v0_cmd_f0_load_pitch_program","c":"Voice 0 command $F0 lo hi: copy 14 bytes from hi/lo to the pitch program of voice 0's instrument block ($245C-$2469); the address is patched into the LDA at $28AA; advance 3","t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10399,"t":"code","b":[141,171,40],"m":"sta","oa":10411,"o":"a_28AB"},{"a":10402,"t":"code","b":[200],"m":"iny"},{"a":10403,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10405,"t":"code","b":[141,172,40],"m":"sta","oa":10412,"o":"a_28AC"},{"a":10408,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":10410,"l":"b_28AA","t":"code","b":[189,71,57],"m":"lda","oa":14663,"o":"pitch_program_3947,x","x":[10417]},{"a":10411,"t":"note","l":"a_28AB","c":"Operand low byte of LDA $3947,X at $28AA (voice 0 $F0 source), written by $289F; $3947 is the value left from the last use","note":"inside the item at $28AA","x":[10399]},{"a":10412,"t":"note","l":"a_28AC","c":"Operand high byte of LDA $3947,X at $28AA, written by $28A5","note":"inside the item at $28AA","x":[10405]},{"a":10413,"t":"code","b":[157,92,36],"m":"sta","oa":9308,"o":"v1_instr,x"},{"a":10416,"t":"code","b":[202],"m":"dex"},{"a":10417,"t":"code","b":[16,247],"m":"bpl","oa":10410,"o":"b_28AA"},{"a":10419,"t":"code","b":[76,35,44],"m":"jmp","oa":11299,"o":"j_2C23"},{"a":10422,"l":"v0_cmd_c4_jump","c":"Voice 0 command $C4 lo hi: continue the sequence at hi/lo (a loop back for a tune that repeats)","t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10424,"t":"code","b":[170],"m":"tax"},{"a":10425,"t":"code","b":[200],"m":"iny"},{"a":10426,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10428,"t":"code","b":[134,224],"m":"stx","oa":224,"o":"v1_seq_ptr"},{"a":10430,"t":"code","b":[133,225],"m":"sta","oa":225,"o":"v1_seq_ptr_hi"},{"a":10432,"t":"code","b":[76,44,44],"m":"jmp","oa":11308,"o":"j_2C2C"},{"a":10435,"l":"v0_cmd_ca_set_instrument_byte","c":"Voice 0 command $CA i v: instrument block byte $245C+i = v (takes effect at the next note); advance 3","t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10437,"t":"code","b":[170],"m":"tax"},{"a":10438,"t":"code","b":[200],"m":"iny"},{"a":10439,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10441,"t":"code","b":[157,92,36],"m":"sta","oa":9308,"o":"v1_instr,x"},{"a":10444,"t":"code","b":[76,35,44],"m":"jmp","oa":11299,"o":"j_2C23"},{"a":10447,"l":"v0_cmd_ce_repeat_end","c":"Voice 0 command $CE: end of a repeat. Decrements the count at $41+$E9; while it is not zero, goes back to the address saved by $CC; then pops the entry and advances 1","t":"code","b":[166,233],"m":"ldx","oa":233,"o":"v1_stack_index"},{"a":10449,"t":"code","b":[214,65],"m":"dec","oa":65,"o":"v1_repeat_top,x"},{"a":10451,"t":"code","b":[240,11],"m":"beq","oa":10464,"o":"b_28E0"},{"a":10453,"t":"code","b":[180,49],"m":"ldy","oa":49,"o":"v1_stack_lo_top,x"},{"a":10455,"t":"code","b":[181,57],"m":"lda","oa":57,"o":"v1_stack_hi_top,x"},{"a":10457,"t":"code","b":[132,224],"m":"sty","oa":224,"o":"v1_seq_ptr"},{"a":10459,"t":"code","b":[133,225],"m":"sta","oa":225,"o":"v1_seq_ptr_hi"},{"a":10461,"t":"code","b":[76,44,44],"m":"jmp","oa":11308,"o":"j_2C2C"},{"a":10464,"l":"b_28E0","t":"code","b":[230,233],"m":"inc","oa":233,"o":"v1_stack_index","x":[10451]},{"a":10466,"t":"code","b":[152],"m":"tya"},{"a":10467,"t":"code","b":[76,37,44],"m":"jmp","oa":11301,"o":"j_2C25"},{"a":10470,"l":"v0_cmd_c0_return","c":"Voice 0 command $C0: return from a phrase (pop $31/$39 + $E9). With the stack empty ($E9 = 7) the voice's sequence ends: $2545 is decremented to 0 and the voice is left to its effect tick (the note rings out by its own gate and life)","t":"code","b":[164,233],"m":"ldy","oa":233,"o":"v1_stack_index"},{"a":10472,"t":"code","b":[192,7],"m":"cpy","o":"#$07"},{"a":10474,"t":"code","b":[240,14],"m":"beq","oa":10490,"o":"b_28FA"},{"a":10476,"t":"code","b":[230,233],"m":"inc","oa":233,"o":"v1_stack_index"},{"a":10478,"t":"code","b":[182,49],"m":"ldx","oa":49,"o":"v1_stack_lo_top,y"},{"a":10480,"t":"code","b":[185,57,0],"m":"lda","oa":57,"o":"v1_stack_hi_top,y"},{"a":10483,"t":"code","b":[134,224],"m":"stx","oa":224,"o":"v1_seq_ptr"},{"a":10485,"t":"code","b":[133,225],"m":"sta","oa":225,"o":"v1_seq_ptr_hi"},{"a":10487,"t":"code","b":[76,44,44],"m":"jmp","oa":11308,"o":"j_2C2C"},{"a":10490,"l":"b_28FA","t":"code","b":[206,69,37],"m":"dec","oa":9541,"o":"v1_playing","x":[10474]},{"a":10493,"t":"code","b":[96],"m":"rts"},{"a":10494,"l":"v0_cmd_d6_set_workspace_byte","c":"Voice 0 command $D6 i v: live workspace byte $24D9+i = v; advance 3","t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10496,"t":"code","b":[170],"m":"tax"},{"a":10497,"t":"code","b":[200],"m":"iny"},{"a":10498,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10500,"t":"code","b":[157,217,36],"m":"sta","oa":9433,"o":"v1_state,x"},{"a":10503,"t":"code","b":[76,35,44],"m":"jmp","oa":11299,"o":"j_2C23"},{"a":10506,"l":"v0_cmd_d4_load_envelope","c":"Voice 0 command $D4 lo hi: copy 5 bytes from hi/lo to instrument bytes +$18..+$1C ($2474-$2478: control, attack/decay, sustain/release, gate time, life); advance 3","t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10508,"t":"code","b":[133,239],"m":"sta","oa":239,"o":"cmd_ptr"},{"a":10510,"t":"code","b":[200],"m":"iny"},{"a":10511,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":10513,"t":"code","b":[133,240],"m":"sta","oa":240,"o":"cmd_ptr_hi"},{"a":10515,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":10517,"l":"b_2915","t":"code","b":[177,239],"m":"lda","oa":239,"o":"(cmd_ptr),y","x":[10523]},{"a":10519,"t":"code","b":[153,116,36],"m":"sta","oa":9332,"o":"v1_ins_ctrl,y"},{"a":10522,"t":"code","b":[136],"m":"dey"},{"a":10523,"t":"code","b":[16,248],"m":"bpl","oa":10517,"o":"b_2915"},{"a":10525,"t":"code","b":[76,35,44],"m":"jmp","oa":11299,"o":"j_2C23"},{"a":10528,"l":"v1_cmd_c2_call","c":"Voice 1 command $C2 lo hi: call a phrase; return address pointer + 3 pushed on voice 1's stack ($A8+i low, $B0+i high, index $EA from 7); voice 1 has no $C6. Handlers from the vector table $3F32, Y = 1, pointer in $E2/$E3","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":10530,"t":"code","b":[166,234],"m":"ldx","oa":234,"o":"v2_stack_index"},{"a":10532,"t":"code","b":[24],"m":"clc"},{"a":10533,"t":"code","b":[101,226],"m":"adc","oa":226,"o":"v2_seq_ptr"},{"a":10535,"t":"code","b":[149,168],"m":"sta","oa":168,"o":"v2_stack_lo,x"},{"a":10537,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10539,"t":"code","b":[101,227],"m":"adc","oa":227,"o":"v2_seq_ptr_hi"},{"a":10541,"t":"code","b":[149,176],"m":"sta","oa":176,"o":"v2_stack_hi,x"},{"a":10543,"t":"code","b":[198,234],"m":"dec","oa":234,"o":"v2_stack_index"},{"a":10545,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10547,"t":"code","b":[170],"m":"tax"},{"a":10548,"t":"code","b":[200],"m":"iny"},{"a":10549,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10551,"t":"code","b":[134,226],"m":"stx","oa":226,"o":"v2_seq_ptr"},{"a":10553,"t":"code","b":[133,227],"m":"sta","oa":227,"o":"v2_seq_ptr_hi"},{"a":10555,"t":"code","b":[76,131,45],"m":"jmp","oa":11651,"o":"j_2D83"},{"a":10558,"l":"v1_cmd_dc_set_instrument_word","c":"Voice 1 command $DC i lo hi: instrument block bytes $2479+i/$247A+i = lo/hi (the tunes use it with i = 8 to point the arpeggio at another table); advance 4","t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10560,"t":"code","b":[170],"m":"tax"},{"a":10561,"t":"code","b":[200],"m":"iny"},{"a":10562,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10564,"t":"code","b":[157,121,36],"m":"sta","oa":9337,"o":"v2_instr,x"},{"a":10567,"t":"code","b":[200],"m":"iny"},{"a":10568,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10570,"t":"code","b":[157,122,36],"m":"sta","oa":9338,"o":"v2_ins_pstep1_hi,x"},{"a":10573,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10575,"t":"code","b":[76,124,45],"m":"jmp","oa":11644,"o":"j_2D7C"},{"a":10578,"l":"v1_cmd_de_set_workspace_word","c":"Voice 1 command $DE i lo hi: live workspace bytes $24FC+i/$24FD+i = lo/hi; advance 4","t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10580,"t":"code","b":[170],"m":"tax"},{"a":10581,"t":"code","b":[200],"m":"iny"},{"a":10582,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10584,"t":"code","b":[157,252,36],"m":"sta","oa":9468,"o":"v2_state,x"},{"a":10587,"t":"code","b":[200],"m":"iny"},{"a":10588,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10590,"t":"code","b":[157,253,36],"m":"sta","oa":9469,"o":"v2_pstep1_hi,x"},{"a":10593,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10595,"t":"code","b":[76,124,45],"m":"jmp","oa":11644,"o":"j_2D7C"},{"a":10598,"l":"v1_cmd_d2_load_instrument","c":"Voice 1 command $D2 n lo hi: copy n+1 bytes from hi/lo to voice 1's instrument block $2479..; source patched into the LDA at $2975; advance 4","t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10600,"t":"code","b":[170],"m":"tax"},{"a":10601,"t":"code","b":[200],"m":"iny"},{"a":10602,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10604,"t":"code","b":[141,118,41],"m":"sta","oa":10614,"o":"a_2976"},{"a":10607,"t":"code","b":[200],"m":"iny"},{"a":10608,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10610,"t":"code","b":[141,119,41],"m":"sta","oa":10615,"o":"a_2977"},{"a":10613,"l":"b_2975","t":"code","b":[189,234,52],"m":"lda","oa":13546,"o":"instrument_34ea,x","x":[10620]},{"a":10614,"t":"note","l":"a_2976","c":"Operand low byte of LDA $34EA,X at $2975 (voice 1 $D2 source), written by $296C","note":"inside the item at $2975","x":[10604]},{"a":10615,"t":"note","l":"a_2977","c":"Operand high byte of LDA $34EA,X at $2975, written by $2972","note":"inside the item at $2975","x":[10610]},{"a":10616,"t":"code","b":[157,121,36],"m":"sta","oa":9337,"o":"v2_instr,x"},{"a":10619,"t":"code","b":[202],"m":"dex"},{"a":10620,"t":"code","b":[16,247],"m":"bpl","oa":10613,"o":"b_2975"},{"a":10622,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10624,"t":"code","b":[76,124,45],"m":"jmp","oa":11644,"o":"j_2D7C"},{"a":10627,"l":"v1_cmd_cc_repeat","c":"Voice 1 command $CC n: push the address after it and the count n ($A8/$B0/$B8 + index $EA); advance 2","t":"code","b":[166,234],"m":"ldx","oa":234,"o":"v2_stack_index"},{"a":10629,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":10631,"t":"code","b":[24],"m":"clc"},{"a":10632,"t":"code","b":[101,226],"m":"adc","oa":226,"o":"v2_seq_ptr"},{"a":10634,"t":"code","b":[149,168],"m":"sta","oa":168,"o":"v2_stack_lo,x"},{"a":10636,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10638,"t":"code","b":[101,227],"m":"adc","oa":227,"o":"v2_seq_ptr_hi"},{"a":10640,"t":"code","b":[149,176],"m":"sta","oa":176,"o":"v2_stack_hi,x"},{"a":10642,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10644,"t":"code","b":[149,184],"m":"sta","oa":184,"o":"v2_repeat,x"},{"a":10646,"t":"code","b":[198,234],"m":"dec","oa":234,"o":"v2_stack_index"},{"a":10648,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":10650,"t":"code","b":[76,124,45],"m":"jmp","oa":11644,"o":"j_2D7C"},{"a":10653,"l":"v1_cmd_f0_load_pitch_program","c":"Voice 1 command $F0 lo hi: 14 bytes from hi/lo to $2479-$2486, the pitch program of voice 1's instrument; advance 3","t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10655,"t":"code","b":[141,171,41],"m":"sta","oa":10667,"o":"a_29AB"},{"a":10658,"t":"code","b":[200],"m":"iny"},{"a":10659,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10661,"t":"code","b":[141,172,41],"m":"sta","oa":10668,"o":"a_29AC"},{"a":10664,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":10666,"l":"b_29AA","t":"code","b":[189,71,57],"m":"lda","oa":14663,"o":"pitch_program_3947,x","x":[10673]},{"a":10667,"t":"note","l":"a_29AB","c":"Operand low byte of LDA $3947,X at $29AA (voice 1 $F0 source), written by $299F","note":"inside the item at $29AA","x":[10655]},{"a":10668,"t":"note","l":"a_29AC","c":"Operand high byte of LDA $3947,X at $29AA, written by $29A5","note":"inside the item at $29AA","x":[10661]},{"a":10669,"t":"code","b":[157,121,36],"m":"sta","oa":9337,"o":"v2_instr,x"},{"a":10672,"t":"code","b":[202],"m":"dex"},{"a":10673,"t":"code","b":[16,247],"m":"bpl","oa":10666,"o":"b_29AA"},{"a":10675,"t":"code","b":[76,122,45],"m":"jmp","oa":11642,"o":"j_2D7A"},{"a":10678,"l":"v1_cmd_c4_jump","c":"Voice 1 command $C4 lo hi: continue at hi/lo","t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10680,"t":"code","b":[170],"m":"tax"},{"a":10681,"t":"code","b":[200],"m":"iny"},{"a":10682,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10684,"t":"code","b":[134,226],"m":"stx","oa":226,"o":"v2_seq_ptr"},{"a":10686,"t":"code","b":[133,227],"m":"sta","oa":227,"o":"v2_seq_ptr_hi"},{"a":10688,"t":"code","b":[76,131,45],"m":"jmp","oa":11651,"o":"j_2D83"},{"a":10691,"l":"v1_cmd_ca_set_instrument_byte","c":"Voice 1 command $CA i v: $2479+i = v (the tunes toggle +$0D, the pitch mode, between $08 arpeggio and $00); advance 3","t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10693,"t":"code","b":[170],"m":"tax"},{"a":10694,"t":"code","b":[200],"m":"iny"},{"a":10695,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10697,"t":"code","b":[157,121,36],"m":"sta","oa":9337,"o":"v2_instr,x"},{"a":10700,"t":"code","b":[76,122,45],"m":"jmp","oa":11642,"o":"j_2D7A"},{"a":10703,"l":"v1_cmd_ce_repeat_end","c":"Voice 1 command $CE: count at $B9+$EA down; back to the saved address while not zero, else pop and advance 1","t":"code","b":[166,234],"m":"ldx","oa":234,"o":"v2_stack_index"},{"a":10705,"t":"code","b":[214,185],"m":"dec","oa":185,"o":"v2_repeat_top,x"},{"a":10707,"t":"code","b":[240,11],"m":"beq","oa":10720,"o":"b_29E0"},{"a":10709,"t":"code","b":[180,169],"m":"ldy","oa":169,"o":"v2_stack_lo_top,x"},{"a":10711,"t":"code","b":[181,177],"m":"lda","oa":177,"o":"v2_stack_hi_top,x"},{"a":10713,"t":"code","b":[132,226],"m":"sty","oa":226,"o":"v2_seq_ptr"},{"a":10715,"t":"code","b":[133,227],"m":"sta","oa":227,"o":"v2_seq_ptr_hi"},{"a":10717,"t":"code","b":[76,131,45],"m":"jmp","oa":11651,"o":"j_2D83"},{"a":10720,"l":"b_29E0","t":"code","b":[230,234],"m":"inc","oa":234,"o":"v2_stack_index","x":[10707]},{"a":10722,"t":"code","b":[152],"m":"tya"},{"a":10723,"t":"code","b":[76,124,45],"m":"jmp","oa":11644,"o":"j_2D7C"},{"a":10726,"l":"v1_cmd_c0_return","c":"Voice 1 command $C0: return ($A9/$B1 + $EA); with the stack empty the sequence ends ($2546 decremented to 0)","t":"code","b":[164,234],"m":"ldy","oa":234,"o":"v2_stack_index"},{"a":10728,"t":"code","b":[192,7],"m":"cpy","o":"#$07"},{"a":10730,"t":"code","b":[240,14],"m":"beq","oa":10746,"o":"b_29FA"},{"a":10732,"t":"code","b":[230,234],"m":"inc","oa":234,"o":"v2_stack_index"},{"a":10734,"t":"code","b":[182,169],"m":"ldx","oa":169,"o":"v2_stack_lo_top,y"},{"a":10736,"t":"code","b":[185,177,0],"m":"lda","oa":177,"o":"v2_stack_hi_top,y"},{"a":10739,"t":"code","b":[134,226],"m":"stx","oa":226,"o":"v2_seq_ptr"},{"a":10741,"t":"code","b":[133,227],"m":"sta","oa":227,"o":"v2_seq_ptr_hi"},{"a":10743,"t":"code","b":[76,131,45],"m":"jmp","oa":11651,"o":"j_2D83"},{"a":10746,"l":"b_29FA","t":"code","b":[206,70,37],"m":"dec","oa":9542,"o":"v2_playing","x":[10730]},{"a":10749,"t":"code","b":[96],"m":"rts"},{"a":10750,"l":"v1_cmd_d6_set_workspace_byte","c":"Voice 1 command $D6 i v: live workspace byte $24FC+i = v; advance 3","t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10752,"t":"code","b":[170],"m":"tax"},{"a":10753,"t":"code","b":[200],"m":"iny"},{"a":10754,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10756,"t":"code","b":[157,252,36],"m":"sta","oa":9468,"o":"v2_state,x"},{"a":10759,"t":"code","b":[76,122,45],"m":"jmp","oa":11642,"o":"j_2D7A"},{"a":10762,"l":"v1_cmd_d4_load_envelope","c":"Voice 1 command $D4 lo hi: 5 bytes to $2491-$2495 (control, AD, SR, gate time, life); advance 3","t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10764,"t":"code","b":[133,239],"m":"sta","oa":239,"o":"cmd_ptr"},{"a":10766,"t":"code","b":[200],"m":"iny"},{"a":10767,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":10769,"t":"code","b":[133,240],"m":"sta","oa":240,"o":"cmd_ptr_hi"},{"a":10771,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":10773,"l":"b_2A15","t":"code","b":[177,239],"m":"lda","oa":239,"o":"(cmd_ptr),y","x":[10779]},{"a":10775,"t":"code","b":[153,145,36],"m":"sta","oa":9361,"o":"v2_ins_ctrl,y"},{"a":10778,"t":"code","b":[136],"m":"dey"},{"a":10779,"t":"code","b":[16,248],"m":"bpl","oa":10773,"o":"b_2A15"},{"a":10781,"t":"code","b":[76,122,45],"m":"jmp","oa":11642,"o":"j_2D7A"},{"a":10784,"l":"v2_cmd_c6_transpose_call","c":"Voice 2 command $C6 t lo hi: transpose $EE = t, then call hi/lo, returning after 4 bytes. Voice 2's handlers come from the vector table $3F64 with Y = 1 and the pointer in $E4/$E5. Typed code by hand: only the vector table leads here","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10786,"t":"code","b":[133,238],"m":"sta","oa":238,"o":"v3_transpose"},{"a":10788,"t":"code","b":[200],"m":"iny"},{"a":10789,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10791,"l":"skip_bit_2a27","c":"$2C, the opcode of BIT $03A9: voice 2's command $C6 runs through it and skips LDA #$03, while command $C2's vector enters at $2A28 and loads it. Part of the driver's code, typed as a byte because it is both.","t":"byte","b":[44]},{"a":10792,"l":"v2_cmd_c2_call","c":"Voice 2 command $C2 lo hi: call; return address pushed on voice 2's stack ($60+i low, $68+i high, index $EB from 7)","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":10794,"t":"code","b":[166,235],"m":"ldx","oa":235,"o":"v3_stack_index"},{"a":10796,"t":"code","b":[24],"m":"clc"},{"a":10797,"t":"code","b":[101,228],"m":"adc","oa":228,"o":"v3_seq_ptr"},{"a":10799,"t":"code","b":[149,96],"m":"sta","oa":96,"o":"v3_stack_lo,x"},{"a":10801,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10803,"t":"code","b":[101,229],"m":"adc","oa":229,"o":"v3_seq_ptr_hi"},{"a":10805,"t":"code","b":[149,104],"m":"sta","oa":104,"o":"v3_stack_hi,x"},{"a":10807,"t":"code","b":[198,235],"m":"dec","oa":235,"o":"v3_stack_index"},{"a":10809,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10811,"t":"code","b":[170],"m":"tax"},{"a":10812,"t":"code","b":[200],"m":"iny"},{"a":10813,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10815,"t":"code","b":[134,228],"m":"stx","oa":228,"o":"v3_seq_ptr"},{"a":10817,"t":"code","b":[133,229],"m":"sta","oa":229,"o":"v3_seq_ptr_hi"},{"a":10819,"t":"code","b":[76,220,46],"m":"jmp","oa":11996,"o":"j_2EDC"},{"a":10822,"l":"v2_cmd_d8_call_native","c":"Voice 2 command $D8 lo hi: JSR to 6502 code at hi/lo (through JMP ($00EF) with return address $2ED2 pushed, so its RTS lands on $2ED3 and the sequence advances 3). The title tune uses it to call $374B and $3751, which set and clear the filter-mode bits $3FFF","t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":10824,"t":"code","b":[72],"m":"pha"},{"a":10825,"t":"code","b":[169,210],"m":"lda","o":"#$D2"},{"a":10827,"t":"code","b":[72],"m":"pha"},{"a":10828,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10830,"t":"code","b":[133,239],"m":"sta","oa":239,"o":"cmd_ptr"},{"a":10832,"t":"code","b":[200],"m":"iny"},{"a":10833,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10835,"t":"code","b":[133,240],"m":"sta","oa":240,"o":"cmd_ptr_hi"},{"a":10837,"t":"code","b":[108,239,0],"m":"jmp","oa":239,"o":"(cmd_ptr)"},{"a":10840,"l":"v2_cmd_dc_set_instrument_word","c":"Voice 2 command $DC i lo hi: instrument bytes $2496+i/$2497+i = lo/hi (the tunes use i = $16, the pulse start width); advance 4","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10842,"t":"code","b":[170],"m":"tax"},{"a":10843,"t":"code","b":[200],"m":"iny"},{"a":10844,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10846,"t":"code","b":[157,150,36],"m":"sta","oa":9366,"o":"v3_instr,x"},{"a":10849,"t":"code","b":[200],"m":"iny"},{"a":10850,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10852,"t":"code","b":[157,151,36],"m":"sta","oa":9367,"o":"v3_ins_pstep1_hi,x"},{"a":10855,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10857,"t":"code","b":[76,213,46],"m":"jmp","oa":11989,"o":"j_2ED5"},{"a":10860,"l":"v2_cmd_de_set_workspace_word","c":"Voice 2 command $DE i lo hi: live workspace bytes $251F+i/$2520+i = lo/hi; advance 4","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10862,"t":"code","b":[170],"m":"tax"},{"a":10863,"t":"code","b":[200],"m":"iny"},{"a":10864,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10866,"t":"code","b":[157,31,37],"m":"sta","oa":9503,"o":"v3_state,x"},{"a":10869,"t":"code","b":[200],"m":"iny"},{"a":10870,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10872,"t":"code","b":[157,32,37],"m":"sta","oa":9504,"o":"v3_pstep1_hi,x"},{"a":10875,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10877,"t":"code","b":[76,213,46],"m":"jmp","oa":11989,"o":"j_2ED5"},{"a":10880,"l":"v2_cmd_e2_load_filter_program","c":"Voice 2 command $E2 lo hi: copy 16 bytes from hi/lo to the filter program $24B3-$24C2 (cutoff deltas 4 x 16 bits, phase lengths 4, delay, mode, start cutoff 16 bits), used from the next note on the filter voice; source patched into the LDA at $2A8D; advance 3","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10882,"t":"code","b":[141,142,42],"m":"sta","oa":10894,"o":"a_2A8E"},{"a":10885,"t":"code","b":[200],"m":"iny"},{"a":10886,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10888,"t":"code","b":[141,143,42],"m":"sta","oa":10895,"o":"a_2A8F"},{"a":10891,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":10893,"l":"b_2A8D","t":"code","b":[189,140,54],"m":"lda","oa":13964,"o":"filter_program_368c,x","x":[10900]},{"a":10894,"t":"note","l":"a_2A8E","c":"Operand low byte of LDA $368C,X at $2A8D (filter program source), written by $2A82","note":"inside the item at $2A8D","x":[10882]},{"a":10895,"t":"note","l":"a_2A8F","c":"Operand high byte of LDA $368C,X at $2A8D, written by $2A88","note":"inside the item at $2A8D","x":[10888]},{"a":10896,"t":"code","b":[157,179,36],"m":"sta","oa":9395,"o":"filter_preset,x"},{"a":10899,"t":"code","b":[202],"m":"dex"},{"a":10900,"t":"code","b":[16,247],"m":"bpl","oa":10893,"o":"b_2A8D"},{"a":10902,"t":"code","b":[76,211,46],"m":"jmp","oa":11987,"o":"j_2ED3"},{"a":10905,"l":"v2_cmd_d2_load_instrument","c":"Voice 2 command $D2 n lo hi: n+1 bytes from hi/lo to voice 2's instrument block $2496..; source patched into the LDA at $2AA8; advance 4","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10907,"t":"code","b":[170],"m":"tax"},{"a":10908,"t":"code","b":[200],"m":"iny"},{"a":10909,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10911,"t":"code","b":[141,169,42],"m":"sta","oa":10921,"o":"a_2AA9"},{"a":10914,"t":"code","b":[200],"m":"iny"},{"a":10915,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10917,"t":"code","b":[141,170,42],"m":"sta","oa":10922,"o":"a_2AAA"},{"a":10920,"l":"b_2AA8","t":"code","b":[189,111,54],"m":"lda","oa":13935,"o":"instrument_366f,x","x":[10927]},{"a":10921,"t":"note","l":"a_2AA9","c":"Operand low byte of LDA $366F,X at $2AA8 (voice 2 $D2 source), written by $2A9F","note":"inside the item at $2AA8","x":[10911]},{"a":10922,"t":"note","l":"a_2AAA","c":"Operand high byte of LDA $366F,X at $2AA8, written by $2AA5","note":"inside the item at $2AA8","x":[10917]},{"a":10923,"t":"code","b":[157,150,36],"m":"sta","oa":9366,"o":"v3_instr,x"},{"a":10926,"t":"code","b":[202],"m":"dex"},{"a":10927,"t":"code","b":[16,247],"m":"bpl","oa":10920,"o":"b_2AA8"},{"a":10929,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":10931,"t":"code","b":[76,213,46],"m":"jmp","oa":11989,"o":"j_2ED5"},{"a":10934,"l":"v2_cmd_cc_repeat","c":"Voice 2 command $CC n: push address and count ($60/$68/$70 + index $EB); advance 2","t":"code","b":[166,235],"m":"ldx","oa":235,"o":"v3_stack_index"},{"a":10936,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":10938,"t":"code","b":[24],"m":"clc"},{"a":10939,"t":"code","b":[101,228],"m":"adc","oa":228,"o":"v3_seq_ptr"},{"a":10941,"t":"code","b":[149,96],"m":"sta","oa":96,"o":"v3_stack_lo,x"},{"a":10943,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10945,"t":"code","b":[101,229],"m":"adc","oa":229,"o":"v3_seq_ptr_hi"},{"a":10947,"t":"code","b":[149,104],"m":"sta","oa":104,"o":"v3_stack_hi,x"},{"a":10949,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10951,"t":"code","b":[149,112],"m":"sta","oa":112,"o":"v3_repeat,x"},{"a":10953,"t":"code","b":[198,235],"m":"dec","oa":235,"o":"v3_stack_index"},{"a":10955,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":10957,"t":"code","b":[76,213,46],"m":"jmp","oa":11989,"o":"j_2ED5"},{"a":10960,"l":"v2_cmd_f0_load_pitch_program","c":"Voice 2 command $F0 lo hi: 14 bytes to $2496-$24A3, voice 2's pitch program; source patched into the LDA at $2ADD; advance 3","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10962,"t":"code","b":[141,222,42],"m":"sta","oa":10974,"o":"a_2ADE"},{"a":10965,"t":"code","b":[200],"m":"iny"},{"a":10966,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10968,"t":"code","b":[141,223,42],"m":"sta","oa":10975,"o":"a_2ADF"},{"a":10971,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":10973,"l":"b_2ADD","t":"code","b":[189,71,57],"m":"lda","oa":14663,"o":"pitch_program_3947,x","x":[10980]},{"a":10974,"t":"note","l":"a_2ADE","c":"Operand low byte of LDA $3947,X at $2ADD (voice 2 $F0 source), written by $2AD2","note":"inside the item at $2ADD","x":[10962]},{"a":10975,"t":"note","l":"a_2ADF","c":"Operand high byte of LDA $3947,X at $2ADD, written by $2AD8","note":"inside the item at $2ADD","x":[10968]},{"a":10976,"t":"code","b":[157,150,36],"m":"sta","oa":9366,"o":"v3_instr,x"},{"a":10979,"t":"code","b":[202],"m":"dex"},{"a":10980,"t":"code","b":[16,247],"m":"bpl","oa":10973,"o":"b_2ADD"},{"a":10982,"t":"code","b":[76,211,46],"m":"jmp","oa":11987,"o":"j_2ED3"},{"a":10985,"l":"v2_cmd_c4_jump","c":"Voice 2 command $C4 lo hi: continue at hi/lo","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10987,"t":"code","b":[170],"m":"tax"},{"a":10988,"t":"code","b":[200],"m":"iny"},{"a":10989,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":10991,"t":"code","b":[134,228],"m":"stx","oa":228,"o":"v3_seq_ptr"},{"a":10993,"t":"code","b":[133,229],"m":"sta","oa":229,"o":"v3_seq_ptr_hi"},{"a":10995,"t":"code","b":[76,220,46],"m":"jmp","oa":11996,"o":"j_2EDC"},{"a":10998,"l":"v2_filter_on_body","c":"Body of command $E0 (entered from $2B0A with X = 2): $D417 = $F4 (resonance 15, filter on voice 2 only), filter voice $2542 = X, $D418 = $1F (low-pass, volume 15); advance 1. $3FFF is not changed, so the sample/volume writer at $FEE0 may put $D418 back to $0F OR $3FFF","t":"code","b":[160,244],"m":"ldy","o":"#$F4","x":[11018]},{"a":11000,"t":"code","b":[140,23,212],"m":"sty","o":"sid_filter_resonance"},{"a":11003,"t":"code","b":[142,66,37],"m":"stx","oa":9538,"o":"filter_voice"},{"a":11006,"t":"code","b":[162,31],"m":"ldx","o":"#$1F"},{"a":11008,"t":"code","b":[142,24,212],"m":"stx","o":"sid_filter_mode_volume"},{"a":11011,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":11013,"t":"code","b":[76,213,46],"m":"jmp","oa":11989,"o":"j_2ED5"},{"a":11016,"l":"v2_cmd_e0_filter_on","c":"Voice 2 command $E0: route voice 2 through the low-pass filter and make it the filter voice, so each of its notes restarts the filter program (filter_start). One byte","t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":11018,"t":"code","b":[208,234],"m":"bne","oa":10998,"o":"v2_filter_on_body"},{"a":11020,"l":"v2_cmd_ca_set_instrument_byte","c":"Voice 2 command $CA i v: $2496+i = v; advance 3","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":11022,"t":"code","b":[170],"m":"tax"},{"a":11023,"t":"code","b":[200],"m":"iny"},{"a":11024,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":11026,"t":"code","b":[157,150,36],"m":"sta","oa":9366,"o":"v3_instr,x"},{"a":11029,"t":"code","b":[76,211,46],"m":"jmp","oa":11987,"o":"j_2ED3"},{"a":11032,"l":"v2_cmd_ce_repeat_end","c":"Voice 2 command $CE: count at $71+$EB down; back to the saved address while not zero, else pop and advance 1","t":"code","b":[166,235],"m":"ldx","oa":235,"o":"v3_stack_index"},{"a":11034,"t":"code","b":[214,113],"m":"dec","oa":113,"o":"v3_repeat_top,x"},{"a":11036,"t":"code","b":[240,11],"m":"beq","oa":11049,"o":"b_2B29"},{"a":11038,"t":"code","b":[180,97],"m":"ldy","oa":97,"o":"v3_stack_lo_top,x"},{"a":11040,"t":"code","b":[181,105],"m":"lda","oa":105,"o":"v3_stack_hi_top,x"},{"a":11042,"t":"code","b":[132,228],"m":"sty","oa":228,"o":"v3_seq_ptr"},{"a":11044,"t":"code","b":[133,229],"m":"sta","oa":229,"o":"v3_seq_ptr_hi"},{"a":11046,"t":"code","b":[76,220,46],"m":"jmp","oa":11996,"o":"j_2EDC"},{"a":11049,"l":"b_2B29","t":"code","b":[230,235],"m":"inc","oa":235,"o":"v3_stack_index","x":[11036]},{"a":11051,"t":"code","b":[152],"m":"tya"},{"a":11052,"t":"code","b":[76,213,46],"m":"jmp","oa":11989,"o":"j_2ED5"},{"a":11055,"l":"v2_cmd_c0_return","c":"Voice 2 command $C0: return ($61/$69 + $EB); with the stack empty the sequence ends ($2547 decremented to 0)","t":"code","b":[164,235],"m":"ldy","oa":235,"o":"v3_stack_index"},{"a":11057,"t":"code","b":[192,7],"m":"cpy","o":"#$07"},{"a":11059,"t":"code","b":[240,14],"m":"beq","oa":11075,"o":"b_2B43"},{"a":11061,"t":"code","b":[230,235],"m":"inc","oa":235,"o":"v3_stack_index"},{"a":11063,"t":"code","b":[182,97],"m":"ldx","oa":97,"o":"v3_stack_lo_top,y"},{"a":11065,"t":"code","b":[185,105,0],"m":"lda","oa":105,"o":"v3_stack_hi_top,y"},{"a":11068,"t":"code","b":[134,228],"m":"stx","oa":228,"o":"v3_seq_ptr"},{"a":11070,"t":"code","b":[133,229],"m":"sta","oa":229,"o":"v3_seq_ptr_hi"},{"a":11072,"t":"code","b":[76,220,46],"m":"jmp","oa":11996,"o":"j_2EDC"},{"a":11075,"l":"b_2B43","t":"code","b":[206,71,37],"m":"dec","oa":9543,"o":"v3_playing","x":[11059]},{"a":11078,"t":"code","b":[96],"m":"rts"},{"a":11079,"l":"v2_cmd_d4_load_envelope","c":"Voice 2 command $D4 lo hi: 5 bytes to $24AE-$24B2 (control, AD, SR, gate time, life); advance 3","t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":11081,"t":"code","b":[133,239],"m":"sta","oa":239,"o":"cmd_ptr"},{"a":11083,"t":"code","b":[200],"m":"iny"},{"a":11084,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":11086,"t":"code","b":[133,240],"m":"sta","oa":240,"o":"cmd_ptr_hi"},{"a":11088,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":11090,"l":"b_2B52","t":"code","b":[177,239],"m":"lda","oa":239,"o":"(cmd_ptr),y","x":[11096]},{"a":11092,"t":"code","b":[153,174,36],"m":"sta","oa":9390,"o":"v3_ins_ctrl,y"},{"a":11095,"t":"code","b":[136],"m":"dey"},{"a":11096,"t":"code","b":[16,248],"m":"bpl","oa":11090,"o":"b_2B52"},{"a":11098,"t":"code","b":[76,211,46],"m":"jmp","oa":11987,"o":"j_2ED3"},{"a":11101,"l":"filter_tick","c":"Per-frame filter program (first of the seven calls at $F892). Off while mode $24D0 = 0. Cutoff runs in $24D3/$24D4: during the delay $24CF it waits, or with mode bit 1 adds the fourth delta each frame; then four phases, each adding its 16-bit delta ($24C3/$24C5/$24C7/$24C9) once per frame for its count ($24D5-$24D8). When all four are spent: mode bit 7 restarts from the start cutoff (filter_restart), bit 0 repeats from the current one (filter_reload), neither holds. Writes $D415 = cutoff AND 7 and $D416 = cutoff / 8 (an 11-bit cutoff)","t":"code","b":[173,208,36],"m":"lda","oa":9424,"o":"filter_mode","x":[9767,63634]},{"a":11104,"t":"code","b":[240,22],"m":"beq","oa":11128,"o":"r_2B78"},{"a":11106,"t":"code","b":[174,211,36],"m":"ldx","oa":9427,"o":"filter_cutoff"},{"a":11109,"t":"code","b":[172,212,36],"m":"ldy","oa":9428,"o":"filter_cutoff_hi"},{"a":11112,"t":"code","b":[24],"m":"clc"},{"a":11113,"t":"code","b":[173,207,36],"m":"lda","oa":9423,"o":"filter_delay"},{"a":11116,"t":"code","b":[240,12],"m":"beq","oa":11130,"o":"b_2B7A"},{"a":11118,"t":"code","b":[206,207,36],"m":"dec","oa":9423,"o":"filter_delay"},{"a":11121,"t":"code","b":[173,208,36],"m":"lda","oa":9424,"o":"filter_mode"},{"a":11124,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":11126,"t":"code","b":[208,70],"m":"bne","oa":11198,"o":"b_2BBE"},{"a":11128,"l":"r_2B78","t":"code","b":[96],"m":"rts","x":[11104]},{"a":11129,"l":"j_2B79","t":"code","b":[24],"m":"clc","x":[11253,11259]},{"a":11130,"l":"b_2B7A","t":"code","b":[173,213,36],"m":"lda","oa":9429,"o":"filter_count1","x":[11116]},{"a":11133,"t":"code","b":[240,15],"m":"beq","oa":11150,"o":"b_2B8E"},{"a":11135,"t":"code","b":[206,213,36],"m":"dec","oa":9429,"o":"filter_count1"},{"a":11138,"t":"code","b":[138],"m":"txa"},{"a":11139,"t":"code","b":[109,195,36],"m":"adc","oa":9411,"o":"filter_steps"},{"a":11142,"t":"code","b":[170],"m":"tax"},{"a":11143,"t":"code","b":[152],"m":"tya"},{"a":11144,"t":"code","b":[109,196,36],"m":"adc","oa":9412,"o":"filter_step1_hi"},{"a":11147,"t":"code","b":[76,199,43],"m":"jmp","oa":11207,"o":"j_2BC7"},{"a":11150,"l":"b_2B8E","t":"code","b":[173,214,36],"m":"lda","oa":9430,"o":"filter_count2","x":[11133]},{"a":11153,"t":"code","b":[240,15],"m":"beq","oa":11170,"o":"b_2BA2"},{"a":11155,"t":"code","b":[206,214,36],"m":"dec","oa":9430,"o":"filter_count2"},{"a":11158,"t":"code","b":[138],"m":"txa"},{"a":11159,"t":"code","b":[109,197,36],"m":"adc","oa":9413,"o":"filter_step2_lo"},{"a":11162,"t":"code","b":[170],"m":"tax"},{"a":11163,"t":"code","b":[152],"m":"tya"},{"a":11164,"t":"code","b":[109,198,36],"m":"adc","oa":9414,"o":"filter_step2_hi"},{"a":11167,"t":"code","b":[76,199,43],"m":"jmp","oa":11207,"o":"j_2BC7"},{"a":11170,"l":"b_2BA2","t":"code","b":[173,215,36],"m":"lda","oa":9431,"o":"filter_count3","x":[11153]},{"a":11173,"t":"code","b":[240,15],"m":"beq","oa":11190,"o":"b_2BB6"},{"a":11175,"t":"code","b":[206,215,36],"m":"dec","oa":9431,"o":"filter_count3"},{"a":11178,"t":"code","b":[138],"m":"txa"},{"a":11179,"t":"code","b":[109,199,36],"m":"adc","oa":9415,"o":"filter_step3_lo"},{"a":11182,"t":"code","b":[170],"m":"tax"},{"a":11183,"t":"code","b":[152],"m":"tya"},{"a":11184,"t":"code","b":[109,200,36],"m":"adc","oa":9416,"o":"filter_step3_hi"},{"a":11187,"t":"code","b":[76,199,43],"m":"jmp","oa":11207,"o":"j_2BC7"},{"a":11190,"l":"b_2BB6","t":"code","b":[173,216,36],"m":"lda","oa":9432,"o":"filter_count4","x":[11173]},{"a":11193,"t":"code","b":[240,46],"m":"beq","oa":11241,"o":"b_2BE9"},{"a":11195,"t":"code","b":[206,216,36],"m":"dec","oa":9432,"o":"filter_count4"},{"a":11198,"l":"b_2BBE","t":"code","b":[138],"m":"txa","x":[11126]},{"a":11199,"t":"code","b":[109,201,36],"m":"adc","oa":9417,"o":"filter_step4_lo"},{"a":11202,"t":"code","b":[170],"m":"tax"},{"a":11203,"t":"code","b":[152],"m":"tya"},{"a":11204,"t":"code","b":[109,202,36],"m":"adc","oa":9418,"o":"filter_step4_hi"},{"a":11207,"l":"j_2BC7","t":"code","b":[168],"m":"tay","x":[11147,11167,11187]},{"a":11208,"l":"b_2BC8","t":"code","b":[142,211,36],"m":"stx","oa":9427,"o":"filter_cutoff","x":[11246]},{"a":11211,"t":"code","b":[140,212,36],"m":"sty","oa":9428,"o":"filter_cutoff_hi"},{"a":11214,"l":"j_2BCE","t":"code","b":[138],"m":"txa","x":[11282]},{"a":11215,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":11217,"t":"code","b":[141,21,212],"m":"sta","o":"sid_filter_cutoff_lo"},{"a":11220,"t":"code","b":[152],"m":"tya"},{"a":11221,"t":"code","b":[142,67,37],"m":"stx","oa":9539,"o":"cutoff_tmp"},{"a":11224,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":11225,"t":"code","b":[110,67,37],"m":"ror","oa":9539,"o":"cutoff_tmp"},{"a":11228,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":11229,"t":"code","b":[110,67,37],"m":"ror","oa":9539,"o":"cutoff_tmp"},{"a":11232,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":11233,"t":"code","b":[173,67,37],"m":"lda","oa":9539,"o":"cutoff_tmp"},{"a":11236,"t":"code","b":[106],"m":"ror","o":"a"},{"a":11237,"t":"code","b":[141,22,212],"m":"sta","o":"sid_filter_cutoff_hi"},{"a":11240,"t":"code","b":[96],"m":"rts"},{"a":11241,"l":"b_2BE9","t":"code","b":[173,208,36],"m":"lda","oa":9424,"o":"filter_mode","x":[11193]},{"a":11244,"t":"code","b":[41,129],"m":"and","o":"#$81"},{"a":11246,"t":"code","b":[240,216],"m":"beq","oa":11208,"o":"b_2BC8"},{"a":11248,"t":"code","b":[16,6],"m":"bpl","oa":11256,"o":"b_2BF8"},{"a":11250,"t":"code","b":[32,10,39],"m":"jsr","oa":9994,"o":"filter_restart"},{"a":11253,"t":"code","b":[76,121,43],"m":"jmp","oa":11129,"o":"j_2B79"},{"a":11256,"l":"b_2BF8","t":"code","b":[32,22,39],"m":"jsr","oa":10006,"o":"filter_reload","x":[11248]},{"a":11259,"t":"code","b":[76,121,43],"m":"jmp","oa":11129,"o":"j_2B79"},{"a":11262,"l":"filter_start","c":"Copy the filter program $24B3-$24C2 into the live filter workspace $24C3-$24D2, restart it (filter_restart) and write the cutoff. Called at the start of each note on the voice named in $2542 ($2C5B, $2DB4, $2F11)","t":"code","b":[162,7],"m":"ldx","o":"#$07","x":[11355,11700,12049]},{"a":11264,"l":"b_2C00","t":"code","b":[189,179,36],"m":"lda","oa":9395,"o":"filter_preset,x","x":[11277]},{"a":11267,"t":"code","b":[157,195,36],"m":"sta","oa":9411,"o":"filter_steps,x"},{"a":11270,"t":"code","b":[189,187,36],"m":"lda","oa":9403,"o":"filter_preset_b,x"},{"a":11273,"t":"code","b":[157,203,36],"m":"sta","oa":9419,"o":"filter_len1,x"},{"a":11276,"t":"code","b":[202],"m":"dex"},{"a":11277,"t":"code","b":[16,241],"m":"bpl","oa":11264,"o":"b_2C00"},{"a":11279,"t":"code","b":[32,10,39],"m":"jsr","oa":9994,"o":"filter_restart"},{"a":11282,"t":"code","b":[76,206,43],"m":"jmp","oa":11214,"o":"j_2BCE"},{"a":11285,"l":"seq0_tick","c":"Voice 0 sequencer, once per sound tick: does nothing unless $2545 is set; counts down the note length $E6 and at 0 reads events from ($E0): command bytes $C0-$F0 (even) dispatch through the vector table $3F00 until a note or rest is read. Events are two bytes, a note byte b ($00-$BF) and a length: the note number is b, or b - $60 when b >= $60; note $5F is a rest (the sound goes on, nothing restarts); the length is entry $2549 + second byte of the note-length table when b < $60, or the second byte itself, in ticks, when b >= $60","t":"code","b":[173,69,37],"m":"lda","oa":9541,"o":"v1_playing","x":[9749,63637]},{"a":11288,"t":"code","b":[240,4],"m":"beq","oa":11294,"o":"r_2C1E"},{"a":11290,"t":"code","b":[198,230],"m":"dec","oa":230,"o":"v1_note_wait"},{"a":11292,"t":"code","b":[240,14],"m":"beq","oa":11308,"o":"j_2C2C"},{"a":11294,"l":"r_2C1E","t":"code","b":[96],"m":"rts","x":[11288]},{"a":11295,"l":"b_2C1F","t":"code","b":[230,225],"m":"inc","oa":225,"o":"v1_seq_ptr_hi","x":[11306]},{"a":11297,"t":"code","b":[208,9],"m":"bne","oa":11308,"o":"j_2C2C"},{"a":11299,"l":"j_2C23","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[10419,10444,10503,10525]},{"a":11301,"l":"j_2C25","t":"code","b":[24],"m":"clc","x":[10339,10368,10394,10467]},{"a":11302,"t":"code","b":[101,224],"m":"adc","oa":224,"o":"v1_seq_ptr"},{"a":11304,"t":"code","b":[133,224],"m":"sta","oa":224,"o":"v1_seq_ptr"},{"a":11306,"t":"code","b":[176,243],"m":"bcs","oa":11295,"o":"b_2C1F"},{"a":11308,"l":"j_2C2C","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[10319,10432,10461,10487,11292,11297]},{"a":11310,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":11312,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":11314,"t":"code","b":[144,12],"m":"bcc","oa":11328,"o":"b_2C40"},{"a":11316,"t":"code","b":[200],"m":"iny"},{"a":11317,"t":"code","b":[105,63],"m":"adc","o":"#$3F"},{"a":11319,"t":"code","b":[141,59,44],"m":"sta","oa":11323,"o":"a_2C3B"},{"a":11322,"t":"code","b":[108,12,63],"m":"jmp","oa":16140,"o":"(p_3F0C)"},{"a":11323,"t":"note","l":"a_2C3B","c":"Operand low byte of JMP ($3F0C) at $2C3A, rewritten by $2C37 with (command byte - $C0) so the jump reads the vector at $3F00 + command - $C0; $0C is only the last command dispatched before the file was saved ($CC)","note":"inside the item at $2C3A","x":[11319]},{"a":11325,"l":"b_2C3D","t":"code","b":[76,79,45],"m":"jmp","oa":11599,"o":"j_2D4F","x":[11338]},{"a":11328,"l":"b_2C40","c":"Voice 0 note start: hard restart (control = $08, test bit, gate off); if voice 0 is the filter voice ($2542 = 0) start the filter program; frequency from the note table at n + transpose $EC, also kept as the note's base in $24F1/$24F2; pulse width, AD, SR from instrument +$16..+$1A ($2472-$2476); control = +$18 with bit 3 cleared (bit 3 is the driver's own flag, kept in $24F3: release the gate the gate time before the note's end); copy the pulse program (when +$11 is set) and the pitch program (when +$0D is set) into the live workspace and start them; gate time and life from +$1B/+$1C; then the length","t":"code","b":[133,255],"m":"sta","oa":255,"o":"note_byte","x":[11314]},{"a":11330,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":11332,"t":"code","b":[144,2],"m":"bcc","oa":11336,"o":"b_2C48"},{"a":11334,"t":"code","b":[233,96],"m":"sbc","o":"#$60"},{"a":11336,"l":"b_2C48","t":"code","b":[201,95],"m":"cmp","o":"#$5F","x":[11332]},{"a":11338,"t":"code","b":[240,241],"m":"beq","oa":11325,"o":"b_2C3D"},{"a":11340,"t":"code","b":[101,236],"m":"adc","oa":236,"o":"v1_transpose"},{"a":11342,"t":"code","b":[170],"m":"tax"},{"a":11343,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":11345,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":11348,"t":"code","b":[173,66,37],"m":"lda","oa":9538,"o":"filter_voice"},{"a":11351,"t":"code","b":[208,7],"m":"bne","oa":11360,"o":"b_2C60"},{"a":11353,"t":"code","b":[134,239],"m":"stx","oa":239,"o":"cmd_ptr"},{"a":11355,"t":"code","b":[32,254,43],"m":"jsr","oa":11262,"o":"filter_start"},{"a":11358,"t":"code","b":[166,239],"m":"ldx","oa":239,"o":"cmd_ptr"},{"a":11360,"l":"b_2C60","t":"code","b":[188,196,37],"m":"ldy","oa":9668,"o":"freq_hi,x","x":[11351]},{"a":11363,"t":"code","b":[189,115,37],"m":"lda","oa":9587,"o":"freq_lo,x"},{"a":11366,"t":"code","b":[141,241,36],"m":"sta","oa":9457,"o":"v1_note_freq_lo"},{"a":11369,"t":"code","b":[140,242,36],"m":"sty","oa":9458,"o":"v1_note_freq_hi"},{"a":11372,"t":"code","b":[141,0,212],"m":"sta","o":"sid_v1_freq_lo"},{"a":11375,"t":"code","b":[140,1,212],"m":"sty","o":"sid_v1_freq_hi"},{"a":11378,"t":"code","b":[174,114,36],"m":"ldx","oa":9330,"o":"v1_ins_pw_lo"},{"a":11381,"t":"code","b":[172,115,36],"m":"ldy","oa":9331,"o":"v1_ins_pw_hi"},{"a":11384,"t":"code","b":[142,2,212],"m":"stx","o":"sid_v1_pulse_lo"},{"a":11387,"t":"code","b":[140,3,212],"m":"sty","o":"sid_v1_pulse_hi"},{"a":11390,"t":"code","b":[173,117,36],"m":"lda","oa":9333,"o":"v1_ins_ad"},{"a":11393,"t":"code","b":[141,5,212],"m":"sta","o":"sid_v1_attack_decay"},{"a":11396,"t":"code","b":[173,118,36],"m":"lda","oa":9334,"o":"v1_ins_sr"},{"a":11399,"t":"code","b":[141,6,212],"m":"sta","o":"sid_v1_sustain_release"},{"a":11402,"t":"code","b":[173,116,36],"m":"lda","oa":9332,"o":"v1_ins_ctrl"},{"a":11405,"t":"code","b":[141,243,36],"m":"sta","oa":9459,"o":"v1_ctrl"},{"a":11408,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":11410,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":11413,"t":"code","b":[173,109,36],"m":"lda","oa":9325,"o":"v1_ins_wmode"},{"a":11416,"t":"code","b":[141,234,36],"m":"sta","oa":9450,"o":"v1_wmode"},{"a":11419,"t":"code","b":[240,58],"m":"beq","oa":11479,"o":"b_2CD7"},{"a":11421,"t":"code","b":[142,239,36],"m":"stx","oa":9455,"o":"v1_pw_start_lo"},{"a":11424,"t":"code","b":[140,240,36],"m":"sty","oa":9456,"o":"v1_pw_start_hi"},{"a":11427,"t":"code","b":[134,241],"m":"stx","oa":241,"o":"v1_pw"},{"a":11429,"t":"code","b":[132,242],"m":"sty","oa":242,"o":"v1_pw_hi"},{"a":11431,"t":"code","b":[173,113,36],"m":"lda","oa":9329,"o":"v1_ins_wstep2_hi"},{"a":11434,"t":"code","b":[141,238,36],"m":"sta","oa":9454,"o":"v1_wstep2_hi"},{"a":11437,"t":"code","b":[173,112,36],"m":"lda","oa":9328,"o":"v1_ins_wstep2_lo"},{"a":11440,"t":"code","b":[141,237,36],"m":"sta","oa":9453,"o":"v1_wstep2_lo"},{"a":11443,"t":"code","b":[173,111,36],"m":"lda","oa":9327,"o":"v1_ins_wstep1_hi"},{"a":11446,"t":"code","b":[141,236,36],"m":"sta","oa":9452,"o":"v1_wstep1_hi"},{"a":11449,"t":"code","b":[173,110,36],"m":"lda","oa":9326,"o":"v1_ins_wstep1_lo"},{"a":11452,"t":"code","b":[141,235,36],"m":"sta","oa":9451,"o":"v1_wstep1_lo"},{"a":11455,"t":"code","b":[173,108,36],"m":"lda","oa":9324,"o":"v1_ins_wdelay"},{"a":11458,"t":"code","b":[141,233,36],"m":"sta","oa":9449,"o":"v1_wdelay"},{"a":11461,"t":"code","b":[174,106,36],"m":"ldx","oa":9322,"o":"v1_ins_wlen1"},{"a":11464,"t":"code","b":[172,107,36],"m":"ldy","oa":9323,"o":"v1_ins_wlen2"},{"a":11467,"t":"code","b":[142,231,36],"m":"stx","oa":9447,"o":"v1_wlen1"},{"a":11470,"t":"code","b":[142,250,36],"m":"stx","oa":9466,"o":"v1_wcount1"},{"a":11473,"t":"code","b":[140,232,36],"m":"sty","oa":9448,"o":"v1_wlen2"},{"a":11476,"t":"code","b":[140,251,36],"m":"sty","oa":9467,"o":"v1_wcount2"},{"a":11479,"l":"b_2CD7","t":"code","b":[173,105,36],"m":"lda","oa":9321,"o":"v1_ins_pmode","x":[11419]},{"a":11482,"t":"code","b":[141,230,36],"m":"sta","oa":9446,"o":"v1_pmode"},{"a":11485,"t":"code","b":[240,100],"m":"beq","oa":11587,"o":"b_2D43"},{"a":11487,"t":"code","b":[174,104,36],"m":"ldx","oa":9320,"o":"v1_ins_pdelay"},{"a":11490,"t":"code","b":[142,229,36],"m":"stx","oa":9445,"o":"v1_pdelay"},{"a":11493,"t":"code","b":[174,103,36],"m":"ldx","oa":9319,"o":"v1_ins_plen4"},{"a":11496,"t":"code","b":[142,228,36],"m":"stx","oa":9444,"o":"v1_plen4"},{"a":11499,"t":"code","b":[174,102,36],"m":"ldx","oa":9318,"o":"v1_ins_plen3"},{"a":11502,"t":"code","b":[142,227,36],"m":"stx","oa":9443,"o":"v1_plen3"},{"a":11505,"t":"code","b":[174,101,36],"m":"ldx","oa":9317,"o":"v1_ins_plen2"},{"a":11508,"t":"code","b":[142,226,36],"m":"stx","oa":9442,"o":"v1_plen2"},{"a":11511,"t":"code","b":[174,100,36],"m":"ldx","oa":9316,"o":"v1_ins_plen1"},{"a":11514,"t":"code","b":[142,225,36],"m":"stx","oa":9441,"o":"v1_plen1"},{"a":11517,"t":"code","b":[174,99,36],"m":"ldx","oa":9315,"o":"v1_ins_pstep4_hi"},{"a":11520,"t":"code","b":[142,224,36],"m":"stx","oa":9440,"o":"v1_pstep4_hi"},{"a":11523,"t":"code","b":[174,98,36],"m":"ldx","oa":9314,"o":"v1_ins_pstep4_lo"},{"a":11526,"t":"code","b":[142,223,36],"m":"stx","oa":9439,"o":"v1_pstep4_lo"},{"a":11529,"t":"code","b":[174,97,36],"m":"ldx","oa":9313,"o":"v1_ins_pstep3_hi"},{"a":11532,"t":"code","b":[142,222,36],"m":"stx","oa":9438,"o":"v1_pstep3_hi"},{"a":11535,"t":"code","b":[174,96,36],"m":"ldx","oa":9312,"o":"v1_ins_pstep3_lo"},{"a":11538,"t":"code","b":[142,221,36],"m":"stx","oa":9437,"o":"v1_pstep3_lo"},{"a":11541,"t":"code","b":[174,95,36],"m":"ldx","oa":9311,"o":"v1_ins_pstep2_hi"},{"a":11544,"t":"code","b":[142,220,36],"m":"stx","oa":9436,"o":"v1_pstep2_hi"},{"a":11547,"t":"code","b":[174,94,36],"m":"ldx","oa":9310,"o":"v1_ins_pstep2_lo"},{"a":11550,"t":"code","b":[142,219,36],"m":"stx","oa":9435,"o":"v1_pstep2_lo"},{"a":11553,"t":"code","b":[174,93,36],"m":"ldx","oa":9309,"o":"v1_ins_pstep1_hi"},{"a":11556,"t":"code","b":[142,218,36],"m":"stx","oa":9434,"o":"v1_pstep1_hi"},{"a":11559,"t":"code","b":[174,92,36],"m":"ldx","oa":9308,"o":"v1_instr"},{"a":11562,"t":"code","b":[142,217,36],"m":"stx","oa":9433,"o":"v1_state"},{"a":11565,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":11567,"t":"code","b":[240,15],"m":"beq","oa":11584,"o":"b_2D40"},{"a":11569,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"note_byte"},{"a":11571,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":11573,"t":"code","b":[144,2],"m":"bcc","oa":11577,"o":"b_2D39"},{"a":11575,"t":"code","b":[233,95],"m":"sbc","o":"#$5F"},{"a":11577,"l":"b_2D39","t":"code","b":[101,236],"m":"adc","oa":236,"o":"v1_transpose","x":[11573]},{"a":11579,"t":"code","b":[141,227,36],"m":"sta","oa":9443,"o":"v1_plen3"},{"a":11582,"t":"code","b":[208,3],"m":"bne","oa":11587,"o":"b_2D43"},{"a":11584,"l":"b_2D40","t":"code","b":[32,165,39],"m":"jsr","oa":10149,"o":"freq0_restart","x":[11567]},{"a":11587,"l":"b_2D43","t":"code","b":[174,119,36],"m":"ldx","oa":9335,"o":"v1_ins_gate_time","x":[11485,11582]},{"a":11590,"t":"code","b":[172,120,36],"m":"ldy","oa":9336,"o":"v1_ins_life"},{"a":11593,"t":"code","b":[142,244,36],"m":"stx","oa":9460,"o":"v1_gate_timer"},{"a":11596,"t":"code","b":[140,245,36],"m":"sty","oa":9461,"o":"v1_life_timer"},{"a":11599,"l":"j_2D4F","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[11325]},{"a":11601,"t":"code","b":[177,224],"m":"lda","oa":224,"o":"(v1_seq_ptr),y"},{"a":11603,"t":"code","b":[166,255],"m":"ldx","oa":255,"o":"note_byte"},{"a":11605,"t":"code","b":[224,96],"m":"cpx","o":"#$60"},{"a":11607,"t":"code","b":[176,4],"m":"bcs","oa":11613,"o":"b_2D5D"},{"a":11609,"t":"code","b":[170],"m":"tax"},{"a":11610,"t":"code","b":[189,73,37],"m":"lda","oa":9545,"o":"pair_tmp,x"},{"a":11613,"l":"b_2D5D","t":"code","b":[133,230],"m":"sta","oa":230,"o":"v1_note_wait","x":[11607]},{"a":11615,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":11617,"t":"code","b":[24],"m":"clc"},{"a":11618,"t":"code","b":[101,224],"m":"adc","oa":224,"o":"v1_seq_ptr"},{"a":11620,"t":"code","b":[133,224],"m":"sta","oa":224,"o":"v1_seq_ptr"},{"a":11622,"t":"code","b":[176,1],"m":"bcs","oa":11625,"o":"b_2D69"},{"a":11624,"t":"code","b":[96],"m":"rts"},{"a":11625,"l":"b_2D69","t":"code","b":[230,225],"m":"inc","oa":225,"o":"v1_seq_ptr_hi","x":[11622]},{"a":11627,"t":"code","b":[96],"m":"rts"},{"a":11628,"l":"seq1_tick","c":"Voice 1 sequencer, the same as seq0_tick for voice 1: active flag $2546, length $E7, pointer $E2/$E3, commands through the vector table $3F32, transpose $ED, instrument block $2479, live workspace $24FC, SID $D407-$D40D","t":"code","b":[173,70,37],"m":"lda","oa":9542,"o":"v2_playing","x":[9752,63640]},{"a":11631,"t":"code","b":[240,4],"m":"beq","oa":11637,"o":"r_2D75"},{"a":11633,"t":"code","b":[198,231],"m":"dec","oa":231,"o":"v2_note_wait"},{"a":11635,"t":"code","b":[240,14],"m":"beq","oa":11651,"o":"j_2D83"},{"a":11637,"l":"r_2D75","t":"code","b":[96],"m":"rts","x":[11631]},{"a":11638,"l":"b_2D76","t":"code","b":[230,227],"m":"inc","oa":227,"o":"v2_seq_ptr_hi","x":[11649]},{"a":11640,"t":"code","b":[208,9],"m":"bne","oa":11651,"o":"j_2D83"},{"a":11642,"l":"j_2D7A","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[10675,10700,10759,10781]},{"a":11644,"l":"j_2D7C","t":"code","b":[24],"m":"clc","x":[10575,10595,10624,10650,10723]},{"a":11645,"t":"code","b":[101,226],"m":"adc","oa":226,"o":"v2_seq_ptr"},{"a":11647,"t":"code","b":[133,226],"m":"sta","oa":226,"o":"v2_seq_ptr"},{"a":11649,"t":"code","b":[176,243],"m":"bcs","oa":11638,"o":"b_2D76"},{"a":11651,"l":"j_2D83","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[10555,10688,10717,10743,11635,11640]},{"a":11653,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":11655,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":11657,"t":"code","b":[144,12],"m":"bcc","oa":11671,"o":"b_2D97"},{"a":11659,"t":"code","b":[200],"m":"iny"},{"a":11660,"t":"code","b":[105,113],"m":"adc","o":"#$71"},{"a":11662,"t":"code","b":[141,146,45],"m":"sta","oa":11666,"o":"a_2D92"},{"a":11665,"t":"code","b":[108,62,63],"m":"jmp","oa":16190,"o":"(p_3F3E)"},{"a":11666,"t":"note","l":"a_2D92","c":"Operand low byte of JMP ($3F3E) at $2D91, rewritten by $2D8E with $32 + (command - $C0), so voice 1 reads its vectors at $3F32 + command - $C0","note":"inside the item at $2D91","x":[11662]},{"a":11668,"l":"b_2D94","t":"code","b":[76,168,46],"m":"jmp","oa":11944,"o":"j_2EA8","x":[11681]},{"a":11671,"l":"b_2D97","c":"Voice 1 note start, as at $2C40: filter program started when $2542 = 1; in arpeggio mode (pitch mode bit 3) the note number is kept in $2506 as the arpeggio's base","t":"code","b":[133,255],"m":"sta","oa":255,"o":"note_byte","x":[11657]},{"a":11673,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":11675,"t":"code","b":[144,2],"m":"bcc","oa":11679,"o":"b_2D9F"},{"a":11677,"t":"code","b":[233,96],"m":"sbc","o":"#$60"},{"a":11679,"l":"b_2D9F","t":"code","b":[201,95],"m":"cmp","o":"#$5F","x":[11675]},{"a":11681,"t":"code","b":[240,241],"m":"beq","oa":11668,"o":"b_2D94"},{"a":11683,"t":"code","b":[101,237],"m":"adc","oa":237,"o":"v2_transpose"},{"a":11685,"t":"code","b":[170],"m":"tax"},{"a":11686,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":11688,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":11691,"t":"code","b":[173,66,37],"m":"lda","oa":9538,"o":"filter_voice"},{"a":11694,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":11696,"t":"code","b":[208,7],"m":"bne","oa":11705,"o":"b_2DB9"},{"a":11698,"t":"code","b":[134,239],"m":"stx","oa":239,"o":"cmd_ptr"},{"a":11700,"t":"code","b":[32,254,43],"m":"jsr","oa":11262,"o":"filter_start"},{"a":11703,"t":"code","b":[166,239],"m":"ldx","oa":239,"o":"cmd_ptr"},{"a":11705,"l":"b_2DB9","t":"code","b":[188,196,37],"m":"ldy","oa":9668,"o":"freq_hi,x","x":[11696]},{"a":11708,"t":"code","b":[189,115,37],"m":"lda","oa":9587,"o":"freq_lo,x"},{"a":11711,"t":"code","b":[141,20,37],"m":"sta","oa":9492,"o":"v2_note_freq_lo"},{"a":11714,"t":"code","b":[140,21,37],"m":"sty","oa":9493,"o":"v2_note_freq_hi"},{"a":11717,"t":"code","b":[141,7,212],"m":"sta","o":"sid_v2_freq_lo"},{"a":11720,"t":"code","b":[140,8,212],"m":"sty","o":"sid_v2_freq_hi"},{"a":11723,"t":"code","b":[174,143,36],"m":"ldx","oa":9359,"o":"v2_ins_pw_lo"},{"a":11726,"t":"code","b":[172,144,36],"m":"ldy","oa":9360,"o":"v2_ins_pw_hi"},{"a":11729,"t":"code","b":[142,9,212],"m":"stx","o":"sid_v2_pulse_lo"},{"a":11732,"t":"code","b":[140,10,212],"m":"sty","o":"sid_v2_pulse_hi"},{"a":11735,"t":"code","b":[173,146,36],"m":"lda","oa":9362,"o":"v2_ins_ad"},{"a":11738,"t":"code","b":[141,12,212],"m":"sta","o":"sid_v2_attack_decay"},{"a":11741,"t":"code","b":[173,147,36],"m":"lda","oa":9363,"o":"v2_ins_sr"},{"a":11744,"t":"code","b":[141,13,212],"m":"sta","o":"sid_v2_sustain_release"},{"a":11747,"t":"code","b":[173,145,36],"m":"lda","oa":9361,"o":"v2_ins_ctrl"},{"a":11750,"t":"code","b":[141,22,37],"m":"sta","oa":9494,"o":"v2_ctrl"},{"a":11753,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":11755,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":11758,"t":"code","b":[173,138,36],"m":"lda","oa":9354,"o":"v2_ins_wmode"},{"a":11761,"t":"code","b":[141,13,37],"m":"sta","oa":9485,"o":"v2_wmode"},{"a":11764,"t":"code","b":[240,58],"m":"beq","oa":11824,"o":"b_2E30"},{"a":11766,"t":"code","b":[142,18,37],"m":"stx","oa":9490,"o":"v2_pw_start_lo"},{"a":11769,"t":"code","b":[140,19,37],"m":"sty","oa":9491,"o":"v2_pw_start_hi"},{"a":11772,"t":"code","b":[134,243],"m":"stx","oa":243,"o":"v2_pw"},{"a":11774,"t":"code","b":[132,244],"m":"sty","oa":244,"o":"v2_pw_hi"},{"a":11776,"t":"code","b":[173,142,36],"m":"lda","oa":9358,"o":"v2_ins_wstep2_hi"},{"a":11779,"t":"code","b":[141,17,37],"m":"sta","oa":9489,"o":"v2_wstep2_hi"},{"a":11782,"t":"code","b":[174,141,36],"m":"ldx","oa":9357,"o":"v2_ins_wstep2_lo"},{"a":11785,"t":"code","b":[142,16,37],"m":"stx","oa":9488,"o":"v2_wstep2_lo"},{"a":11788,"t":"code","b":[173,140,36],"m":"lda","oa":9356,"o":"v2_ins_wstep1_hi"},{"a":11791,"t":"code","b":[141,15,37],"m":"sta","oa":9487,"o":"v2_wstep1_hi"},{"a":11794,"t":"code","b":[173,139,36],"m":"lda","oa":9355,"o":"v2_ins_wstep1_lo"},{"a":11797,"t":"code","b":[141,14,37],"m":"sta","oa":9486,"o":"v2_wstep1_lo"},{"a":11800,"t":"code","b":[173,137,36],"m":"lda","oa":9353,"o":"v2_ins_wdelay"},{"a":11803,"t":"code","b":[141,12,37],"m":"sta","oa":9484,"o":"v2_wdelay"},{"a":11806,"t":"code","b":[174,135,36],"m":"ldx","oa":9351,"o":"v2_ins_wlen1"},{"a":11809,"t":"code","b":[172,136,36],"m":"ldy","oa":9352,"o":"v2_ins_wlen2"},{"a":11812,"t":"code","b":[142,10,37],"m":"stx","oa":9482,"o":"v2_wlen1"},{"a":11815,"t":"code","b":[142,29,37],"m":"stx","oa":9501,"o":"v2_wcount1"},{"a":11818,"t":"code","b":[140,11,37],"m":"sty","oa":9483,"o":"v2_wlen2"},{"a":11821,"t":"code","b":[140,30,37],"m":"sty","oa":9502,"o":"v2_wcount2"},{"a":11824,"l":"b_2E30","t":"code","b":[173,134,36],"m":"lda","oa":9350,"o":"v2_ins_pmode","x":[11764]},{"a":11827,"t":"code","b":[141,9,37],"m":"sta","oa":9481,"o":"v2_pmode"},{"a":11830,"t":"code","b":[240,100],"m":"beq","oa":11932,"o":"b_2E9C"},{"a":11832,"t":"code","b":[174,133,36],"m":"ldx","oa":9349,"o":"v2_ins_pdelay"},{"a":11835,"t":"code","b":[142,8,37],"m":"stx","oa":9480,"o":"v2_pdelay"},{"a":11838,"t":"code","b":[174,132,36],"m":"ldx","oa":9348,"o":"v2_ins_plen4"},{"a":11841,"t":"code","b":[142,7,37],"m":"stx","oa":9479,"o":"v2_plen4"},{"a":11844,"t":"code","b":[174,131,36],"m":"ldx","oa":9347,"o":"v2_ins_plen3"},{"a":11847,"t":"code","b":[142,6,37],"m":"stx","oa":9478,"o":"v2_plen3"},{"a":11850,"t":"code","b":[174,130,36],"m":"ldx","oa":9346,"o":"v2_ins_plen2"},{"a":11853,"t":"code","b":[142,5,37],"m":"stx","oa":9477,"o":"v2_plen2"},{"a":11856,"t":"code","b":[174,129,36],"m":"ldx","oa":9345,"o":"v2_ins_plen1"},{"a":11859,"t":"code","b":[142,4,37],"m":"stx","oa":9476,"o":"v2_plen1"},{"a":11862,"t":"code","b":[174,128,36],"m":"ldx","oa":9344,"o":"v2_ins_pstep4_hi"},{"a":11865,"t":"code","b":[142,3,37],"m":"stx","oa":9475,"o":"v2_pstep4_hi"},{"a":11868,"t":"code","b":[174,127,36],"m":"ldx","oa":9343,"o":"v2_ins_pstep4_lo"},{"a":11871,"t":"code","b":[142,2,37],"m":"stx","oa":9474,"o":"v2_pstep4_lo"},{"a":11874,"t":"code","b":[174,126,36],"m":"ldx","oa":9342,"o":"v2_ins_pstep3_hi"},{"a":11877,"t":"code","b":[142,1,37],"m":"stx","oa":9473,"o":"v2_pstep3_hi"},{"a":11880,"t":"code","b":[174,125,36],"m":"ldx","oa":9341,"o":"v2_ins_pstep3_lo"},{"a":11883,"t":"code","b":[142,0,37],"m":"stx","oa":9472,"o":"v2_pstep3_lo"},{"a":11886,"t":"code","b":[174,124,36],"m":"ldx","oa":9340,"o":"v2_ins_pstep2_hi"},{"a":11889,"t":"code","b":[142,255,36],"m":"stx","oa":9471,"o":"v2_pstep2_hi"},{"a":11892,"t":"code","b":[174,123,36],"m":"ldx","oa":9339,"o":"v2_ins_pstep2_lo"},{"a":11895,"t":"code","b":[142,254,36],"m":"stx","oa":9470,"o":"v2_pstep2_lo"},{"a":11898,"t":"code","b":[174,122,36],"m":"ldx","oa":9338,"o":"v2_ins_pstep1_hi"},{"a":11901,"t":"code","b":[142,253,36],"m":"stx","oa":9469,"o":"v2_pstep1_hi"},{"a":11904,"t":"code","b":[174,121,36],"m":"ldx","oa":9337,"o":"v2_instr"},{"a":11907,"t":"code","b":[142,252,36],"m":"stx","oa":9468,"o":"v2_state"},{"a":11910,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":11912,"t":"code","b":[240,15],"m":"beq","oa":11929,"o":"b_2E99"},{"a":11914,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"note_byte"},{"a":11916,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":11918,"t":"code","b":[144,2],"m":"bcc","oa":11922,"o":"b_2E92"},{"a":11920,"t":"code","b":[233,95],"m":"sbc","o":"#$5F"},{"a":11922,"l":"b_2E92","t":"code","b":[101,237],"m":"adc","oa":237,"o":"v2_transpose","x":[11918]},{"a":11924,"t":"code","b":[141,6,37],"m":"sta","oa":9478,"o":"v2_plen3"},{"a":11927,"t":"code","b":[208,3],"m":"bne","oa":11932,"o":"b_2E9C"},{"a":11929,"l":"b_2E99","t":"code","b":[32,217,39],"m":"jsr","oa":10201,"o":"freq1_restart","x":[11912]},{"a":11932,"l":"b_2E9C","t":"code","b":[174,148,36],"m":"ldx","oa":9364,"o":"v2_ins_gate_time","x":[11830,11927]},{"a":11935,"t":"code","b":[172,149,36],"m":"ldy","oa":9365,"o":"v2_ins_life"},{"a":11938,"t":"code","b":[142,23,37],"m":"stx","oa":9495,"o":"v2_gate_timer"},{"a":11941,"t":"code","b":[140,24,37],"m":"sty","oa":9496,"o":"v2_life_timer"},{"a":11944,"l":"j_2EA8","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[11668]},{"a":11946,"t":"code","b":[177,226],"m":"lda","oa":226,"o":"(v2_seq_ptr),y"},{"a":11948,"t":"code","b":[166,255],"m":"ldx","oa":255,"o":"note_byte"},{"a":11950,"t":"code","b":[224,96],"m":"cpx","o":"#$60"},{"a":11952,"t":"code","b":[176,4],"m":"bcs","oa":11958,"o":"b_2EB6"},{"a":11954,"t":"code","b":[170],"m":"tax"},{"a":11955,"t":"code","b":[189,73,37],"m":"lda","oa":9545,"o":"pair_tmp,x"},{"a":11958,"l":"b_2EB6","t":"code","b":[133,231],"m":"sta","oa":231,"o":"v2_note_wait","x":[11952]},{"a":11960,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":11962,"t":"code","b":[24],"m":"clc"},{"a":11963,"t":"code","b":[101,226],"m":"adc","oa":226,"o":"v2_seq_ptr"},{"a":11965,"t":"code","b":[133,226],"m":"sta","oa":226,"o":"v2_seq_ptr"},{"a":11967,"t":"code","b":[176,1],"m":"bcs","oa":11970,"o":"b_2EC2"},{"a":11969,"t":"code","b":[96],"m":"rts"},{"a":11970,"l":"b_2EC2","t":"code","b":[230,227],"m":"inc","oa":227,"o":"v2_seq_ptr_hi","x":[11967]},{"a":11972,"t":"code","b":[96],"m":"rts"},{"a":11973,"l":"seq2_tick","c":"Voice 2 sequencer, as seq0_tick: active flag $2547, length $E8, pointer $E4/$E5, vectors at $3F64, transpose $EE, instrument block $2496, live workspace $251F, SID $D40E-$D414. One difference: note $50 (80) is not transposed and plays frequency 0","t":"code","b":[173,71,37],"m":"lda","oa":9543,"o":"v3_playing","x":[9755,63643]},{"a":11976,"t":"code","b":[240,4],"m":"beq","oa":11982,"o":"r_2ECE"},{"a":11978,"t":"code","b":[198,232],"m":"dec","oa":232,"o":"v3_note_wait"},{"a":11980,"t":"code","b":[240,14],"m":"beq","oa":11996,"o":"j_2EDC"},{"a":11982,"l":"r_2ECE","t":"code","b":[96],"m":"rts","x":[11976]},{"a":11983,"l":"b_2ECF","t":"code","b":[230,229],"m":"inc","oa":229,"o":"v3_seq_ptr_hi","x":[11994]},{"a":11985,"t":"code","b":[208,9],"m":"bne","oa":11996,"o":"j_2EDC"},{"a":11987,"l":"j_2ED3","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[10902,10982,11029,11098]},{"a":11989,"l":"j_2ED5","t":"code","b":[24],"m":"clc","x":[10857,10877,10931,10957,11013,11052]},{"a":11990,"t":"code","b":[101,228],"m":"adc","oa":228,"o":"v3_seq_ptr"},{"a":11992,"t":"code","b":[133,228],"m":"sta","oa":228,"o":"v3_seq_ptr"},{"a":11994,"t":"code","b":[176,243],"m":"bcs","oa":11983,"o":"b_2ECF"},{"a":11996,"l":"j_2EDC","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[10819,10995,11046,11072,11980,11985]},{"a":11998,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":12000,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":12002,"t":"code","b":[144,12],"m":"bcc","oa":12016,"o":"b_2EF0"},{"a":12004,"t":"code","b":[200],"m":"iny"},{"a":12005,"t":"code","b":[105,163],"m":"adc","o":"#$A3"},{"a":12007,"t":"code","b":[141,235,46],"m":"sta","oa":12011,"o":"a_2EEB"},{"a":12010,"t":"code","b":[108,114,63],"m":"jmp","oa":16242,"o":"(p_3F72)"},{"a":12011,"t":"note","l":"a_2EEB","c":"Operand low byte of JMP ($3F72) at $2EEA, rewritten by $2EE7 with $64 + (command - $C0): voice 2's vectors at $3F64 + command - $C0","note":"inside the item at $2EEA","x":[12007]},{"a":12013,"l":"b_2EED","t":"code","b":[76,5,48],"m":"jmp","oa":12293,"o":"j_3005","x":[12026]},{"a":12016,"l":"b_2EF0","c":"Voice 2 note start, as at $2C40, with the filter program started when $2542 = 2 (set by command $E0)","t":"code","b":[133,255],"m":"sta","oa":255,"o":"note_byte","x":[12002]},{"a":12018,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":12020,"t":"code","b":[144,2],"m":"bcc","oa":12024,"o":"b_2EF8"},{"a":12022,"t":"code","b":[233,96],"m":"sbc","o":"#$60"},{"a":12024,"l":"b_2EF8","t":"code","b":[201,95],"m":"cmp","o":"#$5F","x":[12020]},{"a":12026,"t":"code","b":[240,241],"m":"beq","oa":12013,"o":"b_2EED"},{"a":12028,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":12030,"t":"code","b":[240,2],"m":"beq","oa":12034,"o":"b_2F02"},{"a":12032,"t":"code","b":[101,238],"m":"adc","oa":238,"o":"v3_transpose"},{"a":12034,"l":"b_2F02","t":"code","b":[170],"m":"tax","x":[12030]},{"a":12035,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":12037,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":12040,"t":"code","b":[173,66,37],"m":"lda","oa":9538,"o":"filter_voice"},{"a":12043,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":12045,"t":"code","b":[208,7],"m":"bne","oa":12054,"o":"b_2F16"},{"a":12047,"t":"code","b":[134,239],"m":"stx","oa":239,"o":"cmd_ptr"},{"a":12049,"t":"code","b":[32,254,43],"m":"jsr","oa":11262,"o":"filter_start"},{"a":12052,"t":"code","b":[166,239],"m":"ldx","oa":239,"o":"cmd_ptr"},{"a":12054,"l":"b_2F16","t":"code","b":[188,196,37],"m":"ldy","oa":9668,"o":"freq_hi,x","x":[12045]},{"a":12057,"t":"code","b":[189,115,37],"m":"lda","oa":9587,"o":"freq_lo,x"},{"a":12060,"t":"code","b":[141,55,37],"m":"sta","oa":9527,"o":"v3_note_freq_lo"},{"a":12063,"t":"code","b":[140,56,37],"m":"sty","oa":9528,"o":"v3_note_freq_hi"},{"a":12066,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":12069,"t":"code","b":[140,15,212],"m":"sty","o":"sid_v3_freq_hi"},{"a":12072,"t":"code","b":[174,172,36],"m":"ldx","oa":9388,"o":"v3_ins_pw_lo"},{"a":12075,"t":"code","b":[172,173,36],"m":"ldy","oa":9389,"o":"v3_ins_pw_hi"},{"a":12078,"t":"code","b":[142,16,212],"m":"stx","o":"sid_v3_pulse_lo"},{"a":12081,"t":"code","b":[140,17,212],"m":"sty","o":"sid_v3_pulse_hi"},{"a":12084,"t":"code","b":[173,175,36],"m":"lda","oa":9391,"o":"v3_ins_ad"},{"a":12087,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":12090,"t":"code","b":[173,176,36],"m":"lda","oa":9392,"o":"v3_ins_sr"},{"a":12093,"t":"code","b":[141,20,212],"m":"sta","o":"sid_v3_sustain_release"},{"a":12096,"t":"code","b":[173,174,36],"m":"lda","oa":9390,"o":"v3_ins_ctrl"},{"a":12099,"t":"code","b":[141,57,37],"m":"sta","oa":9529,"o":"v3_ctrl"},{"a":12102,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":12104,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":12107,"t":"code","b":[173,167,36],"m":"lda","oa":9383,"o":"v3_ins_wmode"},{"a":12110,"t":"code","b":[141,48,37],"m":"sta","oa":9520,"o":"v3_wmode"},{"a":12113,"t":"code","b":[240,58],"m":"beq","oa":12173,"o":"b_2F8D"},{"a":12115,"t":"code","b":[142,53,37],"m":"stx","oa":9525,"o":"v3_pw_start_lo"},{"a":12118,"t":"code","b":[140,54,37],"m":"sty","oa":9526,"o":"v3_pw_start_hi"},{"a":12121,"t":"code","b":[134,245],"m":"stx","oa":245,"o":"v3_pw"},{"a":12123,"t":"code","b":[132,246],"m":"sty","oa":246,"o":"v3_pw_hi"},{"a":12125,"t":"code","b":[173,171,36],"m":"lda","oa":9387,"o":"v3_ins_wstep2_hi"},{"a":12128,"t":"code","b":[141,52,37],"m":"sta","oa":9524,"o":"v3_wstep2_hi"},{"a":12131,"t":"code","b":[173,170,36],"m":"lda","oa":9386,"o":"v3_ins_wstep2_lo"},{"a":12134,"t":"code","b":[141,51,37],"m":"sta","oa":9523,"o":"v3_wstep2_lo"},{"a":12137,"t":"code","b":[173,169,36],"m":"lda","oa":9385,"o":"v3_ins_wstep1_hi"},{"a":12140,"t":"code","b":[141,50,37],"m":"sta","oa":9522,"o":"v3_wstep1_hi"},{"a":12143,"t":"code","b":[173,168,36],"m":"lda","oa":9384,"o":"v3_ins_wstep1_lo"},{"a":12146,"t":"code","b":[141,49,37],"m":"sta","oa":9521,"o":"v3_wstep1_lo"},{"a":12149,"t":"code","b":[173,166,36],"m":"lda","oa":9382,"o":"v3_ins_wdelay"},{"a":12152,"t":"code","b":[141,47,37],"m":"sta","oa":9519,"o":"v3_wdelay"},{"a":12155,"t":"code","b":[174,164,36],"m":"ldx","oa":9380,"o":"v3_ins_wlen1"},{"a":12158,"t":"code","b":[172,165,36],"m":"ldy","oa":9381,"o":"v3_ins_wlen2"},{"a":12161,"t":"code","b":[142,45,37],"m":"stx","oa":9517,"o":"v3_wlen1"},{"a":12164,"t":"code","b":[142,64,37],"m":"stx","oa":9536,"o":"v3_wcount1"},{"a":12167,"t":"code","b":[140,46,37],"m":"sty","oa":9518,"o":"v3_wlen2"},{"a":12170,"t":"code","b":[140,65,37],"m":"sty","oa":9537,"o":"v3_wcount2"},{"a":12173,"l":"b_2F8D","t":"code","b":[173,163,36],"m":"lda","oa":9379,"o":"v3_ins_pmode","x":[12113]},{"a":12176,"t":"code","b":[141,44,37],"m":"sta","oa":9516,"o":"v3_pmode"},{"a":12179,"t":"code","b":[240,100],"m":"beq","oa":12281,"o":"b_2FF9"},{"a":12181,"t":"code","b":[174,162,36],"m":"ldx","oa":9378,"o":"v3_ins_pdelay"},{"a":12184,"t":"code","b":[142,43,37],"m":"stx","oa":9515,"o":"v3_pdelay"},{"a":12187,"t":"code","b":[174,161,36],"m":"ldx","oa":9377,"o":"v3_ins_plen4"},{"a":12190,"t":"code","b":[142,42,37],"m":"stx","oa":9514,"o":"v3_plen4"},{"a":12193,"t":"code","b":[174,160,36],"m":"ldx","oa":9376,"o":"v3_ins_plen3"},{"a":12196,"t":"code","b":[142,41,37],"m":"stx","oa":9513,"o":"v3_plen3"},{"a":12199,"t":"code","b":[174,159,36],"m":"ldx","oa":9375,"o":"v3_ins_plen2"},{"a":12202,"t":"code","b":[142,40,37],"m":"stx","oa":9512,"o":"v3_plen2"},{"a":12205,"t":"code","b":[174,158,36],"m":"ldx","oa":9374,"o":"v3_ins_plen1"},{"a":12208,"t":"code","b":[142,39,37],"m":"stx","oa":9511,"o":"v3_plen1"},{"a":12211,"t":"code","b":[174,157,36],"m":"ldx","oa":9373,"o":"v3_ins_pstep4_hi"},{"a":12214,"t":"code","b":[142,38,37],"m":"stx","oa":9510,"o":"v3_pstep4_hi"},{"a":12217,"t":"code","b":[174,156,36],"m":"ldx","oa":9372,"o":"v3_ins_pstep4_lo"},{"a":12220,"t":"code","b":[142,37,37],"m":"stx","oa":9509,"o":"v3_pstep4_lo"},{"a":12223,"t":"code","b":[174,155,36],"m":"ldx","oa":9371,"o":"v3_ins_pstep3_hi"},{"a":12226,"t":"code","b":[142,36,37],"m":"stx","oa":9508,"o":"v3_pstep3_hi"},{"a":12229,"t":"code","b":[174,154,36],"m":"ldx","oa":9370,"o":"v3_ins_pstep3_lo"},{"a":12232,"t":"code","b":[142,35,37],"m":"stx","oa":9507,"o":"v3_pstep3_lo"},{"a":12235,"t":"code","b":[174,153,36],"m":"ldx","oa":9369,"o":"v3_ins_pstep2_hi"},{"a":12238,"t":"code","b":[142,34,37],"m":"stx","oa":9506,"o":"v3_pstep2_hi"},{"a":12241,"t":"code","b":[174,152,36],"m":"ldx","oa":9368,"o":"v3_ins_pstep2_lo"},{"a":12244,"t":"code","b":[142,33,37],"m":"stx","oa":9505,"o":"v3_pstep2_lo"},{"a":12247,"t":"code","b":[174,151,36],"m":"ldx","oa":9367,"o":"v3_ins_pstep1_hi"},{"a":12250,"t":"code","b":[142,32,37],"m":"stx","oa":9504,"o":"v3_pstep1_hi"},{"a":12253,"t":"code","b":[174,150,36],"m":"ldx","oa":9366,"o":"v3_instr"},{"a":12256,"t":"code","b":[142,31,37],"m":"stx","oa":9503,"o":"v3_state"},{"a":12259,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":12261,"t":"code","b":[240,15],"m":"beq","oa":12278,"o":"b_2FF6"},{"a":12263,"t":"code","b":[165,255],"m":"lda","oa":255,"o":"note_byte"},{"a":12265,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":12267,"t":"code","b":[144,2],"m":"bcc","oa":12271,"o":"b_2FEF"},{"a":12269,"t":"code","b":[233,95],"m":"sbc","o":"#$5F"},{"a":12271,"l":"b_2FEF","t":"code","b":[101,238],"m":"adc","oa":238,"o":"v3_transpose","x":[12267]},{"a":12273,"t":"code","b":[141,41,37],"m":"sta","oa":9513,"o":"v3_plen3"},{"a":12276,"t":"code","b":[208,3],"m":"bne","oa":12281,"o":"b_2FF9"},{"a":12278,"l":"b_2FF6","t":"code","b":[32,9,40],"m":"jsr","oa":10249,"o":"freq2_restart","x":[12261]},{"a":12281,"l":"b_2FF9","t":"code","b":[174,177,36],"m":"ldx","oa":9393,"o":"v3_ins_gate_time","x":[12179,12276]},{"a":12284,"t":"code","b":[172,178,36],"m":"ldy","oa":9394,"o":"v3_ins_life"},{"a":12287,"t":"code","b":[142,58,37],"m":"stx","oa":9530,"o":"v3_gate_timer"},{"a":12290,"t":"code","b":[140,59,37],"m":"sty","oa":9531,"o":"v3_life_timer"},{"a":12293,"l":"j_3005","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[12013]},{"a":12295,"t":"code","b":[177,228],"m":"lda","oa":228,"o":"(v3_seq_ptr),y"},{"a":12297,"t":"code","b":[166,255],"m":"ldx","oa":255,"o":"note_byte"},{"a":12299,"t":"code","b":[224,96],"m":"cpx","o":"#$60"},{"a":12301,"t":"code","b":[176,4],"m":"bcs","oa":12307,"o":"b_3013"},{"a":12303,"t":"code","b":[170],"m":"tax"},{"a":12304,"t":"code","b":[189,73,37],"m":"lda","oa":9545,"o":"pair_tmp,x"},{"a":12307,"l":"b_3013","t":"code","b":[133,232],"m":"sta","oa":232,"o":"v3_note_wait","x":[12301]},{"a":12309,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":12311,"t":"code","b":[24],"m":"clc"},{"a":12312,"t":"code","b":[101,228],"m":"adc","oa":228,"o":"v3_seq_ptr"},{"a":12314,"t":"code","b":[133,228],"m":"sta","oa":228,"o":"v3_seq_ptr"},{"a":12316,"t":"code","b":[176,1],"m":"bcs","oa":12319,"o":"b_301F"},{"a":12318,"t":"code","b":[96],"m":"rts"},{"a":12319,"l":"b_301F","t":"code","b":[230,229],"m":"inc","oa":229,"o":"v3_seq_ptr_hi","x":[12316]},{"a":12321,"l":"r_3021","t":"code","b":[96],"m":"rts","x":[12325,12383]},{"a":12322,"l":"fx0_tick","c":"Voice 0 effects, once per sound tick, for music and sound effects alike; nothing while the life counter $24F5 is 0. Gate: with the control flag bit 3, the gate drops when the remaining length $E6 falls below the gate time $24F4; otherwise $24F4 counts down and the gate drops at 0 ($FF holds). After the gate drops, life $24F5 counts down ($FF never) and at 0 voice 0's registers $D400-$D406 are cleared and, if voice 0 is the filter voice, the filter program is stopped ($24D0 = 0). Pulse program (mode $24EA): after the delay $24E9, the width $F1/$F2 adds delta 1 ($24EB) for $24FA ticks, then delta 2 ($24ED) for $24FB ticks; at the end mode bit 7 restarts from the start width, bit 0 repeats, neither holds; written to $D402/$D403. Pitch program (mode $24E6): after the delay $24E5 (or, with mode bit 1, sliding by delta 4 during it), the frequency $F7/$F8 adds deltas 1-4 ($24D9-$24E0) for counts $24F6-$24F9; at the end bit 7 restarts at the note's pitch, bit 0 repeats; written to $D400/$D401","t":"code","b":[174,245,36],"m":"ldx","oa":9461,"o":"v1_life_timer","x":[9758,63646]},{"a":12325,"t":"code","b":[240,250],"m":"beq","oa":12321,"o":"r_3021"},{"a":12327,"t":"code","b":[173,243,36],"m":"lda","oa":9459,"o":"v1_ctrl"},{"a":12330,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":12332,"t":"code","b":[240,22],"m":"beq","oa":12356,"o":"b_3044"},{"a":12334,"t":"code","b":[165,230],"m":"lda","oa":230,"o":"v1_note_wait"},{"a":12336,"t":"code","b":[205,244,36],"m":"cmp","oa":9460,"o":"v1_gate_timer"},{"a":12339,"t":"code","b":[176,68],"m":"bcs","oa":12409,"o":"b_3079"},{"a":12341,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12343,"t":"code","b":[141,244,36],"m":"sta","oa":9460,"o":"v1_gate_timer"},{"a":12346,"t":"code","b":[173,243,36],"m":"lda","oa":9459,"o":"v1_ctrl"},{"a":12349,"t":"code","b":[41,246],"m":"and","o":"#$F6"},{"a":12351,"t":"code","b":[141,243,36],"m":"sta","oa":9459,"o":"v1_ctrl"},{"a":12354,"t":"code","b":[208,50],"m":"bne","oa":12406,"o":"b_3076"},{"a":12356,"l":"b_3044","t":"code","b":[173,244,36],"m":"lda","oa":9460,"o":"v1_gate_timer","x":[12332]},{"a":12359,"t":"code","b":[208,29],"m":"bne","oa":12390,"o":"b_3066"},{"a":12361,"t":"code","b":[172,245,36],"m":"ldy","oa":9461,"o":"v1_life_timer"},{"a":12364,"t":"code","b":[200],"m":"iny"},{"a":12365,"t":"code","b":[240,42],"m":"beq","oa":12409,"o":"b_3079"},{"a":12367,"t":"code","b":[206,245,36],"m":"dec","oa":9461,"o":"v1_life_timer"},{"a":12370,"t":"code","b":[208,37],"m":"bne","oa":12409,"o":"b_3079"},{"a":12372,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":12374,"l":"b_3056","t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x","x":[12378]},{"a":12377,"t":"code","b":[202],"m":"dex"},{"a":12378,"t":"code","b":[16,250],"m":"bpl","oa":12374,"o":"b_3056"},{"a":12380,"l":"j_305C","t":"code","b":[205,66,37],"m":"cmp","oa":9538,"o":"filter_voice","x":[12700,13070]},{"a":12383,"t":"code","b":[208,192],"m":"bne","oa":12321,"o":"r_3021"},{"a":12385,"t":"code","b":[232],"m":"inx"},{"a":12386,"t":"code","b":[142,208,36],"m":"stx","oa":9424,"o":"filter_mode"},{"a":12389,"t":"code","b":[96],"m":"rts"},{"a":12390,"l":"b_3066","t":"code","b":[172,244,36],"m":"ldy","oa":9460,"o":"v1_gate_timer","x":[12359]},{"a":12393,"l":"a_3069","c":"Also the target of BIT $3069 at $FA5F, $FA73, $FA8A and $FA9E: those are the $2C skip trick (a BIT whose operand bytes hide an instruction), not reads of this INY","t":"code","b":[200],"m":"iny","x":[64095,64115,64138,64158]},{"a":12394,"t":"code","b":[240,13],"m":"beq","oa":12409,"o":"b_3079"},{"a":12396,"t":"code","b":[206,244,36],"m":"dec","oa":9460,"o":"v1_gate_timer"},{"a":12399,"t":"code","b":[208,8],"m":"bne","oa":12409,"o":"b_3079"},{"a":12401,"t":"code","b":[173,243,36],"m":"lda","oa":9459,"o":"v1_ctrl"},{"a":12404,"t":"code","b":[41,246],"m":"and","o":"#$F6"},{"a":12406,"l":"b_3076","t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control","x":[12354]},{"a":12409,"l":"b_3079","t":"code","b":[173,234,36],"m":"lda","oa":9450,"o":"v1_wmode","x":[12339,12365,12370,12394,12399]},{"a":12412,"t":"code","b":[240,89],"m":"beq","oa":12503,"o":"b_30D7"},{"a":12414,"t":"code","b":[173,233,36],"m":"lda","oa":9449,"o":"v1_wdelay"},{"a":12417,"t":"code","b":[240,6],"m":"beq","oa":12425,"o":"b_3089"},{"a":12419,"t":"code","b":[206,233,36],"m":"dec","oa":9449,"o":"v1_wdelay"},{"a":12422,"t":"code","b":[76,215,48],"m":"jmp","oa":12503,"o":"b_30D7"},{"a":12425,"l":"b_3089","t":"code","b":[24],"m":"clc","x":[12417,12484,12490]},{"a":12426,"t":"code","b":[166,241],"m":"ldx","oa":241,"o":"v1_pw"},{"a":12428,"t":"code","b":[164,242],"m":"ldy","oa":242,"o":"v1_pw_hi"},{"a":12430,"t":"code","b":[173,250,36],"m":"lda","oa":9466,"o":"v1_wcount1"},{"a":12433,"t":"code","b":[240,16],"m":"beq","oa":12451,"o":"b_30A3"},{"a":12435,"t":"code","b":[206,250,36],"m":"dec","oa":9466,"o":"v1_wcount1"},{"a":12438,"t":"code","b":[138],"m":"txa"},{"a":12439,"t":"code","b":[109,235,36],"m":"adc","oa":9451,"o":"v1_wstep1_lo"},{"a":12442,"t":"code","b":[170],"m":"tax"},{"a":12443,"t":"code","b":[152],"m":"tya"},{"a":12444,"t":"code","b":[109,236,36],"m":"adc","oa":9452,"o":"v1_wstep1_hi"},{"a":12447,"t":"code","b":[168],"m":"tay"},{"a":12448,"t":"code","b":[76,205,48],"m":"jmp","oa":12493,"o":"j_30CD"},{"a":12451,"l":"b_30A3","t":"code","b":[173,251,36],"m":"lda","oa":9467,"o":"v1_wcount2","x":[12433]},{"a":12454,"t":"code","b":[240,16],"m":"beq","oa":12472,"o":"b_30B8"},{"a":12456,"t":"code","b":[206,251,36],"m":"dec","oa":9467,"o":"v1_wcount2"},{"a":12459,"t":"code","b":[138],"m":"txa"},{"a":12460,"t":"code","b":[109,237,36],"m":"adc","oa":9453,"o":"v1_wstep2_lo"},{"a":12463,"t":"code","b":[170],"m":"tax"},{"a":12464,"t":"code","b":[152],"m":"tya"},{"a":12465,"t":"code","b":[109,238,36],"m":"adc","oa":9454,"o":"v1_wstep2_hi"},{"a":12468,"t":"code","b":[168],"m":"tay"},{"a":12469,"t":"code","b":[76,205,48],"m":"jmp","oa":12493,"o":"j_30CD"},{"a":12472,"l":"b_30B8","t":"code","b":[173,234,36],"m":"lda","oa":9450,"o":"v1_wmode","x":[12454]},{"a":12475,"t":"code","b":[41,129],"m":"and","o":"#$81"},{"a":12477,"t":"code","b":[240,14],"m":"beq","oa":12493,"o":"j_30CD"},{"a":12479,"t":"code","b":[16,6],"m":"bpl","oa":12487,"o":"b_30C7"},{"a":12481,"t":"code","b":[32,197,38],"m":"jsr","oa":9925,"o":"pulse0_restart"},{"a":12484,"t":"code","b":[76,137,48],"m":"jmp","oa":12425,"o":"b_3089"},{"a":12487,"l":"b_30C7","t":"code","b":[32,203,38],"m":"jsr","oa":9931,"o":"pulse0_reload","x":[12479]},{"a":12490,"t":"code","b":[76,137,48],"m":"jmp","oa":12425,"o":"b_3089"},{"a":12493,"l":"j_30CD","t":"code","b":[134,241],"m":"stx","oa":241,"o":"v1_pw","x":[12448,12469,12477]},{"a":12495,"t":"code","b":[132,242],"m":"sty","oa":242,"o":"v1_pw_hi"},{"a":12497,"t":"code","b":[142,2,212],"m":"stx","o":"sid_v1_pulse_lo"},{"a":12500,"t":"code","b":[140,3,212],"m":"sty","o":"sid_v1_pulse_hi"},{"a":12503,"l":"b_30D7","t":"code","b":[173,230,36],"m":"lda","oa":9446,"o":"v1_pmode","x":[12412,12422]},{"a":12506,"t":"code","b":[240,20],"m":"beq","oa":12528,"o":"r_30F0"},{"a":12508,"t":"code","b":[166,247],"m":"ldx","oa":247,"o":"v1_freq"},{"a":12510,"t":"code","b":[164,248],"m":"ldy","oa":248,"o":"v1_freq_hi"},{"a":12512,"t":"code","b":[24],"m":"clc"},{"a":12513,"t":"code","b":[173,229,36],"m":"lda","oa":9445,"o":"v1_pdelay"},{"a":12516,"t":"code","b":[240,12],"m":"beq","oa":12530,"o":"b_30F2"},{"a":12518,"t":"code","b":[206,229,36],"m":"dec","oa":9445,"o":"v1_pdelay"},{"a":12521,"t":"code","b":[173,230,36],"m":"lda","oa":9446,"o":"v1_pmode"},{"a":12524,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":12526,"t":"code","b":[208,70],"m":"bne","oa":12598,"o":"b_3136"},{"a":12528,"l":"r_30F0","t":"code","b":[96],"m":"rts","x":[12506]},{"a":12529,"l":"j_30F1","t":"code","b":[24],"m":"clc","x":[12631,12637]},{"a":12530,"l":"b_30F2","t":"code","b":[173,246,36],"m":"lda","oa":9462,"o":"v1_pcount1","x":[12516]},{"a":12533,"t":"code","b":[240,15],"m":"beq","oa":12550,"o":"b_3106"},{"a":12535,"t":"code","b":[206,246,36],"m":"dec","oa":9462,"o":"v1_pcount1"},{"a":12538,"t":"code","b":[138],"m":"txa"},{"a":12539,"t":"code","b":[109,217,36],"m":"adc","oa":9433,"o":"v1_state"},{"a":12542,"t":"code","b":[170],"m":"tax"},{"a":12543,"t":"code","b":[152],"m":"tya"},{"a":12544,"t":"code","b":[109,218,36],"m":"adc","oa":9434,"o":"v1_pstep1_hi"},{"a":12547,"t":"code","b":[76,63,49],"m":"jmp","oa":12607,"o":"j_313F"},{"a":12550,"l":"b_3106","t":"code","b":[173,247,36],"m":"lda","oa":9463,"o":"v1_pcount2","x":[12533]},{"a":12553,"t":"code","b":[240,15],"m":"beq","oa":12570,"o":"b_311A"},{"a":12555,"t":"code","b":[206,247,36],"m":"dec","oa":9463,"o":"v1_pcount2"},{"a":12558,"t":"code","b":[138],"m":"txa"},{"a":12559,"t":"code","b":[109,219,36],"m":"adc","oa":9435,"o":"v1_pstep2_lo"},{"a":12562,"t":"code","b":[170],"m":"tax"},{"a":12563,"t":"code","b":[152],"m":"tya"},{"a":12564,"t":"code","b":[109,220,36],"m":"adc","oa":9436,"o":"v1_pstep2_hi"},{"a":12567,"t":"code","b":[76,63,49],"m":"jmp","oa":12607,"o":"j_313F"},{"a":12570,"l":"b_311A","t":"code","b":[173,248,36],"m":"lda","oa":9464,"o":"v1_pcount3","x":[12553]},{"a":12573,"t":"code","b":[240,15],"m":"beq","oa":12590,"o":"b_312E"},{"a":12575,"t":"code","b":[206,248,36],"m":"dec","oa":9464,"o":"v1_pcount3"},{"a":12578,"t":"code","b":[138],"m":"txa"},{"a":12579,"t":"code","b":[109,221,36],"m":"adc","oa":9437,"o":"v1_pstep3_lo"},{"a":12582,"t":"code","b":[170],"m":"tax"},{"a":12583,"t":"code","b":[152],"m":"tya"},{"a":12584,"t":"code","b":[109,222,36],"m":"adc","oa":9438,"o":"v1_pstep3_hi"},{"a":12587,"t":"code","b":[76,63,49],"m":"jmp","oa":12607,"o":"j_313F"},{"a":12590,"l":"b_312E","t":"code","b":[173,249,36],"m":"lda","oa":9465,"o":"v1_pcount4","x":[12573]},{"a":12593,"t":"code","b":[240,24],"m":"beq","oa":12619,"o":"b_314B"},{"a":12595,"t":"code","b":[206,249,36],"m":"dec","oa":9465,"o":"v1_pcount4"},{"a":12598,"l":"b_3136","t":"code","b":[138],"m":"txa","x":[12526]},{"a":12599,"t":"code","b":[109,223,36],"m":"adc","oa":9439,"o":"v1_pstep4_lo"},{"a":12602,"t":"code","b":[170],"m":"tax"},{"a":12603,"t":"code","b":[152],"m":"tya"},{"a":12604,"t":"code","b":[109,224,36],"m":"adc","oa":9440,"o":"v1_pstep4_hi"},{"a":12607,"l":"j_313F","t":"code","b":[168],"m":"tay","x":[12547,12567,12587]},{"a":12608,"l":"b_3140","t":"code","b":[142,0,212],"m":"stx","o":"sid_v1_freq_lo","x":[12624]},{"a":12611,"t":"code","b":[140,1,212],"m":"sty","o":"sid_v1_freq_hi"},{"a":12614,"t":"code","b":[134,247],"m":"stx","oa":247,"o":"v1_freq"},{"a":12616,"t":"code","b":[132,248],"m":"sty","oa":248,"o":"v1_freq_hi"},{"a":12618,"l":"r_314A","t":"code","b":[96],"m":"rts","x":[12643]},{"a":12619,"l":"b_314B","t":"code","b":[173,230,36],"m":"lda","oa":9446,"o":"v1_pmode","x":[12593]},{"a":12622,"t":"code","b":[41,129],"m":"and","o":"#$81"},{"a":12624,"t":"code","b":[240,238],"m":"beq","oa":12608,"o":"b_3140"},{"a":12626,"t":"code","b":[16,6],"m":"bpl","oa":12634,"o":"b_315A"},{"a":12628,"t":"code","b":[32,165,39],"m":"jsr","oa":10149,"o":"freq0_restart"},{"a":12631,"t":"code","b":[76,241,48],"m":"jmp","oa":12529,"o":"j_30F1"},{"a":12634,"l":"b_315A","t":"code","b":[32,175,39],"m":"jsr","oa":10159,"o":"freq0_reload","x":[12626]},{"a":12637,"t":"code","b":[76,241,48],"m":"jmp","oa":12529,"o":"j_30F1"},{"a":12640,"l":"fx1_tick","c":"Voice 1 effects, as fx0_tick with $2518 life, $2517 gate time, $2516 control, pulse $F3/$F4 ($250C delay, $250D mode, $250E-$2511 deltas, $251D/$251E counts) and pitch $F9/$FA ($24FC-$2503 deltas, $2508 delay, $2509 mode, $2519-$251C counts); SID $D407-$D40D. Pitch mode bit 3 selects the arpeggio at $322E instead of the pitch program","t":"code","b":[174,24,37],"m":"ldx","oa":9496,"o":"v2_life_timer","x":[9761,63649]},{"a":12643,"t":"code","b":[240,229],"m":"beq","oa":12618,"o":"r_314A"},{"a":12645,"t":"code","b":[173,22,37],"m":"lda","oa":9494,"o":"v2_ctrl"},{"a":12648,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":12650,"t":"code","b":[240,22],"m":"beq","oa":12674,"o":"b_3182"},{"a":12652,"t":"code","b":[165,231],"m":"lda","oa":231,"o":"v2_note_wait"},{"a":12654,"t":"code","b":[205,23,37],"m":"cmp","oa":9495,"o":"v2_gate_timer"},{"a":12657,"t":"code","b":[176,63],"m":"bcs","oa":12722,"o":"b_31B2"},{"a":12659,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12661,"t":"code","b":[141,23,37],"m":"sta","oa":9495,"o":"v2_gate_timer"},{"a":12664,"t":"code","b":[173,22,37],"m":"lda","oa":9494,"o":"v2_ctrl"},{"a":12667,"t":"code","b":[41,246],"m":"and","o":"#$F6"},{"a":12669,"t":"code","b":[141,22,37],"m":"sta","oa":9494,"o":"v2_ctrl"},{"a":12672,"t":"code","b":[208,45],"m":"bne","oa":12719,"o":"b_31AF"},{"a":12674,"l":"b_3182","t":"code","b":[173,23,37],"m":"lda","oa":9495,"o":"v2_gate_timer","x":[12650]},{"a":12677,"t":"code","b":[208,24],"m":"bne","oa":12703,"o":"b_319F"},{"a":12679,"t":"code","b":[172,24,37],"m":"ldy","oa":9496,"o":"v2_life_timer"},{"a":12682,"t":"code","b":[200],"m":"iny"},{"a":12683,"t":"code","b":[240,37],"m":"beq","oa":12722,"o":"b_31B2"},{"a":12685,"t":"code","b":[206,24,37],"m":"dec","oa":9496,"o":"v2_life_timer"},{"a":12688,"t":"code","b":[208,32],"m":"bne","oa":12722,"o":"b_31B2"},{"a":12690,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":12692,"l":"b_3194","t":"code","b":[157,7,212],"m":"sta","o":"sid_v2_freq_lo,x","x":[12696]},{"a":12695,"t":"code","b":[202],"m":"dex"},{"a":12696,"t":"code","b":[16,250],"m":"bpl","oa":12692,"o":"b_3194"},{"a":12698,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":12700,"t":"code","b":[76,92,48],"m":"jmp","oa":12380,"o":"j_305C"},{"a":12703,"l":"b_319F","t":"code","b":[172,23,37],"m":"ldy","oa":9495,"o":"v2_gate_timer","x":[12677]},{"a":12706,"t":"code","b":[200],"m":"iny"},{"a":12707,"t":"code","b":[240,13],"m":"beq","oa":12722,"o":"b_31B2"},{"a":12709,"t":"code","b":[206,23,37],"m":"dec","oa":9495,"o":"v2_gate_timer"},{"a":12712,"t":"code","b":[208,8],"m":"bne","oa":12722,"o":"b_31B2"},{"a":12714,"t":"code","b":[173,22,37],"m":"lda","oa":9494,"o":"v2_ctrl"},{"a":12717,"t":"code","b":[41,246],"m":"and","o":"#$F6"},{"a":12719,"l":"b_31AF","t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control","x":[12672]},{"a":12722,"l":"b_31B2","t":"code","b":[173,13,37],"m":"lda","oa":9485,"o":"v2_wmode","x":[12657,12683,12688,12707,12712]},{"a":12725,"t":"code","b":[240,89],"m":"beq","oa":12816,"o":"b_3210"},{"a":12727,"t":"code","b":[173,12,37],"m":"lda","oa":9484,"o":"v2_wdelay"},{"a":12730,"t":"code","b":[240,6],"m":"beq","oa":12738,"o":"b_31C2"},{"a":12732,"t":"code","b":[206,12,37],"m":"dec","oa":9484,"o":"v2_wdelay"},{"a":12735,"t":"code","b":[76,16,50],"m":"jmp","oa":12816,"o":"b_3210"},{"a":12738,"l":"b_31C2","t":"code","b":[24],"m":"clc","x":[12730,12797,12803]},{"a":12739,"t":"code","b":[166,243],"m":"ldx","oa":243,"o":"v2_pw"},{"a":12741,"t":"code","b":[164,244],"m":"ldy","oa":244,"o":"v2_pw_hi"},{"a":12743,"t":"code","b":[173,29,37],"m":"lda","oa":9501,"o":"v2_wcount1"},{"a":12746,"t":"code","b":[240,16],"m":"beq","oa":12764,"o":"b_31DC"},{"a":12748,"t":"code","b":[206,29,37],"m":"dec","oa":9501,"o":"v2_wcount1"},{"a":12751,"t":"code","b":[138],"m":"txa"},{"a":12752,"t":"code","b":[109,14,37],"m":"adc","oa":9486,"o":"v2_wstep1_lo"},{"a":12755,"t":"code","b":[170],"m":"tax"},{"a":12756,"t":"code","b":[152],"m":"tya"},{"a":12757,"t":"code","b":[109,15,37],"m":"adc","oa":9487,"o":"v2_wstep1_hi"},{"a":12760,"t":"code","b":[168],"m":"tay"},{"a":12761,"t":"code","b":[76,6,50],"m":"jmp","oa":12806,"o":"j_3206"},{"a":12764,"l":"b_31DC","t":"code","b":[173,30,37],"m":"lda","oa":9502,"o":"v2_wcount2","x":[12746]},{"a":12767,"t":"code","b":[240,16],"m":"beq","oa":12785,"o":"b_31F1"},{"a":12769,"t":"code","b":[206,30,37],"m":"dec","oa":9502,"o":"v2_wcount2"},{"a":12772,"t":"code","b":[138],"m":"txa"},{"a":12773,"t":"code","b":[109,16,37],"m":"adc","oa":9488,"o":"v2_wstep2_lo"},{"a":12776,"t":"code","b":[170],"m":"tax"},{"a":12777,"t":"code","b":[152],"m":"tya"},{"a":12778,"t":"code","b":[109,17,37],"m":"adc","oa":9489,"o":"v2_wstep2_hi"},{"a":12781,"t":"code","b":[168],"m":"tay"},{"a":12782,"t":"code","b":[76,6,50],"m":"jmp","oa":12806,"o":"j_3206"},{"a":12785,"l":"b_31F1","t":"code","b":[173,13,37],"m":"lda","oa":9485,"o":"v2_wmode","x":[12767]},{"a":12788,"t":"code","b":[41,129],"m":"and","o":"#$81"},{"a":12790,"t":"code","b":[240,14],"m":"beq","oa":12806,"o":"j_3206"},{"a":12792,"t":"code","b":[16,6],"m":"bpl","oa":12800,"o":"b_3200"},{"a":12794,"t":"code","b":[32,220,38],"m":"jsr","oa":9948,"o":"pulse1_restart"},{"a":12797,"t":"code","b":[76,194,49],"m":"jmp","oa":12738,"o":"b_31C2"},{"a":12800,"l":"b_3200","t":"code","b":[32,226,38],"m":"jsr","oa":9954,"o":"pulse1_reload","x":[12792]},{"a":12803,"t":"code","b":[76,194,49],"m":"jmp","oa":12738,"o":"b_31C2"},{"a":12806,"l":"j_3206","t":"code","b":[134,243],"m":"stx","oa":243,"o":"v2_pw","x":[12761,12782,12790]},{"a":12808,"t":"code","b":[132,244],"m":"sty","oa":244,"o":"v2_pw_hi"},{"a":12810,"t":"code","b":[142,9,212],"m":"stx","o":"sid_v2_pulse_lo"},{"a":12813,"t":"code","b":[140,10,212],"m":"sty","o":"sid_v2_pulse_hi"},{"a":12816,"l":"b_3210","t":"code","b":[173,9,37],"m":"lda","oa":9481,"o":"v2_pmode","x":[12725,12735]},{"a":12819,"t":"code","b":[240,24],"m":"beq","oa":12845,"o":"r_322D"},{"a":12821,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":12823,"t":"code","b":[208,21],"m":"bne","oa":12846,"o":"b_322E"},{"a":12825,"t":"code","b":[166,249],"m":"ldx","oa":249,"o":"v2_freq"},{"a":12827,"t":"code","b":[164,250],"m":"ldy","oa":250,"o":"v2_freq_hi"},{"a":12829,"t":"code","b":[24],"m":"clc"},{"a":12830,"t":"code","b":[173,8,37],"m":"lda","oa":9480,"o":"v2_pdelay"},{"a":12833,"t":"code","b":[240,65],"m":"beq","oa":12900,"o":"b_3264"},{"a":12835,"t":"code","b":[206,8,37],"m":"dec","oa":9480,"o":"v2_pdelay"},{"a":12838,"t":"code","b":[173,9,37],"m":"lda","oa":9481,"o":"v2_pmode"},{"a":12841,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":12843,"t":"code","b":[208,123],"m":"bne","oa":12968,"o":"b_32A8"},{"a":12845,"l":"r_322D","t":"code","b":[96],"m":"rts","x":[12819,12849]},{"a":12846,"l":"b_322E","c":"Voice 1 arpeggio (pitch mode bit 3): every $2502 ticks (counter $2500) take the next semitone offset from the table at ($2504) - index $2508 counting down from $2507 to 0 and round again - add it to the note number $2506 and write that note's frequency to $D407/$D408","t":"code","b":[206,0,37],"m":"dec","oa":9472,"o":"v2_pstep3_lo","x":[12823]},{"a":12849,"t":"code","b":[208,250],"m":"bne","oa":12845,"o":"r_322D"},{"a":12851,"t":"code","b":[172,2,37],"m":"ldy","oa":9474,"o":"v2_pstep4_lo"},{"a":12854,"t":"code","b":[140,0,37],"m":"sty","oa":9472,"o":"v2_pstep3_lo"},{"a":12857,"t":"code","b":[172,8,37],"m":"ldy","oa":9480,"o":"v2_pdelay"},{"a":12860,"t":"code","b":[16,3],"m":"bpl","oa":12865,"o":"b_3241"},{"a":12862,"t":"code","b":[172,7,37],"m":"ldy","oa":9479,"o":"v2_plen4"},{"a":12865,"l":"b_3241","t":"code","b":[174,4,37],"m":"ldx","oa":9476,"o":"v2_plen1","x":[12860]},{"a":12868,"t":"code","b":[134,239],"m":"stx","oa":239,"o":"cmd_ptr"},{"a":12870,"t":"code","b":[174,5,37],"m":"ldx","oa":9477,"o":"v2_plen2"},{"a":12873,"t":"code","b":[134,240],"m":"stx","oa":240,"o":"cmd_ptr_hi"},{"a":12875,"t":"code","b":[173,6,37],"m":"lda","oa":9478,"o":"v2_plen3"},{"a":12878,"t":"code","b":[24],"m":"clc"},{"a":12879,"t":"code","b":[113,239],"m":"adc","oa":239,"o":"(cmd_ptr),y"},{"a":12881,"t":"code","b":[136],"m":"dey"},{"a":12882,"t":"code","b":[140,8,37],"m":"sty","oa":9480,"o":"v2_pdelay"},{"a":12885,"t":"code","b":[168],"m":"tay"},{"a":12886,"t":"code","b":[190,115,37],"m":"ldx","oa":9587,"o":"freq_lo,y"},{"a":12889,"t":"code","b":[185,196,37],"m":"lda","oa":9668,"o":"freq_hi,y"},{"a":12892,"t":"code","b":[142,7,212],"m":"stx","o":"sid_v2_freq_lo"},{"a":12895,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":12898,"t":"code","b":[96],"m":"rts"},{"a":12899,"l":"j_3263","t":"code","b":[24],"m":"clc","x":[13001,13007]},{"a":12900,"l":"b_3264","t":"code","b":[173,25,37],"m":"lda","oa":9497,"o":"v2_pcount1","x":[12833]},{"a":12903,"t":"code","b":[240,15],"m":"beq","oa":12920,"o":"b_3278"},{"a":12905,"t":"code","b":[206,25,37],"m":"dec","oa":9497,"o":"v2_pcount1"},{"a":12908,"t":"code","b":[138],"m":"txa"},{"a":12909,"t":"code","b":[109,252,36],"m":"adc","oa":9468,"o":"v2_state"},{"a":12912,"t":"code","b":[170],"m":"tax"},{"a":12913,"t":"code","b":[152],"m":"tya"},{"a":12914,"t":"code","b":[109,253,36],"m":"adc","oa":9469,"o":"v2_pstep1_hi"},{"a":12917,"t":"code","b":[76,177,50],"m":"jmp","oa":12977,"o":"j_32B1"},{"a":12920,"l":"b_3278","t":"code","b":[173,26,37],"m":"lda","oa":9498,"o":"v2_pcount2","x":[12903]},{"a":12923,"t":"code","b":[240,15],"m":"beq","oa":12940,"o":"b_328C"},{"a":12925,"t":"code","b":[206,26,37],"m":"dec","oa":9498,"o":"v2_pcount2"},{"a":12928,"t":"code","b":[138],"m":"txa"},{"a":12929,"t":"code","b":[109,254,36],"m":"adc","oa":9470,"o":"v2_pstep2_lo"},{"a":12932,"t":"code","b":[170],"m":"tax"},{"a":12933,"t":"code","b":[152],"m":"tya"},{"a":12934,"t":"code","b":[109,255,36],"m":"adc","oa":9471,"o":"v2_pstep2_hi"},{"a":12937,"t":"code","b":[76,177,50],"m":"jmp","oa":12977,"o":"j_32B1"},{"a":12940,"l":"b_328C","t":"code","b":[173,27,37],"m":"lda","oa":9499,"o":"v2_pcount3","x":[12923]},{"a":12943,"t":"code","b":[240,15],"m":"beq","oa":12960,"o":"b_32A0"},{"a":12945,"t":"code","b":[206,27,37],"m":"dec","oa":9499,"o":"v2_pcount3"},{"a":12948,"t":"code","b":[138],"m":"txa"},{"a":12949,"t":"code","b":[109,0,37],"m":"adc","oa":9472,"o":"v2_pstep3_lo"},{"a":12952,"t":"code","b":[170],"m":"tax"},{"a":12953,"t":"code","b":[152],"m":"tya"},{"a":12954,"t":"code","b":[109,1,37],"m":"adc","oa":9473,"o":"v2_pstep3_hi"},{"a":12957,"t":"code","b":[76,177,50],"m":"jmp","oa":12977,"o":"j_32B1"},{"a":12960,"l":"b_32A0","t":"code","b":[173,28,37],"m":"lda","oa":9500,"o":"v2_pcount4","x":[12943]},{"a":12963,"t":"code","b":[240,24],"m":"beq","oa":12989,"o":"b_32BD"},{"a":12965,"t":"code","b":[206,28,37],"m":"dec","oa":9500,"o":"v2_pcount4"},{"a":12968,"l":"b_32A8","t":"code","b":[138],"m":"txa","x":[12843]},{"a":12969,"t":"code","b":[109,2,37],"m":"adc","oa":9474,"o":"v2_pstep4_lo"},{"a":12972,"t":"code","b":[170],"m":"tax"},{"a":12973,"t":"code","b":[152],"m":"tya"},{"a":12974,"t":"code","b":[109,3,37],"m":"adc","oa":9475,"o":"v2_pstep4_hi"},{"a":12977,"l":"j_32B1","t":"code","b":[168],"m":"tay","x":[12917,12937,12957]},{"a":12978,"l":"b_32B2","t":"code","b":[142,7,212],"m":"stx","o":"sid_v2_freq_lo","x":[12994]},{"a":12981,"t":"code","b":[140,8,212],"m":"sty","o":"sid_v2_freq_hi"},{"a":12984,"t":"code","b":[134,249],"m":"stx","oa":249,"o":"v2_freq"},{"a":12986,"t":"code","b":[132,250],"m":"sty","oa":250,"o":"v2_freq_hi"},{"a":12988,"l":"r_32BC","t":"code","b":[96],"m":"rts","x":[13013]},{"a":12989,"l":"b_32BD","t":"code","b":[173,9,37],"m":"lda","oa":9481,"o":"v2_pmode","x":[12963]},{"a":12992,"t":"code","b":[41,129],"m":"and","o":"#$81"},{"a":12994,"t":"code","b":[240,238],"m":"beq","oa":12978,"o":"b_32B2"},{"a":12996,"t":"code","b":[16,6],"m":"bpl","oa":13004,"o":"b_32CC"},{"a":12998,"t":"code","b":[32,217,39],"m":"jsr","oa":10201,"o":"freq1_restart"},{"a":13001,"t":"code","b":[76,99,50],"m":"jmp","oa":12899,"o":"j_3263"},{"a":13004,"l":"b_32CC","t":"code","b":[32,227,39],"m":"jsr","oa":10211,"o":"freq1_reload","x":[12996]},{"a":13007,"t":"code","b":[76,99,50],"m":"jmp","oa":12899,"o":"j_3263"},{"a":13010,"l":"fx2_tick","c":"Voice 2 effects, as fx0_tick with $253B life, $253A gate time, $2539 control, pulse $F5/$F6 ($252F delay, $2530 mode, $2531-$2534 deltas, $2540/$2541 counts) and pitch $FB/$FC ($251F-$2526 deltas, $252B delay, $252C mode, $253C-$253F counts); SID $D40E-$D414. Pulse and pitch programs are skipped while the frequency is 0 (note 80)","t":"code","b":[174,59,37],"m":"ldx","oa":9531,"o":"v3_life_timer","x":[9764,63652]},{"a":13013,"t":"code","b":[240,229],"m":"beq","oa":12988,"o":"r_32BC"},{"a":13015,"t":"code","b":[173,57,37],"m":"lda","oa":9529,"o":"v3_ctrl"},{"a":13018,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":13020,"t":"code","b":[240,22],"m":"beq","oa":13044,"o":"b_32F4"},{"a":13022,"t":"code","b":[165,232],"m":"lda","oa":232,"o":"v3_note_wait"},{"a":13024,"t":"code","b":[205,58,37],"m":"cmp","oa":9530,"o":"v3_gate_timer"},{"a":13027,"t":"code","b":[176,63],"m":"bcs","oa":13092,"o":"b_3324"},{"a":13029,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13031,"t":"code","b":[141,58,37],"m":"sta","oa":9530,"o":"v3_gate_timer"},{"a":13034,"t":"code","b":[173,57,37],"m":"lda","oa":9529,"o":"v3_ctrl"},{"a":13037,"t":"code","b":[41,246],"m":"and","o":"#$F6"},{"a":13039,"t":"code","b":[141,57,37],"m":"sta","oa":9529,"o":"v3_ctrl"},{"a":13042,"t":"code","b":[208,45],"m":"bne","oa":13089,"o":"b_3321"},{"a":13044,"l":"b_32F4","t":"code","b":[173,58,37],"m":"lda","oa":9530,"o":"v3_gate_timer","x":[13020]},{"a":13047,"t":"code","b":[208,24],"m":"bne","oa":13073,"o":"b_3311"},{"a":13049,"t":"code","b":[172,59,37],"m":"ldy","oa":9531,"o":"v3_life_timer"},{"a":13052,"t":"code","b":[200],"m":"iny"},{"a":13053,"t":"code","b":[240,37],"m":"beq","oa":13092,"o":"b_3324"},{"a":13055,"t":"code","b":[206,59,37],"m":"dec","oa":9531,"o":"v3_life_timer"},{"a":13058,"t":"code","b":[208,32],"m":"bne","oa":13092,"o":"b_3324"},{"a":13060,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":13062,"l":"b_3306","t":"code","b":[157,14,212],"m":"sta","o":"sid_v3_freq_lo,x","x":[13066]},{"a":13065,"t":"code","b":[202],"m":"dex"},{"a":13066,"t":"code","b":[16,250],"m":"bpl","oa":13062,"o":"b_3306"},{"a":13068,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":13070,"t":"code","b":[76,92,48],"m":"jmp","oa":12380,"o":"j_305C"},{"a":13073,"l":"b_3311","t":"code","b":[172,58,37],"m":"ldy","oa":9530,"o":"v3_gate_timer","x":[13047]},{"a":13076,"t":"code","b":[200],"m":"iny"},{"a":13077,"t":"code","b":[240,13],"m":"beq","oa":13092,"o":"b_3324"},{"a":13079,"t":"code","b":[206,58,37],"m":"dec","oa":9530,"o":"v3_gate_timer"},{"a":13082,"t":"code","b":[208,8],"m":"bne","oa":13092,"o":"b_3324"},{"a":13084,"t":"code","b":[173,57,37],"m":"lda","oa":9529,"o":"v3_ctrl"},{"a":13087,"t":"code","b":[41,246],"m":"and","o":"#$F6"},{"a":13089,"l":"b_3321","t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control","x":[13042]},{"a":13092,"l":"b_3324","t":"code","b":[173,48,37],"m":"lda","oa":9520,"o":"v3_wmode","x":[13027,13053,13058,13077,13082]},{"a":13095,"t":"code","b":[240,95],"m":"beq","oa":13192,"o":"b_3388"},{"a":13097,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"v3_freq"},{"a":13099,"t":"code","b":[5,252],"m":"ora","oa":252,"o":"v3_freq_hi"},{"a":13101,"t":"code","b":[240,89],"m":"beq","oa":13192,"o":"b_3388"},{"a":13103,"t":"code","b":[173,47,37],"m":"lda","oa":9519,"o":"v3_wdelay"},{"a":13106,"t":"code","b":[240,6],"m":"beq","oa":13114,"o":"b_333A"},{"a":13108,"t":"code","b":[206,47,37],"m":"dec","oa":9519,"o":"v3_wdelay"},{"a":13111,"t":"code","b":[76,136,51],"m":"jmp","oa":13192,"o":"b_3388"},{"a":13114,"l":"b_333A","t":"code","b":[24],"m":"clc","x":[13106,13173,13179]},{"a":13115,"t":"code","b":[166,245],"m":"ldx","oa":245,"o":"v3_pw"},{"a":13117,"t":"code","b":[164,246],"m":"ldy","oa":246,"o":"v3_pw_hi"},{"a":13119,"t":"code","b":[173,64,37],"m":"lda","oa":9536,"o":"v3_wcount1"},{"a":13122,"t":"code","b":[240,16],"m":"beq","oa":13140,"o":"b_3354"},{"a":13124,"t":"code","b":[206,64,37],"m":"dec","oa":9536,"o":"v3_wcount1"},{"a":13127,"t":"code","b":[138],"m":"txa"},{"a":13128,"t":"code","b":[109,49,37],"m":"adc","oa":9521,"o":"v3_wstep1_lo"},{"a":13131,"t":"code","b":[170],"m":"tax"},{"a":13132,"t":"code","b":[152],"m":"tya"},{"a":13133,"t":"code","b":[109,50,37],"m":"adc","oa":9522,"o":"v3_wstep1_hi"},{"a":13136,"t":"code","b":[168],"m":"tay"},{"a":13137,"t":"code","b":[76,126,51],"m":"jmp","oa":13182,"o":"j_337E"},{"a":13140,"l":"b_3354","t":"code","b":[173,65,37],"m":"lda","oa":9537,"o":"v3_wcount2","x":[13122]},{"a":13143,"t":"code","b":[240,16],"m":"beq","oa":13161,"o":"b_3369"},{"a":13145,"t":"code","b":[206,65,37],"m":"dec","oa":9537,"o":"v3_wcount2"},{"a":13148,"t":"code","b":[138],"m":"txa"},{"a":13149,"t":"code","b":[109,51,37],"m":"adc","oa":9523,"o":"v3_wstep2_lo"},{"a":13152,"t":"code","b":[170],"m":"tax"},{"a":13153,"t":"code","b":[152],"m":"tya"},{"a":13154,"t":"code","b":[109,52,37],"m":"adc","oa":9524,"o":"v3_wstep2_hi"},{"a":13157,"t":"code","b":[168],"m":"tay"},{"a":13158,"t":"code","b":[76,126,51],"m":"jmp","oa":13182,"o":"j_337E"},{"a":13161,"l":"b_3369","t":"code","b":[173,48,37],"m":"lda","oa":9520,"o":"v3_wmode","x":[13143]},{"a":13164,"t":"code","b":[41,129],"m":"and","o":"#$81"},{"a":13166,"t":"code","b":[240,14],"m":"beq","oa":13182,"o":"j_337E"},{"a":13168,"t":"code","b":[16,6],"m":"bpl","oa":13176,"o":"b_3378"},{"a":13170,"t":"code","b":[32,243,38],"m":"jsr","oa":9971,"o":"pulse2_restart"},{"a":13173,"t":"code","b":[76,58,51],"m":"jmp","oa":13114,"o":"b_333A"},{"a":13176,"l":"b_3378","t":"code","b":[32,249,38],"m":"jsr","oa":9977,"o":"pulse2_reload","x":[13168]},{"a":13179,"t":"code","b":[76,58,51],"m":"jmp","oa":13114,"o":"b_333A"},{"a":13182,"l":"j_337E","t":"code","b":[134,245],"m":"stx","oa":245,"o":"v3_pw","x":[13137,13158,13166]},{"a":13184,"t":"code","b":[132,246],"m":"sty","oa":246,"o":"v3_pw_hi"},{"a":13186,"t":"code","b":[142,16,212],"m":"stx","o":"sid_v3_pulse_lo"},{"a":13189,"t":"code","b":[140,17,212],"m":"sty","o":"sid_v3_pulse_hi"},{"a":13192,"l":"b_3388","t":"code","b":[173,44,37],"m":"lda","oa":9516,"o":"v3_pmode","x":[13095,13101,13111]},{"a":13195,"t":"code","b":[240,26],"m":"beq","oa":13223,"o":"r_33A7"},{"a":13197,"t":"code","b":[165,251],"m":"lda","oa":251,"o":"v3_freq"},{"a":13199,"t":"code","b":[5,252],"m":"ora","oa":252,"o":"v3_freq_hi"},{"a":13201,"t":"code","b":[240,20],"m":"beq","oa":13223,"o":"r_33A7"},{"a":13203,"t":"code","b":[166,251],"m":"ldx","oa":251,"o":"v3_freq"},{"a":13205,"t":"code","b":[164,252],"m":"ldy","oa":252,"o":"v3_freq_hi"},{"a":13207,"t":"code","b":[24],"m":"clc"},{"a":13208,"t":"code","b":[173,43,37],"m":"lda","oa":9515,"o":"v3_pdelay"},{"a":13211,"t":"code","b":[240,12],"m":"beq","oa":13225,"o":"b_33A9"},{"a":13213,"t":"code","b":[206,43,37],"m":"dec","oa":9515,"o":"v3_pdelay"},{"a":13216,"t":"code","b":[173,44,37],"m":"lda","oa":9516,"o":"v3_pmode"},{"a":13219,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":13221,"t":"code","b":[208,70],"m":"bne","oa":13293,"o":"b_33ED"},{"a":13223,"l":"r_33A7","t":"code","b":[96],"m":"rts","x":[13195,13201]},{"a":13224,"l":"j_33A8","t":"code","b":[24],"m":"clc","x":[13326,13332]},{"a":13225,"l":"b_33A9","t":"code","b":[173,60,37],"m":"lda","oa":9532,"o":"v3_pcount1","x":[13211]},{"a":13228,"t":"code","b":[240,15],"m":"beq","oa":13245,"o":"b_33BD"},{"a":13230,"t":"code","b":[206,60,37],"m":"dec","oa":9532,"o":"v3_pcount1"},{"a":13233,"t":"code","b":[138],"m":"txa"},{"a":13234,"t":"code","b":[109,31,37],"m":"adc","oa":9503,"o":"v3_state"},{"a":13237,"t":"code","b":[170],"m":"tax"},{"a":13238,"t":"code","b":[152],"m":"tya"},{"a":13239,"t":"code","b":[109,32,37],"m":"adc","oa":9504,"o":"v3_pstep1_hi"},{"a":13242,"t":"code","b":[76,246,51],"m":"jmp","oa":13302,"o":"j_33F6"},{"a":13245,"l":"b_33BD","t":"code","b":[173,61,37],"m":"lda","oa":9533,"o":"v3_pcount2","x":[13228]},{"a":13248,"t":"code","b":[240,15],"m":"beq","oa":13265,"o":"b_33D1"},{"a":13250,"t":"code","b":[206,61,37],"m":"dec","oa":9533,"o":"v3_pcount2"},{"a":13253,"t":"code","b":[138],"m":"txa"},{"a":13254,"t":"code","b":[109,33,37],"m":"adc","oa":9505,"o":"v3_pstep2_lo"},{"a":13257,"t":"code","b":[170],"m":"tax"},{"a":13258,"t":"code","b":[152],"m":"tya"},{"a":13259,"t":"code","b":[109,34,37],"m":"adc","oa":9506,"o":"v3_pstep2_hi"},{"a":13262,"t":"code","b":[76,246,51],"m":"jmp","oa":13302,"o":"j_33F6"},{"a":13265,"l":"b_33D1","t":"code","b":[173,62,37],"m":"lda","oa":9534,"o":"v3_pcount3","x":[13248]},{"a":13268,"t":"code","b":[240,15],"m":"beq","oa":13285,"o":"b_33E5"},{"a":13270,"t":"code","b":[206,62,37],"m":"dec","oa":9534,"o":"v3_pcount3"},{"a":13273,"t":"code","b":[138],"m":"txa"},{"a":13274,"t":"code","b":[109,35,37],"m":"adc","oa":9507,"o":"v3_pstep3_lo"},{"a":13277,"t":"code","b":[170],"m":"tax"},{"a":13278,"t":"code","b":[152],"m":"tya"},{"a":13279,"t":"code","b":[109,36,37],"m":"adc","oa":9508,"o":"v3_pstep3_hi"},{"a":13282,"t":"code","b":[76,246,51],"m":"jmp","oa":13302,"o":"j_33F6"},{"a":13285,"l":"b_33E5","t":"code","b":[173,63,37],"m":"lda","oa":9535,"o":"v3_pcount4","x":[13268]},{"a":13288,"t":"code","b":[240,24],"m":"beq","oa":13314,"o":"b_3402"},{"a":13290,"t":"code","b":[206,63,37],"m":"dec","oa":9535,"o":"v3_pcount4"},{"a":13293,"l":"b_33ED","t":"code","b":[138],"m":"txa","x":[13221]},{"a":13294,"t":"code","b":[109,37,37],"m":"adc","oa":9509,"o":"v3_pstep4_lo"},{"a":13297,"t":"code","b":[170],"m":"tax"},{"a":13298,"t":"code","b":[152],"m":"tya"},{"a":13299,"t":"code","b":[109,38,37],"m":"adc","oa":9510,"o":"v3_pstep4_hi"},{"a":13302,"l":"j_33F6","t":"code","b":[168],"m":"tay","x":[13242,13262,13282]},{"a":13303,"l":"b_33F7","t":"code","b":[142,14,212],"m":"stx","o":"sid_v3_freq_lo","x":[13319]},{"a":13306,"t":"code","b":[140,15,212],"m":"sty","o":"sid_v3_freq_hi"},{"a":13309,"t":"code","b":[134,251],"m":"stx","oa":251,"o":"v3_freq"},{"a":13311,"t":"code","b":[132,252],"m":"sty","oa":252,"o":"v3_freq_hi"},{"a":13313,"t":"code","b":[96],"m":"rts"},{"a":13314,"l":"b_3402","t":"code","b":[173,44,37],"m":"lda","oa":9516,"o":"v3_pmode","x":[13288]},{"a":13317,"t":"code","b":[41,129],"m":"and","o":"#$81"},{"a":13319,"t":"code","b":[240,238],"m":"beq","oa":13303,"o":"b_33F7"},{"a":13321,"t":"code","b":[16,6],"m":"bpl","oa":13329,"o":"b_3411"},{"a":13323,"t":"code","b":[32,9,40],"m":"jsr","oa":10249,"o":"freq2_restart"},{"a":13326,"t":"code","b":[76,168,51],"m":"jmp","oa":13224,"o":"j_33A8"},{"a":13329,"l":"b_3411","t":"code","b":[32,19,40],"m":"jsr","oa":10259,"o":"freq2_reload","x":[13321]},{"a":13332,"t":"code","b":[76,168,51],"m":"jmp","oa":13224,"o":"j_33A8"},{"a":13335,"l":"sound_busy","c":"Is anything sounding? A = OR of the three sequence-active flags $2545-$2547 and the three life counters $24F5, $2518, $253B; Z set when every voice is idle. Waited on by $F70C (loops until silent) and tested at $F075, $F8BC, $9B62, $B4ED, $97AA, $A518","t":"code","b":[173,69,37],"m":"lda","oa":9541,"o":"v1_playing","x":[38826,39778,42264,46317,61557,63244,63676]},{"a":13338,"t":"code","b":[13,70,37],"m":"ora","oa":9542,"o":"v2_playing"},{"a":13341,"t":"code","b":[13,71,37],"m":"ora","oa":9543,"o":"v3_playing"},{"a":13344,"t":"code","b":[13,245,36],"m":"ora","oa":9461,"o":"v1_life_timer"},{"a":13347,"t":"code","b":[13,24,37],"m":"ora","oa":9496,"o":"v2_life_timer"},{"a":13350,"t":"code","b":[13,59,37],"m":"ora","oa":9531,"o":"v3_life_timer"},{"a":13353,"t":"code","b":[96],"m":"rts"},{"a":13354,"l":"tune_table","c":"Tune table: 9 records of 7 bytes, tune n at $342A + 7n: three sequence pointers (voice 0, 1, 2; zero = leave that voice alone) and a tempo byte whose low nibble is the length unit in ticks. music_start_tune takes Y = 7n+5 and reads LDA/ORA $342A,Y and $342B,Y with Y stepping down by 2","t":"addr","b":[176,57],"oa":14768,"o":"tune0_voice0","x":[9793,9804]},{"a":13355,"t":"note","l":"f_342B","c":"Second byte of tune_table, named because $262B reads LDA $342B,Y (the tempo, Y = 7n+5) and ORA/LDA $342B,Y (the high bytes of the voice pointers)","note":"inside the item at $342A","x":[9771,9796,9809]},{"a":13356,"t":"addr","b":[211,57],"oa":14803,"o":"tune0_voice1"},{"a":13358,"t":"addr","b":[35,58],"oa":14883,"o":"tune0_voice2"},{"a":13360,"l":"tune0_tempo","c":"Tune 0 tempo byte $09: length unit 9 ticks (low nibble)","t":"byte","b":[9]},{"a":13361,"l":"tune1","c":"Tune 1 (Y = $0C, started from $96E9): voice 0 at $3A68, voice 1 at $3A66, voice 2 at $3A46","t":"addr","b":[104,58],"oa":14952,"o":"tune1_voice0"},{"a":13363,"t":"addr","b":[102,58],"oa":14950,"o":"tune1_voice1"},{"a":13365,"t":"addr","b":[70,58],"oa":14918,"o":"tune1_voice2"},{"a":13367,"l":"tune1_tempo","c":"Tune 1 tempo byte $0B: length unit 11 ticks (low nibble)","t":"byte","b":[11]},{"a":13368,"l":"tune2","c":"Tune 2 (Y = $13, started from $96F1): voice 0 at $3A9C, voice 1 at $3AC1, voice 2 at $3ADE","t":"addr","b":[156,58],"oa":15004,"o":"tune2_voice0"},{"a":13370,"t":"addr","b":[193,58],"oa":15041,"o":"tune2_voice1"},{"a":13372,"t":"addr","b":[222,58],"oa":15070,"o":"tune2_voice2"},{"a":13374,"l":"tune2_tempo","c":"Tune 2 tempo byte $09: length unit 9 ticks (low nibble)","t":"byte","b":[9]},{"a":13375,"l":"tune3_unused","c":"Tune 3 slot ($343F-$3445): seven $DD bytes, no tune. Started (Y = $1A) it would point all three voices at $DDDD (CIA 2) with tempo 13; nothing passes Y = $1A","t":"byte","b":[221,221,221,221,221,221,221]},{"a":13382,"l":"tune4","c":"Tune 4 (Y = $21, started from $9B8D): voice 0 at $395A, voice 1 at $397A, voice 2 at $3987","t":"addr","b":[90,57],"oa":14682,"o":"tune4_voice0"},{"a":13384,"t":"addr","b":[122,57],"oa":14714,"o":"tune4_voice1"},{"a":13386,"t":"addr","b":[135,57],"oa":14727,"o":"tune4_voice2"},{"a":13388,"l":"tune4_tempo","c":"Tune 4 tempo byte $0D: length unit 13 ticks (low nibble)","t":"byte","b":[13]},{"a":13389,"l":"tune5","c":"Tune 5 (Y = $28, started from $967E): voice 0 at $3859, voice 1 at $388A, voice 2 at $38DD","t":"addr","b":[89,56],"oa":14425,"o":"tune5_voice0"},{"a":13391,"t":"addr","b":[138,56],"oa":14474,"o":"tune5_voice1"},{"a":13393,"t":"addr","b":[221,56],"oa":14557,"o":"tune5_voice2"},{"a":13395,"l":"tune5_tempo","c":"Tune 5 tempo byte $03: length unit 3 ticks (low nibble)","t":"byte","b":[3]},{"a":13396,"l":"tune6","c":"Tune 6 (Y = $2F, started from $A8A6 and $FAF6): voice 0 at $3904, voice 1 at $3916, voice 2 at $392F","t":"addr","b":[4,57],"oa":14596,"o":"tune6_voice0"},{"a":13398,"t":"addr","b":[22,57],"oa":14614,"o":"tune6_voice1"},{"a":13400,"t":"addr","b":[47,57],"oa":14639,"o":"tune6_voice2"},{"a":13402,"l":"tune6_tempo","c":"Tune 6 tempo byte $0B: length unit 11 ticks (low nibble)","t":"byte","b":[11]},{"a":13403,"l":"tune7","c":"Tune 7 (Y = $36, started from no caller found): voice 0 at $3B07, voice 1 at $3B31, voice 2 at $3B6D","t":"addr","b":[7,59],"oa":15111,"o":"tune7_voice0"},{"a":13405,"t":"addr","b":[49,59],"oa":15153,"o":"tune7_voice1"},{"a":13407,"t":"addr","b":[109,59],"oa":15213,"o":"tune7_voice2"},{"a":13409,"l":"tune7_tempo","c":"Tune 7 tempo byte $07: length unit 7 ticks (low nibble)","t":"byte","b":[7]},{"a":13410,"l":"tune8","c":"Tune 8 (Y = $3D, started from the title ($B4D4)): voice 0 at $34A3, voice 1 at $3534, voice 2 at $375D","t":"addr","b":[163,52],"oa":13475,"o":"tune8_voice0"},{"a":13412,"t":"addr","b":[52,53],"oa":13620,"o":"tune8_voice1"},{"a":13414,"t":"addr","b":[93,55],"oa":14173,"o":"tune8_voice2"},{"a":13416,"l":"tune8_tempo","c":"Tune 8 tempo byte $04: length unit 4 ticks (low nibble)","t":"byte","b":[4]},{"a":13417,"l":"instrument_3469","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $34A3: control $41, AD $14, SR $C8, gate hold, life 250, pulse start $0800; pitch program mode $05 (deltas +20 -20 +20 +0, counts 3 6 3 0, delay 30); pulse program mode $05 (counts 50 50, delay 10, deltas +10 -10).","t":"byte","b":[20,0,236,255,20,0,0,0],"x":[10357]},{"a":13425,"t":"byte","b":[3,6,3,0,30,5,50,50]},{"a":13433,"t":"byte","b":[10,5,10,0,246,255,0,8]},{"a":13441,"t":"byte","b":[65,20,200,255,250]},{"a":13446,"l":"instrument_3486","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $34CD, D2 at $3793: control $19, AD $A4, SR $F9, gate 20, life 254, pulse start $0000; pitch program mode $05 (deltas +35 -35 +35 +0, counts 3 5 2 0, delay 10); pulse program mode $00.","t":"byte","b":[35,0,221,255,35,0,0,0]},{"a":13454,"t":"byte","b":[3,5,2,0,10,5,0,0]},{"a":13462,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":13470,"t":"byte","b":[25,164,249,20,254]},{"a":13475,"l":"tune8_voice0","c":"Sequence: start of tune 8 voice 0 (tune table $3462): 10 notes (note bytes F2-G5 before transpose), 4 rests; load 29 instrument bytes from $3469, repeat x3, end repeat, workspace +12/+13 = $0780, workspace +6/+7 = $003C, transpose -12 and call $36C7 ...; ends with return at $34E9.","t":"byte","b":[210,28,105,52,95,32,29,32],"x":[13410]},{"a":13483,"t":"byte","b":[204,3,95,32,206,31,32,204]},{"a":13491,"t":"byte","b":[3,95,32,206,222,12,128,7]},{"a":13499,"t":"byte","b":[222,6,60,0,198,244,199,54]},{"a":13507,"t":"byte","b":[202,26,141,198,0,201,54,214]},{"a":13515,"t":"byte","b":[27,1,210,28,134,52,204,4]},{"a":13523,"t":"byte","b":[95,32,206,204,4,67,16,66]},{"a":13531,"t":"byte","b":[16,64,16,62,16,60,16,59]},{"a":13539,"t":"byte","b":[16,57,16,55,16,206,192]},{"a":13546,"l":"instrument_34ea","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $3534: control $41, AD $14, SR $C4, gate hold, life 5, pulse start $0800; pitch program mode $05 (deltas +20 -20 +20 +0, counts 3 6 3 0, delay 10); pulse program mode $05 (counts 50 50, delay 20, deltas +10 -10).","t":"byte","b":[20,0,236,255,20,0,0,0],"x":[10613]},{"a":13554,"t":"byte","b":[3,6,3,0,10,5,50,50]},{"a":13562,"t":"byte","b":[20,5,10,0,246,255,0,8]},{"a":13570,"t":"byte","b":[65,20,196,255,5]},{"a":13575,"l":"arpeggio_3507","c":"Arpeggio table, 4 semitone offsets 12 0 3 9 (used last to first, added to the note), set as voice 1's table pointer (instrument +8/+9) by DC at $3558, DC at $357F.","t":"byte","b":[12,0,3,9]},{"a":13579,"l":"arpeggio_350b","c":"Arpeggio table, 4 semitone offsets 12 0 3 7 (used last to first, added to the note), set as voice 1's table pointer (instrument +8/+9) by DC at $3561, DC at $35B6.","t":"byte","b":[12,0,3,7]},{"a":13583,"l":"arpeggio_350f","c":"Arpeggio table, 4 semitone offsets 12 0 5 11 (used last to first, added to the note), set as voice 1's table pointer (instrument +8/+9) by DC at $356A, DC at $35EE.","t":"byte","b":[12,0,5,11]},{"a":13587,"l":"arpeggio_3513","c":"Arpeggio table, 4 semitone offsets 12 0 5 9 (used last to first, added to the note), set as voice 1's table pointer (instrument +8/+9) by DC at $3573, DC at $3625.","t":"byte","b":[12,0,5,9]},{"a":13591,"l":"instrument_3517","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $3550: control $41, AD $01, SR $F7, gate 4, life 20, pulse start $0800; pitch program mode $08 (arpeggio on voice 1: every 1 frames the next offset from the table at $3507, 4 entries); pulse program mode $00.","t":"byte","b":[0,0,0,0,1,0,1,0]},{"a":13599,"t":"byte","b":[7,53,0,3,0,8,50,50]},{"a":13607,"t":"byte","b":[20,0,10,0,246,255,0,8]},{"a":13615,"t":"byte","b":[65,1,247,4,20]},{"a":13620,"l":"tune8_voice1","c":"Sequence: start of tune 8 voice 1 (tune table $3464): 52 notes (note bytes F2-C6 before transpose), 4 rests; load 29 instrument bytes from $34EA, repeat x3, end repeat, workspace +12/+13 = $0780, workspace +6/+7 = $0028, load 29 instrument bytes from $3517 ...; ends with return at $365E.","t":"byte","b":[210,28,234,52,95,32,29,32],"x":[13412]},{"a":13628,"t":"byte","b":[204,3,95,32,206,31,32,204]},{"a":13636,"t":"byte","b":[3,95,32,206,222,12,128,7]},{"a":13644,"t":"byte","b":[222,6,40,0,210,28,23,53]},{"a":13652,"t":"byte","b":[95,32,204,2,220,8,7,53]},{"a":13660,"t":"byte","b":[204,16,57,2,206,220,8,11]},{"a":13668,"t":"byte","b":[53,204,16,57,2,206,220,8]},{"a":13676,"t":"byte","b":[15,53,204,16,55,2,206,220]},{"a":13684,"t":"byte","b":[8,19,53,204,16,55,2,206]},{"a":13692,"t":"byte","b":[206,204,7,220,8,7,53,204]},{"a":13700,"t":"byte","b":[3,202,13,8,57,2,202,13]},{"a":13708,"t":"byte","b":[0,57,2,206,69,2,202,13]},{"a":13716,"t":"byte","b":[8,57,2,202,13,0,69,2]},{"a":13724,"t":"byte","b":[202,13,8,57,2,202,13,0]},{"a":13732,"t":"byte","b":[57,2,69,2,202,13,8,57]},{"a":13740,"t":"byte","b":[2,202,13,0,57,2,57,2]},{"a":13748,"t":"byte","b":[57,2,220,8,11,53,202,13]},{"a":13756,"t":"byte","b":[8,57,2,202,13,0,57,2]},{"a":13764,"t":"byte","b":[202,13,8,204,4,57,2,206]},{"a":13772,"t":"byte","b":[204,2,202,13,0,69,2,202]},{"a":13780,"t":"byte","b":[13,8,57,2,206,57,2,202]},{"a":13788,"t":"byte","b":[13,0,69,2,202,13,8,57]},{"a":13796,"t":"byte","b":[2,202,13,0,69,2,57,2]},{"a":13804,"t":"byte","b":[57,2,220,8,15,53,204,3]},{"a":13812,"t":"byte","b":[202,13,8,55,2,202,13,0]},{"a":13820,"t":"byte","b":[55,2,206,72,2,202,13,8]},{"a":13828,"t":"byte","b":[55,2,202,13,0,72,2,202]},{"a":13836,"t":"byte","b":[13,8,55,2,202,13,0,55]},{"a":13844,"t":"byte","b":[2,72,2,202,13,8,55,2]},{"a":13852,"t":"byte","b":[202,13,0,55,2,55,2,55]},{"a":13860,"t":"byte","b":[2,220,8,19,53,202,13,8]},{"a":13868,"t":"byte","b":[55,2,202,13,0,55,2,202]},{"a":13876,"t":"byte","b":[13,8,204,4,55,2,206,204]},{"a":13884,"t":"byte","b":[2,202,13,0,72,2,202,13]},{"a":13892,"t":"byte","b":[8,55,2,206,55,2,202,13]},{"a":13900,"t":"byte","b":[0,72,2,202,13,8,55,2]},{"a":13908,"t":"byte","b":[202,13,0,72,2,55,2,55]},{"a":13916,"t":"byte","b":[2,206,192]},{"a":13919,"l":"filter_program_365f","c":"Filter program, 16 bytes to $24B3-$24C2, loaded by E2 at $3797: cutoff deltas +333 -30 +0 +0 per frame, phase lengths 3 20 0 0, delay 0, mode $04, start cutoff 1 (of 0-2047).","t":"byte","b":[77,1,226,255,0,0,0,0]},{"a":13927,"t":"byte","b":[3,20,0,0,0,4,1,0]},{"a":13935,"l":"instrument_366f","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $3760, D2 at $37B9: control $41, AD $14, SR $C8, gate hold, life 50, pulse start $0800; pitch program mode $07 (deltas +20 -20 +20 +28, counts 3 6 3 0, delay 40); pulse program mode $05 (counts 50 50, delay 40, deltas +10 -10).","t":"byte","b":[20,0,236,255,20,0,28,0],"x":[10920]},{"a":13943,"t":"byte","b":[3,6,3,0,40,7,50,50]},{"a":13951,"t":"byte","b":[40,5,10,0,246,255,0,8]},{"a":13959,"t":"byte","b":[65,20,200,255,50]},{"a":13964,"l":"filter_program_368c","c":"Filter program, 16 bytes to $24B3-$24C2, loaded by E2 at $375D, E2 at $37B6: cutoff deltas +333 -45 -5 -1 per frame, phase lengths 3 20 10 50, delay 0, mode $04, start cutoff 1 (of 0-2047).","t":"byte","b":[77,1,211,255,251,255,255,255],"x":[10893]},{"a":13972,"t":"byte","b":[3,20,10,50,0,4,1,0]},{"a":13980,"l":"instrument_369c","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $3785, D2 at $37C1, F0 at $372B: control $41, AD $14, SR $E8, gate 30, life 40, pulse start $0600; pitch program mode $05 (deltas +25 -25 +25 +0, counts 2 4 2 0, delay 6); pulse program mode $05 (counts 50 50, delay 0, deltas +20 -20).","t":"byte","b":[25,0,231,255,25,0,0,0]},{"a":13988,"t":"byte","b":[2,4,2,0,6,5,50,50]},{"a":13996,"t":"byte","b":[0,5,20,0,236,255,0,6]},{"a":14004,"t":"byte","b":[65,20,232,30,40]},{"a":14009,"l":"pitch_program_36b9","c":"Pitch program, 14 bytes for instrument +$00..+$0D, loaded by F0 at $3726: deltas +32 +0 +0 +0 per frame, phase lengths 255 0 0 0, delay 10, mode $04.","t":"byte","b":[32,0,0,0,0,0,0,0]},{"a":14017,"t":"byte","b":[255,0,0,0,10,4]},{"a":14023,"l":"phrase_36c7","c":"Sequence phrase for voice 0, reached by C2 at $3782, C6 at $34BF (first from tune 8): 9 notes (note bytes A2-E3 before transpose), 5 rests; ends with return at $36E3.","t":"byte","b":[95,32]},{"a":14025,"l":"phrase_36c9","c":"Sequence phrase for voice 0, reached by C6 at $34C6 (first from tune 8): 9 notes (note bytes A2-E3 before transpose), 4 rests; ends with return at $36E3.","t":"byte","b":[33,32,95,26,35,6,36,32]},{"a":14033,"t":"byte","b":[95,26,38,2,40,2,36,2]},{"a":14041,"t":"byte","b":[33,32,95,26,35,6,36,32]},{"a":14049,"t":"byte","b":[95,32,192]},{"a":14052,"l":"phrase_36e4","c":"Sequence phrase for voice 2, reached by C2 at $378D, C2 at $3790, C2 at $37C5, C2 at $37C8 (first from tune 8): 48 notes (note bytes C2-E4 before transpose); pitch program from $36B9, pitch program from $369C; ends with return at $374A.","t":"byte","b":[33,4,33,4,45,1,80,1]},{"a":14060,"t":"byte","b":[33,4,33,8,33,2,45,2]},{"a":14068,"t":"byte","b":[28,2,31,4,33,4,33,2]},{"a":14076,"t":"byte","b":[33,2,45,1,80,1,33,4]},{"a":14084,"t":"byte","b":[33,4,33,4,33,2,45,2]},{"a":14092,"t":"byte","b":[33,2,35,4,36,4,36,2]},{"a":14100,"t":"byte","b":[36,2,48,1,80,3,36,2]},{"a":14108,"t":"byte","b":[36,4,36,2,36,2,36,2]},{"a":14116,"t":"byte","b":[48,2,240,185,54,31,6,240]},{"a":14124,"t":"byte","b":[156,54,36,2,24,2,36,2]},{"a":14132,"t":"byte","b":[24,2,48,4,36,2,36,4]},{"a":14140,"t":"byte","b":[36,2,52,2,36,2,48,2]},{"a":14148,"t":"byte","b":[40,2,43,2,45,2,192]},{"a":14155,"l":"title_filter_bit_on","c":"6502 code called from tune 8's voice 2 sequence ($D8 at $378A): $3FFF = $10, so the volume/sample write at $FEE0 ($0F OR $3FFF into $D418) keeps the low-pass filter on","t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":14157,"t":"code","b":[141,255,63],"m":"sta","oa":16383,"o":"sample_filter_bits"},{"a":14160,"t":"code","b":[96],"m":"rts"},{"a":14161,"l":"title_filter_bits_off","c":"6502 code called from tune 8's voice 2 sequence ($D8 at $37CB): $3FFF = 0, $D417 = 0 (no voice filtered) and filter voice $2542 = 0","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14163,"t":"code","b":[141,255,63],"m":"sta","oa":16383,"o":"sample_filter_bits"},{"a":14166,"t":"code","b":[141,23,212],"m":"sta","o":"sid_filter_resonance"},{"a":14169,"t":"code","b":[141,66,37],"m":"sta","oa":9538,"o":"filter_voice"},{"a":14172,"t":"code","b":[96],"m":"rts"},{"a":14173,"l":"tune8_voice2","c":"Sequence: start of tune 8 voice 2 (tune table $3466): 13 notes (note bytes F0-G5 before transpose), 7 rests; filter program from $368C, load 29 instrument bytes from $366F, repeat x4, end repeat, instrument byte +13 = $05, repeat x3 ...; ends with return at $37D5.","t":"byte","b":[226,140,54,210,28,111,54,191],"x":[13414]},{"a":14181,"t":"byte","b":[88,101,40,204,4,95,32,206]},{"a":14189,"t":"byte","b":[202,13,5,31,32,204,3,95]},{"a":14197,"t":"byte","b":[32,206,222,12,128,7,222,6]},{"a":14205,"t":"byte","b":[20,0,202,13,5,194,199,54]},{"a":14213,"t":"byte","b":[210,28,156,54,224,216,75,55]},{"a":14221,"t":"byte","b":[194,228,54,194,228,54,210,28]},{"a":14229,"t":"byte","b":[134,52,226,95,54,204,3,95]},{"a":14237,"t":"byte","b":[32,206,204,2,67,16,66,16]},{"a":14245,"t":"byte","b":[64,16,62,16,60,16,59,16]},{"a":14253,"t":"byte","b":[57,16,55,16,206,67,16,162]},{"a":14261,"t":"byte","b":[23,226,140,54,210,28,111,54]},{"a":14269,"t":"byte","b":[191,1,101,40,210,28,156,54]},{"a":14277,"t":"byte","b":[194,228,54,194,228,54,216,81]},{"a":14285,"t":"byte","b":[55,95,16,204,10,95,32,206]},{"a":14293,"t":"byte","b":[192]},{"a":14294,"l":"instrument_37d6","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $3859: control $49, AD $06, SR $99, gate 4, life 40, pulse start $0800; pitch program mode $05 (deltas +30 -30 +30 +0, counts 3 5 2 0, delay 8); pulse program mode $00.","t":"byte","b":[30,0,226,255,30,0,0,0]},{"a":14302,"t":"byte","b":[3,5,2,0,8,5,0,0]},{"a":14310,"t":"byte","b":[0,0,0,0,0,0,0,8]},{"a":14318,"t":"byte","b":[73,6,153,4,40]},{"a":14323,"l":"phrase_37f3","c":"Sequence phrase for voice 0, reached by C2 at $380F, C2 at $3815, C2 at $3820 (first from tune 5): 5 notes (note bytes G4-A#4 before transpose), 2 rests; ends with return at $3801.","t":"byte","b":[55,4,57,2,58,2,57,3]},{"a":14331,"t":"byte","b":[95,1,55,3,95,1,192]},{"a":14338,"l":"phrase_3802","c":"Sequence phrase for voice 0, reached by C2 at $3812, C2 at $3823 (first from tune 5): 3 notes (note bytes A4-D5 before transpose), 3 rests; ends with return at $380E.","t":"byte","b":[57,3,95,1,62,3,95,1]},{"a":14346,"t":"byte","b":[57,7,95,1,192]},{"a":14351,"l":"phrase_380f","c":"Sequence phrase for voice 0, reached by C2 at $3861, C2 at $3892, C2 at $389D (first from tune 5): 19 notes (note bytes F#4-A5 before transpose), 7 rests; call $37F3, call $3802, repeat x2, repeat x3, end repeat; ends with return at $3858.","t":"byte","b":[194,243,55,194,2,56,194,243]},{"a":14359,"t":"byte","b":[55,55,4,54,4,55,4,57]},{"a":14367,"t":"byte","b":[4,194,243,55,194,2,56,58]},{"a":14375,"t":"byte","b":[4,60,2,62,2,60,3,95]},{"a":14383,"t":"byte","b":[1,58,3,95,1,60,3,95]},{"a":14391,"t":"byte","b":[1,65,3,95,1,60,7,95]},{"a":14399,"t":"byte","b":[1,204,2,204,3,69,2,69]},{"a":14407,"t":"byte","b":[2,95,4,206,69,2,67,2]},{"a":14415,"t":"byte","b":[65,2,60,2,62,28,95,4]},{"a":14423,"t":"byte","b":[206,192]},{"a":14425,"l":"tune5_voice0","c":"Sequence: start of tune 5 voice 0 (tune table $344D): 0 notes, 2 rests; load 29 instrument bytes from $37D6, repeat x4, call $380F, end repeat, repeat x64; ends with jump to $385F at $386A.","t":"byte","b":[210,28,214,55,191,1],"x":[13389]},{"a":14431,"l":"phrase_385f","c":"Sequence phrase for voice 0, reached by C4 at $386A (first from tune 5): 0 notes, 1 rests; repeat x4, call $380F, end repeat, repeat x64; ends with jump to $385F at $386A.","t":"byte","b":[204,4,194,15,56,206,204,64]},{"a":14439,"t":"byte","b":[95,4,206,196,95,56]},{"a":14445,"l":"instrument_386d","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $388A: control $29, AD $06, SR $99, gate 4, life 40, pulse start $0800; pitch program mode $05 (deltas +30 -30 +30 +0, counts 2 4 2 0, delay 6); pulse program mode $00.","t":"byte","b":[30,0,226,255,30,0,0,0]},{"a":14453,"t":"byte","b":[2,4,2,0,6,5,0,0]},{"a":14461,"t":"byte","b":[0,0,0,0,0,0,0,8]},{"a":14469,"t":"byte","b":[41,6,153,4,40]},{"a":14474,"l":"tune5_voice1","c":"Sequence: start of tune 5 voice 1 (tune table $344F): 0 notes, 3 rests; load 29 instrument bytes from $386D, repeat x3, call $380F, end repeat, repeat x250; ends with jump to $3890 at $38A0.","t":"byte","b":[210,28,109,56,191,1],"x":[13391]},{"a":14480,"l":"phrase_3890","c":"Sequence phrase for voice 1, reached by C4 at $38A0 (first from tune 5): 0 notes, 2 rests; repeat x3, call $380F, end repeat, repeat x250; ends with jump to $3890 at $38A0.","t":"byte","b":[204,3,194,15,56,95,2,206]},{"a":14488,"t":"byte","b":[204,250,95,1,206,194,15,56]},{"a":14496,"t":"byte","b":[196,144,56]},{"a":14499,"l":"instrument_38a3","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $38DD: control $41, AD $06, SR $48, gate 10, life 20, pulse start $0200; pitch program mode $00; pulse program mode $04 (counts 255 0, delay 1, deltas +100 +0).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":14507,"t":"byte","b":[0,0,0,0,0,0,255,0]},{"a":14515,"t":"byte","b":[1,4,100,0,0,0,0,2]},{"a":14523,"t":"byte","b":[65,6,72,10,20]},{"a":14528,"l":"phrase_38c0","c":"Sequence phrase for voice 2, reached by C6 at $38CC, C6 at $38D0, C6 at $38D4, C6 at $38D8, C6 at $38E6, C6 at $38EA, C6 at $38EE, C6 at $38F2 (first from tune 5): 4 notes (note bytes C0-C1 before transpose); repeat x2, end repeat; ends with return at $38CB.","t":"byte","b":[204,2,0,2,0,2,12,2]},{"a":14536,"t":"byte","b":[12,2,206,192]},{"a":14540,"l":"phrase_38cc","c":"Sequence phrase for voice 2, reached by C2 at $38E3, C2 at $38F6, C2 at $38F9 (first from tune 5): 0 notes; transpose +31 and call $38C0, transpose +29 and call $38C0, transpose +27 and call $38C0, transpose +26 and call $38C0; ends with return at $38DC.","t":"byte","b":[198,31,192,56,198,29,192,56]},{"a":14548,"t":"byte","b":[198,27,192,56,198,26,192,56]},{"a":14556,"t":"byte","b":[192]},{"a":14557,"l":"tune5_voice2","c":"Sequence: start of tune 5 voice 2 (tune table $3451): 0 notes, 1 rests; load 29 instrument bytes from $38A3, call $38CC, transpose +31 and call $38C0, transpose +29 and call $38C0, transpose +27 and call $38C0; ends with jump to $38E3 at $38FC.","t":"byte","b":[210,28,163,56,191,1],"x":[13393]},{"a":14563,"l":"phrase_38e3","c":"Sequence phrase for voice 2, reached by C4 at $38FC (first from tune 5): 0 notes; call $38CC, transpose +31 and call $38C0, transpose +29 and call $38C0, transpose +27 and call $38C0; ends with jump to $38E3 at $38FC.","t":"byte","b":[194,204,56,198,31,192,56,198]},{"a":14571,"t":"byte","b":[29,192,56,198,27,192,56,198]},{"a":14579,"t":"byte","b":[29,192,56,194,204,56,194,204]},{"a":14587,"t":"byte","b":[56,196,227,56]},{"a":14591,"l":"envelope_38ff","c":"Envelope record, 5 bytes for instrument +$18..+$1C, loaded by D4 at $3904, D4 at $3916: control $11, AD $23, SR $E4, gate 20, life 10.","t":"byte","b":[17,35,228,20,10]},{"a":14596,"l":"tune6_voice0","c":"Sequence: start of tune 6 voice 0 (tune table $3454): 6 notes (note bytes G4-B5 before transpose), 1 rests; envelope from $38FF; ends with return at $3915.","t":"byte","b":[212,255,56,191,21,55,1,61],"x":[13396]},{"a":14604,"t":"byte","b":[1,62,1,65,1,67,1,71]},{"a":14612,"t":"byte","b":[1,192]},{"a":14614,"l":"tune6_voice1","c":"Sequence: start of tune 6 voice 1 (tune table $3456): 7 notes (note bytes G4-D6 before transpose), 1 rests; envelope from $38FF; ends with return at $3929.","t":"byte","b":[212,255,56,191,11,55,1,61],"x":[13398]},{"a":14622,"t":"byte","b":[1,62,1,65,1,67,1,71]},{"a":14630,"t":"byte","b":[1,74,1,192]},{"a":14634,"l":"envelope_392a","c":"Envelope record, 5 bytes for instrument +$18..+$1C, loaded by D4 at $392F: control $41, AD $24, SR $A4, gate 20, life 4.","t":"byte","b":[65,36,164,20,4]},{"a":14639,"l":"tune6_voice2","c":"Sequence: start of tune 6 voice 2 (tune table $3458): 7 notes (note bytes G4-D6 before transpose), 1 rests; envelope from $392A, instrument +22/+23 = $0800; ends with return at $3946.","t":"byte","b":[212,42,57,220,22,0,8,191],"x":[13400]},{"a":14647,"t":"byte","b":[1,55,1,61,1,62,1,65]},{"a":14655,"t":"byte","b":[1,67,1,71,1,74,1,192]},{"a":14663,"l":"pitch_program_3947","c":"Pitch program, 14 bytes for instrument +$00..+$0D, loaded by F0 at $396F: deltas -3349 +0 +3349 +0 per frame, phase lengths 1 3 1 9, delay 9, mode $05.","t":"byte","b":[235,242,0,0,21,13,0,0],"x":[10410,10666,10973]},{"a":14671,"t":"byte","b":[1,3,1,9,9,5]},{"a":14677,"l":"envelope_3955","c":"Envelope record, 5 bytes for instrument +$18..+$1C, loaded by D4 at $395A, D4 at $397A: control $19, AD $13, SR $E4, gate 2, life 10.","t":"byte","b":[25,19,228,2,10]},{"a":14682,"l":"tune4_voice0","c":"Sequence: start of tune 4 voice 0 (tune table $3446): 10 notes (note bytes G3-A#4 before transpose), 1 rests; envelope from $3955, pitch program from $3947, instrument byte +13 = $00; ends with return at $3979.","t":"byte","b":[212,85,57,191,27],"x":[13382]},{"a":14687,"l":"phrase_395f","c":"Sequence phrase for voice 1, reached by C4 at $397F, C4 at $3990 (first from tune 4): 10 notes (note bytes G3-A#4 before transpose); pitch program from $3947, instrument byte +13 = $00; ends with return at $3979.","t":"byte","b":[58,1,53,1,55,1,50,1]},{"a":14695,"t":"byte","b":[53,1,48,1,50,1,46,1]},{"a":14703,"t":"byte","b":[240,71,57,43,3,202,13,0]},{"a":14711,"t":"byte","b":[43,2,192]},{"a":14714,"l":"tune4_voice1","c":"Sequence: start of tune 4 voice 1 (tune table $3448): 0 notes, 1 rests; envelope from $3955; ends with jump to $395F at $397F.","t":"byte","b":[212,85,57,191,4,196,95,57],"x":[13384]},{"a":14722,"l":"envelope_3982","c":"Envelope record, 5 bytes for instrument +$18..+$1C, loaded by D4 at $3987: control $49, AD $24, SR $A4, gate 2, life 4.","t":"byte","b":[73,36,164,2,4]},{"a":14727,"l":"tune4_voice2","c":"Sequence: start of tune 4 voice 2 (tune table $344A): 0 notes, 1 rests; envelope from $3982, instrument +22/+23 = $0800; ends with jump to $395F at $3990.","t":"byte","b":[212,130,57,220,22,0,8,191],"x":[13386]},{"a":14735,"t":"byte","b":[1,196,95,57]},{"a":14739,"l":"instrument_3993","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $39B0, D2 at $39D3, D2 at $3A68: control $49, AD $06, SR $98, gate 5, life 30, pulse start $0800; pitch program mode $05 (deltas +14 -14 +14 +0, counts 5 10 5 0, delay 20); pulse program mode $04 (counts 255 0, delay 0, deltas +10 +0).","t":"byte","b":[14,0,242,255,14,0,0,0]},{"a":14747,"t":"byte","b":[5,10,5,0,20,5,255,0]},{"a":14755,"t":"byte","b":[0,4,10,0,0,0,0,8]},{"a":14763,"t":"byte","b":[73,6,152,5,30]},{"a":14768,"l":"tune0_voice0","c":"Sequence: start of tune 0 voice 0 (tune table $342A): 15 notes (note bytes C4-A4 before transpose); load 29 instrument bytes from $3993; ends with return at $39D2.","t":"byte","b":[210,28,147,57,48,3,48,1],"x":[13354]},{"a":14776,"t":"byte","b":[55,8,150,12,151,12,153,12]},{"a":14784,"t":"byte","b":[55,16,48,3,48,1,55,8]},{"a":14792,"t":"byte","b":[57,1,55,1,54,1,57,1]},{"a":14800,"t":"byte","b":[55,8,192]},{"a":14803,"l":"tune0_voice1","c":"Sequence: start of tune 0 voice 1 (tune table $342C): 15 notes (note bytes G3-F4 before transpose); load 29 instrument bytes from $3993; ends with return at $39F5.","t":"byte","b":[210,28,147,57,43,3,43,1],"x":[13356]},{"a":14811,"t":"byte","b":[52,8,147,12,148,12,149,12]},{"a":14819,"t":"byte","b":[52,16,43,3,43,1,52,8]},{"a":14827,"t":"byte","b":[53,1,52,1,51,1,53,1]},{"a":14835,"t":"byte","b":[52,8,192]},{"a":14838,"l":"filter_program_39f6","c":"Filter program, 16 bytes to $24B3-$24C2, loaded by E2 at $3A28, E2 at $3A4B, E2 at $3AE3, E2 at $3B72: cutoff deltas +333 -45 +20 -20 per frame, phase lengths 3 20 50 50, delay 0, mode $04, start cutoff 1 (of 0-2047).","t":"byte","b":[77,1,211,255,20,0,236,255]},{"a":14846,"t":"byte","b":[3,20,50,50,0,4,1,0]},{"a":14854,"l":"instrument_3a06","c":"Instrument record, 29 bytes, copied into a voice's instrument block by D2 at $3A23, D2 at $3A46, D2 at $3A9C, D2 at $3AC1, D2 at $3ADE, D2 at $3B07, D2 at $3B31, D2 at $3B6D: control $49, AD $06, SR $98, gate 5, life 30, pulse start $0800; pitch program mode $05 (deltas +15 -15 +15 +0, counts 4 8 4 0, delay 14); pulse program mode $04 (counts 25 0, delay 0, deltas +10 +0).","t":"byte","b":[15,0,241,255,15,0,0,0]},{"a":14862,"t":"byte","b":[4,8,4,0,14,5,25,0]},{"a":14870,"t":"byte","b":[0,4,10,0,0,0,0,8]},{"a":14878,"t":"byte","b":[73,6,152,5,30]},{"a":14883,"l":"tune0_voice2","c":"Sequence: start of tune 0 voice 2 (tune table $342E): 9 notes (note bytes G2-C3 before transpose), 1 rests; load 29 instrument bytes from $3A06, filter on (voice 2, low-pass), filter program from $39F6, repeat x3, end repeat, repeat x2; ends with return at $3A45.","t":"byte","b":[210,28,6,58,224,226,246,57],"x":[13358]},{"a":14891,"t":"byte","b":[204,3,36,4,31,4,206,36]},{"a":14899,"t":"byte","b":[2,31,2,33,2,35,2,204]},{"a":14907,"t":"byte","b":[2,36,4,31,4,206,36,16]},{"a":14915,"t":"byte","b":[95,8,192]},{"a":14918,"l":"tune1_voice2","c":"Sequence: start of tune 1 voice 2 (tune table $3435): 9 notes (note bytes D#2-C3 before transpose), 1 rests; load 29 instrument bytes from $3A06, filter on (voice 2, low-pass), filter program from $39F6, repeat x2, end repeat; ends with return at $3A65.","t":"byte","b":[210,28,6,58,224,226,246,57],"x":[13365]},{"a":14926,"t":"byte","b":[95,3,27,1,27,1,27,1]},{"a":14934,"t":"byte","b":[27,3,29,3,33,3,204,2]},{"a":14942,"t":"byte","b":[132,16,127,17,206,36,6,192]},{"a":14950,"l":"tune1_voice1","c":"Sequence: start of tune 1 voice 1 (tune table $3433): 8 notes (note bytes F4-A#4 before transpose), 1 rests; load 29 instrument bytes from $3993; ends with return at $3A7C. Runs on into $3A68 (tune 1 voice 0).","t":"byte","b":[191,20],"x":[13363]},{"a":14952,"l":"tune1_voice0","c":"Sequence: start of tune 1 voice 0 (tune table $3431): 8 notes (note bytes F4-A#4 before transpose); load 29 instrument bytes from $3993; ends with return at $3A7C.","t":"byte","b":[210,28,147,57,55,2,55,1],"x":[13361]},{"a":14960,"t":"byte","b":[58,6,153,16,151,17,149,16]},{"a":14968,"t":"byte","b":[153,17,55,6,192]},{"a":14973,"l":"phrase_3a7d","c":"Sequence phrase for voice 0, reached by C2 at $3AB5, C2 at $3AD4, C2 at $3AFA (first from tune 2): 15 notes (note bytes F#3-F#5 before transpose); ends with return at $3A9B.","t":"byte","b":[66,1,63,1,60,1,58,1]},{"a":14981,"t":"byte","b":[54,1,51,1,48,1,46,1]},{"a":14989,"t":"byte","b":[42,1,46,1,48,1,51,1]},{"a":14997,"t":"byte","b":[54,1,58,1,60,1,192]},{"a":15004,"l":"tune2_voice0","c":"Sequence: start of tune 2 voice 0 (tune table $3438): 11 notes (note bytes D#4-F#5 before transpose), 2 rests; load 29 instrument bytes from $3A06, repeat x3, end repeat, call $3A7D; ends with return at $3AC0.","t":"byte","b":[210,28,6,58,55,2,54,2],"x":[13368]},{"a":15012,"t":"byte","b":[51,2,53,4,54,2,55,4]},{"a":15020,"t":"byte","b":[204,3,54,2,54,4,206,95]},{"a":15028,"t":"byte","b":[1,194,125,58,63,1,66,1]},{"a":15036,"t":"byte","b":[95,2,54,2,192]},{"a":15041,"l":"tune2_voice1","c":"Sequence: start of tune 2 voice 1 (tune table $343A): 7 notes (note bytes C4-F#5 before transpose), 2 rests; load 29 instrument bytes from $3A06, repeat x5, end repeat, call $3A7D; ends with return at $3ADD.","t":"byte","b":[210,28,6,58,48,2,48,2],"x":[13370]},{"a":15049,"t":"byte","b":[204,5,48,2,48,4,206,95]},{"a":15057,"t":"byte","b":[1,66,1,194,125,58,63,1]},{"a":15065,"t":"byte","b":[95,2,48,2,192]},{"a":15070,"l":"tune2_voice2","c":"Sequence: start of tune 2 voice 2 (tune table $343C): 7 notes (note bytes C2-F#5 before transpose), 2 rests; load 29 instrument bytes from $3A06, filter on (voice 2, low-pass), filter program from $39F6, repeat x4, end repeat, call $3A7D; ends with return at $3B01.","t":"byte","b":[210,28,6,58,224,226,246,57],"x":[13372]},{"a":15078,"t":"byte","b":[204,4,24,2,36,2,206,204]},{"a":15086,"t":"byte","b":[4,27,2,39,2,206,95,3]},{"a":15094,"t":"byte","b":[63,1,66,1,194,125,58,95]},{"a":15102,"t":"byte","b":[2,30,2,192]},{"a":15106,"l":"envelope_3b02","c":"Envelope record, 5 bytes for instrument +$18..+$1C, loaded by D4 at $3B0B, D4 at $3B35: control $41, AD $06, SR $59, gate 25, life 20.","t":"byte","b":[65,6,89,25,20]},{"a":15111,"l":"tune7_voice0","c":"Sequence: start of tune 7 voice 0 (tune table $345B): 17 notes (note bytes G4-E5 before transpose); load 24 instrument bytes from $3A06, envelope from $3B02; ends with return at $3B30.","t":"byte","b":[210,23,6,58,212,2,59,55],"x":[13403]},{"a":15119,"t":"byte","b":[1,55,1,55,4,60,4,59]},{"a":15127,"t":"byte","b":[4,62,4,60,4,55,10,55]},{"a":15135,"t":"byte","b":[1,55,1,55,4,60,4,59]},{"a":15143,"t":"byte","b":[4,62,4,160,19,158,9,64]},{"a":15151,"t":"byte","b":[1,192]},{"a":15153,"l":"tune7_voice1","c":"Sequence: start of tune 7 voice 1 (tune table $345D): 26 notes (note bytes B4-G#6 before transpose); load 24 instrument bytes from $3A06, envelope from $3B02; ends with return at $3B6C.","t":"byte","b":[210,23,6,58,212,2,59,67],"x":[13405]},{"a":15161,"t":"byte","b":[1,67,1,67,4,72,4,71]},{"a":15169,"t":"byte","b":[4,74,4,72,4,64,1,64]},{"a":15177,"t":"byte","b":[1,64,1,80,1,65,1,65]},{"a":15185,"t":"byte","b":[1,65,1,80,1,64,1,64]},{"a":15193,"t":"byte","b":[1,64,1,67,1,67,4,72]},{"a":15201,"t":"byte","b":[4,71,4,74,4,156,19,155]},{"a":15209,"t":"byte","b":[9,60,1,192]},{"a":15213,"l":"tune7_voice2","c":"Sequence: start of tune 7 voice 2 (tune table $345F): 5 notes (note bytes G2-C3 before transpose), 1 rests; load 29 instrument bytes from $3A06, filter on (voice 2, low-pass), filter program from $39F6, repeat x6, end repeat, instrument byte +24 = $41 ...; ends with return at $3B8A.","t":"byte","b":[210,28,6,58,224,226,246,57],"x":[13407]},{"a":15221,"t":"byte","b":[95,2,204,6,36,4,31,4]},{"a":15229,"t":"byte","b":[206,202,24,65,202,27,40,132]},{"a":15237,"t":"byte","b":[19,127,9,36,1,192]},{"a":15243,"l":"stale_driver_copy_3b8b","c":"Not used: 885 bytes ($3B8B-$3EFF) of an older build of this same driver, assembled $1000 higher (it addresses $34xx where the live code addresses $24xx, and its vector tables at $3F2D/$3F5F/$3F91); matches the live code at $2B8B-$2EFF byte for byte with every address $1000 higher, except the dispatch constants at $3C36/$3C3B, $3D8D/$3D92 and $3EE6/$3EEB. Left over from the build; nothing references it and the simulator never touched it","t":"byte","b":[76,199,59,173,214,52,240,15]},{"a":15251,"t":"byte","b":[206,214,52,138,109,197,52,170]},{"a":15259,"t":"byte","b":[152,109,198,52,76,199,59,173]},{"a":15267,"t":"byte","b":[215,52,240,15,206,215,52,138]},{"a":15275,"t":"byte","b":[109,199,52,170,152,109,200,52]},{"a":15283,"t":"byte","b":[76,199,59,173,216,52,240,46]},{"a":15291,"t":"byte","b":[206,216,52,138,109,201,52,170]},{"a":15299,"t":"byte","b":[152,109,202,52,168,142,211,52]},{"a":15307,"t":"byte","b":[140,212,52,138,41,7,141,21]},{"a":15315,"t":"byte","b":[212,152,142,67,53,74,110,67]},{"a":15323,"t":"byte","b":[53,74,110,67,53,74,173,67]},{"a":15331,"t":"byte","b":[53,106,141,22,212,96,173,208]},{"a":15339,"t":"byte","b":[52,41,129,240,216,16,6,32]},{"a":15347,"t":"byte","b":[10,55,76,121,59,32,22,55]},{"a":15355,"t":"byte","b":[76,121,59,162,7,189,179,52]},{"a":15363,"t":"byte","b":[157,195,52,189,187,52,157,203]},{"a":15371,"t":"byte","b":[52,202,16,241,32,10,55,76]},{"a":15379,"t":"byte","b":[206,59,173,69,53,240,4,198]},{"a":15387,"t":"byte","b":[230,240,14,96,230,225,208,9]},{"a":15395,"t":"byte","b":[169,3,24,101,224,133,224,176]},{"a":15403,"t":"byte","b":[243,160,0,177,224,201,192,144]},{"a":15411,"t":"byte","b":[12,200,105,108,141,59,60,108]},{"a":15419,"t":"byte","b":[45,63,76,79,61,133,255,201]},{"a":15427,"t":"byte","b":[96,144,2,233,96,201,95,240]},{"a":15435,"t":"byte","b":[241,101,236,170,169,8,141,4]},{"a":15443,"t":"byte","b":[212,173,66,53,208,7,134,239]},{"a":15451,"t":"byte","b":[32,254,59,166,239,188,196,53]},{"a":15459,"t":"byte","b":[189,115,53,141,241,52,140,242]},{"a":15467,"t":"byte","b":[52,141,0,212,140,1,212,174]},{"a":15475,"t":"byte","b":[114,52,172,115,52,142,2,212]},{"a":15483,"t":"byte","b":[140,3,212,173,117,52,141,5]},{"a":15491,"t":"byte","b":[212,173,118,52,141,6,212,173]},{"a":15499,"t":"byte","b":[116,52,141,243,52,41,247,141]},{"a":15507,"t":"byte","b":[4,212,173,109,52,141,234,52]},{"a":15515,"t":"byte","b":[240,58,142,239,52,140,240,52]},{"a":15523,"t":"byte","b":[134,241,132,242,173,113,52,141]},{"a":15531,"t":"byte","b":[238,52,173,112,52,141,237,52]},{"a":15539,"t":"byte","b":[173,111,52,141,236,52,173,110]},{"a":15547,"t":"byte","b":[52,141,235,52,173,108,52,141]},{"a":15555,"t":"byte","b":[233,52,174,106,52,172,107,52]},{"a":15563,"t":"byte","b":[142,231,52,142,250,52,140,232]},{"a":15571,"t":"byte","b":[52,140,251,52,173,105,52,141]},{"a":15579,"t":"byte","b":[230,52,240,100,174,104,52,142]},{"a":15587,"t":"byte","b":[229,52,174,103,52,142,228,52]},{"a":15595,"t":"byte","b":[174,102,52,142,227,52,174,101]},{"a":15603,"t":"byte","b":[52,142,226,52,174,100,52,142]},{"a":15611,"t":"byte","b":[225,52,174,99,52,142,224,52]},{"a":15619,"t":"byte","b":[174,98,52,142,223,52,174,97]},{"a":15627,"t":"byte","b":[52,142,222,52,174,96,52,142]},{"a":15635,"t":"byte","b":[221,52,174,95,52,142,220,52]},{"a":15643,"t":"byte","b":[174,94,52,142,219,52,174,93]},{"a":15651,"t":"byte","b":[52,142,218,52,174,92,52,142]},{"a":15659,"t":"byte","b":[217,52,41,8,240,15,165,255]},{"a":15667,"t":"byte","b":[201,96,144,2,233,95,101,236]},{"a":15675,"t":"byte","b":[141,227,52,208,3,32,165,55]},{"a":15683,"t":"byte","b":[174,119,52,172,120,52,142,244]},{"a":15691,"t":"byte","b":[52,140,245,52,160,1,177,224]},{"a":15699,"t":"byte","b":[166,255,224,96,176,4,170,189]},{"a":15707,"t":"byte","b":[73,53,133,230,169,2,24,101]},{"a":15715,"t":"byte","b":[224,133,224,176,1,96,230,225]},{"a":15723,"t":"byte","b":[96,173,70,53,240,4,198,231]},{"a":15731,"t":"byte","b":[240,14,96,230,227,208,9,169]},{"a":15739,"t":"byte","b":[3,24,101,226,133,226,176,243]},{"a":15747,"t":"byte","b":[160,0,177,226,201,192,144,12]},{"a":15755,"t":"byte","b":[200,105,158,141,146,61,108,95]},{"a":15763,"t":"byte","b":[63,76,168,62,133,255,201,96]},{"a":15771,"t":"byte","b":[144,2,233,96,201,95,240,241]},{"a":15779,"t":"byte","b":[101,237,170,169,8,141,11,212]},{"a":15787,"t":"byte","b":[173,66,53,201,1,208,7,134]},{"a":15795,"t":"byte","b":[239,32,254,59,166,239,188,196]},{"a":15803,"t":"byte","b":[53,189,115,53,141,20,53,140]},{"a":15811,"t":"byte","b":[21,53,141,7,212,140,8,212]},{"a":15819,"t":"byte","b":[174,143,52,172,144,52,142,9]},{"a":15827,"t":"byte","b":[212,140,10,212,173,146,52,141]},{"a":15835,"t":"byte","b":[12,212,173,147,52,141,13,212]},{"a":15843,"t":"byte","b":[173,145,52,141,22,53,41,247]},{"a":15851,"t":"byte","b":[141,11,212,173,138,52,141,13]},{"a":15859,"t":"byte","b":[53,240,58,142,18,53,140,19]},{"a":15867,"t":"byte","b":[53,134,243,132,244,173,142,52]},{"a":15875,"t":"byte","b":[141,17,53,174,141,52,142,16]},{"a":15883,"t":"byte","b":[53,173,140,52,141,15,53,173]},{"a":15891,"t":"byte","b":[139,52,141,14,53,173,137,52]},{"a":15899,"t":"byte","b":[141,12,53,174,135,52,172,136]},{"a":15907,"t":"byte","b":[52,142,10,53,142,29,53,140]},{"a":15915,"t":"byte","b":[11,53,140,30,53,173,134,52]},{"a":15923,"t":"byte","b":[141,9,53,240,100,174,133,52]},{"a":15931,"t":"byte","b":[142,8,53,174,132,52,142,7]},{"a":15939,"t":"byte","b":[53,174,131,52,142,6,53,174]},{"a":15947,"t":"byte","b":[130,52,142,5,53,174,129,52]},{"a":15955,"t":"byte","b":[142,4,53,174,128,52,142,3]},{"a":15963,"t":"byte","b":[53,174,127,52,142,2,53,174]},{"a":15971,"t":"byte","b":[126,52,142,1,53,174,125,52]},{"a":15979,"t":"byte","b":[142,0,53,174,124,52,142,255]},{"a":15987,"t":"byte","b":[52,174,123,52,142,254,52,174]},{"a":15995,"t":"byte","b":[122,52,142,253,52,174,121,52]},{"a":16003,"t":"byte","b":[142,252,52,41,8,240,15,165]},{"a":16011,"t":"byte","b":[255,201,96,144,2,233,95,101]},{"a":16019,"t":"byte","b":[237,141,6,53,208,3,32,217]},{"a":16027,"t":"byte","b":[55,174,148,52,172,149,52,142]},{"a":16035,"t":"byte","b":[23,53,140,24,53,160,1,177]},{"a":16043,"t":"byte","b":[226,166,255,224,96,176,4,170]},{"a":16051,"t":"byte","b":[189,73,53,133,231,169,2,24]},{"a":16059,"t":"byte","b":[101,226,133,226,176,1,96,230]},{"a":16067,"t":"byte","b":[227,96,173,71,53,240,4,198]},{"a":16075,"t":"byte","b":[232,240,14,96,230,229,208,9]},{"a":16083,"t":"byte","b":[169,3,24,101,228,133,228,176]},{"a":16091,"t":"byte","b":[243,160,0,177,228,201,192,144]},{"a":16099,"t":"byte","b":[12,200,105,208,141,235,62,108]},{"a":16107,"t":"byte","b":[145,63,76,5,64,133,255,201]},{"a":16115,"t":"byte","b":[96,144,2,233,96,201,95,240]},{"a":16123,"t":"byte","b":[241,201,80,240,2]},{"a":16128,"l":"seq0_command_vectors","c":"Voice 0 command vectors: 25 words for command bytes $C0, $C2 ... $F0 (seq0_tick jumps through $3F00 + byte - $C0). Used: $C0 $28E6, $C2 $2834, $C4 $28B6, $C6 $282C, $CA $28C3, $CC $2883, $CE $28CF, $D2 $2866, $D4 $290A, $D6 $28FE, $DE $2852, $F0 $289D; every other slot holds $0A5A, the middle of unrelated code: such a byte in a sequence would crash. An odd command byte would read a vector across two entries, and bytes above $F0 read past the table","t":"word","b":[230,40,52,40,182,40,44,40],"d":[10470,10292,10422,10284]},{"a":16136,"t":"word","b":[90,10,195,40],"d":[2650,10435]},{"a":16140,"l":"p_3F0C","c":"Vector of command $CC (voice 0, repeat start), named only because JMP ($3F0C) is how the patched instruction at $2C3A was saved","t":"word","b":[131,40,207,40,90,10,102,40],"d":[10371,10447,2650,10342],"x":[11322]},{"a":16148,"t":"word","b":[10,41,254,40,90,10,90,10],"d":[10506,10494,2650,2650]},{"a":16156,"t":"word","b":[90,10,82,40,90,10,90,10],"d":[2650,10322,2650,2650]},{"a":16164,"t":"word","b":[90,10,90,10,90,10,90,10],"d":[2650,2650,2650,2650]},{"a":16172,"t":"word","b":[90,10,90,10,157,40],"d":[2650,2650,10397]},{"a":16178,"l":"seq1_command_vectors","c":"Voice 1 command vectors ($3F32 + byte - $C0): $C0 $29E6, $C2 $2920, $C4 $29B6, $CA $29C3, $CC $2983, $CE $29CF, $D2 $2966, $D4 $2A0A, $D6 $29FE, $DC $293E, $DE $2952, $F0 $299D; the unused slots (including $C6) hold $0A5D","t":"word","b":[230,41,32,41,182,41,93,10],"d":[10726,10528,10678,2653]},{"a":16186,"t":"word","b":[93,10,195,41],"d":[2653,10691]},{"a":16190,"l":"p_3F3E","c":"Vector of command $CC for voice 1, named because of JMP ($3F3E) at $2D91 as saved","t":"word","b":[131,41,207,41,93,10,102,41],"d":[10627,10703,2653,10598],"x":[11665]},{"a":16198,"t":"word","b":[10,42,254,41,93,10,93,10],"d":[10762,10750,2653,2653]},{"a":16206,"t":"word","b":[62,41,82,41,93,10,93,10],"d":[10558,10578,2653,2653]},{"a":16214,"t":"word","b":[93,10,93,10,93,10,93,10],"d":[2653,2653,2653,2653]},{"a":16222,"t":"word","b":[93,10,93,10,157,41],"d":[2653,2653,10653]},{"a":16228,"l":"seq2_command_vectors","c":"Voice 2 command vectors ($3F64 + byte - $C0): $C0 $2B2F, $C2 $2A28, $C4 $2AE9, $C6 $2A20, $CA $2B0C, $CC $2AB6, $CE $2B18, $D2 $2A99, $D4 $2B47, $D8 $2A46, $DC $2A58, $DE $2A6C, $E0 $2B08, $E2 $2A80, $F0 $2AD0; unused slots (including $D6) hold $0A60","t":"word","b":[47,43,40,42,233,42,32,42],"d":[11055,10792,10985,10784]},{"a":16236,"t":"word","b":[96,10,12,43,182,42],"d":[2656,11020,10934]},{"a":16242,"l":"p_3F72","c":"Vector of command $CE for voice 2 (repeat end), named because JMP ($3F72) at $2EEA was saved with that low byte","t":"word","b":[24,43,96,10,153,42,71,43],"d":[11032,2656,10905,11079],"x":[12010]},{"a":16250,"t":"word","b":[96,10,70,42,96,10,88,42],"d":[2656,10822,2656,10840]},{"a":16258,"t":"word","b":[108,42,8,43,128,42,96,10],"d":[10860,11016,10880,2656]},{"a":16266,"t":"word","b":[96,10,96,10,96,10,96,10],"d":[2656,2656,2656,2656]},{"a":16274,"t":"word","b":[96,10,208,42],"d":[2656,10960]},{"a":16278,"l":"stale_driver_copy_3f96","c":"Not used: 105 bytes ($3F96-$3FFE) of the same older driver build as $3B8B (it matches the live $2F96-$2FFE with addresses $1000 higher), except $3FA0-$3FA9, which read STA $0936,X / JSR $FA75 / CLD / LDA #$28 / RTS, a fragment of other code; the live vector tables overwrote the part before. Nothing references it","t":"byte","b":[162,52,142,43,53,174,161,52]},{"a":16286,"t":"byte","b":[142,42,157,54,9,32,117,250]},{"a":16294,"t":"byte","b":[216,169,40,96,142,40,53,174]},{"a":16302,"t":"byte","b":[158,52,142,39,53,174,157,52]},{"a":16310,"t":"byte","b":[142,38,53,174,156,52,142,37]},{"a":16318,"t":"byte","b":[53,174,155,52,142,36,53,174]},{"a":16326,"t":"byte","b":[154,52,142,35,53,174,153,52]},{"a":16334,"t":"byte","b":[142,34,53,174,152,52,142,33]},{"a":16342,"t":"byte","b":[53,174,151,52,142,32,53,174]},{"a":16350,"t":"byte","b":[150,52,142,31,53,41,8,240]},{"a":16358,"t":"byte","b":[15,165,255,201,96,144,2,233]},{"a":16366,"t":"byte","b":[95,101,238,141,41,53,208,3]},{"a":16374,"t":"byte","b":[32,9,56,174,177,52,172,178]},{"a":16382,"t":"byte","b":[52]},{"a":16383,"l":"sample_filter_bits","c":"Filter-mode bits for $D418: the routine at $FEE0 writes $0F OR this byte to $D418 (volume 15 plus these bits). sound_reset sets $0F, the title tune's $374B sets $10 (low-pass on), $3751 sets 0","t":"byte","b":[15],"x":[9918,14157,14163,65261]},{"a":16384,"l":"title_bitmap_rows_0_2","c":"Title picture, multicolour bitmap (video bank 1, shown with $D018 bits 4-7 = 8 and bit 3 = 0 from $B48C, $DD00 = $C2 from $B487): 8000 bytes, 8 per character cell, cells in screen order; pixel pair 00 = $D021, 01 = colour matrix high nibble ($6000), 10 = its low nibble, 11 = colour RAM (copied from $6400 by $B499). Rows 0-2: top of the ARKANOID logo, and IMAGINE / TAITO in yellow at the right. No instruction reads it; only the video chip does","t":"byte","b":[255,255,255,255,191,255,255,255]},{"a":16392,"t":"byte","b":[255,255,255,255,255,255,207,255]},{"a":16400,"t":"byte","b":[255,255,255,255,255,255,235,243]},{"a":16408,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16416,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16424,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16432,"t":"byte","b":[170,170,170,170,170,170,234,42]},{"a":16440,"t":"byte","b":[255,255,255,255,255,254,255,255]},{"a":16448,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16456,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":16464,"t":"byte","b":[255,255,254,255,255,255,255,255]},{"a":16472,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16480,"t":"byte","b":[255,255,255,255,239,255,255,255]},{"a":16488,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16496,"t":"byte","b":[170,170,170,170,170,170,171,168]},{"a":16504,"t":"byte","b":[170,170,170,170,170,170,234,234]},{"a":16512,"t":"byte","b":[255,255,255,255,255,254,255,255]},{"a":16520,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16528,"t":"byte","b":[255,191,255,255,255,255,255,255]},{"a":16536,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16544,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16552,"t":"byte","b":[255,63,255,255,252,255,255,255]},{"a":16560,"t":"byte","b":[255,255,255,252,255,255,255,255]},{"a":16568,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16576,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16584,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16592,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":16600,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16608,"t":"byte","b":[170,170,170,170,170,142,142,23]},{"a":16616,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16624,"t":"byte","b":[255,255,255,255,255,255,254,254]},{"a":16632,"t":"byte","b":[207,255,255,255,255,255,234,238]},{"a":16640,"t":"byte","b":[255,255,255,255,255,255,174,238]},{"a":16648,"t":"byte","b":[255,255,255,255,255,255,174,238]},{"a":16656,"t":"byte","b":[255,255,255,255,255,255,174,254]},{"a":16664,"t":"byte","b":[255,255,255,255,255,255,234,238]},{"a":16672,"t":"byte","b":[255,255,255,255,255,255,234,239]},{"a":16680,"t":"byte","b":[255,255,255,255,243,255,255,255]},{"a":16688,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16696,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16704,"t":"byte","b":[255,251,255,243,255,255,255,255]},{"a":16712,"t":"byte","b":[255,253,255,251,255,243,253,255]},{"a":16720,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16728,"t":"byte","b":[255,255,255,255,255,63,255,255]},{"a":16736,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16744,"t":"byte","b":[85,85,84,84,84,83,83,79]},{"a":16752,"t":"byte","b":[21,21,192,234,234,234,234,234]},{"a":16760,"t":"byte","b":[85,85,20,212,210,210,202,202]},{"a":16768,"t":"byte","b":[85,85,85,85,213,213,213,181]},{"a":16776,"t":"byte","b":[85,85,0,234,234,234,234,234]},{"a":16784,"t":"byte","b":[170,170,42,234,234,234,234,234]},{"a":16792,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16800,"t":"byte","b":[255,255,255,191,255,255,255,255]},{"a":16808,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16816,"t":"byte","b":[84,84,83,83,83,75,75,43]},{"a":16824,"t":"byte","b":[229,229,229,249,249,249,254,254]},{"a":16832,"t":"byte","b":[255,255,255,255,255,255,254,255]},{"a":16840,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":16848,"t":"byte","b":[85,85,0,234,234,234,234,234]},{"a":16856,"t":"byte","b":[170,170,42,234,234,234,234,234]},{"a":16864,"t":"byte","b":[170,170,170,170,168,160,163,131]},{"a":16872,"t":"byte","b":[170,170,160,3,63,255,255,255]},{"a":16880,"t":"byte","b":[170,170,0,255,255,255,255,255]},{"a":16888,"t":"byte","b":[85,85,21,13,175,171,170,170]},{"a":16896,"t":"byte","b":[170,170,170,170,170,234,234,122]},{"a":16904,"t":"byte","b":[170,170,160,173,173,173,173,173]},{"a":16912,"t":"byte","b":[170,170,0,93,93,93,93,93]},{"a":16920,"t":"byte","b":[170,168,0,95,95,94,94,94]},{"a":16928,"t":"byte","b":[23,85,85,85,85,213,213,181]},{"a":16936,"t":"byte","b":[170,234,234,122,122,94,94,87]},{"a":16944,"t":"byte","b":[254,254,254,254,255,255,255,255]},{"a":16952,"t":"byte","b":[238,238,239,239,255,255,255,255]},{"a":16960,"t":"byte","b":[238,238,238,238,255,255,255,255]},{"a":16968,"t":"byte","b":[174,238,238,238,255,255,255,255]},{"a":16976,"t":"byte","b":[254,238,238,174,255,255,255,63]},{"a":16984,"t":"byte","b":[157,221,221,221,255,255,255,254]},{"a":16992,"t":"byte","b":[234,239,239,234,255,255,255,255]},{"a":17000,"t":"byte","b":[255,252,255,255,255,255,255,255]},{"a":17008,"t":"byte","b":[255,255,255,252,255,255,255,255]},{"a":17016,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17024,"t":"byte","b":[255,191,255,255,255,255,255,255]},{"a":17032,"t":"byte","b":[255,255,239,255,255,255,255,255]},{"a":17040,"t":"byte","b":[255,127,254,255,255,255,255,223]},{"a":17048,"t":"byte","b":[255,255,191,255,255,255,63,255]},{"a":17056,"t":"byte","b":[255,255,255,255,191,252,252,252]},{"a":17064,"t":"byte","b":[133,133,21,21,21,85,85,85]},{"a":17072,"t":"byte","b":[213,213,213,213,213,213,213,213]},{"a":17080,"t":"byte","b":[213,245,245,237,237,237,235,235]},{"a":17088,"t":"byte","b":[122,122,94,94,95,87,87,85]},{"a":17096,"t":"byte","b":[213,213,213,213,213,213,213,213]},{"a":17104,"t":"byte","b":[234,234,234,234,234,234,234,232]},{"a":17112,"t":"byte","b":[170,174,174,135,135,23,23,85]},{"a":17120,"t":"byte","b":[170,170,170,170,170,170,170,234]},{"a":17128,"t":"byte","b":[170,170,168,168,168,161,161,161]},{"a":17136,"t":"byte","b":[23,23,87,87,87,87,87,87]},{"a":17144,"t":"byte","b":[87,85,85,85,85,85,85,85]},{"a":17152,"t":"byte","b":[170,234,234,234,122,122,122,94]},{"a":17160,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":17168,"t":"byte","b":[213,213,213,213,213,213,213,213]},{"a":17176,"t":"byte","b":[234,234,234,232,232,232,232,232]},{"a":17184,"t":"byte","b":[197,21,21,85,85,85,85,85]},{"a":17192,"t":"byte","b":[85,85,85,85,87,94,122,112]},{"a":17200,"t":"byte","b":[85,85,85,255,255,40,40,0]},{"a":17208,"t":"byte","b":[85,85,85,85,213,181,173,13]},{"a":17216,"t":"byte","b":[126,94,95,87,87,87,85,85]},{"a":17224,"t":"byte","b":[173,173,173,173,237,237,237,237]},{"a":17232,"t":"byte","b":[93,93,93,93,93,93,93,93]},{"a":17240,"t":"byte","b":[94,94,94,94,94,94,94,94]},{"a":17248,"t":"byte","b":[177,129,133,133,133,21,21,21]},{"a":17256,"t":"byte","b":[87,94,94,94,122,122,122,234]},{"a":17264,"t":"byte","b":[170,170,170,171,170,170,170,170]},{"a":17272,"t":"byte","b":[170,170,170,255,186,186,186,186]},{"a":17280,"t":"byte","b":[255,255,255,234,238,238,234,238]},{"a":17288,"t":"byte","b":[255,255,255,238,239,239,239,239]},{"a":17296,"t":"byte","b":[255,255,255,170,239,239,239,239]},{"a":17304,"t":"byte","b":[255,255,255,234,238,238,238,238]},{"a":17312,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17320,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17328,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17336,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17344,"l":"title_bitmap_rows_3_5","c":"Title bitmap rows 3-5 ($43C0-$477F): the middle of the ARKANOID logo, its O drawn as a gridded sphere, on the starfield","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17352,"t":"byte","b":[251,255,255,255,255,255,255,255]},{"a":17360,"t":"byte","b":[255,255,254,255,255,255,255,255]},{"a":17368,"t":"byte","b":[255,255,255,255,255,255,255,252]},{"a":17376,"t":"byte","b":[161,161,133,133,133,21,21,21]},{"a":17384,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":17392,"t":"byte","b":[213,213,213,213,213,213,213,213]},{"a":17400,"t":"byte","b":[232,225,225,197,197,213,85,85]},{"a":17408,"t":"byte","b":[170,170,171,171,173,173,181,181]},{"a":17416,"t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":17424,"t":"byte","b":[212,210,210,202,202,234,170,170]},{"a":17432,"t":"byte","b":[170,170,171,171,175,173,189,181]},{"a":17440,"t":"byte","b":[234,234,234,170,170,168,168,161]},{"a":17448,"t":"byte","b":[79,79,63,63,63,255,255,255]},{"a":17456,"t":"byte","b":[254,254,254,254,254,254,254,254]},{"a":17464,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17472,"t":"byte","b":[249,249,254,254,254,255,255,255]},{"a":17480,"t":"byte","b":[85,85,85,85,85,149,149,149]},{"a":17488,"t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":17496,"t":"byte","b":[208,210,210,210,210,210,210,210]},{"a":17504,"t":"byte","b":[170,170,170,170,171,171,171,171]},{"a":17512,"t":"byte","b":[192,202,202,138,0,0,138,138]},{"a":17520,"t":"byte","b":[0,40,40,40,0,0,40,40]},{"a":17528,"t":"byte","b":[2,82,82,81,0,0,81,81]},{"a":17536,"t":"byte","b":[255,255,255,255,191,191,191,191]},{"a":17544,"t":"byte","b":[155,155,171,235,235,235,235,235]},{"a":17552,"t":"byte","b":[174,174,174,174,174,174,174,174]},{"a":17560,"t":"byte","b":[172,172,172,174,174,170,170,170]},{"a":17568,"t":"byte","b":[255,255,254,254,254,249,249,249]},{"a":17576,"t":"byte","b":[149,149,85,85,85,85,85,85]},{"a":17584,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":17592,"t":"byte","b":[117,85,85,85,85,85,69,85]},{"a":17600,"t":"byte","b":[238,255,255,255,255,255,255,127]},{"a":17608,"t":"byte","b":[239,255,255,255,255,255,63,255]},{"a":17616,"t":"byte","b":[239,255,255,255,255,255,255,255]},{"a":17624,"t":"byte","b":[234,255,255,255,255,255,255,255]},{"a":17632,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17640,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17648,"t":"byte","b":[191,191,255,255,255,255,255,255]},{"a":17656,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17664,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17672,"t":"byte","b":[255,191,255,255,255,255,255,255]},{"a":17680,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17688,"t":"byte","b":[84,84,80,82,83,66,79,64]},{"a":17696,"t":"byte","b":[255,170,170,170,255,170,253,1]},{"a":17704,"t":"byte","b":[255,170,170,106,127,106,127,64]},{"a":17712,"t":"byte","b":[127,106,106,106,127,106,127,64]},{"a":17720,"t":"byte","b":[255,170,170,170,253,170,255,0]},{"a":17728,"t":"byte","b":[213,213,213,85,85,85,213,213]},{"a":17736,"t":"byte","b":[255,234,234,234,255,234,255,192]},{"a":17744,"t":"byte","b":[255,170,170,170,253,169,253,1]},{"a":17752,"t":"byte","b":[245,213,213,213,85,85,85,85]},{"a":17760,"t":"byte","b":[82,82,74,74,79,42,63,0]},{"a":17768,"t":"byte","b":[255,170,170,169,253,169,245,5]},{"a":17776,"t":"byte","b":[253,169,169,169,253,169,253,1]},{"a":17784,"t":"byte","b":[255,169,169,169,253,169,253,1]},{"a":17792,"t":"byte","b":[170,85,170,106,85,218,213,244]},{"a":17800,"t":"byte","b":[181,117,181,173,93,173,87,3]},{"a":17808,"t":"byte","b":[234,213,213,213,234,213,234,192]},{"a":17816,"t":"byte","b":[225,226,226,226,225,230,237,236]},{"a":17824,"t":"byte","b":[253,169,169,169,253,169,253,1]},{"a":17832,"t":"byte","b":[69,0,0,69,69,69,192,192]},{"a":17840,"t":"byte","b":[40,0,0,40,40,40,0,0]},{"a":17848,"t":"byte","b":[81,0,0,81,81,81,2,2]},{"a":17856,"t":"byte","b":[127,106,106,106,127,106,127,0]},{"a":17864,"t":"byte","b":[235,105,105,105,235,105,235,40]},{"a":17872,"t":"byte","b":[247,166,166,166,247,166,247,4]},{"a":17880,"t":"byte","b":[255,170,170,170,255,170,255,0]},{"a":17888,"t":"byte","b":[237,181,181,181,181,213,213,213]},{"a":17896,"t":"byte","b":[71,85,85,85,85,85,85,85]},{"a":17904,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":17912,"t":"byte","b":[85,85,85,85,85,85,85,21]},{"a":17920,"t":"byte","b":[255,255,255,255,255,243,255,255]},{"a":17928,"t":"byte","b":[191,255,255,255,255,255,179,255]},{"a":17936,"t":"byte","b":[255,255,191,255,255,255,255,255]},{"a":17944,"t":"byte","b":[255,255,255,191,255,255,255,255]},{"a":17952,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17960,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17968,"t":"byte","b":[255,255,239,255,255,255,255,255]},{"a":17976,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17984,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":17992,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18000,"t":"byte","b":[170,170,170,168,168,160,172,172]},{"a":18008,"t":"byte","b":[0,0,0,0,0,0,3,3]},{"a":18016,"t":"byte","b":[14,14,58,58,250,234,234,170]},{"a":18024,"t":"byte","b":[192,192,192,192,192,192,192,192]},{"a":18032,"t":"byte","b":[192,192,192,192,192,192,192,192]},{"a":18040,"t":"byte","b":[0,0,0,0,0,0,32,32]},{"a":18048,"t":"byte","b":[234,234,58,58,58,14,14,14]},{"a":18056,"t":"byte","b":[192,192,192,192,192,192,192,192]},{"a":18064,"t":"byte","b":[3,3,0,0,0,0,0,48]},{"a":18072,"t":"byte","b":[168,168,224,224,192,48,48,60]},{"a":18080,"t":"byte","b":[0,0,0,0,3,3,14,14]},{"a":18088,"t":"byte","b":[59,59,235,235,171,171,171,171]},{"a":18096,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":18104,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":18112,"t":"byte","b":[248,254,254,254,255,255,255,255]},{"a":18120,"t":"byte","b":[0,0,0,0,128,128,128,96]},{"a":18128,"t":"byte","b":[128,0,0,0,0,0,0,0]},{"a":18136,"t":"byte","b":[220,220,223,215,215,213,213,213]},{"a":18144,"t":"byte","b":[0,0,0,0,0,192,192,240]},{"a":18152,"t":"byte","b":[202,250,58,60,15,3,0,0]},{"a":18160,"t":"byte","b":[40,40,40,0,0,255,255,0]},{"a":18168,"t":"byte","b":[163,175,172,60,240,192,0,0]},{"a":18176,"t":"byte","b":[0,0,0,0,3,3,3,14]},{"a":18184,"t":"byte","b":[60,252,236,172,172,172,172,172]},{"a":18192,"t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":18200,"t":"byte","b":[0,3,3,3,3,14,14,14]},{"a":18208,"t":"byte","b":[191,255,255,255,255,255,255,255]},{"a":18216,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18224,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18232,"t":"byte","b":[255,254,255,255,255,255,255,255]},{"a":18240,"t":"byte","b":[255,255,243,255,255,191,255,255]},{"a":18248,"t":"byte","b":[255,255,255,255,255,255,63,252]},{"a":18256,"t":"byte","b":[255,251,255,255,191,255,255,255]},{"a":18264,"t":"byte","b":[255,255,255,255,255,239,255,255]},{"a":18272,"t":"byte","b":[255,255,239,255,255,255,255,255]},{"a":18280,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18288,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18296,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18304,"l":"title_bitmap_rows_6_8","c":"Title bitmap rows 6-8 ($4780-$4B3F): the lower edge of the ARKANOID logo and open starfield","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18312,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18320,"t":"byte","b":[171,171,170,170,170,170,170,170]},{"a":18328,"t":"byte","b":[0,0,192,192,176,172,172,171]},{"a":18336,"t":"byte","b":[234,234,58,14,14,3,3,3]},{"a":18344,"t":"byte","b":[192]},{"a":18345,"l":"title_bitmap_47a9","c":"A byte of the title bitmap (row 6, column 5, pixel line 1). It carries a name only because of the skip trick at $9F9E: BEQ $9FA6 lands inside BIT $47A9 ($2C $A9 $47) and runs LDA #$47; the other path runs LDA #$AF, then the BIT, which only sets flags. No instruction reads this byte as data","t":"byte","b":[192,192,192,192,192,255,170,128],"x":[40869]},{"a":18353,"t":"byte","b":[128,128,130,130,130,130,139,252]},{"a":18361,"t":"byte","b":[220,220,87,87,87,85,85,11]},{"a":18369,"t":"byte","b":[2,2,2,0,0,128,130,192]},{"a":18377,"t":"byte","b":[192,192,192,195,195,195,195,48]},{"a":18385,"t":"byte","b":[252,236,236,171,171,171,170,8]},{"a":18393,"t":"byte","b":[8,10,2,2,0,0,130,3]},{"a":18401,"t":"byte","b":[3,0,0,192,192,240,240,171]},{"a":18409,"t":"byte","b":[171,235,235,59,59,15,3,3]},{"a":18417,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":18425,"t":"byte","b":[3,3,3,3,3,3,3,255]},{"a":18433,"t":"byte","b":[255,255,255,255,255,255,255,224]},{"a":18441,"t":"byte","b":[224,248,248,248,254,254,255,0]},{"a":18449,"t":"byte","b":[3,3,3,14,14,14,250,191]},{"a":18457,"t":"byte","b":[255,255,255,255,255,255,255,176]},{"a":18465,"t":"byte","b":[188,172,175,171,170,170,170,0]},{"a":18473,"t":"byte","b":[0,0,0,192,240,191,171,0]},{"a":18481,"t":"byte","b":[0,0,0,0,0,0,85,0]},{"a":18489,"t":"byte","b":[0,0,0,3,15,254,234,14]},{"a":18497,"t":"byte","b":[58,58,234,170,170,170,170,172]},{"a":18505,"t":"byte","b":[172,172,172,172,172,172,172,4]},{"a":18513,"t":"byte","b":[4,4,20,20,20,20,84,9]},{"a":18521,"t":"byte","b":[9,37,37,37,37,149,149,255]},{"a":18529,"t":"byte","b":[255,255,255,255,255,255,255,85]},{"a":18537,"t":"byte","b":[85,85,213,85,85,87,85,170]},{"a":18545,"t":"byte","b":[170,170,170,186,170,170,170,255]},{"a":18553,"t":"byte","b":[251,255,255,255,255,255,255,255]},{"a":18561,"t":"byte","b":[255,255,255,255,255,255,111,255]},{"a":18569,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18577,"t":"byte","b":[255,255,255,255,255,191,255,255]},{"a":18585,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18593,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18601,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18609,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18617,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18625,"t":"byte","b":[255,255,255,255,255,252,255,255]},{"a":18633,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18641,"t":"byte","b":[255,255,255,255,255,255,255,171]},{"a":18649,"t":"byte","b":[170,170,170,170,170,170,170,14]},{"a":18657,"t":"byte","b":[206,250,186,186,170,170,170,170]},{"a":18665,"t":"byte","b":[170,170,170,170,170,170,170,206]},{"a":18673,"t":"byte","b":[206,250,250,234,170,170,170,170]},{"a":18681,"t":"byte","b":[170,170,170,170,170,174,170,195]},{"a":18689,"t":"byte","b":[190,190,186,186,170,170,170,206]},{"a":18697,"t":"byte","b":[206,206,250,250,234,170,170,170]},{"a":18705,"t":"byte","b":[170,170,170,170,170,170,170,195]},{"a":18713,"t":"byte","b":[195,190,190,186,186,170,170,188]},{"a":18721,"t":"byte","b":[172,171,171,170,170,170,170,3]},{"a":18729,"t":"byte","b":[15,14,58,234,234,170,170,3]},{"a":18737,"t":"byte","b":[255,170,170,170,170,170,168,3]},{"a":18745,"t":"byte","b":[255,170,170,170,170,170,170,170]},{"a":18753,"t":"byte","b":[170,170,170,170,170,170,170,234]},{"a":18761,"t":"byte","b":[170,170,170,170,170,170,170,250]},{"a":18769,"t":"byte","b":[234,234,170,170,170,170,170,170]},{"a":18777,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18785,"t":"byte","b":[234,170,170,170,170,170,170,170]},{"a":18793,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18801,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18809,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18817,"t":"byte","b":[170,170,170,170,170,170,170,172]},{"a":18825,"t":"byte","b":[172,175,175,174,174,170,170,236]},{"a":18833,"t":"byte","b":[239,175,174,174,170,170,170,234]},{"a":18841,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18849,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18857,"t":"byte","b":[170,171,170,170,170,170,170,255]},{"a":18865,"t":"byte","b":[255,255,255,253,239,255,255,255]},{"a":18873,"t":"byte","b":[255,255,191,191,223,255,111,255]},{"a":18881,"t":"byte","b":[255,255,255,127,255,255,191,255]},{"a":18889,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18897,"t":"byte","b":[255,255,255,255,255,255,255,63]},{"a":18905,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18913,"t":"byte","b":[255,255,255,255,255,191,255,255]},{"a":18921,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18929,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18937,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18945,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18953,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18961,"t":"byte","b":[255,255,255,191,239,255,255,255]},{"a":18969,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18977,"t":"byte","b":[255,255,255,255,255,255,255,170]},{"a":18985,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":18993,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19001,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19009,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19017,"t":"byte","b":[170,170,170,170,170,170,170,174]},{"a":19025,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19033,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19041,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19049,"t":"byte","b":[170,170,170,170,170,170,170,234]},{"a":19057,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19065,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19073,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19081,"t":"byte","b":[170,170,170,170,170,170,170,255]},{"a":19089,"t":"byte","b":[255,255,255,255,254,255,255,170]},{"a":19097,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19105,"t":"byte","b":[170,170,170,170,170,170,170,255]},{"a":19113,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19121,"t":"byte","b":[255,255,255,255,255,255,255,170]},{"a":19129,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19137,"t":"byte","b":[170,170,170,42,170,170,170,170]},{"a":19145,"t":"byte","b":[170,170,170,170,170,170,170,255]},{"a":19153,"t":"byte","b":[255,255,255,255,255,255,255,170]},{"a":19161,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19169,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19177,"t":"byte","b":[170,170,170,170,170,170,170,255]},{"a":19185,"t":"byte","b":[254,255,255,255,255,255,255,255]},{"a":19193,"t":"byte","b":[255,255,254,255,255,255,255,255]},{"a":19201,"t":"byte","b":[255,255,255,255,239,255,127,239]},{"a":19209,"t":"byte","b":[255,255,255,255,255,223,255,255]},{"a":19217,"t":"byte","b":[255,255,255,255,255,255,191,255]},{"a":19225,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19233,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19241,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19249,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19257,"t":"byte","b":[255,255,255,255,255,255,255]},{"a":19264,"l":"title_bitmap_rows_9_11","c":"Title bitmap rows 9-11 ($4B40-$4EFF): starfield, then the top of the grey mothership rising into row 11","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19272,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19280,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19288,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19296,"t":"byte","b":[170,170,170,170,170,170,170,186]},{"a":19304,"t":"byte","b":[207,255,255,255,255,255,255,255]},{"a":19312,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19320,"t":"byte","b":[255,255,255,255,255,239,255,255]},{"a":19328,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19336,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19344,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19352,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19360,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19368,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19376,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19384,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19392,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19400,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19408,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19416,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19424,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19432,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19440,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19448,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19456,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19464,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19472,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19480,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":19488,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19496,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19504,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19512,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19520,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19528,"t":"byte","b":[255,255,255,251,255,255,255,255]},{"a":19536,"t":"byte","b":[255,255,255,255,255,255,254,255]},{"a":19544,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19552,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19560,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19568,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19576,"t":"byte","b":[255,255,255,255,191,255,255,255]},{"a":19584,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19592,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19600,"t":"byte","b":[255,207,255,255,255,255,255,255]},{"a":19608,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19616,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19624,"t":"byte","b":[255,255,255,255,255,255,255,63]},{"a":19632,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19640,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19648,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19656,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19664,"t":"byte","b":[255,255,239,255,255,255,255,255]},{"a":19672,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19680,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19688,"t":"byte","b":[255,255,239,255,255,255,255,255]},{"a":19696,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19704,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19712,"t":"byte","b":[255,247,255,255,255,255,255,255]},{"a":19720,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19728,"t":"byte","b":[255,63,255,255,255,255,255,255]},{"a":19736,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19744,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19752,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19760,"t":"byte","b":[255,255,255,255,255,255,245,90]},{"a":19768,"t":"byte","b":[255,255,255,255,255,255,87,165]},{"a":19776,"t":"byte","b":[255,255,255,255,255,255,255,127]},{"a":19784,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19792,"t":"byte","b":[239,255,255,255,255,255,255,255]},{"a":19800,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19808,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19816,"t":"byte","b":[243,243,255,255,255,255,255,255]},{"a":19824,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19832,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19840,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19848,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19856,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19864,"t":"byte","b":[255,255,255,255,253,255,255,191]},{"a":19872,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19880,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19888,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19896,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19904,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19912,"t":"byte","b":[255,255,191,255,255,255,255,255]},{"a":19920,"t":"byte","b":[255,255,63,255,255,255,255,255]},{"a":19928,"t":"byte","b":[255,255,255,255,255,255,63,255]},{"a":19936,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19944,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19952,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19960,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19968,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19976,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":19984,"t":"byte","b":[170,170,170,170,170,170,169,167]},{"a":19992,"t":"byte","b":[170,170,169,167,159,127,255,255]},{"a":20000,"t":"byte","b":[186,126,255,255,255,255,255,255]},{"a":20008,"t":"byte","b":[170,170,170,234,250,254,255,255]},{"a":20016,"t":"byte","b":[170,170,170,170,170,170,170,234]},{"a":20024,"t":"byte","b":[255,255,255,254,250,246,245,245]},{"a":20032,"t":"byte","b":[251,234,166,154,105,154,166,106]},{"a":20040,"t":"byte","b":[255,255,189,165,169,106,170,170]},{"a":20048,"t":"byte","b":[223,85,86,90,106,174,187,175]},{"a":20056,"t":"byte","b":[255,255,191,255,191,255,127,255]},{"a":20064,"t":"byte","b":[255,255,255,255,255,255,255,234]},{"a":20072,"t":"byte","b":[86,90,90,106,106,170,111,175]},{"a":20080,"t":"byte","b":[213,117,93,94,127,255,255,255]},{"a":20088,"t":"byte","b":[171,171,255,255,95,245,255,255]},{"a":20096,"t":"byte","b":[245,253,253,255,254,170,255,255]},{"a":20104,"t":"byte","b":[255,255,255,255,255,255,191,191]},{"a":20112,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20120,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20128,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20136,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20144,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20152,"t":"byte","b":[255,255,255,254,255,255,255,255]},{"a":20160,"t":"byte","b":[255,255,255,255,191,191,255,255]},{"a":20168,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20176,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20184,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20192,"t":"byte","b":[255,255,255,255,255,255,251,255]},{"a":20200,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20208,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20216,"t":"byte","b":[255,63,255,255,255,255,255,255]},{"a":20224,"l":"title_bitmap_rows_12_14","c":"Title bitmap rows 12-14 ($4F00-$52BF): the mothership's grey upper hull and its central dome, on the starfield","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20232,"t":"byte","b":[255,255,254,255,63,255,252,255]},{"a":20240,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20248,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20256,"t":"byte","b":[239,255,255,255,255,255,255,255]},{"a":20264,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20272,"t":"byte","b":[255,255,243,255,255,255,255,251]},{"a":20280,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20288,"t":"byte","b":[255,251,255,255,255,255,255,255]},{"a":20296,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20304,"t":"byte","b":[167,165,165,165,165,229,165,165]},{"a":20312,"t":"byte","b":[255,255,255,127,95,87,85,85]},{"a":20320,"t":"byte","b":[255,255,255,255,255,255,255,127]},{"a":20328,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20336,"t":"byte","b":[250,254,255,255,255,255,255,255]},{"a":20344,"t":"byte","b":[245,245,245,170,173,166,154,106]},{"a":20352,"t":"byte","b":[125,119,223,122,254,255,254,255]},{"a":20360,"t":"byte","b":[175,250,255,255,255,255,255,239]},{"a":20368,"t":"byte","b":[170,170,234,234,234,234,250,239]},{"a":20376,"t":"byte","b":[255,255,255,255,255,239,191,255]},{"a":20384,"t":"byte","b":[255,255,255,255,174,251,255,254]},{"a":20392,"t":"byte","b":[170,250,175,170,170,170,170,170]},{"a":20400,"t":"byte","b":[234,191,255,255,255,254,251,255]},{"a":20408,"t":"byte","b":[170,170,246,253,255,255,239,191]},{"a":20416,"t":"byte","b":[255,255,254,190,106,90,86,86]},{"a":20424,"t":"byte","b":[191,191,191,191,191,255,255,255]},{"a":20432,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20440,"t":"byte","b":[255,255,255,255,255,255,207,255]},{"a":20448,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20456,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":20464,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20472,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20480,"t":"byte","b":[207,207,255,255,255,255,255,255]},{"a":20488,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20496,"t":"byte","b":[191,255,255,255,255,255,255,255]},{"a":20504,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20512,"t":"byte","b":[255,255,255,255,255,191,255,255]},{"a":20520,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20528,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20536,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20544,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20552,"t":"byte","b":[207,207,255,255,247,255,191,191]},{"a":20560,"t":"byte","b":[191,127,255,239,255,255,62,239]},{"a":20568,"t":"byte","b":[255,63,255,255,252,255,255,255]},{"a":20576,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20584,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20592,"t":"byte","b":[255,255,255,255,255,191,255,255]},{"a":20600,"t":"byte","b":[255,255,255,251,255,255,255,255]},{"a":20608,"t":"byte","b":[239,255,255,255,255,255,255,255]},{"a":20616,"t":"byte","b":[170,170,170,170,171,175,191,255]},{"a":20624,"t":"byte","b":[175,175,149,85,85,85,89,106]},{"a":20632,"t":"byte","b":[255,255,170,170,85,170,170,109]},{"a":20640,"t":"byte","b":[250,254,170,170,105,166,170,234]},{"a":20648,"t":"byte","b":[253,247,223,127,254,251,239,191]},{"a":20656,"t":"byte","b":[254,251,239,190,255,255,253,213]},{"a":20664,"t":"byte","b":[255,255,255,191,234,255,85,85]},{"a":20672,"t":"byte","b":[254,251,239,191,251,255,255,95]},{"a":20680,"t":"byte","b":[255,255,255,239,255,255,255,191]},{"a":20688,"t":"byte","b":[191,175,250,255,255,255,255,255]},{"a":20696,"t":"byte","b":[239,250,255,111,246,255,255,255]},{"a":20704,"t":"byte","b":[251,239,191,255,255,111,249,255]},{"a":20712,"t":"byte","b":[255,255,255,250,255,175,250,175]},{"a":20720,"t":"byte","b":[255,239,190,251,239,191,255,255]},{"a":20728,"t":"byte","b":[255,255,215,253,255,255,254,251]},{"a":20736,"t":"byte","b":[171,166,154,106,170,170,90,165]},{"a":20744,"t":"byte","b":[85,213,213,165,173,171,170,170]},{"a":20752,"t":"byte","b":[170,170,170,170,170,170,170,106]},{"a":20760,"t":"byte","b":[255,255,127,255,255,255,255,255]},{"a":20768,"t":"byte","b":[255,255,255,255,255,255,255,254]},{"a":20776,"t":"byte","b":[255,255,255,255,255,255,255,191]},{"a":20784,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20792,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20800,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20808,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20816,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20824,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20832,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20840,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20848,"t":"byte","b":[255,255,255,255,239,255,255,255]},{"a":20856,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":20864,"t":"byte","b":[255,254,255,255,255,255,255,255]},{"a":20872,"t":"byte","b":[255,254,255,255,255,255,255,255]},{"a":20880,"t":"byte","b":[255,191,191,255,255,239,255,255]},{"a":20888,"t":"byte","b":[251,255,255,255,127,255,255,252]},{"a":20896,"t":"byte","b":[255,255,247,255,255,255,254,255]},{"a":20904,"t":"byte","b":[255,255,255,255,255,253,245,213]},{"a":20912,"t":"byte","b":[170,170,165,149,85,85,85,93]},{"a":20920,"t":"byte","b":[255,255,255,95,85,86,90,106]},{"a":20928,"t":"byte","b":[171,175,191,95,117,246,253,253]},{"a":20936,"t":"byte","b":[254,251,234,191,255,170,253,245]},{"a":20944,"t":"byte","b":[255,255,190,251,237,181,215,85]},{"a":20952,"t":"byte","b":[237,181,245,95,85,85,215,125]},{"a":20960,"t":"byte","b":[127,95,85,89,101,149,85,85]},{"a":20968,"t":"byte","b":[255,191,106,90,106,106,171,175]},{"a":20976,"t":"byte","b":[95,85,85,85,85,213,245,245]},{"a":20984,"t":"byte","b":[85,245,95,85,85,85,85,85]},{"a":20992,"t":"byte","b":[254,255,255,175,250,255,253,249]},{"a":21000,"t":"byte","b":[229,101,127,126,127,255,255,255]},{"a":21008,"t":"byte","b":[255,190,251,255,123,94,159,175]},{"a":21016,"t":"byte","b":[191,255,255,255,254,187,239,255]},{"a":21024,"t":"byte","b":[234,170,170,170,170,170,170,175]},{"a":21032,"t":"byte","b":[250,255,255,254,255,255,255,255]},{"a":21040,"t":"byte","b":[255,94,247,127,255,253,247,223]},{"a":21048,"t":"byte","b":[122,106,170,170,170,170,170,169]},{"a":21056,"t":"byte","b":[255,255,255,245,255,223,127,255]},{"a":21064,"t":"byte","b":[95,246,250,235,94,255,255,253]},{"a":21072,"t":"byte","b":[255,215,85,87,91,107,171,171]},{"a":21080,"t":"byte","b":[170,167,149,87,95,127,255,255]},{"a":21088,"t":"byte","b":[85,213,215,119,117,117,125,93]},{"a":21096,"t":"byte","b":[95,95,95,95,191,191,255,255]},{"a":21104,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21112,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21120,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21128,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21136,"t":"byte","b":[255,255,251,255,255,255,255,255]},{"a":21144,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21152,"t":"byte","b":[255,255,255,255,255,243,255,255]},{"a":21160,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21168,"t":"byte","b":[255,255,255,255,255,255,254,255]},{"a":21176,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21184,"l":"title_bitmap_rows_15_17","c":"Title bitmap rows 15-17 ($52C0-$567F): the mothership's hull and its left cannon banks; the upper tip of the Vaus (blue and purple, at the right edge) begins","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21192,"t":"byte","b":[255,255,255,191,255,255,255,255]},{"a":21200,"t":"byte","b":[255,191,255,255,255,255,255,255]},{"a":21208,"t":"byte","b":[170,170,170,170,186,170,170,169]},{"a":21216,"t":"byte","b":[170,171,175,191,151,85,85,85]},{"a":21224,"t":"byte","b":[255,175,250,255,255,126,86,86]},{"a":21232,"t":"byte","b":[239,190,246,233,153,154,166,166]},{"a":21240,"t":"byte","b":[255,255,255,255,255,191,189,230]},{"a":21248,"t":"byte","b":[255,255,254,249,229,149,87,93]},{"a":21256,"t":"byte","b":[95,127,255,255,255,191,255,255]},{"a":21264,"t":"byte","b":[234,170,170,190,171,170,170,171]},{"a":21272,"t":"byte","b":[255,255,255,254,191,239,191,255]},{"a":21280,"t":"byte","b":[251,239,187,239,191,175,250,255]},{"a":21288,"t":"byte","b":[254,250,234,250,122,122,122,94]},{"a":21296,"t":"byte","b":[255,255,255,251,239,239,255,255]},{"a":21304,"t":"byte","b":[255,170,170,170,86,102,102,102]},{"a":21312,"t":"byte","b":[234,170,170,170,170,170,170,170]},{"a":21320,"t":"byte","b":[255,191,191,191,175,189,173,181]},{"a":21328,"t":"byte","b":[250,250,250,90,85,85,85,85]},{"a":21336,"t":"byte","b":[255,255,255,255,190,91,85,85]},{"a":21344,"t":"byte","b":[255,255,255,255,191,235,254,95]},{"a":21352,"t":"byte","b":[250,175,170,174,186,233,167,158]},{"a":21360,"t":"byte","b":[234,170,170,190,171,170,106,154]},{"a":21368,"t":"byte","b":[255,255,251,239,191,253,245,213]},{"a":21376,"t":"byte","b":[255,253,245,213,85,85,85,85]},{"a":21384,"t":"byte","b":[250,234,174,186,170,170,170,170]},{"a":21392,"t":"byte","b":[254,254,254,254,255,253,237,189]},{"a":21400,"t":"byte","b":[253,253,245,213,85,86,90,170]},{"a":21408,"t":"byte","b":[155,155,159,159,127,127,255,255]},{"a":21416,"t":"byte","b":[255,255,255,255,255,255,255,252]},{"a":21424,"t":"byte","b":[255,255,252,255,255,255,255,255]},{"a":21432,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21440,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21448,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21456,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21464,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21472,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21480,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21488,"t":"byte","b":[255,255,255,255,255,245,222,114]},{"a":21496,"t":"byte","b":[255,255,255,255,255,255,127,95]},{"a":21504,"t":"byte","b":[63,255,255,255,255,255,255,255]},{"a":21512,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":21520,"t":"byte","b":[85,85,86,86,86,86,87,95]},{"a":21528,"t":"byte","b":[170,170,169,165,149,85,87,93]},{"a":21536,"t":"byte","b":[223,85,86,89,101,149,85,87]},{"a":21544,"t":"byte","b":[255,255,95,87,95,127,255,251]},{"a":21552,"t":"byte","b":[169,169,235,237,245,245,245,245]},{"a":21560,"t":"byte","b":[229,149,87,85,150,170,170,170]},{"a":21568,"t":"byte","b":[101,149,95,127,255,255,255,255]},{"a":21576,"t":"byte","b":[85,213,253,255,215,119,109,169]},{"a":21584,"t":"byte","b":[93,117,95,149,169,170,170,170]},{"a":21592,"t":"byte","b":[85,87,93,245,95,149,169,170]},{"a":21600,"t":"byte","b":[213,85,85,87,93,245,85,213]},{"a":21608,"t":"byte","b":[87,85,213,85,125,87,85,85]},{"a":21616,"t":"byte","b":[255,255,95,85,117,213,85,87]},{"a":21624,"t":"byte","b":[254,170,175,85,85,86,149,85]},{"a":21632,"t":"byte","b":[255,234,165,85,85,215,125,85]},{"a":21640,"t":"byte","b":[213,85,85,101,150,85,85,86]},{"a":21648,"t":"byte","b":[85,85,85,85,215,125,85,85]},{"a":21656,"t":"byte","b":[87,93,117,213,85,86,90,107]},{"a":21664,"t":"byte","b":[85,87,95,126,250,234,170,170]},{"a":21672,"t":"byte","b":[229,153,85,85,86,85,165,90]},{"a":21680,"t":"byte","b":[251,254,255,255,255,125,215,255]},{"a":21688,"t":"byte","b":[255,255,255,191,175,171,170,106]},{"a":21696,"t":"byte","b":[255,255,255,255,255,255,255,191]},{"a":21704,"t":"byte","b":[254,251,247,247,247,247,247,247]},{"a":21712,"t":"byte","b":[253,253,253,253,253,253,253,253]},{"a":21720,"t":"byte","b":[95,127,246,213,86,90,106,170]},{"a":21728,"t":"byte","b":[254,170,106,105,153,154,154,150]},{"a":21736,"t":"byte","b":[191,175,175,175,175,127,127,255]},{"a":21744,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21752,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21760,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21768,"t":"byte","b":[254,255,255,255,255,255,255,255]},{"a":21776,"t":"byte","b":[255,255,255,255,255,255,251,63]},{"a":21784,"t":"byte","b":[255,255,255,255,187,98,75,91]},{"a":21792,"t":"byte","b":[255,255,255,255,255,254,186,234]},{"a":21800,"t":"byte","b":[254,250,233,165,150,199,245,189]},{"a":21808,"t":"byte","b":[201,217,181,111,218,182,227,122]},{"a":21816,"t":"byte","b":[155,91,203,235,171,175,175,191]},{"a":21824,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21832,"t":"byte","b":[170,170,170,170,170,171,175,189]},{"a":21840,"t":"byte","b":[213,214,214,214,90,105,165,149]},{"a":21848,"t":"byte","b":[239,94,85,87,87,215,215,247]},{"a":21856,"t":"byte","b":[95,127,253,245,218,233,237,253]},{"a":21864,"t":"byte","b":[219,91,95,127,251,219,91,111]},{"a":21872,"t":"byte","b":[250,250,250,250,251,251,251,251]},{"a":21880,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21888,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21896,"t":"byte","b":[105,105,107,215,255,255,255,255]},{"a":21904,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21912,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":21920,"t":"byte","b":[253,255,255,255,255,255,255,255]},{"a":21928,"t":"byte","b":[125,151,169,170,170,170,165,153]},{"a":21936,"t":"byte","b":[93,245,85,149,165,170,170,170]},{"a":21944,"t":"byte","b":[85,85,95,85,85,85,149,165]},{"a":21952,"t":"byte","b":[85,85,213,127,93,85,85,101]},{"a":21960,"t":"byte","b":[93,117,213,85,87,93,117,213]},{"a":21968,"t":"byte","b":[85,91,101,149,85,85,85,86]},{"a":21976,"t":"byte","b":[175,191,90,85,85,85,213,87]},{"a":21984,"t":"byte","b":[239,251,254,175,94,126,255,255]},{"a":21992,"t":"byte","b":[255,254,251,191,238,251,191,174]},{"a":22000,"t":"byte","b":[254,251,239,191,255,255,191,239]},{"a":22008,"t":"byte","b":[255,251,254,251,239,191,254,250]},{"a":22016,"t":"byte","b":[250,254,254,246,214,86,118,214]},{"a":22024,"t":"byte","b":[245,245,245,245,245,245,245,245]},{"a":22032,"t":"byte","b":[253,253,255,255,127,127,127,127]},{"a":22040,"t":"byte","b":[85,86,214,218,234,187,191,191]},{"a":22048,"t":"byte","b":[255,221,214,218,106,170,170,170]},{"a":22056,"t":"byte","b":[255,255,255,255,255,207,255,255]},{"a":22064,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22072,"t":"byte","b":[223,255,255,254,255,255,255,255]},{"a":22080,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22088,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22096,"t":"byte","b":[63,255,254,255,255,253,245,213]},{"a":22104,"t":"byte","b":[85,213,245,215,95,114,201,202]},{"a":22112,"t":"byte","b":[91,114,95,213,189,111,83,84]},{"a":22120,"t":"byte","b":[87,181,171,235,113,85,183,237]},{"a":22128,"t":"byte","b":[45,85,117,87,215,95,95,127]},{"a":22136,"t":"byte","b":[127,255,255,255,255,255,255,63]},{"a":22144,"l":"title_bitmap_rows_18_20","c":"Title bitmap rows 18-20 ($5680-$5A3F): the mothership's lower hull and cannons with their yellow muzzles; the body of the Vaus at the right","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22152,"t":"byte","b":[221,87,101,217,218,154,218,218]},{"a":22160,"t":"byte","b":[171,175,190,250,106,106,110,121]},{"a":22168,"t":"byte","b":[230,166,166,166,150,150,86,86]},{"a":22176,"t":"byte","b":[95,123,107,121,101,85,85,86]},{"a":22184,"t":"byte","b":[229,149,85,85,85,85,109,189]},{"a":22192,"t":"byte","b":[93,93,117,117,117,117,117,117]},{"a":22200,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":22208,"t":"byte","b":[85,85,85,85,85,87,94,127]},{"a":22216,"t":"byte","b":[85,85,95,127,255,255,255,255]},{"a":22224,"t":"byte","b":[85,85,245,255,255,255,251,239]},{"a":22232,"t":"byte","b":[85,85,85,85,245,255,255,255]},{"a":22240,"t":"byte","b":[85,85,85,85,85,85,245,229]},{"a":22248,"t":"byte","b":[121,106,122,122,122,95,85,85]},{"a":22256,"t":"byte","b":[213,213,149,149,87,87,85,85]},{"a":22264,"t":"byte","b":[127,190,235,254,254,249,229,85]},{"a":22272,"t":"byte","b":[235,174,186,234,126,87,85,85]},{"a":22280,"t":"byte","b":[235,254,255,255,255,127,87,86]},{"a":22288,"t":"byte","b":[251,175,255,254,249,233,154,154]},{"a":22296,"t":"byte","b":[250,234,154,154,166,166,105,105]},{"a":22304,"t":"byte","b":[255,255,255,255,255,254,251,238]},{"a":22312,"t":"byte","b":[239,219,247,231,167,167,166,166]},{"a":22320,"t":"byte","b":[238,186,171,175,190,251,239,223]},{"a":22328,"t":"byte","b":[235,170,170,234,170,171,174,186]},{"a":22336,"t":"byte","b":[253,253,253,253,189,253,253,253]},{"a":22344,"t":"byte","b":[245,245,245,245,245,245,247,255]},{"a":22352,"t":"byte","b":[95,93,85,94,126,254,254,254]},{"a":22360,"t":"byte","b":[111,191,255,255,255,255,255,255]},{"a":22368,"t":"byte","b":[170,170,42,170,170,170,170,170]},{"a":22376,"t":"byte","b":[255,255,63,255,255,255,255,255]},{"a":22384,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22392,"t":"byte","b":[191,255,255,255,255,255,251,255]},{"a":22400,"t":"byte","b":[255,255,255,255,255,255,253,245]},{"a":22408,"t":"byte","b":[255,253,253,245,215,87,119,201]},{"a":22416,"t":"byte","b":[93,123,115,254,37,37,201,250]},{"a":22424,"t":"byte","b":[242,127,222,247,189,79,83,82]},{"a":22432,"t":"byte","b":[150,175,235,143,253,213,213,213]},{"a":22440,"t":"byte","b":[187,111,90,87,74,46,171,127]},{"a":22448,"t":"byte","b":[127,127,223,223,223,223,223,95]},{"a":22456,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22464,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22472,"t":"byte","b":[183,159,165,170,171,175,181,149]},{"a":22480,"t":"byte","b":[101,213,95,255,254,251,238,186]},{"a":22488,"t":"byte","b":[87,87,87,215,215,247,247,247]},{"a":22496,"t":"byte","b":[87,91,123,111,127,119,87,91]},{"a":22504,"t":"byte","b":[87,111,191,247,231,103,167,175]},{"a":22512,"t":"byte","b":[101,101,101,101,101,101,101,101]},{"a":22520,"t":"byte","b":[85,85,85,85,85,85,87,89]},{"a":22528,"t":"byte","b":[245,255,255,255,175,90,86,90]},{"a":22536,"t":"byte","b":[250,175,90,85,85,85,117,95]},{"a":22544,"t":"byte","b":[213,85,85,85,245,255,255,255]},{"a":22552,"t":"byte","b":[85,85,87,95,126,250,239,239]},{"a":22560,"t":"byte","b":[229,165,165,229,165,165,229,229]},{"a":22568,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22576,"t":"byte","b":[255,255,254,254,254,254,253,245]},{"a":22584,"t":"byte","b":[255,255,253,245,213,85,86,89]},{"a":22592,"t":"byte","b":[223,85,86,89,101,149,85,87]},{"a":22600,"t":"byte","b":[255,255,95,87,95,127,255,251]},{"a":22608,"t":"byte","b":[251,251,126,126,95,94,90,90]},{"a":22616,"t":"byte","b":[239,238,250,234,170,170,171,174]},{"a":22624,"t":"byte","b":[255,255,255,251,239,191,255,255]},{"a":22632,"t":"byte","b":[251,251,251,251,251,251,251,251]},{"a":22640,"t":"byte","b":[239,237,247,223,127,255,255,255]},{"a":22648,"t":"byte","b":[234,234,234,234,234,234,234,234]},{"a":22656,"t":"byte","b":[254,254,254,254,254,254,254,254]},{"a":22664,"t":"byte","b":[255,253,247,255,255,255,255,254]},{"a":22672,"t":"byte","b":[254,254,254,254,250,234,170,170]},{"a":22680,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22688,"t":"byte","b":[255,255,255,255,254,253,249,249]},{"a":22696,"t":"byte","b":[255,255,255,255,175,75,30,62]},{"a":22704,"t":"byte","b":[255,255,255,255,255,255,254,250]},{"a":22712,"t":"byte","b":[255,255,254,250,235,173,183,253]},{"a":22720,"t":"byte","b":[234,175,191,180,157,93,87,121]},{"a":22728,"t":"byte","b":[235,186,126,223,55,173,171,234]},{"a":22736,"t":"byte","b":[189,239,123,94,215,241,188,239]},{"a":22744,"t":"byte","b":[154,171,253,253,85,213,215,213]},{"a":22752,"t":"byte","b":[174,170,186,170,234,170,170,171]},{"a":22760,"t":"byte","b":[170,170,170,170,191,255,255,255]},{"a":22768,"t":"byte","b":[175,175,191,255,255,255,255,255]},{"a":22776,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22784,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":22792,"t":"byte","b":[218,218,218,90,218,218,118,95]},{"a":22800,"t":"byte","b":[106,234,234,234,235,231,85,85]},{"a":22808,"t":"byte","b":[174,190,190,254,254,254,126,87]},{"a":22816,"t":"byte","b":[213,213,215,223,254,250,234,170]},{"a":22824,"t":"byte","b":[254,245,213,85,85,85,85,85]},{"a":22832,"t":"byte","b":[191,107,86,85,85,85,85,85]},{"a":22840,"t":"byte","b":[251,251,187,107,91,86,86,86]},{"a":22848,"t":"byte","b":[234,234,234,234,250,250,250,250]},{"a":22856,"t":"byte","b":[255,235,254,255,255,255,255,255]},{"a":22864,"t":"byte","b":[250,186,186,186,235,235,235,235]},{"a":22872,"t":"byte","b":[239,239,239,239,239,250,253,247]},{"a":22880,"t":"byte","b":[229,165,149,149,85,149,149,149]},{"a":22888,"t":"byte","b":[255,255,255,255,255,255,255,253]},{"a":22896,"t":"byte","b":[239,239,239,239,229,214,90,106]},{"a":22904,"t":"byte","b":[239,94,85,87,87,215,215,247]},{"a":22912,"t":"byte","b":[95,127,253,245,218,233,237,253]},{"a":22920,"t":"byte","b":[219,91,95,127,251,219,91,111]},{"a":22928,"t":"byte","b":[250,250,250,250,250,250,250,250]},{"a":22936,"t":"byte","b":[239,191,255,254,251,239,190,123]},{"a":22944,"t":"byte","b":[251,239,191,255,255,239,191,127]},{"a":22952,"t":"byte","b":[251,251,251,251,251,251,251,251]},{"a":22960,"t":"byte","b":[255,255,255,255,255,254,251,239]},{"a":22968,"t":"byte","b":[234,235,238,250,234,169,165,149]},{"a":22976,"t":"byte","b":[254,254,254,217,89,85,85,85]},{"a":22984,"t":"byte","b":[250,234,170,170,170,170,170,106]},{"a":22992,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23000,"t":"byte","b":[255,255,255,255,255,255,239,255]},{"a":23008,"t":"byte","b":[249,250,250,250,250,254,255,254]},{"a":23016,"t":"byte","b":[173,181,85,85,87,87,95,95]},{"a":23024,"t":"byte","b":[234,170,191,255,241,197,21,5]},{"a":23032,"t":"byte","b":[236,124,91,150,229,185,174,171]},{"a":23040,"t":"byte","b":[173,171,42,202,186,110,91,150]},{"a":23048,"t":"byte","b":[186,108,219,182,173,171,43,195]},{"a":23056,"t":"byte","b":[181,189,45,245,85,85,215,85]},{"a":23064,"t":"byte","b":[93,85,117,85,213,85,85,85]},{"a":23072,"t":"byte","b":[86,90,90,90,106,106,170,170]},{"a":23080,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23088,"t":"byte","b":[255,255,255,255,255,60,255,255]},{"a":23096,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23104,"l":"title_bitmap_rows_21_23","c":"Title bitmap rows 21-23 ($5A40-$5DFF): the mothership's lowest cannon pair and stern; the lower end of the Vaus at the right","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23112,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23120,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23128,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23136,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23144,"t":"byte","b":[255,255,255,255,255,255,255,252]},{"a":23152,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23160,"t":"byte","b":[171,171,170,170,170,170,170,170]},{"a":23168,"t":"byte","b":[87,87,87,167,170,170,170,170]},{"a":23176,"t":"byte","b":[85,85,85,85,85,245,255,255]},{"a":23184,"t":"byte","b":[215,87,95,95,95,95,95,175]},{"a":23192,"t":"byte","b":[239,255,255,255,255,245,213,85]},{"a":23200,"t":"byte","b":[85,85,85,85,213,189,171,170]},{"a":23208,"t":"byte","b":[95,87,101,217,154,154,218,218]},{"a":23216,"t":"byte","b":[171,175,190,250,106,106,110,121]},{"a":23224,"t":"byte","b":[230,166,166,166,150,150,86,86]},{"a":23232,"t":"byte","b":[95,123,107,121,101,85,85,86]},{"a":23240,"t":"byte","b":[229,149,85,85,85,85,109,189]},{"a":23248,"t":"byte","b":[95,95,95,95,95,95,95,95]},{"a":23256,"t":"byte","b":[118,102,102,102,102,106,106,106]},{"a":23264,"t":"byte","b":[127,127,127,255,255,247,223,127]},{"a":23272,"t":"byte","b":[247,247,247,247,247,246,246,246]},{"a":23280,"t":"byte","b":[127,254,250,234,170,170,170,170]},{"a":23288,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23296,"t":"byte","b":[255,255,255,255,255,255,191,255]},{"a":23304,"t":"byte","b":[255,255,255,255,255,255,255,243]},{"a":23312,"t":"byte","b":[255,190,239,251,127,255,207,253]},{"a":23320,"t":"byte","b":[255,255,255,239,247,255,255,191]},{"a":23328,"t":"byte","b":[254,254,254,254,254,254,255,115]},{"a":23336,"t":"byte","b":[223,119,117,93,87,87,85,85]},{"a":23344,"t":"byte","b":[194,242,252,126,95,95,215,117]},{"a":23352,"t":"byte","b":[170,170,170,42,138,226,248,254]},{"a":23360,"t":"byte","b":[229,185,174,171,170,170,170,35]},{"a":23368,"t":"byte","b":[179,125,85,149,245,245,215,213]},{"a":23376,"t":"byte","b":[93,85,117,85,213,85,85,85]},{"a":23384,"t":"byte","b":[85,87,87,87,95,95,127,127]},{"a":23392,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23400,"t":"byte","b":[255,255,255,191,255,255,255,255]},{"a":23408,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23416,"t":"byte","b":[255,255,255,255,255,255,255,63]},{"a":23424,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23432,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23440,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23448,"t":"byte","b":[255,255,255,255,239,255,251,255]},{"a":23456,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23464,"t":"byte","b":[252,255,255,255,255,255,255,235]},{"a":23472,"t":"byte","b":[255,255,255,255,255,255,255,239]},{"a":23480,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23488,"t":"byte","b":[255,255,255,255,255,255,63,255]},{"a":23496,"t":"byte","b":[255,255,255,255,255,255,191,255]},{"a":23504,"t":"byte","b":[255,255,255,255,159,255,255,255]},{"a":23512,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23520,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23528,"t":"byte","b":[183,159,165,170,171,175,181,149]},{"a":23536,"t":"byte","b":[101,213,95,255,254,251,238,186]},{"a":23544,"t":"byte","b":[87,87,87,215,215,247,247,247]},{"a":23552,"t":"byte","b":[254,246,230,218,234,238,254,246]},{"a":23560,"t":"byte","b":[169,181,213,89,121,185,249,245]},{"a":23568,"t":"byte","b":[250,250,250,250,250,250,250,250]},{"a":23576,"t":"byte","b":[235,238,250,170,170,170,170,171]},{"a":23584,"t":"byte","b":[255,255,255,253,249,237,189,253]},{"a":23592,"t":"byte","b":[249,213,85,85,85,85,85,85]},{"a":23600,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23608,"t":"byte","b":[63,255,255,255,255,255,255,255]},{"a":23616,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23624,"t":"byte","b":[255,254,255,191,255,247,255,255]},{"a":23632,"t":"byte","b":[255,255,207,255,255,188,255,255]},{"a":23640,"t":"byte","b":[255,223,255,251,255,255,255,255]},{"a":23648,"t":"byte","b":[255,255,255,255,255,63,255,255]},{"a":23656,"t":"byte","b":[213,213,245,245,189,255,255,255]},{"a":23664,"t":"byte","b":[117,93,87,87,85,85,85,149]},{"a":23672,"t":"byte","b":[191,175,171,171,234,186,186,174]},{"a":23680,"t":"byte","b":[139,239,253,253,245,85,87,85]},{"a":23688,"t":"byte","b":[174,170,186,170,234,170,170,170]},{"a":23696,"t":"byte","b":[170,170,170,171,171,175,175,191]},{"a":23704,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23712,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23720,"t":"byte","b":[255,63,255,255,255,255,255,255]},{"a":23728,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23736,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23744,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23752,"t":"byte","b":[255,255,255,255,255,255,255,243]},{"a":23760,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23768,"t":"byte","b":[255,255,255,255,255,255,239,255]},{"a":23776,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23784,"t":"byte","b":[255,239,251,255,255,255,255,255]},{"a":23792,"t":"byte","b":[255,191,255,255,255,255,255,255]},{"a":23800,"t":"byte","b":[255,255,207,255,255,255,255,255]},{"a":23808,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23816,"t":"byte","b":[255,255,255,251,254,255,255,63]},{"a":23824,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23832,"t":"byte","b":[255,191,255,255,255,255,255,255]},{"a":23840,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23848,"t":"byte","b":[159,159,159,95,159,159,103,90]},{"a":23856,"t":"byte","b":[234,106,106,106,105,109,255,255]},{"a":23864,"t":"byte","b":[174,190,190,254,254,254,126,85]},{"a":23872,"t":"byte","b":[213,213,215,223,255,234,170,170]},{"a":23880,"t":"byte","b":[106,170,170,170,191,255,255,255]},{"a":23888,"t":"byte","b":[250,250,234,235,127,127,127,95]},{"a":23896,"t":"byte","b":[251,239,191,239,239,239,251,187]},{"a":23904,"t":"byte","b":[254,254,255,255,255,255,254,250]},{"a":23912,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23920,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23928,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23936,"t":"byte","b":[255,255,255,63,255,255,255,255]},{"a":23944,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23952,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":23960,"t":"byte","b":[255,255,254,255,255,255,255,255]},{"a":23968,"t":"byte","b":[255,255,255,255,255,251,255,255]},{"a":23976,"t":"byte","b":[239,255,255,255,255,255,239,255]},{"a":23984,"t":"byte","b":[245,245,253,255,255,255,254,191]},{"a":23992,"t":"byte","b":[174,171,170,170,170,234,234,250]},{"a":24000,"t":"byte","b":[174,170,250,170,170,170,170,170]},{"a":24008,"t":"byte","b":[170,170,170,170,171,171,175,175]},{"a":24016,"t":"byte","b":[191,191,255,255,255,253,63,255]},{"a":24024,"t":"byte","b":[255,255,255,255,255,85,243,243]},{"a":24032,"t":"byte","b":[255,255,255,255,255,85,255,255]},{"a":24040,"t":"byte","b":[255,255,255,243,255,85,255,255]},{"a":24048,"t":"byte","b":[255,255,255,255,255,85,255,255]},{"a":24056,"t":"byte","b":[255,255,255,255,255,87,255,255]},{"a":24064,"l":"title_bitmap_row_24","c":"Title bitmap row 24, the last ($5E00-$5F3F): starfield and the artist's signature \"Jones\" in white at the bottom right","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24072,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24080,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24088,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24096,"t":"byte","b":[255,255,251,255,255,255,255,255]},{"a":24104,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24112,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24120,"t":"byte","b":[255,255,255,63,255,255,255,255]},{"a":24128,"t":"byte","b":[255,255,255,254,255,255,255,255]},{"a":24136,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24144,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24152,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24160,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24168,"t":"byte","b":[255,255,255,63,255,255,255,255]},{"a":24176,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24184,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24192,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24200,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24208,"t":"byte","b":[245,253,253,255,255,255,255,255]},{"a":24216,"t":"byte","b":[119,119,126,106,170,170,170,170]},{"a":24224,"t":"byte","b":[234,170,170,170,170,170,170,170]},{"a":24232,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24240,"t":"byte","b":[255,255,255,243,255,255,255,255]},{"a":24248,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24256,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24264,"t":"byte","b":[255,255,255,255,254,255,254,255]},{"a":24272,"t":"byte","b":[255,255,255,255,251,255,255,255]},{"a":24280,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24288,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24296,"t":"byte","b":[255,255,255,255,251,255,255,255]},{"a":24304,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24312,"t":"byte","b":[171,170,170,170,170,170,170,170]},{"a":24320,"t":"byte","b":[85,85,85,213,213,247,255,255]},{"a":24328,"t":"byte","b":[95,127,127,255,255,255,255,255]},{"a":24336,"t":"byte","b":[255,255,255,251,255,255,252,255]},{"a":24344,"t":"byte","b":[179,243,251,247,247,243,3,255]},{"a":24352,"t":"byte","b":[3,51,187,119,119,51,3,255]},{"a":24360,"t":"byte","b":[3,51,187,119,119,51,51,255]},{"a":24368,"t":"byte","b":[3,51,187,87,127,63,3,255]},{"a":24376,"t":"byte","b":[3,63,191,87,247,243,3,255]},{"a":24384,"l":"protection_area","c":"Start of the self-erasing protection area $5F40-$5F86, which the loop at $5F86 fills with $01 when the check passes, so after start-up every byte here reads $01. These two bytes ($44 $45, an undocumented NOP $45) never run: the routine is entered at $5F42 from $B9DE","t":"byte","b":[68,69],"x":[24456]},{"a":24386,"l":"protection_serial_check","c":"Copy protection, called once from the start-up at $B9DE. Writes 1 to CIA 1 timer A low ($DC04), control $D9 to $DC0E, calls $A949 (decrypts $BA0A-$BA6A by XOR with $A71A-$A77A), then writes A to the serial data register $DC0C and loops: restart the timer ($DC0E = $D9), wait for the timer A bit (bit 0) in $DC0D, keep the whole interrupt register in $BA65, and start again unless the serial-port bit (bit 3) is also set. On a machine whose serial port never completes, this hangs. Then it waits three more timer underflows ($5F72), writes $DC0C again, and overwrites $5F40-$5F86 (itself, up to the STA $DC0C) with $01 (A = 1 from the AND #$01). Returns with X = $FF. Undocumented NOPs at $5F44 and $5F4E pad it to mislead a disassembler","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[47582]},{"a":24388,"l":"undoc_nop_5f44","c":"$44 $6D: the undocumented NOP $6D (zero page), two bytes that do nothing; the disassembler cannot decode it. Part of the protection routine $5F42, before STA $DC04.","t":"byte","b":[68,109]},{"a":24390,"l":"protection_start_timer","c":"protection_serial_check, continued after the undocumented NOP at $5F44: STA $DC04 (timer A low = 1), LDA #$D9 / STA $DC0E (start timer A, serial port as output)","t":"code","b":[141,4,220],"m":"sta","o":"cia1_timer_a_lo"},{"a":24393,"t":"code","b":[169,217],"m":"lda","o":"#$D9"},{"a":24395,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":24398,"l":"undoc_nop_5f4e","c":"$1C $AD $08: the undocumented NOP $08AD,X, three bytes that read memory and do nothing; it hides the JSR $A949 that follows from a decoder that knows only the documented set. Part of the protection routine $5F42.","t":"byte","b":[28,173,8]},{"a":24401,"l":"protection_decrypt_and_send","c":"protection_serial_check, continued after the undocumented NOP at $5F4E: JSR $A949 (decrypt $BA0A-$BA6A), then STA $DC0C sends a byte out of CIA 1's serial port; the wait loop at $5F57 follows","t":"code","b":[32,73,169],"m":"jsr","oa":43337,"o":"decrypt_ba0a"},{"a":24404,"t":"code","b":[141,12,220],"m":"sta","o":"cia1_serial"},{"a":24407,"l":"b_5F57","c":"serial-port wait loop: restart timer A, poll $DC0D, store it in $BA65 (read back by $5F66 and later code)","t":"code","b":[169,217],"m":"lda","o":"#$D9","x":[24429]},{"a":24409,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":24412,"l":"b_5F5C","t":"code","b":[173,13,220],"m":"lda","o":"cia1_interrupt","x":[24420]},{"a":24415,"t":"code","b":[141,101,186],"m":"sta","oa":47717,"o":"protection_status"},{"a":24418,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":24420,"t":"code","b":[240,246],"m":"beq","oa":24412,"o":"b_5F5C"},{"a":24422,"t":"code","b":[173,101,186],"m":"lda","oa":47717,"o":"protection_status"},{"a":24425,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":24427,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":24429,"t":"code","b":[208,232],"m":"bne","oa":24407,"o":"b_5F57"},{"a":24431,"t":"code","b":[141,12,220],"m":"sta","o":"cia1_serial"},{"a":24434,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":24436,"l":"b_5F74","t":"code","b":[169,217],"m":"lda","o":"#$D9","x":[24449]},{"a":24438,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":24441,"l":"b_5F79","t":"code","b":[173,13,220],"m":"lda","o":"cia1_interrupt","x":[24446]},{"a":24444,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":24446,"t":"code","b":[240,249],"m":"beq","oa":24441,"o":"b_5F79"},{"a":24448,"t":"code","b":[202],"m":"dex"},{"a":24449,"t":"code","b":[16,241],"m":"bpl","oa":24436,"o":"b_5F74"},{"a":24451,"t":"code","b":[141,12,220],"m":"sta","o":"cia1_serial"},{"a":24454,"c":"self-erase: X = $46 down to 0 stores A ($01) at $5F40-$5F86; the loop itself ($5F88-$5F8E) survives","t":"code","b":[162,70],"m":"ldx","o":"#$46"},{"a":24456,"l":"b_5F88","t":"code","b":[157,64,95],"m":"sta","oa":24384,"o":"protection_area,x","x":[24460]},{"a":24459,"t":"code","b":[202],"m":"dex"},{"a":24460,"t":"code","b":[16,250],"m":"bpl","oa":24456,"o":"b_5F88"},{"a":24462,"t":"code","b":[96],"m":"rts"},{"a":24463,"l":"stale_matrix_copy_5f8f","c":"113 bytes equal, byte for byte, to the title colour matrix at $604F-$60BF: $5F40-$5FFF lies $C0 below $6000-$60BF and once held the same bytes; the protection routine at $5F40-$5F8E was written over the first 79. No code found that reads $5F8F-$5FFF (simulator read map, opcodes.py --refs); a leftover of how the image was built","t":"byte","b":[0,14,14,62,14,14,6,6]},{"a":24471,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":24479,"t":"byte","b":[6,6,6,6,6,0,6,6]},{"a":24487,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":24495,"t":"byte","b":[6,7,7,7,7,0,0,0]},{"a":24503,"t":"byte","b":[0,0,3,3,0,6,0,6]},{"a":24511,"t":"byte","b":[6,96,96,96,96,6,106,106]},{"a":24519,"t":"byte","b":[246,106,106,96,96,96,246,246]},{"a":24527,"t":"byte","b":[106,106,106,96,96,106,106,96]},{"a":24535,"t":"byte","b":[106,231,247,247,247,254,255,247]},{"a":24543,"t":"byte","b":[255,255,243,255,96,160,160,160]},{"a":24551,"t":"byte","b":[160,96,96,160,96,96,160,160]},{"a":24559,"t":"byte","b":[160,224,96,14,224,160,96,246]},{"a":24567,"t":"byte","b":[106,160,10,160,96,96,106,106]},{"a":24575,"t":"byte","b":[106]},{"a":24576,"l":"title_colour_matrix","c":"Title picture colour matrix (the video matrix of bank 1 at $6000, $D018 = $80 from $B48C): 1000 bytes, one per cell, 40 x 25; high nibble = colour of pixel pair 01, low nibble = colour of pair 10 in the bitmap at $4000. High nibbles mostly $0 (black) and $F (light grey), low nibbles mostly $0, $6 (blue) and $F. Read only by the video chip","t":"byte","b":[254,255,254,255,255,255,246,243]},{"a":24584,"t":"byte","b":[255,246,243,255,254,255,246,246]},{"a":24592,"t":"byte","b":[254,255,254,255,255,255,255,255]},{"a":24600,"t":"byte","b":[255,255,246,255,6,255,247,247]},{"a":24608,"t":"byte","b":[247,247,247,247,247,255,255,255]},{"a":24616,"t":"byte","b":[254,62,255,255,255,106,96,96]},{"a":24624,"t":"byte","b":[96,96,246,255,243,255,96,106]},{"a":24632,"t":"byte","b":[254,255,96,246,246,246,246,96]},{"a":24640,"t":"byte","b":[6,6,6,6,6,6,7,7]},{"a":24648,"t":"byte","b":[7,7,7,126,7,0,0,0]},{"a":24656,"t":"byte","b":[14,14,62,14,14,6,6,6]},{"a":24664,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":24672,"t":"byte","b":[6,6,6,6,0,6,6,6]},{"a":24680,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":24688,"t":"byte","b":[7,7,7,7,0,0,0,0]},{"a":24696,"t":"byte","b":[0,3,3,0,6,0,6,6]},{"a":24704,"t":"byte","b":[96,96,96,96,6,106,106,246]},{"a":24712,"t":"byte","b":[106,106,96,96,96,246,246,106]},{"a":24720,"t":"byte","b":[106,106,96,96,106,106,96,106]},{"a":24728,"t":"byte","b":[231,247,247,247,254,255,247,255]},{"a":24736,"t":"byte","b":[255,243,255,96,160,160,160,160]},{"a":24744,"t":"byte","b":[96,96,160,96,96,160,160,160]},{"a":24752,"t":"byte","b":[224,96,14,224,160,96,246,106]},{"a":24760,"t":"byte","b":[160,10,160,96,96,106,106,106]},{"a":24768,"t":"byte","b":[0,14,14,3,0,0,14,0]},{"a":24776,"t":"byte","b":[0,0,6,6,6,6,6,10]},{"a":24784,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":24792,"t":"byte","b":[10,106,10,110,6,6,6,6]},{"a":24800,"t":"byte","b":[6,6,6,6,10,6,6,14]},{"a":24808,"t":"byte","b":[14,0,14,14,14,0,0,0]},{"a":24816,"t":"byte","b":[0,0,6,6,6,6,10,110]},{"a":24824,"t":"byte","b":[10,6,6,10,6,38,6,6]},{"a":24832,"t":"byte","b":[174,234,230,234,230,246,174,246]},{"a":24840,"t":"byte","b":[246,246,160,106,174,106,246,243]},{"a":24848,"t":"byte","b":[62,255,254,255,255,255,255,255]},{"a":24856,"t":"byte","b":[255,255,255,246,246,246,246,246]},{"a":24864,"t":"byte","b":[246,246,246,246,246,246,198,246]},{"a":24872,"t":"byte","b":[246,246,246,246,246,246,246,246]},{"a":24880,"t":"byte","b":[246,246,246,246,246,246,58,211]},{"a":24888,"t":"byte","b":[62,255,255,255,250,255,255,255]},{"a":24896,"t":"byte","b":[0,0,14,0,0,6,6,6]},{"a":24904,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":24912,"t":"byte","b":[6,6,14,6,6,0,0,6]},{"a":24920,"t":"byte","b":[6,6,0,6,6,6,14,174]},{"a":24928,"t":"byte","b":[173,62,3,0,0,0,0,0]},{"a":24936,"t":"byte","b":[0,0,0,0,6,0,0,14]},{"a":24944,"t":"byte","b":[0,0,0,6,0,6,0,0]},{"a":24952,"t":"byte","b":[0,0,0,0,0,0,8,0]},{"a":24960,"t":"byte","b":[255,255,255,246,255,255,255,255]},{"a":24968,"t":"byte","b":[254,243,243,254,255,255,255,254]},{"a":24976,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":24984,"t":"byte","b":[255,255,253,255,255,253,255,255]},{"a":24992,"t":"byte","b":[255,255,255,255,255,255,252,188]},{"a":25000,"t":"byte","b":[188,255,253,255,255,255,255,255]},{"a":25008,"t":"byte","b":[255,255,254,62,243,255,255,255]},{"a":25016,"t":"byte","b":[255,254,255,255,255,255,255,255]},{"a":25024,"t":"byte","b":[0,0,246,246,246,6,6,12]},{"a":25032,"t":"byte","b":[188,252,252,12,12,108,192,12]},{"a":25040,"t":"byte","b":[96,176,0,0,0,0,0,14]},{"a":25048,"t":"byte","b":[14,0,0,0,14,0,0,0]},{"a":25056,"t":"byte","b":[0,14,0,0,3,0,13,0]},{"a":25064,"t":"byte","b":[3,0,6,6,6,6,6,12]},{"a":25072,"t":"byte","b":[11,96,108,107,107,108,11,11]},{"a":25080,"t":"byte","b":[192,176,0,8,0,104,8,8]},{"a":25088,"t":"byte","b":[255,255,254,255,254,255,255,255]},{"a":25096,"t":"byte","b":[255,231,126,255,255,255,254,243]},{"a":25104,"t":"byte","b":[243,246,198,188,188,176,251,251]},{"a":25112,"t":"byte","b":[251,11,96,11,11,11,107,176]},{"a":25120,"t":"byte","b":[188,108,246,255,252,252,255,255]},{"a":25128,"t":"byte","b":[255,255,255,255,255,255,254,255]},{"a":25136,"t":"byte","b":[254,254,254,62,211,255,246,252]},{"a":25144,"t":"byte","b":[6,11,251,240,251,251,246,246]},{"a":25152,"t":"byte","b":[188,192,11,107,108,11,176,188]},{"a":25160,"t":"byte","b":[176,176,203,246,192,203,0,0]},{"a":25168,"t":"byte","b":[0,0,14,0,0,0,14,0]},{"a":25176,"t":"byte","b":[0,14,14,6,6,12,188,11]},{"a":25184,"t":"byte","b":[240,12,111,108,12,252,107,188]},{"a":25192,"t":"byte","b":[108,252,252,251,251,12,252,11]},{"a":25200,"t":"byte","b":[6,107,12,176,11,12,0,0]},{"a":25208,"t":"byte","b":[0,0,0,0,0,0,14,0]},{"a":25216,"t":"byte","b":[240,246,107,240,252,251,188,240]},{"a":25224,"t":"byte","b":[252,247,240,240,247,246,246,252]},{"a":25232,"t":"byte","b":[251,252,246,251,252,203,176,188]},{"a":25240,"t":"byte","b":[108,12,12,12,188,12,255,255]},{"a":25248,"t":"byte","b":[255,254,254,14,240,224,224,224]},{"a":25256,"t":"byte","b":[240,246,12,12,252,203,107,246]},{"a":25264,"t":"byte","b":[246,183,246,246,248,240,240,240]},{"a":25272,"t":"byte","b":[251,246,252,251,251,107,107,107]},{"a":25280,"t":"byte","b":[176,6,12,203,6,11,0,211]},{"a":25288,"t":"byte","b":[0,0,14,14,14,14,14,14]},{"a":25296,"t":"byte","b":[11,7,11,11,12,12,15,0]},{"a":25304,"t":"byte","b":[12,6,12,6,11,7,11,11]},{"a":25312,"t":"byte","b":[15,12,188,188,107,11,12,107]},{"a":25320,"t":"byte","b":[12,6,6,176,6,0,0,14]},{"a":25328,"t":"byte","b":[0,14,14,14,14,14,0,14]},{"a":25336,"t":"byte","b":[0,6,11,12,15,188,11,11]},{"a":25344,"t":"byte","b":[251,15,246,252,11,246,251,252]},{"a":25352,"t":"byte","b":[252,251,11,107,108,96,192,107]},{"a":25360,"t":"byte","b":[96,198,246,255,224,224,240,224]},{"a":25368,"t":"byte","b":[224,14,224,14,240,240,240,254]},{"a":25376,"t":"byte","b":[255,7,107,107,246,107,107,107]},{"a":25384,"t":"byte","b":[107,107,96,192,11,246,203,12]},{"a":25392,"t":"byte","b":[252,203,107,12,12,96,96,107]},{"a":25400,"t":"byte","b":[96,118,255,243,224,14,224,14]},{"a":25408,"t":"byte","b":[14,14,14,0,6,0,0,14]},{"a":25416,"t":"byte","b":[0,0,0,0,0,0,0,6]},{"a":25424,"t":"byte","b":[6,0,6,108,6,7,11,11]},{"a":25432,"t":"byte","b":[12,12,6,11,6,6,6,0]},{"a":25440,"t":"byte","b":[14,0,62,62,48,0,14,14]},{"a":25448,"t":"byte","b":[14,14,0,0,0,10,0,14]},{"a":25456,"t":"byte","b":[0,0,0,14,0,14,7,0]},{"a":25464,"t":"byte","b":[0,14,222,0,0,6,11,12]},{"a":25472,"t":"byte","b":[252,11,107,107,96,96,255,255]},{"a":25480,"t":"byte","b":[255,125,254,62,255,3,7,240]},{"a":25488,"t":"byte","b":[14,240,240,255,255,255,255,254]},{"a":25496,"t":"byte","b":[255,255,255,254,255,243,243,255]},{"a":25504,"t":"byte","b":[255,254,255,247,255,12,11,107]},{"a":25512,"t":"byte","b":[246,192,107,96,246,255,255,255]},{"a":25520,"t":"byte","b":[255,255,255,243,254,243,3,240]},{"a":25528,"t":"byte","b":[240,240,240,255,255,255,255,254]},{"a":25536,"t":"byte","b":[0,0,0,0,14,0,0,0]},{"a":25544,"t":"byte","b":[7,0,0,0,0,0,0,0]},{"a":25552,"t":"byte","b":[0,0,0,6,6,0,0,0]},{"a":25560,"t":"byte","b":[0,12,14,0,0,13,0,86]},{"a":25568,"t":"byte","b":[5,0,14,206,207,207,207,207]},{"a":25576,"l":"title_matrix_spare","c":"16 bytes after the colour matrix, before the sprite pointers: not displayed and not read by any code found. Together with $63F8-$63FA they equal $6400-$6412, the start of the colour-RAM source, as loaded","t":"byte","b":[102,86,214,6,246,86,250,102]},{"a":25584,"t":"byte","b":[102,90,182,6,246,246,250,106]},{"a":25592,"l":"title_sprite_pointers","c":"Sprite pointers of video bank 1 (matrix $6000 + $3F8), one per sprite 0-7; value v shows the 64 bytes at $4000 + 64v. Used while the title is the background of the intro animation: $08CC writes $63 into the operand high bytes $FC17 and $F976 of the multiplexer stores STA $C3FA,Y at $FC15 and $F974, which then fill $63FB-$63FF (sprites 3-7) from the table $F825 (simulator: values $A0-$D5, the frames at $6800-$757F, and $40 four times). $F07D puts $C3 back for play (pointers at $C3F8). As loaded they hold $56 $D6 $06 $A0 $A1 $D5 $D5 $D5: the file was saved with sprites 3 and 4 on frames $A0/$A1 and 5-7 on the blank frame $D5","t":"byte","b":[86,214,6,160,161,213,213,213]},{"a":25600,"l":"title_colour_ram_rows_0_6","c":"Title colour-RAM source, 1024 bytes, copied page by page to $D800-$DBFF by $B499-$B4B4 when the title is shown; only the low nibble reaches colour RAM, the colour of pixel pair 11 in each cell. This page: cells 0-255 (rows 0 to 6, column 15): the logo's orange-red outline ($A) on blue ($6)","t":"byte","b":[102,86,214,6,246,86,250,102],"x":[46235]},{"a":25608,"t":"byte","b":[102,90,182,6,246,246,250,106]},{"a":25616,"t":"byte","b":[86,214,6,246,246,6,102,86]},{"a":25624,"t":"byte","b":[86,6,218,246,10,102,166,86]},{"a":25632,"t":"byte","b":[6,6,246,246,246,102,134,246]},{"a":25640,"t":"byte","b":[6,246,246,246,102,160,250,10]},{"a":25648,"t":"byte","b":[250,250,250,102,166,246,10,240]},{"a":25656,"t":"byte","b":[246,246,106,106,0,0,0,10]},{"a":25664,"t":"byte","b":[10,10,106,10,10,10,6,6]},{"a":25672,"t":"byte","b":[6,102,6,6,6,6,6,6]},{"a":25680,"t":"byte","b":[102,6,6,6,6,10,10,106]},{"a":25688,"t":"byte","b":[10,10,10,10,10,10,106,10]},{"a":25696,"t":"byte","b":[10,10,10,10,6,106,10,10]},{"a":25704,"t":"byte","b":[10,10,10,10,106,10,7,7]},{"a":25712,"t":"byte","b":[6,6,6,102,6,6,6,6]},{"a":25720,"t":"byte","b":[6,6,102,6,10,6,10,10]},{"a":25728,"t":"byte","b":[10,106,10,10,10,0,0,0]},{"a":25736,"t":"byte","b":[96,0,10,10,10,10,0,96]},{"a":25744,"t":"byte","b":[0,0,10,10,0,0,106,7]},{"a":25752,"t":"byte","b":[6,6,6,6,6,102,6,6]},{"a":25760,"t":"byte","b":[6,6,6,14,110,14,14,14]},{"a":25768,"t":"byte","b":[10,14,14,106,14,14,14,14]},{"a":25776,"t":"byte","b":[6,10,106,10,14,10,0,0]},{"a":25784,"t":"byte","b":[14,110,14,14,10,3,0,0]},{"a":25792,"t":"byte","b":[102,6,6,6,6,6,6,102]},{"a":25800,"t":"byte","b":[6,6,10,10,10,10,106,6]},{"a":25808,"t":"byte","b":[10,10,10,10,10,106,10,10]},{"a":25816,"t":"byte","b":[6,14,6,10,106,10,10,10]},{"a":25824,"t":"byte","b":[10,10,10,106,6,14,10,6]},{"a":25832,"t":"byte","b":[6,6,102,6,6,6,6,6]},{"a":25840,"t":"byte","b":[6,102,10,10,10,10,6,10]},{"a":25848,"t":"byte","b":[102,10,250,86,250,106,122,170]},{"a":25856,"l":"title_colour_ram_rows_6_12","c":"Title colour-RAM source, cells 256-511 (row 6 column 16 to row 12 column 31), to $D900: the logo's lower edge and the top of the mothership","t":"byte","b":[6,246,170,246,106,234,182,106],"x":[46241]},{"a":25864,"t":"byte","b":[250,170,102,254,166,254,3,102]},{"a":25872,"t":"byte","b":[166,246,102,246,214,102,246,246]},{"a":25880,"t":"byte","b":[246,6,246,122,10,122,186,3]},{"a":25888,"t":"byte","b":[250,90,10,10,250,186,106,10]},{"a":25896,"t":"byte","b":[250,243,10,250,83,10,10,170]},{"a":25904,"t":"byte","b":[250,106,250,250,106,254,182,6]},{"a":25912,"t":"byte","b":[246,182,246,6,166,246,6,102]},{"a":25920,"t":"byte","b":[246,246,6,246,246,250,10,250]},{"a":25928,"t":"byte","b":[250,10,243,250,10,250,254,250]},{"a":25936,"t":"byte","b":[250,106,166,250,106,246,246,10]},{"a":25944,"t":"byte","b":[186,250,246,10,250,250,6,246]},{"a":25952,"t":"byte","b":[166,6,246,246,246,102,6,246]},{"a":25960,"t":"byte","b":[166,6,246,166,15,246,166,246]},{"a":25968,"t":"byte","b":[102,166,166,106,246,170,102,246]},{"a":25976,"t":"byte","b":[246,246,6,166,166,6,102,102]},{"a":25984,"t":"byte","b":[166,102,246,170,6,6,166,166]},{"a":25992,"t":"byte","b":[6,246,182,6,246,166,6,102]},{"a":26000,"t":"byte","b":[166,246,102,166,166,102,6,246]},{"a":26008,"t":"byte","b":[246,6,102,246,6,102,86,166]},{"a":26016,"t":"byte","b":[102,246,246,6,6,6,198,6]},{"a":26024,"t":"byte","b":[246,198,6,246,6,118,6,6]},{"a":26032,"t":"byte","b":[6,6,6,246,198,6,246,6]},{"a":26040,"t":"byte","b":[6,6,6,166,102,6,54,102]},{"a":26048,"t":"byte","b":[246,6,60,252,12,252,12,102]},{"a":26056,"t":"byte","b":[6,214,96,182,246,11,251,171]},{"a":26064,"t":"byte","b":[251,6,246,246,6,246,166,6]},{"a":26072,"t":"byte","b":[230,230,246,102,102,102,102,6]},{"a":26080,"t":"byte","b":[118,246,6,246,214,246,102,230]},{"a":26088,"t":"byte","b":[214,102,83,172,108,252,236,11]},{"a":26096,"t":"byte","b":[12,252,80,12,12,11,12,12]},{"a":26104,"t":"byte","b":[11,6,6,6,6,8,6,6]},{"a":26112,"l":"title_colour_ram_rows_12_19","c":"Title colour-RAM source, cells 512-767 (row 12 column 32 to row 19 column 7), to $DA00: the mothership's hull ($C, $B, $F greys) and the top of the Vaus","t":"byte","b":[6,6,6,6,6,6,6,6],"x":[46247]},{"a":26120,"t":"byte","b":[6,6,6,6,102,6,6,102]},{"a":26128,"t":"byte","b":[6,12,208,0,0,12,12,12]},{"a":26136,"t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":26144,"t":"byte","b":[111,255,240,102,166,246,102,54]},{"a":26152,"t":"byte","b":[246,118,6,246,246,6,246,246]},{"a":26160,"t":"byte","b":[6,182,246,86,102,246,252,102]},{"a":26168,"t":"byte","b":[12,188,252,12,240,252,12,108]},{"a":26176,"t":"byte","b":[255,251,108,252,251,108,252,208]},{"a":26184,"t":"byte","b":[12,12,240,252,11,246,246,6]},{"a":26192,"t":"byte","b":[102,246,246,6,6,246,246,6]},{"a":26200,"t":"byte","b":[54,246,6,163,223,15,15,92]},{"a":26208,"t":"byte","b":[252,111,252,255,111,171,220,255]},{"a":26216,"t":"byte","b":[255,11,251,252,108,251,171,108]},{"a":26224,"t":"byte","b":[252,108,251,252,246,246,6,246]},{"a":26232,"t":"byte","b":[166,6,166,102,6,246,102,246]},{"a":26240,"t":"byte","b":[102,0,255,92,0,80,240,12]},{"a":26248,"t":"byte","b":[48,224,252,108,172,92,108,155]},{"a":26256,"t":"byte","b":[156,107,252,252,11,0,252,240]},{"a":26264,"t":"byte","b":[0,107,251,230,102,246,86,6]},{"a":26272,"t":"byte","b":[6,246,102,6,246,118,6,166]},{"a":26280,"t":"byte","b":[86,0,102,235,112,96,240,80]},{"a":26288,"t":"byte","b":[96,0,208,80,112,108,172,92]},{"a":26296,"t":"byte","b":[108,252,251,108,188,124,252,12]},{"a":26304,"t":"byte","b":[172,171,11,32,91,6,118,182]},{"a":26312,"t":"byte","b":[182,6,6,230,246,6,166,246]},{"a":26320,"t":"byte","b":[6,252,92,12,15,235,91,102]},{"a":26328,"t":"byte","b":[223,255,111,255,95,11,255,255]},{"a":26336,"t":"byte","b":[171,15,111,175,252,108,251,92]},{"a":26344,"t":"byte","b":[11,171,235,166,11,246,102,6]},{"a":26352,"t":"byte","b":[6,6,6,6,6,102,6,6]},{"a":26360,"t":"byte","b":[6,12,12,11,108,0,15,15]},{"a":26368,"l":"title_colour_ram_rows_19_24","c":"Title colour-RAM source, cells 768-999 (row 19 column 8 to the end) to $DB00-$DBE7, then 24 bytes $67E8-$67FF that the same loop copies to the unused colour RAM $DBE8-$DBFF","t":"byte","b":[0,11,0,11,12,0,0,0],"x":[46253]},{"a":26376,"t":"byte","b":[0,0,12,12,251,107,11,0]},{"a":26384,"t":"byte","b":[107,11,11,102,6,6,246,6]},{"a":26392,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":26400,"t":"byte","b":[246,12,0,0,96,0,0,96]},{"a":26408,"t":"byte","b":[0,0,251,11,12,0,0,11]},{"a":26416,"t":"byte","b":[0,0,0,11,11,11,11,0]},{"a":26424,"t":"byte","b":[107,11,6,102,6,6,102,6]},{"a":26432,"t":"byte","b":[6,6,6,6,15,6,6,6]},{"a":26440,"t":"byte","b":[6,6,6,6,102,6,6,107]},{"a":26448,"t":"byte","b":[11,6,107,11,11,12,12,12]},{"a":26456,"t":"byte","b":[15,11,11,12,11,11,11,6]},{"a":26464,"t":"byte","b":[6,6,6,102,6,6,102,6]},{"a":26472,"t":"byte","b":[6,86,6,6,6,6,6,6]},{"a":26480,"t":"byte","b":[6,6,6,6,6,6,6,102]},{"a":26488,"t":"byte","b":[6,6,102,6,6,108,12,11]},{"a":26496,"t":"byte","b":[240,12,0,0,11,11,6,6]},{"a":26504,"t":"byte","b":[6,6,246,102,6,6,102,6]},{"a":26512,"t":"byte","b":[6,102,6,6,246,6,6,6]},{"a":26520,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":26528,"t":"byte","b":[6,6,102,6,6,103,6,0]},{"a":26536,"t":"byte","b":[0,6,0,11,11,6,6,6]},{"a":26544,"t":"byte","b":[6,6,6,6,6,6,102,6]},{"a":26552,"t":"byte","b":[6,102,6,6,102,6,6,6]},{"a":26560,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":26568,"t":"byte","b":[6,246,102,6,6,102,6,6]},{"a":26576,"t":"byte","b":[102,6,6,251,11,6,6,6]},{"a":26584,"t":"byte","b":[6,6,6,6,6,246,6,0]},{"a":26592,"t":"byte","b":[6,102,6,6,102,6,6,246]},{"a":26600,"t":"byte","b":[1,11,203,198,198,198,198,198]},{"a":26608,"t":"byte","b":[198,198,198,6,102,198,198,102]},{"a":26616,"t":"byte","b":[198,204,96,192,192,0,192,192]},{"a":26624,"l":"intro_sprites_puff","c":"Sprite frames of video bank 1, 64 bytes each, frame v at $4000 + 64v; multicolour. $A0 and $A1 ($6800-$687F) are the left and right halves of one white-and-cyan puff, a cloud or blast 48 pixels wide. Shown only through sprite pointers (the title's $63F8-$63FF, filled from the table $F825 by $FC15/$F974); no instruction reads these bytes","t":"byte","b":[192,0,0,2,10,0,10,42]},{"a":26632,"t":"byte","b":[8,10,42,138,42,170,170,42]},{"a":26640,"t":"byte","b":[165,106,42,90,150,9,170,169]},{"a":26648,"t":"byte","b":[10,170,170,42,170,170,42,170]},{"a":26656,"t":"byte","b":[170,34,170,170,32,162,170,0]},{"a":26664,"t":"byte","b":[130,130,0,128,128,0,0,0]},{"a":26672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26696,"t":"byte","b":[0,128,0,0,128,0,0,160]},{"a":26704,"t":"byte","b":[0,0,160,0,0,160,0,0]},{"a":26712,"t":"byte","b":[168,0,0,136,0,0,128,0]},{"a":26720,"t":"byte","b":[0,160,0,0,32,0,0,32]},{"a":26728,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26744,"t":"byte","b":[0,0,0,0,0,0,0,201]},{"a":26752,"l":"intro_sprites_vaus_turning","c":"Sprite frames $A2-$B5 ($6880-$6D7F): a capsule-shaped craft in cyan and white with red ends, like the Vaus, turning end over end while it shrinks into the distance, to a few pixels at $B4/$B5","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26776,"t":"byte","b":[3,0,0,14,64,0,15,144]},{"a":26784,"t":"byte","b":[0,5,100,0,1,89,0,0]},{"a":26792,"t":"byte","b":[86,192,0,23,192,0,7,0]},{"a":26800,"t":"byte","b":[0,1,0,0,0,0,0,0]},{"a":26808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26824,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26832,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26840,"t":"byte","b":[0,0,0,13,0,0,14,80]},{"a":26848,"t":"byte","b":[0,13,165,0,5,90,192,0]},{"a":26856,"t":"byte","b":[85,192,0,5,192,0,0,192]},{"a":26864,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26880,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26888,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26904,"t":"byte","b":[0,0,0,0,0,0,13,85]},{"a":26912,"t":"byte","b":[192,14,170,192,13,85,192,13]},{"a":26920,"t":"byte","b":[85,192,0,0,0,0,0,0]},{"a":26928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26936,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26968,"t":"byte","b":[0,0,0,0,1,192,0,22]},{"a":26976,"t":"byte","b":[192,1,105,192,14,149,64,13]},{"a":26984,"t":"byte","b":[84,0,13,64,0,12,0,0]},{"a":26992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27000,"t":"byte","b":[0,0,0,0,0,0,0,169]},{"a":27008,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27024,"t":"byte","b":[0,0,0,0,0,0,3,0]},{"a":27032,"t":"byte","b":[0,6,192,0,27,192,0,101]},{"a":27040,"t":"byte","b":[64,1,149,0,14,84,0,15]},{"a":27048,"t":"byte","b":[80,0,3,64,0,1,0,0]},{"a":27056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27064,"t":"byte","b":[0,0,0,0,0,0,0,22]},{"a":27072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27088,"t":"byte","b":[0,0,0,3,0,0,1,192]},{"a":27096,"t":"byte","b":[0,5,192,0,25,0,0,101]},{"a":27104,"t":"byte","b":[0,0,148,0,3,148,0,3]},{"a":27112,"t":"byte","b":[208,0,0,192,0,0,0,0]},{"a":27120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27128,"t":"byte","b":[0,0,0,0,0,0,0,26]},{"a":27136,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27144,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27152,"t":"byte","b":[0,0,0,3,0,0,5,192]},{"a":27160,"t":"byte","b":[0,89,192,3,101,192,3,84]},{"a":27168,"t":"byte","b":[0,3,80,0,0,0,0,0]},{"a":27176,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27184,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27192,"t":"byte","b":[0,0,0,0,0,0,0,40]},{"a":27200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27216,"t":"byte","b":[0,0,0,0,0,3,170,192]},{"a":27224,"t":"byte","b":[3,85,192,3,85,192,0,0]},{"a":27232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27256,"t":"byte","b":[0,0,0,0,0,0,0,32]},{"a":27264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27280,"t":"byte","b":[0,0,3,160,0,3,90,192]},{"a":27288,"t":"byte","b":[3,85,192,0,5,192,0,0]},{"a":27296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27320,"t":"byte","b":[0,0,0,0,0,0,0,161]},{"a":27328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27336,"t":"byte","b":[0,0,0,0,0,192,0,0]},{"a":27344,"t":"byte","b":[224,0,0,216,0,0,22,192]},{"a":27352,"t":"byte","b":[0,5,192,0,1,192,0,0]},{"a":27360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27392,"t":"byte","b":[0,0,0,0,0,0,0,48]},{"a":27400,"t":"byte","b":[0,0,48,0,0,24,0,0]},{"a":27408,"t":"byte","b":[20,0,0,6,0,0,5,192]},{"a":27416,"t":"byte","b":[0,1,192,0,1,192,0,0]},{"a":27424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27432,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27448,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27464,"t":"byte","b":[0,0,48,0,0,56,0,0]},{"a":27472,"t":"byte","b":[6,0,0,5,128,0,1,112]},{"a":27480,"t":"byte","b":[0,0,112,0,0,0,0,0]},{"a":27488,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27528,"t":"byte","b":[0,0,0,0,0,58,0,0]},{"a":27536,"t":"byte","b":[53,176,0,1,112,0,0,0]},{"a":27544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27592,"t":"byte","b":[0,0,0,0,0,58,176,0]},{"a":27600,"t":"byte","b":[53,112,0,0,0,0,0,0]},{"a":27608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27656,"t":"byte","b":[0,0,2,176,0,57,112,0]},{"a":27664,"t":"byte","b":[53,0,0,0,0,0,0,0]},{"a":27672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27712,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":27720,"t":"byte","b":[192,0,2,64,0,9,0,0]},{"a":27728,"t":"byte","b":[52,0,0,48,0,0,0,0]},{"a":27736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27768,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":27776,"l":"intro_sprite_b2","c":"Bank 1 sprite frame $B2 among the intro frames ($6800-$757F): a few pixels only, read by the video chip through a sprite pointer during the intro.","t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":27784,"t":"byte","b":[192,0,5,0,0,12,0,0]},{"a":27792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27824,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27832,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":27840,"t":"byte","b":[0,0,0,0,0,0,0,13]},{"a":27848,"t":"byte","b":[192,0,0,0,0,0,0,0]},{"a":27856,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27864,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27880,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27888,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27904,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27912,"t":"byte","b":[0,0,0,0,0,1,0,0]},{"a":27920,"t":"byte","b":[5,64,0,0,0,0,0,0]},{"a":27928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27936,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27976,"t":"byte","b":[0,0,0,0,0,5,0,0]},{"a":27984,"t":"byte","b":[1,64,0,0,0,0,0,0]},{"a":27992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28008,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28032,"l":"intro_sprites_craft_near","c":"Sprite frames $B6-$C5 ($6D80-$717F): a cyan and white delta-shaped craft with red trim, growing from a speck, turning, then trailing red speed lines","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28040,"t":"byte","b":[0,0,0,0,0,5,0,0]},{"a":28048,"t":"byte","b":[1,64,0,0,80,0,0,0]},{"a":28056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28088,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":28096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28104,"t":"byte","b":[0,0,0,0,0,5,0,0]},{"a":28112,"t":"byte","b":[9,64,0,1,80,0,2,84]},{"a":28120,"t":"byte","b":[0,0,64,0,0,0,0,0]},{"a":28128,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28136,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28144,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28152,"t":"byte","b":[0,0,0,0,0,0,0,153]},{"a":28160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28168,"t":"byte","b":[0,0,4,0,0,5,32,0]},{"a":28176,"t":"byte","b":[9,160,0,6,144,0,50,84]},{"a":28184,"t":"byte","b":[0,1,84,0,1,112,0,0]},{"a":28192,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28216,"t":"byte","b":[0,0,0,0,0,0,0,153]},{"a":28224,"t":"byte","b":[0,0,0,0,0,0,0,128]},{"a":28232,"t":"byte","b":[0,0,144,128,0,150,128,0]},{"a":28240,"t":"byte","b":[166,128,0,154,64,3,153,84]},{"a":28248,"t":"byte","b":[3,37,80,0,21,208,0,20]},{"a":28256,"t":"byte","b":[192,0,3,0,0,0,0,0]},{"a":28264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28280,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":28288,"t":"byte","b":[0,0,0,0,0,0,2,0]},{"a":28296,"t":"byte","b":[0,2,130,0,2,90,0,2]},{"a":28304,"t":"byte","b":[90,0,14,169,0,14,169,64]},{"a":28312,"t":"byte","b":[12,101,80,48,149,80,2,149]},{"a":28320,"t":"byte","b":[64,1,87,0,1,67,0,0]},{"a":28328,"t":"byte","b":[12,0,0,0,0,0,0,0]},{"a":28336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28360,"t":"byte","b":[0,4,32,0,5,32,0,5]},{"a":28368,"t":"byte","b":[96,0,6,164,64,53,165,64]},{"a":28376,"t":"byte","b":[53,149,0,198,84,0,198,92]},{"a":28384,"t":"byte","b":[0,5,112,0,4,48,0,0]},{"a":28392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28408,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":28416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28424,"t":"byte","b":[0,0,32,0,5,160,0,5]},{"a":28432,"t":"byte","b":[160,64,6,165,64,6,165,0]},{"a":28440,"t":"byte","b":[54,148,0,58,84,0,202,124]},{"a":28448,"t":"byte","b":[0,201,48,0,4,192,0,0]},{"a":28456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28472,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28480,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28488,"t":"byte","b":[0,0,16,0,0,96,0,0]},{"a":28496,"t":"byte","b":[160,64,2,165,0,2,164,0]},{"a":28504,"t":"byte","b":[2,156,0,10,112,0,10,48]},{"a":28512,"t":"byte","b":[0,8,192,0,0,0,0,0]},{"a":28520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28552,"t":"byte","b":[0,0,16,0,0,17,64,0]},{"a":28560,"t":"byte","b":[101,64,0,165,0,2,148,0]},{"a":28568,"t":"byte","b":[2,112,0,9,192,0,9,0]},{"a":28576,"t":"byte","b":[0,4,0,0,0,0,0,0]},{"a":28584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28600,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28616,"t":"byte","b":[0,0,1,64,0,13,64,0]},{"a":28624,"t":"byte","b":[5,64,0,21,64,0,85,0]},{"a":28632,"t":"byte","b":[1,85,0,1,84,0,5,80]},{"a":28640,"t":"byte","b":[0,5,0,0,4,0,0,0]},{"a":28648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28672,"t":"byte","b":[0,0,0,0,0,0,0,5]},{"a":28680,"t":"byte","b":[0,0,53,0,0,213,0,3]},{"a":28688,"t":"byte","b":[213,0,12,85,64,2,85,64]},{"a":28696,"t":"byte","b":[1,85,64,9,87,0,21,124]},{"a":28704,"t":"byte","b":[0,20,48,0,0,192,0,0]},{"a":28712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28728,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":28736,"t":"byte","b":[0,0,0,0,1,0,0,245]},{"a":28744,"t":"byte","b":[0,3,213,0,12,21,0,0]},{"a":28752,"t":"byte","b":[149,0,2,89,64,1,101,64]},{"a":28760,"t":"byte","b":[9,149,64,21,85,64,21,125]},{"a":28768,"t":"byte","b":[64,0,15,0,0,240,0,3]},{"a":28776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28792,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":28800,"t":"byte","b":[0,0,0,0,0,0,15,245]},{"a":28808,"t":"byte","b":[64,0,5,64,0,37,64,0]},{"a":28816,"t":"byte","b":[149,128,10,90,64,37,101,64]},{"a":28824,"t":"byte","b":[21,149,64,5,85,0,0,85]},{"a":28832,"t":"byte","b":[64,0,21,64,0,5,64,15]},{"a":28840,"t":"byte","b":[253,64,0,0,0,0,0,0]},{"a":28848,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28856,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":28864,"t":"byte","b":[0,0,0,3,0,0,0,252]},{"a":28872,"t":"byte","b":[0,0,63,64,42,5,64,37]},{"a":28880,"t":"byte","b":[165,64,22,85,64,5,165,0]},{"a":28888,"t":"byte","b":[5,89,0,1,85,64,0,85]},{"a":28896,"t":"byte","b":[64,48,81,16,12,20,0,3]},{"a":28904,"t":"byte","b":[212,0,0,244,0,0,48,0]},{"a":28912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28936,"t":"byte","b":[0,3,252,0,0,53,64,42]},{"a":28944,"t":"byte","b":[5,64,37,165,64,22,85,0]},{"a":28952,"t":"byte","b":[5,165,0,1,89,64,1,85]},{"a":28960,"t":"byte","b":[80,12,84,0,3,84,0,0]},{"a":28968,"t":"byte","b":[212,0,0,52,0,0,0,0]},{"a":28976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28984,"t":"byte","b":[0,0,0,0,0,0,0,56]},{"a":28992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29000,"t":"byte","b":[0,0,0,0,0,245,0,0]},{"a":29008,"t":"byte","b":[53,0,42,5,0,37,165,0]},{"a":29016,"t":"byte","b":[5,85,0,1,85,0,1,85]},{"a":29024,"t":"byte","b":[64,0,84,0,0,20,0,0]},{"a":29032,"t":"byte","b":[20,0,0,4,0,0,0,0]},{"a":29040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29048,"t":"byte","b":[0,0,0,0,0,0,0,56]},{"a":29056,"l":"intro_sprites_craft_far","c":"Sprite frames $C6-$CD ($7180-$737F): the same delta craft without its trails, shrinking away to a sliver, then (at $CD) two thin streaks","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29064,"t":"byte","b":[0,0,0,0,0,0,0,3]},{"a":29072,"t":"byte","b":[252,0,0,52,0,22,164,0]},{"a":29080,"t":"byte","b":[21,84,0,5,85,64,1,85]},{"a":29088,"t":"byte","b":[0,0,84,0,0,20,0,0]},{"a":29096,"t":"byte","b":[20,0,0,4,0,0,0,0]},{"a":29104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29112,"t":"byte","b":[0,0,0,0,0,0,0,199]},{"a":29120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29128,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29136,"t":"byte","b":[0,0,3,240,0,22,160,0]},{"a":29144,"t":"byte","b":[21,81,64,5,85,0,1,85]},{"a":29152,"t":"byte","b":[0,0,84,0,0,20,0,0]},{"a":29160,"t":"byte","b":[20,0,0,4,0,0,0,0]},{"a":29168,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29176,"t":"byte","b":[0,0,0,0,0,0,0,199]},{"a":29184,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29192,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29200,"t":"byte","b":[0,0,0,64,0,5,80,0]},{"a":29208,"t":"byte","b":[21,81,0,5,85,0,1,85]},{"a":29216,"t":"byte","b":[0,0,84,0,0,20,0,0]},{"a":29224,"t":"byte","b":[5,0,0,1,0,0,0,0]},{"a":29232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29240,"t":"byte","b":[0,0,0,0,0,0,0,141]},{"a":29248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29264,"t":"byte","b":[0,0,1,0,0,1,68,0]},{"a":29272,"t":"byte","b":[5,84,0,1,84,0,0,84]},{"a":29280,"t":"byte","b":[0,0,20,0,0,5,0,0]},{"a":29288,"t":"byte","b":[1,64,0,0,0,0,0,0]},{"a":29296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29304,"t":"byte","b":[0,0,0,0,0,0,0,200]},{"a":29312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29336,"t":"byte","b":[5,84,0,1,84,0,0,84]},{"a":29344,"t":"byte","b":[0,0,5,0,0,1,0,0]},{"a":29352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29368,"t":"byte","b":[0,0,0,0,0,0,0,139]},{"a":29376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29400,"t":"byte","b":[1,80,0,0,84,0,0,21]},{"a":29408,"t":"byte","b":[0,0,1,0,0,0,0,0]},{"a":29416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29432,"t":"byte","b":[0,0,0,0,0,0,0,205]},{"a":29440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29448,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29464,"t":"byte","b":[1,64,0,0,84,0,0,5]},{"a":29472,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29480,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29488,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29496,"t":"byte","b":[0,0,0,0,0,0,0,51]},{"a":29504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29520,"t":"byte","b":[0,0,0,0,0,1,0,0]},{"a":29528,"t":"byte","b":[5,0,0,20,0,0,80,0]},{"a":29536,"t":"byte","b":[0,64,0,0,0,4,0,0]},{"a":29544,"t":"byte","b":[20,0,0,80,0,1,64,0]},{"a":29552,"t":"byte","b":[1,0,0,0,0,0,0,0]},{"a":29560,"t":"byte","b":[0,0,0,0,0,0,0,68]},{"a":29568,"l":"intro_sprites_misc","c":"Sprite frames $CE-$D5 ($7380-$757F): $CE/$CF the left and right halves of a long cyan and white ellipse; $D0 a ring of horizontal bands (a sphere or energy field); $D1-$D4 a white cross-shaped glint growing in four steps; $D5 empty (all zero), the frame the saved title pointers give sprites 5-7","t":"byte","b":[0,0,0,0,0,0,0,85]},{"a":29576,"t":"byte","b":[64,5,85,84,5,85,85,21]},{"a":29584,"t":"byte","b":[170,85,22,85,169,21,85,86]},{"a":29592,"t":"byte","b":[5,85,85,0,85,84,0,5]},{"a":29600,"t":"byte","b":[64,0,0,0,0,0,0,0]},{"a":29608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29624,"t":"byte","b":[0,0,0,0,0,0,0,28]},{"a":29632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29640,"t":"byte","b":[0,0,0,0,0,0,0,64]},{"a":29648,"t":"byte","b":[0,0,64,0,0,64,0,0]},{"a":29656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29696,"t":"byte","b":[0,84,0,5,1,64,16,0]},{"a":29704,"t":"byte","b":[16,64,0,4,64,84,4,69]},{"a":29712,"t":"byte","b":[1,68,16,0,16,69,1,68]},{"a":29720,"t":"byte","b":[64,84,4,69,1,68,16,0]},{"a":29728,"t":"byte","b":[16,69,1,68,64,84,4,69]},{"a":29736,"t":"byte","b":[1,68,16,0,16,69,1,68]},{"a":29744,"t":"byte","b":[64,84,4,64,0,4,16,0]},{"a":29752,"t":"byte","b":[16,5,1,64,0,84,0,133]},{"a":29760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29784,"t":"byte","b":[0,32,0,0,168,0,0,32]},{"a":29792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29816,"t":"byte","b":[0,0,0,0,0,0,0,204]},{"a":29824,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29832,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29840,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29848,"t":"byte","b":[0,32,0,2,170,0,0,32]},{"a":29856,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29864,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29880,"t":"byte","b":[0,0,0,0,0,0,0,240]},{"a":29888,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29904,"t":"byte","b":[0,0,0,0,0,0,32,0]},{"a":29912,"t":"byte","b":[0,32,0,42,170,160,0,32]},{"a":29920,"t":"byte","b":[0,0,32,0,0,0,0,0]},{"a":29928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29936,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29944,"t":"byte","b":[0,0,0,0,0,0,0,28]},{"a":29952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29968,"t":"byte","b":[0,0,0,32,0,0,32,0]},{"a":29976,"t":"byte","b":[0,168,0,170,170,168,0,168]},{"a":29984,"t":"byte","b":[0,0,32,0,0,32,0,0]},{"a":29992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30008,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":30016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30032,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30048,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30072,"t":"byte","b":[0,0,0,0,0,0,0,166]},{"a":30080,"l":"unknown_colour_pairs_7580","c":"640 bytes ($7580-$77FF) shaped like colour data: nearly every byte is two colour nibbles, mostly $C6, $F6 and $66 (grey, light grey, blue). They match no part of the title's colour matrix ($6000) or colour-RAM source ($6400), and nothing reads them: no instruction or pointer reaches them (opcodes.py --refs, the simulator's read map) and as sprite frames $D6-$DF they show only noise. Purpose not known; probably a leftover","t":"byte","b":[246,198,246,166,198,102,246,166]},{"a":30088,"t":"byte","b":[6,246,166,246,198,166,166,198]},{"a":30096,"t":"byte","b":[118,230,198,246,166,246,102,166]},{"a":30104,"t":"byte","b":[246,102,246,166,102,198,246,246]},{"a":30112,"t":"byte","b":[246,102,166,134,102,246,198,102]},{"a":30120,"t":"byte","b":[246,6,12,204,236,204,204,166]},{"a":30128,"t":"byte","b":[6,198,240,230,246,107,203,11]},{"a":30136,"t":"byte","b":[203,198,166,54,198,246,134,246]},{"a":30144,"t":"byte","b":[102,246,246,102,166,6,102,246]},{"a":30152,"t":"byte","b":[246,246,198,38,6,198,102,86]},{"a":30160,"t":"byte","b":[6,102,243,220,12,204,44,75]},{"a":30168,"t":"byte","b":[204,188,240,204,204,203,252,108]},{"a":30176,"t":"byte","b":[203,198,198,198,198,248,102,198]},{"a":30184,"t":"byte","b":[198,102,198,198,102,246,246,246]},{"a":30192,"t":"byte","b":[198,246,246,198,246,246,198,246]},{"a":30200,"t":"byte","b":[246,252,96,240,240,108,252,252]},{"a":30208,"t":"byte","b":[108,252,252,252,204,108,252,252]},{"a":30216,"t":"byte","b":[111,239,240,102,246,230,6,198]},{"a":30224,"t":"byte","b":[246,246,198,246,246,198,246,182]},{"a":30232,"t":"byte","b":[6,198,246,246,102,198,252,246]},{"a":30240,"t":"byte","b":[204,252,252,12,192,92,252,108]},{"a":30248,"t":"byte","b":[255,251,108,252,251,252,252,240]},{"a":30256,"t":"byte","b":[252,204,240,252,203,198,246,86]},{"a":30264,"t":"byte","b":[246,198,246,246,102,246,166,102]},{"a":30272,"t":"byte","b":[246,102,246,243,255,255,207,236]},{"a":30280,"t":"byte","b":[172,207,188,95,207,251,252,127]},{"a":30288,"t":"byte","b":[95,203,251,92,204,251,251,204]},{"a":30296,"t":"byte","b":[252,252,251,108,166,86,102,246]},{"a":30304,"t":"byte","b":[150,102,246,246,6,198,102,246]},{"a":30312,"t":"byte","b":[102,96,255,236,96,240,80,12]},{"a":30320,"t":"byte","b":[192,240,236,204,252,92,204,251]},{"a":30328,"t":"byte","b":[92,11,108,236,91,96,204,240]},{"a":30336,"t":"byte","b":[240,203,251,86,246,102,166,86]},{"a":30344,"t":"byte","b":[102,246,246,102,246,230,246,198]},{"a":30352,"t":"byte","b":[166,160,198,171,80,192,96,240]},{"a":30360,"t":"byte","b":[96,240,192,176,208,204,172,252]},{"a":30368,"t":"byte","b":[204,252,91,12,204,188,220,108]},{"a":30376,"t":"byte","b":[220,251,107,240,251,6,246,198]},{"a":30384,"t":"byte","b":[86,86,102,102,246,102,246,214]},{"a":30392,"t":"byte","b":[6,252,252,172,207,251,91,198]},{"a":30400,"t":"byte","b":[255,223,207,255,95,251,111,207]},{"a":30408,"t":"byte","b":[187,239,207,255,124,204,251,92]},{"a":30416,"t":"byte","b":[251,107,171,150,107,246,198,246]},{"a":30424,"t":"byte","b":[198,198,198,102,198,198,246,198]},{"a":30432,"t":"byte","b":[198,204,108,203,204,240,207,207]},{"a":30440,"t":"byte","b":[192,203,192,203,204,192,192,192]},{"a":30448,"t":"byte","b":[96,192,204,108,203,203,107,192]},{"a":30456,"t":"byte","b":[203,11,203,198,198,198,198,198]},{"a":30464,"t":"byte","b":[198,198,198,6,102,198,198,102]},{"a":30472,"t":"byte","b":[198,204,96,192,192,0,192,192]},{"a":30480,"t":"byte","b":[192,192,203,203,204,192,192,251]},{"a":30488,"t":"byte","b":[192,192,192,107,203,203,107,192]},{"a":30496,"t":"byte","b":[203,251,198,198,198,198,198,198]},{"a":30504,"t":"byte","b":[198,198,198,198,207,198,198,102]},{"a":30512,"t":"byte","b":[198,198,102,198,198,102,198,203]},{"a":30520,"t":"byte","b":[251,198,203,203,203,204,204,204]},{"a":30528,"t":"byte","b":[207,203,11,108,203,203,107,198]},{"a":30536,"t":"byte","b":[198,102,198,198,6,198,198,198]},{"a":30544,"t":"byte","b":[198,198,198,198,198,198,6,198]},{"a":30552,"t":"byte","b":[198,198,102,198,198,102,198,198]},{"a":30560,"t":"byte","b":[6,198,198,198,198,204,204,203]},{"a":30568,"t":"byte","b":[192,204,192,192,203,203,102,198]},{"a":30576,"t":"byte","b":[198,102,198,198,102,198,198,246]},{"a":30584,"t":"byte","b":[198,198,198,198,198,198,198,198]},{"a":30592,"t":"byte","b":[198,246,102,198,198,102,198,198]},{"a":30600,"t":"byte","b":[102,198,198,246,198,199,198,192]},{"a":30608,"t":"byte","b":[192,198,192,203,203,246,198,198]},{"a":30616,"t":"byte","b":[198,102,198,198,102,198,198,6]},{"a":30624,"t":"byte","b":[198,198,198,198,198,198,198,198]},{"a":30632,"t":"byte","b":[198,198,198,198,198,102,198,198]},{"a":30640,"t":"byte","b":[102,198,198,102,198,198,6,198]},{"a":30648,"t":"byte","b":[198,198,198,203,203,198,198,198]},{"a":30656,"t":"byte","b":[6,102,198,198,102,198,198,195]},{"a":30664,"t":"byte","b":[198,198,198,198,198,198,6,102]},{"a":30672,"t":"byte","b":[1,192,202,202,202,106,192,192]},{"a":30680,"t":"byte","b":[192,192,202,202,96,192,202,199]},{"a":30688,"t":"byte","b":[198,198,198,102,198,198,198,198]},{"a":30696,"t":"byte","b":[198,198,102,206,206,206,206,206]},{"a":30704,"t":"byte","b":[202,110,206,202,206,206,206,206]},{"a":30712,"t":"byte","b":[102,202,202,202,206,202,192,96]},{"a":30720,"l":"panel_template","c":"Right-hand panel of the play screen in screen codes: 25 rows of 13 bytes ($7800-$7944), copied by $F2B5 to $C01C + 40 x row with colour $0E: the first 12 bytes of a row fill columns 28-39, the 13th lands in column 0 of the next screen row, so the template also draws the playfield's left wall (characters $F1-$F5 in turn; the last row's $20 falls at $C3E8, past the screen). Panel rows: the ARKANOID logo in graphic characters, HIGH SCORE 0000000, PLAYER 1, a framed box with SCORE 0000000 / LIVES 00 / ROUND, PLAYER 2 and its box with SCORE / LIVES 00 / ROUND 00, then border characters ($1C blank). The digits are overwritten during play","t":"byte","b":[28,168,169,170,171,29,30,31]},{"a":30728,"t":"byte","b":[32,183,200,28,245,28,40,39]},{"a":30736,"t":"byte","b":[38,37,35,34,33,180,186,201]},{"a":30744,"t":"byte","b":[28,241,28,28,28,28,28,28]},{"a":30752,"t":"byte","b":[28,28,28,28,28,28,242,28]},{"a":30760,"t":"byte","b":[8,9,7,8,28,28,19,3]},{"a":30768,"t":"byte","b":[15,18,5,243,28,28,28,48]},{"a":30776,"t":"byte","b":[48,48,48,48,48,48,28,28]},{"a":30784,"t":"byte","b":[244,28,189,190,191,192,193,195]},{"a":30792,"t":"byte","b":[196,197,198,28,62,245,28,28]},{"a":30800,"t":"byte","b":[28,28,28,28,28,28,28,28]},{"a":30808,"t":"byte","b":[28,28,241,28,178,179,179,179]},{"a":30816,"t":"byte","b":[179,179,179,179,179,179,60,242]},{"a":30824,"t":"byte","b":[28,59,28,28,19,3,15,18]},{"a":30832,"t":"byte","b":[5,28,28,59,243,28,59,28]},{"a":30840,"t":"byte","b":[48,48,48,48,48,48,48,28]},{"a":30848,"t":"byte","b":[59,244,28,59,28,12,9,22]},{"a":30856,"t":"byte","b":[5,19,28,48,48,59,245,28]},{"a":30864,"t":"byte","b":[59,28,18,15,21,14,4,28]},{"a":30872,"t":"byte","b":[28,28,59,241,28,184,185,185]},{"a":30880,"t":"byte","b":[185,185,185,185,185,185,185,61]},{"a":30888,"t":"byte","b":[242,28,28,28,28,28,28,28]},{"a":30896,"t":"byte","b":[28,28,28,28,28,243,28,189]},{"a":30904,"t":"byte","b":[190,191,192,193,195,196,197,198]},{"a":30912,"t":"byte","b":[28,63,244,28,28,28,28,28]},{"a":30920,"t":"byte","b":[28,28,28,28,28,28,28,245]},{"a":30928,"t":"byte","b":[28,178,179,179,179,179,179,179]},{"a":30936,"t":"byte","b":[179,179,179,60,241,28,59,28]},{"a":30944,"t":"byte","b":[28,19,3,15,18,5,28,28]},{"a":30952,"t":"byte","b":[59,242,28,59,28,48,48,48]},{"a":30960,"t":"byte","b":[48,48,48,48,28,59,243,28]},{"a":30968,"t":"byte","b":[59,28,12,9,22,5,19,28]},{"a":30976,"t":"byte","b":[48,48,59,244,28,59,28,18]},{"a":30984,"t":"byte","b":[15,21,14,4,28,48,48,59]},{"a":30992,"t":"byte","b":[245,28,184,185,185,185,185,185]},{"a":31000,"t":"byte","b":[185,185,185,185,61,241,28,28]},{"a":31008,"t":"byte","b":[28,28,28,28,28,28,28,28]},{"a":31016,"t":"byte","b":[28,28,242,28,28,28,28,28]},{"a":31024,"t":"byte","b":[28,28,28,28,28,28,28,243]},{"a":31032,"t":"byte","b":[28,28,28,28,28,28,28,28]},{"a":31040,"t":"byte","b":[28,28,28,28,32]},{"a":31045,"l":"unused_fill_7945","c":"587 bytes ($7945-$7B8F) of alternating $00/$FF and then $08/$F7, with a few odd bytes: the pattern of uninitialised RAM, saved with the file. Nothing reads it","t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31053,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31061,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31069,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31077,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31085,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31093,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31101,"t":"byte","b":[255,0,247,8,247,0,255,0]},{"a":31109,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31117,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31125,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31133,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31141,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31149,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31157,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31165,"t":"byte","b":[255,0,255,0,255,0,0,0]},{"a":31173,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31181,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31189,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31197,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31205,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31213,"t":"byte","b":[255,0,255,0,255,0,255,0]},{"a":31221,"t":"byte","b":[255,0,255,247,255,0,255,0]},{"a":31229,"t":"byte","b":[255,5,0,247,136,8,247,8]},{"a":31237,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31245,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31253,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31261,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31269,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31277,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31285,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31293,"t":"byte","b":[247,8,247,8,247,8,255,8]},{"a":31301,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31309,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31317,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31325,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31333,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31341,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31349,"t":"byte","b":[247,8,247,0,247,8,247,8]},{"a":31357,"t":"byte","b":[247,8,255,0,255,8,247,8]},{"a":31365,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31373,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31381,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31389,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31397,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31405,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31413,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31421,"t":"byte","b":[247,8,247,8,247,8,8,8]},{"a":31429,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31437,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31445,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31453,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31461,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31469,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31477,"t":"byte","b":[247,8,247,247,247,8,247,8]},{"a":31485,"t":"byte","b":[247,13,8,247,136,8,247,8]},{"a":31493,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31501,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31509,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31517,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31525,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31533,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31541,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31549,"t":"byte","b":[247,8,247,8,247,8,255,8]},{"a":31557,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31565,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31573,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31581,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31589,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31597,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31605,"t":"byte","b":[247,8,247,0,247,8,247,8]},{"a":31613,"t":"byte","b":[247,8,255,0,255,8,247,8]},{"a":31621,"t":"byte","b":[247,8,247,8,247,8,247,8]},{"a":31629,"t":"byte","b":[247,8,247]},{"a":31632,"l":"doh_screen","c":"The round-33 boss screen, DOH: 24 rows of 26 screen codes ($7B90-$7DFF), copied by $9C82 to the play area at $C029 + 40 x row (rows 1-24, columns 1-26) with colour $0E in $D829.. Drawn in the character set at $C800: the stone head of Doh, mouth open, inside a ring of tubing, on a repeating wall pattern","t":"byte","b":[70,71,68,69,70,71,68,69]},{"a":31640,"t":"byte","b":[70,71,68,69,70,71,68,69]},{"a":31648,"t":"byte","b":[70,71,68,69,70,71,68,69]},{"a":31656,"t":"byte","b":[70,71,74,75,72,73,74,75]},{"a":31664,"t":"byte","b":[72,73,74,75,72,73,74,75]},{"a":31672,"t":"byte","b":[72,73,74,75,72,73,74,75]},{"a":31680,"t":"byte","b":[72,73,74,75,66,67,64,65]},{"a":31688,"t":"byte","b":[66,67,64,65,66,67,64,65]},{"a":31696,"t":"byte","b":[66,67,64,65,66,67,64,65]},{"a":31704,"t":"byte","b":[66,67,64,65,66,67,70,71]},{"a":31712,"t":"byte","b":[68,69,70,71,68,69,70,124]},{"a":31720,"t":"byte","b":[80,81,82,83,27,84,85,123]},{"a":31728,"t":"byte","b":[68,69,70,71,68,69,70,71]},{"a":31736,"t":"byte","b":[74,75,72,73,74,75,72,73]},{"a":31744,"t":"byte","b":[74,125,146,147,148,149,150,151]},{"a":31752,"t":"byte","b":[86,86,90,73,74,75,72,73]},{"a":31760,"t":"byte","b":[74,75,66,67,64,65,66,67]},{"a":31768,"t":"byte","b":[64,65,41,28,152,96,97,98]},{"a":31776,"t":"byte","b":[99,153,28,88,89,65,66,67]},{"a":31784,"t":"byte","b":[64,65,66,67,70,71,68,69]},{"a":31792,"t":"byte","b":[70,71,68,69,70,28,154,100]},{"a":31800,"t":"byte","b":[231,102,103,155,28,127,95,69]},{"a":31808,"t":"byte","b":[70,71,68,69,70,71,74,75]},{"a":31816,"t":"byte","b":[72,73,74,75,72,73,74,28]},{"a":31824,"t":"byte","b":[156,104,105,106,107,157,28,101]},{"a":31832,"t":"byte","b":[92,73,74,75,72,73,74,75]},{"a":31840,"t":"byte","b":[66,67,64,65,66,67,64,65]},{"a":31848,"t":"byte","b":[41,28,158,108,109,110,111,159]},{"a":31856,"t":"byte","b":[28,93,94,65,66,67,64,65]},{"a":31864,"t":"byte","b":[66,67,70,71,68,69,70,71]},{"a":31872,"t":"byte","b":[68,69,70,28,160,112,202,203]},{"a":31880,"t":"byte","b":[117,161,28,101,95,69,70,71]},{"a":31888,"t":"byte","b":[68,69,70,71,74,75,72,73]},{"a":31896,"t":"byte","b":[74,75,72,73,74,28,162,218]},{"a":31904,"t":"byte","b":[219,220,221,163,28,127,92,73]},{"a":31912,"t":"byte","b":[74,75,72,73,74,75,66,67]},{"a":31920,"t":"byte","b":[64,65,66,67,64,65,41,28]},{"a":31928,"t":"byte","b":[164,222,223,224,225,165,28,93]},{"a":31936,"t":"byte","b":[94,65,66,67,64,65,66,67]},{"a":31944,"t":"byte","b":[70,71,68,69,70,71,68,69]},{"a":31952,"t":"byte","b":[70,28,166,226,227,228,229,167]},{"a":31960,"t":"byte","b":[28,101,95,69,70,71,68,69]},{"a":31968,"t":"byte","b":[70,71,74,75,72,73,74,75]},{"a":31976,"t":"byte","b":[72,73,74,28,172,174,176,177]},{"a":31984,"t":"byte","b":[175,173,28,101,92,73,74,75]},{"a":31992,"t":"byte","b":[72,73,74,75,66,67,64,65]},{"a":32000,"t":"byte","b":[66,67,64,65,66,67,101,28]},{"a":32008,"t":"byte","b":[28,28,47,45,44,43,42,65]},{"a":32016,"t":"byte","b":[66,67,64,65,66,67,70,71]},{"a":32024,"t":"byte","b":[68,69,70,71,68,69,70,71]},{"a":32032,"t":"byte","b":[68,69,70,71,68,69,70,71]},{"a":32040,"t":"byte","b":[68,69,70,71,68,69,70,71]},{"a":32048,"t":"byte","b":[74,75,72,73,74,75,72,73]},{"a":32056,"t":"byte","b":[74,75,72,73,74,75,72,73]},{"a":32064,"t":"byte","b":[74,75,72,73,74,75,72,73]},{"a":32072,"t":"byte","b":[74,75,66,67,64,65,66,67]},{"a":32080,"t":"byte","b":[64,65,66,67,64,65,66,67]},{"a":32088,"t":"byte","b":[64,65,66,67,64,65,66,67]},{"a":32096,"t":"byte","b":[64,65,66,67,70,71,68,69]},{"a":32104,"t":"byte","b":[70,71,68,69,70,71,68,69]},{"a":32112,"t":"byte","b":[70,71,68,69,70,71,68,69]},{"a":32120,"t":"byte","b":[70,71,68,69,70,71,74,75]},{"a":32128,"t":"byte","b":[72,73,74,75,72,73,74,75]},{"a":32136,"t":"byte","b":[72,73,74,75,72,73,74,75]},{"a":32144,"t":"byte","b":[72,73,74,75,72,73,74,75]},{"a":32152,"t":"byte","b":[66,67,64,65,66,67,64,65]},{"a":32160,"t":"byte","b":[66,67,64,65,66,67,64,65]},{"a":32168,"t":"byte","b":[66,67,64,65,66,67,64,65]},{"a":32176,"t":"byte","b":[66,67,70,71,68,69,70,71]},{"a":32184,"t":"byte","b":[68,69,70,71,68,69,70,71]},{"a":32192,"t":"byte","b":[68,69,70,71,68,69,70,71]},{"a":32200,"t":"byte","b":[68,69,70,71,74,75,72,73]},{"a":32208,"t":"byte","b":[74,75,72,73,74,75,72,73]},{"a":32216,"t":"byte","b":[74,75,72,73,74,75,72,73]},{"a":32224,"t":"byte","b":[74,75,72,73,74,75,66,67]},{"a":32232,"t":"byte","b":[64,65,66,67,64,65,66,67]},{"a":32240,"t":"byte","b":[64,65,66,67,64,65,66,67]},{"a":32248,"t":"byte","b":[64,65,66,67,64,65,66,67]},{"a":32256,"l":"stale_charset_7e00","c":"64 character shapes ($7E00-$7FFE, 8 bytes each, multicolour): letter-like pieces then shaded blocks. Largely the same bytes as $EA00-$EBFF ($7E00-$7E80, $7F00-$7F27 and $7F30-$7F87 are identical there). Not referenced: no instruction, pointer, or bank-1 sprite pointer reaches them; probably a stale copy of the $EA00 data","t":"byte","b":[0,31,51,59,0,51,51,55]},{"a":32264,"t":"byte","b":[8,0,3,0,15,15,0,8]},{"a":32272,"t":"byte","b":[0,0,186,0,186,186,0,0]},{"a":32280,"t":"byte","b":[0,0,240,0,220,220,0,0]},{"a":32288,"t":"byte","b":[0,0,0,0,0,60,43,63]},{"a":32296,"t":"byte","b":[12,63,56,251,236,187,235,151]},{"a":32304,"t":"byte","b":[254,15,255,254,175,254,174,93]},{"a":32312,"t":"byte","b":[60,0,63,0,59,59,59,59]},{"a":32320,"t":"byte","b":[23,43,60,0,128,232,188,192]},{"a":32328,"t":"byte","b":[167,235,187,236,251,56,63,12]},{"a":32336,"t":"byte","b":[109,254,174,174,255,242,3,254]},{"a":32344,"t":"byte","b":[59,0,63,0,34,59,14,3]},{"a":32352,"t":"byte","b":[117,117,117,117,117,117,117,127]},{"a":32360,"t":"byte","b":[221,221,223,213,223,221,223,213]},{"a":32368,"t":"byte","b":[213,253,213,85,221,93,125,85]},{"a":32376,"t":"byte","b":[215,215,255,87,255,87,255,87]},{"a":32384,"t":"byte","b":[0,63,51,51,51,51,63,0]},{"a":32392,"t":"byte","b":[0,252,0,0,252,12,3,48]},{"a":32400,"t":"byte","b":[15,48,192,192,192,48,15,192]},{"a":32408,"t":"byte","b":[0,192,48,48,48,192,12,60]},{"a":32416,"t":"byte","b":[63,51,51,51,51,51,51,63]},{"a":32424,"t":"byte","b":[60,51,48,48,48,48,48,48]},{"a":32432,"t":"byte","b":[48,3,195,51,51,51,48,48]},{"a":32440,"t":"byte","b":[204,12,51,195,195,3,15,51]},{"a":32448,"t":"byte","b":[0,60,0,63,48,51,51,51]},{"a":32456,"t":"byte","b":[48,48,48,240,0,252,12,204]},{"a":32464,"t":"byte","b":[3,63,51,51,48,252,204,252]},{"a":32472,"t":"byte","b":[51,51,51,243,3,3,195,195]},{"a":32480,"t":"byte","b":[48,48,48,48,48,48,48,63]},{"a":32488,"t":"byte","b":[204,204,207,192,207,204,207,192]},{"a":32496,"t":"byte","b":[192,252,192,0,204,12,60,0]},{"a":32504,"t":"byte","b":[195,195,255,3,255,3,255,3]},{"a":32512,"t":"byte","b":[250,234,250,234,207,63,254,232]},{"a":32520,"t":"byte","b":[149,85,149,86,170,234,160,0]},{"a":32528,"t":"byte","b":[85,86,85,166,170,171,10,0]},{"a":32536,"t":"byte","b":[175,171,175,171,243,252,191,43]},{"a":32544,"t":"byte","b":[128,0,0,0,0,168,254,255]},{"a":32552,"t":"byte","b":[0,0,0,3,15,14,143,238]},{"a":32560,"t":"byte","b":[0,0,0,192,240,240,178,187]},{"a":32568,"t":"byte","b":[2,0,0,0,0,42,191,255]},{"a":32576,"t":"byte","b":[238,186,153,165,149,165,149,165]},{"a":32584,"t":"byte","b":[111,109,110,125,122,253,249,224]},{"a":32592,"t":"byte","b":[122,185,121,189,95,111,111,11]},{"a":32600,"t":"byte","b":[238,155,106,87,90,86,90,86]},{"a":32608,"t":"byte","b":[149,165,149,165,213,169,229,57]},{"a":32616,"t":"byte","b":[192,128,0,0,0,13,217,230]},{"a":32624,"t":"byte","b":[3,2,0,0,0,112,103,155]},{"a":32632,"t":"byte","b":[90,86,90,86,107,110,187,175]},{"a":32640,"t":"byte","b":[234,54,254,58,206,255,142,190]},{"a":32648,"t":"byte","b":[160,128,128,128,160,160,224,228]},{"a":32656,"t":"byte","b":[10,2,2,2,10,10,11,31]},{"a":32664,"t":"byte","b":[187,236,179,236,191,226,190,178]},{"a":32672,"t":"byte","b":[175,238,171,230,170,229,169,229]},{"a":32680,"t":"byte","b":[185,238,172,235,250,190,106,154]},{"a":32688,"t":"byte","b":[110,186,59,234,171,190,170,169]},{"a":32696,"t":"byte","b":[254,250,251,234,155,170,91,106]},{"a":32704,"t":"byte","b":[245,233,251,253,187,142,35,204]},{"a":32712,"t":"byte","b":[102,85,85,149,166,234,187,239]},{"a":32720,"t":"byte","b":[101,85,85,86,107,238,187,238]},{"a":32728,"t":"byte","b":[91,111,188,239,179,254,200,51]},{"a":32736,"t":"byte","b":[48,252,239,187,174,171,170,218]},{"a":32744,"t":"byte","b":[51,204,243,188,238,187,238,170]},{"a":32752,"t":"byte","b":[63,243,62,251,238,187,234,170]},{"a":32760,"t":"byte","b":[15,255,238,187,238,170,166]},{"a":32767,"l":"f_7FFF","c":"Named only as the base of LDA $7FFF,Y at $F20D: Y runs $A0 down to 1, so the loop copies $8000-$809F (round 1's layout) into both players' wall buffers $0458 and $04F8; this byte ($9A, the last of the character data above) is never read","t":"byte","b":[154],"x":[61965]},{"a":32768,"l":"round_01_bricks","c":"Round 1 brick map, $8000-$809F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 0: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 78 coloured, 13 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 91; bricks in map rows 3-9 (screen text rows 4-10). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32776,"t":"byte","b":[10,170,0,0,0,0,0,0]},{"a":32784,"t":"byte","b":[0,0,9,153,0,0,0,0]},{"a":32792,"t":"byte","b":[0,0,0,0,3,51,255,248]},{"a":32800,"t":"byte","b":[153,153,153,153,153,153,146,34]},{"a":32808,"t":"byte","b":[255,248,51,51,51,51,51,51]},{"a":32816,"t":"byte","b":[55,119,255,248,34,34,34,34]},{"a":32824,"t":"byte","b":[34,34,32,0,255,248,119,119]},{"a":32832,"t":"byte","b":[119,119,119,119,112,0,255,248]},{"a":32840,"t":"byte","b":[102,102,102,102,102,102,96,0]},{"a":32848,"t":"byte","b":[255,248,68,68,68,68,68,68]},{"a":32856,"t":"byte","b":[64,0,255,248,85,85,85,85]},{"a":32864,"t":"byte","b":[85,85,80,0,0,0,0,0]},{"a":32872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32880,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32888,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32904,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32928,"l":"round_02_bricks","c":"Round 2 brick map, $80A0-$813F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 1: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 79 coloured, 12 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 91; bricks in map rows 2-14 (screen text rows 3-15). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32936,"t":"byte","b":[0]},{"a":32937,"l":"round_02_byte_9","c":"Round 2 map, row 0 byte 9 (colour nibbles of columns 14-15, never drawn). Named only because the skip trick at $F4E9 assembles as BIT $80A9 (its operand bytes $A9 $80 are LDA #$80 when $F4D3 branches to $F4EA); nothing reads this byte as data. The round 2 map continues to $813F.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[62697]},{"a":32945,"t":"byte","b":[0,0,0,128,0,112,0,0]},{"a":32953,"t":"byte","b":[0,0,0,0,0,192,0,113]},{"a":32961,"t":"byte","b":[0,0,0,0,0,0,0,224]},{"a":32969,"t":"byte","b":[0,113,48,0,0,0,0,0]},{"a":32977,"t":"byte","b":[0,240,0,113,53,0,0,0]},{"a":32985,"t":"byte","b":[0,0,0,248,0,113,53,32]},{"a":32993,"t":"byte","b":[0,0,0,0,0,252,0,113]},{"a":33001,"t":"byte","b":[53,38,0,0,0,0,0,254]},{"a":33009,"t":"byte","b":[0,113,53,38,64,0,0,0]},{"a":33017,"t":"byte","b":[0,255,0,113,53,38,71,0]},{"a":33025,"t":"byte","b":[0,0,0,255,128,113,53,38]},{"a":33033,"t":"byte","b":[71,16,0,0,0,255,192,113]},{"a":33041,"t":"byte","b":[53,38,71,19,0,0,0,255]},{"a":33049,"t":"byte","b":[224,113,53,38,71,19,80,0]},{"a":33057,"t":"byte","b":[0,255,240,113,53,38,71,19]},{"a":33065,"t":"byte","b":[82,0,0,255,248,153,153,153]},{"a":33073,"t":"byte","b":[153,153,153,96,0,0,0,0]},{"a":33081,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":33088,"l":"round_03_bricks","c":"Round 3 brick map, $8140-$81DF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 2: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 51 coloured, 0 silver and 40 gold bricks, so the bricks-left counter $0455 starts at 51; bricks in map rows 3-15 (screen text rows 4-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33112,"t":"byte","b":[0,0,0,0,0,0,255,248]},{"a":33120,"t":"byte","b":[17,26,170,170,170,170,160,0]},{"a":33128,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33136,"t":"byte","b":[0,0,255,248,34,34,34,34]},{"a":33144,"t":"byte","b":[34,34,32,0,0,0,0,0]},{"a":33152,"t":"byte","b":[0,0,0,0,0,0,255,248]},{"a":33160,"t":"byte","b":[170,170,170,170,170,17,16,0]},{"a":33168,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33176,"t":"byte","b":[0,0,255,248,68,68,68,68]},{"a":33184,"t":"byte","b":[68,68,64,0,0,0,0,0]},{"a":33192,"t":"byte","b":[0,0,0,0,0,0,255,248]},{"a":33200,"t":"byte","b":[102,106,170,170,170,170,160,0]},{"a":33208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33216,"t":"byte","b":[0,0,255,248,51,51,51,51]},{"a":33224,"t":"byte","b":[51,51,48,0,0,0,0,0]},{"a":33232,"t":"byte","b":[0,0,0,0,0,0,255,248]},{"a":33240,"t":"byte","b":[170,170,170,170,170,51,48,0]},{"a":33248,"l":"round_04_bricks","c":"Round 4 brick map, $81E0-$827F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 3: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 121 coloured, 19 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 140; bricks in map rows 2-15 (screen text rows 3-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33264,"t":"byte","b":[0,0,0,0,125,240,2,53]},{"a":33272,"t":"byte","b":[150,7,18,53,0,0,125,240]},{"a":33280,"t":"byte","b":[3,89,100,1,35,89,0,0]},{"a":33288,"t":"byte","b":[125,240,5,150,71,2,53,150]},{"a":33296,"t":"byte","b":[0,0,125,240,9,100,113,3]},{"a":33304,"t":"byte","b":[89,100,0,0,125,240,6,71]},{"a":33312,"t":"byte","b":[18,5,150,71,0,0,125,240]},{"a":33320,"t":"byte","b":[4,113,35,9,100,113,0,0]},{"a":33328,"t":"byte","b":[125,240,7,18,53,6,71,18]},{"a":33336,"t":"byte","b":[0,0,125,240,1,35,89,4]},{"a":33344,"t":"byte","b":[113,35,0,0,125,240,2,53]},{"a":33352,"t":"byte","b":[150,7,18,53,0,0,125,240]},{"a":33360,"t":"byte","b":[3,89,100,1,35,89,0,0]},{"a":33368,"t":"byte","b":[125,240,5,150,71,2,53,150]},{"a":33376,"t":"byte","b":[0,0,125,240,9,100,113,3]},{"a":33384,"t":"byte","b":[89,100,0,0,125,240,6,71]},{"a":33392,"t":"byte","b":[18,5,150,71,0,0,125,240]},{"a":33400,"t":"byte","b":[4,113,35,9,100,113,0,0]},{"a":33408,"l":"round_05_bricks","c":"Round 5 brick map, $8280-$831F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 4: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 12 coloured, 84 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 96; bricks in map rows 0-15 (screen text rows 1-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[16,64,0,7,0,0,7,0]},{"a":33416,"t":"byte","b":[0,0,16,64,0,7,0,0]},{"a":33424,"t":"byte","b":[7,0,0,0,8,128,0,0]},{"a":33432,"t":"byte","b":[112,0,112,0,0,0,8,128]},{"a":33440,"t":"byte","b":[0,0,112,0,112,0,0,0]},{"a":33448,"t":"byte","b":[31,192,0,9,153,153,153,0]},{"a":33456,"t":"byte","b":[0,0,31,192,0,9,153,153]},{"a":33464,"t":"byte","b":[153,0,0,0,63,224,0,153]},{"a":33472,"t":"byte","b":[41,153,41,144,0,0,63,224]},{"a":33480,"t":"byte","b":[0,153,41,153,41,144,0,0]},{"a":33488,"t":"byte","b":[127,240,9,153,153,153,153,153]},{"a":33496,"t":"byte","b":[0,0,127,240,9,153,153,153]},{"a":33504,"t":"byte","b":[153,153,0,0,95,208,9,9]},{"a":33512,"t":"byte","b":[153,153,153,9,0,0,95,208]},{"a":33520,"t":"byte","b":[9,9,153,153,153,9,0,0]},{"a":33528,"t":"byte","b":[80,80,9,9,0,0,9,9]},{"a":33536,"t":"byte","b":[0,0,80,80,9,9,0,0]},{"a":33544,"t":"byte","b":[9,9,0,0,13,128,0,0]},{"a":33552,"t":"byte","b":[153,9,144,0,0,0,13,128]},{"a":33560,"t":"byte","b":[0,0,153,9,144,0,0,0]},{"a":33568,"l":"round_06_bricks","c":"Round 6 brick map, $8320-$83BF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 5: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 83 coloured, 0 silver and 7 gold bricks, so the bricks-left counter $0455 starts at 83; bricks in map rows 2-13 (screen text rows 3-14). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33584,"t":"byte","b":[0,0,0,0,170,168,96,32]},{"a":33592,"t":"byte","b":[80,48,80,32,96,0,170,168]},{"a":33600,"t":"byte","b":[96,32,80,48,80,32,96,0]},{"a":33608,"t":"byte","b":[170,168,96,32,80,48,80,32]},{"a":33616,"t":"byte","b":[96,0,170,168,96,32,80,48]},{"a":33624,"t":"byte","b":[80,32,96,0,170,168,96,32]},{"a":33632,"t":"byte","b":[80,48,80,32,96,0,255,248]},{"a":33640,"t":"byte","b":[103,167,167,167,167,167,96,0]},{"a":33648,"t":"byte","b":[170,168,96,32,80,48,80,32]},{"a":33656,"t":"byte","b":[96,0,170,168,96,32,80,48]},{"a":33664,"t":"byte","b":[80,32,96,0,170,168,96,32]},{"a":33672,"t":"byte","b":[80,48,80,32,96,0,170,168]},{"a":33680,"t":"byte","b":[96,32,80,48,80,32,96,0]},{"a":33688,"t":"byte","b":[170,168,112,112,160,112,160,112]},{"a":33696,"t":"byte","b":[112,0,170,168,96,32,80,48]},{"a":33704,"t":"byte","b":[80,32,96,0,0,0,0,0]},{"a":33712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33728,"l":"round_07_bricks","c":"Round 7 brick map, $83C0-$845F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 6: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 98 coloured, 0 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 98; bricks in map rows 2-15 (screen text rows 3-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33744,"t":"byte","b":[0,0,0,0,7,0,0,0]},{"a":33752,"t":"byte","b":[1,20,0,0,0,0,15,128]},{"a":33760,"t":"byte","b":[0,0,17,68,96,0,0,0]},{"a":33768,"t":"byte","b":[31,192,0,1,20,70,103,0]},{"a":33776,"t":"byte","b":[0,0,31,192,0,1,68,102]},{"a":33784,"t":"byte","b":[119,0,0,0,63,224,0,20]},{"a":33792,"t":"byte","b":[70,103,117,80,0,0,63,224]},{"a":33800,"t":"byte","b":[0,68,102,119,85,48,0,0]},{"a":33808,"t":"byte","b":[63,224,0,70,103,117,83,48]},{"a":33816,"t":"byte","b":[0,0,63,224,0,102,119,85]},{"a":33824,"t":"byte","b":[51,32,0,0,63,224,0,103]},{"a":33832,"t":"byte","b":[117,83,50,32,0,0,63,224]},{"a":33840,"t":"byte","b":[0,119,85,51,34,16,0,0]},{"a":33848,"t":"byte","b":[31,192,0,5,83,50,33,0]},{"a":33856,"t":"byte","b":[0,0,31,192,0,5,51,34]},{"a":33864,"t":"byte","b":[17,0,0,0,15,128,0,0]},{"a":33872,"t":"byte","b":[50,33,16,0,0,0,7,0]},{"a":33880,"t":"byte","b":[0,0,2,17,0,0,0,0]},{"a":33888,"l":"round_08_bricks","c":"Round 8 brick map, $8460-$84FF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 7: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 7 coloured, 0 silver and 36 gold bricks, so the bricks-left counter $0455 starts at 7; bricks in map rows 2-14 (screen text rows 3-15). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33904,"t":"byte","b":[0,0,0,0,21,64,0,10]},{"a":33912,"t":"byte","b":[10,10,10,0,0,0,64,16]},{"a":33920,"t":"byte","b":[10,0,0,0,0,10,0,0]},{"a":33928,"t":"byte","b":[104,176,10,160,160,0,160,170]},{"a":33936,"t":"byte","b":[0,0,2,0,0,0,0,16]},{"a":33944,"t":"byte","b":[0,0,0,0,71,16,10,0]},{"a":33952,"t":"byte","b":[10,42,0,10,0,0,18,64]},{"a":33960,"t":"byte","b":[0,10,0,112,10,0,0,0]},{"a":33968,"t":"byte","b":[2,0,0,0,0,96,0,0]},{"a":33976,"t":"byte","b":[0,0,18,64,0,10,0,80]},{"a":33984,"t":"byte","b":[10,0,0,0,71,16,10,0]},{"a":33992,"t":"byte","b":[10,74,0,10,0,0,2,0]},{"a":34000,"t":"byte","b":[0,0,0,48,0,0,0,0]},{"a":34008,"t":"byte","b":[104,176,10,160,160,0,160,170]},{"a":34016,"t":"byte","b":[0,0,64,16,10,0,0,0]},{"a":34024,"t":"byte","b":[0,10,0,0,21,64,0,10]},{"a":34032,"t":"byte","b":[10,10,10,0,0,0,0,0]},{"a":34040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34048,"l":"round_09_bricks","c":"Round 9 brick map, $8500-$859F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 8: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 36 coloured, 0 silver and 18 gold bricks, so the bricks-left counter $0455 starts at 36; bricks in map rows 2-12 (screen text rows 3-13). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34064,"t":"byte","b":[0,0,0,0,112,112,10,58]},{"a":34072,"t":"byte","b":[0,0,10,58,0,0,112,112]},{"a":34080,"t":"byte","b":[10,90,0,0,10,90,0,0]},{"a":34088,"t":"byte","b":[112,112,10,106,0,0,10,106]},{"a":34096,"t":"byte","b":[0,0,112,112,10,170,0,0]},{"a":34104,"t":"byte","b":[10,170,0,0,0,0,0,0]},{"a":34112,"t":"byte","b":[0,0,0,0,0,0,15,128]},{"a":34120,"t":"byte","b":[0,0,65,17,112,0,0,0]},{"a":34128,"t":"byte","b":[15,128,0,0,70,102,112,0]},{"a":34136,"t":"byte","b":[0,0,15,128,0,0,67,51]},{"a":34144,"t":"byte","b":[112,0,0,0,15,128,0,0]},{"a":34152,"t":"byte","b":[69,85,112,0,0,0,15,128]},{"a":34160,"t":"byte","b":[0,0,66,34,112,0,0,0]},{"a":34168,"t":"byte","b":[15,128,0,0,67,51,112,0]},{"a":34176,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34184,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34192,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34208,"l":"round_10_bricks","c":"Round 10 brick map, $85A0-$863F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 9: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 40 coloured, 1 silver and 26 gold bricks, so the bricks-left counter $0455 starts at 41; bricks in map rows 0-15 (screen text rows 1-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[64,0,10,0,0,0,0,0]},{"a":34216,"t":"byte","b":[0]},{"a":34217,"l":"round_10_byte_9","c":"Round 10 map, row 0 byte 9. Named only because the skip trick at $F4BE assembles as BIT $85A9 (operand bytes = LDA #$85, the silver-brick character, reached when $F4BA branches); never read as data. The round 10 map continues to $863F.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[43398,62654]},{"a":34225,"t":"byte","b":[0,0,0,64,0,10,0,0]},{"a":34233,"t":"byte","b":[0,0,0,0,0,64,0,10]},{"a":34241,"t":"byte","b":[0,0,0,0,0,0,0,65]},{"a":34249,"t":"byte","b":[0,10,0,0,6,0,0,0]},{"a":34257,"t":"byte","b":[0,67,128,10,0,0,97,96]},{"a":34265,"t":"byte","b":[0,0,0,71,192,10,0,6]},{"a":34273,"t":"byte","b":[19,22,0,0,0,79,224,10]},{"a":34281,"t":"byte","b":[0,97,49,49,96,0,0,95]},{"a":34289,"t":"byte","b":[240,10,6,19,25,19,22,0]},{"a":34297,"t":"byte","b":[0,79,224,10,0,97,49,49]},{"a":34305,"t":"byte","b":[96,0,0,71,192,10,0,6]},{"a":34313,"t":"byte","b":[19,22,0,0,0,67,128,10]},{"a":34321,"t":"byte","b":[0,0,97,96,0,0,0,65]},{"a":34329,"t":"byte","b":[0,10,0,0,6,0,0,0]},{"a":34337,"t":"byte","b":[0,64,0,10,0,0,0,0]},{"a":34345,"t":"byte","b":[0,0,0,64,0,10,0,0]},{"a":34353,"t":"byte","b":[0,0,0,0,0,127,248,10]},{"a":34361,"t":"byte","b":[170,170,170,170,170,160,0]},{"a":34368,"l":"round_11_bricks","c":"Round 11 brick map, $8640-$86DF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 10: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 0 coloured, 72 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 72; bricks in map rows 2-12 (screen text rows 3-13). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34384,"t":"byte","b":[0,0,0,0,127,240,9,153]},{"a":34392,"t":"byte","b":[153,153,153,153,0,0,64,16]},{"a":34400,"t":"byte","b":[9,0,0,0,0,9,0,0]},{"a":34408,"t":"byte","b":[95,208,9,9,153,153,153,9]},{"a":34416,"t":"byte","b":[0,0,80,80,9,9,0,0]},{"a":34424,"t":"byte","b":[9,9,0,0,87,80,9,9]},{"a":34432,"t":"byte","b":[9,153,9,9,0,0,85,80]},{"a":34440,"t":"byte","b":[9,9,9,9,9,9,0,0]},{"a":34448,"t":"byte","b":[87,80,9,9,9,153,9,9]},{"a":34456,"t":"byte","b":[0,0,80,80,9,9,0,0]},{"a":34464,"t":"byte","b":[9,9,0,0,95,208,9,9]},{"a":34472,"t":"byte","b":[153,153,153,9,0,0,64,16]},{"a":34480,"t":"byte","b":[9,0,0,0,0,9,0,0]},{"a":34488,"t":"byte","b":[127,240,9,153,153,153,153,153]},{"a":34496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34528,"l":"round_12_bricks","c":"Round 12 brick map, $86E0-$877F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 11: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 8 coloured, 0 silver and 62 gold bricks, so the bricks-left counter $0455 starts at 8; bricks in map rows 3-15 (screen text rows 4-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34552,"t":"byte","b":[0,0,0,0,0,0,255,248]},{"a":34560,"t":"byte","b":[170,170,170,170,170,170,160,0]},{"a":34568,"t":"byte","b":[8,48,0,0,160,0,0,164]},{"a":34576,"t":"byte","b":[0,0,104,32,10,16,160,0]},{"a":34584,"t":"byte","b":[0,160,0,0,73,32,10,0]},{"a":34592,"t":"byte","b":[160,10,0,160,0,0,77,32]},{"a":34600,"t":"byte","b":[10,0,165,10,0,160,0,0]},{"a":34608,"t":"byte","b":[73,32,10,0,160,10,0,160]},{"a":34616,"t":"byte","b":[0,0,89,96,10,4,160,10]},{"a":34624,"t":"byte","b":[6,160,0,0,73,32,10,0]},{"a":34632,"t":"byte","b":[160,10,0,160,0,0,75,32]},{"a":34640,"t":"byte","b":[10,0,160,42,0,160,0,0]},{"a":34648,"t":"byte","b":[73,32,10,0,160,10,0,160]},{"a":34656,"t":"byte","b":[0,0,97,0,10,48,0,10]},{"a":34664,"t":"byte","b":[0,0,0,0,65,8,10,0]},{"a":34672,"t":"byte","b":[0,10,0,0,112,0,127,248]},{"a":34680,"t":"byte","b":[10,170,170,170,170,170,160,0]},{"a":34688,"l":"round_13_bricks","c":"Round 13 brick map, $8780-$881F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 12: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 72 coloured, 0 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 72; bricks in map rows 3-10 (screen text rows 4-11). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34712,"t":"byte","b":[0,0,0,0,0,0,119,112]},{"a":34720,"t":"byte","b":[7,119,1,17,7,119,0,0]},{"a":34728,"t":"byte","b":[119,112,4,68,7,119,4,68]},{"a":34736,"t":"byte","b":[0,0,119,112,6,102,3,51]},{"a":34744,"t":"byte","b":[6,102,0,0,119,112,2,34]},{"a":34752,"t":"byte","b":[5,85,2,34,0,0,119,112]},{"a":34760,"t":"byte","b":[5,85,2,34,5,85,0,0]},{"a":34768,"t":"byte","b":[119,112,3,51,6,102,3,51]},{"a":34776,"t":"byte","b":[0,0,119,112,7,119,4,68]},{"a":34784,"t":"byte","b":[7,119,0,0,119,112,1,17]},{"a":34792,"t":"byte","b":[7,119,1,17,0,0,0,0]},{"a":34800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34824,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34832,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34840,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34848,"l":"round_14_bricks","c":"Round 14 brick map, $8820-$88BF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 13: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 69 coloured, 22 silver and 8 gold bricks, so the bricks-left counter $0455 starts at 91; bricks in map rows 2-15 (screen text rows 3-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34856,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":34864,"t":"byte","b":[0,0,0,0,255,248,102,102]},{"a":34872,"t":"byte","b":[102,102,102,102,96,0,128,8]},{"a":34880,"t":"byte","b":[160,0,0,0,0,0,160,0]},{"a":34888,"t":"byte","b":[255,248,102,102,102,102,102,102]},{"a":34896,"t":"byte","b":[96,0,0,0,0,0,0,0]},{"a":34904,"t":"byte","b":[0,0,0,0,255,248,73,153]},{"a":34912,"t":"byte","b":[153,153,153,153,64,0,128,8]},{"a":34920,"t":"byte","b":[160,0,0,0,0,0,160,0]},{"a":34928,"t":"byte","b":[255,248,17,17,17,17,17,17]},{"a":34936,"t":"byte","b":[16,0,0,0,0,0,0,0]},{"a":34944,"t":"byte","b":[0,0,0,0,255,248,57,153]},{"a":34952,"t":"byte","b":[153,153,153,153,48,0,128,8]},{"a":34960,"t":"byte","b":[160,0,0,0,0,0,160,0]},{"a":34968,"t":"byte","b":[255,248,34,34,34,34,34,34]},{"a":34976,"t":"byte","b":[32,0,0,0,0,0,0,0]},{"a":34984,"t":"byte","b":[0,0,0,0,255,248,34,34]},{"a":34992,"t":"byte","b":[34,34,34,34,32,0,128,8]},{"a":35000,"t":"byte","b":[160,0,0,0,0,0,160,0]},{"a":35008,"l":"round_15_bricks","c":"Round 15 brick map, $88C0-$895F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 14: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 138 coloured, 10 silver and 8 gold bricks, so the bricks-left counter $0455 starts at 148; bricks in map rows 4-15 (screen text rows 5-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35032,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35048,"t":"byte","b":[255,248,51,51,51,51,51,51]},{"a":35056,"t":"byte","b":[48,0,255,248,49,163,51,51]},{"a":35064,"t":"byte","b":[51,161,48,0,255,248,49,122]},{"a":35072,"t":"byte","b":[51,51,58,81,48,0,255,248]},{"a":35080,"t":"byte","b":[49,119,163,51,165,81,48,0]},{"a":35088,"t":"byte","b":[255,248,49,119,122,26,85,81]},{"a":35096,"t":"byte","b":[48,0,255,248,49,119,119,21]},{"a":35104,"t":"byte","b":[85,81,48,0,255,248,49,119]},{"a":35112,"t":"byte","b":[119,21,85,81,48,0,255,248]},{"a":35120,"t":"byte","b":[57,119,119,21,85,89,48,0]},{"a":35128,"t":"byte","b":[255,248,51,151,119,21,85,147]},{"a":35136,"t":"byte","b":[48,0,255,248,51,57,119,21]},{"a":35144,"t":"byte","b":[89,51,48,0,255,248,51,51]},{"a":35152,"t":"byte","b":[151,21,147,51,48,0,255,248]},{"a":35160,"t":"byte","b":[51,51,57,25,51,51,48,0]},{"a":35168,"l":"round_16_bricks","c":"Round 16 brick map, $8960-$89FF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 15: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 72 coloured, 0 silver and 6 gold bricks, so the bricks-left counter $0455 starts at 72; bricks in map rows 2-15 (screen text rows 3-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35176,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35184,"t":"byte","b":[0,0,0,0,2,0,0,0]},{"a":35192,"t":"byte","b":[0,160,0,0,0,0,13,128]},{"a":35200,"t":"byte","b":[0,0,17,1,16,0,0,0]},{"a":35208,"t":"byte","b":[50,96,0,17,0,160,1,16]},{"a":35216,"t":"byte","b":[0,0,205,152,17,0,51,3]},{"a":35224,"t":"byte","b":[48,1,16,0,50,96,0,51]},{"a":35232,"t":"byte","b":[0,160,3,48,0,0,205,152]},{"a":35240,"t":"byte","b":[51,0,119,7,112,3,48,0]},{"a":35248,"t":"byte","b":[50,96,0,119,0,160,7,112]},{"a":35256,"t":"byte","b":[0,0,205,152,119,0,85,5]},{"a":35264,"t":"byte","b":[80,7,112,0,50,96,0,85]},{"a":35272,"t":"byte","b":[0,160,5,80,0,0,205,152]},{"a":35280,"t":"byte","b":[85,0,34,2,32,5,80,0]},{"a":35288,"t":"byte","b":[50,96,0,34,0,160,2,32]},{"a":35296,"t":"byte","b":[0,0,205,152,34,0,102,6]},{"a":35304,"t":"byte","b":[96,2,32,0,48,96,0,102]},{"a":35312,"t":"byte","b":[0,0,6,96,0,0,192,24]},{"a":35320,"t":"byte","b":[102,0,0,0,0,6,96,0]},{"a":35328,"l":"round_17_bricks","c":"Round 17 brick map, $8A00-$8A9F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 16: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 58 coloured, 10 silver and 6 gold bricks, so the bricks-left counter $0455 starts at 68; bricks in map rows 2-15 (screen text rows 3-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35344,"t":"byte","b":[0,0,0,0,2,0,0,0]},{"a":35352,"t":"byte","b":[0,144,0,0,0,0,31,192]},{"a":35360,"t":"byte","b":[0,6,102,149,85,0,0,0]},{"a":35368,"t":"byte","b":[63,224,0,102,97,17,85,80]},{"a":35376,"t":"byte","b":[0,0,63,240,0,102,17,17]},{"a":35384,"t":"byte","b":[21,85,0,0,127,240,6,102]},{"a":35392,"t":"byte","b":[17,17,21,85,0,0,127,240]},{"a":35400,"t":"byte","b":[6,102,17,17,21,85,0,0]},{"a":35408,"t":"byte","b":[127,240,6,102,17,17,21,85]},{"a":35416,"t":"byte","b":[0,0,74,144,9,0,144,144]},{"a":35424,"t":"byte","b":[144,9,0,0,2,0,0,0]},{"a":35432,"t":"byte","b":[0,144,0,0,0,0,2,0]},{"a":35440,"t":"byte","b":[0,0,0,144,0,0,0,0]},{"a":35448,"t":"byte","b":[2,0,0,0,0,144,0,0]},{"a":35456,"t":"byte","b":[0,0,10,0,0,0,160,160]},{"a":35464,"t":"byte","b":[0,0,0,0,14,0,0,0]},{"a":35472,"t":"byte","b":[170,160,0,0,0,0,4,0]},{"a":35480,"t":"byte","b":[0,0,10,0,0,0,0,0]},{"a":35488,"l":"round_18_bricks","c":"Round 18 brick map, $8AA0-$8B3F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 17: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 60 coloured, 1 silver and 32 gold bricks, so the bricks-left counter $0455 starts at 61; bricks in map rows 2-12 (screen text rows 3-13). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35504,"t":"byte","b":[0,0,0,0,191,232,112,167]},{"a":35512,"t":"byte","b":[119,119,119,160,112,0,191,232]},{"a":35520,"t":"byte","b":[112,170,119,119,122,160,112,0]},{"a":35528,"t":"byte","b":[175,168,112,160,167,119,160,160]},{"a":35536,"t":"byte","b":[112,0,175,168,112,160,74,122]},{"a":35544,"t":"byte","b":[48,160,112,0,170,168,112,160]},{"a":35552,"t":"byte","b":[64,144,48,160,112,0,170,168]},{"a":35560,"t":"byte","b":[112,160,64,80,48,160,112,0]},{"a":35568,"t":"byte","b":[170,168,112,160,64,80,48,160]},{"a":35576,"t":"byte","b":[112,0,170,168,112,160,64,80]},{"a":35584,"t":"byte","b":[48,160,112,0,170,168,112,160]},{"a":35592,"t":"byte","b":[64,80,48,160,112,0,170,168]},{"a":35600,"t":"byte","b":[112,160,64,80,48,160,112,0]},{"a":35608,"t":"byte","b":[250,248,122,170,64,80,58,170]},{"a":35616,"l":"round_18_row_12","c":"Round 18 map, row 12 (bytes $8B20-$8B29). The symbol comes from a misaligned decode in the loader's stack-page code at $0107 (the bytes $AE $20 $8B read as LDX $8B20); no game code reads this address directly. The round 18 map continues to $8B3F.","t":"byte","b":[112,0,0,0,0,0,0,0]},{"a":35624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35648,"l":"round_19_bricks","c":"Round 19 brick map, $8B40-$8BDF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 18: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 57 coloured, 0 silver and 24 gold bricks, so the bricks-left counter $0455 starts at 57; bricks in map rows 4-12 (screen text rows 5-13). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35688,"t":"byte","b":[63,224,0,170,170,170,170,160]},{"a":35696,"t":"byte","b":[0,0,63,224,0,82,100,164]},{"a":35704,"t":"byte","b":[98,80,0,0,63,224,0,82]},{"a":35712,"t":"byte","b":[100,164,98,80,0,0,63,224]},{"a":35720,"t":"byte","b":[0,82,100,164,98,80,0,0]},{"a":35728,"t":"byte","b":[63,224,0,82,100,116,98,80]},{"a":35736,"t":"byte","b":[0,0,63,224,0,82,100,164]},{"a":35744,"t":"byte","b":[98,80,0,0,63,224,0,82]},{"a":35752,"t":"byte","b":[100,164,98,80,0,0,63,224]},{"a":35760,"t":"byte","b":[0,82,100,164,98,80,0,0]},{"a":35768,"t":"byte","b":[63,224,0,170,170,170,170,160]},{"a":35776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35808,"l":"round_20_bricks","c":"Round 20 brick map, $8BE0-$8C7F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 19: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 18 coloured, 4 silver and 68 gold bricks, so the bricks-left counter $0455 starts at 22; bricks in map rows 2-15 (screen text rows 3-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35824,"t":"byte","b":[0,0,0,0,255,248,161,167]},{"a":35832,"t":"byte","b":[163,165,162,166,160,0,255,248]},{"a":35840,"t":"byte","b":[164,169,169,169,169,167,160,0]},{"a":35848,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35856,"t":"byte","b":[0,0,234,168,164,160,160,160]},{"a":35864,"t":"byte","b":[160,160,160,0,186,168,160,164]},{"a":35872,"t":"byte","b":[160,160,160,160,160,0,174,168]},{"a":35880,"t":"byte","b":[160,160,164,160,160,160,160,0]},{"a":35888,"t":"byte","b":[171,168,160,160,160,164,160,160]},{"a":35896,"t":"byte","b":[160,0,170,232,160,160,160,160]},{"a":35904,"t":"byte","b":[164,160,160,0,0,0,0,0]},{"a":35912,"t":"byte","b":[0,0,0,0,0,0,42,224]},{"a":35920,"t":"byte","b":[0,160,160,160,164,160,0,0]},{"a":35928,"t":"byte","b":[43,160,0,160,160,164,160,160]},{"a":35936,"t":"byte","b":[0,0,46,160,0,160,164,160]},{"a":35944,"t":"byte","b":[160,160,0,0,26,128,0,4]},{"a":35952,"t":"byte","b":[160,160,160,0,0,0,66,0]},{"a":35960,"t":"byte","b":[4,0,0,160,0,0,0,0]},{"a":35968,"l":"round_21_bricks","c":"Round 21 brick map, $8C80-$8D1F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 20: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 11 coloured, 0 silver and 46 gold bricks, so the bricks-left counter $0455 starts at 11; bricks in map rows 2-12 (screen text rows 3-13). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":35984,"t":"byte","b":[0,0,0,0,63,224,0,163]},{"a":35992,"t":"byte","b":[51,51,51,160,0,0,32,32]},{"a":36000,"t":"byte","b":[0,160,0,0,0,160,0,0]},{"a":36008,"t":"byte","b":[47,160,0,160,170,170,160,160]},{"a":36016,"t":"byte","b":[0,0,40,160,0,160,160,0]},{"a":36024,"t":"byte","b":[160,160,0,0,40,160,0,160]},{"a":36032,"t":"byte","b":[160,0,160,160,0,0,42,160]},{"a":36040,"t":"byte","b":[0,160,160,112,160,160,0,0]},{"a":36048,"t":"byte","b":[40,160,0,160,160,0,160,160]},{"a":36056,"t":"byte","b":[0,0,40,160,0,160,160,0]},{"a":36064,"t":"byte","b":[160,160,0,0,47,160,0,160]},{"a":36072,"t":"byte","b":[163,51,160,160,0,0,32,32]},{"a":36080,"t":"byte","b":[0,160,0,0,0,160,0,0]},{"a":36088,"t":"byte","b":[63,224,0,170,170,170,170,160]},{"a":36096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36128,"l":"round_22_bricks","c":"Round 22 brick map, $8D20-$8DBF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 21: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 80 coloured, 0 silver and 16 gold bricks, so the bricks-left counter $0455 starts at 80; bricks in map rows 2-11 (screen text rows 3-12). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36136,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36144,"t":"byte","b":[0,0,0,0,255,248,119,119]},{"a":36152,"t":"byte","b":[119,119,119,119,112,0,255,248]},{"a":36160,"t":"byte","b":[119,119,119,119,119,119,112,0]},{"a":36168,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36176,"t":"byte","b":[0,0,239,184,34,160,162,34]},{"a":36184,"t":"byte","b":[160,162,32,0,239,184,34,160]},{"a":36192,"t":"byte","b":[162,34,160,162,32,0,239,184]},{"a":36200,"t":"byte","b":[34,160,162,34,160,162,32,0]},{"a":36208,"t":"byte","b":[239,184,34,160,162,34,160,162]},{"a":36216,"t":"byte","b":[32,0,0,0,0,0,0,0]},{"a":36224,"t":"byte","b":[0,0,0,0,255,248,17,17]},{"a":36232,"t":"byte","b":[17,17,17,17,16,0,255,248]},{"a":36240,"t":"byte","b":[17,17,17,17,17,17,16,0]},{"a":36248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36280,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36288,"l":"round_23_bricks","c":"Round 23 brick map, $8DC0-$8E5F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 22: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 22 coloured, 72 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 94; bricks in map rows 2-14 (screen text rows 3-15). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36304,"t":"byte","b":[0,0,0,0,255,248,17,17]},{"a":36312,"t":"byte","b":[17,17,17,17,16,0,0,0]},{"a":36320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36328,"t":"byte","b":[59,184,0,153,144,153,144,153]},{"a":36336,"t":"byte","b":[144,0,59,184,0,149,144,149]},{"a":36344,"t":"byte","b":[144,149,144,0,59,184,0,153]},{"a":36352,"t":"byte","b":[144,153,144,153,144,0,0,0]},{"a":36360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36368,"t":"byte","b":[119,112,9,153,9,153,9,153]},{"a":36376,"t":"byte","b":[0,0,119,112,9,121,9,121]},{"a":36384,"t":"byte","b":[9,121,0,0,119,112,9,153]},{"a":36392,"t":"byte","b":[9,153,9,153,0,0,0,0]},{"a":36400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36408,"t":"byte","b":[238,224,153,144,153,144,153,147]},{"a":36416,"t":"byte","b":[0,0,238,224,150,144,150,144]},{"a":36424,"t":"byte","b":[150,144,0,0,238,224,153,144]},{"a":36432,"t":"byte","b":[153,144,153,144,0,0,0,0]},{"a":36440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36448,"l":"round_24_bricks","c":"Round 24 brick map, $8E60-$8EFF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 23: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 75 coloured, 0 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 75; bricks in map rows 5-15 (screen text rows 6-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36472,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36480,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36488,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36496,"t":"byte","b":[0,0,7,0,0,0,1,17]},{"a":36504,"t":"byte","b":[0,0,0,0,7,0,0,0]},{"a":36512,"t":"byte","b":[1,17,0,0,0,0,7,0]},{"a":36520,"t":"byte","b":[0,0,1,17,0,0,0,0]},{"a":36528,"t":"byte","b":[15,128,0,0,17,17,16,0]},{"a":36536,"t":"byte","b":[0,0,15,128,0,0,22,22]},{"a":36544,"t":"byte","b":[16,0,0,0,31,192,0,1]},{"a":36552,"t":"byte","b":[102,22,97,0,0,0,31,192]},{"a":36560,"t":"byte","b":[0,6,102,102,102,0,0,0]},{"a":36568,"t":"byte","b":[63,224,0,102,102,102,102,96]},{"a":36576,"t":"byte","b":[0,0,63,224,0,102,102,102]},{"a":36584,"t":"byte","b":[102,96,0,0,127,240,6,102]},{"a":36592,"t":"byte","b":[102,102,102,102,0,0,255,248]},{"a":36600,"t":"byte","b":[102,102,102,102,102,102,96,0]},{"a":36608,"l":"round_25_bricks","c":"Round 25 brick map, $8F00-$8F9F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 24: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 57 coloured, 9 silver and 37 gold bricks, so the bricks-left counter $0455 starts at 66; bricks in map rows 2-12 (screen text rows 3-13). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36624,"t":"byte","b":[0,0,0,0,255,248,34,34]},{"a":36632,"t":"byte","b":[34,34,34,34,32,0,255,248]},{"a":36640,"t":"byte","b":[85,85,85,85,85,85,80,0]},{"a":36648,"t":"byte","b":[255,248,102,102,102,102,102,102]},{"a":36656,"t":"byte","b":[96,0,255,248,170,170,169,153]},{"a":36664,"t":"byte","b":[170,170,160,0,248,248,162,34]},{"a":36672,"t":"byte","b":[160,0,166,102,160,0,248,248]},{"a":36680,"t":"byte","b":[162,34,160,0,166,102,160,0]},{"a":36688,"t":"byte","b":[128,8,160,0,0,0,0,0]},{"a":36696,"t":"byte","b":[160,0,128,8,160,0,0,0]},{"a":36704,"t":"byte","b":[0,0,160,0,143,136,160,0]},{"a":36712,"t":"byte","b":[165,85,160,0,160,0,143,136]},{"a":36720,"t":"byte","b":[160,0,165,85,160,0,160,0]},{"a":36728,"t":"byte","b":[255,248,169,153,170,170,169,153]},{"a":36736,"t":"byte","b":[160,0,0,0,0,0,0,0]},{"a":36744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36768,"l":"round_26_bricks","c":"Round 26 brick map, $8FA0-$903F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 25: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 16 coloured, 3 silver and 19 gold bricks, so the bricks-left counter $0455 starts at 19; bricks in map rows 4-11 (screen text rows 5-12). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36808,"t":"byte","b":[62,0,0,169,153,160,0,0]},{"a":36816,"t":"byte","b":[0,0,65,0,10,0,0,10]},{"a":36824,"t":"byte","b":[0,0,0,0,156,128,160,3]},{"a":36832,"t":"byte","b":[51,0,160,0,0,0,190,128]},{"a":36840,"t":"byte","b":[160,85,85,80,160,0,0,0]},{"a":36848,"t":"byte","b":[190,128,160,102,102,96,160,0]},{"a":36856,"t":"byte","b":[0,0,156,128,160,4,68,0]},{"a":36864,"t":"byte","b":[160,0,0,0,65,0,10,0]},{"a":36872,"t":"byte","b":[0,10,0,0,0,0,62,0]},{"a":36880,"t":"byte","b":[0,170,170,160,0,0,0,0]},{"a":36888,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36904,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36928,"l":"round_27_bricks","c":"Round 27 brick map, $9040-$90DF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 26: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 26 coloured, 52 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 78; bricks in map rows 9-15 (screen text rows 10-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36936,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":36992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37008,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37016,"t":"byte","b":[0,0,255,248,153,153,153,153]},{"a":37024,"t":"byte","b":[153,153,144,0,255,248,119,119]},{"a":37032,"t":"byte","b":[119,119,119,119,112,0,255,248]},{"a":37040,"t":"byte","b":[153,153,153,153,153,153,144,0]},{"a":37048,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37056,"t":"byte","b":[0,0,255,248,153,153,153,153]},{"a":37064,"t":"byte","b":[153,153,144,0,255,248,34,34]},{"a":37072,"t":"byte","b":[34,34,34,34,32,0,255,248]},{"a":37080,"t":"byte","b":[153,153,153,153,153,153,144,0]},{"a":37088,"l":"round_28_bricks","c":"Round 28 brick map, $90E0-$917F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 27: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 64 coloured, 0 silver and 25 gold bricks, so the bricks-left counter $0455 starts at 64; bricks in map rows 3-14 (screen text rows 4-15). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37112,"t":"byte","b":[0,0,0,0,0,0,255,248]},{"a":37120,"t":"byte","b":[102,102,102,102,102,102,96,0]},{"a":37128,"t":"byte","b":[255,248,106,170,164,164,170,170]},{"a":37136,"t":"byte","b":[96,0,192,24,106,0,0,0]},{"a":37144,"t":"byte","b":[0,10,96,0,224,56,106,64]},{"a":37152,"t":"byte","b":[0,0,0,74,96,0,240,120]},{"a":37160,"t":"byte","b":[106,68,0,0,4,74,96,0]},{"a":37168,"t":"byte","b":[248,248,106,68,64,0,68,74]},{"a":37176,"t":"byte","b":[96,0,125,240,6,164,68,4]},{"a":37184,"t":"byte","b":[68,166,0,0,63,224,0,106]},{"a":37192,"t":"byte","b":[68,68,74,96,0,0,31,192]},{"a":37200,"t":"byte","b":[0,6,164,68,166,0,0,0]},{"a":37208,"t":"byte","b":[15,128,0,0,106,74,96,0]},{"a":37216,"t":"byte","b":[0,0,7,0,0,0,6,70]},{"a":37224,"t":"byte","b":[0,0,0,0,2,0,0,0]},{"a":37232,"t":"byte","b":[0,96,0,0,0,0,0,0]},{"a":37240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37248,"l":"round_29_bricks","c":"Round 29 brick map, $9180-$921F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 28: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 94 coloured, 8 silver and 30 gold bricks, so the bricks-left counter $0455 starts at 102; bricks in map rows 3-13 (screen text rows 4-14). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37272,"t":"byte","b":[0,0,0,0,0,0,253,248]},{"a":37280,"t":"byte","b":[119,119,122,10,119,119,112,0]},{"a":37288,"t":"byte","b":[253,248,68,68,74,10,68,68]},{"a":37296,"t":"byte","b":[64,0,253,248,170,26,170,10]},{"a":37304,"t":"byte","b":[170,26,160,0,253,248,102,102]},{"a":37312,"t":"byte","b":[106,10,102,102,96,0,253,248]},{"a":37320,"t":"byte","b":[34,34,42,10,34,34,32,0]},{"a":37328,"t":"byte","b":[253,248,85,85,90,10,85,85]},{"a":37336,"t":"byte","b":[80,0,253,248,153,25,154,10]},{"a":37344,"t":"byte","b":[153,25,144,0,253,248,51,51]},{"a":37352,"t":"byte","b":[58,10,51,51,48,0,253,248]},{"a":37360,"t":"byte","b":[68,68,74,10,68,68,64,0]},{"a":37368,"t":"byte","b":[253,248,119,119,122,10,119,119]},{"a":37376,"t":"byte","b":[112,0,253,248,17,17,26,10]},{"a":37384,"t":"byte","b":[17,17,16,0,0,0,0,0]},{"a":37392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37408,"l":"round_30_bricks","c":"Round 30 brick map, $9220-$92BF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 29: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 71 coloured, 7 silver and 6 gold bricks, so the bricks-left counter $0455 starts at 78; bricks in map rows 2-13 (screen text rows 3-14). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37424,"t":"byte","b":[0,0,0,0,192,0,23,0]},{"a":37432,"t":"byte","b":[0,0,0,0,0,0,240,0]},{"a":37440,"t":"byte","b":[23,70,0,0,0,0,0,0]},{"a":37448,"t":"byte","b":[252,0,23,70,37,0,0,0]},{"a":37456,"t":"byte","b":[0,0,255,0,23,70,37,49]},{"a":37464,"t":"byte","b":[0,0,0,0,255,192,23,70]},{"a":37472,"t":"byte","b":[37,49,116,0,0,0,255,240]},{"a":37480,"t":"byte","b":[151,70,37,49,116,98,0,0]},{"a":37488,"t":"byte","b":[127,248,10,150,37,49,116,98]},{"a":37496,"t":"byte","b":[80,0,31,248,0,10,149,49]},{"a":37504,"t":"byte","b":[116,98,80,0,7,248,0,0]},{"a":37512,"t":"byte","b":[10,145,116,98,80,0,1,248]},{"a":37520,"t":"byte","b":[0,0,0,10,148,98,80,0]},{"a":37528,"t":"byte","b":[0,120,0,0,0,0,10,146]},{"a":37536,"t":"byte","b":[80,0,0,24,0,0,0,0]},{"a":37544,"t":"byte","b":[0,10,144,0,0,0,0,0]},{"a":37552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37568,"l":"round_31_bricks","c":"Round 31 brick map, $92C0-$935F (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 30: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 46 coloured, 46 silver and 0 gold bricks, so the bricks-left counter $0455 starts at 92; bricks in map rows 2-15 (screen text rows 3-16). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37584,"t":"byte","b":[0,0,0,0,170,168,80,32]},{"a":37592,"t":"byte","b":[96,64,112,16,112,0,170,168]},{"a":37600,"t":"byte","b":[144,144,144,144,144,144,144,0]},{"a":37608,"t":"byte","b":[85,80,6,2,5,3,1,1]},{"a":37616,"t":"byte","b":[0,0,85,80,9,9,9,9]},{"a":37624,"t":"byte","b":[9,9,0,0,170,168,48,80]},{"a":37632,"t":"byte","b":[32,96,64,112,16,0,170,168]},{"a":37640,"t":"byte","b":[144,144,144,144,144,144,144,0]},{"a":37648,"t":"byte","b":[85,80,4,6,2,5,3,1]},{"a":37656,"t":"byte","b":[0,0,85,80,9,9,9,9]},{"a":37664,"t":"byte","b":[9,9,0,0,170,168,16,48]},{"a":37672,"t":"byte","b":[80,32,96,64,112,0,170,168]},{"a":37680,"t":"byte","b":[144,144,144,144,144,144,144,0]},{"a":37688,"t":"byte","b":[85,80,7,4,6,2,5,3]},{"a":37696,"t":"byte","b":[0,0,85,80,9,9,9,9]},{"a":37704,"t":"byte","b":[9,9,0,0,170,168,16,16]},{"a":37712,"t":"byte","b":[48,80,32,96,64,0,170,168]},{"a":37720,"t":"byte","b":[144,144,144,144,144,144,144,0]},{"a":37728,"l":"round_32_bricks","c":"Round 32 brick map, $9360-$93FF (160 bytes), drawn by $F3C2 when the player's round index $093D,x is 31: 16 rows of 10 bytes, a 16-bit column mask (bytes 0-1, bit 15 = brick column 0, only columns 0-13 drawn) then 16 colour nibbles (0-7 a coloured brick of that C64 colour; 8+ with nibble AND 3 = 1 silver, otherwise gold). Holds 29 coloured, 9 silver and 40 gold bricks, so the bricks-left counter $0455 starts at 38; bricks in map rows 2-13 (screen text rows 3-14). Decoded map: work/agent12/rounds.txt.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37744,"t":"byte","b":[0,0,0,0,42,160,0,160]},{"a":37752,"t":"byte","b":[160,160,160,160,0,0,42,160]},{"a":37760,"t":"byte","b":[0,160,160,160,160,160,0,0]},{"a":37768,"t":"byte","b":[42,224,0,160,160,160,165,80]},{"a":37776,"t":"byte","b":[0,0,42,160,0,160,160,160]},{"a":37784,"t":"byte","b":[160,160,0,0,43,224,0,160]},{"a":37792,"t":"byte","b":[160,162,34,32,0,0,42,160]},{"a":37800,"t":"byte","b":[0,160,160,160,160,160,0,0]},{"a":37808,"t":"byte","b":[47,224,0,160,166,102,102,96]},{"a":37816,"t":"byte","b":[0,0,42,160,0,160,160,160]},{"a":37824,"t":"byte","b":[160,160,0,0,63,224,0,164]},{"a":37832,"t":"byte","b":[68,68,68,64,0,0,42,160]},{"a":37840,"t":"byte","b":[0,160,160,160,160,160,0,0]},{"a":37848,"t":"byte","b":[63,224,0,119,119,119,119,112]},{"a":37856,"t":"byte","b":[0,0,63,224,0,153,153,153]},{"a":37864,"t":"byte","b":[153,144,0,0,0,0,0,0]},{"a":37872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37880,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37888,"l":"game_entry","c":"Game entry from the loader (hand-over point, the analysed snapshot stops here): LDA #$35 / STA $01 maps RAM at $A000-$BFFF and $E000-$FFFF with I/O at $D000, then the undocumented NOP #imm at $9404 and JMP $095A into the start-up chain ($095A -> $B9C3 -> $F000).","t":"code","b":[169,53],"m":"lda","o":"#$35"},{"a":37890,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"cpu_port"},{"a":37892,"l":"entry_nop_imm","c":"$80 $AD: undocumented NOP #$AD (2 bytes), does nothing; executed at the hand-over between STA $01 and JMP $095A (simulator).","t":"byte","b":[128,173]},{"a":37894,"l":"entry_jmp","c":"JMP $095A: on to the start-up code (undocumented NOP abs,X, JSR $B9C3, which ends in JMP $F000 and never returns).","t":"code","b":[76,90,9],"m":"jmp","oa":2394,"o":"start_hop"},{"a":37897,"l":"mux_order","c":"Sprite multiplexer: display order, 12 object numbers (0-11) sorted by Y, read by the raster IRQs at $FBFB, $F961 and $F993 (object = mux_order[$04]). Copied each frame from obj_order by $F7CD.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[63454,63841,63891,64507]},{"a":37905,"t":"byte","b":[0,0,0]},{"a":37908,"l":"obj_order_m1","c":"Last byte of mux_order and also the base of obj_order-1: the insertion sort at $FA0C/$FA36 reads $9414,X with X >= 1 to get the previous entry of obj_order.","t":"byte","b":[0],"x":[64012,64054]},{"a":37909,"l":"obj_order","c":"Working order of the 12 sprite objects, set to 0-11 by $F7FE and insertion-sorted by obj_y each frame ($FA06-$FA4D); $F7EB finds the last object with a non-zero Y. Copied to mux_order by $F7CD.","t":"byte","b":[0,0,0],"x":[63451,63469,63489,64018,64037,64057,64067]},{"a":37912,"l":"d418_decoy","c":"obj_order entry 3, and the harmless target of the volume-register trick in the drum samples $86 ($ACF3), $84 ($B51D) and $82 ($F362): each makes its STA $9418 into STA $D418 by adding $40 to the operand's high byte, and puts $94 back afterwards.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[44275,46365,62306]},{"a":37920,"t":"byte","b":[0]},{"a":37921,"l":"mux_y","c":"Sprite multiplexer copy of obj_y for the 12 objects ($9421-$942C), taken by $F7CD each frame and read by the raster IRQs ($FBFE, $F964, $F996) as the sprite Y to write to $D001+2n.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[63442,63844,63894,64510]},{"a":37929,"t":"byte","b":[0,0,0,0]},{"a":37933,"l":"obj_y","c":"Object Y positions (sprite Y), 12 objects $942D-$9438: 0-1 the Vaus halves, 2-3 laser shots, 4-6 the three balls, 7 the capsule, 8-10 the enemies (or Doh's shots), 11 not used by code found. 0 hides an object (cleared at $9A82, $9B81). Vaus Y is $E0 in play ($9A9E).","t":"byte","b":[0],"x":[1788,1883,1950,2002,2275,39584,39608,39772,39813,42787,43421,43670,43967,46113,46118,46264,61957,61979,63237,63439,63472,64015,64021,64026,64040]},{"a":37934,"l":"vaus_right_y","c":"obj_y[1], the right half of the Vaus: set to $E0 with the left half at $9AA3, cleared at $9B5F when the Vaus is destroyed; also read at $F21E.","t":"byte","b":[0],"x":[39587,39775,61982]},{"a":37935,"l":"laser_y","c":"obj_y[2-3] ($942F, $9430): the two laser-shot objects. Started at $E8 by fire_laser ($A791), moved up 4 a frame by update_lasers ($A647) until below $3A, cleared when the shot is spent. The intro uses them for the patch sprites ($0917, $091A).","t":"byte","b":[0],"x":[2327,39558,42567,42577,42606,42621,42685,42742,42897]},{"a":37936,"l":"laser2_y","c":"obj_y[3], the second laser shot (laser_y + 1); written by name only by the intro ($091A).","t":"byte","b":[0],"x":[2330]},{"a":37937,"l":"ball_y","c":"obj_y[4-6] ($9431-$9433): the three balls (slot 0-2). Set to Vaus Y + 8 on the Vaus ($9ABE, $AA9C), moved by $B334, tested against bricks ($AE06), the bat ($ABC5), enemies ($9E35).","t":"byte","b":[0,0,0],"x":[39614,40501,40550,40621,40669,43229,43268,43676,43973,43980,44550,44662,44964,44991,45018,45045,45847,45887,45890,45969,45972,46003,46021,46027]},{"a":37940,"l":"capsule_y","c":"obj_y[7]: the falling capsule. Set from the broken brick's row at $B242, +1 a frame in update_capsule until $FA, then cleared with capsule_type ($AA0D).","t":"byte","b":[0],"x":[43427,43434,43518,43528,43535,45634]},{"a":37941,"l":"enemy_y","c":"obj_y[8-10] ($9435-$9437): the three enemy slots (in round 33 Doh's shots). Enemies enter at Y $1E ($9F9B), become live at $38; Doh's shots start at $7B ($985A). Moved by move_object ($A2DB); an object at $F2 or below is removed.","t":"byte","b":[0],"x":[1878,1924,1977,39002,40209,40215,40222,40257,40263,40270,40328,40334,40342,40376,40382,40390,40507,40515,40556,40563,40627,40635,40675,40683,40859,40940,40946,41041,41519,41702,41705,41763,41766,41789,42627,42634,42793,42801,46109,46122,61511]},{"a":37942,"l":"enemy2_y","c":"obj_y[9], enemy slot 1 (enemy_y + 1); written by name only by the title intro ($0722, $073A), which borrows the enemy slots for its animation.","t":"byte","b":[0],"x":[1826,1850]},{"a":37943,"l":"enemy3_y","c":"obj_y[10], enemy slot 2 (enemy_y + 2); read by name only by the title intro ($071C).","t":"byte","b":[0],"x":[1820]},{"a":37944,"l":"obj11_y","c":"obj_y[11]: no code found addresses object 11 by name; it is sorted and displayed with the rest (cleared by $9B81 with all objects).","t":"byte","b":[0]},{"a":37945,"l":"mux_x","c":"Sprite multiplexer copy of obj_x for the 12 objects ($9439-$9444), copied by $F7CD and written to $D000+2n by the raster IRQs ($FC18, $F977); entries 0-1 also by $F74C/$F752.","t":"byte","b":[0],"x":[63308,63448,63863,64536]},{"a":37946,"l":"mux_x_1","c":"mux_x[1], the right Vaus half's X as the IRQ at $F752 writes it to the sprite register.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[63314]},{"a":37954,"t":"byte","b":[0,0,0]},{"a":37957,"l":"obj_x","c":"Object X positions, 12 objects $9445-$9450, same numbering as obj_y; written to the sprite X registers with no ninth bit (the play-time multiplexer never writes $D010). $9445, the left half of the Vaus, is $80 at the start of a life ($9A91) and is written from the Vaus position at $F22B and by the Vaus control ($FD39-$FD62).","t":"byte","b":[0],"x":[1793,1888,1941,1997,39569,41119,42156,42162,46078,46083,61995,63445,64825,64832,64838,64866]},{"a":37958,"l":"vaus_right_x","c":"obj_x[1], right half of the Vaus: $88 at the start of a life ($9A96), 8 to the right of the left half; moved right by the break exit ($A4B5) until $E0.","t":"byte","b":[0],"x":[39574,42165,42173,62000,64835,64876]},{"a":37959,"l":"laser_x","c":"obj_x[2-3] ($9447, $9448): laser shots, set to the Vaus centre $0206 - 4 by fire_laser ($A78C); the brick test looks at X - $1A and X - $0B, the shot's two beams ($A6B0).","t":"byte","b":[0],"x":[2317,42639,42721,42754,42892]},{"a":37960,"l":"laser2_x","c":"obj_x[3], the second laser shot (laser_x + 1); written by name only by the intro ($0912).","t":"byte","b":[0],"x":[2322]},{"a":37961,"l":"ball_x","c":"obj_x[4-6] ($9449-$944B): the three balls. $8C at the start of a life ($9A9B); while held it is Vaus X - $0221 ($AA93). The attract mode steers the Vaus at ball 0's X - 8 ($9527).","t":"byte","b":[0,0,0],"x":[38183,39579,40520,40568,40603,40651,43223,43274,43667,44002,44021,44037,44128,44591,44615,44640,44692,44976,45003,45030,45057,45860,45923,45926,45987,45990,46006,46036,46041,62005]},{"a":37964,"l":"capsule_x","c":"obj_x[7]: the capsule's X, set from the broken brick's column at $B256, compared with the Vaus at $A9BE.","t":"byte","b":[0],"x":[43454,43473,45654]},{"a":37965,"l":"enemy_x","c":"obj_x[8-10] ($944D-$944F): the three enemy slots / Doh's shots. Enemies enter at X $47 ($9FA6; $AF when $0246 is set, which no code found does); Doh's shots start at $7E ($9853).","t":"byte","b":[0],"x":[1873,1972,38997,40227,40233,40241,40275,40281,40289,40310,40316,40323,40358,40364,40371,40526,40534,40574,40582,40609,40616,40657,40664,40872,40986,41122,41554,41619,41647,41734,41737,41777,41780,41792,42645,42653,42820,42839,46074,46087]},{"a":37966,"l":"enemy2_x","c":"obj_x[9], enemy slot 1 (enemy_x + 1); by name only in the title intro ($0719, $072E).","t":"byte","b":[0],"x":[1817,1838]},{"a":37967,"l":"enemy3_x","c":"obj_x[10], enemy slot 2 (enemy_x + 2); by name only in the title intro ($0713).","t":"byte","b":[0],"x":[1811]},{"a":37968,"l":"obj11_x","c":"obj_x[11], object 11's X; copied with the rest by $F7CD, no code found sets it.","t":"byte","b":[0]},{"a":37969,"l":"unused_9451","c":"8 bytes $FF $01 $02 $03 $04 $05 $06 $07 and two zeros ($9451-$945A): not read or written by any code found (simulator maps: no access). The same 8 bytes stand at $94BD in the stale copy, so they look like a table left from the build.","t":"byte","b":[255,1,2,3,4,5,6,7]},{"a":37977,"t":"byte","b":[0,0]},{"a":37979,"l":"attract_rounds","c":"Attract mode: the round index the demo plays, chosen by attract_count ($0945) AND 3: 4, 13, 20, 23 = rounds 5, 14, 21, 24 ($9513).","t":"byte","b":[4,13,20,23],"x":[38163]},{"a":37983,"l":"unused_945f","c":"Zeros $945F-$94BC, 94 bytes: not read or written by any code found (simulator maps show no access).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37991,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":37999,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38007,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38015,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38023,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38031,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38039,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38047,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38055,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38063,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38071,"t":"byte","b":[0,0,0,0,0,0]},{"a":38077,"l":"stale_attract_copy","c":"$94BD-$94FF: a stale fragment of an older build, never executed: the 8 bytes $FF $01-$07, two zeros, the attract-round table 4 13 20 23 at $94C7, then code like the start of attract_mode at $9500 (JSR $F813, JSR $F0D2, JSR $F86A, CLI, JSR $B950, LDA $0944 / AND #3 / TAX / LDA $94C7,X / INC $0944 / STA $093D / STA $093E / JSR $F1C6 / LDA #4 / STA $023A / LDA $94A3 ...), cut off at $94FF. In that build $0944 was the attract counter (here $0945) and the ball's X lived at $94A3.","t":"byte","b":[255,1,2,3,4,5,6,7]},{"a":38085,"t":"byte","b":[0,0,4,13,20,23,32,19]},{"a":38093,"t":"byte","b":[248,32,210,240,32,106,248,88]},{"a":38101,"t":"byte","b":[32,80,185,173,68,9,41,3]},{"a":38109,"t":"byte","b":[170,189,199,148,238,68,9,141]},{"a":38117,"t":"byte","b":[61,9,141,62,9,32,198,241]},{"a":38125,"t":"byte","b":[169,4,141,58,2,173,163,148]},{"a":38133,"t":"byte","b":[56,233,8,141,6,2,32,211]},{"a":38141,"t":"byte","b":[252,32,243]},{"a":38144,"l":"attract_mode","c":"Attract mode, entered by JMP from $B4F7 when the title tune ($3D, started at $B4D4) ends with no key or fire. Start-up calls ($F7FE, $F0C3, $F831), screen off ($B9A2), round index = attract_rounds[attract_count $0945 AND 3] for both players, $F1B7, ball speed $023A = 4. Each frame (from $9527): Vaus centre $0206 = ball 0 X - 8 (the autopilot), $FCEE places the Vaus, then the same frame calls as game_loop without the input ($FC99) and with fire forced on ($0236 = 1, so a held ball leaves at once). When $DC00 AND $DC01 is not $7F (a key or fire) or the round's last brick has gone ($0455 = 0), it drops the return address and JMPs to $F000 (title).","t":"code","b":[32,254,247],"m":"jsr","oa":63486,"o":"mux_init","x":[46327]},{"a":38147,"t":"code","b":[32,195,240],"m":"jsr","oa":61635,"o":"nmi_timer_init"},{"a":38150,"t":"code","b":[32,49,248],"m":"jsr","oa":63537,"o":"irq_init"},{"a":38153,"t":"code","b":[88],"m":"cli"},{"a":38154,"t":"code","b":[32,162,185],"m":"jsr","oa":47522,"o":"screen_off_after_tick"},{"a":38157,"t":"code","b":[173,69,9],"m":"lda","oa":2373,"o":"attract_count"},{"a":38160,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38162,"t":"code","b":[170],"m":"tax"},{"a":38163,"t":"code","b":[189,91,148],"m":"lda","oa":37979,"o":"attract_rounds,x"},{"a":38166,"t":"code","b":[238,69,9],"m":"inc","oa":2373,"o":"attract_count"},{"a":38169,"t":"code","b":[141,61,9],"m":"sta","oa":2365,"o":"round_p1"},{"a":38172,"t":"code","b":[141,62,9],"m":"sta","oa":2366,"o":"round_p2"},{"a":38175,"t":"code","b":[32,183,241],"m":"jsr","oa":61879,"o":"new_game_init"},{"a":38178,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":38180,"t":"code","b":[141,58,2],"m":"sta","oa":570,"o":"ball_speed"},{"a":38183,"l":"b_9527","t":"code","b":[173,73,148],"m":"lda","oa":37961,"o":"ball_x","x":[38264]},{"a":38186,"t":"code","b":[56],"m":"sec"},{"a":38187,"t":"code","b":[233,8],"m":"sbc","o":"#$08"},{"a":38189,"t":"code","b":[141,6,2],"m":"sta","oa":518,"o":"vaus_x"},{"a":38192,"t":"code","b":[32,238,252],"m":"jsr","oa":64750,"o":"place_vaus"},{"a":38195,"t":"code","b":[32,85,171],"m":"jsr","oa":43861,"o":"silver_shine"},{"a":38198,"t":"code","b":[32,113,170],"m":"jsr","oa":43633,"o":"held_ball"},{"a":38201,"t":"code","b":[32,179,173],"m":"jsr","oa":44467,"o":"move_balls"},{"a":38204,"t":"code","b":[32,149,169],"m":"jsr","oa":43413,"o":"update_capsule"},{"a":38207,"t":"code","b":[32,243,165],"m":"jsr","oa":42483,"o":"update_lasers"},{"a":38210,"t":"code","b":[32,220,167],"m":"jsr","oa":42972,"o":"capsule_letter"},{"a":38213,"t":"code","b":[32,213,156],"m":"jsr","oa":40149,"o":"enemies_vs_enemies"},{"a":38216,"t":"code","b":[32,19,158],"m":"jsr","oa":40467,"o":"balls_vs_enemies"},{"a":38219,"t":"code","b":[32,26,167],"m":"jsr","oa":42778,"o":"vaus_vs_enemies"},{"a":38222,"t":"code","b":[32,94,159],"m":"jsr","oa":40798,"o":"update_enemies"},{"a":38225,"t":"code","b":[32,180,152],"m":"jsr","oa":39092,"o":"update_gate"},{"a":38228,"t":"code","b":[32,133,173],"m":"jsr","oa":44421,"o":"laser_off_shape"},{"a":38231,"t":"code","b":[32,75,173],"m":"jsr","oa":44363,"o":"vaus_resize"},{"a":38234,"t":"code","b":[32,31,164],"m":"jsr","oa":42015,"o":"break_exit"},{"a":38237,"t":"code","b":[32,233,154],"m":"jsr","oa":39657,"o":"check_vaus_lost"},{"a":38240,"t":"code","b":[32,254,250],"m":"jsr","oa":64254,"o":"update_scores_display"},{"a":38243,"t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick"},{"a":38246,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":38248,"t":"code","b":[141,54,2],"m":"sta","oa":566,"o":"fire_now"},{"a":38251,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":38254,"t":"code","b":[45,1,220],"m":"and","o":"cia1_port_b"},{"a":38257,"t":"code","b":[201,127],"m":"cmp","o":"#$7F"},{"a":38259,"t":"code","b":[208,5],"m":"bne","oa":38266,"o":"b_957A"},{"a":38261,"t":"code","b":[173,85,4],"m":"lda","oa":1109,"o":"bricks_left"},{"a":38264,"t":"code","b":[208,173],"m":"bne","oa":38183,"o":"b_9527"},{"a":38266,"l":"b_957A","t":"code","b":[104],"m":"pla","x":[38259]},{"a":38267,"t":"code","b":[104],"m":"pla"},{"a":38268,"t":"code","b":[76,0,240],"m":"jmp","oa":61440,"o":"main_entry"},{"a":38271,"l":"game_loop","c":"Main loop of play, one pass per frame, entered from $F09B (game start) and after each round. Unless the Vaus is being destroyed ($0249) or leaving by the break exit ($023D): silver/gold shine $AB55, held ball $AA71, Vaus control $FC99, balls $ADB3, capsule $A995, laser $A5F3, capsule letter $A7DC, enemy-enemy $9CD5, ball-enemy $9E13, Vaus-enemy $A71A, enemies $9F5E, gate $98B4. Always: laser shape $AD85, enlarge $AD4B, break exit $A41F, Vaus lost $9AE9, score panel $FAFE, wait for the frame $B472. Bricks left $0455 = 0 -> round_cleared; round index $20 -> doh_loop; else loop.","t":"code","b":[173,73,2],"m":"lda","oa":585,"o":"death_frame","x":[38348,38467,38612,61595]},{"a":38274,"t":"code","b":[13,61,2],"m":"ora","oa":573,"o":"exiting"},{"a":38277,"t":"code","b":[208,36],"m":"bne","oa":38315,"o":"b_95AB"},{"a":38279,"t":"code","b":[32,85,171],"m":"jsr","oa":43861,"o":"silver_shine"},{"a":38282,"t":"code","b":[32,113,170],"m":"jsr","oa":43633,"o":"held_ball"},{"a":38285,"t":"code","b":[32,153,252],"m":"jsr","oa":64665,"o":"read_input_move_vaus"},{"a":38288,"t":"code","b":[32,179,173],"m":"jsr","oa":44467,"o":"move_balls"},{"a":38291,"t":"code","b":[32,149,169],"m":"jsr","oa":43413,"o":"update_capsule"},{"a":38294,"t":"code","b":[32,243,165],"m":"jsr","oa":42483,"o":"update_lasers"},{"a":38297,"t":"code","b":[32,220,167],"m":"jsr","oa":42972,"o":"capsule_letter"},{"a":38300,"t":"code","b":[32,213,156],"m":"jsr","oa":40149,"o":"enemies_vs_enemies"},{"a":38303,"t":"code","b":[32,19,158],"m":"jsr","oa":40467,"o":"balls_vs_enemies"},{"a":38306,"t":"code","b":[32,26,167],"m":"jsr","oa":42778,"o":"vaus_vs_enemies"},{"a":38309,"t":"code","b":[32,94,159],"m":"jsr","oa":40798,"o":"update_enemies"},{"a":38312,"t":"code","b":[32,180,152],"m":"jsr","oa":39092,"o":"update_gate"},{"a":38315,"l":"b_95AB","t":"code","b":[32,133,173],"m":"jsr","oa":44421,"o":"laser_off_shape","x":[38277]},{"a":38318,"t":"code","b":[32,75,173],"m":"jsr","oa":44363,"o":"vaus_resize"},{"a":38321,"t":"code","b":[32,31,164],"m":"jsr","oa":42015,"o":"break_exit"},{"a":38324,"t":"code","b":[32,233,154],"m":"jsr","oa":39657,"o":"check_vaus_lost"},{"a":38327,"t":"code","b":[32,254,250],"m":"jsr","oa":64254,"o":"update_scores_display"},{"a":38330,"l":"game_loop_wait","c":"Tail of game_loop: wait for the next frame ($B472) and test the round state; re-entered from the ending ($96C2) after the game-over handling.","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[38594]},{"a":38333,"t":"code","b":[173,85,4],"m":"lda","oa":1109,"o":"bricks_left"},{"a":38336,"t":"code","b":[240,13],"m":"beq","oa":38351,"o":"round_cleared"},{"a":38338,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":38341,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":38344,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":38346,"t":"code","b":[240,45],"m":"beq","oa":38393,"o":"doh_loop"},{"a":38348,"t":"code","b":[76,127,149],"m":"jmp","oa":38271,"o":"game_loop"},{"a":38351,"l":"round_cleared","c":"Round cleared (bricks left $0455 = 0), also reached from the break exit ($A520): wait for the tune ($F70C), screen off ($B9A2), next round index ($093D,X += 1 for the current player $0938). Below $20: next_round ($96C5). At $20, round 33: Doh's screen ($F630, doh_setup $9C59), reset_life_state, $F6C2, round_start, then Doh's hit counter $0455 = $16 (22) and doh_loop.","t":"code","b":[32,12,247],"m":"jsr","oa":63244,"o":"wait_tune_end","x":[38336,42272]},{"a":38354,"t":"code","b":[32,162,185],"m":"jsr","oa":47522,"o":"screen_off_after_tick"},{"a":38357,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":38360,"t":"code","b":[254,61,9],"m":"inc","oa":2365,"o":"round_p1,x"},{"a":38363,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":38366,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":38368,"t":"code","b":[176,3],"m":"bcs","oa":38373,"o":"b_95E5"},{"a":38370,"t":"code","b":[76,197,150],"m":"jmp","oa":38597,"o":"next_round"},{"a":38373,"l":"b_95E5","t":"code","b":[32,48,246],"m":"jsr","oa":63024,"o":"draw_walls","x":[38368]},{"a":38376,"t":"code","b":[32,89,156],"m":"jsr","oa":40025,"o":"doh_setup"},{"a":38379,"t":"code","b":[32,118,154],"m":"jsr","oa":39542,"o":"reset_life_state"},{"a":38382,"t":"code","b":[32,194,246],"m":"jsr","oa":63170,"o":"exit_gate_close"},{"a":38385,"t":"code","b":[32,215,150],"m":"jsr","oa":38615,"o":"round_start"},{"a":38388,"t":"code","b":[169,22],"m":"lda","o":"#$16"},{"a":38390,"t":"code","b":[141,85,4],"m":"sta","oa":1109,"o":"bricks_left"},{"a":38393,"l":"doh_loop","c":"Round 33 frame loop. Unless the Vaus is being destroyed or exiting: held ball $AA71, Vaus control $FC99, balls $ADB3, shots against the Vaus $A71A (a hit destroys the Vaus), laser shape $AD85, Doh's mouth and firing $9819, Doh's shots $97FD; once Doh's counter $0455 is 0 start the flash ($0215 = $80) whenever it is idle; flash step $97B3. Then enlarge, Vaus lost, score panel, frame wait. $0455 negative -> doh_defeated ($9646). No capsules or enemies run here; ball hits on Doh's face go through the brick code (ball_vs_bricks, $B108), which decrements $0455 ($B11E, $B16D).","t":"code","b":[173,73,2],"m":"lda","oa":585,"o":"death_frame","x":[38346,38465]},{"a":38396,"t":"code","b":[13,61,2],"m":"ora","oa":573,"o":"exiting"},{"a":38399,"t":"code","b":[208,39],"m":"bne","oa":38440,"o":"b_9628"},{"a":38401,"t":"code","b":[32,113,170],"m":"jsr","oa":43633,"o":"held_ball"},{"a":38404,"t":"code","b":[32,153,252],"m":"jsr","oa":64665,"o":"read_input_move_vaus"},{"a":38407,"t":"code","b":[32,179,173],"m":"jsr","oa":44467,"o":"move_balls"},{"a":38410,"t":"code","b":[32,26,167],"m":"jsr","oa":42778,"o":"vaus_vs_enemies"},{"a":38413,"t":"code","b":[32,133,173],"m":"jsr","oa":44421,"o":"laser_off_shape"},{"a":38416,"t":"code","b":[32,25,152],"m":"jsr","oa":38937,"o":"doh_mouth"},{"a":38419,"t":"code","b":[32,253,151],"m":"jsr","oa":38909,"o":"move_doh_shots"},{"a":38422,"t":"code","b":[173,85,4],"m":"lda","oa":1109,"o":"bricks_left"},{"a":38425,"t":"code","b":[208,10],"m":"bne","oa":38437,"o":"b_9625"},{"a":38427,"t":"code","b":[173,21,2],"m":"lda","oa":533,"o":"doh_flash_count"},{"a":38430,"t":"code","b":[208,5],"m":"bne","oa":38437,"o":"b_9625"},{"a":38432,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":38434,"t":"code","b":[141,21,2],"m":"sta","oa":533,"o":"doh_flash_count"},{"a":38437,"l":"b_9625","t":"code","b":[32,179,151],"m":"jsr","oa":38835,"o":"doh_flash","x":[38425,38430]},{"a":38440,"l":"b_9628","t":"code","b":[32,75,173],"m":"jsr","oa":44363,"o":"vaus_resize","x":[38399]},{"a":38443,"t":"code","b":[32,233,154],"m":"jsr","oa":39657,"o":"check_vaus_lost"},{"a":38446,"t":"code","b":[32,254,250],"m":"jsr","oa":64254,"o":"update_scores_display"},{"a":38449,"t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick"},{"a":38452,"t":"code","b":[173,85,4],"m":"lda","oa":1109,"o":"bricks_left"},{"a":38455,"t":"code","b":[48,13],"m":"bmi","oa":38470,"o":"doh_defeated"},{"a":38457,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":38460,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":38463,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":38465,"t":"code","b":[240,182],"m":"beq","oa":38393,"o":"doh_loop"},{"a":38467,"t":"code","b":[76,127,149],"m":"jmp","oa":38271,"o":"game_loop"},{"a":38470,"l":"doh_defeated","c":"The ending, when Doh's counter $0455 has gone below zero: player 1's round index = 0, let the flash finish, wait for the tune, three effect voices ($272F), dissolve Doh (doh_dissolve $970B), $0209 = $FF, tune $28 ($262B), sprites off, drum track drums_ending ($AB10) via start_drums, the title picture ($B480), then $B4E0, the title's wait loop: it plays the samples and returns on a key or fire, but JMPs to attract_mode if the tune ends first. Then the text screen ($2690, $B53C, $B6F0, $B6B1), 250 frames, $B6F0; then lives of the current player = $99 and game_over ($9B81), which returns to the title or to the other player.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[38455]},{"a":38472,"t":"code","b":[141,61,9],"m":"sta","oa":2365,"o":"round_p1"},{"a":38475,"l":"b_964B","t":"code","b":[32,179,151],"m":"jsr","oa":38835,"o":"doh_flash","x":[38484]},{"a":38478,"t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick"},{"a":38481,"t":"code","b":[173,21,2],"m":"lda","oa":533,"o":"doh_flash_count"},{"a":38484,"t":"code","b":[208,245],"m":"bne","oa":38475,"o":"b_964B"},{"a":38486,"t":"code","b":[32,12,247],"m":"jsr","oa":63244,"o":"wait_tune_end"},{"a":38489,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":38491,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":38493,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":38495,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":38498,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":38500,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":38502,"t":"code","b":[160,36],"m":"ldy","o":"#$24"},{"a":38504,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":38507,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":38509,"t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":38511,"t":"code","b":[160,36],"m":"ldy","o":"#$24"},{"a":38513,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":38516,"t":"code","b":[32,11,151],"m":"jsr","oa":38667,"o":"doh_dissolve"},{"a":38519,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":38521,"t":"code","b":[141,9,2],"m":"sta","oa":521,"o":"drum_mode"},{"a":38524,"t":"code","b":[160,40],"m":"ldy","o":"#$28"},{"a":38526,"t":"code","b":[32,43,38],"m":"jsr","oa":9771,"o":"music_start_tune"},{"a":38529,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":38531,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":38534,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":38536,"t":"code","b":[162,16],"m":"ldx","o":"#$10"},{"a":38538,"t":"code","b":[160,171],"m":"ldy","o":"#$AB"},{"a":38540,"t":"code","b":[32,69,153],"m":"jsr","oa":39237,"o":"start_drums"},{"a":38543,"t":"code","b":[32,128,180],"m":"jsr","oa":46208,"o":"show_title_picture"},{"a":38546,"t":"code","b":[32,224,180],"m":"jsr","oa":46304,"o":"title_wait_loop"},{"a":38549,"t":"code","b":[32,144,38],"m":"jsr","oa":9872,"o":"sound_reset"},{"a":38552,"t":"code","b":[88],"m":"cli"},{"a":38553,"t":"code","b":[32,60,181],"m":"jsr","oa":46396,"o":"text_screen_mode"},{"a":38556,"t":"code","b":[32,240,182],"m":"jsr","oa":46832,"o":"clear_text_screen"},{"a":38559,"t":"code","b":[32,177,182],"m":"jsr","oa":46769,"o":"print_ending_text"},{"a":38562,"t":"code","b":[162,250],"m":"ldx","o":"#$FA"},{"a":38564,"l":"b_96A4","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[38568]},{"a":38567,"t":"code","b":[202],"m":"dex"},{"a":38568,"t":"code","b":[208,250],"m":"bne","oa":38564,"o":"b_96A4"},{"a":38570,"t":"code","b":[32,240,182],"m":"jsr","oa":46832,"o":"clear_text_screen"},{"a":38573,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":38575,"t":"code","b":[141,9,2],"m":"sta","oa":521,"o":"drum_mode"},{"a":38578,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":38580,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":38583,"t":"code","b":[172,56,9],"m":"ldy","oa":2360,"o":"current_player"},{"a":38586,"t":"code","b":[169,153],"m":"lda","o":"#$99"},{"a":38588,"t":"code","b":[153,54,9],"m":"sta","oa":2358,"o":"lives_p1,y"},{"a":38591,"t":"code","b":[32,129,155],"m":"jsr","oa":39809,"o":"game_over"},{"a":38594,"t":"code","b":[76,186,149],"m":"jmp","oa":38330,"o":"game_loop_wait"},{"a":38597,"l":"next_round","c":"Rounds 2-32: reset_life_state, $F552, $F630, draw the new round's bricks ($F3C2 from round_NN_bricks), round_start, back to game_loop.","t":"code","b":[32,118,154],"m":"jsr","oa":39542,"o":"reset_life_state","x":[38370]},{"a":38600,"t":"code","b":[32,82,245],"m":"jsr","oa":62802,"o":"draw_playfield_background"},{"a":38603,"t":"code","b":[32,48,246],"m":"jsr","oa":63024,"o":"draw_walls"},{"a":38606,"t":"code","b":[32,194,243],"m":"jsr","oa":62402,"o":"draw_round_wall"},{"a":38609,"t":"code","b":[32,215,150],"m":"jsr","oa":38615,"o":"round_start"},{"a":38612,"t":"code","b":[76,127,149],"m":"jmp","oa":38271,"o":"game_loop"},{"a":38615,"l":"round_start","c":"Start of a round or a life: $F0AA (clear the sprite data $E580-$E5FF, reset the gate characters from gate_rows), screen on ($B9B0), tune $0C ($13 for round 33) via $262B, vaus_appear ($A3F4), $F09E (copy $E600-$E67F back to $E580-$E5FF, the data break_exit fills), all sprites on ($D015 = $FF), wait for the tune ($F70C), frame counter $0200/$0201 = 0. Called from round_cleared, next_round, $9C2E/$9C4C (after a life) and $F2A7.","t":"code","b":[32,170,240],"m":"jsr","oa":61610,"o":"vaus_shapes_clear","x":[38385,38609,39982,40012,62119]},{"a":38618,"t":"code","b":[32,176,185],"m":"jsr","oa":47536,"o":"screen_on_after_tick"},{"a":38621,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":38624,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":38627,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":38629,"t":"code","b":[240,8],"m":"beq","oa":38639,"o":"b_96EF"},{"a":38631,"t":"code","b":[160,12],"m":"ldy","o":"#$0C"},{"a":38633,"t":"code","b":[32,43,38],"m":"jsr","oa":9771,"o":"music_start_tune"},{"a":38636,"t":"code","b":[76,244,150],"m":"jmp","oa":38644,"o":"j_96F4"},{"a":38639,"l":"b_96EF","t":"code","b":[160,19],"m":"ldy","o":"#$13","x":[38629]},{"a":38641,"t":"code","b":[32,43,38],"m":"jsr","oa":9771,"o":"music_start_tune"},{"a":38644,"l":"j_96F4","t":"code","b":[32,244,163],"m":"jsr","oa":41972,"o":"vaus_appear","x":[38636]},{"a":38647,"t":"code","b":[32,158,240],"m":"jsr","oa":61598,"o":"vaus_shapes_restore"},{"a":38650,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":38652,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":38655,"t":"code","b":[32,12,247],"m":"jsr","oa":63244,"o":"wait_tune_end"},{"a":38658,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":38660,"t":"code","b":[141,0,2],"m":"sta","oa":512,"o":"frame_ticks"},{"a":38663,"t":"code","b":[141,1,2],"m":"sta","oa":513,"o":"frame_counter"},{"a":38666,"t":"code","b":[96],"m":"rts"},{"a":38667,"l":"doh_dissolve","c":"Doh's death: copy the 60 character codes of Doh's face (screen rows 5-14, columns 11-16, $C0D3 + 40n) to $02B0-$02EB, then every 7 frames AND each character's 8 bitmap bytes in the charset at $C800 with the mask bytes $0946-$0950 (where $0951-$0959 is non-zero) and rotate both mask tables by one, until the tune ends ($3417 = 0): the face crumbles pixel by pixel. The loop index runs X = $3C..0, 61 entries, one more than were copied ($02EC).","t":"code","b":[160,5],"m":"ldy","o":"#$05","x":[38516]},{"a":38669,"l":"b_970D","t":"code","b":[185,211,192],"m":"lda","oa":49363,"o":"f_C0D3,y","x":[38730]},{"a":38672,"t":"code","b":[153,176,2],"m":"sta","oa":688,"o":"ending_chars,y"},{"a":38675,"t":"code","b":[185,251,192],"m":"lda","oa":49403,"o":"f_C0FB,y"},{"a":38678,"t":"code","b":[153,182,2],"m":"sta","oa":694,"o":"f_02B6,y"},{"a":38681,"t":"code","b":[185,35,193],"m":"lda","oa":49443,"o":"f_C123,y"},{"a":38684,"t":"code","b":[153,188,2],"m":"sta","oa":700,"o":"f_02BC,y"},{"a":38687,"t":"code","b":[185,75,193],"m":"lda","oa":49483,"o":"f_C14B,y"},{"a":38690,"t":"code","b":[153,194,2],"m":"sta","oa":706,"o":"f_02C2,y"},{"a":38693,"t":"code","b":[185,115,193],"m":"lda","oa":49523,"o":"f_C173,y"},{"a":38696,"t":"code","b":[153,200,2],"m":"sta","oa":712,"o":"f_02C8,y"},{"a":38699,"t":"code","b":[185,155,193],"m":"lda","oa":49563,"o":"f_C19B,y"},{"a":38702,"t":"code","b":[153,206,2],"m":"sta","oa":718,"o":"f_02CE,y"},{"a":38705,"t":"code","b":[185,195,193],"m":"lda","oa":49603,"o":"f_C1C3,y"},{"a":38708,"t":"code","b":[153,212,2],"m":"sta","oa":724,"o":"f_02D4,y"},{"a":38711,"t":"code","b":[185,235,193],"m":"lda","oa":49643,"o":"f_C1EB,y"},{"a":38714,"t":"code","b":[153,218,2],"m":"sta","oa":730,"o":"f_02DA,y"},{"a":38717,"t":"code","b":[185,19,194],"m":"lda","oa":49683,"o":"f_C213,y"},{"a":38720,"t":"code","b":[153,224,2],"m":"sta","oa":736,"o":"f_02E0,y"},{"a":38723,"t":"code","b":[185,59,194],"m":"lda","oa":49723,"o":"f_C23B,y"},{"a":38726,"t":"code","b":[153,230,2],"m":"sta","oa":742,"o":"f_02E6,y"},{"a":38729,"t":"code","b":[136],"m":"dey"},{"a":38730,"t":"code","b":[16,193],"m":"bpl","oa":38669,"o":"b_970D"},{"a":38732,"l":"j_974C","t":"code","b":[162,6],"m":"ldx","o":"#$06","x":[38831]},{"a":38734,"l":"b_974E","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[38738]},{"a":38737,"t":"code","b":[202],"m":"dex"},{"a":38738,"t":"code","b":[16,250],"m":"bpl","oa":38734,"o":"b_974E"},{"a":38740,"t":"code","b":[162,60],"m":"ldx","o":"#$3C"},{"a":38742,"l":"b_9756","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[38786]},{"a":38744,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":38746,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":38748,"t":"code","b":[189,176,2],"m":"lda","oa":688,"o":"ending_chars,x"},{"a":38751,"t":"code","b":[10],"m":"asl","o":"a"},{"a":38752,"t":"code","b":[38,18],"m":"rol","oa":18,"o":"src_ptr_hi"},{"a":38754,"t":"code","b":[10],"m":"asl","o":"a"},{"a":38755,"t":"code","b":[38,18],"m":"rol","oa":18,"o":"src_ptr_hi"},{"a":38757,"t":"code","b":[10],"m":"asl","o":"a"},{"a":38758,"t":"code","b":[38,18],"m":"rol","oa":18,"o":"src_ptr_hi"},{"a":38760,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":38762,"t":"code","b":[165,18],"m":"lda","oa":18,"o":"src_ptr_hi"},{"a":38764,"t":"code","b":[105,200],"m":"adc","o":"#$C8"},{"a":38766,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":38768,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":38770,"l":"b_9772","t":"code","b":[185,81,9],"m":"lda","oa":2385,"o":"dissolve_rows,y","x":[38783]},{"a":38773,"t":"code","b":[240,7],"m":"beq","oa":38782,"o":"b_977E"},{"a":38775,"t":"code","b":[177,17],"m":"lda","oa":17,"o":"(src_ptr),y"},{"a":38777,"t":"code","b":[57,70,9],"m":"and","oa":2374,"o":"dissolve_masks,y"},{"a":38780,"t":"code","b":[145,17],"m":"sta","oa":17,"o":"(src_ptr),y"},{"a":38782,"l":"b_977E","t":"code","b":[136],"m":"dey","x":[38773]},{"a":38783,"t":"code","b":[16,241],"m":"bpl","oa":38770,"o":"b_9772"},{"a":38785,"t":"code","b":[202],"m":"dex"},{"a":38786,"t":"code","b":[16,210],"m":"bpl","oa":38742,"o":"b_9756"},{"a":38788,"t":"code","b":[160,9],"m":"ldy","o":"#$09"},{"a":38790,"t":"code","b":[173,80,9],"m":"lda","oa":2384,"o":"a_0950"},{"a":38793,"t":"code","b":[72],"m":"pha"},{"a":38794,"l":"b_978A","t":"code","b":[185,70,9],"m":"lda","oa":2374,"o":"dissolve_masks,y","x":[38801]},{"a":38797,"t":"code","b":[153,71,9],"m":"sta","oa":2375,"o":"f_0947,y"},{"a":38800,"t":"code","b":[136],"m":"dey"},{"a":38801,"t":"code","b":[16,247],"m":"bpl","oa":38794,"o":"b_978A"},{"a":38803,"t":"code","b":[104],"m":"pla"},{"a":38804,"t":"code","b":[141,70,9],"m":"sta","oa":2374,"o":"dissolve_masks"},{"a":38807,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":38809,"t":"code","b":[173,89,9],"m":"lda","oa":2393,"o":"a_0959"},{"a":38812,"t":"code","b":[72],"m":"pha"},{"a":38813,"l":"b_979D","t":"code","b":[185,81,9],"m":"lda","oa":2385,"o":"dissolve_rows,y","x":[38820]},{"a":38816,"t":"code","b":[153,82,9],"m":"sta","oa":2386,"o":"f_0952,y"},{"a":38819,"t":"code","b":[136],"m":"dey"},{"a":38820,"t":"code","b":[16,247],"m":"bpl","oa":38813,"o":"b_979D"},{"a":38822,"t":"code","b":[104],"m":"pla"},{"a":38823,"t":"code","b":[141,81,9],"m":"sta","oa":2385,"o":"dissolve_rows"},{"a":38826,"t":"code","b":[32,23,52],"m":"jsr","oa":13335,"o":"sound_busy"},{"a":38829,"t":"code","b":[240,3],"m":"beq","oa":38834,"o":"r_97B2"},{"a":38831,"t":"code","b":[76,76,151],"m":"jmp","oa":38732,"o":"j_974C"},{"a":38834,"l":"r_97B2","t":"code","b":[96],"m":"rts","x":[38829]},{"a":38835,"l":"doh_flash","c":"Flash Doh's face when hit: while $0215 is non-zero (set by $B123 when Doh is hit, made $80 here, or by doh_loop once the counter is 0) colour RAM of the 10 x 6 face cells ($D8D3 + 40n) gets doh_flash_colours[($0215 AND 7) / 2] and $0215 counts up; at index 3 (after 7 frames) $0215 = 0. The last value written, $0E, is the one doh_setup gives the face.","t":"code","b":[173,21,2],"m":"lda","oa":533,"o":"doh_flash_count","x":[38437,38475]},{"a":38838,"t":"code","b":[240,64],"m":"beq","oa":38904,"o":"r_97F8"},{"a":38840,"t":"code","b":[48,5],"m":"bmi","oa":38847,"o":"b_97BF"},{"a":38842,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":38844,"t":"code","b":[141,21,2],"m":"sta","oa":533,"o":"doh_flash_count"},{"a":38847,"l":"b_97BF","t":"code","b":[173,21,2],"m":"lda","oa":533,"o":"doh_flash_count","x":[38840]},{"a":38850,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":38852,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":38853,"t":"code","b":[170],"m":"tax"},{"a":38854,"t":"code","b":[189,249,151],"m":"lda","oa":38905,"o":"doh_flash_colours,x"},{"a":38857,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":38859,"l":"b_97CB","t":"code","b":[153,211,216],"m":"sta","o":"$D8D3,y","x":[38890]},{"a":38862,"t":"code","b":[153,251,216],"m":"sta","o":"$D8FB,y"},{"a":38865,"t":"code","b":[153,35,217],"m":"sta","o":"$D923,y"},{"a":38868,"t":"code","b":[153,75,217],"m":"sta","o":"$D94B,y"},{"a":38871,"t":"code","b":[153,115,217],"m":"sta","o":"$D973,y"},{"a":38874,"t":"code","b":[153,155,217],"m":"sta","o":"$D99B,y"},{"a":38877,"t":"code","b":[153,195,217],"m":"sta","o":"$D9C3,y"},{"a":38880,"t":"code","b":[153,235,217],"m":"sta","o":"$D9EB,y"},{"a":38883,"t":"code","b":[153,19,218],"m":"sta","o":"$DA13,y"},{"a":38886,"t":"code","b":[153,59,218],"m":"sta","o":"$DA3B,y"},{"a":38889,"t":"code","b":[136],"m":"dey"},{"a":38890,"t":"code","b":[16,223],"m":"bpl","oa":38859,"o":"b_97CB"},{"a":38892,"t":"code","b":[238,21,2],"m":"inc","oa":533,"o":"doh_flash_count"},{"a":38895,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":38897,"t":"code","b":[208,5],"m":"bne","oa":38904,"o":"r_97F8"},{"a":38899,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":38901,"t":"code","b":[141,21,2],"m":"sta","oa":533,"o":"doh_flash_count"},{"a":38904,"l":"r_97F8","t":"code","b":[96],"m":"rts","x":[38838,38897]},{"a":38905,"l":"doh_flash_colours","c":"Colour-RAM values for doh_flash: $0B, $09, $0B, $0E (bit 3 set: multicolour cells, colour of the %11 pixels 3, 1, 3, 6), two frames each; the last is Doh's normal value.","t":"byte","b":[11,9,11,14],"x":[38854]},{"a":38909,"l":"move_doh_shots","c":"Round 33: move Doh's shots. Add $A1 to $021F; on carry (161 frames in 256) step each live slot ($0274,X <> 0) with move_object ($A2DB) and animate every slot with animate_object ($A344).","t":"code","b":[173,31,2],"m":"lda","oa":543,"o":"doh_shot_acc","x":[38419]},{"a":38912,"t":"code","b":[24],"m":"clc"},{"a":38913,"t":"code","b":[105,161],"m":"adc","o":"#$A1"},{"a":38915,"t":"code","b":[141,31,2],"m":"sta","oa":543,"o":"doh_shot_acc"},{"a":38918,"t":"code","b":[144,16],"m":"bcc","oa":38936,"o":"r_9818"},{"a":38920,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":38922,"l":"b_980A","t":"code","b":[189,116,2],"m":"lda","oa":628,"o":"enemy_state,x","x":[38934]},{"a":38925,"t":"code","b":[240,3],"m":"beq","oa":38930,"o":"b_9812"},{"a":38927,"t":"code","b":[32,219,162],"m":"jsr","oa":41691,"o":"move_object"},{"a":38930,"l":"b_9812","t":"code","b":[32,68,163],"m":"jsr","oa":41796,"o":"animate_object","x":[38925]},{"a":38933,"t":"code","b":[202],"m":"dex"},{"a":38934,"t":"code","b":[16,242],"m":"bpl","oa":38922,"o":"b_980A"},{"a":38936,"l":"r_9818","t":"code","b":[96],"m":"rts","x":[38918]},{"a":38937,"l":"doh_mouth","c":"Round 33: Doh's mouth, a 2 x 2 block of characters at $C19D/$C19E/$C1C5/$C1C6 (screen row 10-11, columns 13-14). Every 5th frame ($023F) take the next first character from doh_mouth_chars ($0240) and draw it with its three successors. At the end of the list (0) fire: the first idle enemy slot (2..0) becomes a shot at X $7E, Y $7B, animation start from doh_shot_anim ($A3D8,X), pointer $60, speed 2, aimed at the Vaus by $B3FA; then the mouth starts again. One shot per mouth cycle at most.","t":"code","b":[173,63,2],"m":"lda","oa":575,"o":"doh_mouth_timer","x":[38416]},{"a":38940,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":38942,"t":"code","b":[176,4],"m":"bcs","oa":38948,"o":"b_9824"},{"a":38944,"t":"code","b":[238,63,2],"m":"inc","oa":575,"o":"doh_mouth_timer"},{"a":38947,"t":"code","b":[96],"m":"rts"},{"a":38948,"l":"b_9824","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[38942]},{"a":38950,"t":"code","b":[141,63,2],"m":"sta","oa":575,"o":"doh_mouth_timer"},{"a":38953,"t":"code","b":[172,64,2],"m":"ldy","oa":576,"o":"doh_mouth_frame"},{"a":38956,"t":"code","b":[200],"m":"iny"},{"a":38957,"l":"j_982D","t":"code","b":[185,126,152],"m":"lda","oa":39038,"o":"doh_mouth_chars,y","x":[39029,39035]},{"a":38960,"t":"code","b":[240,24],"m":"beq","oa":38986,"o":"b_984A"},{"a":38962,"t":"code","b":[141,157,193],"m":"sta","oa":49565,"o":"a_C19D"},{"a":38965,"t":"code","b":[24],"m":"clc"},{"a":38966,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":38968,"t":"code","b":[141,158,193],"m":"sta","oa":49566,"o":"a_C19E"},{"a":38971,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":38973,"t":"code","b":[141,197,193],"m":"sta","oa":49605,"o":"a_C1C5"},{"a":38976,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":38978,"t":"code","b":[141,198,193],"m":"sta","oa":49606,"o":"a_C1C6"},{"a":38981,"t":"code","b":[152],"m":"tya"},{"a":38982,"t":"code","b":[141,64,2],"m":"sta","oa":576,"o":"doh_mouth_frame"},{"a":38985,"t":"code","b":[96],"m":"rts"},{"a":38986,"l":"b_984A","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[38960]},{"a":38988,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":38990,"l":"b_984E","t":"code","b":[189,116,2],"m":"lda","oa":628,"o":"enemy_state,x","x":[39033]},{"a":38993,"t":"code","b":[208,37],"m":"bne","oa":39032,"o":"b_9878"},{"a":38995,"t":"code","b":[169,126],"m":"lda","o":"#$7E"},{"a":38997,"t":"code","b":[157,77,148],"m":"sta","oa":37965,"o":"enemy_x,x"},{"a":39000,"t":"code","b":[169,123],"m":"lda","o":"#$7B"},{"a":39002,"t":"code","b":[157,53,148],"m":"sta","oa":37941,"o":"enemy_y,x"},{"a":39005,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":39007,"t":"code","b":[157,116,2],"m":"sta","oa":628,"o":"enemy_state,x"},{"a":39010,"t":"code","b":[189,216,163],"m":"lda","oa":41944,"o":"doh_shot_anim,x"},{"a":39013,"t":"code","b":[157,119,2],"m":"sta","oa":631,"o":"enemy_anim,x"},{"a":39016,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":39018,"t":"code","b":[157,45,248],"m":"sta","oa":63533,"o":"slot_shape_8,x"},{"a":39021,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":39023,"t":"code","b":[157,146,2],"m":"sta","oa":658,"o":"enemy_anim_delay,x"},{"a":39026,"t":"code","b":[32,250,179],"m":"jsr","oa":46074,"o":"aim_at_vaus"},{"a":39029,"t":"code","b":[76,45,152],"m":"jmp","oa":38957,"o":"j_982D"},{"a":39032,"l":"b_9878","t":"code","b":[202],"m":"dex","x":[38993]},{"a":39033,"t":"code","b":[16,211],"m":"bpl","oa":38990,"o":"b_984E"},{"a":39035,"t":"code","b":[76,45,152],"m":"jmp","oa":38957,"o":"j_982D"},{"a":39038,"l":"doh_mouth_chars","c":"First character of Doh's mouth for each step of doh_mouth: $71 (closed), $CA, $CE, $D2, $D6, $D2, $CE, $CA, $71, then 0 = fire a shot.","t":"byte","b":[113,202,206,210,214,210,206,202],"x":[38957]},{"a":39046,"t":"byte","b":[113,0]},{"a":39048,"l":"gate_now_open","c":"Gate animation finished opening: stop it ($0244 = 0) and mark the gate open ($0242 = 1).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[39123]},{"a":39050,"t":"code","b":[141,68,2],"m":"sta","oa":580,"o":"gate_moving"},{"a":39053,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":39055,"t":"code","b":[141,66,2],"m":"sta","oa":578,"o":"gate_open"},{"a":39058,"t":"code","b":[96],"m":"rts"},{"a":39059,"l":"gate_now_closed","c":"Gate animation finished closing: $0244 = 0, $0242 = 0 (closed).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[39076]},{"a":39061,"t":"code","b":[141,68,2],"m":"sta","oa":580,"o":"gate_moving"},{"a":39064,"t":"code","b":[141,66,2],"m":"sta","oa":578,"o":"gate_open"},{"a":39067,"t":"code","b":[96],"m":"rts"},{"a":39068,"l":"gate_close_step","c":"One closing step of the gate: stage $0245 + 1; at 4 the gate is closed (gate_now_closed), otherwise store it and redraw (stage 3 = whole gate from gate_rows).","t":"code","b":[173,69,2],"m":"lda","oa":581,"o":"gate_stage","x":[39115]},{"a":39071,"t":"code","b":[24],"m":"clc"},{"a":39072,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":39074,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":39076,"t":"code","b":[240,237],"m":"beq","oa":39059,"o":"gate_now_closed"},{"a":39078,"t":"code","b":[141,69,2],"m":"sta","oa":581,"o":"gate_stage"},{"a":39081,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":39083,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":39085,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":39087,"t":"code","b":[240,119],"m":"beq","oa":39208,"o":"gate_copy_rows"},{"a":39089,"t":"code","b":[76,216,152],"m":"jmp","oa":39128,"o":"j_98D8"},{"a":39092,"l":"update_gate","c":"The enemy gate in the top wall, two characters $EB/$EC whose bitmaps are $CF58 and $CF60 (charset $C800). While $0244 is set, every 6th frame ($0243): if open ($0242 = 1) close one stage (gate_close_step), else open one: stage $0245 - 1, below 0 the gate is open (gate_now_open). Drawing stage s: rows y and 7-y with y >= s are cleared, the others copied from gate_rows; stage 3 is the whole gate, 0 fully open, so it opens from the middle outward.","t":"code","b":[173,68,2],"m":"lda","oa":580,"o":"gate_moving","x":[38225,38312]},{"a":39095,"t":"code","b":[240,110],"m":"beq","oa":39207,"o":"update_gate_rts"},{"a":39097,"t":"code","b":[238,67,2],"m":"inc","oa":579,"o":"gate_timer"},{"a":39100,"t":"code","b":[173,67,2],"m":"lda","oa":579,"o":"gate_timer"},{"a":39103,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":39105,"t":"code","b":[144,100],"m":"bcc","oa":39207,"o":"update_gate_rts"},{"a":39107,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39109,"t":"code","b":[141,67,2],"m":"sta","oa":579,"o":"gate_timer"},{"a":39112,"t":"code","b":[173,66,2],"m":"lda","oa":578,"o":"gate_open"},{"a":39115,"t":"code","b":[208,207],"m":"bne","oa":39068,"o":"gate_close_step"},{"a":39117,"t":"code","b":[173,69,2],"m":"lda","oa":581,"o":"gate_stage"},{"a":39120,"t":"code","b":[56],"m":"sec"},{"a":39121,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":39123,"t":"code","b":[144,179],"m":"bcc","oa":39048,"o":"gate_now_open"},{"a":39125,"t":"code","b":[141,69,2],"m":"sta","oa":581,"o":"gate_stage"},{"a":39128,"l":"j_98D8","t":"code","b":[160,3],"m":"ldy","o":"#$03","x":[39089]},{"a":39130,"t":"code","b":[204,69,2],"m":"cpy","oa":581,"o":"gate_stage"},{"a":39133,"t":"code","b":[240,73],"m":"beq","oa":39208,"o":"gate_copy_rows"},{"a":39135,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":39137,"l":"b_98E1","t":"code","b":[204,69,2],"m":"cpy","oa":581,"o":"gate_stage","x":[39158]},{"a":39140,"t":"code","b":[144,66],"m":"bcc","oa":39208,"o":"gate_copy_rows"},{"a":39142,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39144,"t":"code","b":[153,88,207],"m":"sta","oa":53080,"o":"chars_gate_left,y"},{"a":39147,"t":"code","b":[153,96,207],"m":"sta","oa":53088,"o":"f_CF60,y"},{"a":39150,"t":"code","b":[157,88,207],"m":"sta","oa":53080,"o":"chars_gate_left,x"},{"a":39153,"t":"code","b":[157,96,207],"m":"sta","oa":53088,"o":"f_CF60,x"},{"a":39156,"t":"code","b":[232],"m":"inx"},{"a":39157,"t":"code","b":[136],"m":"dey"},{"a":39158,"t":"code","b":[16,233],"m":"bpl","oa":39137,"o":"b_98E1"},{"a":39160,"t":"code","b":[96],"m":"rts"},{"a":39161,"l":"drum_bar","c":"Drum bytecode (see start_drums): a 22-step bar called 5 times by the ending track: samples $84 / $86 / $86 / $82 / $86 / $86 / $84 $84 $86 $86 ..., waits of 12 and 6 ticks. Ends with the $60 (return) at $9927, which is also the RTS of update_gate.","t":"byte","b":[132,12,134,6,134,6,130,12]},{"a":39169,"t":"byte","b":[134,6,134,6,132,6,132,6]},{"a":39177,"t":"byte","b":[134,6,134,6,130,12,134,6]},{"a":39185,"t":"byte","b":[134,6,132,12,134,6,134,6]},{"a":39193,"t":"byte","b":[130,12,134,6,134,6,132,6]},{"a":39201,"t":"byte","b":[132,6,134,6,134,6]},{"a":39207,"l":"update_gate_rts","c":"RTS shared by update_gate (BCC $9927 when it is not the 6th frame) and drum_bar, whose $60 (return) is this byte.","t":"code","b":[96],"m":"rts","x":[39095,39105]},{"a":39208,"l":"gate_copy_rows","c":"Draw the rows of the gate kept at this stage: for Y down to 0 and X up from Y's mirror, copy row Y and row X of gate_rows (left $9950, right $9958) into the characters at $CF58/$CF60.","t":"code","b":[185,80,153],"m":"lda","oa":39248,"o":"gate_rows,y","x":[39087,39133,39140,39234]},{"a":39211,"t":"code","b":[153,88,207],"m":"sta","oa":53080,"o":"chars_gate_left,y"},{"a":39214,"t":"code","b":[185,88,153],"m":"lda","oa":39256,"o":"gate_rows_right,y"},{"a":39217,"t":"code","b":[153,96,207],"m":"sta","oa":53088,"o":"f_CF60,y"},{"a":39220,"t":"code","b":[189,80,153],"m":"lda","oa":39248,"o":"gate_rows,x"},{"a":39223,"t":"code","b":[157,88,207],"m":"sta","oa":53080,"o":"chars_gate_left,x"},{"a":39226,"t":"code","b":[189,88,153],"m":"lda","oa":39256,"o":"gate_rows_right,x"},{"a":39229,"t":"code","b":[157,96,207],"m":"sta","oa":53088,"o":"f_CF60,x"},{"a":39232,"t":"code","b":[232],"m":"inx"},{"a":39233,"t":"code","b":[136],"m":"dey"},{"a":39234,"t":"code","b":[16,228],"m":"bpl","oa":39208,"o":"gate_copy_rows"},{"a":39236,"t":"code","b":[96],"m":"rts"},{"a":39237,"l":"start_drums","c":"Start a drum track for the sample sequencer at $FEF4: A = ticks before the first command ($DC; one tick per call of $FEF4 from the music update at $F88F, made only while $0209 is negative, as the title and the ending set it), X/Y = address of the bytecode ($DA/$DB), return stack pointer $DD = 7 (stack at $78-$7F low, $80-$87 high, repeat counts at $88-$8F). Used with $AB10 by the ending ($968C) and with $9960 at $B4DD. Bytecode: $80-$87 n = trigger sample $8x (handler from $B07D,x / drum_handler_hi; $FEE0 plays it) and wait n ticks; $20 lo hi = call; $60 = return; $4C lo hi = jump; $49 n ... $40 = repeat n times.","t":"code","b":[133,220],"m":"sta","oa":220,"o":"drum_wait","x":[38540,46301]},{"a":39239,"t":"code","b":[134,218],"m":"stx","oa":218,"o":"drum_ptr"},{"a":39241,"t":"code","b":[132,219],"m":"sty","oa":219,"o":"drum_ptr_hi"},{"a":39243,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":39245,"t":"code","b":[133,221],"m":"sta","oa":221,"o":"drum_stack_index"},{"a":39247,"t":"code","b":[96],"m":"rts"},{"a":39248,"l":"gate_rows","c":"The gate's closed bitmap: 8 bytes for character $EB (left half, $9950) and 8 for $EC (right half, $9958), copied to $CF58/$CF60 and $CFE8 by $F0B6 at the start of a round, and row by row by update_gate.","t":"byte","b":[252,168,84,255,255,252,168,252],"x":[39208,39220,61622]},{"a":39256,"l":"gate_rows_right","c":"Right half of the closed gate (character $EC), 8 bytes $88 $88 $CC $FF $FF $CC $88 $CC, copied to $CF60 by update_gate ($992E, $993A).","t":"byte","b":[136,136,204,255,255,204,136,204],"x":[39214,39226]},{"a":39264,"l":"drums_title","c":"Drum track of the title tune ($3D), started at $B4DD with A = 2: about 270 bytes of sequencer bytecode that call the short figures at $A555-$A5C6 and $AAA0-$AAE9, with long rests on sample $87, ending in drums_idle. The samples are played by $FEE0 from the title's wait loop at $B4E0. Decoded: work/agent12/drums.txt.","t":"byte","b":[32,85,165,32,181,165,32,181]},{"a":39272,"t":"byte","b":[165,32,85,165,73,2,32,181]},{"a":39280,"t":"byte","b":[165,32,160,170,73,3,130,1]},{"a":39288,"t":"byte","b":[130,1,130,6,64,64,32,176]},{"a":39296,"t":"byte","b":[165,135,120,73,7,135,128,64]},{"a":39304,"t":"byte","b":[32,116,165,32,159,165,32,116]},{"a":39312,"t":"byte","b":[165,32,170,165,32,116,165,32]},{"a":39320,"t":"byte","b":[159,165,32,176,165,32,165,165]},{"a":39328,"t":"byte","b":[32,176,165,73,4,32,176,165]},{"a":39336,"t":"byte","b":[32,165,165,64,32,176,165,32]},{"a":39344,"t":"byte","b":[176,165,135,24,32,181,165,32]},{"a":39352,"t":"byte","b":[181,165,73,3,32,181,170,64]},{"a":39360,"t":"byte","b":[32,176,165,32,165,165,132,2]},{"a":39368,"t":"byte","b":[132,6,32,165,165,32,152,165]},{"a":39376,"t":"byte","b":[32,176,165,132,2,132,6,32]},{"a":39384,"t":"byte","b":[176,165,73,3,32,181,170,64]},{"a":39392,"t":"byte","b":[32,176,165,32,165,165,132,2]},{"a":39400,"t":"byte","b":[132,6,133,4,133,4,32,152]},{"a":39408,"t":"byte","b":[165,133,2,133,6,32,176,165]},{"a":39416,"t":"byte","b":[73,4,134,2,64,73,3,32]},{"a":39424,"t":"byte","b":[207,170,64,132,2,132,6,32]},{"a":39432,"t":"byte","b":[165,165,132,2,132,6,32,165]},{"a":39440,"t":"byte","b":[165,32,152,165,73,3,132,2]},{"a":39448,"t":"byte","b":[132,6,64,73,3,32,207,170]},{"a":39456,"t":"byte","b":[64,132,2,132,6,32,165,165]},{"a":39464,"t":"byte","b":[132,2,132,6,133,4,133,4]},{"a":39472,"t":"byte","b":[32,152,165,133,2,133,6,132]},{"a":39480,"t":"byte","b":[2,132,6,73,4,134,2,64]},{"a":39488,"t":"byte","b":[73,2,132,2,132,14,32,165]},{"a":39496,"t":"byte","b":[165,32,165,165,32,152,165,135]},{"a":39504,"t":"byte","b":[8,32,165,165,32,165,165,64]},{"a":39512,"t":"byte","b":[132,2,132,14,32,165,165,32]},{"a":39520,"t":"byte","b":[165,165,32,152,165,32,176,165]},{"a":39528,"t":"byte","b":[32,165,165,32,165,165,32,176]},{"a":39536,"t":"byte","b":[165]},{"a":39537,"l":"drums_idle","c":"Drum idle loop: sample $87, wait 100 ticks, jump to itself ($87 $64 $4C $71 $9A); also set directly by $B533 (with $DC = $FF and $DF = 0) to silence the drums.","t":"byte","b":[135,100,76,113,154]},{"a":39542,"l":"reset_life_state","c":"Reset for a new life or round: clear $0200-$03FF (all play variables and the silver-brick tables), clear obj_y 2-10, Vaus centre $0206 = $80, Vaus halves at X $80/$88, Y $E0, width $020A = 4, ball 0 live ($02A7) at X $8C, Y = Vaus + 8, moving up ($0295 = $FF) and right ($0298 = 1), angle $029B/$029E = $FF/$F0, no capsule ($AA0D), ball held on the Vaus ($0228 = 1, offset $0221 = $F8), speed $023A = 2, gate stage $0245 = 3 (closed).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[38379,38597,39946,39998]},{"a":39544,"t":"code","b":[168],"m":"tay"},{"a":39545,"l":"b_9A79","t":"code","b":[153,0,2],"m":"sta","oa":512,"o":"frame_ticks,y","x":[39552]},{"a":39548,"t":"code","b":[153,0,3],"m":"sta","oa":768,"o":"metal_state,y"},{"a":39551,"t":"code","b":[136],"m":"dey"},{"a":39552,"t":"code","b":[208,247],"m":"bne","oa":39545,"o":"b_9A79"},{"a":39554,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39556,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":39558,"l":"b_9A86","t":"code","b":[153,47,148],"m":"sta","oa":37935,"o":"laser_y,y","x":[39562]},{"a":39561,"t":"code","b":[136],"m":"dey"},{"a":39562,"t":"code","b":[16,250],"m":"bpl","oa":39558,"o":"b_9A86"},{"a":39564,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":39566,"t":"code","b":[141,6,2],"m":"sta","oa":518,"o":"vaus_x"},{"a":39569,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":39572,"t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":39574,"t":"code","b":[141,70,148],"m":"sta","oa":37958,"o":"vaus_right_x"},{"a":39577,"t":"code","b":[169,140],"m":"lda","o":"#$8C"},{"a":39579,"t":"code","b":[141,73,148],"m":"sta","oa":37961,"o":"ball_x"},{"a":39582,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":39584,"t":"code","b":[141,45,148],"m":"sta","oa":37933,"o":"obj_y"},{"a":39587,"t":"code","b":[141,46,148],"m":"sta","oa":37934,"o":"vaus_right_y"},{"a":39590,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":39592,"t":"code","b":[141,10,2],"m":"sta","oa":522,"o":"vaus_stretch"},{"a":39595,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":39597,"t":"code","b":[141,149,2],"m":"sta","oa":661,"o":"ball_dy"},{"a":39600,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":39602,"t":"code","b":[141,152,2],"m":"sta","oa":664,"o":"ball_dx"},{"a":39605,"t":"code","b":[141,167,2],"m":"sta","oa":679,"o":"ball_active"},{"a":39608,"t":"code","b":[173,45,148],"m":"lda","oa":37933,"o":"obj_y"},{"a":39611,"t":"code","b":[24],"m":"clc"},{"a":39612,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":39614,"t":"code","b":[141,49,148],"m":"sta","oa":37937,"o":"ball_y"},{"a":39617,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":39619,"t":"code","b":[141,155,2],"m":"sta","oa":667,"o":"ball_rate_y"},{"a":39622,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":39624,"t":"code","b":[141,158,2],"m":"sta","oa":670,"o":"ball_rate_x"},{"a":39627,"t":"code","b":[32,13,170],"m":"jsr","oa":43533,"o":"capsule_clear"},{"a":39630,"t":"code","b":[173,54,2],"m":"lda","oa":566,"o":"fire_now"},{"a":39633,"t":"code","b":[141,53,2],"m":"sta","oa":565,"o":"fire_prev"},{"a":39636,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":39638,"t":"code","b":[141,40,2],"m":"sta","oa":552,"o":"ball_held"},{"a":39641,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":39643,"t":"code","b":[141,58,2],"m":"sta","oa":570,"o":"ball_speed"},{"a":39646,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":39648,"t":"code","b":[141,69,2],"m":"sta","oa":581,"o":"gate_stage"},{"a":39651,"t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":39653,"t":"code","b":[141,33,2],"m":"sta","oa":545,"o":"catch_offset"},{"a":39656,"t":"code","b":[96],"m":"rts"},{"a":39657,"l":"check_vaus_lost","c":"Once a frame. While the Vaus explosion runs ($0249 > 0): every 3rd frame show the next pointer pair from vaus_explode_frames, and at the end hide the Vaus, wait for the sound ($3417), save the wall ($0600), take a life (BCD $0936,X - 1); none left (result $99) -> game_over; otherwise keep the bricks-left count ($093B,X), switch players if another is in the game ($0939), and resume_player. Starts the explosion when no ball is live ($02A7-$02A9 all 0): $020A = $0C, $FCEE, $D015 = $FC (hardware sprites 0-1 off), sound priority, three effect voices.","t":"code","b":[173,73,2],"m":"lda","oa":585,"o":"death_frame","x":[38237,38324,38443]},{"a":39660,"t":"code","b":[208,71],"m":"bne","oa":39733,"o":"b_9B35"},{"a":39662,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":39664,"l":"b_9AF0","t":"code","b":[189,167,2],"m":"lda","oa":679,"o":"ball_active,x","x":[39670]},{"a":39667,"t":"code","b":[208,100],"m":"bne","oa":39769,"o":"r_9B59"},{"a":39669,"t":"code","b":[202],"m":"dex"},{"a":39670,"t":"code","b":[16,248],"m":"bpl","oa":39664,"o":"b_9AF0"},{"a":39672,"l":"vaus_destroyed","c":"Start the Vaus explosion: also the target of the JMP at $A76D when one of Doh's shots touches the Vaus.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[42861]},{"a":39674,"t":"code","b":[141,73,2],"m":"sta","oa":585,"o":"death_frame"},{"a":39677,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":39679,"t":"code","b":[141,10,2],"m":"sta","oa":522,"o":"vaus_stretch"},{"a":39682,"t":"code","b":[32,238,252],"m":"jsr","oa":64750,"o":"place_vaus"},{"a":39685,"t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":39687,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":39690,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":39692,"t":"code","b":[141,23,2],"m":"sta","oa":535,"o":"tune_hold_kind"},{"a":39695,"t":"code","b":[141,22,2],"m":"sta","oa":534,"o":"tune_hold"},{"a":39698,"t":"code","b":[32,144,38],"m":"jsr","oa":9872,"o":"sound_reset"},{"a":39701,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":39703,"t":"code","b":[169,69],"m":"lda","o":"#$45"},{"a":39705,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":39707,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":39710,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":39712,"t":"code","b":[169,100],"m":"lda","o":"#$64"},{"a":39714,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":39716,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":39719,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":39721,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":39723,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":39725,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":39728,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":39730,"t":"code","b":[76,71,155],"m":"jmp","oa":39751,"o":"j_9B47"},{"a":39733,"l":"b_9B35","t":"code","b":[168],"m":"tay","x":[39660]},{"a":39734,"t":"code","b":[238,2,2],"m":"inc","oa":514,"o":"death_divider"},{"a":39737,"t":"code","b":[173,2,2],"m":"lda","oa":514,"o":"death_divider"},{"a":39740,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":39742,"t":"code","b":[144,25],"m":"bcc","oa":39769,"o":"r_9B59"},{"a":39744,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39746,"t":"code","b":[141,2,2],"m":"sta","oa":514,"o":"death_divider"},{"a":39749,"t":"code","b":[208,18],"m":"bne","oa":39769,"o":"r_9B59"},{"a":39751,"l":"j_9B47","t":"code","b":[185,80,156],"m":"lda","oa":40016,"o":"vaus_explode_frames,y","x":[39730]},{"a":39754,"t":"code","b":[240,14],"m":"beq","oa":39770,"o":"b_9B5A"},{"a":39756,"t":"code","b":[141,37,248],"m":"sta","oa":63525,"o":"slot_shapes"},{"a":39759,"t":"code","b":[24],"m":"clc"},{"a":39760,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":39762,"t":"code","b":[141,38,248],"m":"sta","oa":63526,"o":"slot_shape_1"},{"a":39765,"t":"code","b":[200],"m":"iny"},{"a":39766,"t":"code","b":[140,73,2],"m":"sty","oa":585,"o":"death_frame"},{"a":39769,"l":"r_9B59","t":"code","b":[96],"m":"rts","x":[39667,39742,39749,39781]},{"a":39770,"l":"b_9B5A","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[39754]},{"a":39772,"t":"code","b":[141,45,148],"m":"sta","oa":37933,"o":"obj_y"},{"a":39775,"t":"code","b":[141,46,148],"m":"sta","oa":37934,"o":"vaus_right_y"},{"a":39778,"t":"code","b":[32,23,52],"m":"jsr","oa":13335,"o":"sound_busy"},{"a":39781,"t":"code","b":[208,242],"m":"bne","oa":39769,"o":"r_9B59"},{"a":39783,"t":"code","b":[32,0,6],"m":"jsr","oa":1536,"o":"save_wall_of_player"},{"a":39786,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39788,"t":"code","b":[141,73,2],"m":"sta","oa":585,"o":"death_frame"},{"a":39791,"t":"code","b":[248],"m":"sed"},{"a":39792,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":39795,"t":"code","b":[189,54,9],"m":"lda","oa":2358,"o":"lives_p1,x"},{"a":39798,"t":"code","b":[56],"m":"sec"},{"a":39799,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":39801,"t":"code","b":[157,54,9],"m":"sta","oa":2358,"o":"lives_p1,x"},{"a":39804,"t":"code","b":[216],"m":"cld"},{"a":39805,"t":"code","b":[201,153],"m":"cmp","o":"#$99"},{"a":39807,"t":"code","b":[208,95],"m":"bne","oa":39904,"o":"b_9BE0"},{"a":39809,"l":"game_over","c":"Game over for the current player: hide all 12 objects, tune $21, then print GAME OVER (one-player game) or GAME OVER PLAYER n (two players, $093A) from game_over_text at $C2F8 + offset (screen row 19; PETSCII AND $3F, space as $1C), colour RAM 1 on that row and 0 on the rows above and below; wait for the tune, then 51 frames. If no other player is left ($0939 = 0): screen off and JMP $F000 (title), dropping the return address. Else $0939 - 1, switch player, resume_player.","t":"code","b":[162,11],"m":"ldx","o":"#$0B","x":[38591]},{"a":39811,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39813,"l":"b_9B85","t":"code","b":[157,45,148],"m":"sta","oa":37933,"o":"obj_y,x","x":[39817]},{"a":39816,"t":"code","b":[202],"m":"dex"},{"a":39817,"t":"code","b":[16,250],"m":"bpl","oa":39813,"o":"b_9B85"},{"a":39819,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":39821,"t":"code","b":[32,43,38],"m":"jsr","oa":9771,"o":"music_start_tune"},{"a":39824,"t":"code","b":[174,58,9],"m":"ldx","oa":2362,"o":"two_players"},{"a":39827,"t":"code","b":[240,4],"m":"beq","oa":39833,"o":"b_9B99"},{"a":39829,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":39832,"t":"code","b":[232],"m":"inx"},{"a":39833,"l":"b_9B99","t":"code","b":[189,16,158],"m":"lda","oa":40464,"o":"game_over_msg_index,x","x":[39827]},{"a":39836,"t":"code","b":[170],"m":"tax"},{"a":39837,"t":"code","b":[188,214,157],"m":"ldy","oa":40406,"o":"game_over_text,x"},{"a":39840,"t":"code","b":[232],"m":"inx"},{"a":39841,"l":"j_9BA1","t":"code","b":[189,214,157],"m":"lda","oa":40406,"o":"game_over_text,x","x":[39872]},{"a":39844,"t":"code","b":[48,29],"m":"bmi","oa":39875,"o":"b_9BC3"},{"a":39846,"t":"code","b":[41,63],"m":"and","o":"#$3F"},{"a":39848,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":39850,"t":"code","b":[208,2],"m":"bne","oa":39854,"o":"b_9BAE"},{"a":39852,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":39854,"l":"b_9BAE","t":"code","b":[153,248,194],"m":"sta","oa":49912,"o":"f_C2F8,y","x":[39850]},{"a":39857,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39859,"t":"code","b":[153,208,218],"m":"sta","o":"$DAD0,y"},{"a":39862,"t":"code","b":[153,32,219],"m":"sta","o":"$DB20,y"},{"a":39865,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":39867,"t":"code","b":[153,248,218],"m":"sta","o":"$DAF8,y"},{"a":39870,"t":"code","b":[232],"m":"inx"},{"a":39871,"t":"code","b":[200],"m":"iny"},{"a":39872,"t":"code","b":[76,161,155],"m":"jmp","oa":39841,"o":"j_9BA1"},{"a":39875,"l":"b_9BC3","t":"code","b":[32,12,247],"m":"jsr","oa":63244,"o":"wait_tune_end","x":[39844]},{"a":39878,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":39880,"t":"code","b":[141,0,2],"m":"sta","oa":512,"o":"frame_ticks"},{"a":39883,"t":"code","b":[162,50],"m":"ldx","o":"#$32"},{"a":39885,"l":"b_9BCD","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[39889]},{"a":39888,"t":"code","b":[202],"m":"dex"},{"a":39889,"t":"code","b":[16,250],"m":"bpl","oa":39885,"o":"b_9BCD"},{"a":39891,"t":"code","b":[173,57,9],"m":"lda","oa":2361,"o":"players_left"},{"a":39894,"t":"code","b":[208,33],"m":"bne","oa":39929,"o":"b_9BF9"},{"a":39896,"t":"code","b":[32,162,185],"m":"jsr","oa":47522,"o":"screen_off_after_tick"},{"a":39899,"t":"code","b":[104],"m":"pla"},{"a":39900,"t":"code","b":[104],"m":"pla"},{"a":39901,"t":"code","b":[76,0,240],"m":"jmp","oa":61440,"o":"main_entry"},{"a":39904,"l":"b_9BE0","t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player","x":[39807]},{"a":39907,"t":"code","b":[173,85,4],"m":"lda","oa":1109,"o":"bricks_left"},{"a":39910,"t":"code","b":[157,59,9],"m":"sta","oa":2363,"o":"bricks_saved,x"},{"a":39913,"t":"code","b":[173,57,9],"m":"lda","oa":2361,"o":"players_left"},{"a":39916,"t":"code","b":[240,22],"m":"beq","oa":39940,"o":"resume_player"},{"a":39918,"t":"code","b":[173,56,9],"m":"lda","oa":2360,"o":"current_player"},{"a":39921,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":39923,"t":"code","b":[141,56,9],"m":"sta","oa":2360,"o":"current_player"},{"a":39926,"t":"code","b":[76,4,156],"m":"jmp","oa":39940,"o":"resume_player"},{"a":39929,"l":"b_9BF9","t":"code","b":[206,57,9],"m":"dec","oa":2361,"o":"players_left","x":[39894]},{"a":39932,"t":"code","b":[173,56,9],"m":"lda","oa":2360,"o":"current_player"},{"a":39935,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":39937,"t":"code","b":[141,56,9],"m":"sta","oa":2360,"o":"current_player"},{"a":39940,"l":"resume_player","c":"Restart play for the player now current ($0938): screen off, $F2B5, reset_life_state, $FA4E and $F39B (redraw the panel), then for rounds 1-32 rebuild the saved wall ($F6C2, $F552, $F630, $F371) and round_start; for round 33 the bricks-left count from $093B,Y, Doh's screen (doh_setup) and round_start.","t":"code","b":[32,162,185],"m":"jsr","oa":47522,"o":"screen_off_after_tick","x":[39916,39926]},{"a":39943,"t":"code","b":[32,181,242],"m":"jsr","oa":62133,"o":"draw_side_panel"},{"a":39946,"t":"code","b":[32,118,154],"m":"jsr","oa":39542,"o":"reset_life_state"},{"a":39949,"t":"code","b":[32,78,250],"m":"jsr","oa":64078,"o":"draw_lives"},{"a":39952,"t":"code","b":[32,155,243],"m":"jsr","oa":62363,"o":"draw_round_numbers"},{"a":39955,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":39958,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":39961,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":39963,"t":"code","b":[240,21],"m":"beq","oa":39986,"o":"b_9C32"},{"a":39965,"t":"code","b":[32,194,246],"m":"jsr","oa":63170,"o":"exit_gate_close"},{"a":39968,"t":"code","b":[32,82,245],"m":"jsr","oa":62802,"o":"draw_playfield_background"},{"a":39971,"t":"code","b":[32,48,246],"m":"jsr","oa":63024,"o":"draw_walls"},{"a":39974,"t":"code","b":[32,113,243],"m":"jsr","oa":62321,"o":"rebuild_wall_from_buffer"},{"a":39977,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":39979,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":39982,"t":"code","b":[32,215,150],"m":"jsr","oa":38615,"o":"round_start"},{"a":39985,"t":"code","b":[96],"m":"rts"},{"a":39986,"l":"b_9C32","t":"code","b":[172,56,9],"m":"ldy","oa":2360,"o":"current_player","x":[39963]},{"a":39989,"t":"code","b":[185,59,9],"m":"lda","oa":2363,"o":"bricks_saved,y"},{"a":39992,"t":"code","b":[141,85,4],"m":"sta","oa":1109,"o":"bricks_left"},{"a":39995,"t":"code","b":[32,48,246],"m":"jsr","oa":63024,"o":"draw_walls"},{"a":39998,"t":"code","b":[32,118,154],"m":"jsr","oa":39542,"o":"reset_life_state"},{"a":40001,"t":"code","b":[32,89,156],"m":"jsr","oa":40025,"o":"doh_setup"},{"a":40004,"t":"code","b":[32,194,246],"m":"jsr","oa":63170,"o":"exit_gate_close"},{"a":40007,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":40009,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":40012,"t":"code","b":[32,215,150],"m":"jsr","oa":38615,"o":"round_start"},{"a":40015,"t":"code","b":[96],"m":"rts"},{"a":40016,"l":"vaus_explode_frames","c":"Sprite pointers of the Vaus explosion, left half (the right half is +1): $84 $86 $88 $8A $8C $8E $90 $92, then 0 = end; read by check_vaus_lost every 3rd frame.","t":"byte","b":[132,134,136,138,140,142,144,146],"x":[39751]},{"a":40024,"t":"byte","b":[0]},{"a":40025,"l":"doh_setup","c":"Round 33 screen: copy Doh's character graphics $EA00-$EBFF to $CA00-$CBFF (characters $40-$7F) and $1C00-$1FFF to $CC00-$CFFF (characters $80-$FF), then draw Doh: 24 rows of 26 characters from the map at $7B90 (26 bytes a row) to the screen from $C029 (row 1, column 1) with colour-RAM value $0E; $D022 = $0F.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[38376,40001]},{"a":40027,"l":"b_9C5B","t":"code","b":[185,0,234],"m":"lda","oa":59904,"o":"tiles_round33,y","x":[40064]},{"a":40030,"t":"code","b":[153,0,202],"m":"sta","oa":51712,"o":"charset_tiles,y"},{"a":40033,"t":"code","b":[185,0,235],"m":"lda","oa":60160,"o":"tiles_round33_96,y"},{"a":40036,"t":"code","b":[153,0,203],"m":"sta","oa":51968,"o":"charset_tiles_96,y"},{"a":40039,"t":"code","b":[185,0,28],"m":"lda","oa":7168,"o":"glyphs_80_9f,y"},{"a":40042,"t":"code","b":[153,0,204],"m":"sta","oa":52224,"o":"charset_upper,y"},{"a":40045,"t":"code","b":[185,0,29],"m":"lda","oa":7424,"o":"glyphs_a0_bf,y"},{"a":40048,"t":"code","b":[153,0,205],"m":"sta","oa":52480,"o":"charset_160,y"},{"a":40051,"t":"code","b":[185,0,30],"m":"lda","oa":7680,"o":"glyphs_c0_df,y"},{"a":40054,"t":"code","b":[153,0,206],"m":"sta","oa":52736,"o":"charset_192,y"},{"a":40057,"t":"code","b":[185,0,31],"m":"lda","oa":7936,"o":"glyphs_e0_ff,y"},{"a":40060,"t":"code","b":[153,0,207],"m":"sta","oa":52992,"o":"charset_224,y"},{"a":40063,"t":"code","b":[136],"m":"dey"},{"a":40064,"t":"code","b":[208,217],"m":"bne","oa":40027,"o":"b_9C5B"},{"a":40066,"t":"code","b":[162,23],"m":"ldx","o":"#$17"},{"a":40068,"t":"code","b":[169,144],"m":"lda","o":"#$90"},{"a":40070,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":40072,"t":"code","b":[169,123],"m":"lda","o":"#$7B"},{"a":40074,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":40076,"t":"code","b":[169,41],"m":"lda","o":"#$29"},{"a":40078,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":40080,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":40082,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":40084,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":40086,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":40088,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":40090,"l":"j_9C9A","t":"code","b":[160,25],"m":"ldy","o":"#$19","x":[40140]},{"a":40092,"l":"b_9C9C","t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y","x":[40101]},{"a":40094,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":40096,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":40098,"t":"code","b":[145,17],"m":"sta","oa":17,"o":"(src_ptr),y"},{"a":40100,"t":"code","b":[136],"m":"dey"},{"a":40101,"t":"code","b":[16,245],"m":"bpl","oa":40092,"o":"b_9C9C"},{"a":40103,"t":"code","b":[202],"m":"dex"},{"a":40104,"t":"code","b":[48,37],"m":"bmi","oa":40143,"o":"b_9CCF"},{"a":40106,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"scr_ptr"},{"a":40108,"t":"code","b":[24],"m":"clc"},{"a":40109,"t":"code","b":[105,26],"m":"adc","o":"#$1A"},{"a":40111,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":40113,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":40115,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":40117,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":40119,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"col_ptr"},{"a":40121,"t":"code","b":[24],"m":"clc"},{"a":40122,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":40124,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":40126,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":40128,"t":"code","b":[165,16],"m":"lda","oa":16,"o":"col_ptr_hi"},{"a":40130,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":40132,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":40134,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":40136,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":40138,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":40140,"t":"code","b":[76,154,156],"m":"jmp","oa":40090,"o":"j_9C9A"},{"a":40143,"l":"b_9CCF","t":"code","b":[169,15],"m":"lda","o":"#$0F","x":[40104]},{"a":40145,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":40148,"t":"code","b":[96],"m":"rts"},{"a":40149,"l":"enemies_vs_enemies","c":"Keep the live enemies ($0274 = 1) from passing through one another: for every ordered pair (Y = the other enemy, X = the one tested), test X vertically with enemy_bump_v when it moves vertically or not at all sideways, and horizontally with enemy_bump_h when it moves sideways ($027D <> 0).","t":"code","b":[160,2],"m":"ldy","o":"#$02","x":[38213,38300]},{"a":40151,"l":"b_9CD7","t":"code","b":[185,116,2],"m":"lda","oa":628,"o":"enemy_state,y","x":[40195]},{"a":40154,"t":"code","b":[240,38],"m":"beq","oa":40194,"o":"b_9D02"},{"a":40156,"t":"code","b":[48,36],"m":"bmi","oa":40194,"o":"b_9D02"},{"a":40158,"t":"code","b":[140,16,2],"m":"sty","oa":528,"o":"index_save"},{"a":40161,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":40163,"l":"b_9CE3","t":"code","b":[236,16,2],"m":"cpx","oa":528,"o":"index_save","x":[40192]},{"a":40166,"t":"code","b":[240,23],"m":"beq","oa":40191,"o":"b_9CFF"},{"a":40168,"t":"code","b":[189,116,2],"m":"lda","oa":628,"o":"enemy_state,x"},{"a":40171,"t":"code","b":[240,18],"m":"beq","oa":40191,"o":"b_9CFF"},{"a":40173,"t":"code","b":[48,16],"m":"bmi","oa":40191,"o":"b_9CFF"},{"a":40175,"t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x"},{"a":40178,"t":"code","b":[240,18],"m":"beq","oa":40198,"o":"b_9D06"},{"a":40180,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":40183,"t":"code","b":[240,3],"m":"beq","oa":40188,"o":"b_9CFC"},{"a":40185,"t":"code","b":[32,12,157],"m":"jsr","oa":40204,"o":"enemy_bump_v"},{"a":40188,"l":"b_9CFC","t":"code","b":[32,113,157],"m":"jsr","oa":40305,"o":"enemy_bump_h","x":[40183]},{"a":40191,"l":"b_9CFF","t":"code","b":[202],"m":"dex","x":[40166,40171,40173,40201]},{"a":40192,"t":"code","b":[16,225],"m":"bpl","oa":40163,"o":"b_9CE3"},{"a":40194,"l":"b_9D02","t":"code","b":[136],"m":"dey","x":[40154,40156]},{"a":40195,"t":"code","b":[16,210],"m":"bpl","oa":40151,"o":"b_9CD7"},{"a":40197,"t":"code","b":[96],"m":"rts"},{"a":40198,"l":"b_9D06","t":"code","b":[32,12,157],"m":"jsr","oa":40204,"o":"enemy_bump_v","x":[40178]},{"a":40201,"t":"code","b":[76,255,156],"m":"jmp","oa":40191,"o":"b_9CFF"},{"a":40204,"l":"enemy_bump_v","c":"Enemy X against enemy Y vertically: moving up ($027A < 0) with Y 12-14 pixels above it, or moving down with Y 12-14 pixels below, and less than 12 pixels apart in X: reverse the vertical step ($027A = +1 / $FF) unless a brick is in the new direction ($024F below / $024C above negative).","t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x","x":[40185,40198]},{"a":40207,"t":"code","b":[16,48],"m":"bpl","oa":40257,"o":"b_9D41"},{"a":40209,"t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x"},{"a":40212,"t":"code","b":[56],"m":"sec"},{"a":40213,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40215,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40218,"t":"code","b":[144,36],"m":"bcc","oa":40256,"o":"r_9D40"},{"a":40220,"t":"code","b":[233,2],"m":"sbc","o":"#$02"},{"a":40222,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40225,"t":"code","b":[176,29],"m":"bcs","oa":40256,"o":"r_9D40"},{"a":40227,"t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x"},{"a":40230,"t":"code","b":[56],"m":"sec"},{"a":40231,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40233,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40236,"t":"code","b":[176,18],"m":"bcs","oa":40256,"o":"r_9D40"},{"a":40238,"t":"code","b":[24],"m":"clc"},{"a":40239,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40241,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40244,"t":"code","b":[144,10],"m":"bcc","oa":40256,"o":"r_9D40"},{"a":40246,"t":"code","b":[189,79,2],"m":"lda","oa":591,"o":"enemy_block_down,x"},{"a":40249,"t":"code","b":[48,5],"m":"bmi","oa":40256,"o":"r_9D40"},{"a":40251,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40253,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":40256,"l":"r_9D40","t":"code","b":[96],"m":"rts","x":[40218,40225,40236,40244,40249,40266,40273,40284,40292,40297]},{"a":40257,"l":"b_9D41","t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x","x":[40207]},{"a":40260,"t":"code","b":[24],"m":"clc"},{"a":40261,"t":"code","b":[105,12],"m":"adc","o":"#$0C"},{"a":40263,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40266,"t":"code","b":[176,244],"m":"bcs","oa":40256,"o":"r_9D40"},{"a":40268,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":40270,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40273,"t":"code","b":[144,237],"m":"bcc","oa":40256,"o":"r_9D40"},{"a":40275,"t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x"},{"a":40278,"t":"code","b":[56],"m":"sec"},{"a":40279,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40281,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40284,"t":"code","b":[176,226],"m":"bcs","oa":40256,"o":"r_9D40"},{"a":40286,"t":"code","b":[24],"m":"clc"},{"a":40287,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40289,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40292,"t":"code","b":[144,218],"m":"bcc","oa":40256,"o":"r_9D40"},{"a":40294,"t":"code","b":[189,76,2],"m":"lda","oa":588,"o":"enemy_block_up,x"},{"a":40297,"t":"code","b":[48,213],"m":"bmi","oa":40256,"o":"r_9D40"},{"a":40299,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":40301,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":40304,"t":"code","b":[96],"m":"rts"},{"a":40305,"l":"enemy_bump_h","c":"Enemy X against enemy Y horizontally: moving left ($027D < 0) with Y 12-14 pixels to its left, or right with Y 12-14 to its right, and less than 12 apart in Y: reverse the horizontal step unless a brick is that way ($0252 right / $0255 left negative).","t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x","x":[40188]},{"a":40308,"t":"code","b":[16,48],"m":"bpl","oa":40358,"o":"b_9DA6"},{"a":40310,"t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x"},{"a":40313,"t":"code","b":[56],"m":"sec"},{"a":40314,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40316,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40319,"t":"code","b":[144,36],"m":"bcc","oa":40357,"o":"r_9DA5"},{"a":40321,"t":"code","b":[233,2],"m":"sbc","o":"#$02"},{"a":40323,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40326,"t":"code","b":[176,29],"m":"bcs","oa":40357,"o":"r_9DA5"},{"a":40328,"t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x"},{"a":40331,"t":"code","b":[56],"m":"sec"},{"a":40332,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40334,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40337,"t":"code","b":[176,18],"m":"bcs","oa":40357,"o":"r_9DA5"},{"a":40339,"t":"code","b":[24],"m":"clc"},{"a":40340,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40342,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40345,"t":"code","b":[144,10],"m":"bcc","oa":40357,"o":"r_9DA5"},{"a":40347,"t":"code","b":[189,82,2],"m":"lda","oa":594,"o":"enemy_block_right,x"},{"a":40350,"t":"code","b":[48,5],"m":"bmi","oa":40357,"o":"r_9DA5"},{"a":40352,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40354,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":40357,"l":"r_9DA5","t":"code","b":[96],"m":"rts","x":[40319,40326,40337,40345,40350,40367,40374,40385,40393,40398]},{"a":40358,"l":"b_9DA6","t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x","x":[40308]},{"a":40361,"t":"code","b":[24],"m":"clc"},{"a":40362,"t":"code","b":[105,12],"m":"adc","o":"#$0C"},{"a":40364,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40367,"t":"code","b":[176,244],"m":"bcs","oa":40357,"o":"r_9DA5"},{"a":40369,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":40371,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40374,"t":"code","b":[144,237],"m":"bcc","oa":40357,"o":"r_9DA5"},{"a":40376,"t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x"},{"a":40379,"t":"code","b":[56],"m":"sec"},{"a":40380,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40382,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40385,"t":"code","b":[176,226],"m":"bcs","oa":40357,"o":"r_9DA5"},{"a":40387,"t":"code","b":[24],"m":"clc"},{"a":40388,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40390,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40393,"t":"code","b":[144,218],"m":"bcc","oa":40357,"o":"r_9DA5"},{"a":40395,"t":"code","b":[189,85,2],"m":"lda","oa":597,"o":"enemy_block_left,x"},{"a":40398,"t":"code","b":[48,213],"m":"bmi","oa":40357,"o":"r_9DA5"},{"a":40400,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":40402,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":40405,"t":"code","b":[96],"m":"rts"},{"a":40406,"l":"game_over_text","c":"Game-over messages: [screen offset][PETSCII text][$FF]. $9DD6: offset 8, \" GAME  OVER \"; $9DE4: offset 4, \" GAME OVER PLAYER 1 \"; $9DFA: offset 4, \" GAME OVER PLAYER 2 \". Printed by game_over at $C2F8 + offset (row 18).","t":"byte","b":[8,32,71,65,77,69,32,32],"x":[39837,39841]},{"a":40414,"t":"byte","b":[79,86,69,82,32,255,4,32]},{"a":40422,"t":"byte","b":[71,65,77,69,32,79,86,69]},{"a":40430,"t":"byte","b":[82,32,80,76,65,89,69,82]},{"a":40438,"t":"byte","b":[32,49,32,255,4,32,71,65]},{"a":40446,"t":"byte","b":[77,69,32,79,86,69,82,32]},{"a":40454,"t":"byte","b":[80,76,65,89,69,82,32,50]},{"a":40462,"t":"byte","b":[32,255]},{"a":40464,"l":"game_over_msg_index","c":"Offsets of the three messages in game_over_text: 0, $0E, $24 (one player, player 1, player 2), indexed by 0 or current player + 1 ($9B99).","t":"byte","b":[0,14,36],"x":[39833]},{"a":40467,"l":"balls_vs_enemies","c":"For every live ball (2..0, $02A7) and live enemy (2..0, $0274 = 1): ball_enemy_v ($9E30) and ball_enemy_h ($9E96). A hit destroys the enemy and bounces the ball.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[38216,38303]},{"a":40469,"l":"b_9E15","t":"code","b":[189,167,2],"m":"lda","oa":679,"o":"ball_active,x","x":[40493]},{"a":40472,"t":"code","b":[240,18],"m":"beq","oa":40492,"o":"b_9E2C"},{"a":40474,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":40476,"l":"b_9E1C","t":"code","b":[185,116,2],"m":"lda","oa":628,"o":"enemy_state,y","x":[40490]},{"a":40479,"t":"code","b":[240,8],"m":"beq","oa":40489,"o":"b_9E29"},{"a":40481,"t":"code","b":[48,6],"m":"bmi","oa":40489,"o":"b_9E29"},{"a":40483,"t":"code","b":[32,48,158],"m":"jsr","oa":40496,"o":"ball_enemy_v"},{"a":40486,"t":"code","b":[32,150,158],"m":"jsr","oa":40598,"o":"ball_enemy_h"},{"a":40489,"l":"b_9E29","t":"code","b":[136],"m":"dey","x":[40479,40481]},{"a":40490,"t":"code","b":[16,240],"m":"bpl","oa":40476,"o":"b_9E1C"},{"a":40492,"l":"b_9E2C","t":"code","b":[202],"m":"dex","x":[40472]},{"a":40493,"t":"code","b":[16,230],"m":"bpl","oa":40469,"o":"b_9E15"},{"a":40495,"t":"code","b":[96],"m":"rts"},{"a":40496,"l":"ball_enemy_v","c":"Ball X against enemy Y, vertical: if the ball moving up ($0295 < 0) / down is within a 24 x 24 box ($0C each way) of the enemy, destroy it (enemy_destroyed) and, if the ball's bat cooldown $02AA is 0, set the ball's vertical direction to down (+1) / up ($FF).","t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x","x":[40483]},{"a":40499,"t":"code","b":[16,49],"m":"bpl","oa":40550,"o":"b_9E66"},{"a":40501,"t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x"},{"a":40504,"t":"code","b":[56],"m":"sec"},{"a":40505,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40507,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40510,"t":"code","b":[176,37],"m":"bcs","oa":40549,"o":"r_9E65"},{"a":40512,"t":"code","b":[24],"m":"clc"},{"a":40513,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40515,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40518,"t":"code","b":[144,29],"m":"bcc","oa":40549,"o":"r_9E65"},{"a":40520,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":40523,"t":"code","b":[56],"m":"sec"},{"a":40524,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40526,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40529,"t":"code","b":[176,18],"m":"bcs","oa":40549,"o":"r_9E65"},{"a":40531,"t":"code","b":[24],"m":"clc"},{"a":40532,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40534,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40537,"t":"code","b":[144,10],"m":"bcc","oa":40549,"o":"r_9E65"},{"a":40539,"t":"code","b":[32,251,158],"m":"jsr","oa":40699,"o":"enemy_destroyed"},{"a":40542,"t":"code","b":[208,5],"m":"bne","oa":40549,"o":"r_9E65"},{"a":40544,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40546,"t":"code","b":[157,149,2],"m":"sta","oa":661,"o":"ball_dy,x"},{"a":40549,"l":"r_9E65","t":"code","b":[96],"m":"rts","x":[40510,40518,40529,40537,40542,40559,40566,40577,40585,40643]},{"a":40550,"l":"b_9E66","t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x","x":[40499]},{"a":40553,"t":"code","b":[56],"m":"sec"},{"a":40554,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40556,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40559,"t":"code","b":[176,244],"m":"bcs","oa":40549,"o":"r_9E65"},{"a":40561,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40563,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40566,"t":"code","b":[144,237],"m":"bcc","oa":40549,"o":"r_9E65"},{"a":40568,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":40571,"t":"code","b":[56],"m":"sec"},{"a":40572,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40574,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40577,"t":"code","b":[176,226],"m":"bcs","oa":40549,"o":"r_9E65"},{"a":40579,"t":"code","b":[24],"m":"clc"},{"a":40580,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40582,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40585,"t":"code","b":[144,218],"m":"bcc","oa":40549,"o":"r_9E65"},{"a":40587,"t":"code","b":[32,251,158],"m":"jsr","oa":40699,"o":"enemy_destroyed"},{"a":40590,"t":"code","b":[208,5],"m":"bne","oa":40597,"o":"r_9E95"},{"a":40592,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":40594,"t":"code","b":[157,149,2],"m":"sta","oa":661,"o":"ball_dy,x"},{"a":40597,"l":"r_9E95","t":"code","b":[96],"m":"rts","x":[40590]},{"a":40598,"l":"ball_enemy_h","c":"Ball X against enemy Y, by the ball's horizontal direction ($0298): moving right, enemy X within (ball X - 12, ball X + 12] and Y within 12 -> enemy_destroyed and $0298 = $FF if the bat cooldown $02AA,X is 0. Moving left the test can never pass: after SBC #$0C the code does SBC #$18 (should be ADC), so it needs enemy X > ball X - 12 and <= ball X - 37 at once ($9E9B-$9EAB); the vertical test still catches such balls.","t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x","x":[40486]},{"a":40601,"t":"code","b":[16,48],"m":"bpl","oa":40651,"o":"b_9ECB"},{"a":40603,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":40606,"t":"code","b":[56],"m":"sec"},{"a":40607,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40609,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40612,"t":"code","b":[176,36],"m":"bcs","oa":40650,"o":"r_9ECA"},{"a":40614,"t":"code","b":[233,24],"m":"sbc","o":"#$18"},{"a":40616,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40619,"t":"code","b":[144,29],"m":"bcc","oa":40650,"o":"r_9ECA"},{"a":40621,"t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x"},{"a":40624,"t":"code","b":[56],"m":"sec"},{"a":40625,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40627,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40630,"t":"code","b":[176,18],"m":"bcs","oa":40650,"o":"r_9ECA"},{"a":40632,"t":"code","b":[24],"m":"clc"},{"a":40633,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40635,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40638,"t":"code","b":[144,10],"m":"bcc","oa":40650,"o":"r_9ECA"},{"a":40640,"t":"code","b":[32,251,158],"m":"jsr","oa":40699,"o":"enemy_destroyed"},{"a":40643,"t":"code","b":[208,160],"m":"bne","oa":40549,"o":"r_9E65"},{"a":40645,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40647,"t":"code","b":[157,152,2],"m":"sta","oa":664,"o":"ball_dx,x"},{"a":40650,"l":"r_9ECA","t":"code","b":[96],"m":"rts","x":[40612,40619,40630,40638,40660,40667,40678,40686]},{"a":40651,"l":"b_9ECB","t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x","x":[40601]},{"a":40654,"t":"code","b":[56],"m":"sec"},{"a":40655,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40657,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40660,"t":"code","b":[176,244],"m":"bcs","oa":40650,"o":"r_9ECA"},{"a":40662,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40664,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":40667,"t":"code","b":[144,237],"m":"bcc","oa":40650,"o":"r_9ECA"},{"a":40669,"t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x"},{"a":40672,"t":"code","b":[56],"m":"sec"},{"a":40673,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":40675,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40678,"t":"code","b":[176,226],"m":"bcs","oa":40650,"o":"r_9ECA"},{"a":40680,"t":"code","b":[24],"m":"clc"},{"a":40681,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":40683,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":40686,"t":"code","b":[144,218],"m":"bcc","oa":40650,"o":"r_9ECA"},{"a":40688,"t":"code","b":[32,251,158],"m":"jsr","oa":40699,"o":"enemy_destroyed"},{"a":40691,"t":"code","b":[208,5],"m":"bne","oa":40698,"o":"r_9EFA"},{"a":40693,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":40695,"t":"code","b":[157,152,2],"m":"sta","oa":664,"o":"ball_dx,x"},{"a":40698,"l":"r_9EFA","t":"code","b":[96],"m":"rts","x":[40691]},{"a":40699,"l":"enemy_destroyed","c":"Enemy (or Doh's shot) in slot Y destroyed: explosion animation from index 0 of anim_lists, speed 1, $0274,Y = $FF (dying), colour yellow ($F821,Y = 7); effect sound on three voices unless a priority-2 sound runs ($0216/$0217); add BCD $10 to the score's low byte ($0933, via $FBBD; the capsule adds $01 to the next byte). Returns A = $02AA,X, the bat cooldown of ball X, which the ball tests use to decide the bounce.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[40539,40587,40640,40688,42658,42854]},{"a":40701,"t":"code","b":[153,119,2],"m":"sta","oa":631,"o":"enemy_anim,y"},{"a":40704,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40706,"t":"code","b":[153,146,2],"m":"sta","oa":658,"o":"enemy_anim_delay,y"},{"a":40709,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":40711,"t":"code","b":[153,116,2],"m":"sta","oa":628,"o":"enemy_state,y"},{"a":40714,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":40716,"t":"code","b":[153,33,248],"m":"sta","oa":63521,"o":"slot_colour_8,y"},{"a":40719,"t":"code","b":[173,22,2],"m":"lda","oa":534,"o":"tune_hold"},{"a":40722,"t":"code","b":[240,7],"m":"beq","oa":40731,"o":"b_9F1B"},{"a":40724,"t":"code","b":[173,23,2],"m":"lda","oa":535,"o":"tune_hold_kind"},{"a":40727,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":40729,"t":"code","b":[240,59],"m":"beq","oa":40790,"o":"b_9F56"},{"a":40731,"l":"b_9F1B","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[40722]},{"a":40733,"t":"code","b":[141,23,2],"m":"sta","oa":535,"o":"tune_hold_kind"},{"a":40736,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":40738,"t":"code","b":[141,22,2],"m":"sta","oa":534,"o":"tune_hold"},{"a":40741,"t":"code","b":[140,16,2],"m":"sty","oa":528,"o":"index_save"},{"a":40744,"t":"code","b":[138],"m":"txa"},{"a":40745,"t":"code","b":[72],"m":"pha"},{"a":40746,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":40748,"t":"code","b":[169,209],"m":"lda","o":"#$D1"},{"a":40750,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":40752,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":40755,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":40757,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":40759,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":40761,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":40764,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":40766,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":40768,"t":"code","b":[160,34],"m":"ldy","o":"#$22"},{"a":40770,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":40773,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":40775,"t":"code","b":[141,51,9],"m":"sta","oa":2355,"o":"points_pending"},{"a":40778,"t":"code","b":[32,189,251],"m":"jsr","oa":64445,"o":"add_score"},{"a":40781,"t":"code","b":[104],"m":"pla"},{"a":40782,"t":"code","b":[170],"m":"tax"},{"a":40783,"t":"code","b":[172,16,2],"m":"ldy","oa":528,"o":"index_save"},{"a":40786,"t":"code","b":[189,170,2],"m":"lda","oa":682,"o":"ball_cooldown,x"},{"a":40789,"l":"r_9F55","t":"code","b":[96],"m":"rts","x":[40807]},{"a":40790,"l":"b_9F56","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[40729]},{"a":40792,"t":"code","b":[141,51,9],"m":"sta","oa":2355,"o":"points_pending"},{"a":40795,"t":"code","b":[76,189,251],"m":"jmp","oa":64445,"o":"add_score"},{"a":40798,"l":"update_enemies","c":"Enemies, three slots, on 161 frames in 256 ($021F += $A1, carry). Live slot ($0274 = 1): enemy_probe $A22F, enemy_steer_v $A182, enemy_steer $A051, move_object $A2DB, animate_object $A344. Dying ($FF): animate only. Idle (0): count $0229 to $C0 (192 updates), then put an enemy at Y $1E, X $47 with animation/colour/speed by round index AND 3 (enemy_anim_start, enemy_colour, enemy_anim_speed) and $025E = 1; wait for the gate (update_gate: open it if closed), then $025E = $80: move down 1 per update to Y $38, where the enemy goes live heading down, horizontal preference toward the Vaus ($028F), and the gate closes.","t":"code","b":[173,31,2],"m":"lda","oa":543,"o":"doh_shot_acc","x":[38222,38309]},{"a":40801,"t":"code","b":[24],"m":"clc"},{"a":40802,"t":"code","b":[105,161],"m":"adc","o":"#$A1"},{"a":40804,"t":"code","b":[141,31,2],"m":"sta","oa":543,"o":"doh_shot_acc"},{"a":40807,"t":"code","b":[144,236],"m":"bcc","oa":40789,"o":"r_9F55"},{"a":40809,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":40811,"l":"b_9F6B","t":"code","b":[189,116,2],"m":"lda","oa":628,"o":"enemy_state,x","x":[40834]},{"a":40814,"t":"code","b":[240,21],"m":"beq","oa":40837,"o":"b_9F85"},{"a":40816,"t":"code","b":[48,12],"m":"bmi","oa":40830,"o":"b_9F7E"},{"a":40818,"t":"code","b":[32,47,162],"m":"jsr","oa":41519,"o":"enemy_probe"},{"a":40821,"t":"code","b":[32,130,161],"m":"jsr","oa":41346,"o":"enemy_steer_v"},{"a":40824,"t":"code","b":[32,81,160],"m":"jsr","oa":41041,"o":"enemy_steer"},{"a":40827,"t":"code","b":[32,219,162],"m":"jsr","oa":41691,"o":"move_object"},{"a":40830,"l":"b_9F7E","t":"code","b":[32,68,163],"m":"jsr","oa":41796,"o":"animate_object","x":[40816,40850,40914,40932,41007]},{"a":40833,"t":"code","b":[202],"m":"dex"},{"a":40834,"t":"code","b":[16,231],"m":"bpl","oa":40811,"o":"b_9F6B"},{"a":40836,"t":"code","b":[96],"m":"rts"},{"a":40837,"l":"b_9F85","t":"code","b":[189,94,2],"m":"lda","oa":606,"o":"enemy_entry,x","x":[40814]},{"a":40840,"t":"code","b":[208,65],"m":"bne","oa":40907,"o":"b_9FCB"},{"a":40842,"t":"code","b":[238,41,2],"m":"inc","oa":553,"o":"enemy_spawn_timer"},{"a":40845,"t":"code","b":[173,41,2],"m":"lda","oa":553,"o":"enemy_spawn_timer"},{"a":40848,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":40850,"t":"code","b":[144,234],"m":"bcc","oa":40830,"o":"b_9F7E"},{"a":40852,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":40854,"t":"code","b":[141,41,2],"m":"sta","oa":553,"o":"enemy_spawn_timer"},{"a":40857,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":40859,"t":"code","b":[157,53,148],"m":"sta","oa":37941,"o":"enemy_y,x"},{"a":40862,"t":"code","b":[173,70,2],"m":"lda","oa":582,"o":"gate_side"},{"a":40865,"t":"code","b":[240,3],"m":"beq","oa":40870,"o":"b_9FA6"},{"a":40867,"t":"code","b":[169,175],"m":"lda","o":"#$AF"},{"a":40869,"t":"code","b":[44,169,71],"m":"bit","oa":18345,"o":"title_bitmap_47a9"},{"a":40872,"t":"code","b":[157,77,148],"m":"sta","oa":37965,"o":"enemy_x,x"},{"a":40875,"t":"code","b":[172,56,9],"m":"ldy","oa":2360,"o":"current_player"},{"a":40878,"t":"code","b":[185,61,9],"m":"lda","oa":2365,"o":"round_p1,y"},{"a":40881,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":40883,"t":"code","b":[168],"m":"tay"},{"a":40884,"t":"code","b":[185,232,163],"m":"lda","oa":41960,"o":"enemy_anim_start,y"},{"a":40887,"t":"code","b":[157,119,2],"m":"sta","oa":631,"o":"enemy_anim,x"},{"a":40890,"t":"code","b":[185,236,163],"m":"lda","oa":41964,"o":"enemy_colour,y"},{"a":40893,"t":"code","b":[157,33,248],"m":"sta","oa":63521,"o":"slot_colour_8,x"},{"a":40896,"t":"code","b":[185,240,163],"m":"lda","oa":41968,"o":"enemy_anim_speed,y"},{"a":40899,"t":"code","b":[157,146,2],"m":"sta","oa":658,"o":"enemy_anim_delay,x"},{"a":40902,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40904,"t":"code","b":[157,94,2],"m":"sta","oa":606,"o":"enemy_entry,x"},{"a":40907,"l":"b_9FCB","t":"code","b":[48,31],"m":"bmi","oa":40940,"o":"b_9FEC","x":[40840]},{"a":40909,"t":"code","b":[173,70,2],"m":"lda","oa":582,"o":"gate_side"},{"a":40912,"t":"code","b":[240,3],"m":"beq","oa":40917,"o":"b_9FD5"},{"a":40914,"t":"code","b":[76,126,159],"m":"jmp","oa":40830,"o":"b_9F7E"},{"a":40917,"l":"b_9FD5","t":"code","b":[173,68,2],"m":"lda","oa":580,"o":"gate_moving","x":[40912]},{"a":40920,"t":"code","b":[208,10],"m":"bne","oa":40932,"o":"b_9FE4"},{"a":40922,"t":"code","b":[173,66,2],"m":"lda","oa":578,"o":"gate_open"},{"a":40925,"t":"code","b":[208,8],"m":"bne","oa":40935,"o":"b_9FE7"},{"a":40927,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40929,"t":"code","b":[141,68,2],"m":"sta","oa":580,"o":"gate_moving"},{"a":40932,"l":"b_9FE4","t":"code","b":[76,126,159],"m":"jmp","oa":40830,"o":"b_9F7E","x":[40920]},{"a":40935,"l":"b_9FE7","t":"code","b":[169,128],"m":"lda","o":"#$80","x":[40925]},{"a":40937,"t":"code","b":[157,94,2],"m":"sta","oa":606,"o":"enemy_entry,x"},{"a":40940,"l":"b_9FEC","t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x","x":[40907]},{"a":40943,"t":"code","b":[24],"m":"clc"},{"a":40944,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":40946,"t":"code","b":[157,53,148],"m":"sta","oa":37941,"o":"enemy_y,x"},{"a":40949,"t":"code","b":[201,56],"m":"cmp","o":"#$38"},{"a":40951,"t":"code","b":[144,54],"m":"bcc","oa":41007,"o":"b_A02F"},{"a":40953,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40955,"t":"code","b":[141,68,2],"m":"sta","oa":580,"o":"gate_moving"},{"a":40958,"t":"code","b":[157,116,2],"m":"sta","oa":628,"o":"enemy_state,x"},{"a":40961,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":40963,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40965,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":40968,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":40970,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":40973,"t":"code","b":[157,131,2],"m":"sta","oa":643,"o":"enemy_rate_x,x"},{"a":40976,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":40978,"t":"code","b":[157,128,2],"m":"sta","oa":640,"o":"enemy_rate_y,x"},{"a":40981,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":40983,"t":"code","b":[157,140,2],"m":"sta","oa":652,"o":"enemy_last_dy,x"},{"a":40986,"t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x"},{"a":40989,"t":"code","b":[205,6,2],"m":"cmp","oa":518,"o":"vaus_x"},{"a":40992,"t":"code","b":[144,3],"m":"bcc","oa":40997,"o":"b_A025"},{"a":40994,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":40996,"t":"code","b":[44,169,1],"m":"bit","oa":425,"o":"a_01A9"},{"a":40999,"t":"code","b":[157,143,2],"m":"sta","oa":655,"o":"enemy_last_dx,x"},{"a":41002,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":41004,"t":"code","b":[157,94,2],"m":"sta","oa":606,"o":"enemy_entry,x"},{"a":41007,"l":"b_A02F","t":"code","b":[76,126,159],"m":"jmp","oa":40830,"o":"b_9F7E","x":[40951]},{"a":41010,"l":"drum_push","c":"Drum sequencer return stack: push $DA/$DB + A (the address after the current command) at $78,X/$80,X with X = $DD, then $DD - 1. Used by drum_call ($A449) and drum_repeat ($A7C9).","t":"code","b":[166,221],"m":"ldx","oa":221,"o":"drum_stack_index","x":[42059,42955]},{"a":41012,"t":"code","b":[24],"m":"clc"},{"a":41013,"t":"code","b":[101,218],"m":"adc","oa":218,"o":"drum_ptr"},{"a":41015,"t":"code","b":[149,120],"m":"sta","oa":120,"o":"drum_stack_lo,x"},{"a":41017,"t":"code","b":[165,219],"m":"lda","oa":219,"o":"drum_ptr_hi"},{"a":41019,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":41021,"t":"code","b":[149,128],"m":"sta","oa":128,"o":"drum_stack_hi,x"},{"a":41023,"t":"code","b":[202],"m":"dex"},{"a":41024,"t":"code","b":[134,221],"m":"stx","oa":221,"o":"drum_stack_index"},{"a":41026,"t":"code","b":[96],"m":"rts"},{"a":41027,"l":"b_A043","t":"code","b":[189,88,2],"m":"lda","oa":600,"o":"enemy_homed,x","x":[41046]},{"a":41030,"t":"code","b":[208,8],"m":"bne","oa":41040,"o":"r_A050"},{"a":41032,"t":"code","b":[32,250,179],"m":"jsr","oa":46074,"o":"aim_at_vaus"},{"a":41035,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":41037,"t":"code","b":[157,88,2],"m":"sta","oa":600,"o":"enemy_homed,x"},{"a":41040,"l":"r_A050","t":"code","b":[96],"m":"rts","x":[41030]},{"a":41041,"l":"enemy_steer","c":"Steer a live enemy X. At Y = $B8 aim it once at the Vaus ($A043: $B3FA, flag $0258); below $B8 keep the course (flag cleared). Higher up, only on frames where $0201 is 0, $40, $80 or $C0 or below $10, re-plan from the cells around it ($024C up, $024F down, $0252 right, $0255 left; negative = brick): with no vertical step head down if free ($A0F6); with no sideways step pick one: left when the Vaus's $9445 is at or right of the enemy, else right, unless a brick is that side; otherwise reverse the vertical or horizontal step where a brick allows. Writes $027A/$027D, $0280/$0283, $028C/$028F.","t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x","x":[40824]},{"a":41044,"t":"code","b":[201,184],"m":"cmp","o":"#$B8"},{"a":41046,"t":"code","b":[240,235],"m":"beq","oa":41027,"o":"b_A043"},{"a":41048,"t":"code","b":[176,22],"m":"bcs","oa":41072,"o":"b_A070"},{"a":41050,"t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter"},{"a":41053,"t":"code","b":[240,49],"m":"beq","oa":41104,"o":"b_A090"},{"a":41055,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":41057,"t":"code","b":[240,45],"m":"beq","oa":41104,"o":"b_A090"},{"a":41059,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":41061,"t":"code","b":[240,41],"m":"beq","oa":41104,"o":"b_A090"},{"a":41063,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":41065,"t":"code","b":[240,37],"m":"beq","oa":41104,"o":"b_A090"},{"a":41067,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":41069,"t":"code","b":[144,7],"m":"bcc","oa":41078,"o":"b_A076"},{"a":41071,"t":"code","b":[96],"m":"rts"},{"a":41072,"l":"b_A070","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[41048]},{"a":41074,"t":"code","b":[157,88,2],"m":"sta","oa":600,"o":"enemy_homed,x"},{"a":41077,"t":"code","b":[96],"m":"rts"},{"a":41078,"l":"b_A076","t":"code","b":[189,79,2],"m":"lda","oa":591,"o":"enemy_block_down,x","x":[41069]},{"a":41081,"t":"code","b":[48,21],"m":"bmi","oa":41104,"o":"b_A090"},{"a":41083,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":41086,"t":"code","b":[48,15],"m":"bmi","oa":41103,"o":"r_A08F"},{"a":41088,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":41090,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41093,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":41095,"t":"code","b":[157,128,2],"m":"sta","oa":640,"o":"enemy_rate_y,x"},{"a":41098,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":41100,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41103,"l":"r_A08F","t":"code","b":[96],"m":"rts","x":[41086]},{"a":41104,"l":"b_A090","t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x","x":[41053,41057,41061,41065,41081]},{"a":41107,"t":"code","b":[240,97],"m":"beq","oa":41206,"o":"enemy_try_down"},{"a":41109,"t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x"},{"a":41112,"t":"code","b":[208,27],"m":"bne","oa":41141,"o":"b_A0B5"},{"a":41114,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":41116,"t":"code","b":[157,131,2],"m":"sta","oa":643,"o":"enemy_rate_x,x"},{"a":41119,"t":"code","b":[173,69,148],"m":"lda","oa":37957,"o":"obj_x"},{"a":41122,"t":"code","b":[221,77,148],"m":"cmp","oa":37965,"o":"enemy_x,x"},{"a":41125,"t":"code","b":[176,65],"m":"bcs","oa":41192,"o":"b_A0E8"},{"a":41127,"t":"code","b":[189,82,2],"m":"lda","oa":594,"o":"enemy_block_right,x"},{"a":41130,"t":"code","b":[48,30],"m":"bmi","oa":41162,"o":"r_A0CA"},{"a":41132,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":41134,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41137,"t":"code","b":[157,143,2],"m":"sta","oa":655,"o":"enemy_last_dx,x"},{"a":41140,"t":"code","b":[96],"m":"rts"},{"a":41141,"l":"b_A0B5","t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x","x":[41112]},{"a":41144,"t":"code","b":[48,17],"m":"bmi","oa":41163,"o":"b_A0CB"},{"a":41146,"t":"code","b":[189,76,2],"m":"lda","oa":588,"o":"enemy_block_up,x"},{"a":41149,"t":"code","b":[48,12],"m":"bmi","oa":41163,"o":"b_A0CB"},{"a":41151,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":41154,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":41156,"t":"code","b":[24],"m":"clc"},{"a":41157,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":41159,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41162,"l":"r_A0CA","t":"code","b":[96],"m":"rts","x":[41130,41171]},{"a":41163,"l":"b_A0CB","t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x","x":[41144,41149]},{"a":41166,"t":"code","b":[48,17],"m":"bmi","oa":41185,"o":"b_A0E1"},{"a":41168,"t":"code","b":[189,82,2],"m":"lda","oa":594,"o":"enemy_block_right,x"},{"a":41171,"t":"code","b":[48,245],"m":"bmi","oa":41162,"o":"r_A0CA"},{"a":41173,"l":"b_A0D5","t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x","x":[41190]},{"a":41176,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":41178,"t":"code","b":[24],"m":"clc"},{"a":41179,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":41181,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41184,"t":"code","b":[96],"m":"rts"},{"a":41185,"l":"b_A0E1","t":"code","b":[189,85,2],"m":"lda","oa":597,"o":"enemy_block_left,x","x":[41166]},{"a":41188,"t":"code","b":[48,34],"m":"bmi","oa":41224,"o":"r_A108"},{"a":41190,"t":"code","b":[16,237],"m":"bpl","oa":41173,"o":"b_A0D5"},{"a":41192,"l":"b_A0E8","t":"code","b":[189,85,2],"m":"lda","oa":597,"o":"enemy_block_left,x","x":[41125]},{"a":41195,"t":"code","b":[48,27],"m":"bmi","oa":41224,"o":"r_A108"},{"a":41197,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":41199,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41202,"t":"code","b":[157,143,2],"m":"sta","oa":655,"o":"enemy_last_dx,x"},{"a":41205,"t":"code","b":[96],"m":"rts"},{"a":41206,"l":"enemy_try_down","c":"Enemy with no vertical step: if the cell below is free ($024F >= 0), head down ($027A = 1) with $0280 = $80 and remember $028C = 1.","t":"code","b":[189,79,2],"m":"lda","oa":591,"o":"enemy_block_down,x","x":[41107]},{"a":41209,"t":"code","b":[48,13],"m":"bmi","oa":41224,"o":"r_A108"},{"a":41211,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":41213,"t":"code","b":[157,128,2],"m":"sta","oa":640,"o":"enemy_rate_y,x"},{"a":41216,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":41218,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41221,"t":"code","b":[157,140,2],"m":"sta","oa":652,"o":"enemy_last_dy,x"},{"a":41224,"l":"r_A108","t":"code","b":[96],"m":"rts","x":[41188,41195,41209]},{"a":41225,"l":"b_A109","t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x","x":[41292,41330]},{"a":41228,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":41230,"t":"code","b":[24],"m":"clc"},{"a":41231,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":41233,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41236,"t":"code","b":[96],"m":"rts"},{"a":41237,"l":"b_A115","t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x","x":[41349]},{"a":41240,"t":"code","b":[48,6],"m":"bmi","oa":41248,"o":"b_A120"},{"a":41242,"t":"code","b":[189,82,2],"m":"lda","oa":594,"o":"enemy_block_right,x"},{"a":41245,"t":"code","b":[48,7],"m":"bmi","oa":41254,"o":"b_A126"},{"a":41247,"t":"code","b":[96],"m":"rts"},{"a":41248,"l":"b_A120","t":"code","b":[189,85,2],"m":"lda","oa":597,"o":"enemy_block_left,x","x":[41240]},{"a":41251,"t":"code","b":[48,1],"m":"bmi","oa":41254,"o":"b_A126"},{"a":41253,"t":"code","b":[96],"m":"rts"},{"a":41254,"l":"b_A126","t":"code","b":[189,140,2],"m":"lda","oa":652,"o":"enemy_last_dy,x","x":[41245,41251]},{"a":41257,"t":"code","b":[48,49],"m":"bmi","oa":41308,"o":"b_A15C"},{"a":41259,"t":"code","b":[189,79,2],"m":"lda","oa":591,"o":"enemy_block_down,x"},{"a":41262,"t":"code","b":[48,25],"m":"bmi","oa":41289,"o":"b_A149"},{"a":41264,"t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x"},{"a":41267,"t":"code","b":[157,143,2],"m":"sta","oa":655,"o":"enemy_last_dx,x"},{"a":41270,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":41272,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41275,"l":"j_A13B","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[41305,41324,41343]},{"a":41277,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41280,"t":"code","b":[157,131,2],"m":"sta","oa":643,"o":"enemy_rate_x,x"},{"a":41283,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":41285,"t":"code","b":[157,128,2],"m":"sta","oa":640,"o":"enemy_rate_y,x"},{"a":41288,"t":"code","b":[96],"m":"rts"},{"a":41289,"l":"b_A149","t":"code","b":[189,76,2],"m":"lda","oa":588,"o":"enemy_block_up,x","x":[41262]},{"a":41292,"t":"code","b":[48,187],"m":"bmi","oa":41225,"o":"b_A109"},{"a":41294,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":41296,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41299,"t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x"},{"a":41302,"t":"code","b":[157,143,2],"m":"sta","oa":655,"o":"enemy_last_dx,x"},{"a":41305,"t":"code","b":[76,59,161],"m":"jmp","oa":41275,"o":"j_A13B"},{"a":41308,"l":"b_A15C","t":"code","b":[189,76,2],"m":"lda","oa":588,"o":"enemy_block_up,x","x":[41257]},{"a":41311,"t":"code","b":[48,14],"m":"bmi","oa":41327,"o":"b_A16F"},{"a":41313,"t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x"},{"a":41316,"t":"code","b":[157,143,2],"m":"sta","oa":655,"o":"enemy_last_dx,x"},{"a":41319,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":41321,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41324,"t":"code","b":[76,59,161],"m":"jmp","oa":41275,"o":"j_A13B"},{"a":41327,"l":"b_A16F","t":"code","b":[189,79,2],"m":"lda","oa":591,"o":"enemy_block_down,x","x":[41311]},{"a":41330,"t":"code","b":[48,149],"m":"bmi","oa":41225,"o":"b_A109"},{"a":41332,"t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x"},{"a":41335,"t":"code","b":[157,143,2],"m":"sta","oa":655,"o":"enemy_last_dx,x"},{"a":41338,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":41340,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41343,"t":"code","b":[76,59,161],"m":"jmp","oa":41275,"o":"j_A13B"},{"a":41346,"l":"enemy_steer_v","c":"Enemy X blocked: if its vertical step points at a brick ($024C above / $024F below negative), or it moves only sideways and its horizontal step does ($0252 / $0255), turn: from vertical to sideways in the remembered direction $028F (or the other way if that side is blocked, $A1A9-$A21D), from sideways to down or up ($A115-$A17F), keeping the old step in $028C/$028F; with both ways blocked reverse ($A220, $A109).","t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x","x":[40821]},{"a":41349,"t":"code","b":[240,142],"m":"beq","oa":41237,"o":"b_A115"},{"a":41351,"t":"code","b":[48,8],"m":"bmi","oa":41361,"o":"b_A191"},{"a":41353,"t":"code","b":[189,79,2],"m":"lda","oa":591,"o":"enemy_block_down,x"},{"a":41356,"t":"code","b":[48,27],"m":"bmi","oa":41385,"o":"b_A1A9"},{"a":41358,"t":"code","b":[16,6],"m":"bpl","oa":41366,"o":"b_A196"},{"a":41360,"l":"r_A190","t":"code","b":[96],"m":"rts","x":[41369]},{"a":41361,"l":"b_A191","t":"code","b":[189,76,2],"m":"lda","oa":588,"o":"enemy_block_up,x","x":[41351]},{"a":41364,"t":"code","b":[48,19],"m":"bmi","oa":41385,"o":"b_A1A9"},{"a":41366,"l":"b_A196","t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x","x":[41358]},{"a":41369,"t":"code","b":[240,245],"m":"beq","oa":41360,"o":"r_A190"},{"a":41371,"t":"code","b":[16,6],"m":"bpl","oa":41379,"o":"b_A1A3"},{"a":41373,"t":"code","b":[189,85,2],"m":"lda","oa":597,"o":"enemy_block_left,x"},{"a":41376,"t":"code","b":[48,7],"m":"bmi","oa":41385,"o":"b_A1A9"},{"a":41378,"t":"code","b":[96],"m":"rts"},{"a":41379,"l":"b_A1A3","t":"code","b":[189,82,2],"m":"lda","oa":594,"o":"enemy_block_right,x","x":[41371]},{"a":41382,"t":"code","b":[48,1],"m":"bmi","oa":41385,"o":"b_A1A9"},{"a":41384,"t":"code","b":[96],"m":"rts"},{"a":41385,"l":"b_A1A9","t":"code","b":[189,143,2],"m":"lda","oa":655,"o":"enemy_last_dx,x","x":[41356,41364,41376,41382]},{"a":41388,"t":"code","b":[48,69],"m":"bmi","oa":41459,"o":"b_A1F3"},{"a":41390,"t":"code","b":[189,82,2],"m":"lda","oa":594,"o":"enemy_block_right,x"},{"a":41393,"t":"code","b":[48,15],"m":"bmi","oa":41410,"o":"b_A1C2"},{"a":41395,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":41398,"t":"code","b":[157,140,2],"m":"sta","oa":652,"o":"enemy_last_dy,x"},{"a":41401,"t":"code","b":[189,143,2],"m":"lda","oa":655,"o":"enemy_last_dx,x"},{"a":41404,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41407,"t":"code","b":[76,216,161],"m":"jmp","oa":41432,"o":"j_A1D8"},{"a":41410,"l":"b_A1C2","t":"code","b":[189,85,2],"m":"lda","oa":597,"o":"enemy_block_left,x","x":[41393]},{"a":41413,"t":"code","b":[48,89],"m":"bmi","oa":41504,"o":"b_A220"},{"a":41415,"t":"code","b":[189,143,2],"m":"lda","oa":655,"o":"enemy_last_dx,x"},{"a":41418,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":41420,"t":"code","b":[24],"m":"clc"},{"a":41421,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":41423,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41426,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":41429,"t":"code","b":[157,140,2],"m":"sta","oa":652,"o":"enemy_last_dy,x"},{"a":41432,"l":"j_A1D8","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[41407,41476,41501]},{"a":41434,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41437,"t":"code","b":[157,128,2],"m":"sta","oa":640,"o":"enemy_rate_y,x"},{"a":41440,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":41442,"t":"code","b":[157,131,2],"m":"sta","oa":643,"o":"enemy_rate_x,x"},{"a":41445,"t":"code","b":[96],"m":"rts"},{"a":41446,"l":"drum_return","c":"Drum bytecode $60 (return): pop the return address: $DD + 1, $DA/$DB = $78,X/$80,X (the entry at $A1EA is also used by drum_next to reload without popping).","t":"code","b":[230,221],"m":"inc","oa":221,"o":"drum_stack_index"},{"a":41448,"t":"code","b":[166,221],"m":"ldx","oa":221,"o":"drum_stack_index"},{"a":41450,"l":"drum_reload","c":"Load $DA/$DB from the return-stack entry X ($78,X / $80,X) without popping; drum_next uses it to jump back to the start of a repeat.","t":"code","b":[181,120],"m":"lda","oa":120,"o":"drum_stack_lo,x","x":[43322]},{"a":41452,"t":"code","b":[133,218],"m":"sta","oa":218,"o":"drum_ptr"},{"a":41454,"t":"code","b":[181,128],"m":"lda","oa":128,"o":"drum_stack_hi,x"},{"a":41456,"t":"code","b":[133,219],"m":"sta","oa":219,"o":"drum_ptr_hi"},{"a":41458,"t":"code","b":[96],"m":"rts"},{"a":41459,"l":"b_A1F3","t":"code","b":[189,85,2],"m":"lda","oa":597,"o":"enemy_block_left,x","x":[41388]},{"a":41462,"t":"code","b":[48,15],"m":"bmi","oa":41479,"o":"b_A207"},{"a":41464,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":41467,"t":"code","b":[157,140,2],"m":"sta","oa":652,"o":"enemy_last_dy,x"},{"a":41470,"t":"code","b":[189,143,2],"m":"lda","oa":655,"o":"enemy_last_dx,x"},{"a":41473,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41476,"t":"code","b":[76,216,161],"m":"jmp","oa":41432,"o":"j_A1D8"},{"a":41479,"l":"b_A207","t":"code","b":[189,82,2],"m":"lda","oa":594,"o":"enemy_block_right,x","x":[41462]},{"a":41482,"t":"code","b":[48,20],"m":"bmi","oa":41504,"o":"b_A220"},{"a":41484,"t":"code","b":[189,143,2],"m":"lda","oa":655,"o":"enemy_last_dx,x"},{"a":41487,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":41489,"t":"code","b":[24],"m":"clc"},{"a":41490,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":41492,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":41495,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":41498,"t":"code","b":[157,140,2],"m":"sta","oa":652,"o":"enemy_last_dy,x"},{"a":41501,"t":"code","b":[76,216,161],"m":"jmp","oa":41432,"o":"j_A1D8"},{"a":41504,"l":"b_A220","t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x","x":[41413,41482]},{"a":41507,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":41509,"t":"code","b":[24],"m":"clc"},{"a":41510,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":41512,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":41515,"t":"code","b":[96],"m":"rts"},{"a":41516,"l":"b_A22C","t":"code","b":[76,211,162],"m":"jmp","oa":41683,"o":"r_A2D3","x":[41528]},{"a":41519,"l":"enemy_probe","c":"Read the screen around enemy X into $024C (cell above: row (Y-$31)/8, columns (X-$14)/8 and +1, ORed), $024F (two rows lower, the cell below), $0255 (left: column (X-$15)/8, two rows ORed) and $0252 (right: column (X-4)/8); a character $80 or above (a brick or wall) makes the value negative. Rows come from the screen-row table $F78B. Nothing above Y $31. Then, if $0944 is non-zero, JSR wipe_memory ($A523).","t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x","x":[40818]},{"a":41522,"t":"code","b":[141,52,2],"m":"sta","oa":564,"o":"enemy_y_tmp"},{"a":41525,"t":"code","b":[56],"m":"sec"},{"a":41526,"t":"code","b":[233,49],"m":"sbc","o":"#$31"},{"a":41528,"t":"code","b":[144,242],"m":"bcc","oa":41516,"o":"b_A22C"},{"a":41530,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41531,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41532,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":41534,"t":"code","b":[168],"m":"tay"},{"a":41535,"t":"code","b":[185,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,y"},{"a":41538,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":41540,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":41542,"t":"code","b":[185,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,y"},{"a":41545,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":41547,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":41549,"t":"code","b":[24],"m":"clc"},{"a":41550,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":41552,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":41554,"t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x"},{"a":41555,"t":"note","l":"drum_handler_hi_base","c":"This byte is the operand of LDA $944D,X; the drum sequencer at $FF33 reads $A253,X with X = $80-$87 as the high byte of each sample handler, so the table it uses is drum_handler_hi at $A2D3-$A2DA.","note":"inside the item at $A252","x":[65331]},{"a":41557,"t":"code","b":[56],"m":"sec"},{"a":41558,"t":"code","b":[233,20],"m":"sbc","o":"#$14"},{"a":41560,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41561,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41562,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41563,"t":"code","b":[168],"m":"tay"},{"a":41564,"t":"code","b":[141,50,2],"m":"sta","oa":562,"o":"enemy_col_tmp"},{"a":41567,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":41569,"t":"code","b":[200],"m":"iny"},{"a":41570,"t":"code","b":[17,13],"m":"ora","oa":13,"o":"(scr_ptr),y"},{"a":41572,"t":"code","b":[157,76,2],"m":"sta","oa":588,"o":"enemy_block_up,x"},{"a":41575,"t":"code","b":[173,52,2],"m":"lda","oa":564,"o":"enemy_y_tmp"},{"a":41578,"t":"code","b":[56],"m":"sec"},{"a":41579,"t":"code","b":[233,48],"m":"sbc","o":"#$30"},{"a":41581,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41582,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41583,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":41585,"t":"code","b":[168],"m":"tay"},{"a":41586,"t":"code","b":[185,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,y"},{"a":41589,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":41591,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":41593,"t":"code","b":[185,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,y"},{"a":41596,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":41598,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":41600,"t":"code","b":[24],"m":"clc"},{"a":41601,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":41603,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":41605,"t":"code","b":[173,50,2],"m":"lda","oa":562,"o":"enemy_col_tmp"},{"a":41608,"t":"code","b":[105,80],"m":"adc","o":"#$50"},{"a":41610,"t":"code","b":[168],"m":"tay"},{"a":41611,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":41613,"t":"code","b":[200],"m":"iny"},{"a":41614,"t":"code","b":[17,13],"m":"ora","oa":13,"o":"(scr_ptr),y"},{"a":41616,"t":"code","b":[157,79,2],"m":"sta","oa":591,"o":"enemy_block_down,x"},{"a":41619,"t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x"},{"a":41622,"t":"code","b":[56],"m":"sec"},{"a":41623,"t":"code","b":[233,21],"m":"sbc","o":"#$15"},{"a":41625,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41626,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41627,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41628,"t":"code","b":[168],"m":"tay"},{"a":41629,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":41631,"t":"code","b":[157,85,2],"m":"sta","oa":597,"o":"enemy_block_left,x"},{"a":41634,"t":"code","b":[152],"m":"tya"},{"a":41635,"t":"code","b":[24],"m":"clc"},{"a":41636,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":41638,"t":"code","b":[168],"m":"tay"},{"a":41639,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":41641,"t":"code","b":[29,85,2],"m":"ora","oa":597,"o":"enemy_block_left,x"},{"a":41644,"t":"code","b":[157,85,2],"m":"sta","oa":597,"o":"enemy_block_left,x"},{"a":41647,"t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x"},{"a":41650,"t":"code","b":[56],"m":"sec"},{"a":41651,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":41653,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41654,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41655,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":41656,"t":"code","b":[168],"m":"tay"},{"a":41657,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":41659,"t":"code","b":[157,82,2],"m":"sta","oa":594,"o":"enemy_block_right,x"},{"a":41662,"t":"code","b":[152],"m":"tya"},{"a":41663,"t":"code","b":[24],"m":"clc"},{"a":41664,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":41666,"t":"code","b":[168],"m":"tay"},{"a":41667,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":41669,"t":"code","b":[29,82,2],"m":"ora","oa":594,"o":"enemy_block_right,x"},{"a":41672,"t":"code","b":[157,82,2],"m":"sta","oa":594,"o":"enemy_block_right,x"},{"a":41675,"t":"code","b":[173,68,9],"m":"lda","oa":2372,"o":"tamper_flag"},{"a":41678,"t":"code","b":[240,3],"m":"beq","oa":41683,"o":"r_A2D3"},{"a":41680,"t":"code","b":[32,35,165],"m":"jsr","oa":42275,"o":"wipe_memory"},{"a":41683,"l":"r_A2D3","t":"code","b":[96],"m":"rts","x":[41516,41678]},{"a":41684,"l":"drum_handler_hi","c":"High bytes of the drum sample handlers for bytecodes $81-$87 (low bytes at $B0FE-$B104): $81 $F604, $82 $F345, $83 $AEEF, $84 $B500, $85 $B290, $86 $ACD6, $87 $F62F. The entry for $80, $A2D3, is the RTS of enemy_probe ($60), so $80 would call $60B0; no track found uses $80.","t":"byte","b":[246,243,174,181,178,172,246]},{"a":41691,"l":"move_object","c":"Move object slot X (enemies, Doh's shots, the intro's sprites) one step by Bresenham: if $0280,X = $FF, Y += $027A every step and X += $027D when $0286 - $0283 borrows (reload + $0289); otherwise X moves every step and Y when $0286 - $0280 borrows. Y $F2 or more (off the bottom) removes the object (move_object_off: $0274, Y and X = 0).","t":"code","b":[189,128,2],"m":"lda","oa":640,"o":"enemy_rate_y,x","x":[2199,38927,40827]},{"a":41694,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":41696,"t":"code","b":[208,43],"m":"bne","oa":41741,"o":"b_A30D"},{"a":41698,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":41701,"t":"code","b":[24],"m":"clc"},{"a":41702,"t":"code","b":[125,53,148],"m":"adc","oa":37941,"o":"enemy_y,x"},{"a":41705,"t":"code","b":[157,53,148],"m":"sta","oa":37941,"o":"enemy_y,x"},{"a":41708,"t":"code","b":[201,242],"m":"cmp","o":"#$F2"},{"a":41710,"t":"code","b":[176,72],"m":"bcs","oa":41784,"o":"object_off"},{"a":41712,"t":"code","b":[189,134,2],"m":"lda","oa":646,"o":"enemy_acc,x"},{"a":41715,"t":"code","b":[56],"m":"sec"},{"a":41716,"t":"code","b":[253,131,2],"m":"sbc","oa":643,"o":"enemy_rate_x,x"},{"a":41719,"t":"code","b":[157,134,2],"m":"sta","oa":646,"o":"enemy_acc,x"},{"a":41722,"t":"code","b":[176,16],"m":"bcs","oa":41740,"o":"r_A30C"},{"a":41724,"t":"code","b":[125,137,2],"m":"adc","oa":649,"o":"enemy_acc_add,x"},{"a":41727,"t":"code","b":[157,134,2],"m":"sta","oa":646,"o":"enemy_acc,x"},{"a":41730,"t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x"},{"a":41733,"t":"code","b":[24],"m":"clc"},{"a":41734,"t":"code","b":[125,77,148],"m":"adc","oa":37965,"o":"enemy_x,x"},{"a":41737,"t":"code","b":[157,77,148],"m":"sta","oa":37965,"o":"enemy_x,x"},{"a":41740,"l":"r_A30C","t":"code","b":[96],"m":"rts","x":[41722]},{"a":41741,"l":"b_A30D","t":"code","b":[189,134,2],"m":"lda","oa":646,"o":"enemy_acc,x","x":[41696]},{"a":41744,"t":"code","b":[56],"m":"sec"},{"a":41745,"t":"code","b":[253,128,2],"m":"sbc","oa":640,"o":"enemy_rate_y,x"},{"a":41748,"t":"code","b":[157,134,2],"m":"sta","oa":646,"o":"enemy_acc,x"},{"a":41751,"t":"code","b":[176,20],"m":"bcs","oa":41773,"o":"b_A32D"},{"a":41753,"t":"code","b":[125,137,2],"m":"adc","oa":649,"o":"enemy_acc_add,x"},{"a":41756,"t":"code","b":[157,134,2],"m":"sta","oa":646,"o":"enemy_acc,x"},{"a":41759,"t":"code","b":[189,122,2],"m":"lda","oa":634,"o":"enemy_dy,x"},{"a":41762,"t":"code","b":[24],"m":"clc"},{"a":41763,"t":"code","b":[125,53,148],"m":"adc","oa":37941,"o":"enemy_y,x"},{"a":41766,"t":"code","b":[157,53,148],"m":"sta","oa":37941,"o":"enemy_y,x"},{"a":41769,"t":"code","b":[201,242],"m":"cmp","o":"#$F2"},{"a":41771,"t":"code","b":[176,11],"m":"bcs","oa":41784,"o":"object_off"},{"a":41773,"l":"b_A32D","t":"code","b":[189,125,2],"m":"lda","oa":637,"o":"enemy_dx,x","x":[41751]},{"a":41776,"t":"code","b":[24],"m":"clc"},{"a":41777,"t":"code","b":[125,77,148],"m":"adc","oa":37965,"o":"enemy_x,x"},{"a":41780,"t":"code","b":[157,77,148],"m":"sta","oa":37965,"o":"enemy_x,x"},{"a":41783,"t":"code","b":[96],"m":"rts"},{"a":41784,"l":"object_off","c":"Remove object slot X: $0274,X = 0 (idle), obj_y and obj_x of the slot = 0.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[41710,41771,41842]},{"a":41786,"t":"code","b":[157,116,2],"m":"sta","oa":628,"o":"enemy_state,x"},{"a":41789,"t":"code","b":[157,53,148],"m":"sta","oa":37941,"o":"enemy_y,x"},{"a":41792,"t":"code","b":[157,77,148],"m":"sta","oa":37965,"o":"enemy_x,x"},{"a":41795,"t":"code","b":[96],"m":"rts"},{"a":41796,"l":"animate_object","c":"Animate object slot X: when the counter $025B,X passes the speed $0292,X (every speed + 1 calls) show the next sprite pointer from anim_lists at index $0277,X into $F82D,X; a 0 in the list is followed by the index to loop to, or by a second 0 = end, which removes the object (object_off).","t":"code","b":[189,146,2],"m":"lda","oa":658,"o":"enemy_anim_delay,x","x":[38930,40830]},{"a":41799,"t":"code","b":[221,91,2],"m":"cmp","oa":603,"o":"enemy_anim_timer,x"},{"a":41802,"t":"code","b":[176,21],"m":"bcs","oa":41825,"o":"b_A361"},{"a":41804,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":41806,"t":"code","b":[157,91,2],"m":"sta","oa":603,"o":"enemy_anim_timer,x"},{"a":41809,"t":"code","b":[188,119,2],"m":"ldy","oa":631,"o":"enemy_anim,x"},{"a":41812,"l":"j_A354","t":"code","b":[185,118,163],"m":"lda","oa":41846,"o":"anim_lists,y","x":[41839]},{"a":41815,"t":"code","b":[240,12],"m":"beq","oa":41829,"o":"b_A365"},{"a":41817,"t":"code","b":[157,45,248],"m":"sta","oa":63533,"o":"slot_shape_8,x"},{"a":41820,"t":"code","b":[200],"m":"iny"},{"a":41821,"t":"code","b":[152],"m":"tya"},{"a":41822,"t":"code","b":[157,119,2],"m":"sta","oa":631,"o":"enemy_anim,x"},{"a":41825,"l":"b_A361","t":"code","b":[254,91,2],"m":"inc","oa":603,"o":"enemy_anim_timer,x","x":[41802]},{"a":41828,"t":"code","b":[96],"m":"rts"},{"a":41829,"l":"b_A365","t":"code","b":[200],"m":"iny","x":[41815]},{"a":41830,"t":"code","b":[185,118,163],"m":"lda","oa":41846,"o":"anim_lists,y"},{"a":41833,"t":"code","b":[240,7],"m":"beq","oa":41842,"o":"b_A372"},{"a":41835,"t":"code","b":[157,119,2],"m":"sta","oa":631,"o":"enemy_anim,x"},{"a":41838,"t":"code","b":[168],"m":"tay"},{"a":41839,"t":"code","b":[76,84,163],"m":"jmp","oa":41812,"o":"j_A354"},{"a":41842,"l":"b_A372","t":"code","b":[32,56,163],"m":"jsr","oa":41784,"o":"object_off","x":[41833]},{"a":41845,"t":"code","b":[96],"m":"rts"},{"a":41846,"l":"anim_lists","c":"Sprite pointer lists for animate_object, each ended by 0 and a loop index: at 0 the explosion $7B-$83 then 0 0 (end, object removed); $0B enemy type 1, $4A-$51; $15 type 2, $52-$5E; $24 type 3, $6D-$72; $2C type 4, 40 frames of $9A-$A7 and $5F; $56 Doh's shot $60-$6A; $65 the same frames reversed. The bytes at $A3D8-$A3DA and $A3E8-$A3F3 inside it double as tables.","t":"byte","b":[123,124,125,126,127,128,129,130],"x":[41812,41830]},{"a":41854,"t":"byte","b":[131,0,0,74,75,76,77,78]},{"a":41862,"t":"byte","b":[79,80,81,0,11,82,83,84]},{"a":41870,"t":"byte","b":[85,86,87,88,89,90,91,92]},{"a":41878,"t":"byte","b":[93,94,0,21,109,110,111,112]},{"a":41886,"t":"byte","b":[113,114,0,36,154,155,156,157]},{"a":41894,"t":"byte","b":[158,159,160,165,166,167,95,167]},{"a":41902,"t":"byte","b":[166,165,161,162,163,164,154,155]},{"a":41910,"t":"byte","b":[156,157,158,159,160,161,162,163]},{"a":41918,"t":"byte","b":[164,154,155,156,157,158,159,160]},{"a":41926,"t":"byte","b":[161,162,163,164,0,44,96,97]},{"a":41934,"t":"byte","b":[98,99,100,101,102,103,104,105]},{"a":41942,"t":"byte","b":[106,0]},{"a":41944,"l":"doh_shot_anim","c":"Start index for Doh's shot in slot 0-2: $56, $65, $56 (read at $9862). The first byte is also the loop index of the list at $56 in anim_lists.","t":"byte","b":[86,101,86,106,105,104,103,102],"x":[39010]},{"a":41952,"t":"byte","b":[101,100,99,98,97,96,0,101]},{"a":41960,"l":"enemy_anim_start","c":"Enemy animation start by round index AND 3: $0B, $15, $24, $2C (rounds 1, 5, 9 ... use type 1 and so on); read at $9FB4 and by $F5F2.","t":"byte","b":[11,21,36,44],"x":[40884,62962]},{"a":41964,"l":"enemy_colour","c":"Enemy sprite colour by round index AND 3: 6, 6, 6, 6 (blue), into $F821,X at $9FBD.","t":"byte","b":[6,6,6,6],"x":[40890]},{"a":41968,"l":"enemy_anim_speed","c":"Enemy animation speed (frames per sprite, $0292,X) by round index AND 3: 3, 2, 4, 3.","t":"byte","b":[3,2,4,3],"x":[40896]},{"a":41972,"l":"vaus_appear","c":"The Vaus materialises at the start of a round or life: every 4th frame (bit 2 of $0201) set its pointer pair ($F825/$F826) from vaus_appear_frames backwards: $79, $77, $75, $73, then $40 (the normal Vaus) and stop.","t":"code","b":[160,5],"m":"ldy","o":"#$05","x":[38644]},{"a":41974,"l":"b_A3F6","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[41985,42005]},{"a":41977,"t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter"},{"a":41980,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":41982,"t":"code","b":[205,32,2],"m":"cmp","oa":544,"o":"anim_tick"},{"a":41985,"t":"code","b":[240,243],"m":"beq","oa":41974,"o":"b_A3F6"},{"a":41987,"t":"code","b":[141,32,2],"m":"sta","oa":544,"o":"anim_tick"},{"a":41990,"t":"code","b":[185,25,164],"m":"lda","oa":42009,"o":"vaus_appear_frames,y"},{"a":41993,"t":"code","b":[240,13],"m":"beq","oa":42008,"o":"r_A418"},{"a":41995,"t":"code","b":[141,37,248],"m":"sta","oa":63525,"o":"slot_shapes"},{"a":41998,"t":"code","b":[24],"m":"clc"},{"a":41999,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":42001,"t":"code","b":[141,38,248],"m":"sta","oa":63526,"o":"slot_shape_1"},{"a":42004,"t":"code","b":[136],"m":"dey"},{"a":42005,"t":"code","b":[76,246,163],"m":"jmp","oa":41974,"o":"b_A3F6"},{"a":42008,"l":"r_A418","t":"code","b":[96],"m":"rts","x":[41993]},{"a":42009,"l":"vaus_appear_frames","c":"Left-half sprite pointers for vaus_appear, read from the end: 0 (stop), $40, $73, $75, $77, $79.","t":"byte","b":[0,64,115,117,119,121],"x":[41990]},{"a":42015,"l":"break_exit","c":"The B (break) capsule's exit. $023C = 0: clear $023E and return. $023C = 1 (just caught): $023C = $FF, open the exit in the right wall (characters at $CF40-$CF57 from $CF68, colour 9 at screen rows 22-24 column 27). $023C = $FF: scroll the exit's 24 bitmap bytes by one each frame; when the Vaus touches it ($023E, set at $FD1F) start leaving ($023D = 1, $0247 = $17, width 4, sound), slide both halves right 1 pixel a frame to X $E0, then set the bits of the sprite data at $E5C0, then $E580, one pixel column per frame (round_start restores it from $E600); when done and the tune is over, JMP round_cleared. No score is added on this path.","t":"code","b":[173,60,2],"m":"lda","oa":572,"o":"break_state","x":[38234,38321]},{"a":42018,"t":"code","b":[208,4],"m":"bne","oa":42024,"o":"b_A428"},{"a":42020,"t":"code","b":[141,62,2],"m":"sta","oa":574,"o":"vaus_at_wall"},{"a":42023,"t":"code","b":[96],"m":"rts"},{"a":42024,"l":"b_A428","t":"code","b":[48,48],"m":"bmi","oa":42074,"o":"b_A45A","x":[42018]},{"a":42026,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":42028,"t":"code","b":[141,60,2],"m":"sta","oa":572,"o":"break_state"},{"a":42031,"t":"code","b":[160,23],"m":"ldy","o":"#$17"},{"a":42033,"l":"b_A431","t":"code","b":[185,104,207],"m":"lda","oa":53096,"o":"chars_exit_open,y","x":[42040]},{"a":42036,"t":"code","b":[153,64,207],"m":"sta","oa":53056,"o":"chars_exit,y"},{"a":42039,"t":"code","b":[136],"m":"dey"},{"a":42040,"t":"code","b":[16,247],"m":"bpl","oa":42033,"o":"b_A431"},{"a":42042,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":42044,"t":"code","b":[141,139,219],"m":"sta","o":"$DB8B"},{"a":42047,"t":"code","b":[141,179,219],"m":"sta","o":"$DBB3"},{"a":42050,"t":"code","b":[141,219,219],"m":"sta","o":"$DBDB"},{"a":42053,"l":"r_A445","t":"code","b":[96],"m":"rts","x":[42096]},{"a":42054,"l":"b_A446","t":"code","b":[76,24,165],"m":"jmp","oa":42264,"o":"j_A518","x":[42154]},{"a":42057,"l":"drum_call","c":"Drum bytecode $20 lo hi (call): push the address after it (drum_push with A = 3), then fall into drum_jump.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":42059,"t":"code","b":[32,50,160],"m":"jsr","oa":41010,"o":"drum_push"},{"a":42062,"l":"drum_jump","c":"Drum bytecode $4C lo hi (jump): $DA/$DB = the inline address. Also the second half of drum_call.","t":"code","b":[200],"m":"iny"},{"a":42063,"t":"code","b":[177,218],"m":"lda","oa":218,"o":"(drum_ptr),y"},{"a":42065,"t":"code","b":[170],"m":"tax"},{"a":42066,"t":"code","b":[200],"m":"iny"},{"a":42067,"t":"code","b":[177,218],"m":"lda","oa":218,"o":"(drum_ptr),y"},{"a":42069,"t":"code","b":[134,218],"m":"stx","oa":218,"o":"drum_ptr"},{"a":42071,"t":"code","b":[133,219],"m":"sta","oa":219,"o":"drum_ptr_hi"},{"a":42073,"t":"code","b":[96],"m":"rts"},{"a":42074,"l":"b_A45A","t":"code","b":[173,87,207],"m":"lda","oa":53079,"o":"a_CF57","x":[42024]},{"a":42077,"t":"code","b":[72],"m":"pha"},{"a":42078,"t":"code","b":[160,22],"m":"ldy","o":"#$16"},{"a":42080,"l":"b_A460","t":"code","b":[185,64,207],"m":"lda","oa":53056,"o":"chars_exit,y","x":[42087]},{"a":42083,"t":"code","b":[153,65,207],"m":"sta","oa":53057,"o":"f_CF41,y"},{"a":42086,"t":"code","b":[136],"m":"dey"},{"a":42087,"t":"code","b":[16,247],"m":"bpl","oa":42080,"o":"b_A460"},{"a":42089,"t":"code","b":[104],"m":"pla"},{"a":42090,"t":"code","b":[141,64,207],"m":"sta","oa":53056,"o":"chars_exit"},{"a":42093,"t":"code","b":[173,62,2],"m":"lda","oa":574,"o":"vaus_at_wall"},{"a":42096,"t":"code","b":[240,211],"m":"beq","oa":42053,"o":"r_A445"},{"a":42098,"t":"code","b":[173,61,2],"m":"lda","oa":573,"o":"exiting"},{"a":42101,"t":"code","b":[208,48],"m":"bne","oa":42151,"o":"b_A4A7"},{"a":42103,"t":"code","b":[238,61,2],"m":"inc","oa":573,"o":"exiting"},{"a":42106,"t":"code","b":[169,23],"m":"lda","o":"#$17"},{"a":42108,"t":"code","b":[141,71,2],"m":"sta","oa":583,"o":"exit_step"},{"a":42111,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":42113,"t":"code","b":[141,10,2],"m":"sta","oa":522,"o":"vaus_stretch"},{"a":42116,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":42118,"t":"code","b":[141,22,2],"m":"sta","oa":534,"o":"tune_hold"},{"a":42121,"t":"code","b":[141,23,2],"m":"sta","oa":535,"o":"tune_hold_kind"},{"a":42124,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":42126,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":42128,"t":"code","b":[160,34],"m":"ldy","o":"#$22"},{"a":42130,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":42133,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":42135,"t":"code","b":[169,77],"m":"lda","o":"#$4D"},{"a":42137,"t":"code","b":[160,34],"m":"ldy","o":"#$22"},{"a":42139,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":42142,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":42144,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":42146,"t":"code","b":[160,34],"m":"ldy","o":"#$22"},{"a":42148,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":42151,"l":"b_A4A7","t":"code","b":[173,71,2],"m":"lda","oa":583,"o":"exit_step","x":[42101]},{"a":42154,"t":"code","b":[48,154],"m":"bmi","oa":42054,"o":"b_A446"},{"a":42156,"t":"code","b":[173,69,148],"m":"lda","oa":37957,"o":"obj_x"},{"a":42159,"t":"code","b":[24],"m":"clc"},{"a":42160,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":42162,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":42165,"t":"code","b":[173,70,148],"m":"lda","oa":37958,"o":"vaus_right_x"},{"a":42168,"t":"code","b":[24],"m":"clc"},{"a":42169,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":42171,"t":"code","b":[240,7],"m":"beq","oa":42180,"o":"b_A4C4"},{"a":42173,"t":"code","b":[141,70,148],"m":"sta","oa":37958,"o":"vaus_right_x"},{"a":42176,"t":"code","b":[201,224],"m":"cmp","o":"#$E0"},{"a":42178,"t":"code","b":[144,54],"m":"bcc","oa":42234,"o":"r_A4FA"},{"a":42180,"l":"b_A4C4","t":"code","b":[169,10],"m":"lda","o":"#$0A","x":[42171]},{"a":42182,"t":"code","b":[141,34,2],"m":"sta","oa":546,"o":"wipe_rows"},{"a":42185,"t":"code","b":[173,71,2],"m":"lda","oa":583,"o":"exit_step"},{"a":42188,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":42190,"t":"code","b":[170],"m":"tax"},{"a":42191,"t":"code","b":[173,71,2],"m":"lda","oa":583,"o":"exit_step"},{"a":42194,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42195,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42196,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42197,"t":"code","b":[168],"m":"tay"},{"a":42198,"t":"code","b":[173,195,229],"m":"lda","oa":58819,"o":"a_E5C3"},{"a":42201,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":42203,"t":"code","b":[240,30],"m":"beq","oa":42235,"o":"b_A4FB"},{"a":42205,"l":"b_A4DD","t":"code","b":[185,192,229],"m":"lda","oa":58816,"o":"spr_frame_work_r,y","x":[42222]},{"a":42208,"t":"code","b":[29,145,252],"m":"ora","oa":64657,"o":"bit_masks_fc91,x"},{"a":42211,"t":"code","b":[153,192,229],"m":"sta","oa":58816,"o":"spr_frame_work_r,y"},{"a":42214,"t":"code","b":[152],"m":"tya"},{"a":42215,"t":"code","b":[24],"m":"clc"},{"a":42216,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":42218,"t":"code","b":[168],"m":"tay"},{"a":42219,"t":"code","b":[206,34,2],"m":"dec","oa":546,"o":"wipe_rows"},{"a":42222,"t":"code","b":[208,237],"m":"bne","oa":42205,"o":"b_A4DD"},{"a":42224,"t":"code","b":[206,71,2],"m":"dec","oa":583,"o":"exit_step"},{"a":42227,"t":"code","b":[16,5],"m":"bpl","oa":42234,"o":"r_A4FA"},{"a":42229,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":42231,"t":"code","b":[141,71,2],"m":"sta","oa":583,"o":"exit_step"},{"a":42234,"l":"r_A4FA","t":"code","b":[96],"m":"rts","x":[42178,42227,42262]},{"a":42235,"l":"b_A4FB","t":"code","b":[185,128,229],"m":"lda","oa":58752,"o":"spr_frame_work,y","x":[42203,42252]},{"a":42238,"t":"code","b":[29,145,252],"m":"ora","oa":64657,"o":"bit_masks_fc91,x"},{"a":42241,"t":"code","b":[153,128,229],"m":"sta","oa":58752,"o":"spr_frame_work,y"},{"a":42244,"t":"code","b":[152],"m":"tya"},{"a":42245,"t":"code","b":[24],"m":"clc"},{"a":42246,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":42248,"t":"code","b":[168],"m":"tay"},{"a":42249,"t":"code","b":[206,34,2],"m":"dec","oa":546,"o":"wipe_rows"},{"a":42252,"t":"code","b":[208,237],"m":"bne","oa":42235,"o":"b_A4FB"},{"a":42254,"t":"code","b":[173,71,2],"m":"lda","oa":583,"o":"exit_step"},{"a":42257,"t":"code","b":[48,5],"m":"bmi","oa":42264,"o":"j_A518"},{"a":42259,"t":"code","b":[206,71,2],"m":"dec","oa":583,"o":"exit_step"},{"a":42262,"t":"code","b":[16,226],"m":"bpl","oa":42234,"o":"r_A4FA"},{"a":42264,"l":"j_A518","t":"code","b":[32,23,52],"m":"jsr","oa":13335,"o":"sound_busy","x":[42054,42257]},{"a":42267,"t":"code","b":[240,1],"m":"beq","oa":42270,"o":"b_A51E"},{"a":42269,"t":"code","b":[96],"m":"rts"},{"a":42270,"l":"b_A51E","t":"code","b":[104],"m":"pla","x":[42267]},{"a":42271,"t":"code","b":[104],"m":"pla"},{"a":42272,"t":"code","b":[76,207,149],"m":"jmp","oa":38351,"o":"round_cleared"},{"a":42275,"l":"wipe_memory","c":"Called from enemy_probe only when $0944 is non-zero, which no code found sets (it is 0 at the hand-over and in play; in the stale build at $94D8 $0944 was the attract counter). Copies the 33 bytes at $A53A-$A55A to $01C0 with undocumented NOPs between the instructions, SEI and JMP $01C0. Not executed in the simulator.","t":"code","b":[160,32],"m":"ldy","o":"#$20","x":[41680]},{"a":42277,"l":"wipe_memory_body","c":"Undocumented opcodes, shown as bytes: $A525 NOP $45; $A527 LDA $A53A,Y; $A52A NOP $45; $A52C STA $01C0,Y; $A52F NOP $45; $A531 DEY; $A532 BPL $A525; $A534 NOP $A9; $A536 SEI; $A537 JMP $01C0.","t":"byte","b":[68,69,185,58,165,68,69,153]},{"a":42285,"t":"byte","b":[192,1,68,69,136,16,241,68]},{"a":42293,"t":"byte","b":[169,120,76,192,1]},{"a":42298,"l":"wipe_memory_code","c":"Code copied to $01C0 by wipe_memory and run there: LDA $0E / SBC #$BE / STA $0E / LDA #$FA / LDA #$9D / then copy page after page from ($11),Y to ($0D),Y until $0E wraps / LDX #0 / PHA / DEX / BNE: overwrites memory and the stack, a deliberate crash. The copy takes 33 bytes, so its last 6 are the drum data at $A555.","t":"byte","b":[165,14,233,190,133,14,169,250]},{"a":42306,"t":"byte","b":[169,157,177,17,145,13,200,208]},{"a":42314,"t":"byte","b":[249,230,14,208,245,162,0,72]},{"a":42322,"t":"byte","b":[202,208,252]},{"a":42325,"l":"drum_figures","c":"Drum bytecode figures called by drums_title: $A555 (8 x $83 1+3, 8 x $85 1+3, then $86 2+14 x 4), $A56F ($86 2+14), $A574 (a 12-call bar), $A598 ($82 1, 1, 6), $A59F, $A5A5 ($86 2+6), $A5AA, $A5B0 ($81 2+6), $A5B5 and $A5BB (with $84). Waits are in sequencer ticks. Decoded: work/agent12/drums.txt.","t":"byte","b":[73,8,131,1,131,3,64,73]},{"a":42333,"t":"byte","b":[8,133,1,133,3,64,32,111]},{"a":42341,"t":"byte","b":[165,32,111,165,32,165,165,32]},{"a":42349,"t":"byte","b":[165,165,134,2,134,14,96,32]},{"a":42357,"t":"byte","b":[176,165,32,165,165,32,176,165]},{"a":42365,"t":"byte","b":[32,165,165,32,152,165,32,165]},{"a":42373,"t":"byte","b":[165,32,165,165,32,176,165,32]},{"a":42381,"t":"byte","b":[165,165,32,176,165,32,176,165]},{"a":42389,"t":"byte","b":[32,165,165,130,1,130,1,130]},{"a":42397,"t":"byte","b":[6,96,32,165,165,32,176,165]},{"a":42405,"t":"byte","b":[134,2,134,6,96,32,176,165]},{"a":42413,"t":"byte","b":[32,165,165,129,2,129,6,96]},{"a":42421,"t":"byte","b":[32,160,170,76,187,165,32,176]},{"a":42429,"t":"byte","b":[165,132,2,132,6,132,2,132]},{"a":42437,"t":"byte","b":[6,96]},{"a":42439,"l":"laser_on_shape","c":"Turn the Vaus into its laser shape: every 2nd frame (bit 1 of $0201) set the pointer pair $F825/$F826 from laser_on_frames[$0223] and count $0223 down: $73 $75 $77 $79 $77 $75 $73 then $43 (the laser Vaus). Returns Y = $0223.","t":"code","b":[172,35,2],"m":"ldy","oa":547,"o":"laser_morph","x":[42497]},{"a":42442,"t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter"},{"a":42445,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":42447,"t":"code","b":[205,32,2],"m":"cmp","oa":544,"o":"anim_tick"},{"a":42450,"t":"code","b":[240,21],"m":"beq","oa":42473,"o":"r_A5E9"},{"a":42452,"t":"code","b":[141,32,2],"m":"sta","oa":544,"o":"anim_tick"},{"a":42455,"t":"code","b":[185,234,165],"m":"lda","oa":42474,"o":"laser_on_frames,y"},{"a":42458,"t":"code","b":[240,13],"m":"beq","oa":42473,"o":"r_A5E9"},{"a":42460,"t":"code","b":[141,37,248],"m":"sta","oa":63525,"o":"slot_shapes"},{"a":42463,"t":"code","b":[24],"m":"clc"},{"a":42464,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":42466,"t":"code","b":[141,38,248],"m":"sta","oa":63526,"o":"slot_shape_1"},{"a":42469,"t":"code","b":[136],"m":"dey"},{"a":42470,"t":"code","b":[140,35,2],"m":"sty","oa":547,"o":"laser_morph"},{"a":42473,"l":"r_A5E9","t":"code","b":[96],"m":"rts","x":[42450,42458]},{"a":42474,"l":"laser_on_frames","c":"Left-half pointers for laser_on_shape, read from the end: 0, $43, $73, $75, $77, $79, $77, $75, $73.","t":"byte","b":[0,67,115,117,119,121,119,117],"x":[42455]},{"a":42482,"t":"byte","b":[115]},{"a":42483,"l":"update_lasers","c":"The laser (L). If $022B is set and the Vaus has normal width ($020A = 4): run laser_on_shape; once it has finished, fire (fire_laser) each time the fire button $0236 goes from pressed to released ($0235 keeps the last state). Then for each live shot (1..0, $022C): if spent ($0230) step its burst ($F827 + 1 every 2nd frame up to $49, then remove); else move it up 4, and when it gets above Y $3A mark it spent; test bricks (laser_vs_bricks) and enemies (laser_vs_enemies).","t":"code","b":[173,43,2],"m":"lda","oa":555,"o":"laser_power","x":[38207,38294]},{"a":42486,"t":"code","b":[208,2],"m":"bne","oa":42490,"o":"b_A5FA"},{"a":42488,"t":"code","b":[240,32],"m":"beq","oa":42522,"o":"b_A61A"},{"a":42490,"l":"b_A5FA","t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch","x":[42486]},{"a":42493,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":42495,"t":"code","b":[208,25],"m":"bne","oa":42522,"o":"b_A61A"},{"a":42497,"t":"code","b":[32,199,165],"m":"jsr","oa":42439,"o":"laser_on_shape"},{"a":42500,"t":"code","b":[192,0],"m":"cpy","o":"#$00"},{"a":42502,"t":"code","b":[208,18],"m":"bne","oa":42522,"o":"b_A61A"},{"a":42504,"t":"code","b":[173,54,2],"m":"lda","oa":566,"o":"fire_now"},{"a":42507,"t":"code","b":[205,53,2],"m":"cmp","oa":565,"o":"fire_prev"},{"a":42510,"t":"code","b":[240,10],"m":"beq","oa":42522,"o":"b_A61A"},{"a":42512,"t":"code","b":[141,53,2],"m":"sta","oa":565,"o":"fire_prev"},{"a":42515,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":42517,"t":"code","b":[208,3],"m":"bne","oa":42522,"o":"b_A61A"},{"a":42519,"t":"code","b":[32,112,167],"m":"jsr","oa":42864,"o":"fire_laser"},{"a":42522,"l":"b_A61A","t":"code","b":[162,1],"m":"ldx","o":"#$01","x":[42488,42495,42502,42510,42517]},{"a":42524,"l":"b_A61C","t":"code","b":[189,44,2],"m":"lda","oa":556,"o":"laser_active,x","x":[42587]},{"a":42527,"t":"code","b":[240,57],"m":"beq","oa":42586,"o":"b_A65A"},{"a":42529,"t":"code","b":[189,48,2],"m":"lda","oa":560,"o":"laser_hit,x"},{"a":42532,"t":"code","b":[240,28],"m":"beq","oa":42562,"o":"b_A642"},{"a":42534,"t":"code","b":[254,46,2],"m":"inc","oa":558,"o":"laser_tick,x"},{"a":42537,"t":"code","b":[189,46,2],"m":"lda","oa":558,"o":"laser_tick,x"},{"a":42540,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":42542,"t":"code","b":[144,18],"m":"bcc","oa":42562,"o":"b_A642"},{"a":42544,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":42546,"t":"code","b":[157,46,2],"m":"sta","oa":558,"o":"laser_tick,x"},{"a":42549,"t":"code","b":[189,39,248],"m":"lda","oa":63527,"o":"slot_shape_2,x"},{"a":42552,"t":"code","b":[24],"m":"clc"},{"a":42553,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":42555,"t":"code","b":[201,74],"m":"cmp","o":"#$4A"},{"a":42557,"t":"code","b":[176,39],"m":"bcs","oa":42598,"o":"b_A666"},{"a":42559,"t":"code","b":[157,39,248],"m":"sta","oa":63527,"o":"slot_shape_2,x"},{"a":42562,"l":"b_A642","t":"code","b":[189,48,2],"m":"lda","oa":560,"o":"laser_hit,x","x":[42532,42542]},{"a":42565,"t":"code","b":[208,19],"m":"bne","oa":42586,"o":"b_A65A"},{"a":42567,"t":"code","b":[189,47,148],"m":"lda","oa":37935,"o":"laser_y,x"},{"a":42570,"t":"code","b":[56],"m":"sec"},{"a":42571,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":42573,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":42575,"t":"code","b":[144,13],"m":"bcc","oa":42590,"o":"b_A65E"},{"a":42577,"t":"code","b":[157,47,148],"m":"sta","oa":37935,"o":"laser_y,x"},{"a":42580,"t":"code","b":[32,176,166],"m":"jsr","oa":42672,"o":"laser_vs_bricks"},{"a":42583,"t":"code","b":[32,116,166],"m":"jsr","oa":42612,"o":"laser_vs_enemies"},{"a":42586,"l":"b_A65A","t":"code","b":[202],"m":"dex","x":[42527,42565,42595,42609]},{"a":42587,"t":"code","b":[16,191],"m":"bpl","oa":42524,"o":"b_A61C"},{"a":42589,"t":"code","b":[96],"m":"rts"},{"a":42590,"l":"b_A65E","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[42575]},{"a":42592,"t":"code","b":[157,48,2],"m":"sta","oa":560,"o":"laser_hit,x"},{"a":42595,"t":"code","b":[76,90,166],"m":"jmp","oa":42586,"o":"b_A65A"},{"a":42598,"l":"b_A666","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[42557,42695]},{"a":42600,"t":"code","b":[157,44,2],"m":"sta","oa":556,"o":"laser_active,x"},{"a":42603,"t":"code","b":[157,48,2],"m":"sta","oa":560,"o":"laser_hit,x"},{"a":42606,"t":"code","b":[157,47,148],"m":"sta","oa":37935,"o":"laser_y,x"},{"a":42609,"t":"code","b":[76,90,166],"m":"jmp","oa":42586,"o":"b_A65A"},{"a":42612,"l":"laser_vs_enemies","c":"Laser shot X against the live enemies: Y within $0C-$10 above the enemy and X within $0C either side -> enemy_destroyed and the shot is spent ($0230 = 1).","t":"code","b":[160,2],"m":"ldy","o":"#$02","x":[42583]},{"a":42614,"l":"b_A676","t":"code","b":[185,116,2],"m":"lda","oa":628,"o":"enemy_state,y","x":[42669]},{"a":42617,"t":"code","b":[240,49],"m":"beq","oa":42668,"o":"b_A6AC"},{"a":42619,"t":"code","b":[48,47],"m":"bmi","oa":42668,"o":"b_A6AC"},{"a":42621,"t":"code","b":[189,47,148],"m":"lda","oa":37935,"o":"laser_y,x"},{"a":42624,"t":"code","b":[56],"m":"sec"},{"a":42625,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":42627,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":42630,"t":"code","b":[144,36],"m":"bcc","oa":42668,"o":"b_A6AC"},{"a":42632,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":42634,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":42637,"t":"code","b":[176,29],"m":"bcs","oa":42668,"o":"b_A6AC"},{"a":42639,"t":"code","b":[189,71,148],"m":"lda","oa":37959,"o":"laser_x,x"},{"a":42642,"t":"code","b":[56],"m":"sec"},{"a":42643,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":42645,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":42648,"t":"code","b":[176,18],"m":"bcs","oa":42668,"o":"b_A6AC"},{"a":42650,"t":"code","b":[24],"m":"clc"},{"a":42651,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":42653,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":42656,"t":"code","b":[144,10],"m":"bcc","oa":42668,"o":"b_A6AC"},{"a":42658,"t":"code","b":[32,251,158],"m":"jsr","oa":40699,"o":"enemy_destroyed"},{"a":42661,"t":"code","b":[208,5],"m":"bne","oa":42668,"o":"b_A6AC"},{"a":42663,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":42665,"t":"code","b":[157,48,2],"m":"sta","oa":560,"o":"laser_hit,x"},{"a":42668,"l":"b_A6AC","t":"code","b":[136],"m":"dey","x":[42617,42619,42630,42637,42648,42656,42661]},{"a":42669,"t":"code","b":[16,199],"m":"bpl","oa":42614,"o":"b_A676"},{"a":42671,"t":"code","b":[96],"m":"rts"},{"a":42672,"l":"laser_vs_bricks","c":"Test the laser shot's two beams, at X - $1A and X - $0B ($0211), against the brick cell under the shot (laser_beam_brick).","t":"code","b":[169,26],"m":"lda","o":"#$1A","x":[42580]},{"a":42674,"t":"code","b":[141,17,2],"m":"sta","oa":529,"o":"bits_lo"},{"a":42677,"t":"code","b":[32,189,166],"m":"jsr","oa":42685,"o":"laser_beam_brick"},{"a":42680,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":42682,"t":"code","b":[141,17,2],"m":"sta","oa":529,"o":"bits_lo"},{"a":42685,"l":"laser_beam_brick","c":"One beam of a laser shot: nothing at Y $C0 or more; above Y $3B the shot is removed ($A666). Else read the screen cell at row (Y-$3B)/8 + 1, column 2*((X - $0211)/16) + 1 (via the row table $F78B); a character $80 or above is a brick: put its cell in $0218/$0219 (row (Y-$33)/8, column ((X-$0211)/8) AND $FE), break it ($B108) and mark the shot spent ($0230).","t":"code","b":[189,47,148],"m":"lda","oa":37935,"o":"laser_y,x","x":[42677]},{"a":42688,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":42690,"t":"code","b":[176,49],"m":"bcs","oa":42741,"o":"r_A6F5"},{"a":42692,"t":"code","b":[56],"m":"sec"},{"a":42693,"t":"code","b":[233,59],"m":"sbc","o":"#$3B"},{"a":42695,"t":"code","b":[144,157],"m":"bcc","oa":42598,"o":"b_A666"},{"a":42697,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42698,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42699,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":42701,"t":"code","b":[168],"m":"tay"},{"a":42702,"t":"code","b":[185,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,y"},{"a":42705,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":42707,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":42709,"t":"code","b":[185,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,y"},{"a":42712,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":42714,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":42716,"t":"code","b":[24],"m":"clc"},{"a":42717,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":42719,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":42721,"t":"code","b":[189,71,148],"m":"lda","oa":37959,"o":"laser_x,x"},{"a":42724,"t":"code","b":[56],"m":"sec"},{"a":42725,"t":"code","b":[237,17,2],"m":"sbc","oa":529,"o":"bits_lo"},{"a":42728,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":42730,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42731,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42732,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42733,"t":"code","b":[24],"m":"clc"},{"a":42734,"t":"code","b":[105,41],"m":"adc","o":"#$29"},{"a":42736,"t":"code","b":[168],"m":"tay"},{"a":42737,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":42739,"t":"code","b":[48,1],"m":"bmi","oa":42742,"o":"b_A6F6"},{"a":42741,"l":"r_A6F5","t":"code","b":[96],"m":"rts","x":[42690]},{"a":42742,"l":"b_A6F6","t":"code","b":[189,47,148],"m":"lda","oa":37935,"o":"laser_y,x","x":[42739]},{"a":42745,"t":"code","b":[56],"m":"sec"},{"a":42746,"t":"code","b":[233,51],"m":"sbc","o":"#$33"},{"a":42748,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42749,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42750,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42751,"t":"code","b":[141,24,2],"m":"sta","oa":536,"o":"hit_row"},{"a":42754,"t":"code","b":[189,71,148],"m":"lda","oa":37959,"o":"laser_x,x"},{"a":42757,"t":"code","b":[56],"m":"sec"},{"a":42758,"t":"code","b":[237,17,2],"m":"sbc","oa":529,"o":"bits_lo"},{"a":42761,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42762,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42763,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":42764,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":42766,"t":"code","b":[141,25,2],"m":"sta","oa":537,"o":"hit_col"},{"a":42769,"t":"code","b":[32,8,177],"m":"jsr","oa":45320,"o":"brick_hit"},{"a":42772,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":42774,"t":"code","b":[157,48,2],"m":"sta","oa":560,"o":"laser_hit,x"},{"a":42777,"t":"code","b":[96],"m":"rts"},{"a":42778,"l":"vaus_vs_enemies","c":"Live enemies (or Doh's shots) touching the Vaus: enemy Y within (Vaus Y - 8, Vaus Y + $1A] and X within (centre - 2*width, centre + width + 3] ($0206, $020A). In rounds 1-32 the enemy is destroyed (enemy_destroyed); in round 33 the shot destroys the Vaus (JMP vaus_destroyed). Its own 97 bytes, $A71A-$A77A, are the XOR key with which $A949 decrypts $BA0A-$BA6A at start-up, so changing this code changes what that decryption produces.","t":"code","b":[160,2],"m":"ldy","o":"#$02","x":[38219,38306,38410,43342]},{"a":42780,"l":"b_A71C","t":"code","b":[185,116,2],"m":"lda","oa":628,"o":"enemy_state,y","x":[42858]},{"a":42783,"t":"code","b":[240,72],"m":"beq","oa":42857,"o":"b_A769"},{"a":42785,"t":"code","b":[48,70],"m":"bmi","oa":42857,"o":"b_A769"},{"a":42787,"t":"code","b":[173,45,148],"m":"lda","oa":37933,"o":"obj_y"},{"a":42790,"t":"code","b":[56],"m":"sec"},{"a":42791,"t":"code","b":[233,8],"m":"sbc","o":"#$08"},{"a":42793,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":42796,"t":"code","b":[176,59],"m":"bcs","oa":42857,"o":"b_A769"},{"a":42798,"t":"code","b":[24],"m":"clc"},{"a":42799,"t":"code","b":[105,34],"m":"adc","o":"#$22"},{"a":42801,"t":"code","b":[217,53,148],"m":"cmp","oa":37941,"o":"enemy_y,y"},{"a":42804,"t":"code","b":[144,51],"m":"bcc","oa":42857,"o":"b_A769"},{"a":42806,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":42809,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":42811,"t":"code","b":[141,12,2],"m":"sta","oa":524,"o":"width_tmp"},{"a":42814,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":42817,"t":"code","b":[109,12,2],"m":"adc","oa":524,"o":"width_tmp"},{"a":42820,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":42823,"t":"code","b":[144,32],"m":"bcc","oa":42857,"o":"b_A769"},{"a":42825,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":42828,"t":"code","b":[10],"m":"asl","o":"a"},{"a":42829,"t":"code","b":[141,12,2],"m":"sta","oa":524,"o":"width_tmp"},{"a":42832,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":42835,"t":"code","b":[56],"m":"sec"},{"a":42836,"t":"code","b":[237,12,2],"m":"sbc","oa":524,"o":"width_tmp"},{"a":42839,"t":"code","b":[217,77,148],"m":"cmp","oa":37965,"o":"enemy_x,y"},{"a":42842,"t":"code","b":[176,13],"m":"bcs","oa":42857,"o":"b_A769"},{"a":42844,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":42847,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":42850,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":42852,"t":"code","b":[240,7],"m":"beq","oa":42861,"o":"b_A76D"},{"a":42854,"t":"code","b":[32,251,158],"m":"jsr","oa":40699,"o":"enemy_destroyed"},{"a":42857,"l":"b_A769","t":"code","b":[136],"m":"dey","x":[42783,42785,42796,42804,42823,42842]},{"a":42858,"t":"code","b":[16,176],"m":"bpl","oa":42780,"o":"b_A71C"},{"a":42860,"t":"code","b":[96],"m":"rts"},{"a":42861,"l":"b_A76D","t":"code","b":[76,248,154],"m":"jmp","oa":39672,"o":"vaus_destroyed","x":[42852]},{"a":42864,"l":"fire_laser","c":"Fire a laser shot: the first idle shot slot (1, then 0, $022C) gets X = Vaus centre - 4, Y $E8, pointer $45, colour white; then an effect sound on three voices unless a priority-2 sound runs. One slot per press.","t":"code","b":[162,1],"m":"ldx","o":"#$01","x":[42519]},{"a":42866,"l":"b_A772","t":"code","b":[189,44,2],"m":"lda","oa":556,"o":"laser_active,x","x":[42950]},{"a":42869,"t":"code","b":[208,78],"m":"bne","oa":42949,"o":"b_A7C5"},{"a":42871,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":42873,"t":"code","b":[157,44,2],"m":"sta","oa":556,"o":"laser_active,x"},{"a":42876,"t":"code","b":[169,69],"m":"lda","o":"#$45"},{"a":42878,"t":"code","b":[157,39,248],"m":"sta","oa":63527,"o":"slot_shape_2,x"},{"a":42881,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":42883,"t":"code","b":[157,27,248],"m":"sta","oa":63515,"o":"slot_colour_2,x"},{"a":42886,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":42889,"t":"code","b":[56],"m":"sec"},{"a":42890,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":42892,"t":"code","b":[157,71,148],"m":"sta","oa":37959,"o":"laser_x,x"},{"a":42895,"t":"code","b":[169,232],"m":"lda","o":"#$E8"},{"a":42897,"t":"code","b":[157,47,148],"m":"sta","oa":37935,"o":"laser_y,x"},{"a":42900,"t":"code","b":[173,22,2],"m":"lda","oa":534,"o":"tune_hold"},{"a":42903,"t":"code","b":[240,7],"m":"beq","oa":42912,"o":"b_A7A0"},{"a":42905,"t":"code","b":[173,23,2],"m":"lda","oa":535,"o":"tune_hold_kind"},{"a":42908,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":42910,"t":"code","b":[240,40],"m":"beq","oa":42952,"o":"r_A7C8"},{"a":42912,"l":"b_A7A0","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[42903]},{"a":42914,"t":"code","b":[141,23,2],"m":"sta","oa":535,"o":"tune_hold_kind"},{"a":42917,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":42919,"t":"code","b":[141,22,2],"m":"sta","oa":534,"o":"tune_hold"},{"a":42922,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":42924,"t":"code","b":[169,23],"m":"lda","o":"#$17"},{"a":42926,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":42928,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":42931,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":42933,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":42935,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":42937,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":42940,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":42942,"t":"code","b":[169,85],"m":"lda","o":"#$55"},{"a":42944,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":42946,"t":"code","b":[76,47,39],"m":"jmp","oa":10031,"o":"sound_effect_start"},{"a":42949,"l":"b_A7C5","t":"code","b":[202],"m":"dex","x":[42869]},{"a":42950,"t":"code","b":[16,170],"m":"bpl","oa":42866,"o":"b_A772"},{"a":42952,"l":"r_A7C8","t":"code","b":[96],"m":"rts","x":[42910]},{"a":42953,"l":"drum_repeat","c":"Drum bytecode $49 n (repeat n times): push the address after it (A = 2), store n in $89,X (the count slot of the new entry), continue after it. The matching $40 is drum_next.","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":42955,"t":"code","b":[32,50,160],"m":"jsr","oa":41010,"o":"drum_push"},{"a":42958,"t":"code","b":[72],"m":"pha"},{"a":42959,"t":"code","b":[200],"m":"iny"},{"a":42960,"t":"code","b":[177,218],"m":"lda","oa":218,"o":"(drum_ptr),y"},{"a":42962,"t":"code","b":[149,137],"m":"sta","oa":137,"o":"drum_loops_top,x"},{"a":42964,"t":"code","b":[104],"m":"pla"},{"a":42965,"t":"code","b":[133,219],"m":"sta","oa":219,"o":"drum_ptr_hi"},{"a":42967,"t":"code","b":[181,121],"m":"lda","oa":121,"o":"drum_stack_lo_top,x"},{"a":42969,"t":"code","b":[133,218],"m":"sta","oa":218,"o":"drum_ptr"},{"a":42971,"t":"code","b":[96],"m":"rts"},{"a":42972,"l":"capsule_letter","c":"Roll the capsule's letter: every 4th frame (bit 2 of $0201, kept in $0239) step $0238 (7..0) and rebuild the 10 rows of the capsule sprite at $E541 (every 3rd byte) from its base $E501 masked by capsule_mask and ORed with the 8-byte letter capsule_letter_now, both indexed by ($0238 + row) AND 7, so the letter scrolls through the capsule.","t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter","x":[38210,38297,43418]},{"a":42975,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":42977,"t":"code","b":[205,57,2],"m":"cmp","oa":569,"o":"capsule_roll_tick"},{"a":42980,"t":"code","b":[240,40],"m":"beq","oa":43022,"o":"r_A80E"},{"a":42982,"t":"code","b":[141,57,2],"m":"sta","oa":569,"o":"capsule_roll_tick"},{"a":42985,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":42987,"t":"code","b":[172,56,2],"m":"ldy","oa":568,"o":"capsule_roll"},{"a":42990,"t":"code","b":[136],"m":"dey"},{"a":42991,"t":"code","b":[16,2],"m":"bpl","oa":42995,"o":"b_A7F3"},{"a":42993,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":42995,"l":"b_A7F3","t":"code","b":[140,56,2],"m":"sty","oa":568,"o":"capsule_roll","x":[42991]},{"a":42998,"l":"b_A7F6","t":"code","b":[189,1,229],"m":"lda","oa":58625,"o":"f_E501,x","x":[43020]},{"a":43001,"t":"code","b":[57,80,168],"m":"and","oa":43088,"o":"capsule_mask,y"},{"a":43004,"t":"code","b":[25,15,168],"m":"ora","oa":43023,"o":"capsule_letter_now,y"},{"a":43007,"t":"code","b":[157,65,229],"m":"sta","oa":58689,"o":"f_E541,x"},{"a":43010,"t":"code","b":[200],"m":"iny"},{"a":43011,"t":"code","b":[152],"m":"tya"},{"a":43012,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":43014,"t":"code","b":[168],"m":"tay"},{"a":43015,"t":"code","b":[232],"m":"inx"},{"a":43016,"t":"code","b":[232],"m":"inx"},{"a":43017,"t":"code","b":[232],"m":"inx"},{"a":43018,"t":"code","b":[224,30],"m":"cpx","o":"#$1E"},{"a":43020,"t":"code","b":[144,232],"m":"bcc","oa":42998,"o":"b_A7F6"},{"a":43022,"l":"r_A80E","t":"code","b":[96],"m":"rts","x":[42980]},{"a":43023,"l":"capsule_letter_now","c":"The falling capsule's letter, 8 bytes, copied here from capsule_letters by $B22C when the capsule appears; zeros at the hand-over.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[43004,45615]},{"a":43031,"l":"capsule_letters","c":"Capsule letters, 8 bytes each (3 blank rows, 5 rows of a 4-pixel multicolour letter, pixel pairs 01 on 10), for types 1-7 at $A818 + 8(type-1); $B22C copies type x 8 - 7 .. type x 8 from $A817: S $A818, C $A820, E $A828, D $A830, L $A838, B $A840, P $A848. The first byte, $A817, is the end of type 0's empty cell.","t":"byte","b":[0,0,0,0,86,106,86,166],"x":[45612]},{"a":43039,"t":"byte","b":[86,0,0,0,86,106,106,106]},{"a":43047,"t":"byte","b":[86,0,0,0,86,106,90,106]},{"a":43055,"t":"byte","b":[86,0,0,0,90,102,102,102]},{"a":43063,"t":"byte","b":[90,0,0,0,106,106,106,106]},{"a":43071,"t":"byte","b":[86,0,0,0,86,102,86,102]},{"a":43079,"t":"byte","b":[86,0,0,0,86,102,86,106]},{"a":43087,"t":"byte","b":[106]},{"a":43088,"l":"capsule_mask","c":"Mask for capsule_letter: $FF $FF $FF then five $00, so the three rows that are blank in each letter keep the capsule's base graphic and the five letter rows are replaced.","t":"byte","b":[255,255,255,0,0,0,0,0],"x":[43001]},{"a":43096,"l":"capsule_actions","c":"Capsule effects by type ($0237), words for the self-modified JSR at $A9FA: 0 none, 1 S $A8BA, 2 C $A8AC, 3 E $AA44, 4 D $A8CD, 5 L $A870, 6 B $A868, 7 P $A882. Letters from capsule_letters.","t":"addr","b":[0,0],"oa":0,"o":"cpu_port_dir","x":[43502]},{"a":43097,"t":"note","l":"capsule_actions_hi","c":"High bytes of capsule_actions (second byte of each word), read at $A9F4 into $A9FC.","note":"inside the item at $A858","x":[43508]},{"a":43098,"t":"addr","b":[186,168],"oa":43194,"o":"capsule_slow"},{"a":43100,"t":"addr","b":[172,168],"oa":43180,"o":"capsule_catch"},{"a":43102,"t":"addr","b":[68,170],"oa":43588,"o":"capsule_enlarge"},{"a":43104,"t":"addr","b":[205,168],"oa":43213,"o":"capsule_disrupt"},{"a":43106,"t":"addr","b":[112,168],"oa":43120,"o":"capsule_laser"},{"a":43108,"t":"addr","b":[104,168],"oa":43112,"o":"capsule_break"},{"a":43110,"t":"addr","b":[130,168],"oa":43138,"o":"capsule_player"},{"a":43112,"l":"capsule_break","c":"B: arm the break exit ($023C = 1, break_exit opens it) and clear the capsule.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[43108]},{"a":43114,"t":"code","b":[141,60,2],"m":"sta","oa":572,"o":"break_state"},{"a":43117,"t":"code","b":[76,13,170],"m":"jmp","oa":43533,"o":"capsule_clear"},{"a":43120,"l":"capsule_laser","c":"L: laser on ($022B = 1), start the shape change ($0223 = 8) and clear the remembered fire state ($0235 = 0); clear the capsule.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[43106]},{"a":43122,"t":"code","b":[141,43,2],"m":"sta","oa":555,"o":"laser_power"},{"a":43125,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":43127,"t":"code","b":[141,35,2],"m":"sta","oa":547,"o":"laser_morph"},{"a":43130,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43132,"t":"code","b":[141,53,2],"m":"sta","oa":565,"o":"fire_prev"},{"a":43135,"t":"code","b":[76,13,170],"m":"jmp","oa":43533,"o":"capsule_clear"},{"a":43138,"l":"capsule_player","c":"P: one more life for the current player (BCD $0936,X + 1, not stored when it would pass 99), redraw the panel ($FA4E, $F39B), priority sound ($0216 = $28, $0217 = 2), tune $2F; clear the capsule.","t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player","x":[43110]},{"a":43141,"t":"code","b":[189,54,9],"m":"lda","oa":2358,"o":"lives_p1,x"},{"a":43144,"t":"code","b":[248],"m":"sed"},{"a":43145,"t":"code","b":[24],"m":"clc"},{"a":43146,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":43148,"t":"code","b":[216],"m":"cld"},{"a":43149,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":43151,"t":"code","b":[240,24],"m":"beq","oa":43177,"o":"b_A8A9"},{"a":43153,"t":"code","b":[157,54,9],"m":"sta","oa":2358,"o":"lives_p1,x"},{"a":43156,"t":"code","b":[32,78,250],"m":"jsr","oa":64078,"o":"draw_lives"},{"a":43159,"t":"code","b":[32,155,243],"m":"jsr","oa":62363,"o":"draw_round_numbers"},{"a":43162,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":43164,"t":"code","b":[141,22,2],"m":"sta","oa":534,"o":"tune_hold"},{"a":43167,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":43169,"t":"code","b":[141,23,2],"m":"sta","oa":535,"o":"tune_hold_kind"},{"a":43172,"t":"code","b":[160,47],"m":"ldy","o":"#$2F"},{"a":43174,"t":"code","b":[32,43,38],"m":"jsr","oa":9771,"o":"music_start_tune"},{"a":43177,"l":"b_A8A9","t":"code","b":[76,13,170],"m":"jmp","oa":43533,"o":"capsule_clear","x":[43151]},{"a":43180,"l":"capsule_catch","c":"C: catch on ($022A = 1): the next time the ball meets the Vaus it is held (bat_collision); clear the capsule.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[43100]},{"a":43182,"t":"code","b":[141,42,2],"m":"sta","oa":554,"o":"catch_power"},{"a":43185,"t":"code","b":[76,13,170],"m":"jmp","oa":43533,"o":"capsule_clear"},{"a":43188,"l":"debug_loop","c":"INC $D020 / JMP $A8B4: an endless border-colour loop with no caller found, between two capsule actions; looks like a leftover debugging trap.","t":"code","b":[238,32,208],"m":"inc","o":"vic_border","x":[43191]},{"a":43191,"t":"code","b":[76,180,168],"m":"jmp","oa":43188,"o":"debug_loop"},{"a":43194,"l":"capsule_slow","c":"S: ball speed $023A - 1 unless that would be 0, and clear the fraction $0248. The speed floor in move_balls ($ADE7, frames since the life began / 1024) can raise it again on the next frame.","t":"code","b":[173,58,2],"m":"lda","oa":570,"o":"ball_speed","x":[43098]},{"a":43197,"t":"code","b":[56],"m":"sec"},{"a":43198,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":43200,"t":"code","b":[240,3],"m":"beq","oa":43205,"o":"b_A8C5"},{"a":43202,"t":"code","b":[141,58,2],"m":"sta","oa":570,"o":"ball_speed"},{"a":43205,"l":"b_A8C5","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[43200]},{"a":43207,"t":"code","b":[141,72,2],"m":"sta","oa":584,"o":"speed_acc"},{"a":43210,"t":"code","b":[76,13,170],"m":"jmp","oa":43533,"o":"capsule_clear"},{"a":43213,"l":"capsule_disrupt","c":"D: split the ball into three: copy the first live ball's (2, 1, else 0) X, Y and vertical direction to all three slots, live, horizontal directions from disrupt_dx (+1, -1, +1) and angles $029B = $FF, $029E from disrupt_angle ($40, $F0, $FF); then ball speed $023A + 1. The loop also writes 0 to $0228,X for X = 0-2, which clears $0229 (enemy timer) and $022A (catch) as well as the held flag.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[43104]},{"a":43215,"l":"b_A8CF","t":"code","b":[189,167,2],"m":"lda","oa":679,"o":"ball_active,x","x":[43221]},{"a":43218,"t":"code","b":[208,3],"m":"bne","oa":43223,"o":"b_A8D7"},{"a":43220,"t":"code","b":[202],"m":"dex"},{"a":43221,"t":"code","b":[208,248],"m":"bne","oa":43215,"o":"b_A8CF"},{"a":43223,"l":"b_A8D7","t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x","x":[43218]},{"a":43226,"t":"code","b":[141,13,2],"m":"sta","oa":525,"o":"x_save"},{"a":43229,"t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x"},{"a":43232,"t":"code","b":[141,12,2],"m":"sta","oa":524,"o":"width_tmp"},{"a":43235,"t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x"},{"a":43238,"t":"code","b":[141,16,2],"m":"sta","oa":528,"o":"index_save"},{"a":43241,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":43243,"l":"b_A8EB","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[43294]},{"a":43245,"t":"code","b":[157,170,2],"m":"sta","oa":682,"o":"ball_cooldown,x"},{"a":43248,"t":"code","b":[173,16,2],"m":"lda","oa":528,"o":"index_save"},{"a":43251,"t":"code","b":[157,149,2],"m":"sta","oa":661,"o":"ball_dy,x"},{"a":43254,"t":"code","b":[189,44,169],"m":"lda","oa":43308,"o":"disrupt_dx,x"},{"a":43257,"t":"code","b":[157,152,2],"m":"sta","oa":664,"o":"ball_dx,x"},{"a":43260,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43262,"t":"code","b":[157,167,2],"m":"sta","oa":679,"o":"ball_active,x"},{"a":43265,"t":"code","b":[173,12,2],"m":"lda","oa":524,"o":"width_tmp"},{"a":43268,"t":"code","b":[157,49,148],"m":"sta","oa":37937,"o":"ball_y,x"},{"a":43271,"t":"code","b":[173,13,2],"m":"lda","oa":525,"o":"x_save"},{"a":43274,"t":"code","b":[157,73,148],"m":"sta","oa":37961,"o":"ball_x,x"},{"a":43277,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":43279,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":43282,"t":"code","b":[189,47,169],"m":"lda","oa":43311,"o":"disrupt_angle,x"},{"a":43285,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":43288,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43290,"t":"code","b":[157,40,2],"m":"sta","oa":552,"o":"ball_held,x"},{"a":43293,"t":"code","b":[202],"m":"dex"},{"a":43294,"t":"code","b":[16,203],"m":"bpl","oa":43243,"o":"b_A8EB"},{"a":43296,"t":"code","b":[173,58,2],"m":"lda","oa":570,"o":"ball_speed"},{"a":43299,"t":"code","b":[24],"m":"clc"},{"a":43300,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":43302,"t":"code","b":[141,58,2],"m":"sta","oa":570,"o":"ball_speed"},{"a":43305,"t":"code","b":[76,13,170],"m":"jmp","oa":43533,"o":"capsule_clear"},{"a":43308,"l":"disrupt_dx","c":"Horizontal directions of balls 0-2 after the D capsule: +1, -1, +1.","t":"byte","b":[1,255,1],"x":[43254]},{"a":43311,"l":"disrupt_angle","c":"$029E (the second Bresenham ratio) of balls 0-2 after the D capsule: $40, $F0, $FF.","t":"byte","b":[64,240,255],"x":[43282]},{"a":43314,"l":"drum_next","c":"Drum bytecode $40 (end of repeat): count down $88,X of the top entry; not zero -> reload $DA/$DB from it (back to the start); zero -> drop it and step past the $40.","t":"code","b":[230,221],"m":"inc","oa":221,"o":"drum_stack_index"},{"a":43316,"t":"code","b":[166,221],"m":"ldx","oa":221,"o":"drum_stack_index"},{"a":43318,"t":"code","b":[214,136],"m":"dec","oa":136,"o":"drum_loops,x"},{"a":43320,"t":"code","b":[240,6],"m":"beq","oa":43328,"o":"b_A940"},{"a":43322,"t":"code","b":[32,234,161],"m":"jsr","oa":41450,"o":"drum_reload"},{"a":43325,"t":"code","b":[198,221],"m":"dec","oa":221,"o":"drum_stack_index"},{"a":43327,"t":"code","b":[96],"m":"rts"},{"a":43328,"l":"b_A940","t":"code","b":[134,221],"m":"stx","oa":221,"o":"drum_stack_index","x":[43320]},{"a":43330,"t":"code","b":[230,218],"m":"inc","oa":218,"o":"drum_ptr"},{"a":43332,"t":"code","b":[208,2],"m":"bne","oa":43336,"o":"r_A948"},{"a":43334,"t":"code","b":[230,219],"m":"inc","oa":219,"o":"drum_ptr_hi"},{"a":43336,"l":"r_A948","t":"code","b":[96],"m":"rts","x":[43332,43355]},{"a":43337,"l":"decrypt_ba0a","c":"Start-up, called from the protection at $5F51: XOR the 97 bytes $BA0A-$BA6A with $A71A-$A77A (the code of vaus_vs_enemies and the start of fire_laser), Y = $60 down to 0.","t":"code","b":[160,96],"m":"ldy","o":"#$60","x":[24401]},{"a":43339,"l":"b_A94B","t":"code","b":[185,10,186],"m":"lda","oa":47626,"o":"protection_check_plain,y","x":[43349]},{"a":43342,"t":"code","b":[89,26,167],"m":"eor","oa":42778,"o":"vaus_vs_enemies,y"},{"a":43345,"t":"code","b":[153,10,186],"m":"sta","oa":47626,"o":"protection_check_plain,y"},{"a":43348,"t":"code","b":[136],"m":"dey"},{"a":43349,"t":"code","b":[16,244],"m":"bpl","oa":43339,"o":"b_A94B"},{"a":43351,"t":"code","b":[96],"m":"rts"},{"a":43352,"l":"old_shine_reset","c":"Code with no caller found and never executed in the simulator: for each hard brick ($0456 down to 1) with a shine flag, set it to $80, add 1 to $0355,X if not negative, and redraw its two characters ($8D/$91 gold or $85/$89 silver from $03AA,X). Similar to silver_shine; possibly left from an earlier build. Its BEQ goes to $A948, an RTS.","t":"code","b":[174,86,4],"m":"ldx","oa":1110,"o":"metal_count"},{"a":43355,"t":"code","b":[240,235],"m":"beq","oa":43336,"o":"r_A948"},{"a":43357,"l":"b_A95D","t":"code","b":[189,0,3],"m":"lda","oa":768,"o":"metal_state,x","x":[43410]},{"a":43360,"t":"code","b":[240,47],"m":"beq","oa":43409,"o":"b_A991"},{"a":43362,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":43364,"t":"code","b":[157,0,3],"m":"sta","oa":768,"o":"metal_state,x"},{"a":43367,"t":"code","b":[189,85,3],"m":"lda","oa":853,"o":"metal_hits,x"},{"a":43370,"t":"code","b":[48,3],"m":"bmi","oa":43375,"o":"b_A96F"},{"a":43372,"t":"code","b":[254,85,3],"m":"inc","oa":853,"o":"metal_hits,x"},{"a":43375,"l":"b_A96F","t":"code","b":[138],"m":"txa","x":[43370]},{"a":43376,"t":"code","b":[10],"m":"asl","o":"a"},{"a":43377,"t":"code","b":[168],"m":"tay"},{"a":43378,"t":"code","b":[185,170,3],"m":"lda","oa":938,"o":"metal_pos,y"},{"a":43381,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":43383,"t":"code","b":[185,171,3],"m":"lda","oa":939,"o":"metal_pos_hi,y"},{"a":43386,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":43388,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":43390,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":43392,"t":"code","b":[201,138],"m":"cmp","o":"#$8A"},{"a":43394,"t":"code","b":[144,3],"m":"bcc","oa":43399,"o":"b_A987"},{"a":43396,"t":"code","b":[169,141],"m":"lda","o":"#$8D"},{"a":43398,"t":"code","b":[44,169,133],"m":"bit","oa":34217,"o":"round_10_byte_9"},{"a":43401,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":43403,"t":"code","b":[200],"m":"iny"},{"a":43404,"t":"code","b":[24],"m":"clc"},{"a":43405,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":43407,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":43409,"l":"b_A991","t":"code","b":[202],"m":"dex","x":[43360]},{"a":43410,"t":"code","b":[208,201],"m":"bne","oa":43357,"o":"b_A95D"},{"a":43412,"t":"code","b":[96],"m":"rts"},{"a":43413,"l":"update_capsule","c":"The falling capsule ($0237 = type, 0 none): roll its letter, and if it overlaps the Vaus (Y within Vaus Y + 4 .. + $0C, X within centre - 2*width .. + width + $0C) and the Vaus is not leaving: add $01 to the score's middle byte ($0934, via $FBBD), cancel the running powers ($AA17), remember the type in $0208 and call its action through capsule_actions (self-modified JSR at $A9FA). Otherwise it falls 1 pixel a frame and disappears at Y $FA.","t":"code","b":[173,55,2],"m":"lda","oa":567,"o":"capsule_type","x":[38204,38291]},{"a":43416,"t":"code","b":[240,99],"m":"beq","oa":43517,"o":"r_A9FD"},{"a":43418,"t":"code","b":[32,220,167],"m":"jsr","oa":42972,"o":"capsule_letter"},{"a":43421,"t":"code","b":[173,45,148],"m":"lda","oa":37933,"o":"obj_y"},{"a":43424,"t":"code","b":[24],"m":"clc"},{"a":43425,"t":"code","b":[105,12],"m":"adc","o":"#$0C"},{"a":43427,"t":"code","b":[205,52,148],"m":"cmp","oa":37940,"o":"capsule_y"},{"a":43430,"t":"code","b":[144,86],"m":"bcc","oa":43518,"o":"b_A9FE"},{"a":43432,"t":"code","b":[233,8],"m":"sbc","o":"#$08"},{"a":43434,"t":"code","b":[205,52,148],"m":"cmp","oa":37940,"o":"capsule_y"},{"a":43437,"t":"code","b":[176,79],"m":"bcs","oa":43518,"o":"b_A9FE"},{"a":43439,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":43442,"t":"code","b":[141,12,2],"m":"sta","oa":524,"o":"width_tmp"},{"a":43445,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":43448,"t":"code","b":[24],"m":"clc"},{"a":43449,"t":"code","b":[105,12],"m":"adc","o":"#$0C"},{"a":43451,"t":"code","b":[109,12,2],"m":"adc","oa":524,"o":"width_tmp"},{"a":43454,"t":"code","b":[205,76,148],"m":"cmp","oa":37964,"o":"capsule_x"},{"a":43457,"t":"code","b":[144,59],"m":"bcc","oa":43518,"o":"b_A9FE"},{"a":43459,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":43462,"t":"code","b":[10],"m":"asl","o":"a"},{"a":43463,"t":"code","b":[141,12,2],"m":"sta","oa":524,"o":"width_tmp"},{"a":43466,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":43469,"t":"code","b":[56],"m":"sec"},{"a":43470,"t":"code","b":[237,12,2],"m":"sbc","oa":524,"o":"width_tmp"},{"a":43473,"t":"code","b":[205,76,148],"m":"cmp","oa":37964,"o":"capsule_x"},{"a":43476,"t":"code","b":[176,40],"m":"bcs","oa":43518,"o":"b_A9FE"},{"a":43478,"t":"code","b":[173,61,2],"m":"lda","oa":573,"o":"exiting"},{"a":43481,"t":"code","b":[208,35],"m":"bne","oa":43518,"o":"b_A9FE"},{"a":43483,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43485,"t":"code","b":[141,52,9],"m":"sta","oa":2356,"o":"a_0934"},{"a":43488,"t":"code","b":[32,189,251],"m":"jsr","oa":64445,"o":"add_score"},{"a":43491,"t":"code","b":[32,23,170],"m":"jsr","oa":43543,"o":"cancel_powers"},{"a":43494,"t":"code","b":[173,55,2],"m":"lda","oa":567,"o":"capsule_type"},{"a":43497,"t":"code","b":[141,8,2],"m":"sta","oa":520,"o":"last_capsule"},{"a":43500,"t":"code","b":[10],"m":"asl","o":"a"},{"a":43501,"t":"code","b":[170],"m":"tax"},{"a":43502,"t":"code","b":[189,88,168],"m":"lda","oa":43096,"o":"capsule_actions,x"},{"a":43505,"t":"code","b":[141,251,169],"m":"sta","oa":43515,"o":"capsule_jsr_lo"},{"a":43508,"t":"code","b":[189,89,168],"m":"lda","oa":43097,"o":"capsule_actions_hi,x"},{"a":43511,"t":"code","b":[141,252,169],"m":"sta","oa":43516,"o":"capsule_jsr_hi"},{"a":43514,"l":"capsule_jsr","c":"JSR to the capsule action: its operand ($A9FB/$A9FC) is written from capsule_actions just before; as assembled it points at itself.","t":"code","b":[32,250,169],"m":"jsr","oa":43514,"o":"capsule_jsr","x":[43514]},{"a":43515,"t":"note","l":"capsule_jsr_lo","c":"Low byte of the self-modified JSR at $A9FA, written at $A9F1.","note":"inside the item at $A9FA","x":[43505]},{"a":43516,"t":"note","l":"capsule_jsr_hi","c":"High byte of the self-modified JSR at $A9FA, written at $A9F7.","note":"inside the item at $A9FA","x":[43511]},{"a":43517,"l":"r_A9FD","t":"code","b":[96],"m":"rts","x":[43416,43531,43541]},{"a":43518,"l":"b_A9FE","t":"code","b":[173,52,148],"m":"lda","oa":37940,"o":"capsule_y","x":[43430,43437,43457,43476,43481]},{"a":43521,"t":"code","b":[24],"m":"clc"},{"a":43522,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":43524,"t":"code","b":[201,250],"m":"cmp","o":"#$FA"},{"a":43526,"t":"code","b":[176,5],"m":"bcs","oa":43533,"o":"capsule_clear"},{"a":43528,"t":"code","b":[141,52,148],"m":"sta","oa":37940,"o":"capsule_y"},{"a":43531,"t":"code","b":[208,240],"m":"bne","oa":43517,"o":"r_A9FD"},{"a":43533,"l":"capsule_clear","c":"No capsule: capsule_y = 0, type $0237 = 0. Every capsule action ends here.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[39627,43117,43135,43177,43185,43210,43305,43526,43630]},{"a":43535,"t":"code","b":[141,52,148],"m":"sta","oa":37940,"o":"capsule_y"},{"a":43538,"t":"code","b":[141,55,2],"m":"sta","oa":567,"o":"capsule_type"},{"a":43541,"t":"code","b":[240,230],"m":"beq","oa":43517,"o":"r_A9FD"},{"a":43543,"l":"cancel_powers","c":"On catching a capsule: if the laser was on, start the shape back ($0223 = 8); catch, laser and break off ($022A, $022B, $023C = 0); release a held ball (ball_release); $F6C2; if the Vaus is enlarged ($020A = $0C) start shrinking it ($0207 = $80).","t":"code","b":[173,43,2],"m":"lda","oa":555,"o":"laser_power","x":[43491]},{"a":43546,"t":"code","b":[240,5],"m":"beq","oa":43553,"o":"b_AA21"},{"a":43548,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":43550,"t":"code","b":[141,35,2],"m":"sta","oa":547,"o":"laser_morph"},{"a":43553,"l":"b_AA21","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[43546]},{"a":43555,"t":"code","b":[141,42,2],"m":"sta","oa":554,"o":"catch_power"},{"a":43558,"t":"code","b":[141,43,2],"m":"sta","oa":555,"o":"laser_power"},{"a":43561,"t":"code","b":[141,60,2],"m":"sta","oa":572,"o":"break_state"},{"a":43564,"t":"code","b":[173,40,2],"m":"lda","oa":552,"o":"ball_held"},{"a":43567,"t":"code","b":[240,3],"m":"beq","oa":43572,"o":"b_AA34"},{"a":43569,"t":"code","b":[32,234,170],"m":"jsr","oa":43754,"o":"ball_release"},{"a":43572,"l":"b_AA34","t":"code","b":[32,194,246],"m":"jsr","oa":63170,"o":"exit_gate_close","x":[43567]},{"a":43575,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":43578,"t":"code","b":[201,12],"m":"cmp","o":"#$0C"},{"a":43580,"t":"code","b":[208,5],"m":"bne","oa":43587,"o":"r_AA43"},{"a":43582,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":43584,"t":"code","b":[141,7,2],"m":"sta","oa":519,"o":"vaus_resize_state"},{"a":43587,"l":"r_AA43","t":"code","b":[96],"m":"rts","x":[43580]},{"a":43588,"l":"capsule_enlarge","c":"E: start enlarging the Vaus ($0207 = 1, grown by vaus_resize), priority sound ($0216 = $28, $0217 = 2) on three voices; clear the capsule.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[43102]},{"a":43590,"t":"code","b":[141,7,2],"m":"sta","oa":519,"o":"vaus_resize_state"},{"a":43593,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":43595,"t":"code","b":[141,22,2],"m":"sta","oa":534,"o":"tune_hold"},{"a":43598,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":43600,"t":"code","b":[141,23,2],"m":"sta","oa":535,"o":"tune_hold_kind"},{"a":43603,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":43605,"t":"code","b":[169,186],"m":"lda","o":"#$BA"},{"a":43607,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":43609,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":43612,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":43614,"t":"code","b":[169,217],"m":"lda","o":"#$D9"},{"a":43616,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":43618,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":43621,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":43623,"t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":43625,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":43627,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":43630,"t":"code","b":[76,13,170],"m":"jmp","oa":43533,"o":"capsule_clear"},{"a":43633,"l":"held_ball","c":"While a ball is held ($0228): release it (ball_release) when fire is pressed ($0236) or the frame counter $0201 reaches $80; otherwise keep the first live ball (2, 1, else 0) on the Vaus at X = $0206 - $0221 (the offset where it was caught), Y = Vaus Y + 8.","t":"code","b":[173,40,2],"m":"lda","oa":552,"o":"ball_held","x":[38198,38282,38401]},{"a":43636,"t":"code","b":[240,41],"m":"beq","oa":43679,"o":"r_AA9F"},{"a":43638,"t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter"},{"a":43641,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":43643,"t":"code","b":[176,109],"m":"bcs","oa":43754,"o":"ball_release"},{"a":43645,"t":"code","b":[173,54,2],"m":"lda","oa":566,"o":"fire_now"},{"a":43648,"t":"code","b":[208,104],"m":"bne","oa":43754,"o":"ball_release"},{"a":43650,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":43652,"l":"b_AA84","t":"code","b":[189,167,2],"m":"lda","oa":679,"o":"ball_active,x","x":[43658]},{"a":43655,"t":"code","b":[208,3],"m":"bne","oa":43660,"o":"b_AA8C"},{"a":43657,"t":"code","b":[202],"m":"dex"},{"a":43658,"t":"code","b":[208,248],"m":"bne","oa":43652,"o":"b_AA84"},{"a":43660,"l":"b_AA8C","t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x","x":[43655]},{"a":43663,"t":"code","b":[56],"m":"sec"},{"a":43664,"t":"code","b":[237,33,2],"m":"sbc","oa":545,"o":"catch_offset"},{"a":43667,"t":"code","b":[157,73,148],"m":"sta","oa":37961,"o":"ball_x,x"},{"a":43670,"t":"code","b":[173,45,148],"m":"lda","oa":37933,"o":"obj_y"},{"a":43673,"t":"code","b":[24],"m":"clc"},{"a":43674,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":43676,"t":"code","b":[157,49,148],"m":"sta","oa":37937,"o":"ball_y,x"},{"a":43679,"l":"r_AA9F","t":"code","b":[96],"m":"rts","x":[43636]},{"a":43680,"l":"drum_figures_2","c":"More drum bytecode called by drums_title: $AAA0 (a bar of seven calls), $AAB5 and $AACF (bars with sample $83 on the off-beats), each ending in a jump to $A5A5 or $A574. Decoded: work/agent12/drums.txt.","t":"byte","b":[32,116,165,32,159,165,32,116]},{"a":43688,"t":"byte","b":[165,32,170,165,32,116,165,32]},{"a":43696,"t":"byte","b":[159,165,76,116,165,32,176,165]},{"a":43704,"t":"byte","b":[32,165,165,131,2,131,6,32]},{"a":43712,"t":"byte","b":[165,165,32,152,165,32,165,165]},{"a":43720,"t":"byte","b":[131,2,131,6,76,165,165,132]},{"a":43728,"t":"byte","b":[2,132,6,32,165,165,131,2]},{"a":43736,"t":"byte","b":[131,6,32,165,165,32,152,165]},{"a":43744,"t":"byte","b":[32,165,165,131,2,131,6,76]},{"a":43752,"t":"byte","b":[165,165]},{"a":43754,"l":"ball_release","c":"Release the held ball: ball 0's bat cooldown $02AA = 5, $0228 = 0, launch sound on three voices ($272F).","t":"code","b":[169,5],"m":"lda","o":"#$05","x":[43569,43643,43648]},{"a":43756,"t":"code","b":[141,170,2],"m":"sta","oa":682,"o":"ball_cooldown"},{"a":43759,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43761,"t":"code","b":[141,40,2],"m":"sta","oa":552,"o":"ball_held"},{"a":43764,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":43766,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43768,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":43770,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":43773,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":43775,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":43777,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":43779,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":43782,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":43784,"t":"code","b":[169,62],"m":"lda","o":"#$3E"},{"a":43786,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":43788,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":43791,"t":"code","b":[96],"m":"rts"},{"a":43792,"l":"drums_ending","c":"Drum track of the ending (start_drums from $968C): sample $87, then repeats of $85, $82, $83, $84 and four bars built from drum_bar ($98F9), looping from $AB12. Decoded: work/agent12/drums.txt.","t":"byte","b":[135,1,73,7,133,24,64,133]},{"a":43800,"t":"byte","b":[12,133,6,133,6,73,6,133]},{"a":43808,"t":"byte","b":[2,133,22,64,130,2,130,22]},{"a":43816,"t":"byte","b":[73,2,131,2,131,4,64,73]},{"a":43824,"t":"byte","b":[2,132,2,132,4,64,73,4]},{"a":43832,"t":"byte","b":[73,3,32,249,152,130,6,131]},{"a":43840,"t":"byte","b":[6,134,6,134,6,64,32,249]},{"a":43848,"t":"byte","b":[152,130,6,131,6,130,6,130]},{"a":43856,"t":"byte","b":[6,64,76,18,171]},{"a":43861,"l":"silver_shine","c":"Every 4th frame ($0225): step the shine of each hard brick (silver or gold, $0456 down to 1) whose flag $0300,X is $80: both characters at its screen address ($03AA,X) go down by one (left) / left + 4 (right); when the right one reaches $86 (silver) or $8E (gold) the shine is over: flag = 1 and $0355,X - 1 unless negative (gold has $80). The shine starts at $B044 when such a brick is hit, and for every hard brick at the start of a round ($F4F1), whose count is therefore decremented once then.","t":"code","b":[173,37,2],"m":"lda","oa":549,"o":"shine_divider","x":[38195,38279]},{"a":43864,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":43866,"t":"code","b":[240,7],"m":"beq","oa":43875,"o":"b_AB63"},{"a":43868,"t":"code","b":[24],"m":"clc"},{"a":43869,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":43871,"t":"code","b":[141,37,2],"m":"sta","oa":549,"o":"shine_divider"},{"a":43874,"t":"code","b":[96],"m":"rts"},{"a":43875,"l":"b_AB63","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[43866]},{"a":43877,"t":"code","b":[141,37,2],"m":"sta","oa":549,"o":"shine_divider"},{"a":43880,"t":"code","b":[174,86,4],"m":"ldx","oa":1110,"o":"metal_count"},{"a":43883,"t":"code","b":[240,46],"m":"beq","oa":43931,"o":"r_AB9B"},{"a":43885,"l":"b_AB6D","t":"code","b":[189,0,3],"m":"lda","oa":768,"o":"metal_state,x","x":[43929]},{"a":43888,"t":"code","b":[240,38],"m":"beq","oa":43928,"o":"b_AB98"},{"a":43890,"t":"code","b":[16,36],"m":"bpl","oa":43928,"o":"b_AB98"},{"a":43892,"t":"code","b":[138],"m":"txa"},{"a":43893,"t":"code","b":[10],"m":"asl","o":"a"},{"a":43894,"t":"code","b":[168],"m":"tay"},{"a":43895,"t":"code","b":[185,170,3],"m":"lda","oa":938,"o":"metal_pos,y"},{"a":43898,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":43900,"t":"code","b":[185,171,3],"m":"lda","oa":939,"o":"metal_pos_hi,y"},{"a":43903,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":43905,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":43907,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":43909,"t":"code","b":[56],"m":"sec"},{"a":43910,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":43912,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":43914,"t":"code","b":[200],"m":"iny"},{"a":43915,"t":"code","b":[24],"m":"clc"},{"a":43916,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":43918,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":43920,"t":"code","b":[201,142],"m":"cmp","o":"#$8E"},{"a":43922,"t":"code","b":[240,8],"m":"beq","oa":43932,"o":"b_AB9C"},{"a":43924,"t":"code","b":[201,134],"m":"cmp","o":"#$86"},{"a":43926,"t":"code","b":[240,4],"m":"beq","oa":43932,"o":"b_AB9C"},{"a":43928,"l":"b_AB98","t":"code","b":[202],"m":"dex","x":[43888,43890,43940,43945]},{"a":43929,"t":"code","b":[208,210],"m":"bne","oa":43885,"o":"b_AB6D"},{"a":43931,"l":"r_AB9B","t":"code","b":[96],"m":"rts","x":[43883]},{"a":43932,"l":"b_AB9C","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[43922,43926]},{"a":43934,"t":"code","b":[157,0,3],"m":"sta","oa":768,"o":"metal_state,x"},{"a":43937,"t":"code","b":[189,85,3],"m":"lda","oa":853,"o":"metal_hits,x"},{"a":43940,"t":"code","b":[48,242],"m":"bmi","oa":43928,"o":"b_AB98"},{"a":43942,"t":"code","b":[222,85,3],"m":"dec","oa":853,"o":"metal_hits,x"},{"a":43945,"t":"code","b":[76,152,171],"m":"jmp","oa":43928,"o":"b_AB98"},{"a":43948,"l":"b_ABAC","t":"code","b":[202],"m":"dex","x":[43965]},{"a":43949,"t":"code","b":[16,11],"m":"bpl","oa":43962,"o":"b_ABBA"},{"a":43951,"l":"r_ABAF","t":"code","b":[96],"m":"rts","x":[43960]},{"a":43952,"l":"b_ABB0","t":"code","b":[76,199,172],"m":"jmp","oa":44231,"o":"j_ACC7","x":[43976,43983,44005]},{"a":43955,"l":"bat_collision","c":"Balls against the Vaus (bat), once per ball step from move_balls; nothing while a ball is held. Hit when ball Y is Vaus Y + $0A..$0C and ball X within centre - 2*width .. centre + width + $13 ($0206, $020A). With the bat cooldown $02AA,X at 0: d = centre + 6 - ball X, halved when the Vaus is enlarged. Left side (d >= 0): ball goes left; d < 4 angle $FF/$F0, 4-7 $FF/$40, 8+ $80/$FF ($029B/$029E). Right side ($AD02, |d|): ball goes right; |d| < 4 $FF/$40, 4-7 $FF/$F0, 8+ $80/$FF, so the two inner zones are swapped between the sides. Reverse the vertical direction, offset $0221 = centre - ball X, cooldown 5. With catch on ($022A) and no priority sound: hold the ball ($0228 = 1, $0201 = 1) with its sound; else the bounce sound.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[44511]},{"a":43957,"t":"code","b":[173,40,2],"m":"lda","oa":552,"o":"ball_held"},{"a":43960,"t":"code","b":[208,245],"m":"bne","oa":43951,"o":"r_ABAF"},{"a":43962,"l":"b_ABBA","t":"code","b":[189,167,2],"m":"lda","oa":679,"o":"ball_active,x","x":[43949,44242]},{"a":43965,"t":"code","b":[240,237],"m":"beq","oa":43948,"o":"b_ABAC"},{"a":43967,"t":"code","b":[173,45,148],"m":"lda","oa":37933,"o":"obj_y"},{"a":43970,"t":"code","b":[24],"m":"clc"},{"a":43971,"t":"code","b":[105,12],"m":"adc","o":"#$0C"},{"a":43973,"t":"code","b":[221,49,148],"m":"cmp","oa":37937,"o":"ball_y,x"},{"a":43976,"t":"code","b":[144,230],"m":"bcc","oa":43952,"o":"b_ABB0"},{"a":43978,"t":"code","b":[233,3],"m":"sbc","o":"#$03"},{"a":43980,"t":"code","b":[221,49,148],"m":"cmp","oa":37937,"o":"ball_y,x"},{"a":43983,"t":"code","b":[176,223],"m":"bcs","oa":43952,"o":"b_ABB0"},{"a":43985,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":43988,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":43990,"t":"code","b":[141,12,2],"m":"sta","oa":524,"o":"width_tmp"},{"a":43993,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":43996,"t":"code","b":[24],"m":"clc"},{"a":43997,"t":"code","b":[105,17],"m":"adc","o":"#$11"},{"a":43999,"t":"code","b":[109,12,2],"m":"adc","oa":524,"o":"width_tmp"},{"a":44002,"t":"code","b":[221,73,148],"m":"cmp","oa":37961,"o":"ball_x,x"},{"a":44005,"t":"code","b":[144,201],"m":"bcc","oa":43952,"o":"b_ABB0"},{"a":44007,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":44010,"t":"code","b":[10],"m":"asl","o":"a"},{"a":44011,"t":"code","b":[141,12,2],"m":"sta","oa":524,"o":"width_tmp"},{"a":44014,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":44017,"t":"code","b":[56],"m":"sec"},{"a":44018,"t":"code","b":[237,12,2],"m":"sbc","oa":524,"o":"width_tmp"},{"a":44021,"t":"code","b":[221,73,148],"m":"cmp","oa":37961,"o":"ball_x,x"},{"a":44024,"t":"code","b":[176,45],"m":"bcs","oa":44071,"o":"b_AC27"},{"a":44026,"t":"code","b":[189,170,2],"m":"lda","oa":682,"o":"ball_cooldown,x"},{"a":44029,"t":"code","b":[208,40],"m":"bne","oa":44071,"o":"b_AC27"},{"a":44031,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":44034,"t":"code","b":[105,6],"m":"adc","o":"#$06"},{"a":44036,"t":"code","b":[56],"m":"sec"},{"a":44037,"t":"code","b":[253,73,148],"m":"sbc","oa":37961,"o":"ball_x,x"},{"a":44040,"t":"code","b":[48,32],"m":"bmi","oa":44074,"o":"b_AC2A"},{"a":44042,"t":"code","b":[172,10,2],"m":"ldy","oa":522,"o":"vaus_stretch"},{"a":44045,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":44047,"t":"code","b":[240,1],"m":"beq","oa":44050,"o":"b_AC12"},{"a":44049,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44050,"l":"b_AC12","t":"code","b":[201,8],"m":"cmp","o":"#$08","x":[44047]},{"a":44052,"t":"code","b":[176,36],"m":"bcs","oa":44090,"o":"b_AC3A"},{"a":44054,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":44056,"t":"code","b":[144,19],"m":"bcc","oa":44077,"o":"b_AC2D"},{"a":44058,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":44060,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":44063,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":44065,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44068,"t":"code","b":[76,68,172],"m":"jmp","oa":44100,"o":"j_AC44"},{"a":44071,"l":"b_AC27","t":"code","b":[76,199,172],"m":"jmp","oa":44231,"o":"j_ACC7","x":[44024,44029]},{"a":44074,"l":"b_AC2A","t":"code","b":[76,2,173],"m":"jmp","oa":44290,"o":"j_AD02","x":[44040]},{"a":44077,"l":"b_AC2D","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[44056]},{"a":44079,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":44082,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":44084,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44087,"t":"code","b":[76,68,172],"m":"jmp","oa":44100,"o":"j_AC44"},{"a":44090,"l":"b_AC3A","t":"code","b":[169,128],"m":"lda","o":"#$80","x":[44052]},{"a":44092,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":44095,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":44097,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44100,"l":"j_AC44","t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x","x":[44068,44087]},{"a":44103,"t":"code","b":[48,8],"m":"bmi","oa":44113,"o":"b_AC51"},{"a":44105,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":44107,"t":"code","b":[24],"m":"clc"},{"a":44108,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44110,"t":"code","b":[157,152,2],"m":"sta","oa":664,"o":"ball_dx,x"},{"a":44113,"l":"b_AC51","t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x","x":[44103,44360]},{"a":44116,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":44118,"t":"code","b":[24],"m":"clc"},{"a":44119,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44121,"t":"code","b":[157,149,2],"m":"sta","oa":661,"o":"ball_dy,x"},{"a":44124,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":44127,"t":"code","b":[56],"m":"sec"},{"a":44128,"t":"code","b":[253,73,148],"m":"sbc","oa":37961,"o":"ball_x,x"},{"a":44131,"t":"code","b":[141,33,2],"m":"sta","oa":545,"o":"catch_offset"},{"a":44134,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44136,"t":"code","b":[157,161,2],"m":"sta","oa":673,"o":"ball_acc,x"},{"a":44139,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":44141,"t":"code","b":[157,170,2],"m":"sta","oa":682,"o":"ball_cooldown,x"},{"a":44144,"t":"code","b":[173,42,2],"m":"lda","oa":554,"o":"catch_power"},{"a":44147,"t":"code","b":[240,46],"m":"beq","oa":44195,"o":"b_ACA3"},{"a":44149,"t":"code","b":[173,22,2],"m":"lda","oa":534,"o":"tune_hold"},{"a":44152,"t":"code","b":[208,41],"m":"bne","oa":44195,"o":"b_ACA3"},{"a":44154,"t":"code","b":[138],"m":"txa"},{"a":44155,"t":"code","b":[72],"m":"pha"},{"a":44156,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":44158,"t":"code","b":[169,139],"m":"lda","o":"#$8B"},{"a":44160,"t":"code","b":[160,34],"m":"ldy","o":"#$22"},{"a":44162,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":44165,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":44167,"t":"code","b":[169,170],"m":"lda","o":"#$AA"},{"a":44169,"t":"code","b":[160,34],"m":"ldy","o":"#$22"},{"a":44171,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":44174,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":44176,"t":"code","b":[169,201],"m":"lda","o":"#$C9"},{"a":44178,"t":"code","b":[160,34],"m":"ldy","o":"#$22"},{"a":44180,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":44183,"t":"code","b":[104],"m":"pla"},{"a":44184,"t":"code","b":[170],"m":"tax"},{"a":44185,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":44187,"t":"code","b":[141,40,2],"m":"sta","oa":552,"o":"ball_held"},{"a":44190,"t":"code","b":[141,1,2],"m":"sta","oa":513,"o":"frame_counter"},{"a":44193,"t":"code","b":[208,36],"m":"bne","oa":44231,"o":"j_ACC7"},{"a":44195,"l":"b_ACA3","t":"code","b":[173,22,2],"m":"lda","oa":534,"o":"tune_hold","x":[44147,44152]},{"a":44198,"t":"code","b":[208,31],"m":"bne","oa":44231,"o":"j_ACC7"},{"a":44200,"t":"code","b":[138],"m":"txa"},{"a":44201,"t":"code","b":[72],"m":"pha"},{"a":44202,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":44204,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44206,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":44208,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":44211,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":44213,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":44215,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":44217,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":44220,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":44222,"t":"code","b":[169,62],"m":"lda","o":"#$3E"},{"a":44224,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":44226,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":44229,"t":"code","b":[104],"m":"pla"},{"a":44230,"t":"code","b":[170],"m":"tax"},{"a":44231,"l":"j_ACC7","t":"code","b":[189,170,2],"m":"lda","oa":682,"o":"ball_cooldown,x","x":[43952,44071,44193,44198]},{"a":44234,"t":"code","b":[240,3],"m":"beq","oa":44239,"o":"b_ACCF"},{"a":44236,"t":"code","b":[222,170,2],"m":"dec","oa":682,"o":"ball_cooldown,x"},{"a":44239,"l":"b_ACCF","t":"code","b":[202],"m":"dex","x":[44234]},{"a":44240,"t":"code","b":[48,3],"m":"bmi","oa":44245,"o":"r_ACD5"},{"a":44242,"t":"code","b":[76,186,171],"m":"jmp","oa":43962,"o":"b_ABBA"},{"a":44245,"l":"r_ACD5","t":"code","b":[96],"m":"rts","x":[44240]},{"a":44246,"l":"drum_sample_86","c":"Drum sample $86: 6 x 20 steps; each waits a delay from $FD75,Y and writes the low nibble of a running sum ($DE += $98) to the volume register (STA $D418 made by adding $40 to the operand's high byte at $ACF5, restored to $9418 at the end).","t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":44248,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":44250,"t":"code","b":[24],"m":"clc"},{"a":44251,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":44253,"t":"code","b":[141,245,172],"m":"sta","oa":44277,"o":"drum86_store_hi"},{"a":44256,"l":"b_ACE0","t":"code","b":[162,20],"m":"ldx","o":"#$14","x":[44282]},{"a":44258,"l":"b_ACE2","t":"code","b":[185,117,253],"m":"lda","oa":64885,"o":"table_fd75,y","x":[44279]},{"a":44261,"t":"code","b":[56],"m":"sec"},{"a":44262,"l":"b_ACE6","t":"code","b":[233,1],"m":"sbc","o":"#$01","x":[44264]},{"a":44264,"t":"code","b":[208,252],"m":"bne","oa":44262,"o":"b_ACE6"},{"a":44266,"t":"code","b":[165,222],"m":"lda","oa":222,"o":"noise_acc"},{"a":44268,"t":"code","b":[24],"m":"clc"},{"a":44269,"t":"code","b":[105,152],"m":"adc","o":"#$98"},{"a":44271,"t":"code","b":[133,222],"m":"sta","oa":222,"o":"noise_acc"},{"a":44273,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":44275,"t":"code","b":[141,24,148],"m":"sta","oa":37912,"o":"d418_decoy"},{"a":44277,"t":"note","l":"drum86_store_hi","c":"High byte of the STA at $ACF3: $94 as assembled (STA $9418, harmless), $D4 while drum_sample_86 runs (STA $D418).","note":"inside the item at $ACF3","x":[44253,44286]},{"a":44278,"t":"code","b":[202],"m":"dex"},{"a":44279,"t":"code","b":[208,233],"m":"bne","oa":44258,"o":"b_ACE2"},{"a":44281,"t":"code","b":[136],"m":"dey"},{"a":44282,"t":"code","b":[16,228],"m":"bpl","oa":44256,"o":"b_ACE0"},{"a":44284,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":44286,"t":"code","b":[141,245,172],"m":"sta","oa":44277,"o":"drum86_store_hi"},{"a":44289,"t":"code","b":[96],"m":"rts"},{"a":44290,"l":"j_AD02","t":"code","b":[73,255],"m":"eor","o":"#$FF","x":[44074]},{"a":44292,"t":"code","b":[24],"m":"clc"},{"a":44293,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44295,"t":"code","b":[172,10,2],"m":"ldy","oa":522,"o":"vaus_stretch"},{"a":44298,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":44300,"t":"code","b":[240,1],"m":"beq","oa":44303,"o":"b_AD0F"},{"a":44302,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44303,"l":"b_AD0F","t":"code","b":[201,8],"m":"cmp","o":"#$08","x":[44300]},{"a":44305,"t":"code","b":[176,30],"m":"bcs","oa":44337,"o":"b_AD31"},{"a":44307,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":44309,"t":"code","b":[176,13],"m":"bcs","oa":44324,"o":"b_AD24"},{"a":44311,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":44313,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":44316,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":44318,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44321,"t":"code","b":[76,59,173],"m":"jmp","oa":44347,"o":"j_AD3B"},{"a":44324,"l":"b_AD24","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[44309]},{"a":44326,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":44329,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":44331,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44334,"t":"code","b":[76,59,173],"m":"jmp","oa":44347,"o":"j_AD3B"},{"a":44337,"l":"b_AD31","t":"code","b":[169,128],"m":"lda","o":"#$80","x":[44305]},{"a":44339,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":44342,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":44344,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44347,"l":"j_AD3B","t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x","x":[44321,44334]},{"a":44350,"t":"code","b":[16,8],"m":"bpl","oa":44360,"o":"b_AD48"},{"a":44352,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":44354,"t":"code","b":[24],"m":"clc"},{"a":44355,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44357,"t":"code","b":[157,152,2],"m":"sta","oa":664,"o":"ball_dx,x"},{"a":44360,"l":"b_AD48","t":"code","b":[76,81,172],"m":"jmp","oa":44113,"o":"b_AC51","x":[44350]},{"a":44363,"l":"vaus_resize","c":"Enlarge or shrink the Vaus: $0207 positive: width $020A + 1 a frame up to $0C (not while the laser shape changes, $0223); $0207 negative: width - 1 down to 4. $0207 = 0 when done.","t":"code","b":[173,7,2],"m":"lda","oa":519,"o":"vaus_resize_state","x":[38231,38318,38440]},{"a":44366,"t":"code","b":[240,24],"m":"beq","oa":44392,"o":"r_AD68"},{"a":44368,"t":"code","b":[16,23],"m":"bpl","oa":44393,"o":"b_AD69"},{"a":44370,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":44373,"t":"code","b":[56],"m":"sec"},{"a":44374,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":44376,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":44378,"t":"code","b":[144,7],"m":"bcc","oa":44387,"o":"b_AD63"},{"a":44380,"t":"code","b":[141,10,2],"m":"sta","oa":522,"o":"vaus_stretch"},{"a":44383,"t":"code","b":[238,7,2],"m":"inc","oa":519,"o":"vaus_resize_state"},{"a":44386,"t":"code","b":[96],"m":"rts"},{"a":44387,"l":"b_AD63","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[44378]},{"a":44389,"t":"code","b":[141,7,2],"m":"sta","oa":519,"o":"vaus_resize_state"},{"a":44392,"l":"r_AD68","t":"code","b":[96],"m":"rts","x":[44366,44396]},{"a":44393,"l":"b_AD69","t":"code","b":[173,35,2],"m":"lda","oa":547,"o":"laser_morph","x":[44368]},{"a":44396,"t":"code","b":[208,250],"m":"bne","oa":44392,"o":"r_AD68"},{"a":44398,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":44401,"t":"code","b":[24],"m":"clc"},{"a":44402,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44404,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":44406,"t":"code","b":[176,7],"m":"bcs","oa":44415,"o":"b_AD7F"},{"a":44408,"t":"code","b":[141,10,2],"m":"sta","oa":522,"o":"vaus_stretch"},{"a":44411,"t":"code","b":[238,7,2],"m":"inc","oa":519,"o":"vaus_resize_state"},{"a":44414,"t":"code","b":[96],"m":"rts"},{"a":44415,"l":"b_AD7F","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[44406]},{"a":44417,"t":"code","b":[141,7,2],"m":"sta","oa":519,"o":"vaus_resize_state"},{"a":44420,"t":"code","b":[96],"m":"rts"},{"a":44421,"l":"laser_off_shape","c":"While $0223 is non-zero: every 2nd frame set the Vaus pointers from laser_off_frames[$0223] and count down: $73 $75 $77 $79 $77 $75 $73 then $40, the normal Vaus.","t":"code","b":[172,35,2],"m":"ldy","oa":547,"o":"laser_morph","x":[38228,38315,38413]},{"a":44424,"t":"code","b":[240,31],"m":"beq","oa":44457,"o":"r_ADA9"},{"a":44426,"t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter"},{"a":44429,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":44431,"t":"code","b":[205,32,2],"m":"cmp","oa":544,"o":"anim_tick"},{"a":44434,"t":"code","b":[240,21],"m":"beq","oa":44457,"o":"r_ADA9"},{"a":44436,"t":"code","b":[141,32,2],"m":"sta","oa":544,"o":"anim_tick"},{"a":44439,"t":"code","b":[185,170,173],"m":"lda","oa":44458,"o":"laser_off_frames,y"},{"a":44442,"t":"code","b":[240,13],"m":"beq","oa":44457,"o":"r_ADA9"},{"a":44444,"t":"code","b":[141,37,248],"m":"sta","oa":63525,"o":"slot_shapes"},{"a":44447,"t":"code","b":[24],"m":"clc"},{"a":44448,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44450,"t":"code","b":[141,38,248],"m":"sta","oa":63526,"o":"slot_shape_1"},{"a":44453,"t":"code","b":[136],"m":"dey"},{"a":44454,"t":"code","b":[140,35,2],"m":"sty","oa":547,"o":"laser_morph"},{"a":44457,"l":"r_ADA9","t":"code","b":[96],"m":"rts","x":[44424,44434,44442]},{"a":44458,"l":"laser_off_frames","c":"Left-half pointers for laser_off_shape, read from the end: 0, $40, $73, $75, $77, $79, $77, $75, $73.","t":"byte","b":[0,64,115,117,119,121,119,117],"x":[44439]},{"a":44466,"t":"byte","b":[115]},{"a":44467,"l":"move_balls","c":"The balls' movement, unless one is held ($0228). Steps this frame = speed $023A + carry of the fraction ($0248 += $023B), at most $0B; for each step move every live ball one step ($B334), test it against bricks (ball_vs_bricks), then all against the Vaus (bat_collision). Then the speed floor: if $0241 / 4 (frames since the life began / 1024) is above $023A and below $0C, $023A takes it and the fraction $023B restarts.","t":"code","b":[173,40,2],"m":"lda","oa":552,"o":"ball_held","x":[38201,38288,38407]},{"a":44470,"t":"code","b":[208,69],"m":"bne","oa":44541,"o":"r_ADFD"},{"a":44472,"t":"code","b":[173,72,2],"m":"lda","oa":584,"o":"speed_acc"},{"a":44475,"t":"code","b":[109,59,2],"m":"adc","oa":571,"o":"ball_speed_frac"},{"a":44478,"t":"code","b":[141,72,2],"m":"sta","oa":584,"o":"speed_acc"},{"a":44481,"t":"code","b":[173,58,2],"m":"lda","oa":570,"o":"ball_speed"},{"a":44484,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":44486,"t":"code","b":[201,12],"m":"cmp","o":"#$0C"},{"a":44488,"t":"code","b":[144,2],"m":"bcc","oa":44492,"o":"b_ADCC"},{"a":44490,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":44492,"l":"b_ADCC","t":"code","b":[141,75,2],"m":"sta","oa":587,"o":"ball_steps","x":[44488]},{"a":44495,"l":"b_ADCF","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[44517]},{"a":44497,"l":"b_ADD1","t":"code","b":[189,167,2],"m":"lda","oa":679,"o":"ball_active,x","x":[44509]},{"a":44500,"t":"code","b":[240,6],"m":"beq","oa":44508,"o":"b_ADDC"},{"a":44502,"t":"code","b":[32,52,179],"m":"jsr","oa":45876,"o":"move_ball"},{"a":44505,"t":"code","b":[32,1,174],"m":"jsr","oa":44545,"o":"ball_vs_bricks"},{"a":44508,"l":"b_ADDC","t":"code","b":[202],"m":"dex","x":[44500]},{"a":44509,"t":"code","b":[16,242],"m":"bpl","oa":44497,"o":"b_ADD1"},{"a":44511,"t":"code","b":[32,179,171],"m":"jsr","oa":43955,"o":"bat_collision"},{"a":44514,"t":"code","b":[206,75,2],"m":"dec","oa":587,"o":"ball_steps"},{"a":44517,"t":"code","b":[208,232],"m":"bne","oa":44495,"o":"b_ADCF"},{"a":44519,"t":"code","b":[173,65,2],"m":"lda","oa":577,"o":"frame_counter_hi"},{"a":44522,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44523,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44524,"t":"code","b":[205,58,2],"m":"cmp","oa":570,"o":"ball_speed"},{"a":44527,"t":"code","b":[144,12],"m":"bcc","oa":44541,"o":"r_ADFD"},{"a":44529,"t":"code","b":[201,12],"m":"cmp","o":"#$0C"},{"a":44531,"t":"code","b":[176,8],"m":"bcs","oa":44541,"o":"r_ADFD"},{"a":44533,"t":"code","b":[141,58,2],"m":"sta","oa":570,"o":"ball_speed"},{"a":44536,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44538,"t":"code","b":[141,59,2],"m":"sta","oa":571,"o":"ball_speed_frac"},{"a":44541,"l":"r_ADFD","t":"code","b":[96],"m":"rts","x":[44470,44527,44531,44548,44555,44560]},{"a":44542,"l":"b_ADFE","t":"code","b":[76,61,175],"m":"jmp","oa":44861,"o":"ball_hit_above","x":[44608]},{"a":44545,"l":"ball_vs_bricks","c":"Ball X against the bricks, for Y $3B-$BF: by its directions look at the cell ahead vertically (row from (Y-$3B)/8 moving up, (Y-$38)/8 moving down; column 2*((X-$1E)/16) + 1) and horizontally ((X-$18)/8 moving left, (X-$24)/8 + 2 moving right); a character $80 or more is a brick or wall. On a hit: reverse that direction, count the bounce ($02AD,X; at 50 bounce_reangle), put the cell in $0218/$0219 (cell_above / cell_below / cell_left / cell_right), break it ($B108) and add to the speed fraction (speed_up).","t":"code","b":[189,167,2],"m":"lda","oa":679,"o":"ball_active,x","x":[44505]},{"a":44548,"t":"code","b":[240,247],"m":"beq","oa":44541,"o":"r_ADFD"},{"a":44550,"t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x"},{"a":44553,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":44555,"t":"code","b":[176,240],"m":"bcs","oa":44541,"o":"r_ADFD"},{"a":44557,"t":"code","b":[56],"m":"sec"},{"a":44558,"t":"code","b":[233,59],"m":"sbc","o":"#$3B"},{"a":44560,"t":"code","b":[144,235],"m":"bcc","oa":44541,"o":"r_ADFD"},{"a":44562,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44563,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44564,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":44566,"t":"code","b":[168],"m":"tay"},{"a":44567,"t":"code","b":[185,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,y"},{"a":44570,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":44572,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":44574,"t":"code","b":[185,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,y"},{"a":44577,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":44579,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44581,"t":"code","b":[24],"m":"clc"},{"a":44582,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":44584,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":44586,"t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x"},{"a":44589,"t":"code","b":[16,19],"m":"bpl","oa":44610,"o":"b_AE42"},{"a":44591,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":44594,"t":"code","b":[56],"m":"sec"},{"a":44595,"t":"code","b":[233,30],"m":"sbc","o":"#$1E"},{"a":44597,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":44599,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44600,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44601,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44602,"t":"code","b":[24],"m":"clc"},{"a":44603,"t":"code","b":[105,41],"m":"adc","o":"#$29"},{"a":44605,"t":"code","b":[168],"m":"tay"},{"a":44606,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":44608,"t":"code","b":[48,188],"m":"bmi","oa":44542,"o":"b_ADFE"},{"a":44610,"l":"b_AE42","t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x","x":[44589]},{"a":44613,"t":"code","b":[16,20],"m":"bpl","oa":44635,"o":"b_AE5B"},{"a":44615,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":44618,"t":"code","b":[56],"m":"sec"},{"a":44619,"t":"code","b":[233,24],"m":"sbc","o":"#$18"},{"a":44621,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44622,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44623,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44624,"t":"code","b":[24],"m":"clc"},{"a":44625,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":44627,"t":"code","b":[168],"m":"tay"},{"a":44628,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":44630,"t":"code","b":[16,3],"m":"bpl","oa":44635,"o":"b_AE5B"},{"a":44632,"t":"code","b":[76,171,174],"m":"jmp","oa":44715,"o":"ball_hit_left"},{"a":44635,"l":"b_AE5B","t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x","x":[44613,44630]},{"a":44638,"t":"code","b":[48,17],"m":"bmi","oa":44657,"o":"b_AE71"},{"a":44640,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":44643,"t":"code","b":[56],"m":"sec"},{"a":44644,"t":"code","b":[233,36],"m":"sbc","o":"#$24"},{"a":44646,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44647,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44648,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44649,"t":"code","b":[24],"m":"clc"},{"a":44650,"t":"code","b":[105,42],"m":"adc","o":"#$2A"},{"a":44652,"t":"code","b":[168],"m":"tay"},{"a":44653,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":44655,"t":"code","b":[48,92],"m":"bmi","oa":44749,"o":"ball_hit_right"},{"a":44657,"l":"b_AE71","t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x","x":[44638]},{"a":44660,"t":"code","b":[48,52],"m":"bmi","oa":44714,"o":"r_AEAA"},{"a":44662,"t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x"},{"a":44665,"t":"code","b":[56],"m":"sec"},{"a":44666,"t":"code","b":[233,56],"m":"sbc","o":"#$38"},{"a":44668,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44669,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44670,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":44672,"t":"code","b":[168],"m":"tay"},{"a":44673,"t":"code","b":[185,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,y"},{"a":44676,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":44678,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":44680,"t":"code","b":[185,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,y"},{"a":44683,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":44685,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44687,"t":"code","b":[24],"m":"clc"},{"a":44688,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":44690,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":44692,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":44695,"t":"code","b":[56],"m":"sec"},{"a":44696,"t":"code","b":[233,30],"m":"sbc","o":"#$1E"},{"a":44698,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":44700,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44701,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44702,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44703,"t":"code","b":[24],"m":"clc"},{"a":44704,"t":"code","b":[105,41],"m":"adc","o":"#$29"},{"a":44706,"t":"code","b":[168],"m":"tay"},{"a":44707,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":44709,"t":"code","b":[16,3],"m":"bpl","oa":44714,"o":"r_AEAA"},{"a":44711,"t":"code","b":[76,27,175],"m":"jmp","oa":44827,"o":"ball_hit_below"},{"a":44714,"l":"r_AEAA","t":"code","b":[96],"m":"rts","x":[44660,44709]},{"a":44715,"l":"ball_hit_left","c":"Brick to the left: reverse the horizontal direction, count, cell_left, $B108, speed_up.","t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x","x":[44632]},{"a":44718,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":44720,"t":"code","b":[24],"m":"clc"},{"a":44721,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44723,"t":"code","b":[157,152,2],"m":"sta","oa":664,"o":"ball_dx,x"},{"a":44726,"t":"code","b":[254,173,2],"m":"inc","oa":685,"o":"ball_loop_count,x"},{"a":44729,"t":"code","b":[189,173,2],"m":"lda","oa":685,"o":"ball_loop_count,x"},{"a":44732,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":44734,"t":"code","b":[144,3],"m":"bcc","oa":44739,"o":"b_AEC3"},{"a":44736,"t":"code","b":[32,107,175],"m":"jsr","oa":44907,"o":"bounce_reangle"},{"a":44739,"l":"b_AEC3","t":"code","b":[32,218,175],"m":"jsr","oa":45018,"o":"cell_left","x":[44734]},{"a":44742,"t":"code","b":[32,8,177],"m":"jsr","oa":45320,"o":"brick_hit"},{"a":44745,"t":"code","b":[32,95,175],"m":"jsr","oa":44895,"o":"speed_up"},{"a":44748,"t":"code","b":[96],"m":"rts"},{"a":44749,"l":"ball_hit_right","c":"Brick to the right: reverse the horizontal direction, count, cell_right, $B108, speed_up.","t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x","x":[44655]},{"a":44752,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":44754,"t":"code","b":[24],"m":"clc"},{"a":44755,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44757,"t":"code","b":[157,152,2],"m":"sta","oa":664,"o":"ball_dx,x"},{"a":44760,"t":"code","b":[254,173,2],"m":"inc","oa":685,"o":"ball_loop_count,x"},{"a":44763,"t":"code","b":[189,173,2],"m":"lda","oa":685,"o":"ball_loop_count,x"},{"a":44766,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":44768,"t":"code","b":[144,3],"m":"bcc","oa":44773,"o":"b_AEE5"},{"a":44770,"t":"code","b":[32,107,175],"m":"jsr","oa":44907,"o":"bounce_reangle"},{"a":44773,"l":"b_AEE5","t":"code","b":[32,245,175],"m":"jsr","oa":45045,"o":"cell_right","x":[44768]},{"a":44776,"t":"code","b":[32,8,177],"m":"jsr","oa":45320,"o":"brick_hit"},{"a":44779,"t":"code","b":[32,95,175],"m":"jsr","oa":44895,"o":"speed_up"},{"a":44782,"t":"code","b":[96],"m":"rts"},{"a":44783,"l":"drum_sample_83","c":"Drum sample $83: 6 x 25 steps; each waits a delay from $F7E5,Y and writes the low nibble of $DE += $65 to the volume register through the STA at $AF0C, whose high byte $AF0E is $D4 during the sample and $94 otherwise.","t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":44785,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":44787,"t":"code","b":[24],"m":"clc"},{"a":44788,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":44790,"t":"code","b":[141,14,175],"m":"sta","oa":44814,"o":"drum83_store_hi"},{"a":44793,"l":"b_AEF9","t":"code","b":[162,25],"m":"ldx","o":"#$19","x":[44819]},{"a":44795,"l":"b_AEFB","t":"code","b":[185,229,247],"m":"lda","oa":63461,"o":"bit_masks_f7e5,y","x":[44816]},{"a":44798,"l":"b_AEFE","t":"code","b":[56],"m":"sec","x":[44801]},{"a":44799,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":44801,"t":"code","b":[208,251],"m":"bne","oa":44798,"o":"b_AEFE"},{"a":44803,"t":"code","b":[165,222],"m":"lda","oa":222,"o":"noise_acc"},{"a":44805,"t":"code","b":[24],"m":"clc"},{"a":44806,"t":"code","b":[105,101],"m":"adc","o":"#$65"},{"a":44808,"t":"code","b":[133,222],"m":"sta","oa":222,"o":"noise_acc"},{"a":44810,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":44812,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":44814,"t":"note","l":"drum83_store_hi","c":"High byte of the STA at $AF0C: assembled as $D4 (STA $D418), set to $D4 at $AEF6 and back to $94 (STA $9418) at $AF17.","note":"inside the item at $AF0C","x":[44790,44823]},{"a":44815,"t":"code","b":[202],"m":"dex"},{"a":44816,"t":"code","b":[208,233],"m":"bne","oa":44795,"o":"b_AEFB"},{"a":44818,"t":"code","b":[136],"m":"dey"},{"a":44819,"t":"code","b":[16,228],"m":"bpl","oa":44793,"o":"b_AEF9"},{"a":44821,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":44823,"t":"code","b":[141,14,175],"m":"sta","oa":44814,"o":"drum83_store_hi"},{"a":44826,"t":"code","b":[96],"m":"rts"},{"a":44827,"l":"ball_hit_below","c":"Brick below: reverse the vertical direction, count, cell_below, $B108, speed_up.","t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x","x":[44711]},{"a":44830,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":44832,"t":"code","b":[24],"m":"clc"},{"a":44833,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44835,"t":"code","b":[157,149,2],"m":"sta","oa":661,"o":"ball_dy,x"},{"a":44838,"t":"code","b":[254,173,2],"m":"inc","oa":685,"o":"ball_loop_count,x"},{"a":44841,"t":"code","b":[189,173,2],"m":"lda","oa":685,"o":"ball_loop_count,x"},{"a":44844,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":44846,"t":"code","b":[144,3],"m":"bcc","oa":44851,"o":"b_AF33"},{"a":44848,"t":"code","b":[32,107,175],"m":"jsr","oa":44907,"o":"bounce_reangle"},{"a":44851,"l":"b_AF33","t":"code","b":[32,191,175],"m":"jsr","oa":44991,"o":"cell_below","x":[44846]},{"a":44854,"t":"code","b":[32,8,177],"m":"jsr","oa":45320,"o":"brick_hit"},{"a":44857,"t":"code","b":[32,95,175],"m":"jsr","oa":44895,"o":"speed_up"},{"a":44860,"t":"code","b":[96],"m":"rts"},{"a":44861,"l":"ball_hit_above","c":"Brick above: reverse the vertical direction, count, cell_above, speed_up, $B108.","t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x","x":[44542]},{"a":44864,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":44866,"t":"code","b":[24],"m":"clc"},{"a":44867,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44869,"t":"code","b":[157,149,2],"m":"sta","oa":661,"o":"ball_dy,x"},{"a":44872,"t":"code","b":[254,173,2],"m":"inc","oa":685,"o":"ball_loop_count,x"},{"a":44875,"t":"code","b":[189,173,2],"m":"lda","oa":685,"o":"ball_loop_count,x"},{"a":44878,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":44880,"t":"code","b":[144,3],"m":"bcc","oa":44885,"o":"b_AF55"},{"a":44882,"t":"code","b":[32,107,175],"m":"jsr","oa":44907,"o":"bounce_reangle"},{"a":44885,"l":"b_AF55","t":"code","b":[32,164,175],"m":"jsr","oa":44964,"o":"cell_above","x":[44880]},{"a":44888,"t":"code","b":[32,95,175],"m":"jsr","oa":44895,"o":"speed_up"},{"a":44891,"t":"code","b":[32,8,177],"m":"jsr","oa":45320,"o":"brick_hit"},{"a":44894,"t":"code","b":[96],"m":"rts"},{"a":44895,"l":"speed_up","c":"Each brick hit: the ball-speed fraction $023B + 4, held at $FC (no store on overflow).","t":"code","b":[173,59,2],"m":"lda","oa":571,"o":"ball_speed_frac","x":[44745,44779,44857,44888]},{"a":44898,"t":"code","b":[24],"m":"clc"},{"a":44899,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":44901,"t":"code","b":[176,3],"m":"bcs","oa":44906,"o":"r_AF6A"},{"a":44903,"t":"code","b":[141,59,2],"m":"sta","oa":571,"o":"ball_speed_frac"},{"a":44906,"l":"r_AF6A","t":"code","b":[96],"m":"rts","x":[44901]},{"a":44907,"l":"bounce_reangle","c":"Change ball X's angle when its brick-bounce count $02AD,X reaches 50 (ball_vs_bricks; also called from $B3F6): from $FF/x to $80/$FF, otherwise to $FF/$F0 or $FF/$40 by the low bit of the raster line ($D012); count = 0. Keeps a ball from repeating one path for ever.","t":"code","b":[189,155,2],"m":"lda","oa":667,"o":"ball_rate_y,x","x":[44736,44770,44848,44882,46070]},{"a":44910,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":44912,"t":"code","b":[208,16],"m":"bne","oa":44930,"o":"b_AF82"},{"a":44914,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":44916,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":44919,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":44921,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44924,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44926,"t":"code","b":[157,173,2],"m":"sta","oa":685,"o":"ball_loop_count,x"},{"a":44929,"t":"code","b":[96],"m":"rts"},{"a":44930,"l":"b_AF82","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[44912]},{"a":44932,"t":"code","b":[157,155,2],"m":"sta","oa":667,"o":"ball_rate_y,x"},{"a":44935,"t":"code","b":[173,18,208],"m":"lda","o":"vic_raster"},{"a":44938,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":44940,"t":"code","b":[240,11],"m":"beq","oa":44953,"o":"b_AF99"},{"a":44942,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":44944,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44947,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44949,"t":"code","b":[157,173,2],"m":"sta","oa":685,"o":"ball_loop_count,x"},{"a":44952,"t":"code","b":[96],"m":"rts"},{"a":44953,"l":"b_AF99","t":"code","b":[169,64],"m":"lda","o":"#$40","x":[44940]},{"a":44955,"t":"code","b":[157,158,2],"m":"sta","oa":670,"o":"ball_rate_x,x"},{"a":44958,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44960,"t":"code","b":[157,173,2],"m":"sta","oa":685,"o":"ball_loop_count,x"},{"a":44963,"t":"code","b":[96],"m":"rts"},{"a":44964,"l":"cell_above","c":"Cell of the brick above ball X for $B108: $0218 = (Y - $33)/8, $0219 = ((X - $1E)/8) AND $FE.","t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x","x":[44885]},{"a":44967,"t":"code","b":[56],"m":"sec"},{"a":44968,"t":"code","b":[233,51],"m":"sbc","o":"#$33"},{"a":44970,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44971,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44972,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44973,"t":"code","b":[141,24,2],"m":"sta","oa":536,"o":"hit_row"},{"a":44976,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":44979,"t":"code","b":[56],"m":"sec"},{"a":44980,"t":"code","b":[233,30],"m":"sbc","o":"#$1E"},{"a":44982,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44983,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44984,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44985,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":44987,"t":"code","b":[141,25,2],"m":"sta","oa":537,"o":"hit_col"},{"a":44990,"t":"code","b":[96],"m":"rts"},{"a":44991,"l":"cell_below","c":"Cell of the brick below ball X: $0218 = (Y - $2E)/8, $0219 = ((X - $1E)/8) AND $FE.","t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x","x":[44851]},{"a":44994,"t":"code","b":[56],"m":"sec"},{"a":44995,"t":"code","b":[233,46],"m":"sbc","o":"#$2E"},{"a":44997,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44998,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":44999,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45000,"t":"code","b":[141,24,2],"m":"sta","oa":536,"o":"hit_row"},{"a":45003,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":45006,"t":"code","b":[56],"m":"sec"},{"a":45007,"t":"code","b":[233,30],"m":"sbc","o":"#$1E"},{"a":45009,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45010,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45011,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45012,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":45014,"t":"code","b":[141,25,2],"m":"sta","oa":537,"o":"hit_col"},{"a":45017,"t":"code","b":[96],"m":"rts"},{"a":45018,"l":"cell_left","c":"Cell of the brick to the left of ball X: $0218 = (Y - $33)/8, $0219 = ((X - $21)/8) AND $FE.","t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x","x":[44739]},{"a":45021,"t":"code","b":[56],"m":"sec"},{"a":45022,"t":"code","b":[233,51],"m":"sbc","o":"#$33"},{"a":45024,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45025,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45026,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45027,"t":"code","b":[141,24,2],"m":"sta","oa":536,"o":"hit_row"},{"a":45030,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":45033,"t":"code","b":[56],"m":"sec"},{"a":45034,"t":"code","b":[233,33],"m":"sbc","o":"#$21"},{"a":45036,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45037,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45038,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45039,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":45041,"t":"code","b":[141,25,2],"m":"sta","oa":537,"o":"hit_col"},{"a":45044,"t":"code","b":[96],"m":"rts"},{"a":45045,"l":"cell_right","c":"Cell of the brick to the right of ball X: $0218 = (Y - $33)/8, $0219 from X (continues at $B000).","t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x","x":[44773]},{"a":45048,"t":"code","b":[56],"m":"sec"},{"a":45049,"t":"code","b":[233,51],"m":"sbc","o":"#$33"},{"a":45051,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45052,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45053,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45054,"t":"code","b":[141,24,2],"m":"sta","oa":536,"o":"hit_row"},{"a":45057,"t":"code","b":[189,73,148],"m":"lda","oa":37961,"o":"ball_x,x"},{"a":45060,"t":"code","b":[56],"m":"sec"},{"a":45061,"t":"code","b":[233,16],"m":"sbc","o":"#$10"},{"a":45063,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45064,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45065,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":45066,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":45068,"t":"code","b":[141,25,2],"m":"sta","oa":537,"o":"hit_col"},{"a":45071,"t":"code","b":[96],"m":"rts"},{"a":45072,"l":"gold_brick_hit","c":"A ball has hit a gold brick (from brick_hit via the JMP at $B105; not reached in the simulator's round 1). Adds Y to the screen pointer ($0D), finds the special brick with that screen address in $03AA/$03AB (entries $0456 down to 1), redraws it as $8D $91, sets its flag $0300 = $80 and, unless $0216 is set, starts a sound on three voices ($272F with $2174, $2193, $21B2). Gold bricks are never removed.","t":"code","b":[152],"m":"tya","x":[45317]},{"a":45073,"t":"code","b":[24],"m":"clc"},{"a":45074,"t":"code","b":[101,13],"m":"adc","oa":13,"o":"scr_ptr"},{"a":45076,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":45078,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":45080,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":45082,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":45084,"t":"code","b":[172,86,4],"m":"ldy","oa":1110,"o":"metal_count"},{"a":45087,"l":"b_B01F","t":"code","b":[185,0,3],"m":"lda","oa":768,"o":"metal_state,y","x":[45168]},{"a":45090,"t":"code","b":[240,75],"m":"beq","oa":45167,"o":"b_B06F"},{"a":45092,"t":"code","b":[132,19],"m":"sty","oa":19,"o":"save_y"},{"a":45094,"t":"code","b":[152],"m":"tya"},{"a":45095,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45096,"t":"code","b":[168],"m":"tay"},{"a":45097,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":45099,"t":"code","b":[217,171,3],"m":"cmp","oa":939,"o":"metal_pos_hi,y"},{"a":45102,"t":"code","b":[208,61],"m":"bne","oa":45165,"o":"b_B06D"},{"a":45104,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"scr_ptr"},{"a":45106,"t":"code","b":[217,170,3],"m":"cmp","oa":938,"o":"metal_pos,y"},{"a":45109,"t":"code","b":[208,54],"m":"bne","oa":45165,"o":"b_B06D"},{"a":45111,"t":"code","b":[169,141],"m":"lda","o":"#$8D"},{"a":45113,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":45115,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":45117,"t":"code","b":[200],"m":"iny"},{"a":45118,"t":"code","b":[169,145],"m":"lda","o":"#$91"},{"a":45120,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":45122,"t":"code","b":[164,19],"m":"ldy","oa":19,"o":"save_y"},{"a":45124,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":45126,"t":"code","b":[153,0,3],"m":"sta","oa":768,"o":"metal_state,y"},{"a":45129,"t":"code","b":[173,22,2],"m":"lda","oa":534,"o":"tune_hold"},{"a":45132,"t":"code","b":[208,31],"m":"bne","oa":45165,"o":"b_B06D"},{"a":45134,"t":"code","b":[138],"m":"txa"},{"a":45135,"t":"code","b":[72],"m":"pha"},{"a":45136,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":45138,"t":"code","b":[169,116],"m":"lda","o":"#$74"},{"a":45140,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":45142,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45145,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":45147,"t":"code","b":[169,147],"m":"lda","o":"#$93"},{"a":45149,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":45151,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45154,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":45156,"t":"code","b":[169,178],"m":"lda","o":"#$B2"},{"a":45158,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":45160,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45163,"t":"code","b":[104],"m":"pla"},{"a":45164,"t":"code","b":[170],"m":"tax"},{"a":45165,"l":"b_B06D","t":"code","b":[164,19],"m":"ldy","oa":19,"o":"save_y","x":[45102,45109,45132]},{"a":45167,"l":"b_B06F","t":"code","b":[136],"m":"dey","x":[45090]},{"a":45168,"t":"code","b":[208,173],"m":"bne","oa":45087,"o":"b_B01F"},{"a":45170,"t":"code","b":[96],"m":"rts"},{"a":45171,"l":"silver_brick_hit","c":"A ball has hit a silver brick (from brick_hit via $B0FB). Finds the special brick at the hit screen address as gold_brick_hit does; if its hit counter $0355 is zero (counted down at $ABA6) the entry is cleared, the pointer put back and the brick is destroyed like a normal one ($B16D); otherwise it is redrawn as $85 $89, flagged $80 and, unless $0216 is set, the same three-voice sound starts.","t":"code","b":[152],"m":"tya","x":[45307]},{"a":45172,"t":"code","b":[24],"m":"clc"},{"a":45173,"t":"code","b":[101,13],"m":"adc","oa":13,"o":"scr_ptr"},{"a":45175,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":45177,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":45179,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":45181,"l":"drum_lo_base","c":"Not a table of its own: $B07D is the base that drum_script_step adds the drum number ($80-$87) to at $FF2D, so the drum routines' low bytes are $B0FD-$B104. $B0FD is the high byte of the JMP at $B0FB ($B0), which would give drum $80 the address $60B0 in the title picture's colours; whether the script ever plays drum $80 was not checked.","t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi","x":[65325]},{"a":45183,"t":"code","b":[172,86,4],"m":"ldy","oa":1110,"o":"metal_count"},{"a":45186,"l":"b_B082","t":"code","b":[185,0,3],"m":"lda","oa":768,"o":"metal_state,y","x":[45278]},{"a":45189,"t":"code","b":[240,86],"m":"beq","oa":45277,"o":"b_B0DD"},{"a":45191,"t":"code","b":[140,16,2],"m":"sty","oa":528,"o":"index_save"},{"a":45194,"t":"code","b":[152],"m":"tya"},{"a":45195,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45196,"t":"code","b":[168],"m":"tay"},{"a":45197,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":45199,"t":"code","b":[217,171,3],"m":"cmp","oa":939,"o":"metal_pos_hi,y"},{"a":45202,"t":"code","b":[208,70],"m":"bne","oa":45274,"o":"b_B0DA"},{"a":45204,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"scr_ptr"},{"a":45206,"t":"code","b":[217,170,3],"m":"cmp","oa":938,"o":"metal_pos,y"},{"a":45209,"t":"code","b":[208,63],"m":"bne","oa":45274,"o":"b_B0DA"},{"a":45211,"t":"code","b":[172,16,2],"m":"ldy","oa":528,"o":"index_save"},{"a":45214,"t":"code","b":[185,85,3],"m":"lda","oa":853,"o":"metal_hits,y"},{"a":45217,"t":"code","b":[240,62],"m":"beq","oa":45281,"o":"b_B0E1"},{"a":45219,"t":"code","b":[169,133],"m":"lda","o":"#$85"},{"a":45221,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":45223,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":45225,"t":"code","b":[200],"m":"iny"},{"a":45226,"t":"code","b":[169,137],"m":"lda","o":"#$89"},{"a":45228,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":45230,"t":"code","b":[172,16,2],"m":"ldy","oa":528,"o":"index_save"},{"a":45233,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":45235,"t":"code","b":[153,0,3],"m":"sta","oa":768,"o":"metal_state,y"},{"a":45238,"t":"code","b":[173,22,2],"m":"lda","oa":534,"o":"tune_hold"},{"a":45241,"t":"code","b":[208,31],"m":"bne","oa":45274,"o":"b_B0DA"},{"a":45243,"t":"code","b":[138],"m":"txa"},{"a":45244,"t":"code","b":[72],"m":"pha"},{"a":45245,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":45247,"t":"code","b":[169,116],"m":"lda","o":"#$74"},{"a":45249,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":45251,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45254,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":45256,"t":"code","b":[169,147],"m":"lda","o":"#$93"},{"a":45258,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":45260,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45263,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":45265,"t":"code","b":[169,178],"m":"lda","o":"#$B2"},{"a":45267,"t":"code","b":[160,33],"m":"ldy","o":"#$21"},{"a":45269,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45272,"t":"code","b":[104],"m":"pla"},{"a":45273,"t":"code","b":[170],"m":"tax"},{"a":45274,"l":"b_B0DA","t":"code","b":[172,16,2],"m":"ldy","oa":528,"o":"index_save","x":[45202,45209,45241]},{"a":45277,"l":"b_B0DD","t":"code","b":[136],"m":"dey","x":[45189]},{"a":45278,"t":"code","b":[208,162],"m":"bne","oa":45186,"o":"b_B082"},{"a":45280,"t":"code","b":[96],"m":"rts"},{"a":45281,"l":"b_B0E1","t":"code","b":[172,16,2],"m":"ldy","oa":528,"o":"index_save","x":[45217]},{"a":45284,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45286,"t":"code","b":[153,0,3],"m":"sta","oa":768,"o":"metal_state,y"},{"a":45289,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"scr_ptr"},{"a":45291,"t":"code","b":[56],"m":"sec"},{"a":45292,"t":"code","b":[229,19],"m":"sbc","oa":19,"o":"save_y"},{"a":45294,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":45296,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":45298,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":45300,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":45302,"t":"code","b":[164,19],"m":"ldy","oa":19,"o":"save_y"},{"a":45304,"t":"code","b":[76,109,177],"m":"jmp","oa":45421,"o":"j_B16D"},{"a":45307,"l":"b_B0FB","t":"code","b":[76,115,176],"m":"jmp","oa":45171,"o":"silver_brick_hit","x":[45419]},{"a":45310,"l":"drum_lo_81_87","c":"Low bytes of the title percussion routines for drums $81-$87: $04 $45 $EF $00 $90 $D6 $2F; with the high bytes at $A2D4-$A2DA: $F604 (drum_81), $F345 (drum_82), $AEEF, $B500 (drum_84), $B290 (drum_85), $ACD6, and $F62F, an RTS (a rest).","t":"byte","b":[4,69,239,0,144,214,47]},{"a":45317,"l":"brick_hit_gold_jump","c":"brick_hit's way to gold_brick_hit (JMP $B010), placed here, after drum_lo_81_87, within reach of the branch at $B167.","t":"code","b":[76,16,176],"m":"jmp","oa":45072,"o":"gold_brick_hit","x":[45415]},{"a":45320,"l":"brick_hit","c":"A ball or shot has hit the playfield cell at ($0D),Y (colour at ($0F),Y; X = the ball). Called from $A711, $AEC6, $AEE8, $AF36, $AF5B. On round 33 (round index $20) a screen code from $80 to $E7 is a hit on Doh: $0455 - 1, $0215 = 1 and a three-voice sound. Otherwise aligns Y to the brick's first cell, clears the ball's step accumulator $02A1,X, keeps the brick's colour (AND 7) in $020E, and sends gold (code $8A or more) to gold_brick_hit and silver ($82 or more) to silver_brick_hit. A normal brick: $0455 - 1; both cells and the shaded cells below-right get the background back (background_char_at, with the shaded variant $10 higher where a brick still casts its shadow). Then a capsule, when none is falling ($0237 = 0), exactly one ball is in play ($02A7-$02A9 sum to 1) and bricks remain: type from choose_capsule (1-7, never the same as the last, $0208, which is skipped to the next), colour from capsule_colours into slot 7, $0237 = type, 8 bytes from $A810 + 8 x type to $A80F, slot 7 placed at the brick (Y = row x 8 + $32 in $9434, X in $944C). Finally points: brick_points by colour into $0933, the ball's wall-bounce count $02AD,X = 0, a sound unless $0216 is set, and add_score.","t":"code","b":[138],"m":"txa","x":[42769,44742,44776,44854,44891]},{"a":45321,"t":"code","b":[72],"m":"pha"},{"a":45322,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":45325,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":45328,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":45330,"t":"code","b":[208,54],"m":"bne","oa":45386,"o":"b_B14A"},{"a":45332,"t":"code","b":[104],"m":"pla"},{"a":45333,"t":"code","b":[170],"m":"tax"},{"a":45334,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":45336,"t":"code","b":[16,47],"m":"bpl","oa":45385,"o":"r_B149"},{"a":45338,"t":"code","b":[201,232],"m":"cmp","o":"#$E8"},{"a":45340,"t":"code","b":[176,43],"m":"bcs","oa":45385,"o":"r_B149"},{"a":45342,"t":"code","b":[206,85,4],"m":"dec","oa":1109,"o":"bricks_left"},{"a":45345,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":45347,"t":"code","b":[141,21,2],"m":"sta","oa":533,"o":"doh_flash_count"},{"a":45350,"t":"code","b":[138],"m":"txa"},{"a":45351,"t":"code","b":[72],"m":"pha"},{"a":45352,"t":"code","b":[152],"m":"tya"},{"a":45353,"t":"code","b":[72],"m":"pha"},{"a":45354,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":45356,"t":"code","b":[169,162],"m":"lda","o":"#$A2"},{"a":45358,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":45360,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45363,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":45365,"t":"code","b":[169,193],"m":"lda","o":"#$C1"},{"a":45367,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":45369,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45372,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":45374,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":45376,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":45378,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45381,"t":"code","b":[104],"m":"pla"},{"a":45382,"t":"code","b":[168],"m":"tay"},{"a":45383,"t":"code","b":[104],"m":"pla"},{"a":45384,"t":"code","b":[170],"m":"tax"},{"a":45385,"l":"r_B149","t":"code","b":[96],"m":"rts","x":[45336,45340]},{"a":45386,"l":"b_B14A","t":"code","b":[104],"m":"pla","x":[45330]},{"a":45387,"t":"code","b":[170],"m":"tax"},{"a":45388,"t":"code","b":[152],"m":"tya"},{"a":45389,"t":"code","b":[56],"m":"sec"},{"a":45390,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":45392,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":45394,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":45396,"t":"code","b":[168],"m":"tay"},{"a":45397,"t":"code","b":[132,19],"m":"sty","oa":19,"o":"save_y"},{"a":45399,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45401,"t":"code","b":[157,161,2],"m":"sta","oa":673,"o":"ball_acc,x"},{"a":45404,"t":"code","b":[177,15],"m":"lda","oa":15,"o":"(col_ptr),y"},{"a":45406,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":45408,"t":"code","b":[141,14,2],"m":"sta","oa":526,"o":"brick_colour"},{"a":45411,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":45413,"t":"code","b":[201,138],"m":"cmp","o":"#$8A"},{"a":45415,"t":"code","b":[176,156],"m":"bcs","oa":45317,"o":"brick_hit_gold_jump"},{"a":45417,"t":"code","b":[201,130],"m":"cmp","o":"#$82"},{"a":45419,"t":"code","b":[176,142],"m":"bcs","oa":45307,"o":"b_B0FB"},{"a":45421,"l":"j_B16D","t":"code","b":[206,85,4],"m":"dec","oa":1109,"o":"bricks_left","x":[45304]},{"a":45424,"t":"code","b":[152],"m":"tya"},{"a":45425,"t":"code","b":[56],"m":"sec"},{"a":45426,"t":"code","b":[233,42],"m":"sbc","o":"#$2A"},{"a":45428,"t":"code","b":[168],"m":"tay"},{"a":45429,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":45431,"t":"code","b":[48,5],"m":"bmi","oa":45438,"o":"b_B17E"},{"a":45433,"t":"code","b":[200],"m":"iny"},{"a":45434,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":45436,"t":"code","b":[16,3],"m":"bpl","oa":45441,"o":"b_B181"},{"a":45438,"l":"b_B17E","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[45431]},{"a":45440,"t":"code","b":[44,169,0],"m":"bit","oa":169,"o":"v2_stack_lo_top"},{"a":45443,"t":"code","b":[141,27,2],"m":"sta","oa":539,"o":"shadow_offset"},{"a":45446,"t":"code","b":[32,204,178],"m":"jsr","oa":45772,"o":"background_char_at"},{"a":45449,"t":"code","b":[164,19],"m":"ldy","oa":19,"o":"save_y"},{"a":45451,"t":"code","b":[24],"m":"clc"},{"a":45452,"t":"code","b":[109,27,2],"m":"adc","oa":539,"o":"shadow_offset"},{"a":45455,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":45457,"t":"code","b":[173,87,4],"m":"lda","oa":1111,"o":"bg_colour"},{"a":45460,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":45462,"t":"code","b":[152],"m":"tya"},{"a":45463,"t":"code","b":[56],"m":"sec"},{"a":45464,"t":"code","b":[233,40],"m":"sbc","o":"#$28"},{"a":45466,"t":"code","b":[168],"m":"tay"},{"a":45467,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":45469,"t":"code","b":[16,3],"m":"bpl","oa":45474,"o":"b_B1A2"},{"a":45471,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":45473,"t":"code","b":[44,169,0],"m":"bit","oa":169,"o":"v2_stack_lo_top"},{"a":45476,"t":"code","b":[141,27,2],"m":"sta","oa":539,"o":"shadow_offset"},{"a":45479,"t":"code","b":[238,25,2],"m":"inc","oa":537,"o":"hit_col"},{"a":45482,"t":"code","b":[32,204,178],"m":"jsr","oa":45772,"o":"background_char_at"},{"a":45485,"t":"code","b":[164,19],"m":"ldy","oa":19,"o":"save_y"},{"a":45487,"t":"code","b":[200],"m":"iny"},{"a":45488,"t":"code","b":[24],"m":"clc"},{"a":45489,"t":"code","b":[109,27,2],"m":"adc","oa":539,"o":"shadow_offset"},{"a":45492,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":45494,"t":"code","b":[173,87,4],"m":"lda","oa":1111,"o":"bg_colour"},{"a":45497,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":45499,"t":"code","b":[152],"m":"tya"},{"a":45500,"t":"code","b":[24],"m":"clc"},{"a":45501,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":45503,"t":"code","b":[168],"m":"tay"},{"a":45504,"t":"code","b":[238,24,2],"m":"inc","oa":536,"o":"hit_row"},{"a":45507,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":45509,"t":"code","b":[48,10],"m":"bmi","oa":45521,"o":"b_B1D1"},{"a":45511,"t":"code","b":[32,204,178],"m":"jsr","oa":45772,"o":"background_char_at"},{"a":45514,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":45516,"t":"code","b":[173,87,4],"m":"lda","oa":1111,"o":"bg_colour"},{"a":45519,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":45521,"l":"b_B1D1","t":"code","b":[200],"m":"iny","x":[45509]},{"a":45522,"t":"code","b":[176,17],"m":"bcs","oa":45541,"o":"b_B1E5"},{"a":45524,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":45526,"t":"code","b":[48,13],"m":"bmi","oa":45541,"o":"b_B1E5"},{"a":45528,"t":"code","b":[238,25,2],"m":"inc","oa":537,"o":"hit_col"},{"a":45531,"t":"code","b":[32,204,178],"m":"jsr","oa":45772,"o":"background_char_at"},{"a":45534,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":45536,"t":"code","b":[173,87,4],"m":"lda","oa":1111,"o":"bg_colour"},{"a":45539,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":45541,"l":"b_B1E5","t":"code","b":[173,55,2],"m":"lda","oa":567,"o":"capsule_type","x":[45522,45526]},{"a":45544,"t":"code","b":[208,111],"m":"bne","oa":45657,"o":"b_B259"},{"a":45546,"t":"code","b":[142,13,2],"m":"stx","oa":525,"o":"x_save"},{"a":45549,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":45551,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45553,"t":"code","b":[24],"m":"clc"},{"a":45554,"l":"b_B1F2","t":"code","b":[125,167,2],"m":"adc","oa":679,"o":"ball_active,x","x":[45558]},{"a":45557,"t":"code","b":[202],"m":"dex"},{"a":45558,"t":"code","b":[16,250],"m":"bpl","oa":45554,"o":"b_B1F2"},{"a":45560,"t":"code","b":[174,13,2],"m":"ldx","oa":525,"o":"x_save"},{"a":45563,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":45565,"t":"code","b":[208,90],"m":"bne","oa":45657,"o":"b_B259"},{"a":45567,"t":"code","b":[173,85,4],"m":"lda","oa":1109,"o":"bricks_left"},{"a":45570,"t":"code","b":[240,85],"m":"beq","oa":45657,"o":"b_B259"},{"a":45572,"t":"code","b":[32,230,178],"m":"jsr","oa":45798,"o":"choose_capsule"},{"a":45575,"t":"code","b":[48,80],"m":"bmi","oa":45657,"o":"b_B259"},{"a":45577,"l":"j_B209","t":"code","b":[41,7],"m":"and","o":"#$07","x":[45592]},{"a":45579,"t":"code","b":[208,3],"m":"bne","oa":45584,"o":"b_B210"},{"a":45581,"t":"code","b":[24],"m":"clc"},{"a":45582,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":45584,"l":"b_B210","t":"code","b":[205,8,2],"m":"cmp","oa":520,"o":"last_capsule","x":[45579]},{"a":45587,"t":"code","b":[208,6],"m":"bne","oa":45595,"o":"b_B21B"},{"a":45589,"t":"code","b":[24],"m":"clc"},{"a":45590,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":45592,"t":"code","b":[76,9,178],"m":"jmp","oa":45577,"o":"j_B209"},{"a":45595,"l":"b_B21B","t":"code","b":[168],"m":"tay","x":[45587]},{"a":45596,"t":"code","b":[185,188,178],"m":"lda","oa":45756,"o":"capsule_colours,y"},{"a":45599,"t":"code","b":[141,32,248],"m":"sta","oa":63520,"o":"slot_colour_7"},{"a":45602,"t":"code","b":[152],"m":"tya"},{"a":45603,"t":"code","b":[141,55,2],"m":"sta","oa":567,"o":"capsule_type"},{"a":45606,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45607,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45608,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45609,"t":"code","b":[168],"m":"tay"},{"a":45610,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":45612,"l":"b_B22C","t":"code","b":[185,23,168],"m":"lda","oa":43031,"o":"capsule_letters,y","x":[45620]},{"a":45615,"t":"code","b":[157,15,168],"m":"sta","oa":43023,"o":"capsule_letter_now,x"},{"a":45618,"t":"code","b":[136],"m":"dey"},{"a":45619,"t":"code","b":[202],"m":"dex"},{"a":45620,"t":"code","b":[16,246],"m":"bpl","oa":45612,"o":"b_B22C"},{"a":45622,"t":"code","b":[174,13,2],"m":"ldx","oa":525,"o":"x_save"},{"a":45625,"t":"code","b":[173,24,2],"m":"lda","oa":536,"o":"hit_row"},{"a":45628,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45629,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45630,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45631,"t":"code","b":[24],"m":"clc"},{"a":45632,"t":"code","b":[105,50],"m":"adc","o":"#$32"},{"a":45634,"t":"code","b":[141,52,148],"m":"sta","oa":37940,"o":"capsule_y"},{"a":45637,"t":"code","b":[173,25,2],"m":"lda","oa":537,"o":"hit_col"},{"a":45640,"t":"code","b":[56],"m":"sec"},{"a":45641,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":45643,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":45645,"t":"code","b":[24],"m":"clc"},{"a":45646,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":45648,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45649,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45650,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45651,"t":"code","b":[24],"m":"clc"},{"a":45652,"t":"code","b":[105,14],"m":"adc","o":"#$0E"},{"a":45654,"t":"code","b":[141,76,148],"m":"sta","oa":37964,"o":"capsule_x"},{"a":45657,"l":"b_B259","t":"code","b":[173,14,2],"m":"lda","oa":526,"o":"brick_colour","x":[45544,45565,45570,45575]},{"a":45660,"t":"code","b":[168],"m":"tay"},{"a":45661,"t":"code","b":[185,196,178],"m":"lda","oa":45764,"o":"brick_points,y"},{"a":45664,"t":"code","b":[141,51,9],"m":"sta","oa":2355,"o":"points_pending"},{"a":45667,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45669,"t":"code","b":[157,173,2],"m":"sta","oa":685,"o":"ball_loop_count,x"},{"a":45672,"t":"code","b":[138],"m":"txa"},{"a":45673,"t":"code","b":[72],"m":"pha"},{"a":45674,"t":"code","b":[173,22,2],"m":"lda","oa":534,"o":"tune_hold"},{"a":45677,"t":"code","b":[208,27],"m":"bne","oa":45706,"o":"b_B28A"},{"a":45679,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":45681,"t":"code","b":[169,93],"m":"lda","o":"#$5D"},{"a":45683,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":45685,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45688,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":45690,"t":"code","b":[169,124],"m":"lda","o":"#$7C"},{"a":45692,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":45694,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45697,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":45699,"t":"code","b":[169,155],"m":"lda","o":"#$9B"},{"a":45701,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":45703,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":45706,"l":"b_B28A","t":"code","b":[32,189,251],"m":"jsr","oa":64445,"o":"add_score","x":[45677]},{"a":45709,"t":"code","b":[104],"m":"pla"},{"a":45710,"t":"code","b":[170],"m":"tax"},{"a":45711,"t":"code","b":[96],"m":"rts"},{"a":45712,"l":"drum_85","c":"Title-tune percussion sound $85, reached only through the JSR at $FEE8. Patches its store at $B2AD to STA $D418, then 6 x 25 steps, each a delay of drum_85_delays+Y ($F959) counts and the low nibble of $DE (advanced by $DD) as the SID volume; restores STA $9418. Holds the CPU while it plays.","t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":45714,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":45716,"t":"code","b":[24],"m":"clc"},{"a":45717,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":45719,"t":"code","b":[141,175,178],"m":"sta","oa":45743,"o":"drum_85_store_hi"},{"a":45722,"l":"b_B29A","t":"code","b":[162,25],"m":"ldx","o":"#$19","x":[45748]},{"a":45724,"l":"b_B29C","t":"code","b":[185,89,249],"m":"lda","oa":63833,"o":"drum_85_delays,y","x":[45745]},{"a":45727,"l":"b_B29F","t":"code","b":[56],"m":"sec","x":[45730]},{"a":45728,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":45730,"t":"code","b":[208,251],"m":"bne","oa":45727,"o":"b_B29F"},{"a":45732,"t":"code","b":[165,222],"m":"lda","oa":222,"o":"noise_acc"},{"a":45734,"t":"code","b":[24],"m":"clc"},{"a":45735,"t":"code","b":[105,221],"m":"adc","o":"#$DD"},{"a":45737,"t":"code","b":[133,222],"m":"sta","oa":222,"o":"noise_acc"},{"a":45739,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":45741,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":45743,"t":"note","l":"drum_85_store_hi","c":"Operand high byte of drum_85's volume store at $B2AD: $D4 in the image as loaded (the store live), $94 (STA $9418, harmless) once drum_85 has run, $D4 while it plays.","note":"inside the item at $B2AD","x":[45719,45752]},{"a":45744,"t":"code","b":[202],"m":"dex"},{"a":45745,"t":"code","b":[208,233],"m":"bne","oa":45724,"o":"b_B29C"},{"a":45747,"t":"code","b":[136],"m":"dey"},{"a":45748,"t":"code","b":[16,228],"m":"bpl","oa":45722,"o":"b_B29A"},{"a":45750,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":45752,"t":"code","b":[141,175,178],"m":"sta","oa":45743,"o":"drum_85_store_hi"},{"a":45755,"t":"code","b":[96],"m":"rts"},{"a":45756,"l":"capsule_colours","c":"Sprite colour of each capsule type 1-7 (entry 0 unused): $08 $05 $06 $03 $02 $0A $0B, put into slot 7's colour ($F820) by brick_hit.","t":"byte","b":[0,8,5,6,3,2,10,11],"x":[45596]},{"a":45764,"l":"brick_points","c":"Points for a normal brick by its colour (colour RAM AND 7, entries 0-7): $00 $10 $08 $12 $09 $11 $07 $13, BCD into $0933; the panel's fixed last 0 makes them 100, 80, 120, 90, 110, 70 and 130 for colours 1-7.","t":"byte","b":[0,16,8,18,9,17,7,19],"x":[45661]},{"a":45772,"l":"background_char_at","c":"Returns in A the background screen code for the cell at row $0218, column $0219: $0458 + (row x 4 AND $0C) + (column AND 3), the playfield's 4 x 4 tile (draw_playfield_background). Used by brick_hit to repaint a broken brick's cells.","t":"code","b":[24],"m":"clc","x":[45446,45482,45511,45531]},{"a":45773,"t":"code","b":[173,24,2],"m":"lda","oa":536,"o":"hit_row"},{"a":45776,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45777,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45778,"t":"code","b":[41,12],"m":"and","o":"#$0C"},{"a":45780,"t":"code","b":[141,28,2],"m":"sta","oa":540,"o":"pattern_tmp"},{"a":45783,"t":"code","b":[173,25,2],"m":"lda","oa":537,"o":"hit_col"},{"a":45786,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":45788,"t":"code","b":[109,28,2],"m":"adc","oa":540,"o":"pattern_tmp"},{"a":45791,"t":"code","b":[109,88,4],"m":"adc","oa":1112,"o":"bg_char_base"},{"a":45794,"t":"code","b":[96],"m":"rts"},{"a":45795,"l":"b_B2E3","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[45803,45809]},{"a":45797,"t":"code","b":[96],"m":"rts"},{"a":45798,"l":"choose_capsule","c":"Chooses the capsule for a broken brick from the frame counter $0201: $A0-$FF and $0A-$1F give $FF (none). $20-$9F: (frame XOR the ball's X) AND 3 gives 2, 2, 1, 2. $00-$09: 6 if bit 1 of the current player's lives (BCD) is set; else 5 if $0241 (frames / 256) is $12 or more; else 4 if the round has 4 or more special bricks ($0456); else 3 if the ball's Y is below $80, otherwise as for $20-$9F. Called from brick_hit.","t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter","x":[45572]},{"a":45801,"t":"code","b":[201,160],"m":"cmp","o":"#$A0"},{"a":45803,"t":"code","b":[176,246],"m":"bcs","oa":45795,"o":"b_B2E3"},{"a":45805,"t":"code","b":[48,50],"m":"bmi","oa":45857,"o":"b_B321"},{"a":45807,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":45809,"t":"code","b":[176,240],"m":"bcs","oa":45795,"o":"b_B2E3"},{"a":45811,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":45814,"t":"code","b":[189,54,9],"m":"lda","oa":2358,"o":"lives_p1,x"},{"a":45817,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":45819,"t":"code","b":[240,3],"m":"beq","oa":45824,"o":"b_B300"},{"a":45821,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":45823,"t":"code","b":[96],"m":"rts"},{"a":45824,"l":"b_B300","t":"code","b":[173,65,2],"m":"lda","oa":577,"o":"frame_counter_hi","x":[45819]},{"a":45827,"t":"code","b":[201,18],"m":"cmp","o":"#$12"},{"a":45829,"t":"code","b":[144,3],"m":"bcc","oa":45834,"o":"b_B30A"},{"a":45831,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":45833,"t":"code","b":[96],"m":"rts"},{"a":45834,"l":"b_B30A","t":"code","b":[173,86,4],"m":"lda","oa":1110,"o":"metal_count","x":[45829]},{"a":45837,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":45839,"t":"code","b":[144,3],"m":"bcc","oa":45844,"o":"b_B314"},{"a":45841,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":45843,"t":"code","b":[96],"m":"rts"},{"a":45844,"l":"b_B314","t":"code","b":[174,13,2],"m":"ldx","oa":525,"o":"x_save","x":[45839]},{"a":45847,"t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x"},{"a":45850,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":45852,"t":"code","b":[176,3],"m":"bcs","oa":45857,"o":"b_B321"},{"a":45854,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":45856,"t":"code","b":[96],"m":"rts"},{"a":45857,"l":"b_B321","t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter","x":[45805,45852]},{"a":45860,"t":"code","b":[93,73,148],"m":"eor","oa":37961,"o":"ball_x,x"},{"a":45863,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":45865,"t":"code","b":[240,6],"m":"beq","oa":45873,"o":"b_B331"},{"a":45867,"t":"code","b":[56],"m":"sec"},{"a":45868,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":45870,"t":"code","b":[240,1],"m":"beq","oa":45873,"o":"b_B331"},{"a":45872,"t":"code","b":[96],"m":"rts"},{"a":45873,"l":"b_B331","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[45865,45870]},{"a":45875,"t":"code","b":[96],"m":"rts"},{"a":45876,"l":"move_ball","c":"Moves ball X (0-2, virtual sprite 4 + X: Y $9431,X, X $9449,X) one step along its line. If $029B,X = $FF, Y changes every call by $0295,X and X by $0298,X when the accumulator $02A1,X (less $029E,X, modulus $02A4,X) borrows; otherwise the accumulator takes $029B,X, Y moves on a borrow and X every call. Y below $3B: bounces down ($0295 negated, Y + 1, $02AA,X = 2). Y of $FC or more: the ball is lost ($02A7,X = 0, its Y and X cleared). X below $24 moving left, or $E8 or more moving right: bounces off the side wall ($0298 negated, X nudged back, accumulator cleared) and counts $02AD,X; at 50 such bounces without a brick, JSR $AF6B. Called from $ADD6.","t":"code","b":[189,155,2],"m":"lda","oa":667,"o":"ball_rate_y,x","x":[44502]},{"a":45879,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":45881,"t":"code","b":[208,64],"m":"bne","oa":45947,"o":"b_B37B"},{"a":45883,"t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x"},{"a":45886,"t":"code","b":[24],"m":"clc"},{"a":45887,"t":"code","b":[125,49,148],"m":"adc","oa":37937,"o":"ball_y,x"},{"a":45890,"t":"code","b":[157,49,148],"m":"sta","oa":37937,"o":"ball_y,x"},{"a":45893,"t":"code","b":[201,59],"m":"cmp","o":"#$3B"},{"a":45895,"t":"code","b":[144,99],"m":"bcc","oa":45996,"o":"b_B3AC"},{"a":45897,"t":"code","b":[201,252],"m":"cmp","o":"#$FC"},{"a":45899,"t":"code","b":[176,95],"m":"bcs","oa":45996,"o":"b_B3AC"},{"a":45901,"t":"code","b":[189,161,2],"m":"lda","oa":673,"o":"ball_acc,x"},{"a":45904,"t":"code","b":[56],"m":"sec"},{"a":45905,"t":"code","b":[253,158,2],"m":"sbc","oa":670,"o":"ball_rate_x,x"},{"a":45908,"t":"code","b":[157,161,2],"m":"sta","oa":673,"o":"ball_acc,x"},{"a":45911,"t":"code","b":[176,33],"m":"bcs","oa":45946,"o":"r_B37A"},{"a":45913,"t":"code","b":[125,164,2],"m":"adc","oa":676,"o":"ball_acc_add,x"},{"a":45916,"t":"code","b":[157,161,2],"m":"sta","oa":673,"o":"ball_acc,x"},{"a":45919,"t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x"},{"a":45922,"t":"code","b":[24],"m":"clc"},{"a":45923,"t":"code","b":[125,73,148],"m":"adc","oa":37961,"o":"ball_x,x"},{"a":45926,"t":"code","b":[157,73,148],"m":"sta","oa":37961,"o":"ball_x,x"},{"a":45929,"l":"j_B369","t":"code","b":[72],"m":"pha","x":[45993]},{"a":45930,"t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x"},{"a":45933,"t":"code","b":[16,6],"m":"bpl","oa":45941,"o":"b_B375"},{"a":45935,"t":"code","b":[104],"m":"pla"},{"a":45936,"t":"code","b":[201,36],"m":"cmp","o":"#$24"},{"a":45938,"t":"code","b":[144,96],"m":"bcc","oa":46036,"o":"b_B3D4"},{"a":45940,"t":"code","b":[96],"m":"rts"},{"a":45941,"l":"b_B375","t":"code","b":[104],"m":"pla","x":[45933]},{"a":45942,"t":"code","b":[201,232],"m":"cmp","o":"#$E8"},{"a":45944,"t":"code","b":[176,95],"m":"bcs","oa":46041,"o":"b_B3D9"},{"a":45946,"l":"r_B37A","t":"code","b":[96],"m":"rts","x":[45911]},{"a":45947,"l":"b_B37B","t":"code","b":[189,161,2],"m":"lda","oa":673,"o":"ball_acc,x","x":[45881]},{"a":45950,"t":"code","b":[56],"m":"sec"},{"a":45951,"t":"code","b":[253,155,2],"m":"sbc","oa":667,"o":"ball_rate_y,x"},{"a":45954,"t":"code","b":[157,161,2],"m":"sta","oa":673,"o":"ball_acc,x"},{"a":45957,"t":"code","b":[176,24],"m":"bcs","oa":45983,"o":"b_B39F"},{"a":45959,"t":"code","b":[125,164,2],"m":"adc","oa":676,"o":"ball_acc_add,x"},{"a":45962,"t":"code","b":[157,161,2],"m":"sta","oa":673,"o":"ball_acc,x"},{"a":45965,"t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x"},{"a":45968,"t":"code","b":[24],"m":"clc"},{"a":45969,"t":"code","b":[125,49,148],"m":"adc","oa":37937,"o":"ball_y,x"},{"a":45972,"t":"code","b":[157,49,148],"m":"sta","oa":37937,"o":"ball_y,x"},{"a":45975,"t":"code","b":[201,59],"m":"cmp","o":"#$3B"},{"a":45977,"t":"code","b":[144,17],"m":"bcc","oa":45996,"o":"b_B3AC"},{"a":45979,"t":"code","b":[201,252],"m":"cmp","o":"#$FC"},{"a":45981,"t":"code","b":[176,13],"m":"bcs","oa":45996,"o":"b_B3AC"},{"a":45983,"l":"b_B39F","t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x","x":[45957]},{"a":45986,"t":"code","b":[24],"m":"clc"},{"a":45987,"t":"code","b":[125,73,148],"m":"adc","oa":37961,"o":"ball_x,x"},{"a":45990,"t":"code","b":[157,73,148],"m":"sta","oa":37961,"o":"ball_x,x"},{"a":45993,"t":"code","b":[76,105,179],"m":"jmp","oa":45929,"o":"j_B369"},{"a":45996,"l":"b_B3AC","t":"code","b":[144,12],"m":"bcc","oa":46010,"o":"b_B3BA","x":[45895,45899,45977,45981]},{"a":45998,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46000,"t":"code","b":[157,167,2],"m":"sta","oa":679,"o":"ball_active,x"},{"a":46003,"t":"code","b":[157,49,148],"m":"sta","oa":37937,"o":"ball_y,x"},{"a":46006,"t":"code","b":[157,73,148],"m":"sta","oa":37961,"o":"ball_x,x"},{"a":46009,"t":"code","b":[96],"m":"rts"},{"a":46010,"l":"b_B3BA","t":"code","b":[189,149,2],"m":"lda","oa":661,"o":"ball_dy,x","x":[45996]},{"a":46013,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":46015,"t":"code","b":[24],"m":"clc"},{"a":46016,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":46018,"t":"code","b":[157,149,2],"m":"sta","oa":661,"o":"ball_dy,x"},{"a":46021,"t":"code","b":[189,49,148],"m":"lda","oa":37937,"o":"ball_y,x"},{"a":46024,"t":"code","b":[24],"m":"clc"},{"a":46025,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":46027,"t":"code","b":[157,49,148],"m":"sta","oa":37937,"o":"ball_y,x"},{"a":46030,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":46032,"t":"code","b":[157,170,2],"m":"sta","oa":682,"o":"ball_cooldown,x"},{"a":46035,"t":"code","b":[96],"m":"rts"},{"a":46036,"l":"b_B3D4","t":"code","b":[254,73,148],"m":"inc","oa":37961,"o":"ball_x,x","x":[45938]},{"a":46039,"t":"code","b":[208,3],"m":"bne","oa":46044,"o":"b_B3DC"},{"a":46041,"l":"b_B3D9","t":"code","b":[222,73,148],"m":"dec","oa":37961,"o":"ball_x,x","x":[45944]},{"a":46044,"l":"b_B3DC","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46039]},{"a":46046,"t":"code","b":[157,161,2],"m":"sta","oa":673,"o":"ball_acc,x"},{"a":46049,"t":"code","b":[189,152,2],"m":"lda","oa":664,"o":"ball_dx,x"},{"a":46052,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":46054,"t":"code","b":[24],"m":"clc"},{"a":46055,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":46057,"t":"code","b":[157,152,2],"m":"sta","oa":664,"o":"ball_dx,x"},{"a":46060,"t":"code","b":[254,173,2],"m":"inc","oa":685,"o":"ball_loop_count,x"},{"a":46063,"t":"code","b":[189,173,2],"m":"lda","oa":685,"o":"ball_loop_count,x"},{"a":46066,"t":"code","b":[201,50],"m":"cmp","o":"#$32"},{"a":46068,"t":"code","b":[144,3],"m":"bcc","oa":46073,"o":"r_B3F9"},{"a":46070,"t":"code","b":[32,107,175],"m":"jsr","oa":44907,"o":"bounce_reangle"},{"a":46073,"l":"r_B3F9","t":"code","b":[96],"m":"rts","x":[46068]},{"a":46074,"l":"aim_at_vaus","c":"Sets up a straight path from virtual sprite 8 + X (X $944D,X, Y $9435,X) to the Vaus's position ($9445, $942D): directions $027D,X (X: 1 right, $FF left) and $027A,X (Y: 1 down, $FF up), and for the longer axis $FF in $0283,X or $0280,X with the distances in $0286/$0289 and the other of $0280/$0283. Called from the intro animation ($0725, $0765, $07AE, $07D5) and $9872, $A048.","t":"code","b":[189,77,148],"m":"lda","oa":37965,"o":"enemy_x,x","x":[1829,1893,1966,2005,39026,41032]},{"a":46077,"t":"code","b":[56],"m":"sec"},{"a":46078,"t":"code","b":[237,69,148],"m":"sbc","oa":37957,"o":"obj_x"},{"a":46081,"t":"code","b":[176,18],"m":"bcs","oa":46101,"o":"b_B415"},{"a":46083,"t":"code","b":[173,69,148],"m":"lda","oa":37957,"o":"obj_x"},{"a":46086,"t":"code","b":[56],"m":"sec"},{"a":46087,"t":"code","b":[253,77,148],"m":"sbc","oa":37965,"o":"enemy_x,x"},{"a":46090,"t":"code","b":[141,4,2],"m":"sta","oa":516,"o":"aim_dx"},{"a":46093,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46095,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":46098,"t":"code","b":[76,29,180],"m":"jmp","oa":46109,"o":"j_B41D"},{"a":46101,"l":"b_B415","t":"code","b":[141,4,2],"m":"sta","oa":516,"o":"aim_dx","x":[46081]},{"a":46104,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46106,"t":"code","b":[157,125,2],"m":"sta","oa":637,"o":"enemy_dx,x"},{"a":46109,"l":"j_B41D","t":"code","b":[189,53,148],"m":"lda","oa":37941,"o":"enemy_y,x","x":[46098]},{"a":46112,"t":"code","b":[56],"m":"sec"},{"a":46113,"t":"code","b":[237,45,148],"m":"sbc","oa":37933,"o":"obj_y"},{"a":46116,"t":"code","b":[176,18],"m":"bcs","oa":46136,"o":"b_B438"},{"a":46118,"t":"code","b":[173,45,148],"m":"lda","oa":37933,"o":"obj_y"},{"a":46121,"t":"code","b":[56],"m":"sec"},{"a":46122,"t":"code","b":[253,53,148],"m":"sbc","oa":37941,"o":"enemy_y,x"},{"a":46125,"t":"code","b":[141,5,2],"m":"sta","oa":517,"o":"aim_dy"},{"a":46128,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46130,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":46133,"t":"code","b":[76,64,180],"m":"jmp","oa":46144,"o":"j_B440"},{"a":46136,"l":"b_B438","t":"code","b":[141,5,2],"m":"sta","oa":517,"o":"aim_dy","x":[46116]},{"a":46139,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46141,"t":"code","b":[157,122,2],"m":"sta","oa":634,"o":"enemy_dy,x"},{"a":46144,"l":"j_B440","t":"code","b":[173,5,2],"m":"lda","oa":517,"o":"aim_dy","x":[46133]},{"a":46147,"t":"code","b":[205,4,2],"m":"cmp","oa":516,"o":"aim_dx"},{"a":46150,"t":"code","b":[176,21],"m":"bcs","oa":46173,"o":"b_B45D"},{"a":46152,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46154,"t":"code","b":[157,131,2],"m":"sta","oa":643,"o":"enemy_rate_x,x"},{"a":46157,"t":"code","b":[173,4,2],"m":"lda","oa":516,"o":"aim_dx"},{"a":46160,"t":"code","b":[157,134,2],"m":"sta","oa":646,"o":"enemy_acc,x"},{"a":46163,"t":"code","b":[157,137,2],"m":"sta","oa":649,"o":"enemy_acc_add,x"},{"a":46166,"t":"code","b":[173,5,2],"m":"lda","oa":517,"o":"aim_dy"},{"a":46169,"t":"code","b":[157,128,2],"m":"sta","oa":640,"o":"enemy_rate_y,x"},{"a":46172,"t":"code","b":[96],"m":"rts"},{"a":46173,"l":"b_B45D","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[46150]},{"a":46175,"t":"code","b":[157,128,2],"m":"sta","oa":640,"o":"enemy_rate_y,x"},{"a":46178,"t":"code","b":[173,5,2],"m":"lda","oa":517,"o":"aim_dy"},{"a":46181,"t":"code","b":[157,134,2],"m":"sta","oa":646,"o":"enemy_acc,x"},{"a":46184,"t":"code","b":[157,137,2],"m":"sta","oa":649,"o":"enemy_acc_add,x"},{"a":46187,"t":"code","b":[173,4,2],"m":"lda","oa":516,"o":"aim_dx"},{"a":46190,"t":"code","b":[157,131,2],"m":"sta","oa":643,"o":"enemy_rate_x,x"},{"a":46193,"t":"code","b":[96],"m":"rts"},{"a":46194,"l":"wait_tick","c":"Waits for the next tick: loops until $0200 (counted up once a frame by nmi_frame_a) is non-zero, then takes one off. The game's frame pacing: the main loop and the menus call it once per pass.","t":"code","b":[173,0,2],"m":"lda","oa":512,"o":"frame_ticks","x":[1751,38243,38330,38449,38478,38564,38734,39885,41974,46197,46458,46480,47527,47541,61551]},{"a":46197,"t":"code","b":[240,251],"m":"beq","oa":46194,"o":"wait_tick"},{"a":46199,"t":"code","b":[206,0,2],"m":"dec","oa":512,"o":"frame_ticks"},{"a":46202,"t":"code","b":[96],"m":"rts"},{"a":46203,"l":"drum_command_hi","c":"High bytes of the title percussion script's command handlers ($A4 $A9 $A1 $A7 $A4), with drum_command_lo at $F8A8: $A449, $A932, $A1E6, $A7C9, $A44E for commands $20, $40, $60, $49, $4C.","t":"byte","b":[164,169,161,167,164],"x":[65292]},{"a":46208,"l":"show_title_picture","c":"Shows the title picture: $D011 = $2B (bitmap, display off), video bank 1 ($DD00 = $C2), $D018 = $80 (bitmap $4000, colours $6000), border 0, background 1, the 1024 bytes at $6400-$67FF into colour RAM, the 12 virtual sprites' Y set to the last byte copied ($0B, from $6701), then $D011 = $3B (bitmap, display on). Called from title_screen, main_entry and $968F.","t":"code","b":[169,43],"m":"lda","o":"#$2B","x":[38543,46276,61495]},{"a":46210,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":46213,"t":"code","b":[169,194],"m":"lda","o":"#$C2"},{"a":46215,"t":"code","b":[141,0,221],"m":"sta","o":"cia2_port_a"},{"a":46218,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":46220,"t":"code","b":[141,24,208],"m":"sta","o":"vic_memory"},{"a":46223,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46225,"t":"code","b":[141,32,208],"m":"sta","o":"vic_border"},{"a":46228,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46230,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":46233,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":46235,"l":"b_B49B","t":"code","b":[185,0,100],"m":"lda","oa":25600,"o":"title_colour_ram_rows_0_6,y","x":[46260]},{"a":46238,"t":"code","b":[153,0,216],"m":"sta","o":"colour_ram,y"},{"a":46241,"t":"code","b":[185,0,101],"m":"lda","oa":25856,"o":"title_colour_ram_rows_6_12,y"},{"a":46244,"t":"code","b":[153,0,217],"m":"sta","o":"$D900,y"},{"a":46247,"t":"code","b":[185,0,102],"m":"lda","oa":26112,"o":"title_colour_ram_rows_12_19,y"},{"a":46250,"t":"code","b":[153,0,218],"m":"sta","o":"$DA00,y"},{"a":46253,"t":"code","b":[185,0,103],"m":"lda","oa":26368,"o":"title_colour_ram_rows_19_24,y"},{"a":46256,"t":"code","b":[153,0,219],"m":"sta","o":"$DB00,y"},{"a":46259,"t":"code","b":[136],"m":"dey"},{"a":46260,"t":"code","b":[208,229],"m":"bne","oa":46235,"o":"b_B49B"},{"a":46262,"t":"code","b":[160,11],"m":"ldy","o":"#$0B"},{"a":46264,"l":"b_B4B8","t":"code","b":[153,45,148],"m":"sta","oa":37933,"o":"obj_y,y","x":[46268]},{"a":46267,"t":"code","b":[136],"m":"dey"},{"a":46268,"t":"code","b":[16,250],"m":"bpl","oa":46264,"o":"b_B4B8"},{"a":46270,"t":"code","b":[169,59],"m":"lda","o":"#$3B"},{"a":46272,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":46275,"t":"code","b":[96],"m":"rts"},{"a":46276,"l":"title_screen","c":"The title: picture (show_title_picture), sound silenced, percussion script reset (drum_script_init), $0209 = $FF (the NMI steps the script), tune $3D, $9945 (A = 2, X = $60, Y = $99), then title_wait_loop. Called from main_entry ($F023).","t":"code","b":[32,128,180],"m":"jsr","oa":46208,"o":"show_title_picture","x":[61475]},{"a":46279,"t":"code","b":[32,144,38],"m":"jsr","oa":9872,"o":"sound_reset"},{"a":46282,"t":"code","b":[32,44,181],"m":"jsr","oa":46380,"o":"drum_script_init"},{"a":46285,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46287,"t":"code","b":[141,9,2],"m":"sta","oa":521,"o":"drum_mode"},{"a":46290,"t":"code","b":[160,61],"m":"ldy","o":"#$3D"},{"a":46292,"t":"code","b":[32,43,38],"m":"jsr","oa":9771,"o":"music_start_tune"},{"a":46295,"t":"code","b":[162,96],"m":"ldx","o":"#$60"},{"a":46297,"t":"code","b":[160,153],"m":"ldy","o":"#$99"},{"a":46299,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":46301,"t":"code","b":[32,69,153],"m":"jsr","oa":39237,"o":"start_drums"},{"a":46304,"l":"title_wait_loop","c":"Plays the percussion (drum_play) until a key in keyboard row 7 or any joystick line in either port is active ($DC01 AND $DC00 differs from $7F): then $0209 = 0 and returns. If the tune ends first ($3417 zero), $0209 = 0 and JMP $9500, the attract mode. Also called from $9692.","t":"code","b":[32,224,254],"m":"jsr","oa":65248,"o":"drum_play","x":[38546,46320]},{"a":46307,"t":"code","b":[173,1,220],"m":"lda","o":"cia1_port_b"},{"a":46310,"t":"code","b":[45,0,220],"m":"and","o":"cia1_port_a"},{"a":46313,"t":"code","b":[201,127],"m":"cmp","o":"#$7F"},{"a":46315,"t":"code","b":[208,13],"m":"bne","oa":46330,"o":"b_B4FA"},{"a":46317,"t":"code","b":[32,23,52],"m":"jsr","oa":13335,"o":"sound_busy"},{"a":46320,"t":"code","b":[208,238],"m":"bne","oa":46304,"o":"title_wait_loop"},{"a":46322,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46324,"t":"code","b":[141,9,2],"m":"sta","oa":521,"o":"drum_mode"},{"a":46327,"t":"code","b":[76,0,149],"m":"jmp","oa":38144,"o":"attract_mode"},{"a":46330,"l":"b_B4FA","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46315]},{"a":46332,"t":"code","b":[141,9,2],"m":"sta","oa":521,"o":"drum_mode"},{"a":46335,"t":"code","b":[96],"m":"rts"},{"a":46336,"l":"drum_84","c":"Title-tune percussion sound $84, reached only through the JSR at $FEE8. Patches its store at $B51D to STA $D418, then 6 x 25 steps, each a delay of drum_84_delays+Y ($FCE8) counts and the low nibble of $DE (advanced by $DD) as the SID volume; restores STA $9418. Holds the CPU while it plays.","t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":46338,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":46340,"t":"code","b":[24],"m":"clc"},{"a":46341,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":46343,"t":"code","b":[141,31,181],"m":"sta","oa":46367,"o":"drum_84_store_hi"},{"a":46346,"l":"b_B50A","t":"code","b":[162,25],"m":"ldx","o":"#$19","x":[46372]},{"a":46348,"l":"b_B50C","t":"code","b":[185,232,252],"m":"lda","oa":64744,"o":"drum_84_delays,y","x":[46369]},{"a":46351,"l":"b_B50F","t":"code","b":[56],"m":"sec","x":[46354]},{"a":46352,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":46354,"t":"code","b":[208,251],"m":"bne","oa":46351,"o":"b_B50F"},{"a":46356,"t":"code","b":[165,222],"m":"lda","oa":222,"o":"noise_acc"},{"a":46358,"t":"code","b":[24],"m":"clc"},{"a":46359,"t":"code","b":[105,221],"m":"adc","o":"#$DD"},{"a":46361,"t":"code","b":[133,222],"m":"sta","oa":222,"o":"noise_acc"},{"a":46363,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":46365,"t":"code","b":[141,24,148],"m":"sta","oa":37912,"o":"d418_decoy"},{"a":46367,"t":"note","l":"drum_84_store_hi","c":"Operand high byte of drum_84's volume store at $B51D: $D4 while it plays, $94 (STA $9418, harmless) otherwise.","note":"inside the item at $B51D","x":[46343,46376]},{"a":46368,"t":"code","b":[202],"m":"dex"},{"a":46369,"t":"code","b":[208,233],"m":"bne","oa":46348,"o":"b_B50C"},{"a":46371,"t":"code","b":[136],"m":"dey"},{"a":46372,"t":"code","b":[16,228],"m":"bpl","oa":46346,"o":"b_B50A"},{"a":46374,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":46376,"t":"code","b":[141,31,181],"m":"sta","oa":46367,"o":"drum_84_store_hi"},{"a":46379,"t":"code","b":[96],"m":"rts"},{"a":46380,"l":"drum_script_init","c":"Resets the title percussion: no drum due ($DF = 0), wait $DC = $FF, script pointer ($DA) = $9A71.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[46282]},{"a":46382,"t":"code","b":[134,223],"m":"stx","oa":223,"o":"drum_pending"},{"a":46384,"t":"code","b":[202],"m":"dex"},{"a":46385,"t":"code","b":[134,220],"m":"stx","oa":220,"o":"drum_wait"},{"a":46387,"t":"code","b":[162,113],"m":"ldx","o":"#$71"},{"a":46389,"t":"code","b":[160,154],"m":"ldy","o":"#$9A"},{"a":46391,"t":"code","b":[134,218],"m":"stx","oa":218,"o":"drum_ptr"},{"a":46393,"t":"code","b":[132,219],"m":"sty","oa":219,"o":"drum_ptr_hi"},{"a":46395,"t":"code","b":[96],"m":"rts"},{"a":46396,"l":"text_screen_mode","c":"Switches to the screen used by the menu, story and play: video bank 3 ($DD00 = $90), screen $C000 and character set $C800 ($D018 = $02), text mode on ($D011 = $1B), colours $D020-$D026 from play_screen_colours.","t":"code","b":[169,144],"m":"lda","o":"#$90","x":[38553,61489,61879]},{"a":46398,"t":"code","b":[141,0,221],"m":"sta","o":"cia2_port_a"},{"a":46401,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":46403,"t":"code","b":[141,24,208],"m":"sta","o":"vic_memory"},{"a":46406,"t":"code","b":[169,27],"m":"lda","o":"#$1B"},{"a":46408,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":46411,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":46413,"l":"b_B54D","t":"code","b":[185,25,247],"m":"lda","oa":63257,"o":"play_screen_colours,y","x":[46420]},{"a":46416,"t":"code","b":[153,32,208],"m":"sta","o":"vic_border,y"},{"a":46419,"t":"code","b":[136],"m":"dey"},{"a":46420,"t":"code","b":[16,247],"m":"bpl","oa":46413,"o":"b_B54D"},{"a":46422,"t":"code","b":[96],"m":"rts"},{"a":46423,"l":"input_menu","c":"The input menu, then the story. Clears the screen, prints the menu, clears fire ($0235, $0236), sprites off, players $0939 from the remembered $093A; unless the device is the mouse, waits until $DC01 reads $FF (port 1 and keyboard row 7 released). Then once a tick: menu keys (menu_keys) and the menu redrawn (draw_menu_choices) until menu_keys reports fire released after a press. Then clears the screen, prints the story, waits 250 ticks and turns all sprites on.","t":"code","b":[32,240,182],"m":"jsr","oa":46832,"o":"clear_text_screen","x":[61492]},{"a":46426,"t":"code","b":[32,53,182],"m":"jsr","oa":46645,"o":"print_menu_text"},{"a":46429,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46431,"t":"code","b":[141,53,2],"m":"sta","oa":565,"o":"fire_prev"},{"a":46434,"t":"code","b":[141,54,2],"m":"sta","oa":566,"o":"fire_now"},{"a":46437,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":46440,"t":"code","b":[173,58,9],"m":"lda","oa":2362,"o":"two_players"},{"a":46443,"t":"code","b":[141,57,9],"m":"sta","oa":2361,"o":"players_left"},{"a":46446,"t":"code","b":[173,63,9],"m":"lda","oa":2367,"o":"input_device"},{"a":46449,"t":"code","b":[240,7],"m":"beq","oa":46458,"o":"b_B57A"},{"a":46451,"l":"b_B573","t":"code","b":[173,1,220],"m":"lda","o":"cia1_port_b","x":[46456]},{"a":46454,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":46456,"t":"code","b":[208,249],"m":"bne","oa":46451,"o":"b_B573"},{"a":46458,"l":"b_B57A","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[46449,46469]},{"a":46461,"t":"code","b":[32,156,181],"m":"jsr","oa":46492,"o":"menu_keys"},{"a":46464,"t":"code","b":[208,6],"m":"bne","oa":46472,"o":"b_B588"},{"a":46466,"t":"code","b":[32,250,181],"m":"jsr","oa":46586,"o":"draw_menu_choices"},{"a":46469,"t":"code","b":[76,122,181],"m":"jmp","oa":46458,"o":"b_B57A"},{"a":46472,"l":"b_B588","t":"code","b":[32,240,182],"m":"jsr","oa":46832,"o":"clear_text_screen","x":[46464]},{"a":46475,"t":"code","b":[32,114,182],"m":"jsr","oa":46706,"o":"print_story_text"},{"a":46478,"t":"code","b":[162,250],"m":"ldx","o":"#$FA"},{"a":46480,"l":"b_B590","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[46484]},{"a":46483,"t":"code","b":[202],"m":"dex"},{"a":46484,"t":"code","b":[208,250],"m":"bne","oa":46480,"o":"b_B590"},{"a":46486,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46488,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":46491,"t":"code","b":[96],"m":"rts"},{"a":46492,"l":"menu_keys","c":"Polls the menu keys (menu_key_codes, through key_held $0832): a key different from the last ($0214) chooses the device (N J K P: $093F = 0-3), the players (1, 2: $0939 = $093A = 0 or 1) or toggles one/two devices (D: $0940), returning Z set. With no key, reads the device (read_input_move_vaus) and returns Z clear only when the fire state $0236 has changed to 0: the game starts as fire is released.","t":"code","b":[160,6],"m":"ldy","o":"#$06","x":[46461]},{"a":46494,"l":"b_B59E","t":"code","b":[185,189,181],"m":"lda","oa":46525,"o":"menu_key_codes,y","x":[46503]},{"a":46497,"t":"code","b":[32,50,8],"m":"jsr","oa":2098,"o":"key_held"},{"a":46500,"t":"code","b":[176,30],"m":"bcs","oa":46532,"o":"menu_key_pressed"},{"a":46502,"t":"code","b":[136],"m":"dey"},{"a":46503,"t":"code","b":[16,245],"m":"bpl","oa":46494,"o":"b_B59E"},{"a":46505,"t":"code","b":[140,20,2],"m":"sty","oa":532,"o":"menu_key"},{"a":46508,"l":"b_B5AC","t":"code","b":[32,153,252],"m":"jsr","oa":64665,"o":"read_input_move_vaus","x":[46535]},{"a":46511,"t":"code","b":[173,54,2],"m":"lda","oa":566,"o":"fire_now"},{"a":46514,"t":"code","b":[205,53,2],"m":"cmp","oa":565,"o":"fire_prev"},{"a":46517,"t":"code","b":[240,5],"m":"beq","oa":46524,"o":"r_B5BC"},{"a":46519,"t":"code","b":[141,53,2],"m":"sta","oa":565,"o":"fire_prev"},{"a":46522,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":46524,"l":"r_B5BC","t":"code","b":[96],"m":"rts","x":[46517]},{"a":46525,"l":"menu_key_codes","c":"Key numbers (8 x row + column) of the menu keys, in the order of their meaning: $27 N, $22 J, $25 K, $29 P, $38 1, $3B 2, $12 D.","t":"byte","b":[39,34,37,41,56,59,18],"x":[46494]},{"a":46532,"l":"menu_key_pressed","c":"menu_keys, after a key was found (Y = its index in menu_key_codes): ignored if it is the key already held ($0214, then the fire check); Y 0-3 sets the device $093F; Y 4-5 sets the players $0939 and $093A to 0 or 1; Y 6 (D) flips one/two devices $0940. Returns A = 0 (Z set: stay in the menu).","t":"code","b":[204,20,2],"m":"cpy","oa":532,"o":"menu_key","x":[46500]},{"a":46535,"t":"code","b":[240,227],"m":"beq","oa":46508,"o":"b_B5AC"},{"a":46537,"t":"code","b":[140,20,2],"m":"sty","oa":532,"o":"menu_key"},{"a":46540,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":46542,"t":"code","b":[176,6],"m":"bcs","oa":46550,"o":"b_B5D6"},{"a":46544,"t":"code","b":[140,63,9],"m":"sty","oa":2367,"o":"input_device"},{"a":46547,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46549,"t":"code","b":[96],"m":"rts"},{"a":46550,"l":"b_B5D6","t":"code","b":[152],"m":"tya","x":[46542]},{"a":46551,"t":"code","b":[56],"m":"sec"},{"a":46552,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":46554,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":46556,"t":"code","b":[240,9],"m":"beq","oa":46567,"o":"b_B5E7"},{"a":46558,"t":"code","b":[141,57,9],"m":"sta","oa":2361,"o":"players_left"},{"a":46561,"t":"code","b":[141,58,9],"m":"sta","oa":2362,"o":"two_players"},{"a":46564,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46566,"t":"code","b":[96],"m":"rts"},{"a":46567,"l":"b_B5E7","t":"code","b":[173,64,9],"m":"lda","oa":2368,"o":"two_devices","x":[46556]},{"a":46570,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":46572,"t":"code","b":[141,64,9],"m":"sta","oa":2368,"o":"two_devices"},{"a":46575,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46577,"t":"code","b":[96],"m":"rts"},{"a":46578,"l":"menu_marker_lo","c":"Low bytes of the screen addresses of the four device lines' markers: $5A $AA $FA $4A (with menu_marker_hi: $C05A, $C0AA, $C0FA, $C14A, rows 2, 4, 6 and 8, column 10).","t":"byte","b":[90,170,250,74],"x":[46588,46610]},{"a":46582,"l":"menu_marker_hi","c":"High bytes of the device markers' screen addresses: $C0 $C0 $C0 $C1.","t":"byte","b":[192,192,192,193],"x":[46593,46615]},{"a":46586,"l":"draw_menu_choices","c":"Shows the menu's choices: blanks the four device markers and puts $C7 beside the chosen device ($093F); writes the players digit '1' + $0939 at $C1EE (row 12) and the devices digit '1' + $0940 at $C19E (row 10), making 1 PLAYER / 2 PLAYER and 1 DEVICE / 2 DEVICE.","t":"code","b":[162,3],"m":"ldx","o":"#$03","x":[46466]},{"a":46588,"l":"b_B5FC","t":"code","b":[189,242,181],"m":"lda","oa":46578,"o":"menu_marker_lo,x","x":[46605]},{"a":46591,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":46593,"t":"code","b":[189,246,181],"m":"lda","oa":46582,"o":"menu_marker_hi,x"},{"a":46596,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":46598,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":46600,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":46602,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":46604,"t":"code","b":[202],"m":"dex"},{"a":46605,"t":"code","b":[16,237],"m":"bpl","oa":46588,"o":"b_B5FC"},{"a":46607,"t":"code","b":[172,63,9],"m":"ldy","oa":2367,"o":"input_device"},{"a":46610,"t":"code","b":[185,242,181],"m":"lda","oa":46578,"o":"menu_marker_lo,y"},{"a":46613,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":46615,"t":"code","b":[185,246,181],"m":"lda","oa":46582,"o":"menu_marker_hi,y"},{"a":46618,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":46620,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":46622,"t":"code","b":[169,199],"m":"lda","o":"#$C7"},{"a":46624,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":46626,"t":"code","b":[173,57,9],"m":"lda","oa":2361,"o":"players_left"},{"a":46629,"t":"code","b":[24],"m":"clc"},{"a":46630,"t":"code","b":[105,49],"m":"adc","o":"#$31"},{"a":46632,"t":"code","b":[141,238,193],"m":"sta","oa":49646,"o":"a_C1EE"},{"a":46635,"t":"code","b":[173,64,9],"m":"lda","oa":2368,"o":"two_devices"},{"a":46638,"t":"code","b":[24],"m":"clc"},{"a":46639,"t":"code","b":[105,49],"m":"adc","o":"#$31"},{"a":46641,"t":"code","b":[141,158,193],"m":"sta","oa":49566,"o":"a_C19E"},{"a":46644,"t":"code","b":[96],"m":"rts"},{"a":46645,"l":"print_menu_text","c":"Prints menu_text from row 0. The format, shared by print_story_text and print_ending_text: a column byte, PETSCII capitals (a space becomes $1C, everything else AND $3F gives the screen code), $00 ends the line and moves two rows down, a byte with bit 7 set ($FF) ends the text. Rows come from screen_row_addresses.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46426]},{"a":46647,"t":"code","b":[168],"m":"tay"},{"a":46648,"t":"code","b":[170],"m":"tax"},{"a":46649,"t":"code","b":[141,30,2],"m":"sta","oa":542,"o":"row_counter"},{"a":46652,"l":"j_B63C","t":"code","b":[173,30,2],"m":"lda","oa":542,"o":"row_counter","x":[46702]},{"a":46655,"t":"code","b":[10],"m":"asl","o":"a"},{"a":46656,"t":"code","b":[168],"m":"tay"},{"a":46657,"t":"code","b":[185,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,y"},{"a":46660,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":46662,"t":"code","b":[185,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,y"},{"a":46665,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":46667,"t":"code","b":[189,18,183],"m":"lda","oa":46866,"o":"menu_text,x"},{"a":46670,"t":"code","b":[232],"m":"inx"},{"a":46671,"t":"code","b":[168],"m":"tay"},{"a":46672,"l":"j_B650","t":"code","b":[189,18,183],"m":"lda","oa":46866,"o":"menu_text,x","x":[46693]},{"a":46675,"t":"code","b":[232],"m":"inx"},{"a":46676,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46678,"t":"code","b":[240,16],"m":"beq","oa":46696,"o":"b_B668"},{"a":46680,"t":"code","b":[48,23],"m":"bmi","oa":46705,"o":"r_B671"},{"a":46682,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":46684,"t":"code","b":[208,2],"m":"bne","oa":46688,"o":"b_B660"},{"a":46686,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":46688,"l":"b_B660","t":"code","b":[41,63],"m":"and","o":"#$3F","x":[46684]},{"a":46690,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":46692,"t":"code","b":[200],"m":"iny"},{"a":46693,"t":"code","b":[76,80,182],"m":"jmp","oa":46672,"o":"j_B650"},{"a":46696,"l":"b_B668","t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter","x":[46678]},{"a":46699,"t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter"},{"a":46702,"t":"code","b":[76,60,182],"m":"jmp","oa":46652,"o":"j_B63C"},{"a":46705,"l":"r_B671","t":"code","b":[96],"m":"rts","x":[46680]},{"a":46706,"l":"print_story_text","c":"Prints story_text from row 4 (format as print_menu_text). Called from input_menu.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46475]},{"a":46708,"t":"code","b":[168],"m":"tay"},{"a":46709,"t":"code","b":[170],"m":"tax"},{"a":46710,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":46712,"t":"code","b":[141,30,2],"m":"sta","oa":542,"o":"row_counter"},{"a":46715,"l":"j_B67B","t":"code","b":[173,30,2],"m":"lda","oa":542,"o":"row_counter","x":[46765]},{"a":46718,"t":"code","b":[10],"m":"asl","o":"a"},{"a":46719,"t":"code","b":[168],"m":"tay"},{"a":46720,"t":"code","b":[185,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,y"},{"a":46723,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":46725,"t":"code","b":[185,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,y"},{"a":46728,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":46730,"t":"code","b":[189,254,183],"m":"lda","oa":47102,"o":"story_text,x"},{"a":46733,"t":"code","b":[232],"m":"inx"},{"a":46734,"t":"code","b":[168],"m":"tay"},{"a":46735,"l":"j_B68F","t":"code","b":[189,254,183],"m":"lda","oa":47102,"o":"story_text,x","x":[46756]},{"a":46738,"t":"code","b":[232],"m":"inx"},{"a":46739,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46741,"t":"code","b":[240,16],"m":"beq","oa":46759,"o":"b_B6A7"},{"a":46743,"t":"code","b":[48,23],"m":"bmi","oa":46768,"o":"r_B6B0"},{"a":46745,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":46747,"t":"code","b":[208,2],"m":"bne","oa":46751,"o":"b_B69F"},{"a":46749,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":46751,"l":"b_B69F","t":"code","b":[41,63],"m":"and","o":"#$3F","x":[46747]},{"a":46753,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":46755,"t":"code","b":[200],"m":"iny"},{"a":46756,"t":"code","b":[76,143,182],"m":"jmp","oa":46735,"o":"j_B68F"},{"a":46759,"l":"b_B6A7","t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter","x":[46741]},{"a":46762,"t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter"},{"a":46765,"t":"code","b":[76,123,182],"m":"jmp","oa":46715,"o":"j_B67B"},{"a":46768,"l":"r_B6B0","t":"code","b":[96],"m":"rts","x":[46743]},{"a":46769,"l":"print_ending_text","c":"Prints ending_text from row 4 (format as print_menu_text). Called from $969F after Doh; not reached in the simulator.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[38559]},{"a":46771,"t":"code","b":[168],"m":"tay"},{"a":46772,"t":"code","b":[170],"m":"tax"},{"a":46773,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":46775,"t":"code","b":[141,30,2],"m":"sta","oa":542,"o":"row_counter"},{"a":46778,"l":"j_B6BA","t":"code","b":[173,30,2],"m":"lda","oa":542,"o":"row_counter","x":[46828]},{"a":46781,"t":"code","b":[10],"m":"asl","o":"a"},{"a":46782,"t":"code","b":[168],"m":"tay"},{"a":46783,"t":"code","b":[185,139,247],"m":"lda","oa":63371,"o":"screen_row_addresses,y"},{"a":46786,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":46788,"t":"code","b":[185,140,247],"m":"lda","oa":63372,"o":"screen_row_addresses_hi,y"},{"a":46791,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":46793,"t":"code","b":[189,176,184],"m":"lda","oa":47280,"o":"ending_text,x"},{"a":46796,"t":"code","b":[232],"m":"inx"},{"a":46797,"t":"code","b":[168],"m":"tay"},{"a":46798,"l":"j_B6CE","t":"code","b":[189,176,184],"m":"lda","oa":47280,"o":"ending_text,x","x":[46819]},{"a":46801,"t":"code","b":[232],"m":"inx"},{"a":46802,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":46804,"t":"code","b":[240,16],"m":"beq","oa":46822,"o":"b_B6E6"},{"a":46806,"t":"code","b":[48,23],"m":"bmi","oa":46831,"o":"r_B6EF"},{"a":46808,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":46810,"t":"code","b":[208,2],"m":"bne","oa":46814,"o":"b_B6DE"},{"a":46812,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":46814,"l":"b_B6DE","t":"code","b":[41,63],"m":"and","o":"#$3F","x":[46810]},{"a":46816,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":46818,"t":"code","b":[200],"m":"iny"},{"a":46819,"t":"code","b":[76,206,182],"m":"jmp","oa":46798,"o":"j_B6CE"},{"a":46822,"l":"b_B6E6","t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter","x":[46804]},{"a":46825,"t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter"},{"a":46828,"t":"code","b":[76,186,182],"m":"jmp","oa":46778,"o":"j_B6BA"},{"a":46831,"l":"r_B6EF","t":"code","b":[96],"m":"rts","x":[46806]},{"a":46832,"l":"clear_text_screen","c":"Clears the text screen: $1C (blank) into $C000-$C3E7 and colour 3 into $D800-$DBE7 (STA $BFFF,Y and the like with Y = $FA down to 1).","t":"code","b":[160,250],"m":"ldy","o":"#$FA","x":[38556,38570,46423,46472]},{"a":46834,"l":"b_B6F2","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[46863]},{"a":46836,"t":"code","b":[153,255,191],"m":"sta","oa":49151,"o":"clear_screen_base,y"},{"a":46839,"t":"code","b":[153,249,192],"m":"sta","oa":49401,"o":"f_C0F9,y"},{"a":46842,"t":"code","b":[153,243,193],"m":"sta","oa":49651,"o":"f_C1F3,y"},{"a":46845,"t":"code","b":[153,237,194],"m":"sta","oa":49901,"o":"f_C2ED,y"},{"a":46848,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":46850,"t":"code","b":[153,255,215],"m":"sta","o":"$D7FF,y"},{"a":46853,"t":"code","b":[153,249,216],"m":"sta","o":"$D8F9,y"},{"a":46856,"t":"code","b":[153,243,217],"m":"sta","o":"$D9F3,y"},{"a":46859,"t":"code","b":[153,237,218],"m":"sta","o":"$DAED,y"},{"a":46862,"t":"code","b":[136],"m":"dey"},{"a":46863,"t":"code","b":[208,225],"m":"bne","oa":46834,"o":"b_B6F2"},{"a":46865,"t":"code","b":[96],"m":"rts"},{"a":46866,"l":"menu_text","c":"The input menu's text (print_menu_text format): SELECT YOUR INPUT DEVICE / NEOS MOUSE / JOYSTICK / KEYBOARD / PADDLES / 1 DEVICE / 1 PLAYER / SELECT OPTION USING FIRST LETTER / N J K P D 1 2 PLAYERS / FIRE BUTTON STARTS GAME / DISCONNECT MOUSE TO SELECT OPTION / @ TAITO 1986 @ IMAGINE 1984 (@ is screen code 0).","t":"byte","b":[6,83,69,76,69,67,84,32],"x":[46667,46672]},{"a":46874,"t":"byte","b":[89,79,85,82,32,73,78,80]},{"a":46882,"t":"byte","b":[85,84,32,68,69,86,73,67]},{"a":46890,"t":"byte","b":[69,0,13,78,69,79,83,32]},{"a":46898,"t":"byte","b":[77,79,85,83,69,0,14,74]},{"a":46906,"t":"byte","b":[79,89,83,84,73,67,75,0]},{"a":46914,"t":"byte","b":[14,75,69,89,66,79,65,82]},{"a":46922,"t":"byte","b":[68,0,15,80,65,68,68,76]},{"a":46930,"t":"byte","b":[69,83,0,14,49,32,68,69]},{"a":46938,"t":"byte","b":[86,73,67,69,32,0,14,49]},{"a":46946,"t":"byte","b":[32,80,76,65,89,69,82,32]},{"a":46954,"t":"byte","b":[0,2,83,69,76,69,67,84]},{"a":46962,"t":"byte","b":[32,79,80,84,73,79,78,32]},{"a":46970,"t":"byte","b":[85,83,73,78,71,32,70,73]},{"a":46978,"t":"byte","b":[82,83,84,32,76,69,84,84]},{"a":46986,"t":"byte","b":[69,82,0,7,32,78,32,74]},{"a":46994,"t":"byte","b":[32,75,32,80,32,68,32,49]},{"a":47002,"t":"byte","b":[32,50,32,80,76,65,89,69]},{"a":47010,"t":"byte","b":[82,83,0,6,70,73,82,69]},{"a":47018,"t":"byte","b":[32,66,85,84,84,79,78,32]},{"a":47026,"t":"byte","b":[83,84,65,82,84,83,32,71]},{"a":47034,"t":"byte","b":[65,77,69,0,2,68,73,83]},{"a":47042,"t":"byte","b":[67,79,78,78,69,67,84,32]},{"a":47050,"t":"byte","b":[77,79,85,83,69,32,84,79]},{"a":47058,"t":"byte","b":[32,83,69,76,69,67,84,32]},{"a":47066,"t":"byte","b":[79,80,84,73,79,78,0,4]},{"a":47074,"t":"byte","b":[64,32,84,65,73,84,79,32]},{"a":47082,"t":"byte","b":[49,57,56,54,32,64,32,73]},{"a":47090,"t":"byte","b":[77,65,71,73,78,69,32,49]},{"a":47098,"t":"byte","b":[57,56,52,255]},{"a":47102,"l":"story_text","c":"The story before round 1 (print_story_text): THE ERA AND TIME OF THIS STORY / IS UNKNOWN / AFTER THE MOTHERSHIP  ARKANOID / WAS DESTROYED A SPACECRAFT VAUS / SCRAMBLED AWAY FROM IT / BUT ONLY TO BE TRAPPED IN SPACE / BY SOMEONE.","t":"byte","b":[5,84,72,69,32,69,82,65],"x":[46730,46735]},{"a":47110,"t":"byte","b":[32,65,78,68,32,84,73,77]},{"a":47118,"t":"byte","b":[69,32,79,70,32,84,72,73]},{"a":47126,"t":"byte","b":[83,32,83,84,79,82,89,0]},{"a":47134,"t":"byte","b":[14,73,83,32,85,78,75,78]},{"a":47142,"t":"byte","b":[79,87,78,0,4,65,70,84]},{"a":47150,"t":"byte","b":[69,82,32,84,72,69,32,77]},{"a":47158,"t":"byte","b":[79,84,72,69,82,83,72,73]},{"a":47166,"t":"byte","b":[80,32,32,65,82,75,65,78]},{"a":47174,"t":"byte","b":[79,73,68,0,4,87,65,83]},{"a":47182,"t":"byte","b":[32,68,69,83,84,82,79,89]},{"a":47190,"t":"byte","b":[69,68,32,65,32,83,80,65]},{"a":47198,"t":"byte","b":[67,69,67,82,65,70,84,32]},{"a":47206,"t":"byte","b":[86,65,85,83,0,8,83,67]},{"a":47214,"t":"byte","b":[82,65,77,66,76,69,68,32]},{"a":47222,"t":"byte","b":[65,87,65,89,32,70,82,79]},{"a":47230,"t":"byte","b":[77,32,73,84,0,4,66,85]},{"a":47238,"t":"byte","b":[84,32,79,78,76,89,32,84]},{"a":47246,"t":"byte","b":[79,32,66,69,32,84,82,65]},{"a":47254,"t":"byte","b":[80,80,69,68,32,73,78,32]},{"a":47262,"t":"byte","b":[83,80,65,67,69,0,15,66]},{"a":47270,"t":"byte","b":[89,32,83,79,77,69,79,78]},{"a":47278,"t":"byte","b":[69,255]},{"a":47280,"l":"ending_text","c":"The ending after Doh (print_ending_text): DIMENSION CONTROLLING FORT DOH / HAS NOW BEEN DEMOLISHED AND TIME / STARTED FLOWING BACKWARDS VAUS / MANAGED TO ESCAPE FROM THE DISTORTED / SPACE BUT THE REAL VOYAGE OF ARKANOID / IN THE GALAXY HAS ONLY NOW STARTED.","t":"byte","b":[5,68,73,77,69,78,83,73],"x":[46793,46798]},{"a":47288,"t":"byte","b":[79,78,32,67,79,78,84,82]},{"a":47296,"t":"byte","b":[79,76,76,73,78,71,32,70]},{"a":47304,"t":"byte","b":[79,82,84,32,68,79,72,0]},{"a":47312,"t":"byte","b":[4,72,65,83,32,78,79,87]},{"a":47320,"t":"byte","b":[32,66,69,69,78,32,68,69]},{"a":47328,"t":"byte","b":[77,79,76,73,83,72,69,68]},{"a":47336,"t":"byte","b":[32,65,78,68,32,84,73,77]},{"a":47344,"t":"byte","b":[69,0,5,83,84,65,82,84]},{"a":47352,"t":"byte","b":[69,68,32,70,76,79,87,73]},{"a":47360,"t":"byte","b":[78,71,32,66,65,67,75,87]},{"a":47368,"t":"byte","b":[65,82,68,83,32,86,65,85]},{"a":47376,"t":"byte","b":[83,0,2,77,65,78,65,71]},{"a":47384,"t":"byte","b":[69,68,32,84,79,32,69,83]},{"a":47392,"t":"byte","b":[67,65,80,69,32,70,82,79]},{"a":47400,"t":"byte","b":[77,32,84,72,69,32,68,73]},{"a":47408,"t":"byte","b":[83,84,79,82,84,69,68,0]},{"a":47416,"t":"byte","b":[2,83,80,65,67,69,32,66]},{"a":47424,"t":"byte","b":[85,84,32,84,72,69,32,82]},{"a":47432,"t":"byte","b":[69,65,76,32,86,79,89,65]},{"a":47440,"t":"byte","b":[71,69,32,79,70,32,65,82]},{"a":47448,"t":"byte","b":[75,65,78,79,73,68,0,4]},{"a":47456,"t":"byte","b":[73,78,32,84,72,69,32,71]},{"a":47464,"t":"byte","b":[65,76,65,88,89,32,72,65]},{"a":47472,"t":"byte","b":[83,32,79,78,76,89,32,78]},{"a":47480,"t":"byte","b":[79,87,32,83,84,65,82,84]},{"a":47488,"t":"byte","b":[69,68,255]},{"a":47491,"l":"title_sprite_animate","c":"Every other frame ($0201 bit 0 clear) puts the next shape from title_sprite_frames ($0243 counts) into virtual sprite 8's shape ($F82D), stopping at the list's 0. Called once a tick by main_entry's loop while the tune plays.","t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter","x":[61554]},{"a":47494,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":47496,"t":"code","b":[208,14],"m":"bne","oa":47512,"o":"r_B998"},{"a":47498,"t":"code","b":[172,67,2],"m":"ldy","oa":579,"o":"gate_timer"},{"a":47501,"t":"code","b":[185,153,185],"m":"lda","oa":47513,"o":"title_sprite_frames,y"},{"a":47504,"t":"code","b":[240,6],"m":"beq","oa":47512,"o":"r_B998"},{"a":47506,"t":"code","b":[141,45,248],"m":"sta","oa":63533,"o":"slot_shape_8"},{"a":47509,"t":"code","b":[238,67,2],"m":"inc","oa":579,"o":"gate_timer"},{"a":47512,"l":"r_B998","t":"code","b":[96],"m":"rts","x":[47496,47504]},{"a":47513,"l":"title_sprite_frames","c":"Shapes for title_sprite_animate: $D1 $D2 $D3 $D4 $D3 $D2 $D1 $D5, then 0 to stop.","t":"byte","b":[209,210,211,212,211,210,209,213],"x":[47501]},{"a":47521,"t":"byte","b":[0]},{"a":47522,"l":"screen_off_after_tick","c":"Resets the tick counter $0200, waits one tick and blanks the screen ($D011 = $0B).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[38154,38354,39896,39940,61483,61562]},{"a":47524,"t":"code","b":[141,0,2],"m":"sta","oa":512,"o":"frame_ticks"},{"a":47527,"t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick"},{"a":47530,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":47532,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":47535,"t":"code","b":[96],"m":"rts"},{"a":47536,"l":"screen_on_after_tick","c":"Resets the tick counter $0200, waits one tick and turns the display on ($D011 bit 7 cleared, bit 4 set).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[1748,38618]},{"a":47538,"t":"code","b":[141,0,2],"m":"sta","oa":512,"o":"frame_ticks"},{"a":47541,"t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick"},{"a":47544,"t":"code","b":[173,17,208],"m":"lda","o":"vic_control1"},{"a":47547,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":47549,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":47551,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":47554,"t":"code","b":[96],"m":"rts"},{"a":47555,"l":"startup","c":"Start-up, from $095D. Stops CIA 1 timer A ($DC04-$DC05 = 0), sets CIA 2 timer A's high byte to 1 and enables its NMI ($DD0D = $81), clears CIA 1's control A ($DC0E = 0), runs the serial-port protection ($5F42, which also XORs $BA0A-$BA6A through $A949), the multiplexer (mux_init), CIA 2's NMI timer (nmi_timer_init) and the raster interrupt (irq_init); then fills its own first 40 bytes ($B9C3-$B9EA) with $20, CLI and JMP $F000 (main_entry). Runs once.","t":"code","b":[216],"m":"cld","x":[2397,47598]},{"a":47556,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47558,"t":"code","b":[141,4,220],"m":"sta","o":"cia1_timer_a_lo"},{"a":47561,"t":"code","b":[141,5,220],"m":"sta","o":"cia1_timer_a_hi"},{"a":47564,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":47566,"t":"code","b":[141,5,221],"m":"sta","o":"cia2_timer_a_hi"},{"a":47569,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":47571,"t":"code","b":[141,13,221],"m":"sta","o":"cia2_interrupt"},{"a":47574,"t":"code","b":[173,13,221],"m":"lda","o":"cia2_interrupt"},{"a":47577,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47579,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":47582,"t":"code","b":[32,66,95],"m":"jsr","oa":24386,"o":"protection_serial_check"},{"a":47585,"t":"code","b":[32,254,247],"m":"jsr","oa":63486,"o":"mux_init"},{"a":47588,"t":"code","b":[32,195,240],"m":"jsr","oa":61635,"o":"nmi_timer_init"},{"a":47591,"t":"code","b":[32,49,248],"m":"jsr","oa":63537,"o":"irq_init"},{"a":47594,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":47596,"t":"code","b":[160,39],"m":"ldy","o":"#$27"},{"a":47598,"l":"b_B9EE","t":"code","b":[153,195,185],"m":"sta","oa":47555,"o":"startup,y","x":[47602]},{"a":47601,"t":"code","b":[136],"m":"dey"},{"a":47602,"t":"code","b":[16,250],"m":"bpl","oa":47598,"o":"b_B9EE"},{"a":47604,"t":"code","b":[88],"m":"cli"},{"a":47605,"t":"code","b":[76,0,240],"m":"jmp","oa":61440,"o":"main_entry"},{"a":47608,"l":"unused_protection_entry","c":"Unused: 18 bytes nothing reaches: LDA #$90 / STA $DD0E / LAX $BA64 / LDY #$00 / NOP $AD / JSR $A949 / LAX $BA63 (the LAX and two-byte NOP are undocumented opcodes), running on into protection_check_plain: an entry that would XOR that block with $A949 and then run it.","t":"byte","b":[169,144,141,14,221,175,100,186]},{"a":47616,"t":"byte","b":[160,0,68,173,32,73,169,175]},{"a":47624,"t":"byte","b":[99,186]},{"a":47626,"l":"protection_check_plain","c":"97 bytes ($BA0A-$BA6A) that start-up XORs once with $A71A-$A77A ($A949, called from $5F51). In the image as loaded they are plain code; the XOR turns them into noise, the state in play (play-ram matches entry XOR key, apart from $BA65). The plain code: a serial-port check like $5F57-$5F83 but longer: pulses CIA 1 timer A ($DC0E = $D9) and waits for its flag, 16 and then 16 times more, testing the serial-port flag ($DC0D bit 3, kept in $BA65) after each run, then shifts $DC0C out and waits three more times; any failure sets $0944 = 1 (tested at $A2CB, which then calls $A523) and $BA65 = 1; every exit is JMP $A949 (XOR again). Nothing calls it in this build.","t":"byte","b":[169,217,141,14,220,173,13,220],"x":[43339,43345]},{"a":47634,"t":"byte","b":[141,101,186,41,1,240,246,202]},{"a":47642,"t":"byte","b":[16,238,173,101,186,41,8,240]},{"a":47650,"t":"byte","b":[53,162,15,169,217,141,14,220]},{"a":47658,"t":"byte","b":[173,13,220,141,101,186,41,1]},{"a":47666,"t":"byte","b":[240,246,202,16,238,173,101,186]},{"a":47674,"t":"byte","b":[41,8,240,26,141,12,220,162]},{"a":47682,"t":"byte","b":[2,169,217,141,14,220,173,13]},{"a":47690,"t":"byte","b":[220,41,1,240,249,202,16,241]},{"a":47698,"t":"byte","b":[141,12,220,76,73,169,169,1]},{"a":47706,"t":"byte","b":[141,68,9,141,101,186,76,73]},{"a":47714,"t":"byte","b":[169,12,248]},{"a":47717,"l":"protection_status","c":"Byte inside the XORed block: $00 in the image; the protection at $5F5F stores $DC0D's value here ($09 on VICE) after the block has been XORed, and the plain code at $BA12 would keep the same there.","t":"byte","b":[0,186,76,73,169,12],"x":[24415,24422]},{"a":47723,"l":"old_build_irq_tail","c":"From here to $BFFF (1,429 bytes, labelled old_build_*): an earlier assembly of the $F7xx-$FFxx code, placed lower, never run and not referenced. These 16 bytes are the tail of its raster interrupt (JSR $BC3D sort, JSR $BA19, JMP $BA37), beginning mid-instruction; the XORed block before it sits where the rest of that old handler would have been.","t":"byte","b":[248,0,78,121,137,141,220,32]},{"a":47731,"t":"byte","b":[61,188,32,25,186,76,55,186]},{"a":47739,"l":"old_build_slot_colours","c":"Old build: colours of 30 virtual sprites (all $01), the forerunner of slot_colours (12 slots). Unused.","t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":47747,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":47755,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":47763,"t":"byte","b":[1,1,1,1,1,1]},{"a":47769,"l":"old_build_slot_shapes","c":"Old build: shapes of 30 virtual sprites (all $40), the forerunner of slot_shapes. Unused.","t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":47777,"t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":47785,"t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":47793,"t":"byte","b":[64,64,64,64,64,64]},{"a":47799,"l":"old_build_irq_init","c":"Old build of irq_init: SEI, IRQ vector $B971, raster interrupt on, $DC0D = 1, $01 = $35, $08 = 5, raster $F9. Unused; nothing jumps here.","t":"byte","b":[120,169,113,141,254,255,169,185]},{"a":47807,"t":"byte","b":[141,255,255,169,1,141,26,208]},{"a":47815,"t":"byte","b":[141,13,220,173,13,220,169,53]},{"a":47823,"t":"byte","b":[133,1,169,5,133,8,169,249]},{"a":47831,"t":"byte","b":[141,18,208,96]},{"a":47835,"l":"old_build_nmi_a","c":"Old build of nmi_frame_a with its sound call (as sound_tick, $BB0F) and second phase at $BB2B (tick $0200, timers $0212/$0213, vector $B971, NMI vector $BB81). Unused.","t":"byte","b":[72,173,13,221,41,8,240,9]},{"a":47843,"t":"byte","b":[76,137,187,104,170,104,168,104]},{"a":47851,"t":"byte","b":[64,152,72,138,72,216,174,210]},{"a":47859,"t":"byte","b":[187,208,53,169,248,141,6,221]},{"a":47867,"t":"byte","b":[169,36,141,7,221,169,25,141]},{"a":47875,"t":"byte","b":[15,221,232,142,210,187,32,15]},{"a":47883,"t":"byte","b":[187,76,230,186,88,32,93,43]},{"a":47891,"t":"byte","b":[32,21,44,32,108,45,32,197]},{"a":47899,"t":"byte","b":[46,32,34,48,32,96,49,32]},{"a":47907,"t":"byte","b":[210,50,96,68,236,224,146,73]},{"a":47915,"t":"byte","b":[238,0,2,173,18,2,240,22]},{"a":47923,"t":"byte","b":[173,19,2,201,2,208,12,32]},{"a":47931,"t":"byte","b":[23,52,208,10,169,0,141,18]},{"a":47939,"t":"byte","b":[2,240,3,206,18,2,162,10]},{"a":47947,"t":"byte","b":[169,0,157,5,208,202,202,16]},{"a":47955,"t":"byte","b":[249,173,254,255,201,240,208,17]},{"a":47963,"t":"byte","b":[169,113,141,254,255,169,185,141]},{"a":47971,"t":"byte","b":[255,255,169,29,133,4,238,18]},{"a":47979,"t":"byte","b":[208,169,129,141,250,255,169,187]},{"a":47987,"t":"byte","b":[141,251,255,173,9,2,208,3]},{"a":47995,"t":"byte","b":[32,15,187,76,230,186]},{"a":48001,"l":"old_build_nmi_b","c":"Old build of nmi_frame_end: the same serial-port path to JMP $0107, otherwise NMI vector $BADB and timer B high byte 8 ($BBC1); phase byte at $BBD2 and drum delays $23 $14 $0C $09 $06 $03 at $BBD3. Unused.","t":"byte","b":[72,173,13,221,41,8,240,42]},{"a":48009,"t":"byte","b":[173,12,221,72,169,2,141,4]},{"a":48017,"t":"byte","b":[221,169,0,141,5,221,169,127]},{"a":48025,"t":"byte","b":[141,13,221,169,81,141,14,221]},{"a":48033,"t":"byte","b":[138,72,162,127,202,16,253,104]},{"a":48041,"t":"byte","b":[170,104,141,12,221,120,104,76]},{"a":48049,"t":"byte","b":[7,1,138,72,169,219,141,250]},{"a":48057,"t":"byte","b":[255,169,186,141,251,255,169,8]},{"a":48065,"t":"byte","b":[141,7,221,169,25,141,15,221]},{"a":48073,"t":"byte","b":[169,0,141,210,187,104,170,104]},{"a":48081,"t":"byte","b":[64,0,35,20,12,9,6,3]},{"a":48089,"l":"old_build_mux_first","c":"Old build of mux_first_six, with the sprite tables at $9407/$9443/$947F and 30 slots ($04 = $1D). Unused.","t":"byte","b":[164,4,190,7,148,189,67,148]},{"a":48097,"t":"byte","b":[133,9,164,8,189,123,186,153]},{"a":48105,"t":"byte","b":[41,208,189,153,186,153,250,195]},{"a":48113,"t":"byte","b":[189,127,148,190,125,189,157,0]},{"a":48121,"t":"byte","b":[208,165,9,157,1,208,198,4]},{"a":48129,"t":"byte","b":[48,27,198,8,16,210,169,5]},{"a":48137,"t":"byte","b":[133,8,164,4,190,7,148,189]},{"a":48145,"t":"byte","b":[67,148,56,233,14,201,240,176]},{"a":48153,"t":"byte","b":[4,141,18,208,96,169,5,133]},{"a":48161,"t":"byte","b":[8,169,29,133,4,173,254,255]},{"a":48169,"t":"byte","b":[201,113,240,15,169,247,141,18]},{"a":48177,"t":"byte","b":[208,169,113,141,254,255,169,185]},{"a":48185,"t":"byte","b":[141,255,255,96]},{"a":48189,"l":"old_build_mux_sort","c":"Old build of mux_sort for 30 slots (order list $9425, Y $9461, CPX #$1E). Unused.","t":"byte","b":[169,0,133,11,162,1,188,36]},{"a":48197,"t":"byte","b":[148,185,97,148,188,37,148,217]},{"a":48205,"t":"byte","b":[97,148,176,46,185,97,148,132]},{"a":48213,"t":"byte","b":[6,134,7,202,202,48,10,188]},{"a":48221,"t":"byte","b":[37,148,217,97,148,240,2,176]},{"a":48229,"t":"byte","b":[243,232,230,11,134,12,166,7]},{"a":48237,"t":"byte","b":[189,36,148,157,37,148,202,228]},{"a":48245,"t":"byte","b":[12,208,245,165,6,157,37,148]},{"a":48253,"t":"byte","b":[166,7,232,224,30,208,191,96]},{"a":48261,"l":"old_build_panel","c":"Old build of the panel routines for one player: lives from $1F0C to $C1B5-$C1B6 ($BC85), score $1F00-$1F02 to $C187 ($BCA5), add score $1F09-$1F0B to $1F00 ($BCC6). Unused.","t":"byte","b":[173,12,31,41,240,74,74,74]},{"a":48269,"t":"byte","b":[74,208,3,169,28,44,105,48]},{"a":48277,"t":"byte","b":[141,181,193,173,12,31,41,15]},{"a":48285,"t":"byte","b":[208,0,105,48,141,182,193,96]},{"a":48293,"t":"byte","b":[162,2,160,0,189,0,31,72]},{"a":48301,"t":"byte","b":[41,240,74,74,74,74,105,48]},{"a":48309,"t":"byte","b":[153,135,193,200,104,41,15,105]},{"a":48317,"t":"byte","b":[48,153,135,193,200,202,16,228]},{"a":48325,"t":"byte","b":[96,248,173,9,31,24,109,0]},{"a":48333,"t":"byte","b":[31,141,0,31,173,10,31,109]},{"a":48341,"t":"byte","b":[1,31,141,1,31,173,11,31]},{"a":48349,"t":"byte","b":[109,2,31,141,2,31,169,0]},{"a":48357,"t":"byte","b":[141,9,31,141,10,31,141,11]},{"a":48365,"t":"byte","b":[31,216,96]},{"a":48368,"l":"old_build_mux_irq","c":"Old build of irq_mux (30 slots, IRQ vector $B971 at the end). Then at $BD7D the old position offsets and bit masks (as $FC7B-$FC98). Unused.","t":"byte","b":[72,152,72,138,72,216,169,255]},{"a":48376,"t":"byte","b":[141,25,208,164,4,190,7,148]},{"a":48384,"t":"byte","b":[189,67,148,133,9,233,14,205]},{"a":48392,"t":"byte","b":[18,208,176,83,164,8,189,123]},{"a":48400,"t":"byte","b":[186,153,41,208,189,153,186,153]},{"a":48408,"t":"byte","b":[250,195,189,127,148,190,125,189]},{"a":48416,"t":"byte","b":[157,0,208,165,9,157,1,208]},{"a":48424,"t":"byte","b":[198,4,48,18,198,8,16,203]},{"a":48432,"t":"byte","b":[169,5,133,8,76,251,188,198]},{"a":48440,"t":"byte","b":[4,48,3,76,251,188,169,5]},{"a":48448,"t":"byte","b":[133,8,169,29,133,4,173,254]},{"a":48456,"t":"byte","b":[255,201,113,240,33,169,247,141]},{"a":48464,"t":"byte","b":[18,208,169,113,141,254,255,169]},{"a":48472,"t":"byte","b":[185,141,255,255,76,110,189,24]},{"a":48480,"t":"byte","b":[105,2,205,18,208,144,13,201]},{"a":48488,"t":"byte","b":[240,176,211,141,18,208,104,170]},{"a":48496,"t":"byte","b":[104,168,104,64,238,18,208,104]},{"a":48504,"t":"byte","b":[170,104,168,104,64,4,6,8]},{"a":48512,"t":"byte","b":[10,12,14,254,253,251,247,239]},{"a":48520,"t":"byte","b":[223,191,127,1,2,4,8,16]},{"a":48528,"t":"byte","b":[32,64,128,128,64,32,16,8]},{"a":48536,"t":"byte","b":[4,2,1]},{"a":48539,"l":"old_build_read_input","c":"Old build of read_input_move_vaus that reads only the paddles ($BEA7), then the old place_vaus at $BDD4 (Vaus X in $949D/$949E, edge flag $0238), delays at $BDCE and the six bytes at $BE4F (as $FD75). Unused.","t":"byte","b":[173,55,2,240,1,96,32,167]},{"a":48547,"t":"byte","b":[190,142,6,2,76,212,189,141]},{"a":48555,"t":"byte","b":[49,2,138,73,255,16,14,56]},{"a":48563,"t":"byte","b":[109,6,2,176,2,169,0,141]},{"a":48571,"t":"byte","b":[6,2,76,212,189,56,109,6]},{"a":48579,"t":"byte","b":[2,144,2,169,255,141,6,2]},{"a":48587,"t":"byte","b":[76,212,189,5,30,25,20,15]},{"a":48595,"t":"byte","b":[10,173,6,2,162,0,142,11]},{"a":48603,"t":"byte","b":[2,56,237,10,2,144,4,201]},{"a":48611,"t":"byte","b":[32,176,13,173,6,2,56,237]},{"a":48619,"t":"byte","b":[10,2,56,233,32,141,11,2]},{"a":48627,"t":"byte","b":[173,6,2,24,109,10,2,176]},{"a":48635,"t":"byte","b":[9,201,219,144,52,169,1,141]},{"a":48643,"t":"byte","b":[56,2,173,6,2,24,109,10]},{"a":48651,"t":"byte","b":[2,233,219,141,11,2,173,6]},{"a":48659,"t":"byte","b":[2,56,237,11,2,56,237,10]},{"a":48667,"t":"byte","b":[2,141,157,148,173,10,2,10]},{"a":48675,"t":"byte","b":[109,157,148,141,158,148,173,157]},{"a":48683,"t":"byte","b":[148,24,109,10,2,141,6,2]},{"a":48691,"t":"byte","b":[96,174,11,2,208,216,173,6]},{"a":48699,"t":"byte","b":[2,56,237,10,2,141,157,148]},{"a":48707,"t":"byte","b":[173,10,2,24,109,6,2,141]},{"a":48715,"t":"byte","b":[158,148,96,40,10,20,10,15]},{"a":48723,"t":"byte","b":[10,173]},{"a":48725,"l":"old_build_joystick","c":"Old build of the joystick reader: port 2 only ($DC00), with fixed steps $08/$FA/$F8/$06 depending on the Vaus position against $94A1. Unused.","t":"byte","b":[0,220,160,0,41,31,73,31]},{"a":48733,"t":"byte","b":[141,3,2,173,157,148,205,161]},{"a":48741,"t":"byte","b":[148,144,24,173,3,2,41,4]},{"a":48749,"t":"byte","b":[240,5,162,8,76,154,190,173]},{"a":48757,"t":"byte","b":[3,2,41,8,240,29,162,250]},{"a":48765,"t":"byte","b":[76,154,190,173,3,2,41,8]},{"a":48773,"t":"byte","b":[240,5,162,248,76,154,190,173]},{"a":48781,"t":"byte","b":[3,2,41,4,240,5,162,6]},{"a":48789,"t":"byte","b":[76,154,190,162,0,173,0,220]},{"a":48797,"t":"byte","b":[41,16,208,3,169,1,44,169]},{"a":48805,"t":"byte","b":[0,96]},{"a":48807,"l":"old_build_paddle","c":"Old build of read_paddle: $DC00 = $9F, fire from $DC00 masked by $BECF + $1F10, POT $D419+Y. Then its tables: fire bits $04 $08 ($BECF) and the 14 delays of drum_82 ($BED1). Unused.","t":"byte","b":[169,159,141,0,220,173,0,220]},{"a":48815,"t":"byte","b":[73,255,172,16,31,57,207,190]},{"a":48823,"t":"byte","b":[240,2,169,1,141,49,2,185]},{"a":48831,"t":"byte","b":[25,212,73,255,24,109,6,2]},{"a":48839,"t":"byte","b":[106,170,160,0,173,49,2,96]},{"a":48847,"t":"byte","b":[4,8,32,16,8,4,2,1]},{"a":48855,"t":"byte","b":[40,10,60,10,20,10,32,64]},{"a":48863,"l":"old_build_mouse","c":"Old build of read_neos_mouse for port 2 only: absolute $DC00 and $DC02 throughout (nibble kept in $BF9D), so without the TAX problem of the live reader at $FE86. Then a delay loop ($BF58), delays $40 $1E $3E $19 $3C $14 ($BF5D) and LDA #$01 / STA $D015 / STA $D027 / JMP $94C5 ($BF63). Unused.","t":"byte","b":[169,16,141,2,220,173,0,220]},{"a":48871,"t":"byte","b":[41,239,141,0,220,160,8,32]},{"a":48879,"t":"byte","b":[88,191,173,0,220,10,10,10]},{"a":48887,"t":"byte","b":[10,141,157,191,173,0,220,9]},{"a":48895,"t":"byte","b":[16,141,0,220,160,1,32,88]},{"a":48903,"t":"byte","b":[191,173,0,220,41,15,13,157]},{"a":48911,"t":"byte","b":[191,170,173,0,220,41,239,141]},{"a":48919,"t":"byte","b":[0,220,160,1,32,88,191,173]},{"a":48927,"t":"byte","b":[0,220,10,10,10,10,141,157]},{"a":48935,"t":"byte","b":[191,173,0,220,9,16,141,0]},{"a":48943,"t":"byte","b":[220,160,1,32,88,191,173,0]},{"a":48951,"t":"byte","b":[220,41,15,13,157,191,168,169]},{"a":48959,"t":"byte","b":[127,141,2,220,169,0,141,0]},{"a":48967,"t":"byte","b":[220,141,2,220,173,25,212,201]},{"a":48975,"t":"byte","b":[255,240,3,169,0,44,169,1]},{"a":48983,"t":"byte","b":[96,234,136,208,252,96,64,30]},{"a":48991,"t":"byte","b":[62,25,60,20,169,1,141,21]},{"a":48999,"t":"byte","b":[208,141,39,208,76,197,148]},{"a":49006,"l":"old_build_irq_sound","c":"Old build: a raster interrupt handler that sets the next interrupt at line $14, steps the old percussion script ($BFB2) and calls the sound driver's seven routines ($2C15-$32D2, then $2B5D). Unused.","t":"byte","b":[72,173,25,208,141,25,208,169]},{"a":49014,"t":"byte","b":[20,141,18,208,216,152,72,138]},{"a":49022,"t":"byte","b":[72,32,178,191,32,21,44,32]},{"a":49030,"t":"byte","b":[108,45,32,197,46,32,34,48]},{"a":49038,"t":"byte","b":[32,96,49,32,210,50,32,93]},{"a":49046,"t":"byte","b":[43,104,170,104,168,104,64,0]},{"a":49054,"l":"old_build_drum_play","c":"Old build of drum_play (JSR $AA79, volume $0F OR $3FFF) and from $BFB2 of drum_script_step (tables $B927, $BB26, $B21A, $AE39, $A045), running to $BFFF. Unused.","t":"byte","b":[165,223,240,85,169,0,133,223]},{"a":49062,"t":"byte","b":[32,121,170,169,15,13,255,63]},{"a":49070,"t":"byte","b":[141,24,212,96,198,220,208,65]},{"a":49078,"t":"byte","b":[160,0,177,218,48,26,162,255]},{"a":49086,"t":"byte","b":[232,221,39,185,208,250,189,38]},{"a":49094,"t":"byte","b":[187,141,209,191,189,26,178,141]},{"a":49102,"t":"byte","b":[210,191,32,68,162,76,182,191]},{"a":49110,"t":"byte","b":[133,223,170,200,177,218,133,220]},{"a":49118,"t":"byte","b":[165,218,24,105,2,133,218,165]},{"a":49126,"t":"byte","b":[219,105,0,133,219,189,57,174]},{"a":49134,"t":"byte","b":[141,167,191,189,69,160,141,168]},{"a":49142,"t":"byte","b":[191,96,189,57,174,141,180,191]},{"a":49150,"t":"byte","b":[189]},{"a":49151,"l":"clear_screen_base","c":"Last byte of the old build ($45). The label is the base of clear_text_screen's STA $BFFF,Y, which with Y from $FA down to 1 never writes this byte.","t":"byte","b":[69],"x":[46836]},{"a":49152,"t":"gap","n":1024,"x":[63058]},{"a":49152,"t":"note","l":"screen","c":"Screen memory, 1000 cells ($C000-$C3E7), bank 3. Runtime state: $B6F0 fills it with $1C (and colour RAM with 3) and the menu, story and play screens are drawn over that; the loaded bytes, a copy of the menu, are overwritten before they are shown. Row 0 is the top wall: $F64F copies 28 chars from $F6DE into $C000-$C01B.","note":"outside the tracked image","x":[63058]},{"a":49192,"t":"note","l":"f_C028","c":"Screen row 1: $F655-$F65A OR $10 into its first 28 cells, turning the background tiles $40-$4F into their shaded twins $50-$5F under the top wall.","note":"outside the tracked image","x":[63061,63066]},{"a":49343,"t":"note","l":"hiscore_digits","c":"Screen row 4, columns 31-36: the high score's six digits, written by $FB2F-$FB4D from BCD $0941-$0943 (digit + $30).","note":"outside the tracked image","x":[64319,64328]},{"a":49363,"t":"note","l":"f_C0D3","c":"Screen row 5, columns 11-16: the first of ten rows (5-14) that $970B saves to $02B0-$02EB, six cells each.","note":"outside the tracked image","x":[38669]},{"a":49401,"t":"note","l":"f_C0F9","c":"Screen row 6, column 9: the base address of the second of $B6F0's four 250-cell fills, which covers $C0FA-$C1F3.","note":"outside the tracked image","x":[46839]},{"a":49403,"t":"note","l":"f_C0FB","c":"Screen row 6, columns 11-16, saved by $9713 to $02B6.","note":"outside the tracked image","x":[38675]},{"a":49443,"t":"note","l":"f_C123","c":"Screen row 7, columns 11-16, saved by $9719 to $02BC.","note":"outside the tracked image","x":[38681]},{"a":49483,"t":"note","l":"f_C14B","c":"Screen row 8, columns 11-16, saved by $971F to $02C2.","note":"outside the tracked image","x":[38687]},{"a":49523,"t":"note","l":"f_C173","c":"Screen row 9, columns 11-16, saved by $9725 to $02C8.","note":"outside the tracked image","x":[38693]},{"a":49543,"t":"note","l":"p1_score_digits","c":"Screen row 9, columns 31-36: player 1's score, six digits written by $FB4F-$FB6D from BCD $0927-$0929.","note":"outside the tracked image","x":[64351,64360]},{"a":49563,"t":"note","l":"f_C19B","c":"Screen row 10, columns 11-16, saved by $972B to $02CE.","note":"outside the tracked image","x":[38699]},{"a":49565,"t":"note","l":"a_C19D","c":"Screen row 10, column 13: top-left cell of the 2x2-char picture $9824 draws from the table at $987E (char n, n+1 above n+2, n+3).","note":"outside the tracked image","x":[38962]},{"a":49566,"t":"note","l":"a_C19E","c":"Screen row 10, column 14: top-right cell of $9824's 2x2 picture; on the menu, $B631 writes the number of devices here ($0940 + $31).","note":"outside the tracked image","x":[38968,46641]},{"a":49589,"t":"note","l":"p1_lives_digits","c":"Screen row 10, columns 37-38: player 1's lives, from BCD $0936 (written at $FA62 and $FA76); the tens digit and a $99 value print as blanks.","note":"outside the tracked image","x":[64098]},{"a":49590,"t":"note","l":"a_C1B6","c":"Screen row 10, column 38: player 1 lives, units digit ($FA76; blank when $0936 = $99).","note":"outside the tracked image","x":[64118]},{"a":49603,"t":"note","l":"f_C1C3","c":"Screen row 11, columns 11-16, saved by $9731 to $02D4.","note":"outside the tracked image","x":[38705]},{"a":49605,"t":"note","l":"a_C1C5","c":"Screen row 11, column 13: bottom-left cell of $9824's 2x2 picture.","note":"outside the tracked image","x":[38973]},{"a":49606,"t":"note","l":"a_C1C6","c":"Screen row 11, column 14: bottom-right cell of $9824's 2x2 picture.","note":"outside the tracked image","x":[38978]},{"a":49629,"t":"note","l":"p1_round_digits","c":"Screen row 11, columns 37-38: player 1's round, $093D + 1 in decimal, written by $F39B.","note":"outside the tracked image","x":[62379]},{"a":49630,"t":"note","l":"a_C1DE","c":"Screen row 11, column 38: player 1 round, units digit ($F3A4).","note":"outside the tracked image","x":[62372]},{"a":49643,"t":"note","l":"f_C1EB","c":"Screen row 12, columns 11-16, saved by $9737 to $02DA.","note":"outside the tracked image","x":[38711]},{"a":49646,"t":"note","l":"a_C1EE","c":"Screen row 12, column 14: on the menu, the number of players ($0939 + $31), written by $B628.","note":"outside the tracked image","x":[46632]},{"a":49651,"t":"note","l":"f_C1F3","c":"Screen row 12, column 19: the base of the third of $B6F0's four 250-cell fills ($C1F4-$C2ED).","note":"outside the tracked image","x":[46842]},{"a":49683,"t":"note","l":"f_C213","c":"Screen row 13, columns 11-16, saved by $973D to $02E0.","note":"outside the tracked image","x":[38717]},{"a":49723,"t":"note","l":"f_C23B","c":"Screen row 14, columns 11-16, saved by $9743 to $02E6, the last row of $970B's save.","note":"outside the tracked image","x":[38723]},{"a":49901,"t":"note","l":"f_C2ED","c":"Screen row 18, column 29: the base of the last of $B6F0's four 250-cell fills ($C2EE-$C3E7).","note":"outside the tracked image","x":[46845]},{"a":49903,"t":"note","l":"p2_score_digits","c":"Screen row 18, columns 31-36: player 2's score, six digits written by $FB6F onward from BCD $092A-$092C.","note":"outside the tracked image","x":[64383,64392]},{"a":49912,"t":"note","l":"f_C2F8","c":"Screen row 19: $9BAE prints a message from the table at $9DD6 here (the GAME OVER messages, PETSCII AND $3F, spaces as $1C), with colours at $DAD0, $DAF8 and $DB20.","note":"outside the tracked image","x":[39854]},{"a":49949,"t":"note","l":"p2_lives_digits","c":"Screen row 19, columns 37-38: player 2's lives, from BCD $0937 (written at $FA8D and $FAA1).","note":"outside the tracked image","x":[64141]},{"a":49950,"t":"note","l":"a_C31E","c":"Screen row 19, column 38: player 2 lives, units digit ($FAA1; blank when $0937 = $99).","note":"outside the tracked image","x":[64161]},{"a":49989,"t":"note","l":"p2_round_digits","c":"Screen row 20, columns 37-38: player 2's round, $093E + 1 in decimal, written by $F3AE-$F3BE.","note":"outside the tracked image","x":[62398]},{"a":49990,"t":"note","l":"a_C346","c":"Screen row 20, column 38: player 2 round, units digit ($F3B7).","note":"outside the tracked image","x":[62391]},{"a":50059,"t":"note","l":"exit_cells","c":"Screen rows 22-24, column 27 ($C38B, $C3B3, $C3DB): the right wall's exit, given chars $E8, $E9, $EA by $F6B4-$F6BE.","note":"outside the tracked image","x":[63158]},{"a":50099,"t":"note","l":"a_C3B3","c":"Screen row 23, column 27: the exit's middle cell, char $E9 ($F6BA).","note":"outside the tracked image","x":[63162]},{"a":50139,"t":"note","l":"a_C3DB","c":"Screen row 24, column 27: the exit's bottom cell, char $EA ($F6BE).","note":"outside the tracked image","x":[63166]},{"a":50168,"t":"note","l":"sprite_pointers","c":"Sprite pointers ($C3F8-$C3FF, screen + $3F8): shape = $C000 + value x 64. Sprite 0 is set to $96 here by $F25D.","note":"outside the tracked image","x":[62047]},{"a":50169,"t":"note","l":"a_C3F9","c":"Sprite 1's pointer, set to $97 by $F262.","note":"outside the tracked image","x":[62052]},{"a":50170,"t":"note","l":"f_C3FA","c":"Sprite pointers 2-7, rewritten many times a frame by the multiplexer at $F974 and $FC15 from the table at $F825 (with colours from $F819 into $D029,Y).","note":"outside the tracked image","x":[63860,64533]},{"a":50176,"l":"chars_unused","c":"1 KB of character data laid out like chars 128-255 ($CC00-$CFFF) but not the same: chars 128-145 here are flat blocks where $CC00 has shaded bricks, and about a dozen others differ. Outside the character window ($D018 puts chars at $C800) and not referenced by any instruction found; only the first $29 bytes are read, by the collision code at $A28B-$A2C3 when it looks below the screen's last row (sim). Probably an earlier version left in the image; not checked further.","t":"byte","b":[64,64,63,63,63,63,63,63]},{"a":50184,"t":"byte","b":[0,255,255,255,255,255,255,255]},{"a":50192,"t":"byte","b":[0,63,53,53,53,53,53,53]},{"a":50200,"t":"byte","b":[0,21,31,31,31,31,63,63]},{"a":50208,"t":"byte","b":[0,63,53,53,53,53,53,63]},{"a":50216,"t":"byte","b":[0,21,21,21,21,21,21,63]},{"a":50224,"t":"byte","b":[0,255,85,85,85,85,85,85]},{"a":50232,"t":"byte","b":[0,95,255,255,253,253,253,85]},{"a":50240,"t":"byte","b":[0,255,87,87,87,87,87,255]},{"a":50248,"t":"byte","b":[0,87,87,87,87,87,87,255]},{"a":50256,"t":"byte","b":[0,63,58,58,58,58,58,58]},{"a":50264,"t":"byte","b":[0,42,47,47,47,47,63,63]},{"a":50272,"t":"byte","b":[0,63,58,58,58,58,58,63]},{"a":50280,"t":"byte","b":[0,42,42,42,42,42,42,63]},{"a":50288,"t":"byte","b":[0,255,170,170,170,170,170,170]},{"a":50296,"t":"byte","b":[0,175,255,255,255,255,255,170]},{"a":50304,"t":"byte","b":[0,255,171,171,171,171,171,255]},{"a":50312,"t":"byte","b":[0,171,171,171,171,171,171,255]},{"a":50320,"t":"byte","b":[0,0,0,2,2,2,2,2]},{"a":50328,"t":"byte","b":[47,191,175,62,251,42,250,42]},{"a":50336,"t":"byte","b":[255,255,187,238,169,101,149,85]},{"a":50344,"t":"byte","b":[255,255,187,238,171,86,85,86]},{"a":50352,"t":"byte","b":[252,255,190,239,191,171,175,171]},{"a":50360,"t":"byte","b":[0,0,0,128,128,224,32,224]},{"a":50368,"t":"byte","b":[4,11,4,11,4,11,4,4]},{"a":50376,"t":"byte","b":[16,208,16,208,16,208,16,16]},{"a":50384,"t":"byte","b":[7,10,6,8,4,40,42,47]},{"a":50392,"t":"byte","b":[224,160,160,32,32,32,168,232]},{"a":50400,"t":"byte","b":[19,31,18,31,18,31,18,31]},{"a":50408,"t":"byte","b":[244,244,196,180,196,180,196,180]},{"a":50416,"t":"byte","b":[19,30,31,31,20,11,11,9]},{"a":50424,"t":"byte","b":[196,180,244,196,36,224,32,160]},{"a":50432,"t":"byte","b":[2,2,2,2,10,10,11,11]},{"a":50440,"t":"byte","b":[128,64,128,64,160,208,224,208]},{"a":50448,"t":"byte","b":[7,7,27,24,31,28,31,28]},{"a":50456,"t":"byte","b":[208,208,208,228,52,244,52,244]},{"a":50464,"t":"byte","b":[47,8,11,2,2,3,11,40]},{"a":50472,"t":"byte","b":[56,224,224,128,128,192,224,232]},{"a":50480,"t":"byte","b":[35,47,115,78,191,206,123,206]},{"a":50488,"t":"byte","b":[4,248,205,177,205,179,238,191]},{"a":50496,"t":"byte","b":[0,1,3,3,7,15,31,31]},{"a":50504,"t":"byte","b":[128,184,187,191,187,185,187,191]},{"a":50512,"t":"byte","b":[0,14,14,142,206,238,207,143]},{"a":50520,"t":"byte","b":[0,0,24,60,121,243,231,207]},{"a":50528,"t":"byte","b":[187,206,243,206,47,10,0,0]},{"a":50536,"t":"byte","b":[238,179,255,178,200,160,0,0]},{"a":50544,"t":"byte","b":[166,233,166,233,182,237,255,15]},{"a":50552,"t":"byte","b":[106,155,106,155,106,187,255,240]},{"a":50560,"t":"byte","b":[102,153,85,85,85,150,233,255]},{"a":50568,"t":"byte","b":[102,153,85,85,85,85,171,255]},{"a":50576,"t":"byte","b":[85,106,106,106,106,106,107,107]},{"a":50584,"t":"byte","b":[85,170,170,170,170,170,255,0]},{"a":50592,"t":"byte","b":[80,247,86,206,60,248,224,0]},{"a":50600,"t":"byte","b":[107,107,107,107,107,107,107,107]},{"a":50608,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":50616,"t":"byte","b":[0,0,119,119,119,119,119,119]},{"a":50624,"t":"byte","b":[107,107,106,106,106,106,106,127]},{"a":50632,"t":"byte","b":[0,85,170,170,170,170,170,255]},{"a":50640,"t":"byte","b":[0,119,119,119,119,119,102,68]},{"a":50648,"t":"byte","b":[85,170,170,170,170,170,170,170]},{"a":50656,"t":"byte","b":[85,171,171,171,171,171,171,171]},{"a":50664,"t":"byte","b":[85,191,178,182,191,176,176,240]},{"a":50672,"t":"byte","b":[197,203,203,203,203,11,11,15]},{"a":50680,"t":"byte","b":[0,0,0,0,0,0,84,252]},{"a":50688,"t":"byte","b":[85,191,178,182,191,178,178,243]},{"a":50696,"t":"byte","b":[197,203,203,207,192,192,192,192]},{"a":50704,"t":"byte","b":[84,252,44,108,236,44,44,60]},{"a":50712,"t":"byte","b":[20,44,44,252,176,176,176,240]},{"a":50720,"t":"byte","b":[85,191,176,181,191,176,181,255]},{"a":50728,"t":"byte","b":[37,47,44,45,47,44,44,60]},{"a":50736,"t":"byte","b":[112,240,176,112,192,176,176,240]},{"a":50744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50752,"t":"byte","b":[96,240,120,60,30,60,120,240]},{"a":50760,"t":"byte","b":[0,224,192,128,0,0,0,0]},{"a":50768,"t":"byte","b":[169,160,128,128,160,224,228,186]},{"a":50776,"t":"byte","b":[106,10,2,2,10,11,27,175]},{"a":50784,"t":"byte","b":[189,236,171,234,250,190,106,154]},{"a":50792,"t":"byte","b":[110,58,251,170,171,190,170,169]},{"a":50800,"t":"byte","b":[169,160,128,128,160,164,186,173]},{"a":50808,"t":"byte","b":[106,10,2,2,10,26,174,126]},{"a":50816,"t":"byte","b":[172,235,166,233,250,190,106,154]},{"a":50824,"t":"byte","b":[58,234,155,106,171,190,170,169]},{"a":50832,"t":"byte","b":[169,160,128,168,182,173,172,171]},{"a":50840,"t":"byte","b":[106,10,2,26,170,186,58,234]},{"a":50848,"t":"byte","b":[166,233,165,233,250,190,106,154]},{"a":50856,"t":"byte","b":[154,90,107,90,107,190,170,169]},{"a":50864,"t":"byte","b":[169,160,190,169,172,170,165,169]},{"a":50872,"t":"byte","b":[106,10,190,154,58,170,154,106]},{"a":50880,"t":"byte","b":[165,233,165,233,186,166,106,154]},{"a":50888,"t":"byte","b":[90,90,107,90,107,190,170,169]},{"a":50896,"t":"byte","b":[175,238,171,230,170,229,169,229]},{"a":50904,"t":"byte","b":[185,238,172,235,250,190,106,154]},{"a":50912,"t":"byte","b":[110,186,59,234,171,190,170,169]},{"a":50920,"t":"byte","b":[254,250,251,234,155,170,91,106]},{"a":50928,"t":"byte","b":[245,233,251,253,187,142,35,204]},{"a":50936,"t":"byte","b":[102,85,85,149,166,234,187,239]},{"a":50944,"t":"byte","b":[101,85,85,86,107,238,187,238]},{"a":50952,"t":"byte","b":[91,111,188,239,179,254,200,51]},{"a":50960,"t":"byte","b":[48,252,239,187,174,171,170,218]},{"a":50968,"t":"byte","b":[51,204,243,188,238,187,238,170]},{"a":50976,"t":"byte","b":[63,243,62,251,238,187,234,170]},{"a":50984,"t":"byte","b":[15,255,238,187,238,170,166,154]},{"a":50992,"t":"byte","b":[15,255,238,187,238,170,166,154]},{"a":51000,"t":"byte","b":[0,0,0,3,15,14,143,238]},{"a":51008,"t":"byte","b":[236,179,255,178,200,160,0,0]},{"a":51016,"t":"byte","b":[63,243,62,251,238,187,234,170]},{"a":51024,"t":"byte","b":[15,255,238,187,238,170,166,154]},{"a":51032,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51040,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":51048,"t":"byte","b":[140,140,188,48,248,200,200,200]},{"a":51056,"t":"byte","b":[248,48,188,140,140,140,188,48]},{"a":51064,"t":"byte","b":[248,200,200,200,248,48,252,140]},{"a":51072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51080,"t":"byte","b":[63,251,251,251,251,251,251,251]},{"a":51088,"t":"byte","b":[239,204,239,204,239,204,239,204]},{"a":51096,"t":"byte","b":[255,251,251,251,251,251,59,59]},{"a":51104,"t":"byte","b":[63,59,59,59,59,59,59,59]},{"a":51112,"t":"byte","b":[59,59,59,59,59,59,59,59]},{"a":51120,"t":"byte","b":[252,239,239,239,239,239,239,239]},{"a":51128,"t":"byte","b":[251,51,251,51,251,51,251,51]},{"a":51136,"t":"byte","b":[255,239,239,239,239,239,236,236]},{"a":51144,"t":"byte","b":[252,236,236,236,236,236,236,236]},{"a":51152,"t":"byte","b":[236,236,236,236,236,236,236,236]},{"a":51160,"t":"byte","b":[0,15,62,59,59,59,59,63]},{"a":51168,"t":"byte","b":[0,255,170,85,255,255,255,0]},{"a":51176,"t":"byte","b":[252,168,84,255,255,252,168,252]},{"a":51184,"t":"byte","b":[136,136,204,255,255,204,136,204]},{"a":51192,"t":"byte","b":[0,240,188,236,252,252,252,252]},{"a":51200,"l":"charset","c":"The play, menu and story character set, chars 0-31 ($C800-$C8FF), hi-res: $00 is the copyright sign, $01-$1A the letters A-Z, $1B a symbol, $1C the blank the game prints for a space ($B65E, $9BAC), $1D-$1F the first ARKANOID logo pieces. Bank 3 with $D018 = $02 ($B543) or $03: chars at $C800. Never written: authored data.","t":"byte","b":[60,66,157,161,161,157,66,60]},{"a":51208,"t":"byte","b":[124,130,198,198,186,198,198,0]},{"a":51216,"t":"byte","b":[248,134,198,248,198,134,248,0]},{"a":51224,"t":"byte","b":[126,128,192,192,192,128,126,0]},{"a":51232,"t":"byte","b":[252,142,198,198,198,142,252,0]},{"a":51240,"t":"byte","b":[126,128,192,56,192,128,126,0]},{"a":51248,"t":"byte","b":[126,128,192,240,192,192,192,0]},{"a":51256,"t":"byte","b":[126,128,192,206,198,134,124,0]},{"a":51264,"t":"byte","b":[198,198,198,186,198,198,198,0]},{"a":51272,"t":"byte","b":[8,24,24,24,24,24,8,0]},{"a":51280,"t":"byte","b":[12,12,12,12,204,132,120,0]},{"a":51288,"t":"byte","b":[204,216,240,176,216,220,204,0]},{"a":51296,"t":"byte","b":[192,192,192,192,192,128,126,0]},{"a":51304,"t":"byte","b":[198,254,214,198,130,198,198,0]},{"a":51312,"t":"byte","b":[198,230,246,154,206,198,198,0]},{"a":51320,"t":"byte","b":[124,130,198,198,198,130,124,0]},{"a":51328,"t":"byte","b":[252,198,198,188,192,192,192,0]},{"a":51336,"t":"byte","b":[124,130,198,198,206,138,124,0]},{"a":51344,"t":"byte","b":[252,198,198,188,198,198,198,0]},{"a":51352,"t":"byte","b":[254,128,224,254,6,2,254,0]},{"a":51360,"t":"byte","b":[252,0,48,48,48,48,48,0]},{"a":51368,"t":"byte","b":[198,198,198,198,198,130,254,0]},{"a":51376,"t":"byte","b":[198,198,198,198,130,108,56,0]},{"a":51384,"t":"byte","b":[198,198,130,214,254,238,198,0]},{"a":51392,"t":"byte","b":[198,198,108,16,108,198,198,0]},{"a":51400,"t":"byte","b":[198,198,130,254,2,6,254,0]},{"a":51408,"t":"byte","b":[254,6,12,24,48,96,126,0]},{"a":51416,"t":"byte","b":[15,3,224,248,255,179,0,0]},{"a":51424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51432,"t":"byte","b":[40,108,238,238,239,239,239,239]},{"a":51440,"t":"byte","b":[0,0,7,7,7,135,135,199]},{"a":51448,"t":"byte","b":[0,3,15,31,61,59,121,123]},{"a":51456,"l":"charset_digits","c":"charset chars 32-63 ($C900-$C9FF): $20-$28 more ARKANOID logo pieces, $29-$2F other graphics (the logo at the top right of the play screen also uses $A8-$AB, $B4, $B7, $BA, $C8, $C9), $30-$39 the digits 0-9 (the score code adds $30 to a digit), $3A a quote mark, $3B-$3D panel-box edges, $3E/$3F the 1 and 2 after PLAYER.","t":"byte","b":[0,224,248,124,94,238,87,247]},{"a":51464,"t":"byte","b":[5,119,53,57,30,15,3,0]},{"a":51472,"t":"byte","b":[0,231,247,127,62,28,8,0]},{"a":51480,"t":"byte","b":[0,238,238,238,238,238,0,0]},{"a":51488,"t":"byte","b":[0,224,224,224,224,224,0,0]},{"a":51496,"t":"byte","b":[0,15,158,188,220,238,119,34]},{"a":51504,"t":"byte","b":[0,15,15,15,15,142,204,136]},{"a":51512,"t":"byte","b":[0,190,190,191,191,187,49,32]},{"a":51520,"t":"byte","b":[0,63,123,243,115,59,28,8]},{"a":51528,"t":"byte","b":[0,0,176,0,176,176,0,0]},{"a":51536,"t":"byte","b":[188,252,243,207,62,235,176,0]},{"a":51544,"t":"byte","b":[15,254,91,254,171,240,15,0]},{"a":51552,"t":"byte","b":[0,15,253,215,106,191,252,0]},{"a":51560,"t":"byte","b":[0,0,0,15,253,150,235,240]},{"a":51568,"t":"byte","b":[0,0,0,192,240,124,108,236]},{"a":51576,"t":"byte","b":[0,0,0,0,3,3,15,13]},{"a":51584,"t":"byte","b":[124,130,206,214,230,130,124,0]},{"a":51592,"t":"byte","b":[104,24,24,24,24,24,8,0]},{"a":51600,"t":"byte","b":[254,2,6,254,192,128,254,0]},{"a":51608,"t":"byte","b":[254,6,6,28,6,6,254,0]},{"a":51616,"t":"byte","b":[28,44,108,204,246,12,12,0]},{"a":51624,"t":"byte","b":[254,128,224,252,6,2,252,0]},{"a":51632,"t":"byte","b":[124,128,128,252,198,130,124,0]},{"a":51640,"t":"byte","b":[254,2,6,6,6,6,6,0]},{"a":51648,"t":"byte","b":[124,198,198,56,198,198,124,0]},{"a":51656,"t":"byte","b":[62,65,99,63,1,1,62,0]},{"a":51664,"t":"byte","b":[42,160,128,0,0,0,0,0]},{"a":51672,"t":"byte","b":[86,107,107,107,107,107,107,63]},{"a":51680,"t":"byte","b":[86,171,171,171,171,171,235,107]},{"a":51688,"t":"byte","b":[171,107,171,171,171,171,171,255]},{"a":51696,"t":"byte","b":[20,124,124,44,44,44,95,127]},{"a":51704,"t":"byte","b":[20,191,179,11,12,44,190,191]},{"a":51712,"t":"gap","n":512,"x":[40030,62817,62836]},{"a":51712,"t":"note","l":"charset_tiles","c":"Chars 64-95 of the live character set: the background tiles, rewritten from tiles_set_a ($EC00) or tiles_set_b ($EE00) by $F552 at each round, or from tiles_round33 ($EA00) by $9C59. Runtime state; at the hand-over it holds a copy of $EC00.","note":"outside the tracked image","x":[40030,62817,62836]},{"a":51968,"t":"note","l":"charset_tiles_96","c":"Chars 96-127 of the live character set, the second half of the background tile set, written by $F552 or $9C59 like $CA00.","note":"outside the tracked image","x":[40036,62823,62842]},{"a":52224,"l":"charset_upper","c":"Chars 128-255 of the live character set, multicolour, in place as loaded: bricks and play-screen furniture. On round 1's screen bricks are pairs such as $80/$81 and $85/$89. $9C59 reloads chars 128-255 from $1C00-$1FFF (nearly identical) for the round with index $20.","t":"byte","b":[255,255,255,255,255,255,255,0],"x":[40042]},{"a":52232,"t":"byte","b":[252,252,252,252,252,252,252,0]},{"a":52240,"t":"byte","b":[255,213,213,213,213,213,213,0]},{"a":52248,"t":"byte","b":[85,127,127,127,127,255,253,0]},{"a":52256,"t":"byte","b":[255,213,213,213,213,213,255,0]},{"a":52264,"t":"byte","b":[85,85,85,85,85,85,255,0]},{"a":52272,"t":"byte","b":[252,84,84,84,84,84,84,0]},{"a":52280,"t":"byte","b":[124,252,252,244,244,244,84,0]},{"a":52288,"t":"byte","b":[252,92,92,92,92,92,252,0]},{"a":52296,"t":"byte","b":[84,92,92,92,92,92,252,0]},{"a":52304,"t":"byte","b":[255,234,234,234,234,234,234,0]},{"a":52312,"t":"byte","b":[170,191,191,191,191,255,254,0]},{"a":52320,"t":"byte","b":[255,234,234,234,234,234,255,0]},{"a":52328,"t":"byte","b":[170,170,170,170,170,170,255,0]},{"a":52336,"t":"byte","b":[252,168,168,168,168,168,168,0]},{"a":52344,"t":"byte","b":[248,248,248,248,248,248,168,0]},{"a":52352,"t":"byte","b":[252,172,172,172,172,172,252,0]},{"a":52360,"t":"byte","b":[172,172,172,172,172,172,252,0]},{"a":52368,"t":"byte","b":[0,0,0,2,2,2,2,2]},{"a":52376,"t":"byte","b":[47,191,175,62,251,42,250,42]},{"a":52384,"t":"byte","b":[255,255,187,238,169,101,149,85]},{"a":52392,"t":"byte","b":[255,255,187,238,171,86,85,86]},{"a":52400,"t":"byte","b":[252,255,190,239,191,171,175,171]},{"a":52408,"t":"byte","b":[0,0,0,128,128,224,32,224]},{"a":52416,"t":"byte","b":[4,11,4,11,4,11,4,4]},{"a":52424,"t":"byte","b":[16,208,16,208,16,208,16,16]},{"a":52432,"t":"byte","b":[7,10,6,8,4,40,42,47]},{"a":52440,"t":"byte","b":[224,160,160,32,32,32,168,232]},{"a":52448,"t":"byte","b":[19,31,18,31,18,31,18,31]},{"a":52456,"t":"byte","b":[244,244,196,180,196,180,196,180]},{"a":52464,"t":"byte","b":[19,30,31,31,20,11,11,9]},{"a":52472,"t":"byte","b":[196,180,244,196,36,224,32,160]},{"a":52480,"l":"charset_160","c":"charset_upper chars 160-191 ($CD00-$CDFF): the ARKANOID logo pieces $A8-$AB, $B4, $B7, $BA; panel-box edges $B2, $B3, $B8, $B9; and the big PLAYER lettering $BD-$C6 ($BD-$BF here).","t":"byte","b":[2,2,2,2,10,10,11,11],"x":[40048]},{"a":52488,"t":"byte","b":[128,64,128,64,160,208,224,208]},{"a":52496,"t":"byte","b":[7,7,27,24,31,28,31,28]},{"a":52504,"t":"byte","b":[208,208,208,228,52,244,52,244]},{"a":52512,"t":"byte","b":[47,8,11,2,2,3,11,40]},{"a":52520,"t":"byte","b":[56,224,224,128,128,192,224,232]},{"a":52528,"t":"byte","b":[35,47,115,78,191,206,123,206]},{"a":52536,"t":"byte","b":[4,248,205,177,205,179,238,191]},{"a":52544,"t":"byte","b":[0,1,3,3,7,15,31,31]},{"a":52552,"t":"byte","b":[128,184,187,191,187,185,187,191]},{"a":52560,"t":"byte","b":[0,14,14,142,206,238,207,143]},{"a":52568,"t":"byte","b":[0,0,24,60,121,243,231,207]},{"a":52576,"t":"byte","b":[187,206,243,206,47,10,0,0]},{"a":52584,"t":"byte","b":[238,179,255,178,200,160,0,0]},{"a":52592,"t":"byte","b":[166,233,166,233,182,237,255,15]},{"a":52600,"t":"byte","b":[106,155,106,155,106,187,255,240]},{"a":52608,"t":"byte","b":[102,153,85,85,85,150,233,255]},{"a":52616,"t":"byte","b":[102,153,85,85,85,85,171,255]},{"a":52624,"t":"byte","b":[85,106,106,106,106,106,107,107]},{"a":52632,"t":"byte","b":[85,170,170,170,170,170,255,0]},{"a":52640,"t":"byte","b":[80,247,86,206,60,248,224,0]},{"a":52648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52656,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":52664,"t":"byte","b":[0,0,119,119,119,119,119,119]},{"a":52672,"t":"byte","b":[107,107,106,106,106,106,106,127]},{"a":52680,"t":"byte","b":[0,85,170,170,170,170,170,255]},{"a":52688,"t":"byte","b":[0,119,119,119,119,119,102,68]},{"a":52696,"t":"byte","b":[85,170,170,170,170,170,170,170]},{"a":52704,"t":"byte","b":[85,171,171,171,171,171,171,171]},{"a":52712,"t":"byte","b":[85,191,178,182,191,176,176,240]},{"a":52720,"t":"byte","b":[197,203,203,203,203,11,11,15]},{"a":52728,"t":"byte","b":[0,0,0,0,0,0,84,252]},{"a":52736,"l":"charset_192","c":"charset_upper chars 192-223 ($CE00-$CEFF): the rest of the PLAYER lettering ($C0-$C6), $C7 the menu's selection mark ($B61E), $C8/$C9 logo pieces, and $CA-$D9, four frames of a 2x2-char picture that $9824 draws at screen rows 10-11, columns 13-14 from the table at $987E.","t":"byte","b":[85,191,178,182,191,178,178,243],"x":[40054]},{"a":52744,"t":"byte","b":[197,203,203,207,192,192,192,192]},{"a":52752,"t":"byte","b":[84,252,44,108,236,44,44,60]},{"a":52760,"t":"byte","b":[20,44,44,188,176,176,176,176]},{"a":52768,"t":"byte","b":[85,191,176,181,191,176,181,255]},{"a":52776,"t":"byte","b":[37,47,44,45,47,44,44,60]},{"a":52784,"t":"byte","b":[112,240,176,112,192,176,176,240]},{"a":52792,"t":"byte","b":[0,8,12,254,255,254,12,8]},{"a":52800,"t":"byte","b":[96,240,120,60,30,60,120,240]},{"a":52808,"t":"byte","b":[0,224,192,128,0,0,0,0]},{"a":52816,"t":"byte","b":[169,172,176,176,160,160,180,186]},{"a":52824,"t":"byte","b":[106,58,14,14,10,10,30,174]},{"a":52832,"t":"byte","b":[189,236,171,234,250,190,106,154]},{"a":52840,"t":"byte","b":[126,58,235,170,175,190,170,169]},{"a":52848,"t":"byte","b":[169,160,128,128,160,164,186,173]},{"a":52856,"t":"byte","b":[106,10,2,2,10,26,174,126]},{"a":52864,"t":"byte","b":[172,235,166,233,250,190,106,154]},{"a":52872,"t":"byte","b":[58,234,155,106,171,190,170,169]},{"a":52880,"t":"byte","b":[169,160,128,168,182,173,172,171]},{"a":52888,"t":"byte","b":[106,10,2,26,174,186,58,234]},{"a":52896,"t":"byte","b":[154,229,169,229,250,190,106,154]},{"a":52904,"t":"byte","b":[166,90,107,90,107,190,170,169]},{"a":52912,"t":"byte","b":[169,160,190,169,172,170,165,169]},{"a":52920,"t":"byte","b":[106,10,190,154,58,170,154,106]},{"a":52928,"t":"byte","b":[165,233,169,234,250,190,106,154]},{"a":52936,"t":"byte","b":[90,170,107,170,171,190,170,169]},{"a":52944,"t":"byte","b":[175,238,171,230,170,229,169,229]},{"a":52952,"t":"byte","b":[185,238,172,235,250,190,106,154]},{"a":52960,"t":"byte","b":[110,186,59,234,171,190,170,169]},{"a":52968,"t":"byte","b":[254,250,251,234,155,170,91,106]},{"a":52976,"t":"byte","b":[245,233,251,253,187,142,35,204]},{"a":52984,"t":"byte","b":[102,85,85,149,166,234,187,239]},{"a":52992,"l":"charset_224","c":"charset_upper chars 224-255 ($CF00-$CFFF): the playfield walls. Left wall $F1-$F5, right wall $F6-$FA, top wall $FC with corners $FB and $FF, the two enemy gates in the top wall ($EB $EC $EB at columns 6-8, $FD $FE $FD at columns 19-21), and the exit cells $E8-$EA in the right wall.","t":"byte","b":[101,85,85,86,107,238,187,238],"x":[40060]},{"a":53000,"t":"byte","b":[91,111,188,239,179,254,200,51]},{"a":53008,"t":"byte","b":[48,252,239,187,174,171,170,218]},{"a":53016,"t":"byte","b":[51,204,243,188,238,187,238,170]},{"a":53024,"t":"byte","b":[63,243,62,251,238,187,234,170]},{"a":53032,"t":"byte","b":[15,255,238,187,238,170,166,154]},{"a":53040,"t":"byte","b":[15,255,238,187,238,170,166,154]},{"a":53048,"t":"byte","b":[0,0,0,3,15,14,143,238]},{"a":53056,"l":"chars_exit","c":"Chars $E8-$EA ($CF40-$CF57): the three cells of the exit in the right wall (screen rows 22-24, column 27, placed by $F6B1). $F6C2 makes them look like wall by copying chars $F6-$F8 over them; $A428 copies the open-exit chars $ED-$EF over them and colours the cells 9; $A45A then moves the 24 bytes on by one address per call (one pixel row down the three stacked cells, the last byte wrapping to the first), the open exit's animation.","t":"byte","b":[252],"x":[42036,42080,42090,63175]},{"a":53057,"l":"f_CF41","c":"Byte 1 of char $E8: the target of $A463 (STA $CF41,Y), the one-byte rotation of the exit chars that $A45A runs.","t":"byte","b":[239,239,239,239,239,239,239,251],"x":[42083]},{"a":53065,"t":"byte","b":[51,251,51,251,51,251,51,255]},{"a":53073,"t":"byte","b":[239,239,239,239,239,236]},{"a":53079,"l":"a_CF57","c":"Last byte of char $EA: $A45A saves it before the rotation and puts it back in $CF40, closing the loop.","t":"byte","b":[236],"x":[42074]},{"a":53080,"l":"chars_gate_left","c":"Chars $EB-$EC ($CF58-$CF67): the left enemy gate in the top wall. $F0B4 sets them and the right gate's chars to the closed pattern from $9950-$995F; $98D8-$993D blank or restore them row by row from the middle out, the gate opening and closing.","t":"byte","b":[252,168,84,255,255,252,168,252],"x":[39144,39150,39211,39223,61625]},{"a":53088,"l":"f_CF60","c":"Char $EC ($CF60-$CF67), the middle of the left gate, written with $CF58 by $98EB/$98F1 and $9931/$993D.","t":"byte","b":[136,136,204,255,255,204,136,204],"x":[39147,39153,39217,39229]},{"a":53096,"l":"chars_exit_open","c":"Chars $ED-$EF ($CF68-$CF7F): the open exit's pattern, copied over chars $E8-$EA by $A428.","t":"byte","b":[140,140,188,48,248,200,200,200],"x":[42033]},{"a":53104,"t":"byte","b":[248,48,188,140,140,140,188,48]},{"a":53112,"t":"byte","b":[248,200,200,200,248,48,252,140]},{"a":53120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53128,"t":"byte","b":[63,251,251,251,251,251,251,251]},{"a":53136,"t":"byte","b":[239,204,239,204,239,204,239,204]},{"a":53144,"t":"byte","b":[255,251,251,251,251,251,59,59]},{"a":53152,"t":"byte","b":[63,59,59,59,59,59,59,59]},{"a":53160,"t":"byte","b":[59,59,59,59,59,59,59,59]},{"a":53168,"l":"chars_wall_right","c":"Chars $F6-$F8 ($CFB0-$CFC7): right-wall chars, the source $F6C2 copies over the exit chars. It also colours the three cells $0E. Its loop runs Y from $18 down to 0, 25 bytes, so it also copies $CFC8 (row 0 of char $F9) over $CF58 (row 0 of the left gate's char $EB).","t":"byte","b":[252,239,239,239,239,239,239,239],"x":[63172]},{"a":53176,"t":"byte","b":[251,51,251,51,251,51,251,51]},{"a":53184,"t":"byte","b":[255,239,239,239,239,239,236,236]},{"a":53192,"t":"byte","b":[252,236,236,236,236,236,236,236]},{"a":53200,"t":"byte","b":[236,236,236,236,236,236,236,236]},{"a":53208,"t":"byte","b":[0,15,62,59,59,59,59,63]},{"a":53216,"t":"byte","b":[0,255,170,85,255,255,255,0]},{"a":53224,"l":"chars_gate_right","c":"Chars $FD-$FE ($CFE8-$CFF7): the right enemy gate in the top wall, set to the closed pattern from $9950 by $F0B4 with the left gate.","t":"byte","b":[252,168,84,255,255,252,168,252],"x":[61628]},{"a":53232,"t":"byte","b":[136,136,204,255,255,204,136,204]},{"a":53240,"t":"byte","b":[0,240,188,236,252,252,252,252]},{"a":53248,"l":"spr_vaus","c":"Sprites $40-$41 ($D000-$D07F), multicolour: the Vaus, left half (rounded end and body) and right half (body and rounded end), drawn in rows 12-20 of each slot. $40 and $41 appear in the multiplexer's pointer table at $F825 and in sprite pointers 2-7 (sim, round 1 and attract). Bank 3: the video chip reads this RAM while the CPU sees the VIC-II and SID here, so no instruction reads it by address. The 64th byte of every slot in $D000-$E9FF is padding the video chip never shows.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53280,"t":"byte","b":[0,0,0,0,43,255,255,43]},{"a":53288,"t":"byte","b":[255,255,235,255,255,213,85,85]},{"a":53296,"t":"byte","b":[107,255,255,235,255,255,235,255]},{"a":53304,"t":"byte","b":[255,43,255,255,43,255,255,0]},{"a":53312,"l":"spr_vaus_1r","c":"Sprite $41 ($D040): the Vaus, right half; spr_vaus ($40) is the left.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53344,"t":"byte","b":[0,0,0,0,255,255,160,255]},{"a":53352,"t":"byte","b":[255,160,255,255,172,85,85,92]},{"a":53360,"t":"byte","b":[255,255,164,255,255,172,255,255]},{"a":53368,"t":"byte","b":[172,255,255,160,255,255,160,0]},{"a":53376,"l":"spr_ball","c":"Sprite $42 ($D080-$D0BF): the ball, a few pixels in the top rows of the slot. $F267 stores $42 into three multiplexer entries ($F829-$F82B), one per ball; play-ram shows $42 in three of the sprite pointers.","t":"byte","b":[16,0,0,116,0,0,116,0]},{"a":53384,"t":"byte","b":[0,16,128,0,2,160,0,2]},{"a":53392,"t":"byte","b":[160,0,0,128,0,0,0,0]},{"a":53400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53408,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53432,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":53440,"l":"spr_vaus_alt","c":"Sprites $43-$44 ($D0C0-$D13F): a second, shorter pair of Vaus halves with a different top edge. Not seen in the simulator's pointer writes (round 1, attract); which state uses it is not established.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53448,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53472,"t":"byte","b":[0,0,0,0,15,255,0,55]},{"a":53480,"t":"byte","b":[255,0,29,85,0,63,255,0]},{"a":53488,"t":"byte","b":[127,255,0,250,175,0,239,239]},{"a":53496,"t":"byte","b":[0,175,239,0,63,239,0,0]},{"a":53504,"l":"spr_vaus_alt_1r","c":"Sprite $44 ($D100): the right half of the second, shorter Vaus pair; spr_vaus_alt ($43) is the left.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53536,"t":"byte","b":[0,0,0,0,3,255,192,3]},{"a":53544,"t":"byte","b":[255,112,1,85,240,3,255,240]},{"a":53552,"t":"byte","b":[3,255,252,3,234,188,3,239]},{"a":53560,"t":"byte","b":[236,3,239,232,3,239,240,0]},{"a":53568,"l":"spr_lines","c":"Sprite $45 ($D140-$D17F), hi-res reading: two pairs of one-pixel vertical lines, 8 rows tall, 10 pixels apart. Not seen in the simulator's pointer writes; that these are laser shots is a guess, not checked.","t":"byte","b":[2,128,160,0,0,0,2,128]},{"a":53576,"t":"byte","b":[160,2,128,160,2,128,160,2]},{"a":53584,"t":"byte","b":[128,160,2,128,160,2,128,160]},{"a":53592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53600,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53632,"l":"spr_scatter","c":"Sprites $46-$49 ($D180-$D27F): four frames of a few scattered pixels spreading out from a small cluster. Not seen in the simulator's pointer writes; use not established.","t":"byte","b":[42,8,128,40,10,128,34,34]},{"a":53640,"t":"byte","b":[160,128,0,8,0,0,0,0]},{"a":53648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53696,"l":"spr_scatter_2","c":"Sprite $47 ($D1C0): the scattered-pixel frames, frame 2 of 4.","t":"byte","b":[0,0,0,42,136,128,8,34]},{"a":53704,"t":"byte","b":[128,128,136,8,128,0,0,0]},{"a":53712,"t":"byte","b":[0,2,0,0,0,0,0,0]},{"a":53720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53728,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53760,"l":"spr_scatter_3","c":"Sprite $48 ($D200): the scattered-pixel frames, frame 3 of 4.","t":"byte","b":[0,0,0,0,128,0,42,34]},{"a":53768,"t":"byte","b":[0,0,136,128,128,0,8,0]},{"a":53776,"t":"byte","b":[0,0,128,128,0,0,0,0]},{"a":53784,"t":"byte","b":[0,0,2,0,0,0,0,8]},{"a":53792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53824,"l":"spr_scatter_4","c":"Sprite $49 ($D240): the scattered-pixel frames, frame 4 of 4.","t":"byte","b":[0,0,0,0,0,0,8,32]},{"a":53832,"t":"byte","b":[0,32,0,0,0,0,0,0]},{"a":53840,"t":"byte","b":[0,0,0,0,2,128,0,0]},{"a":53848,"t":"byte","b":[0,128,0,0,0,32,0,0]},{"a":53856,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53864,"t":"byte","b":[32,0,0,0,0,0,0,0]},{"a":53872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53880,"t":"byte","b":[0,0,0,0,0,0,0,225]},{"a":53888,"l":"spr_cone","c":"Sprites $4A-$51 ($D280-$D47F), multicolour: an enemy shaped like a cone, eight frames of it turning. The simulator wrote $4A-$51 into sprite pointers 2-7 in round 1 and attract mode.","t":"byte","b":[0,0,0,0,0,0,0,4]},{"a":53896,"t":"byte","b":[0,0,4,0,0,62,0,0]},{"a":53904,"t":"byte","b":[54,0,0,54,0,0,62,0]},{"a":53912,"t":"byte","b":[0,223,128,0,222,128,0,223]},{"a":53920,"t":"byte","b":[128,0,190,128,2,170,160,3]},{"a":53928,"t":"byte","b":[170,160,3,234,224,1,255,160]},{"a":53936,"t":"byte","b":[3,127,224,0,255,128,0,42]},{"a":53944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53952,"l":"spr_cone_2","c":"Sprite $4B ($D2C0): the cone enemy, frame 2 of 8.","t":"byte","b":[0,0,0,0,0,0,0,48]},{"a":53960,"t":"byte","b":[0,0,16,0,0,56,0,0]},{"a":53968,"t":"byte","b":[24,0,0,58,0,0,62,128]},{"a":53976,"t":"byte","b":[0,30,128,0,63,128,0,31]},{"a":53984,"t":"byte","b":[0,0,62,160,0,170,176,0]},{"a":53992,"t":"byte","b":[170,224,2,175,160,3,255,128]},{"a":54000,"t":"byte","b":[3,127,128,3,127,0,0,240]},{"a":54008,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":54016,"l":"spr_cone_3","c":"Sprite $4C ($D300): the cone enemy, frame 3 of 8.","t":"byte","b":[0,0,0,0,48,0,0,24]},{"a":54024,"t":"byte","b":[0,0,60,0,0,54,0,0]},{"a":54032,"t":"byte","b":[63,128,0,55,128,0,63,224]},{"a":54040,"t":"byte","b":[0,7,224,0,15,128,0,15]},{"a":54048,"t":"byte","b":[128,0,2,128,0,10,160,0]},{"a":54056,"t":"byte","b":[47,160,0,127,160,3,255,128]},{"a":54064,"t":"byte","b":[3,126,0,3,248,0,3,64]},{"a":54072,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":54080,"l":"spr_cone_4","c":"Sprite $4D ($D340): the cone enemy, frame 4 of 8.","t":"byte","b":[0,0,0,0,48,0,0,24]},{"a":54088,"t":"byte","b":[0,0,56,0,0,26,0,0]},{"a":54096,"t":"byte","b":[62,0,0,30,128,0,63,192]},{"a":54104,"t":"byte","b":[0,31,128,0,62,128,0,26]},{"a":54112,"t":"byte","b":[0,0,43,128,0,14,160,0]},{"a":54120,"t":"byte","b":[31,160,0,127,160,3,254,160]},{"a":54128,"t":"byte","b":[3,122,128,3,234,0,3,160]},{"a":54136,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":54144,"l":"spr_cone_5","c":"Sprite $4E ($D380): the cone enemy, frame 5 of 8.","t":"byte","b":[0,0,0,0,0,0,0,4]},{"a":54152,"t":"byte","b":[0,0,12,0,0,30,0,0]},{"a":54160,"t":"byte","b":[62,0,0,30,0,0,62,0]},{"a":54168,"t":"byte","b":[0,127,128,0,106,192,0,170]},{"a":54176,"t":"byte","b":[128,0,255,128,0,127,224,1]},{"a":54184,"t":"byte","b":[234,224,1,170,160,2,170,160]},{"a":54192,"t":"byte","b":[2,170,160,0,170,128,0,42]},{"a":54200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54208,"l":"spr_cone_6","c":"Sprite $4F ($D3C0): the cone enemy, frame 6 of 8.","t":"byte","b":[0,0,0,0,0,0,0,3]},{"a":54216,"t":"byte","b":[0,0,7,0,0,15,0,0]},{"a":54224,"t":"byte","b":[30,0,0,62,0,0,126,0]},{"a":54232,"t":"byte","b":[0,254,0,0,186,0,0,171]},{"a":54240,"t":"byte","b":[0,0,42,0,0,122,0,1]},{"a":54248,"t":"byte","b":[252,0,2,191,128,2,175,160]},{"a":54256,"t":"byte","b":[2,171,224,0,170,224,0,42]},{"a":54264,"t":"byte","b":[160,0,2,160,0,0]},{"a":54270,"l":"f_D3FE","c":"Sprite $4F (the cone enemy frame 6 of 8), byte 62. This symbol exists only because the sound driver's sta $D3FE,x at $2762 reaches the SID registers above $D400 through X (loaded from $2755); the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0]},{"a":54271,"l":"f_D3FF","c":"Sprite $4F (the cone enemy frame 6 of 8), byte 63, the unused 64th byte of the slot. This symbol exists only because the sound driver's sta $D3FF,x at $2768 reaches the SID registers through X.","t":"byte","b":[0]},{"a":54272,"l":"spr_cone_7","c":"Sprite $50 ($D400): the cone enemy, frame 7 of 8.","t":"byte","b":[0,0,0,0,0,0,0,12]},{"a":54280,"t":"byte","b":[0,0,4,0,0,62,0,0]},{"a":54288,"t":"byte","b":[30,0,0,250,0,0,120,0]},{"a":54296,"t":"byte","b":[3,248,0,3,232,0,2,248]},{"a":54304,"t":"byte","b":[0,0,184,0,0,224,0,1]},{"a":54312,"t":"byte","b":[120,0,1,250,0,3,254,128]},{"a":54320,"t":"byte","b":[0,191,160,0,47,160,0,11]},{"a":54328,"t":"byte","b":[160,0,0,160,0,0,0,0]},{"a":54336,"l":"spr_cone_8","c":"Sprite $51 ($D440): the cone enemy, frame 8 of 8.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54344,"t":"byte","b":[0,0,3,0,0,3,0,0]},{"a":54352,"t":"byte","b":[7,0,0,14,0,0,30,0]},{"a":54360,"t":"byte","b":[0,122,0,0,238,0,0,186]},{"a":54368,"t":"byte","b":[0,0,62,0,1,175,0,3]},{"a":54376,"t":"byte","b":[170,128,3,106,128,2,254,160]},{"a":54384,"t":"byte","b":[0,255,160,0,191,160,0,62]},{"a":54392,"t":"byte","b":[160,0,2,128,0,0,0,0]},{"a":54400,"l":"spr_pyramid","c":"Sprites $52-$5E ($D480-$D7BF), multicolour: an enemy shaped like a triangular pyramid with an eye, thirteen frames of it tumbling. Not used in round 1.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54408,"t":"byte","b":[0,0,0,0,0,192,0,0]},{"a":54416,"t":"byte","b":[192,0,0,192,0,3,48,0]},{"a":54424,"t":"byte","b":[3,48,0,3,48,0,12,12]},{"a":54432,"t":"byte","b":[0,12,76,0,12,76,0,48]},{"a":54440,"t":"byte","b":[3,0,48,3,0,63,255,0]},{"a":54448,"t":"byte","b":[63,255,0,42,170,0,0,0]},{"a":54456,"t":"byte","b":[0,0,0,0,0,0,0,128]},{"a":54464,"l":"spr_pyramid_2","c":"Sprite $53 ($D4C0): the pyramid enemy, frame 2 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54472,"t":"byte","b":[0,0,0,0,3,0,0,3]},{"a":54480,"t":"byte","b":[0,0,3,0,0,3,192,0]},{"a":54488,"t":"byte","b":[3,192,0,3,224,0,12,48]},{"a":54496,"t":"byte","b":[0,13,48,0,13,56,0,12]},{"a":54504,"t":"byte","b":[14,0,48,14,0,48,248,0]},{"a":54512,"t":"byte","b":[63,160,0,58,0,0,0,0]},{"a":54520,"t":"byte","b":[0,0,0,0,0,0,0,95]},{"a":54528,"l":"spr_pyramid_3","c":"Sprite $54 ($D500): the pyramid enemy, frame 3 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54536,"t":"byte","b":[0,0,0,0,12,0,0,12]},{"a":54544,"t":"byte","b":[0,0,15,128,0,15,128,0]},{"a":54552,"t":"byte","b":[12,224,0,12,224,0,12,224]},{"a":54560,"t":"byte","b":[0,13,56,0,49,56,0,48]},{"a":54568,"t":"byte","b":[62,0,48,242,0,51,194,0]},{"a":54576,"t":"byte","b":[63,42,0,62,160,0,56,0]},{"a":54584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54592,"l":"spr_pyramid_4","c":"Sprite $55 ($D540): the pyramid enemy, frame 4 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54600,"t":"byte","b":[0,0,0,0,3,0,0,3]},{"a":54608,"t":"byte","b":[0,0,3,192,0,15,192,0]},{"a":54616,"t":"byte","b":[12,240,0,12,240,0,12,48]},{"a":54624,"t":"byte","b":[0,12,124,0,48,124,0,48]},{"a":54632,"t":"byte","b":[15,0,48,15,0,51,254,0]},{"a":54640,"t":"byte","b":[191,170,0,170,160,0,0,0]},{"a":54648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54656,"l":"spr_pyramid_5","c":"Sprite $56 ($D580): the pyramid enemy, frame 5 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54664,"t":"byte","b":[0,0,0,0,0,192,0,0]},{"a":54672,"t":"byte","b":[192,0,0,192,0,3,192,0]},{"a":54680,"t":"byte","b":[3,240,0,15,48,0,12,48]},{"a":54688,"t":"byte","b":[0,12,120,0,60,126,0,48]},{"a":54696,"t":"byte","b":[14,0,63,14,0,43,254,0]},{"a":54704,"t":"byte","b":[2,170,0,0,0,0,0,0]},{"a":54712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54720,"l":"spr_pyramid_6","c":"Sprite $57 ($D5C0): the pyramid enemy, frame 6 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54728,"t":"byte","b":[0,0,32,0,0,224,0,0]},{"a":54736,"t":"byte","b":[224,0,3,224,0,3,224,0]},{"a":54744,"t":"byte","b":[15,224,0,12,248,0,60,56]},{"a":54752,"t":"byte","b":[0,241,56,0,241,56,0,188]},{"a":54760,"t":"byte","b":[56,0,47,56,0,11,248,0]},{"a":54768,"t":"byte","b":[2,248,0,0,168,0,0,40]},{"a":54776,"t":"byte","b":[0,0,8,0,0,0,0,0]},{"a":54784,"l":"spr_pyramid_7","c":"Sprite $58 ($D600): the pyramid enemy, frame 7 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54792,"t":"byte","b":[0,0,8,0,0,56,0,0]},{"a":54800,"t":"byte","b":[248,0,3,248,0,3,56,0]},{"a":54808,"t":"byte","b":[15,56,0,60,56,0,240,120]},{"a":54816,"t":"byte","b":[0,188,120,0,47,56,0,11]},{"a":54824,"t":"byte","b":[248,0,2,248,0,0,184,0]},{"a":54832,"t":"byte","b":[0,40,0,0,8,0,0,0]},{"a":54840,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54848,"l":"spr_pyramid_8","c":"Sprite $59 ($D640): the pyramid enemy, frame 8 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54856,"t":"byte","b":[0,0,14,0,0,62,0,0]},{"a":54864,"t":"byte","b":[254,0,3,206,0,15,14,0]},{"a":54872,"t":"byte","b":[60,14,0,240,126,0,188,126]},{"a":54880,"t":"byte","b":[0,47,56,0,11,248,0,2]},{"a":54888,"t":"byte","b":[248,0,0,184,0,0,40,0]},{"a":54896,"t":"byte","b":[0,8,0,0,0,0,0,0]},{"a":54904,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54912,"l":"spr_pyramid_9","c":"Sprite $5A ($D680): the pyramid enemy, frame 9 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54928,"t":"byte","b":[254,0,15,206,0,252,14,0]},{"a":54936,"t":"byte","b":[192,62,0,240,56,0,177,56]},{"a":54944,"t":"byte","b":[0,61,56,0,44,248,0,15]},{"a":54952,"t":"byte","b":[224,0,11,224,0,11,128,0]},{"a":54960,"t":"byte","b":[11,128,0,2,0,0,2,0]},{"a":54968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54976,"l":"spr_pyramid_10","c":"Sprite $5B ($D6C0): the pyramid enemy, frame 10 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54984,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":54992,"t":"byte","b":[254,0,192,14,0,192,14,0]},{"a":55000,"t":"byte","b":[176,56,0,176,56,0,49,56]},{"a":55008,"t":"byte","b":[0,45,224,0,44,224,0,12]},{"a":55016,"t":"byte","b":[224,0,11,128,0,11,128,0]},{"a":55024,"t":"byte","b":[3,128,0,2,0,0,0,0]},{"a":55032,"t":"byte","b":[0,0,0,0,0,0,0,128]},{"a":55040,"l":"spr_pyramid_11","c":"Sprite $5C ($D700): the pyramid enemy, frame 11 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55048,"t":"byte","b":[0,0,0,0,60,0,0,63]},{"a":55056,"t":"byte","b":[192,0,48,252,0,48,15,0]},{"a":55064,"t":"byte","b":[48,3,128,48,79,128,60,126]},{"a":55072,"t":"byte","b":[0,12,248,0,12,224,0,15]},{"a":55080,"t":"byte","b":[224,0,15,128,0,14,0,0]},{"a":55088,"t":"byte","b":[8,0,0,0,0,0,0,0]},{"a":55096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55104,"l":"spr_pyramid_12","c":"Sprite $5D ($D740): the pyramid enemy, frame 12 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55112,"t":"byte","b":[0,0,0,0,48,0,0,60]},{"a":55120,"t":"byte","b":[0,0,63,0,0,51,192,0]},{"a":55128,"t":"byte","b":[48,240,0,48,60,0,49,12]},{"a":55136,"t":"byte","b":[0,49,60,0,48,248,0,51]},{"a":55144,"t":"byte","b":[224,0,63,128,0,62,0,0]},{"a":55152,"t":"byte","b":[56,0,0,32,0,0,0,0]},{"a":55160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55168,"l":"spr_pyramid_13","c":"Sprite $5E ($D780): the pyramid enemy, frame 13 of 13.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55176,"t":"byte","b":[0,0,0,0,3,0,0,3]},{"a":55184,"t":"byte","b":[0,0,15,192,0,12,192,0]},{"a":55192,"t":"byte","b":[12,240,0,12,48,0,12,60]},{"a":55200,"t":"byte","b":[0,60,76,0,48,79,0,48]},{"a":55208,"t":"byte","b":[15,0,48,254,0,63,232,0]},{"a":55216,"t":"byte","b":[62,128,0,40,0,0,32,0]},{"a":55224,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":55232,"l":"spr_orb","c":"Sprites $5F-$6C ($D7C0-$DB3F), multicolour: an enemy shaped like a sphere that flattens to a disc and back, fourteen frames ($5F is the full sphere). Not used in round 1.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55248,"t":"byte","b":[240,0,3,92,0,3,124,0]},{"a":55256,"t":"byte","b":[13,255,0,13,255,0,15,254]},{"a":55264,"t":"byte","b":[0,15,254,0,15,254,0,11]},{"a":55272,"t":"byte","b":[250,0,2,232,0,2,168,0]},{"a":55280,"t":"byte","b":[0,160,0,0,0,0,0,0]},{"a":55288,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":55295,"l":"f_D7FF","c":"Sprite $5F (the spinning orb enemy frame 1 of 14), byte 63, the unused 64th byte of the slot. This symbol exists only because sta $D7FF,y at $B702 (the screen-clear loop, Y from 1) addresses colour RAM from $D800, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[96]},{"a":55296,"l":"f_D800","c":"Sprite $60 (the spinning orb enemy frame 2 of 14), byte 0. This symbol exists only because sta $D800,y at $B49E, sta $D800,y at $F65F with their index address the colour RAM at $D800, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55312,"t":"byte","b":[80,0,1,116,0,1,252,0]},{"a":55320,"t":"byte","b":[7,253,0,15]},{"a":55324,"l":"f_D81C","c":"Sprite $60 (the spinning orb enemy frame 2 of 14), byte 28. This symbol exists only because sta $D81C,y at $F306 with its index addresses the colour RAM at $D81C, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[255,0,15,255,0,15,255,0]},{"a":55332,"t":"byte","b":[15,255,0,3,252,0,3,252]},{"a":55340,"t":"byte","b":[0,0,240,0,0,0,0,0]},{"a":55348,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55356,"t":"byte","b":[0,0,0,255]},{"a":55360,"l":"spr_orb_3","c":"Sprite $61 ($D840): the spinning orb enemy, frame 3 of 14.","t":"byte","b":[0,0,0,0]},{"a":55364,"l":"f_D844","c":"Sprite $61 (the spinning orb enemy frame 3 of 14), byte 4. This symbol exists only because sta $D844,y at $F30B with its index addresses the colour RAM at $D844, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55372,"t":"byte","b":[0,0,0,0,0,0,1,80]},{"a":55380,"t":"byte","b":[0,1,212,0,5,116,0,13]},{"a":55388,"t":"byte","b":[93,0,13,85,0,13,85,0]},{"a":55396,"t":"byte","b":[3,87,0,3,220,0,0,252]},{"a":55404,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55412,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55420,"t":"byte","b":[0,0,0,255]},{"a":55424,"l":"spr_orb_4","c":"Sprite $62 ($D880): the spinning orb enemy, frame 4 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55432,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55440,"t":"byte","b":[0,0,1,64]},{"a":55444,"l":"f_D894","c":"Sprite $62 (the spinning orb enemy frame 4 of 14), byte 20. This symbol exists only because sta $D894,y at $F30E with its index addresses the colour RAM at $D894, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,1,208,0,13,116,0,13]},{"a":55452,"t":"byte","b":[92,0,15]},{"a":55455,"l":"a_D89F","c":"Sprite $62 (the spinning orb enemy frame 4 of 14), byte 31. This symbol exists only because sta $D89F at $F338 addresses the colour RAM at $D89F, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[85,0,3,87,0,3,213,0]},{"a":55463,"t":"byte","b":[0,252,0,0,60,0,0,0]},{"a":55471,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55479,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":55486,"l":"f_D8BE","c":"Sprite $62 (the spinning orb enemy frame 4 of 14), byte 62. This symbol exists only because sta $D8BE,y at $F318 with its index addresses the colour RAM at $D8BE, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,255]},{"a":55488,"l":"spr_orb_5","c":"Sprite $63 ($D8C0): the spinning orb enemy, frame 5 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55504,"t":"byte","b":[0,0,0]},{"a":55507,"l":"f_D8D3","c":"Sprite $63 (the spinning orb enemy frame 5 of 14), byte 19. This symbol exists only because sta $D8D3,y at $97CB with its index addresses the colour RAM at $D8D3, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,1,64,0,13,208,0]},{"a":55515,"t":"byte","b":[15,116,0,3,220,0,0,213]},{"a":55523,"t":"byte","b":[0,0,245,0,0,60,0,0]},{"a":55531,"t":"byte","b":[0,0,0,0]},{"a":55535,"l":"a_D8EF","c":"Sprite $63 (the spinning orb enemy frame 5 of 14), byte 47. This symbol exists only because lda $D8EF at $FBA1, sta $D8EF at $FBA6, sta $D8EF at $FBB9 addresses the colour RAM at $D8EF, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55543,"t":"byte","b":[0,0]},{"a":55545,"l":"f_D8F9","c":"Sprite $63 (the spinning orb enemy frame 5 of 14), byte 57. This symbol exists only because sta $D8F9,y at $B705 with its index addresses the colour RAM at $D8F9, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0]},{"a":55547,"l":"f_D8FB","c":"Sprite $63 (the spinning orb enemy frame 5 of 14), byte 59. This symbol exists only because sta $D8FB,y at $97CE with its index addresses the colour RAM at $D8FB, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,255]},{"a":55552,"l":"f_D900","c":"Sprite $64 (the spinning orb enemy frame 6 of 14), byte 0. This symbol exists only because sta $D900,y at $B4A4 with its index addresses the colour RAM at $D900, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55568,"t":"byte","b":[0,0,0,0,0,5,0,0]},{"a":55576,"t":"byte","b":[13,64,0,1,80,0,3,80]},{"a":55584,"t":"byte","b":[0,0,212]},{"a":55587,"l":"f_D923","c":"Sprite $64 (the spinning orb enemy frame 6 of 14), byte 35. This symbol exists only because sta $D923,y at $97D1 with its index addresses the colour RAM at $D923, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,53,0,0,12,0,0]},{"a":55595,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55603,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55611,"t":"byte","b":[0,0,0,0,56]},{"a":55616,"l":"spr_orb_7","c":"Sprite $65 ($D940): the spinning orb enemy, frame 7 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55624,"t":"byte","b":[0,0,0]},{"a":55627,"l":"f_D94B","c":"Sprite $65 (the spinning orb enemy frame 7 of 14), byte 11. This symbol exists only because sta $D94B,y at $97D4 with its index addresses the colour RAM at $D94B, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55635,"t":"byte","b":[0,0,4,0,0,5,0,0]},{"a":55643,"t":"byte","b":[1,64,0]},{"a":55646,"l":"f_D95E","c":"Sprite $65 (the spinning orb enemy frame 7 of 14), byte 30. This symbol exists only because sta $D95E,y at $F31B with its index addresses the colour RAM at $D95E, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[1,80,0,0,84,0,0,21]},{"a":55654,"t":"byte","b":[0,0,1,0,0,0,0,0]},{"a":55662,"t":"byte","b":[0,0,0,0,0]},{"a":55667,"l":"f_D973","c":"Sprite $65 (the spinning orb enemy frame 7 of 14), byte 51. This symbol exists only because sta $D973,y at $97D7 with its index addresses the colour RAM at $D973, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55675,"t":"byte","b":[0,0,0,0,255]},{"a":55680,"l":"spr_orb_8","c":"Sprite $66 ($D980): the spinning orb enemy, frame 8 of 14.","t":"byte","b":[0,0,0,0,0,0]},{"a":55686,"l":"f_D986","c":"Sprite $66 (the spinning orb enemy frame 8 of 14), byte 6. This symbol exists only because sta $D986,y at $F31E with its index addresses the colour RAM at $D986, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55694,"t":"byte","b":[0,0,0,0,0,0,0,4]},{"a":55702,"t":"byte","b":[0,0,5,0,0]},{"a":55707,"l":"f_D99B","c":"Sprite $66 (the spinning orb enemy frame 8 of 14), byte 27. This symbol exists only because sta $D99B,y at $97DA with its index addresses the colour RAM at $D99B, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[1,64,0,0,80,0,0,20]},{"a":55715,"t":"byte","b":[0,0,5,0,0,1,0,0]},{"a":55723,"t":"byte","b":[0,0,0]},{"a":55726,"l":"f_D9AE","c":"Sprite $66 (the spinning orb enemy frame 8 of 14), byte 46. This symbol exists only because sta $D9AE,y at $F321 with its index addresses the colour RAM at $D9AE, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55734,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55742,"t":"byte","b":[0,255]},{"a":55744,"l":"spr_orb_9","c":"Sprite $67 ($D9C0): the spinning orb enemy, frame 9 of 14.","t":"byte","b":[0,0,0]},{"a":55747,"l":"f_D9C3","c":"Sprite $67 (the spinning orb enemy frame 9 of 14), byte 3. This symbol exists only because sta $D9C3,y at $97DD with its index addresses the colour RAM at $D9C3, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55755,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55763,"t":"byte","b":[0,0,4]},{"a":55766,"l":"f_D9D6","c":"Sprite $67 (the spinning orb enemy frame 9 of 14), byte 22. This symbol exists only because sta $D9D6,y at $F324 with its index addresses the colour RAM at $D9D6, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,13,64,0,3,80,0]},{"a":55774,"t":"byte","b":[3,212,0,0,244,0,0,61]},{"a":55782,"t":"byte","b":[0,0,3,0,0]},{"a":55787,"l":"f_D9EB","c":"Sprite $67 (the spinning orb enemy frame 9 of 14), byte 43. This symbol exists only because sta $D9EB,y at $97E0 with its index addresses the colour RAM at $D9EB, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55795,"l":"f_D9F3","c":"Sprite $67 (the spinning orb enemy frame 9 of 14), byte 51. This symbol exists only because sta $D9F3,y at $B708 with its index addresses the colour RAM at $D9F3, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55803,"t":"byte","b":[0,0,0,0,255]},{"a":55808,"l":"f_DA00","c":"Sprite $68 (the spinning orb enemy frame 10 of 14), byte 0. This symbol exists only because sta $DA00,y at $B4AA with its index addresses the colour RAM at $DA00, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55824,"t":"byte","b":[0,0,0]},{"a":55827,"l":"f_DA13","c":"Sprite $68 (the spinning orb enemy frame 10 of 14), byte 19. This symbol exists only because sta $DA13,y at $97E3 with its index addresses the colour RAM at $DA13, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,13,0,0,15,80,0]},{"a":55835,"t":"byte","b":[15,244,0,3,252,0,3,255]},{"a":55843,"t":"byte","b":[0,0,255,0,0,15,0,0]},{"a":55851,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55859,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55867,"l":"f_DA3B","c":"Sprite $68 (the spinning orb enemy frame 10 of 14), byte 59. This symbol exists only because sta $DA3B,y at $97E6 with its index addresses the colour RAM at $DA3B, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,146]},{"a":55872,"l":"spr_orb_11","c":"Sprite $69 ($DA40): the spinning orb enemy, frame 11 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55880,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55888,"t":"byte","b":[0,0,1,64,0,1,208]},{"a":55895,"l":"a_DA57","c":"Sprite $69 (the spinning orb enemy frame 11 of 14), byte 23. This symbol exists only because sta $DA57 at $FBAB, lda $DA57 at $FBAF, sta $DA57 at $FBB4 addresses the colour RAM at $DA57, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,15,244,0,15,252,0,15]},{"a":55903,"t":"byte","b":[253,0,3,255,0,3,253,0]},{"a":55911,"t":"byte","b":[0,252,0,0,60,0,0,0]},{"a":55919,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55927,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55935,"t":"byte","b":[20]},{"a":55936,"l":"spr_orb_12","c":"Sprite $6A ($DA80): the spinning orb enemy, frame 12 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55952,"t":"byte","b":[0,0,1,80,0,3,212,0]},{"a":55960,"t":"byte","b":[15,244,0,15,253,0,15,253]},{"a":55968,"t":"byte","b":[0,15,253,0,3,255,0,3]},{"a":55976,"t":"byte","b":[252,0,0,252,0,0,0,0]},{"a":55984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56000,"l":"spr_orb_13","c":"Sprite $6B ($DAC0): the spinning orb enemy, frame 13 of 14.","t":"byte","b":[0,0,0,0,0,0]},{"a":56006,"l":"f_DAC6","c":"Sprite $6B (the spinning orb enemy frame 13 of 14), byte 6. This symbol exists only because sta $DAC6,y at $F327 with its index addresses the colour RAM at $DAC6, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56014,"t":"byte","b":[0,0]},{"a":56016,"l":"f_DAD0","c":"Sprite $6B (the spinning orb enemy frame 13 of 14), byte 16. This symbol exists only because sta $DAD0,y at $9BB3 with its index addresses the colour RAM at $DAD0, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[80,0,1,116,0,1,252,0]},{"a":56024,"t":"byte","b":[7,253,0,15,255,0,15,255]},{"a":56032,"t":"byte","b":[0,15,255,0,15,255,0,3]},{"a":56040,"t":"byte","b":[252,0,3,252,0]},{"a":56045,"l":"f_DAED","c":"Sprite $6B (the spinning orb enemy frame 13 of 14), byte 45. This symbol exists only because sta $DAED,y at $B70B with its index addresses the colour RAM at $DAED, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0]},{"a":56046,"l":"f_DAEE","c":"Sprite $6B (the spinning orb enemy frame 13 of 14), byte 46. This symbol exists only because sta $DAEE,y at $F32A with its index addresses the colour RAM at $DAEE, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[240,0,0,0,0,0,0,0]},{"a":56054,"t":"byte","b":[0,0]},{"a":56056,"l":"f_DAF8","c":"Sprite $6B (the spinning orb enemy frame 13 of 14), byte 56. This symbol exists only because sta $DAF8,y at $9BBB with its index addresses the colour RAM at $DAF8, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":56064,"l":"f_DB00","c":"Sprite $6C (the spinning orb enemy frame 14 of 14), byte 0. This symbol exists only because sta $DB00,y at $B4B0 with its index addresses the colour RAM at $DB00, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56080,"t":"byte","b":[0,0,0,0,0,13]},{"a":56086,"l":"f_DB16","c":"Sprite $6C (the spinning orb enemy frame 14 of 14), byte 22. This symbol exists only because sta $DB16,y at $F32D with its index addresses the colour RAM at $DB16, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,15,80,0,15,244,0]},{"a":56094,"t":"byte","b":[3,252]},{"a":56096,"l":"f_DB20","c":"Sprite $6C (the spinning orb enemy frame 14 of 14), byte 32. This symbol exists only because sta $DB20,y at $9BB6 with its index addresses the colour RAM at $DB20, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,3,255,0,0,255,0,0]},{"a":56104,"t":"byte","b":[15,0,0,0,0,0,0,0]},{"a":56112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56120,"t":"byte","b":[0,0,0,0,0,0]},{"a":56126,"l":"f_DB3E","c":"Sprite $6C (the spinning orb enemy frame 14 of 14), byte 62. This symbol exists only because sta $DB3E,y at $F330 with its index addresses the colour RAM at $DB3E, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,85]},{"a":56128,"l":"spr_cluster","c":"Sprites $6D-$72 ($DB40-$DCBF), multicolour: an enemy made of three balls, six frames of it rotating. Not used in round 1.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56136,"t":"byte","b":[0,0,0,0,0,7,0,0]},{"a":56144,"t":"byte","b":[55,128,0,31,128,0,31,128]},{"a":56152,"t":"byte","b":[0,31,128,0,62,128,0,122]},{"a":56160,"t":"byte","b":[112,3,123,120,1,249,248,1]},{"a":56168,"t":"byte","b":[249,248,1,249,248,3,235,232]},{"a":56176,"t":"byte","b":[0,160,160,0,0,0,0,0]},{"a":56184,"t":"byte","b":[0,0,0,0,0,0,0,235]},{"a":56192,"l":"spr_cluster_2","c":"Sprite $6E ($DB80): the three-ball cluster enemy, frame 2 of 6.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56200,"t":"byte","b":[0,0,0]},{"a":56203,"l":"a_DB8B","c":"Sprite $6E (the three-ball cluster enemy frame 2 of 6), byte 11. This symbol exists only because sta $DB8B at $A43C, sta $DB8B at $F6CF addresses the colour RAM at $DB8B, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,28,0,0]},{"a":56211,"t":"byte","b":[222,0,0,126,0,0,126,0]},{"a":56219,"t":"byte","b":[0,122,0,0,121,192,0,237]},{"a":56227,"t":"byte","b":[224,0,119,224,0,119,224,0]},{"a":56235,"t":"byte","b":[247,224,0,55,160,0,2,128]},{"a":56243,"l":"a_DBB3","c":"Sprite $6E (the three-ball cluster enemy frame 2 of 6), byte 51. This symbol exists only because sta $DBB3 at $A43F, sta $DBB3 at $F6D2 addresses the colour RAM at $DBB3, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56251,"t":"byte","b":[0,0,0,0,48]},{"a":56256,"l":"spr_cluster_3","c":"Sprite $6F ($DBC0): the three-ball cluster enemy, frame 3 of 6.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56272,"t":"byte","b":[0,0,0,120,0,3,121,64]},{"a":56280,"t":"byte","b":[1,251,64]},{"a":56283,"l":"a_DBDB","c":"Sprite $6F (the three-ball cluster enemy frame 3 of 6), byte 27. This symbol exists only because sta $DBDB at $A442, sta $DBDB at $F6D5 addresses the colour RAM at $DBDB, not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[1,255,160,1,250,160,1,231]},{"a":56291,"t":"byte","b":[160,0,247,160,0,31,128,0]},{"a":56299,"t":"byte","b":[31,128,0,31,128,0,62,128]},{"a":56307,"t":"byte","b":[0,14,0,0,0,0,0,0]},{"a":56315,"t":"byte","b":[0,0,0,0,219]},{"a":56320,"l":"spr_cluster_4","c":"Sprite $70 ($DC00): the three-ball cluster enemy, frame 4 of 6.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56336,"t":"byte","b":[0,0,1,195,128,13,237,224]},{"a":56344,"t":"byte","b":[7,231,224,7,231,224,7,231]},{"a":56352,"t":"byte","b":[224,7,159,160,3,222,128,0]},{"a":56360,"t":"byte","b":[126,0,0,126,0,0,126,0]},{"a":56368,"t":"byte","b":[0,250,0,0,40,0,0,0]},{"a":56376,"t":"byte","b":[0,0,0,0,0,0,0,235]},{"a":56384,"l":"spr_cluster_5","c":"Sprite $71 ($DC40): the three-ball cluster enemy, frame 5 of 6.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56400,"t":"byte","b":[0,0,0,14,0,0,119,128]},{"a":56408,"t":"byte","b":[3,223,128,1,223,128,1,223]},{"a":56416,"t":"byte","b":[128,3,126,128,3,106,0,1]},{"a":56424,"t":"byte","b":[248,0,1,248,0,1,248,0]},{"a":56432,"t":"byte","b":[3,232,0,0,160,0,0,0]},{"a":56440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56448,"l":"spr_cluster_6","c":"Sprite $72 ($DC80): the three-ball cluster enemy, frame 6 of 6.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56464,"t":"byte","b":[6,0,0,55,128,0,31,128]},{"a":56472,"t":"byte","b":[0,31,128,0,31,128,0,126]},{"a":56480,"t":"byte","b":[128,3,122,128,1,251,64,1]},{"a":56488,"t":"byte","b":[251,128,1,250,64,3,233,0]},{"a":56496,"t":"byte","b":[0,160,0,0,0,0,0,0]},{"a":56504,"t":"byte","b":[0,0,0,0,0,0,0,85]},{"a":56512,"l":"spr_vaus_fade","c":"Sprites $73-$7A ($DCC0-$DEBF): four pairs of Vaus halves in dithered form, each thinner than the last. The simulator wrote $73/$75/$77/$79 to sprite pointer 6 and $74/$76/$78/$7A to pointer 7 in attract mode, so a pair is the whole Vaus dissolving or appearing; which of the two is not established.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56544,"t":"byte","b":[0,0,0,0,8,204,204,35]},{"a":56552,"t":"byte","b":[51,51,200,204,204,17,153,153]},{"a":56560,"t":"byte","b":[72,204,204,35,51,51,200,204]},{"a":56568,"t":"byte","b":[204,35,51,51,8,204,204,0]},{"a":56576,"l":"spr_vaus_fade_1r","c":"Sprite $74 ($DD00): the dithered Vaus, frame pair 1 of 4, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56600,"l":"a_DD18","c":"Sprite $74 (the dithered, thinning Vaus halves frame 2 of 8), byte 24. This symbol exists only because sta $DD18 at $F621 addresses CIA 2 at $DD18 (a mirror of its $DD08), not the RAM beneath; the RAM here is sprite data the video chip reads in bank 3.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56608,"t":"byte","b":[0,0,0,0,204,204,128,51]},{"a":56616,"t":"byte","b":[51,32,204,204,140,153,153,152]},{"a":56624,"t":"byte","b":[204,204,132,51,51,32,204,204]},{"a":56632,"t":"byte","b":[140,51,51,32,204,204,128,0]},{"a":56640,"l":"spr_vaus_fade_2l","c":"Sprite $75 ($DD40): the dithered Vaus, frame pair 2 of 4, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56672,"t":"byte","b":[0,0,0,0,8,204,204,35]},{"a":56680,"t":"byte","b":[51,51,200,0,0,51,187,187]},{"a":56688,"t":"byte","b":[200,0,0,35,51,51,200,0]},{"a":56696,"t":"byte","b":[0,34,34,34,8,136,136,0]},{"a":56704,"l":"spr_vaus_fade_2r","c":"Sprite $76 ($DD80): the dithered Vaus, frame pair 2 of 4, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56728,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56736,"t":"byte","b":[0,0,0,0,204,204,128,51]},{"a":56744,"t":"byte","b":[51,48,0,0,0,187,187,184]},{"a":56752,"t":"byte","b":[0,0,0,51,51,48,0,0]},{"a":56760,"t":"byte","b":[8,34,34,32,136,136,128,0]},{"a":56768,"l":"spr_vaus_fade_3l","c":"Sprite $77 ($DDC0): the dithered Vaus, frame pair 3 of 4, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56792,"t":"byte","b":[0,0,0,0,0]},{"a":56797,"l":"s_DDDD","c":"Sprite $77 (the dithered, thinning Vaus halves frame 5 of 8), byte 29. Nothing runs here: JSR $DDDD at $FEE8 and $FF12 is a placeholder whose operand the game writes at run time, and the tracer followed it. The bytes are sprite data.","t":"byte","b":[0,0,0,0,0,0,0,8],"x":[65256,65298]},{"a":56805,"t":"byte","b":[136,136,34,34,34,0,0,0]},{"a":56813,"t":"byte","b":[162,34,34,128,0,0,34,34]},{"a":56821,"t":"byte","b":[34,128,0,0,34,34,34,8]},{"a":56829,"t":"byte","b":[136,136,0]},{"a":56832,"l":"spr_vaus_fade_3r","c":"Sprite $78 ($DE00): the dithered Vaus, frame pair 3 of 4, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56840,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56848,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56856,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56864,"t":"byte","b":[0,0,0,0,136,136,128,34]},{"a":56872,"t":"byte","b":[34,32,0,0,8,34,34,40]},{"a":56880,"t":"byte","b":[0,0,8,34,34,32,0,0]},{"a":56888,"t":"byte","b":[8,34,34,32,136,136,128,0]},{"a":56896,"l":"spr_vaus_fade_4l","c":"Sprite $79 ($DE40): the dithered Vaus, frame pair 4 of 4, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56904,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56928,"t":"byte","b":[0,0,0,0,8,136,136,32]},{"a":56936,"t":"byte","b":[0,0,0,0,0,34,34,34]},{"a":56944,"t":"byte","b":[128,0,0,0,0,0,128,0]},{"a":56952,"t":"byte","b":[0,34,34,34,8,0,0,0]},{"a":56960,"l":"spr_vaus_fade_4r","c":"Sprite $7A ($DE80): the dithered Vaus, frame pair 4 of 4, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56992,"t":"byte","b":[0,0,0,0,136,136,128,0]},{"a":57000,"t":"byte","b":[0,32,0,0,8,34,34,32]},{"a":57008,"t":"byte","b":[0,0,8,0,0,0,0,0]},{"a":57016,"t":"byte","b":[8,34,34,32,0,0,0,0]},{"a":57024,"l":"spr_burst","c":"Sprites $7B-$83 ($DEC0-$E0FF), multicolour: a starburst explosion, nine frames from a small flash to a fading ring of dots. The simulator wrote $7B-$83 to sprite pointers 2-7, the enemy sprites, in round 1.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57032,"t":"byte","b":[0,0,0,0,0,4,0,2]},{"a":57040,"t":"byte","b":[0,128,2,4,128,2,150,128]},{"a":57048,"t":"byte","b":[0,166,0,0,166,0,1,25]},{"a":57056,"t":"byte","b":[16,5,85,80,0,106,64,0]},{"a":57064,"t":"byte","b":[166,128,0,150,128,2,132,128]},{"a":57072,"t":"byte","b":[2,0,0,0,4,0,0,0]},{"a":57080,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":57088,"l":"spr_burst_2","c":"Sprite $7C ($DF00): the starburst explosion, frame 2 of 9.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57096,"t":"byte","b":[0,8,4,32,8,0,32,2]},{"a":57104,"t":"byte","b":[16,128,2,4,128,2,86,64]},{"a":57112,"t":"byte","b":[1,150,0,0,85,0,5,85]},{"a":57120,"t":"byte","b":[84,21,85,80,0,85,64,0]},{"a":57128,"t":"byte","b":[150,128,0,150,64,1,132,128]},{"a":57136,"t":"byte","b":[2,4,32,2,0,32,8,4]},{"a":57144,"t":"byte","b":[8,8,0,0,0,0,0,255]},{"a":57152,"l":"spr_burst_3","c":"Sprite $7D ($DF40): the starburst explosion, frame 3 of 9.","t":"byte","b":[128,0,0,0,0,8,0,0]},{"a":57160,"t":"byte","b":[0,12,12,32,8,0,32,2]},{"a":57168,"t":"byte","b":[48,192,3,4,128,2,254,192]},{"a":57176,"t":"byte","b":[3,182,0,0,247,0,15,85]},{"a":57184,"t":"byte","b":[244,55,213,112,0,247,192,0]},{"a":57192,"t":"byte","b":[190,128,0,182,192,3,140,128]},{"a":57200,"t":"byte","b":[2,12,32,2,0,32,8,12]},{"a":57208,"t":"byte","b":[0,8,0,0,32,0,2,0]},{"a":57216,"l":"spr_burst_4","c":"Sprite $7E ($DF80): the starburst explosion, frame 4 of 9.","t":"byte","b":[0,0,0,0,0,0,8,0]},{"a":57224,"t":"byte","b":[8,8,12,8,0,0,0,0]},{"a":57232,"t":"byte","b":[48,192,3,4,128,2,254,192]},{"a":57240,"t":"byte","b":[3,182,0,0,243,0,15,64]},{"a":57248,"t":"byte","b":[244,55,209,112,0,243,192,0]},{"a":57256,"t":"byte","b":[190,128,0,182,192,3,140,128]},{"a":57264,"t":"byte","b":[2,12,32,2,0,32,0,12]},{"a":57272,"t":"byte","b":[0,32,0,0,0,0,0,0]},{"a":57280,"l":"spr_burst_5","c":"Sprite $7F ($DFC0): the starburst explosion, frame 5 of 9.","t":"byte","b":[0,0,0,0,0,0,0,8]},{"a":57288,"t":"byte","b":[0,8,0,0,3,32,128,2]},{"a":57296,"t":"byte","b":[0,0,2,164,128,1,58,64]},{"a":57304,"t":"byte","b":[2,66,0,2,3,0,8,0]},{"a":57312,"t":"byte","b":[184,138,0,160,0,64,192,0]},{"a":57320,"t":"byte","b":[190,128,0,185,128,2,8,128]},{"a":57328,"t":"byte","b":[2,8,32,0,0,0,0,0]},{"a":57336,"t":"byte","b":[0,0,8,0,0,0,0,255]},{"a":57344,"l":"spr_burst_end","c":"Sprites $80-$83 ($E000-$E0FF): the last four frames of the starburst that starts at spr_burst ($7B), the ring of dots thinning out. Read only by the video chip (pointer values from the $F825 table).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57352,"t":"byte","b":[0,0,0,0,3,32,0,2]},{"a":57360,"t":"byte","b":[42,48,0,131,128,2,192,204]},{"a":57368,"t":"byte","b":[2,0,48,2,0,0,8,0]},{"a":57376,"t":"byte","b":[48,2,0,32,0,0,48,2]},{"a":57384,"t":"byte","b":[0,176,0,51,128,0,136,128]},{"a":57392,"t":"byte","b":[0,8,32,0,0,0,0,0]},{"a":57400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57408,"l":"spr_burst_7","c":"Sprite $81 ($E040): the starburst explosion, frame 7 of 9.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57416,"t":"byte","b":[0,0,0,0,8,32,32,34]},{"a":57424,"t":"byte","b":[130,128,2,0,136,8,0,32]},{"a":57432,"t":"byte","b":[8,0,0,8,0,0,0,0]},{"a":57440,"t":"byte","b":[0,0,0,0,8,0,8,2]},{"a":57448,"t":"byte","b":[0,8,2,48,32,0,160,32]},{"a":57456,"t":"byte","b":[0,32,128,0,0,0,0,0]},{"a":57464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57472,"l":"spr_burst_8","c":"Sprite $82 ($E080): the starburst explosion, frame 8 of 9.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57480,"t":"byte","b":[0,2,0,128,8,0,0,0]},{"a":57488,"t":"byte","b":[0,8,32,0,0,0,0,2]},{"a":57496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57512,"t":"byte","b":[0,0,32,0,2,0,0,2]},{"a":57520,"t":"byte","b":[32,0,0,0,0,8,2,0]},{"a":57528,"t":"byte","b":[0,0,128,128,0,0,0,0]},{"a":57536,"l":"spr_burst_9","c":"Sprite $83 ($E0C0): the starburst explosion, frame 9 of 9.","t":"byte","b":[0,0,128,32,0,0,0,0]},{"a":57544,"t":"byte","b":[0,0,0,2,0,0,0,0]},{"a":57552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57584,"t":"byte","b":[0,0,0,0,0,0,128,0]},{"a":57592,"t":"byte","b":[2,0,0,0,32,0,8,255]},{"a":57600,"l":"spr_vaus_breakup","c":"Sprites $84-$93 ($E100-$E4FF): eight pairs of Vaus halves, the bat flashing and then breaking into pieces that scatter and fade. In the simulator's game run (agent 8's pointer log) $84-$93 went to sprite pointers 4 and 5, so this reads as the Vaus being destroyed when a life is lost; that timing was not checked.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57632,"t":"byte","b":[0,0,0,0,43,191,251,43]},{"a":57640,"t":"byte","b":[239,239,251,187,251,213,89,89]},{"a":57648,"t":"byte","b":[107,238,254,235,239,255,235,255]},{"a":57656,"t":"byte","b":[191,43,235,175,43,191,239,0]},{"a":57664,"l":"spr_vaus_breakup_1r","c":"Sprite $85 ($E140): the Vaus breaking up, frame pair 1 of 8, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57696,"t":"byte","b":[0,0,0,0,191,191,160,239]},{"a":57704,"t":"byte","b":[239,160,255,191,172,153,149,92]},{"a":57712,"t":"byte","b":[254,251,164,255,251,172,239,239]},{"a":57720,"t":"byte","b":[172,239,191,160,191,191,160,0]},{"a":57728,"l":"spr_vaus_breakup_2l","c":"Sprite $86 ($E180): the Vaus breaking up, frame pair 2 of 8, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57752,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":57760,"t":"byte","b":[81,41,23,209,41,31,65,41]},{"a":57768,"t":"byte","b":[69,5,87,81,80,107,81,208]},{"a":57776,"t":"byte","b":[107,70,118,107,101,93,105,215]},{"a":57784,"t":"byte","b":[157,43,105,167,41,149,101,0]},{"a":57792,"l":"spr_vaus_breakup_2r","c":"Sprite $87 ($E1C0): the Vaus breaking up, frame pair 2 of 8, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57816,"t":"byte","b":[0,0,0,0,0,0,20,0]},{"a":57824,"t":"byte","b":[0,29,20,0,5,29,160,65]},{"a":57832,"t":"byte","b":[71,160,85,31,164,217,149,84]},{"a":57840,"t":"byte","b":[214,81,164,213,217,164,103,101]},{"a":57848,"t":"byte","b":[164,101,157,160,149,149,160,255]},{"a":57856,"l":"spr_vaus_breakup_3l","c":"Sprite $88 ($E200): the Vaus breaking up, frame pair 3 of 8, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57864,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57880,"t":"byte","b":[0,1,80,0,7,81,5,29]},{"a":57888,"t":"byte","b":[1,41,20,1,41,8,21,105]},{"a":57896,"t":"byte","b":[81,116,85,209,216,105,211,70]},{"a":57904,"t":"byte","b":[105,229,229,107,103,237,43,105]},{"a":57912,"t":"byte","b":[101,41,101,0,32,0,0,0]},{"a":57920,"l":"spr_vaus_breakup_3r","c":"Sprite $89 ($E240): the Vaus breaking up, frame pair 3 of 8, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57936,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57944,"t":"byte","b":[0,4,0,20,20,0,20,29]},{"a":57952,"t":"byte","b":[0,69,4,128,65,5,160,209]},{"a":57960,"t":"byte","b":[31,164,209,23,100,209,17,156]},{"a":57968,"t":"byte","b":[88,89,164,101,97,164,5,135]},{"a":57976,"t":"byte","b":[160,0,21,160,0,0,0,0]},{"a":57984,"l":"spr_vaus_breakup_4l","c":"Sprite $8A ($E280): the Vaus breaking up, frame pair 4 of 8, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57992,"t":"byte","b":[0,0,0,0,0,0,81,0]},{"a":58000,"t":"byte","b":[21,209,0,21,65,40,16,0]},{"a":58008,"t":"byte","b":[104,0,0,96,0,84,1,1]},{"a":58016,"t":"byte","b":[208,9,1,64,104,65,21,96]},{"a":58024,"t":"byte","b":[80,148,72,118,80,104,118,64]},{"a":58032,"t":"byte","b":[40,88,0,40,0,0,0,0]},{"a":58040,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":58048,"l":"spr_vaus_breakup_4r","c":"Sprite $8B ($E2C0): the Vaus breaking up, frame pair 4 of 8, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58064,"t":"byte","b":[0,0,5,20,0,7,29,128]},{"a":58072,"t":"byte","b":[69,7,160,65,7,32,209,1]},{"a":58080,"t":"byte","b":[0,209,64,128,208,69,160,80]},{"a":58088,"t":"byte","b":[31,36,65,117,4,1,65,132]},{"a":58096,"t":"byte","b":[0,9,164,0,4,164,0,0]},{"a":58104,"t":"byte","b":[32,0,0,0,0,0,0,255]},{"a":58112,"l":"spr_vaus_breakup_5l","c":"Sprite $8C ($E300): the Vaus breaking up, frame pair 5 of 8, left half.","t":"byte","b":[0,0,0,0,0,1,0,20]},{"a":58120,"t":"byte","b":[81,0,21,64,2,0,0,10]},{"a":58128,"t":"byte","b":[0,4,10,1,64,8,0,64]},{"a":58136,"t":"byte","b":[2,0,1,26,16,5,24,20]},{"a":58144,"t":"byte","b":[4,32,29,0,32,29,0,8]},{"a":58152,"t":"byte","b":[4,0,40,0,0,32,0,0]},{"a":58160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58168,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":58176,"l":"spr_vaus_breakup_5r","c":"Sprite $8D ($E340): the Vaus breaking up, frame pair 5 of 8, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58184,"t":"byte","b":[0,0,0,0,4,0,0,69]},{"a":58192,"t":"byte","b":[16,0,71,23,128,69,21,160]},{"a":58200,"t":"byte","b":[65,1,32,81,0,0,16,64]},{"a":58208,"t":"byte","b":[160,80,4,144,0,20,32,1]},{"a":58216,"t":"byte","b":[80,0,1,0,144,0,1,160]},{"a":58224,"t":"byte","b":[0,4,32,0,0,32,0,0]},{"a":58232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58240,"l":"spr_vaus_breakup_6l","c":"Sprite $8E ($E380): the Vaus breaking up, frame pair 6 of 8, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58248,"t":"byte","b":[17,0,4,81,0,0,0,0]},{"a":58256,"t":"byte","b":[128,16,2,0,84,0,0,0]},{"a":58264,"t":"byte","b":[2,0,0,0,132,1,2,5]},{"a":58272,"t":"byte","b":[1,0,0,64,8,1,64,2]},{"a":58280,"t":"byte","b":[0,16,8,0,0,8,0,0]},{"a":58288,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58296,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":58304,"l":"spr_vaus_breakup_6r","c":"Sprite $8F ($E3C0): the Vaus breaking up, frame pair 6 of 8, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58312,"t":"byte","b":[0,0,0,0,4,0,0,77]},{"a":58320,"t":"byte","b":[16,0,69,0,128,64,17,128]},{"a":58328,"t":"byte","b":[1,1,32,81,0,0,16,64]},{"a":58336,"t":"byte","b":[128,16,4,0,64,20,32,0]},{"a":58344,"t":"byte","b":[0,0,1,0,128,1,0,160]},{"a":58352,"t":"byte","b":[0,4,0,0,0,32,0,0]},{"a":58360,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":58368,"l":"spr_vaus_breakup_7l","c":"Sprite $90 ($E400): the Vaus breaking up, frame pair 7 of 8, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58376,"t":"byte","b":[0,0,0,0,0,0,16,0]},{"a":58384,"t":"byte","b":[4,65,0,0,0,0,128,0]},{"a":58392,"t":"byte","b":[2,0,68,0,4,0,0,33]},{"a":58400,"t":"byte","b":[0,0,128,0,0,0,1,2]},{"a":58408,"t":"byte","b":[1,16,2,0,0,8,0,0]},{"a":58416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58432,"l":"spr_vaus_breakup_7r","c":"Sprite $91 ($E440): the Vaus breaking up, frame pair 7 of 8, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58440,"t":"byte","b":[0,0,0,0,0,0,0,4]},{"a":58448,"t":"byte","b":[0,0,0,0,0,69,0,0]},{"a":58456,"t":"byte","b":[0,0,0,64,17,128,17,0]},{"a":58464,"t":"byte","b":[0,16,0,128,64,0,0,0]},{"a":58472,"t":"byte","b":[18,0,1,0,0,1,0,0]},{"a":58480,"t":"byte","b":[0,4,128,0,0,0,0,0]},{"a":58488,"t":"byte","b":[32,0,0,0,0,0,0,255]},{"a":58496,"l":"spr_vaus_breakup_8l","c":"Sprite $92 ($E480): the Vaus breaking up, frame pair 8 of 8, left half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58520,"t":"byte","b":[0,0,16,0,128,1,0,0]},{"a":58528,"t":"byte","b":[0,0,0,16,0,0,0,0]},{"a":58536,"t":"byte","b":[33,0,0,0,1,0,0,0]},{"a":58544,"t":"byte","b":[2,1,0,0,0,0,0,0]},{"a":58552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58560,"l":"spr_vaus_breakup_8r","c":"Sprite $93 ($E4C0): the Vaus breaking up, frame pair 8 of 8, right half.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58584,"t":"byte","b":[4,0,0,0,0,0,64,0]},{"a":58592,"t":"byte","b":[0,0,1,0,0,16,128,16]},{"a":58600,"t":"byte","b":[0,0,0,0,0,0,2,0]},{"a":58608,"t":"byte","b":[0,0,0,0,0,0,1,4]},{"a":58616,"t":"byte","b":[128,0,0,0,0,0,32,0]},{"a":58624,"l":"spr_capsule","c":"Sprite $94 ($E500-$E53F): the blank capsule, a rounded bar 10 rows tall. $A7E9 builds the lettered capsule (sprite $95) from it each frame, reading its middle byte column ($E501,x).","t":"byte","b":[10]},{"a":58625,"l":"f_E501","c":"Middle byte of row 0 of spr_capsule: the base of $A7F6's read, LDA $E501,X with X = 0, 3 .. 27.","t":"byte","b":[170,0,15,255,0,58,170,0],"x":[42998]},{"a":58633,"t":"byte","b":[42,170,128,42,170,128,42,170]},{"a":58641,"t":"byte","b":[128,42,170,128,42,170,128,42]},{"a":58649,"t":"byte","b":[170,128,10,170,0,0,0,0]},{"a":58657,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58665,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58673,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58681,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":58688,"l":"spr_capsule_letter","c":"Sprite $95 ($E540-$E57F): the capsule with its letter, rebuilt by $A7E9: for ten rows, $E541,x = ($E501,x AND $A850,y) OR $A80F,y, with Y stepping through eight rows from $0238 so that the letter scrolls round. Runtime state: play-ram differs from the hand-over here. The simulator wrote $95 to sprite pointers 2-7.","t":"byte","b":[10]},{"a":58689,"l":"f_E541","c":"Middle byte of row 0 of spr_capsule_letter: the base of $A7FF's write, STA $E541,X.","t":"byte","b":[106,0,15,90,0,58,106,0],"x":[43007]},{"a":58697,"t":"byte","b":[42,86,128,42,170,128,42,170]},{"a":58705,"t":"byte","b":[128,42,170,128,42,86,128,42]},{"a":58713,"t":"byte","b":[106,128,10,90,0,0,0,0]},{"a":58721,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58729,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58737,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58745,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":58752,"l":"spr_frame_work","c":"Sprites $96-$97 ($E580-$E5FF): the working copy of sprite 0 and 1's shape. $F25D sets pointers 0/1 to $96/$97 and $F24A makes both sprites black; they are hi-res ($D01C bits 0-1 clear in the play frame). Restored from spr_frame_master by $F09E, cleared to zero by $F0AA (called through $96D7), and $A4C4 ORs one-pixel masks from $FC91 ($80, $40 .. $01) into it, ten rows per call once the X position at $9446 passes $E0. Together the two halves draw a box outline on a striped base; what it depicts is not established.","t":"byte","b":[3,255,255,2,0,0,2,0],"x":[42235,42241,61603,61614]},{"a":58760,"t":"byte","b":[0,2,0,0,2,0,0,2]},{"a":58768,"t":"byte","b":[0,0,2,0,0,2,0,0]},{"a":58776,"t":"byte","b":[3,255,255,21,85,85,26,170]},{"a":58784,"t":"byte","b":[170,5,85,85,4,26,170,0]},{"a":58792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58808,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":58816,"l":"spr_frame_work_r","c":"Sprite $97, the right half of spr_frame_work. $A4DD-$A4E3 OR a mask from $FC91 into it, every third byte from a row given by $0247/8.","t":"byte","b":[255,255,0],"x":[42205,42211]},{"a":58819,"l":"a_E5C3","c":"Sprite $97 row 1, byte 0. $A4D6 tests it for $FF: once it is full, $A4FB goes on to OR the mask into the left half ($E580) instead.","t":"byte","b":[0,1,0,0,1,0,0,1],"x":[42198]},{"a":58827,"t":"byte","b":[0,0,1,0,0,1,0,0]},{"a":58835,"t":"byte","b":[1,0,0,1,4,255,255,4]},{"a":58843,"t":"byte","b":[85,85,85,170,170,170,85,85]},{"a":58851,"t":"byte","b":[84,170,170,20,0,0,0,0]},{"a":58859,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58867,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58875,"t":"byte","b":[0,0,0,0,102]},{"a":58880,"l":"spr_frame_master","c":"Sprites $98-$99 ($E600-$E67F): the master of sprites 0 and 1's shape, copied whole into spr_frame_work ($E580) by $F09E. The pointer values $98/$99 themselves were never seen in a sprite pointer.","t":"byte","b":[3,255,255,2,0,0,2,0],"x":[61600]},{"a":58888,"t":"byte","b":[0,2,0,0,2,0,0,2]},{"a":58896,"t":"byte","b":[0,0,2,0,0,2,0,0]},{"a":58904,"t":"byte","b":[3,255,255,21,85,85,26,170]},{"a":58912,"t":"byte","b":[170,5,85,85,4,26,170,0]},{"a":58920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58936,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":58944,"l":"spr_frame_master_r","c":"Sprite $99 ($E640-$E67F): the right half of spr_frame_master, copied to $E5C0 by $F09E.","t":"byte","b":[255,255,0,0,1,0,0,1]},{"a":58952,"t":"byte","b":[0,0,1,0,0,1,0,0]},{"a":58960,"t":"byte","b":[1,0,0,1,0,0,1,4]},{"a":58968,"t":"byte","b":[255,255,4,85,85,85,170,170]},{"a":58976,"t":"byte","b":[170,85,85,84,170,170,20,0]},{"a":58984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":58992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59000,"t":"byte","b":[0,0,0,0,0,0,0,102]},{"a":59008,"l":"spr_cube","c":"Sprites $9A-$A7 ($E680-$E9FF), multicolour: an enemy shaped like a cube, fourteen frames of it turning. The simulator wrote $A0 and $A1 to sprite pointers 2-7 in round 1, so the cube is round 1's enemy.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59024,"t":"byte","b":[85,64,1,85,128,5,86,128]},{"a":59032,"t":"byte","b":[15,254,128,15,254,128,15,254]},{"a":59040,"t":"byte","b":[128,15,254,128,15,254,128,15]},{"a":59048,"t":"byte","b":[254,128,15,254,128,15,254,0]},{"a":59056,"t":"byte","b":[15,252,0,0,0,0,0,0]},{"a":59064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59072,"l":"spr_cube_2","c":"Sprite $9B ($E6C0): the cube enemy, frame 2 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59080,"t":"byte","b":[0,0,0,0,0,20,0,0]},{"a":59088,"t":"byte","b":[85,0,1,85,64,5,85,128]},{"a":59096,"t":"byte","b":[13,86,128,15,218,128,15,250]},{"a":59104,"t":"byte","b":[128,15,250,128,15,250,128,15]},{"a":59112,"t":"byte","b":[250,128,15,250,128,15,250,128]},{"a":59120,"t":"byte","b":[15,250,0,3,248,0,0,48]},{"a":59128,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":59136,"l":"spr_cube_3","c":"Sprite $9C ($E700): the cube enemy, frame 3 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59144,"t":"byte","b":[0,0,16,0,0,84,0,1]},{"a":59152,"t":"byte","b":[85,0,5,85,192,13,85,128]},{"a":59160,"t":"byte","b":[13,86,128,15,90,128,15,106]},{"a":59168,"t":"byte","b":[128,15,234,128,15,234,128,15]},{"a":59176,"t":"byte","b":[234,128,15,234,128,3,234,128]},{"a":59184,"t":"byte","b":[3,234,0,0,232,0,0,224]},{"a":59192,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":59200,"l":"spr_cube_4","c":"Sprite $9D ($E740): the cube enemy, frame 4 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59208,"t":"byte","b":[0,0,16,0,0,84,0,1]},{"a":59216,"t":"byte","b":[84,0,5,85,0,5,85,0]},{"a":59224,"t":"byte","b":[5,85,0,13,86,0,13,90]},{"a":59232,"t":"byte","b":[0,15,90,0,15,106,0,15]},{"a":59240,"t":"byte","b":[170,0,3,168,0,3,168,0]},{"a":59248,"t":"byte","b":[3,160,0,0,160,0,0,128]},{"a":59256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59264,"l":"spr_cube_5","c":"Sprite $9E ($E780): the cube enemy, frame 5 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59272,"t":"byte","b":[0,0,16,0,0,84,0,1]},{"a":59280,"t":"byte","b":[84,0,1,84,0,5,85,0]},{"a":59288,"t":"byte","b":[5,85,0,5,85,0,5,86]},{"a":59296,"t":"byte","b":[0,13,90,0,13,106,0,13]},{"a":59304,"t":"byte","b":[170,0,3,168,0,3,168,0]},{"a":59312,"t":"byte","b":[0,160,0,0,128,0,0,0]},{"a":59320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59328,"l":"spr_cube_6","c":"Sprite $9F ($E7C0): the cube enemy, frame 6 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59336,"t":"byte","b":[0,0,0,0,0,16,0,0]},{"a":59344,"t":"byte","b":[92,0,0,92,0,1,92,0]},{"a":59352,"t":"byte","b":[1,95,0,5,95,0,5,95]},{"a":59360,"t":"byte","b":[0,5,95,0,1,107,0,1]},{"a":59368,"t":"byte","b":[170,0,1,170,0,2,168,0]},{"a":59376,"t":"byte","b":[2,168,0,0,160,0,0,128]},{"a":59384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59392,"l":"spr_cube_7","c":"Sprite $A0 ($E800): the cube enemy, frame 7 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59400,"t":"byte","b":[0,0,0,0,0,48,0,0]},{"a":59408,"t":"byte","b":[112,0,0,124,0,1,124,0]},{"a":59416,"t":"byte","b":[1,127,0,5,127,0,5,127]},{"a":59424,"t":"byte","b":[0,5,127,0,5,175,0,6]},{"a":59432,"t":"byte","b":[171,0,10,170,0,10,168,0]},{"a":59440,"t":"byte","b":[2,168,0,0,32,0,0,0]},{"a":59448,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":59456,"l":"spr_cube_8","c":"Sprite $A1 ($E840): the cube enemy, frame 8 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59464,"t":"byte","b":[0,0,0,0,0,192,0,0]},{"a":59472,"t":"byte","b":[240,0,1,252,0,1,255,0]},{"a":59480,"t":"byte","b":[1,255,0,1,255,0,1,255]},{"a":59488,"t":"byte","b":[0,5,255,0,7,255,0,10]},{"a":59496,"t":"byte","b":[255,0,10,191,0,2,171,0]},{"a":59504,"t":"byte","b":[2,170,0,0,40,0,0,0]},{"a":59512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59520,"l":"spr_cube_9","c":"Sprite $A2 ($E880): the cube enemy, frame 9 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59528,"t":"byte","b":[0,0,0,0,15,0,0,15]},{"a":59536,"t":"byte","b":[240,0,15,255,0,15,255,0]},{"a":59544,"t":"byte","b":[15,255,0,15,255,0,15,255]},{"a":59552,"t":"byte","b":[0,15,255,0,15,255,0,15]},{"a":59560,"t":"byte","b":[255,0,10,255,0,2,175,0]},{"a":59568,"t":"byte","b":[0,42,0,0,0,0,0,0]},{"a":59576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59584,"l":"spr_cube_10","c":"Sprite $A3 ($E8C0): the cube enemy, frame 10 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59592,"t":"byte","b":[0,0,0,0,0,0,0,15]},{"a":59600,"t":"byte","b":[212,0,15,254,0,15,254,0]},{"a":59608,"t":"byte","b":[15,254,0,15,254,0,15,254]},{"a":59616,"t":"byte","b":[0,15,254,0,15,254,0,15]},{"a":59624,"t":"byte","b":[254,0,15,254,0,0,62,0]},{"a":59632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59640,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":59648,"l":"spr_cube_11","c":"Sprite $A4 ($E900): the cube enemy, frame 11 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59656,"t":"byte","b":[0,0,0,0,0,0,0,5]},{"a":59664,"t":"byte","b":[84,0,15,250,0,15,250,0]},{"a":59672,"t":"byte","b":[15,250,0,15,250,0,15,250]},{"a":59680,"t":"byte","b":[0,15,250,0,15,250,0,15]},{"a":59688,"t":"byte","b":[250,0,15,250,0,15,248,0]},{"a":59696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59704,"t":"byte","b":[0,0,0,0,0,0,0,56]},{"a":59712,"l":"spr_cube_12","c":"Sprite $A5 ($E940): the cube enemy, frame 12 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59728,"t":"byte","b":[112,0,0,124,0,1,124,0]},{"a":59736,"t":"byte","b":[1,127,0,5,127,0,5,127]},{"a":59744,"t":"byte","b":[0,5,255,0,7,175,0,14]},{"a":59752,"t":"byte","b":[171,0,10,170,0,2,168,0]},{"a":59760,"t":"byte","b":[0,160,0,0,0,0,0,0]},{"a":59768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59776,"l":"spr_cube_13","c":"Sprite $A6 ($E980): the cube enemy, frame 13 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59792,"t":"byte","b":[112,0,0,124,0,1,124,0]},{"a":59800,"t":"byte","b":[1,127,0,5,127,0,5,255]},{"a":59808,"t":"byte","b":[0,7,255,0,7,254,0,15]},{"a":59816,"t":"byte","b":[170,0,2,168,0,2,168,0]},{"a":59824,"t":"byte","b":[0,160,0,0,0,0,0,0]},{"a":59832,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":59840,"l":"spr_cube_14","c":"Sprite $A7 ($E9C0): the cube enemy, frame 14 of 14.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59848,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":59856,"t":"byte","b":[240,0,0,124,0,1,124,0]},{"a":59864,"t":"byte","b":[1,127,0,13,255,0,5,255]},{"a":59872,"t":"byte","b":[0,7,254,0,15,254,0,15]},{"a":59880,"t":"byte","b":[234,0,2,168,0,2,168,0]},{"a":59888,"t":"byte","b":[0,160,0,0,0,0,0,0]},{"a":59896,"t":"byte","b":[0,0,0,0,0,0,0,255]},{"a":59904,"l":"tiles_round33","c":"Character set chars 64-127 for round index $20 (the 33rd round, Doh's in features.md), 512 bytes, multicolour: irregular pieces, not a repeating background. $9C59 copies it to $CA00-$CBFF when the round index $093D,x reaches $20 (called from $95E8 and $9C41). $EA00-$EA7F and $EB40-$EB7F also appear at $7E00-$7E7F and $7F40-$7F7F.","t":"byte","b":[0,31,51,59,0,51,51,55],"x":[40027]},{"a":59912,"t":"byte","b":[8,0,3,0,15,15,0,8]},{"a":59920,"t":"byte","b":[0,0,186,0,186,186,0,0]},{"a":59928,"l":"a_EA18","c":"Inside tiles_round33, char $43 row 0. Not a read: BIT $EA18 at $063E is the skip trick, its operand bytes $18 $EA being the CLC and NOP that the BPL at $063B jumps to.","t":"byte","b":[0,0,240,0,220,220,0,0],"x":[1598]},{"a":59936,"t":"byte","b":[0,0,0,0,0,60,43,63]},{"a":59944,"t":"byte","b":[12,63,56,251,236,187,235,151]},{"a":59952,"t":"byte","b":[254,15,255,254,175,254,174,93]},{"a":59960,"t":"byte","b":[60,0,63,0,59,59,59,59]},{"a":59968,"t":"byte","b":[23,43,60,0,128,232,188,192]},{"a":59976,"t":"byte","b":[167,235,187,236,251,56,63,12]},{"a":59984,"t":"byte","b":[109,254,174,174,255,242,3,254]},{"a":59992,"l":"tiles_round33_4b","c":"tiles_round33, chars $4B-$5F ($EA58-$EAFF), the part of the round-33 tile set after the BIT-skip symbol at $EA18.","t":"byte","b":[59,0,63,0,34,59,14,3]},{"a":60000,"t":"byte","b":[117,117,117,117,117,117,117,127]},{"a":60008,"t":"byte","b":[221,221,223,213,223,221,223,213]},{"a":60016,"t":"byte","b":[213,253,213,85,221,93,125,85]},{"a":60024,"t":"byte","b":[215,215,255,87,255,87,255,87]},{"a":60032,"t":"byte","b":[0,0,15,255,216,96,128,128]},{"a":60040,"t":"byte","b":[0,255,101,255,106,0,0,0]},{"a":60048,"t":"byte","b":[0,255,85,255,170,0,0,0]},{"a":60056,"t":"byte","b":[192,60,246,253,59,0,0,0]},{"a":60064,"t":"byte","b":[248,223,230,250,62,15,0,0]},{"a":60072,"t":"byte","b":[216,216,216,219,219,219,219,219]},{"a":60080,"t":"byte","b":[232,248,246,54,54,62,61,13]},{"a":60088,"t":"byte","b":[223,239,59,59,55,203,203,206]},{"a":60096,"t":"byte","b":[14,14,14,3,3,3,0,0]},{"a":60104,"t":"byte","b":[206,243,115,179,179,188,236,236]},{"a":60112,"t":"byte","b":[23,43,60,0,0,192,192,204]},{"a":60120,"t":"byte","b":[236,239,239,60,0,60,43,63]},{"a":60128,"t":"byte","b":[23,43,60,0,15,63,247,220]},{"a":60136,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":60144,"t":"byte","b":[252,176,112,112,176,176,176,252]},{"a":60152,"t":"byte","b":[236,255,63,15,0,60,43,63]},{"a":60160,"l":"tiles_round33_96","c":"tiles_round33, chars 96-127 ($EB00-$EBFF), copied to $CB00 by $9C59.","t":"byte","b":[250,234,250,234,207,63,254,232],"x":[40033]},{"a":60168,"t":"byte","b":[149,85,149,86,170,234,160,0]},{"a":60176,"t":"byte","b":[85,86,85,166,170,171,10,0]},{"a":60184,"t":"byte","b":[175,171,175,171,243,252,191,43]},{"a":60192,"t":"byte","b":[128,0,0,0,0,168,254,255]},{"a":60200,"t":"byte","b":[48,0,60,0,48,252,0,48]},{"a":60208,"t":"byte","b":[0,0,0,192,240,240,178,187]},{"a":60216,"t":"byte","b":[2,0,0,0,0,42,191,255]},{"a":60224,"t":"byte","b":[238,186,153,165,149,165,149,165]},{"a":60232,"t":"byte","b":[111,109,110,125,122,253,249,224]},{"a":60240,"t":"byte","b":[122,185,121,189,95,111,111,11]},{"a":60248,"t":"byte","b":[238,155,106,87,90,86,90,86]},{"a":60256,"t":"byte","b":[149,165,149,165,213,169,229,57]},{"a":60264,"t":"byte","b":[192,128,0,0,0,13,217,230]},{"a":60272,"t":"byte","b":[3,2,0,0,0,112,103,155]},{"a":60280,"t":"byte","b":[90,86,90,86,107,110,187,175]},{"a":60288,"t":"byte","b":[234,54,254,58,206,255,142,190]},{"a":60296,"t":"byte","b":[169,172,172,160,160,160,160,160]},{"a":60304,"t":"byte","b":[106,58,58,10,10,10,10,10]},{"a":60312,"t":"byte","b":[180,253,172,235,250,190,106,154]},{"a":60320,"t":"byte","b":[46,122,59,234,175,190,170,169]},{"a":60328,"t":"byte","b":[187,236,179,236,191,226,190,178]},{"a":60336,"t":"byte","b":[187,236,179,236,191,226,190,178]},{"a":60344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":60352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":60360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":60368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":60376,"t":"byte","b":[0,0,0,192,240,124,108,236]},{"a":60384,"t":"byte","b":[0,0,0,0,3,3,15,13]},{"a":60392,"t":"byte","b":[14,54,59,36,28,60,48,0]},{"a":60400,"t":"byte","b":[0,0,0,0,0,3,62,43]},{"a":60408,"t":"byte","b":[48,252,0,252,15,252,0,0]},{"a":60416,"l":"tiles_set_a","c":"Background tile set A, chars 64-127, multicolour: $40-$4F form a 4x4-char tile repeated over round 1's playfield, and $50-$5F the same tile shaded, used under the top wall, beside the left wall and in gaps between bricks; $60-$7F do not appear on round 1's screen. $F552 copies it to $CA00-$CBFF when bit 1 of the round index $093D,x is clear (rounds 1, 2, 5, 6, ...). The hand-over charset holds this copy.","t":"byte","b":[255,55,202,218,42,106,170,170],"x":[62814]},{"a":60424,"t":"byte","b":[85,255,255,255,252,191,179,191]},{"a":60432,"t":"byte","b":[255,127,127,223,220,247,247,252]},{"a":60440,"t":"byte","b":[204,243,60,255,255,255,255,0]},{"a":60448,"t":"byte","b":[255,127,127,223,220,247,247,252]},{"a":60456,"t":"byte","b":[204,243,60,255,252,255,255,0]},{"a":60464,"t":"byte","b":[205,49,198,6,218,26,106,106]},{"a":60472,"t":"byte","b":[85,255,255,252,188,179,163,163]},{"a":60480,"t":"byte","b":[49,198,54,218,26,106,106,170]},{"a":60488,"t":"byte","b":[85,255,255,255,252,191,179,191]},{"a":60496,"t":"byte","b":[255,127,127,223,220,247,247,252]},{"a":60504,"t":"byte","b":[204,243,60,255,252,255,255,0]},{"a":60512,"t":"byte","b":[255,127,127,223,220,247,247,252]},{"a":60520,"t":"byte","b":[204,243,60,255,252,255,255,0]},{"a":60528,"t":"byte","b":[205,49,198,6,218,26,106,106]},{"a":60536,"t":"byte","b":[85,255,255,255,252,191,179,191]},{"a":60544,"t":"byte","b":[3,12,12,63,63,255,255,255]},{"a":60552,"t":"byte","b":[255,0,0,3,3,204,204,240]},{"a":60560,"t":"byte","b":[0,192,192,48,48,12,12,3]},{"a":60568,"t":"byte","b":[48,48,204,204,3,3,0,0]},{"a":60576,"t":"byte","b":[255,192,192,48,51,3,12,12]},{"a":60584,"t":"byte","b":[255,48,204,204,3,3,0,0]},{"a":60592,"t":"byte","b":[255,3,12,15,63,63,255,255]},{"a":60600,"t":"byte","b":[255,0,0,3,3,204,204,240]},{"a":60608,"t":"byte","b":[3,12,12,63,63,255,255,255]},{"a":60616,"t":"byte","b":[255,0,0,3,3,204,204,240]},{"a":60624,"t":"byte","b":[255,192,192,48,48,12,12,3]},{"a":60632,"t":"byte","b":[255,48,204,204,3,3,0,0]},{"a":60640,"t":"byte","b":[255,192,192,48,51,15,12,0]},{"a":60648,"t":"byte","b":[255,48,204,204,3,3,0,2]},{"a":60656,"t":"byte","b":[255,3,12,15,63,63,255,255]},{"a":60664,"t":"byte","b":[255,0,0,3,3,204,204,240]},{"a":60672,"l":"tiles_set_a_96","c":"tiles_set_a, chars 96-127 ($ED00-$EDFF), copied to $CB00 by $F552.","t":"byte","b":[117,215,223,125,117,215,215,221],"x":[62820]},{"a":60680,"t":"byte","b":[253,255,87,85,253,221,87,87]},{"a":60688,"t":"byte","b":[119,119,215,215,245,117,119,119]},{"a":60696,"t":"byte","b":[85,93,215,245,117,117,93,93]},{"a":60704,"t":"byte","b":[221,223,215,117,117,215,223,221]},{"a":60712,"t":"byte","b":[247,245,93,93,93,221,213,215]},{"a":60720,"t":"byte","b":[117,117,117,119,119,119,215,223]},{"a":60728,"t":"byte","b":[221,93,223,223,93,93,119,215]},{"a":60736,"t":"byte","b":[213,119,119,117,95,127,245,213]},{"a":60744,"t":"byte","b":[93,221,213,85,253,255,95,215]},{"a":60752,"t":"byte","b":[93,221,221,245,245,247,119,95]},{"a":60760,"t":"byte","b":[247,119,245,223,215,245,125,93]},{"a":60768,"t":"byte","b":[95,125,245,215,221,221,117,117]},{"a":60776,"t":"byte","b":[245,245,87,119,215,223,125,245]},{"a":60784,"t":"byte","b":[213,215,221,221,95,119,119,215]},{"a":60792,"t":"byte","b":[87,95,221,213,119,119,119,221]},{"a":60800,"t":"byte","b":[48,195,207,60,48,195,207,204]},{"a":60808,"t":"byte","b":[252,255,3,0,252,204,3,3]},{"a":60816,"t":"byte","b":[51,51,195,195,240,48,51,51]},{"a":60824,"t":"byte","b":[0,12,195,240,48,48,12,12]},{"a":60832,"t":"byte","b":[204,207,195,48,48,195,207,204]},{"a":60840,"t":"byte","b":[243,240,12,12,12,204,192,195]},{"a":60848,"t":"byte","b":[48,48,48,51,51,51,195,207]},{"a":60856,"t":"byte","b":[204,12,207,207,12,12,51,195]},{"a":60864,"t":"byte","b":[192,51,51,48,15,63,240,192]},{"a":60872,"t":"byte","b":[12,204,192,0,252,255,15,195]},{"a":60880,"t":"byte","b":[12,204,204,240,240,243,51,15]},{"a":60888,"t":"byte","b":[243,51,240,207,195,240,60,12]},{"a":60896,"t":"byte","b":[15,60,240,195,204,204,48,48]},{"a":60904,"t":"byte","b":[240,240,3,51,195,207,60,240]},{"a":60912,"t":"byte","b":[192,195,204,204,15,51,51,195]},{"a":60920,"t":"byte","b":[3,15,204,192,51,51,51,204]},{"a":60928,"l":"tiles_set_b","c":"Background tile set B, chars 64-127, multicolour, laid out like tiles_set_a but a different pattern. $F552 copies it to $CA00-$CBFF when bit 1 of the round index $093D,x is set (rounds 3, 4, 7, 8, ...).","t":"byte","b":[85,127,117,117,117,117,255,85],"x":[62833]},{"a":60936,"t":"byte","b":[85,255,85,85,85,85,255,93]},{"a":60944,"t":"byte","b":[85,255,87,87,87,87,255,221]},{"a":60952,"t":"byte","b":[85,127,119,127,93,93,95,85]},{"a":60960,"t":"byte","b":[255,87,87,87,87,87,215,215]},{"a":60968,"t":"byte","b":[93,93,125,117,125,125,117,127]},{"a":60976,"t":"byte","b":[221,221,221,221,221,221,221,253]},{"a":60984,"t":"byte","b":[255,213,213,213,213,213,255,85]},{"a":60992,"t":"byte","b":[215,215,215,215,215,215,215,87]},{"a":61000,"t":"byte","b":[85,127,117,119,119,119,119,117]},{"a":61008,"t":"byte","b":[85,255,85,245,117,117,245,85]},{"a":61016,"t":"byte","b":[85,253,93,93,93,93,93,93]},{"a":61024,"t":"byte","b":[255,85,255,213,213,213,213,255]},{"a":61032,"t":"byte","b":[127,85,255,87,87,87,87,255]},{"a":61040,"t":"byte","b":[245,119,119,119,119,117,117,127]},{"a":61048,"t":"byte","b":[221,125,125,125,125,221,93,253]},{"a":61056,"t":"byte","b":[0,63,48,48,48,48,255,0]},{"a":61064,"t":"byte","b":[0,255,0,0,0,0,255,12]},{"a":61072,"t":"byte","b":[0,255,3,3,3,3,255,204]},{"a":61080,"t":"byte","b":[0,63,51,63,12,12,15,0]},{"a":61088,"t":"byte","b":[255,3,3,3,3,3,195,195]},{"a":61096,"t":"byte","b":[12,12,60,48,60,60,48,63]},{"a":61104,"t":"byte","b":[204,204,204,204,204,204,204,252]},{"a":61112,"t":"byte","b":[255,192,192,192,192,192,255,0]},{"a":61120,"t":"byte","b":[195,195,195,195,195,195,195,195]},{"a":61128,"t":"byte","b":[0,63,48,51,51,51,51,48]},{"a":61136,"t":"byte","b":[0,255,0,240,48,48,240,0]},{"a":61144,"t":"byte","b":[0,252,12,12,12,12,12,12]},{"a":61152,"t":"byte","b":[255,0,255,192,192,192,192,255]},{"a":61160,"t":"byte","b":[63,0,255,3,3,3,3,255]},{"a":61168,"t":"byte","b":[240,51,51,51,51,48,48,63]},{"a":61176,"t":"byte","b":[204,60,60,60,60,204,12,248]},{"a":61184,"l":"tiles_set_b_96","c":"tiles_set_b, chars 96-127 ($EF00-$EFFF), copied to $CB00 by $F552.","t":"byte","b":[85,127,119,119,119,119,127,85],"x":[62839]},{"a":61192,"t":"byte","b":[85,253,85,85,253,93,87,117]},{"a":61200,"t":"byte","b":[95,117,213,213,213,117,95,213]},{"a":61208,"t":"byte","b":[85,213,117,117,117,213,93,125]},{"a":61216,"t":"byte","b":[127,119,119,119,119,119,119,127]},{"a":61224,"t":"byte","b":[125,119,117,117,117,117,117,117]},{"a":61232,"t":"byte","b":[117,87,215,119,119,119,117,117]},{"a":61240,"t":"byte","b":[221,93,119,215,215,87,95,119]},{"a":61248,"t":"byte","b":[85,125,85,127,117,119,119,119]},{"a":61256,"t":"byte","b":[117,117,117,245,85,253,93,221]},{"a":61264,"t":"byte","b":[87,127,119,119,117,253,221,253]},{"a":61272,"t":"byte","b":[119,119,119,247,87,87,215,215]},{"a":61280,"t":"byte","b":[117,117,117,117,117,117,117,127]},{"a":61288,"t":"byte","b":[221,221,223,213,223,221,223,213]},{"a":61296,"t":"byte","b":[213,253,213,85,221,93,125,85]},{"a":61304,"t":"byte","b":[215,215,255,87,255,87,255,87]},{"a":61312,"t":"byte","b":[0,63,51,51,51,51,63,0]},{"a":61320,"t":"byte","b":[0,252,0,0,252,12,3,48]},{"a":61328,"t":"byte","b":[15,48,192,192,192,48,15,192]},{"a":61336,"t":"byte","b":[0,192,48,48,48,192,12,60]},{"a":61344,"t":"byte","b":[63,51,51,51,51,51,51,63]},{"a":61352,"t":"byte","b":[60,51,48,48,48,48,48,48]},{"a":61360,"t":"byte","b":[48,3,195,51,51,51,48,48]},{"a":61368,"t":"byte","b":[204,12,51,195,195,3,15,51]},{"a":61376,"t":"byte","b":[0,60,0,63,48,51,51,51]},{"a":61384,"t":"byte","b":[48,48,48,240,1,252,12,204]},{"a":61392,"t":"byte","b":[3,63,51,51,48,252,204,252]},{"a":61400,"t":"byte","b":[51,51,51,243,3,3,195,195]},{"a":61408,"t":"byte","b":[48,48,48,48,48,48,48,63]},{"a":61416,"t":"byte","b":[204,204,207,192,207,204,207,198]},{"a":61424,"t":"byte","b":[192,252,192,0,204,12,60,0]},{"a":61432,"t":"byte","b":[195,195,255,3,0,3,0,6]},{"a":61440,"l":"main_entry","c":"Main entry. Reached from the start-up's JMP $F000 ($B9F5), from game over ($9BDD) and when a key or fire ends the attract mode ($957C). Port A of CIA 1 output with $7F (keyboard row 7), port B input; sprites off; current player $0938 = 0; sound silenced ($2690); $D016 = $18; variables cleared ($F6FA). Shows the title and waits for a key or fire (title_screen $B4C4, which jumps to the attract mode at $9500 instead when the title tune ends untouched); volume $1F; screen blanked ($B9A2); input menu and story (input_menu $B557); title picture again with tune 5 and the intro animation ($06D1); waits for the tune ($F70C); virtual sprite 8 at Y $70, three calls to $272F (X = 0, 1, 2), then animates the title sprite ($B983) once a tick until tune $3417 reports finished. Then blanks the screen, points the multiplexer's sprite-pointer stores back at page $C3 ($F976, $FC17; the intro used the bitmap bank), all sprites multicolour and on, stack reset (TXS with X = $FF), new game set up (new_game_init $F1B7) and JMP $957F, the main game loop. The LDA #$7F at $F08E is overwritten at once and has no effect.","t":"code","b":[169,127],"m":"lda","o":"#$7F","x":[38268,39901,47605]},{"a":61442,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":61445,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":61447,"t":"code","b":[141,1,220],"m":"sta","o":"cia1_port_b"},{"a":61450,"t":"code","b":[141,2,220],"m":"sta","o":"cia1_ddr_a"},{"a":61453,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":61455,"t":"code","b":[141,3,220],"m":"sta","o":"cia1_ddr_b"},{"a":61458,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":61461,"t":"code","b":[141,56,9],"m":"sta","oa":2360,"o":"current_player"},{"a":61464,"t":"code","b":[32,144,38],"m":"jsr","oa":9872,"o":"sound_reset"},{"a":61467,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":61469,"t":"code","b":[141,22,208],"m":"sta","o":"vic_control2"},{"a":61472,"t":"code","b":[32,250,246],"m":"jsr","oa":63226,"o":"clear_variables"},{"a":61475,"t":"code","b":[32,196,180],"m":"jsr","oa":46276,"o":"title_screen"},{"a":61478,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":61480,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":61483,"t":"code","b":[32,162,185],"m":"jsr","oa":47522,"o":"screen_off_after_tick"},{"a":61486,"t":"code","b":[32,144,38],"m":"jsr","oa":9872,"o":"sound_reset"},{"a":61489,"t":"code","b":[32,60,181],"m":"jsr","oa":46396,"o":"text_screen_mode"},{"a":61492,"t":"code","b":[32,87,181],"m":"jsr","oa":46423,"o":"input_menu"},{"a":61495,"t":"code","b":[32,128,180],"m":"jsr","oa":46208,"o":"show_title_picture"},{"a":61498,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":61500,"t":"code","b":[32,43,38],"m":"jsr","oa":9771,"o":"music_start_tune"},{"a":61503,"t":"code","b":[32,209,6],"m":"jsr","oa":1745,"o":"intro_escape_animation"},{"a":61506,"t":"code","b":[32,12,247],"m":"jsr","oa":63244,"o":"wait_tune_end"},{"a":61509,"t":"code","b":[169,112],"m":"lda","o":"#$70"},{"a":61511,"t":"code","b":[141,53,148],"m":"sta","oa":37941,"o":"enemy_y"},{"a":61514,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":61516,"t":"code","b":[141,67,2],"m":"sta","oa":579,"o":"gate_timer"},{"a":61519,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":61521,"t":"code","b":[169,232],"m":"lda","o":"#$E8"},{"a":61523,"t":"code","b":[160,34],"m":"ldy","o":"#$22"},{"a":61525,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":61528,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":61530,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":61532,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":61534,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":61537,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":61539,"t":"code","b":[169,38],"m":"lda","o":"#$26"},{"a":61541,"t":"code","b":[160,35],"m":"ldy","o":"#$23"},{"a":61543,"t":"code","b":[32,47,39],"m":"jsr","oa":10031,"o":"sound_effect_start"},{"a":61546,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":61548,"t":"code","b":[141,0,2],"m":"sta","oa":512,"o":"frame_ticks"},{"a":61551,"l":"b_F06F","t":"code","b":[32,114,180],"m":"jsr","oa":46194,"o":"wait_tick","x":[61560]},{"a":61554,"t":"code","b":[32,131,185],"m":"jsr","oa":47491,"o":"title_sprite_animate"},{"a":61557,"t":"code","b":[32,23,52],"m":"jsr","oa":13335,"o":"sound_busy"},{"a":61560,"t":"code","b":[208,245],"m":"bne","oa":61551,"o":"b_F06F"},{"a":61562,"t":"code","b":[32,162,185],"m":"jsr","oa":47522,"o":"screen_off_after_tick"},{"a":61565,"t":"code","b":[169,195],"m":"lda","o":"#$C3"},{"a":61567,"t":"code","b":[141,23,252],"m":"sta","oa":64535,"o":"mux_ptr_page"},{"a":61570,"t":"code","b":[141,118,249],"m":"sta","oa":63862,"o":"mux_first_ptr_page"},{"a":61573,"t":"code","b":[162,255],"m":"ldx","o":"#$FF"},{"a":61575,"t":"code","b":[142,28,208],"m":"stx","o":"vic_sprite_multicolour"},{"a":61578,"t":"code","b":[142,21,208],"m":"stx","o":"vic_sprite_enable"},{"a":61581,"t":"code","b":[154],"m":"txs"},{"a":61582,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":61584,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":61586,"t":"code","b":[141,61,9],"m":"sta","oa":2365,"o":"round_p1"},{"a":61589,"t":"code","b":[141,62,9],"m":"sta","oa":2366,"o":"round_p2"},{"a":61592,"t":"code","b":[32,183,241],"m":"jsr","oa":61879,"o":"new_game_init"},{"a":61595,"t":"code","b":[76,127,149],"m":"jmp","oa":38271,"o":"game_loop"},{"a":61598,"l":"vaus_shapes_restore","c":"Copies the Vaus's sprite shapes from $E600-$E67F into $E580-$E5FF, the two shapes the Vaus is drawn with (sprite pointers $96 and $97 in bank 3, set at $F25D). Called at the end of the round intro ($96F7), after vaus_shapes_clear hid it.","t":"code","b":[160,127],"m":"ldy","o":"#$7F","x":[38647]},{"a":61600,"l":"b_F0A0","t":"code","b":[185,0,230],"m":"lda","oa":58880,"o":"spr_frame_master,y","x":[61607]},{"a":61603,"t":"code","b":[153,128,229],"m":"sta","oa":58752,"o":"spr_frame_work,y"},{"a":61606,"t":"code","b":[136],"m":"dey"},{"a":61607,"t":"code","b":[16,247],"m":"bpl","oa":61600,"o":"b_F0A0"},{"a":61609,"t":"code","b":[96],"m":"rts"},{"a":61610,"l":"vaus_shapes_clear","c":"Round intro: clears $E580-$E5FF (the Vaus's two sprite shapes, so it is invisible) and redraws characters $EB-$EC and $FD-$FE of the play character set ($CF58-$CF67 and $CFE8-$CFF7) from the 16 bytes at $9950: the two three-character pieces of the top wall at columns 6-8 and 19-21 (top_wall_row). Called from $96D7.","t":"code","b":[160,127],"m":"ldy","o":"#$7F","x":[38615]},{"a":61612,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":61614,"l":"b_F0AE","t":"code","b":[153,128,229],"m":"sta","oa":58752,"o":"spr_frame_work,y","x":[61618]},{"a":61617,"t":"code","b":[136],"m":"dey"},{"a":61618,"t":"code","b":[16,250],"m":"bpl","oa":61614,"o":"b_F0AE"},{"a":61620,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":61622,"l":"b_F0B6","t":"code","b":[185,80,153],"m":"lda","oa":39248,"o":"gate_rows,y","x":[61632]},{"a":61625,"t":"code","b":[153,88,207],"m":"sta","oa":53080,"o":"chars_gate_left,y"},{"a":61628,"t":"code","b":[153,232,207],"m":"sta","oa":53224,"o":"chars_gate_right,y"},{"a":61631,"t":"code","b":[136],"m":"dey"},{"a":61632,"t":"code","b":[16,244],"m":"bpl","oa":61622,"o":"b_F0B6"},{"a":61634,"t":"code","b":[96],"m":"rts"},{"a":61635,"l":"nmi_timer_init","c":"Sets up CIA 2 for the play-time NMIs: timer B latch $0CA8, all CIA 2 interrupts masked, pending flags read off, then timer B and serial-port interrupts enabled ($DD0D = $8A), and the NMI vector $FFFA-$FFFB = $F903 (nmi_frame_end). The timer itself is started each frame by irq_frame_top ($F75E). Called by the start-up ($B9E4) and the attract mode ($9503).","t":"code","b":[169,168],"m":"lda","o":"#$A8","x":[38147,47588]},{"a":61637,"t":"code","b":[141,6,221],"m":"sta","o":"cia2_timer_b_lo"},{"a":61640,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":61642,"t":"code","b":[141,7,221],"m":"sta","o":"cia2_timer_b_hi"},{"a":61645,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":61647,"t":"code","b":[141,13,221],"m":"sta","o":"cia2_interrupt"},{"a":61650,"t":"code","b":[173,13,221],"m":"lda","o":"cia2_interrupt"},{"a":61653,"t":"code","b":[169,138],"m":"lda","o":"#$8A"},{"a":61655,"t":"code","b":[141,13,221],"m":"sta","o":"cia2_interrupt"},{"a":61658,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":61660,"t":"code","b":[141,250,255],"m":"sta","oa":65530,"o":"nmi_vector"},{"a":61663,"t":"code","b":[169,249],"m":"lda","o":"#$F9"},{"a":61665,"t":"code","b":[141,251,255],"m":"sta","oa":65531,"o":"$FFFB"},{"a":61668,"t":"code","b":[96],"m":"rts"},{"a":61669,"l":"unused_pattern_f0e5","c":"Unused: 210 bytes ($F0E5-$F1B6) that no instruction reads or runs, and the simulator never touched: a pattern of $FA $F8 or $FA $FB followed by eight equal bytes ($77, $99, $44, $AA, $66), then zeros. Probably left over from the build; what it was is not known.","t":"byte","b":[250,248,119,119,119,119,119,119]},{"a":61677,"t":"byte","b":[119,119,250,248,153,153,153,153]},{"a":61685,"t":"byte","b":[153,153,153,153,250,251,68,68]},{"a":61693,"t":"byte","b":[68,68,68,68,68,68,250,248]},{"a":61701,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":61709,"t":"byte","b":[250,251,102,102,102,102,102,102]},{"a":61717,"t":"byte","b":[102,102,0,0,0,0,0,0]},{"a":61725,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61733,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61741,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61749,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61757,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61765,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61773,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61781,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61789,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61797,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61805,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61813,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61821,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61829,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61837,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61845,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61853,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61861,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61869,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":61877,"t":"byte","b":[0,0]},{"a":61879,"l":"new_game_init","c":"Sets up a new game (called from main_entry $F098 and the attract mode $951F). Screen bank 3 ($B53C); both scores $0927-$092C cleared; extra-life thresholds $092E-$092F and $0931-$0932 set to $20/$00 (BCD 2000, shown as 20000 with the panel's fixed last 0; $092D and $0930 are not set here); lives $0936 = 4, and $0937 = 4 for two players or $99 (no second player) when $0939 = 0; sprite X-expand and X-MSB off; variables cleared ($F6FA); panel ($F2B5), background ($F552), walls ($F630), the round's bricks ($F3C2), lives ($FA4E), round numbers ($F39B); round 1's layout ($8000-$809F) copied into both players' wall buffers $0459 and $04F9; Y of virtual sprites 2-11 set to $FF; then the starting set-up: slots 0-1 (the Vaus's positions) Y $E0, hardware sprites 0-1 Y $EC, Vaus X $80/$88, ball X $8C, half-width $020A = 4, centre $0206 = $80, slot colours and shapes ($F819-$F82C), Vaus shapes $96/$97, sprites 2-7 multicolour, ball direction and step ($0295, $0298, $029B, $029E), ball 0 active ($02A7), $023A = 2; then the round intro ($96D7), frame counter $0201 = 0, $0245 = 3.","t":"code","b":[32,60,181],"m":"jsr","oa":46396,"o":"text_screen_mode","x":[38175,61592]},{"a":61882,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":61884,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":61886,"l":"b_F1BE","t":"code","b":[157,39,9],"m":"sta","oa":2343,"o":"score_p1,x","x":[61890]},{"a":61889,"t":"code","b":[202],"m":"dex"},{"a":61890,"t":"code","b":[16,250],"m":"bpl","oa":61886,"o":"b_F1BE"},{"a":61892,"t":"code","b":[141,47,9],"m":"sta","oa":2351,"o":"a_092F"},{"a":61895,"t":"code","b":[141,50,9],"m":"sta","oa":2354,"o":"a_0932"},{"a":61898,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":61900,"t":"code","b":[141,46,9],"m":"sta","oa":2350,"o":"a_092E"},{"a":61903,"t":"code","b":[141,49,9],"m":"sta","oa":2353,"o":"a_0931"},{"a":61906,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":61908,"t":"code","b":[141,54,9],"m":"sta","oa":2358,"o":"lives_p1"},{"a":61911,"t":"code","b":[174,57,9],"m":"ldx","oa":2361,"o":"players_left"},{"a":61914,"t":"code","b":[208,2],"m":"bne","oa":61918,"o":"b_F1DE"},{"a":61916,"t":"code","b":[169,153],"m":"lda","o":"#$99"},{"a":61918,"l":"b_F1DE","t":"code","b":[141,55,9],"m":"sta","oa":2359,"o":"lives_p2","x":[61914]},{"a":61921,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":61923,"t":"code","b":[140,29,208],"m":"sty","o":"vic_sprite_expand_x"},{"a":61926,"t":"code","b":[140,16,208],"m":"sty","o":"vic_sprite_x_msb"},{"a":61929,"t":"code","b":[32,250,246],"m":"jsr","oa":63226,"o":"clear_variables"},{"a":61932,"t":"code","b":[32,181,242],"m":"jsr","oa":62133,"o":"draw_side_panel"},{"a":61935,"t":"code","b":[32,82,245],"m":"jsr","oa":62802,"o":"draw_playfield_background"},{"a":61938,"t":"code","b":[32,48,246],"m":"jsr","oa":63024,"o":"draw_walls"},{"a":61941,"t":"code","b":[32,194,243],"m":"jsr","oa":62402,"o":"draw_round_wall"},{"a":61944,"t":"code","b":[32,78,250],"m":"jsr","oa":64078,"o":"draw_lives"},{"a":61947,"t":"code","b":[32,155,243],"m":"jsr","oa":62363,"o":"draw_round_numbers"},{"a":61950,"t":"code","b":[160,11],"m":"ldy","o":"#$0B"},{"a":61952,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":61954,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":61957,"l":"b_F205","t":"code","b":[153,45,148],"m":"sta","oa":37933,"o":"obj_y,y","x":[61961]},{"a":61960,"t":"code","b":[136],"m":"dey"},{"a":61961,"t":"code","b":[16,250],"m":"bpl","oa":61957,"o":"b_F205"},{"a":61963,"t":"code","b":[160,160],"m":"ldy","o":"#$A0"},{"a":61965,"l":"b_F20D","t":"code","b":[185,255,127],"m":"lda","oa":32767,"o":"f_7FFF,y","x":[61975]},{"a":61968,"t":"code","b":[153,88,4],"m":"sta","oa":1112,"o":"bg_char_base,y"},{"a":61971,"t":"code","b":[153,248,4],"m":"sta","oa":1272,"o":"f_04F8,y"},{"a":61974,"t":"code","b":[136],"m":"dey"},{"a":61975,"t":"code","b":[208,244],"m":"bne","oa":61965,"o":"b_F20D"},{"a":61977,"t":"code","b":[169,224],"m":"lda","o":"#$E0"},{"a":61979,"t":"code","b":[141,45,148],"m":"sta","oa":37933,"o":"obj_y"},{"a":61982,"t":"code","b":[141,46,148],"m":"sta","oa":37934,"o":"vaus_right_y"},{"a":61985,"t":"code","b":[169,236],"m":"lda","o":"#$EC"},{"a":61987,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":61990,"t":"code","b":[141,3,208],"m":"sta","o":"vic_sprite1_y"},{"a":61993,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":61995,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":61998,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":62000,"t":"code","b":[141,70,148],"m":"sta","oa":37958,"o":"vaus_right_x"},{"a":62003,"t":"code","b":[169,140],"m":"lda","o":"#$8C"},{"a":62005,"t":"code","b":[141,73,148],"m":"sta","oa":37961,"o":"ball_x"},{"a":62008,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":62010,"t":"code","b":[141,10,2],"m":"sta","oa":522,"o":"vaus_stretch"},{"a":62013,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":62015,"t":"code","b":[141,6,2],"m":"sta","oa":518,"o":"vaus_x"},{"a":62018,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":62020,"t":"code","b":[141,25,248],"m":"sta","oa":63513,"o":"slot_colours"},{"a":62023,"t":"code","b":[141,26,248],"m":"sta","oa":63514,"o":"slot_colour_1"},{"a":62026,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":62028,"t":"code","b":[141,39,208],"m":"sta","o":"vic_sprite0_colour"},{"a":62031,"t":"code","b":[141,40,208],"m":"sta","o":"vic_sprite1_colour"},{"a":62034,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":62036,"t":"code","b":[141,29,248],"m":"sta","oa":63517,"o":"slot_colour_4"},{"a":62039,"t":"code","b":[141,30,248],"m":"sta","oa":63518,"o":"slot_colour_5"},{"a":62042,"t":"code","b":[141,31,248],"m":"sta","oa":63519,"o":"slot_colour_6"},{"a":62045,"t":"code","b":[169,150],"m":"lda","o":"#$96"},{"a":62047,"t":"code","b":[141,248,195],"m":"sta","oa":50168,"o":"sprite_pointers"},{"a":62050,"t":"code","b":[169,151],"m":"lda","o":"#$97"},{"a":62052,"t":"code","b":[141,249,195],"m":"sta","oa":50169,"o":"a_C3F9"},{"a":62055,"t":"code","b":[169,66],"m":"lda","o":"#$42"},{"a":62057,"t":"code","b":[141,41,248],"m":"sta","oa":63529,"o":"slot_shape_4"},{"a":62060,"t":"code","b":[141,42,248],"m":"sta","oa":63530,"o":"slot_shape_5"},{"a":62063,"t":"code","b":[141,43,248],"m":"sta","oa":63531,"o":"slot_shape_6"},{"a":62066,"t":"code","b":[169,149],"m":"lda","o":"#$95"},{"a":62068,"t":"code","b":[141,44,248],"m":"sta","oa":63532,"o":"slot_shape_7"},{"a":62071,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":62073,"t":"code","b":[141,32,248],"m":"sta","oa":63520,"o":"slot_colour_7"},{"a":62076,"t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":62078,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":62081,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":62083,"t":"code","b":[141,149,2],"m":"sta","oa":661,"o":"ball_dy"},{"a":62086,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":62088,"t":"code","b":[141,152,2],"m":"sta","oa":664,"o":"ball_dx"},{"a":62091,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":62093,"t":"code","b":[141,155,2],"m":"sta","oa":667,"o":"ball_rate_y"},{"a":62096,"t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":62098,"t":"code","b":[141,158,2],"m":"sta","oa":670,"o":"ball_rate_x"},{"a":62101,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":62103,"t":"code","b":[141,167,2],"m":"sta","oa":679,"o":"ball_active"},{"a":62106,"t":"code","b":[141,40,2],"m":"sta","oa":552,"o":"ball_held"},{"a":62109,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":62111,"t":"code","b":[141,58,2],"m":"sta","oa":570,"o":"ball_speed"},{"a":62114,"t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":62116,"t":"code","b":[141,33,2],"m":"sta","oa":545,"o":"catch_offset"},{"a":62119,"t":"code","b":[32,215,150],"m":"jsr","oa":38615,"o":"round_start"},{"a":62122,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":62124,"t":"code","b":[141,1,2],"m":"sta","oa":513,"o":"frame_counter"},{"a":62127,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":62129,"t":"code","b":[141,69,2],"m":"sta","oa":581,"o":"gate_stage"},{"a":62132,"t":"code","b":[96],"m":"rts"},{"a":62133,"l":"draw_side_panel","c":"Draws the right-hand panel: copies the template at $7800 (25 rows of 13 screen codes) to columns 28-40 of the screen at $C000, colour $0E (the 13th byte of each row lands on column 0 of the next row, which draw_walls overwrites); then panel colours 2 and 1 ($D81C-$DB46) and the cell $D89F; then lives ($FA4E), round numbers ($F39B) and the scores ($FAFE). Called from new_game_init and $9C07.","t":"code","b":[162,24],"m":"ldx","o":"#$18","x":[39943,61932]},{"a":62135,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":62137,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":62139,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":62141,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":62143,"t":"code","b":[169,28],"m":"lda","o":"#$1C"},{"a":62145,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":62147,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":62149,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":62151,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":62153,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":62155,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":62157,"l":"j_F2CD","t":"code","b":[160,12],"m":"ldy","o":"#$0C","x":[62207]},{"a":62159,"l":"b_F2CF","t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y","x":[62168]},{"a":62161,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":62163,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":62165,"t":"code","b":[145,17],"m":"sta","oa":17,"o":"(src_ptr),y"},{"a":62167,"t":"code","b":[136],"m":"dey"},{"a":62168,"t":"code","b":[16,245],"m":"bpl","oa":62159,"o":"b_F2CF"},{"a":62170,"t":"code","b":[202],"m":"dex"},{"a":62171,"t":"code","b":[48,37],"m":"bmi","oa":62210,"o":"b_F302"},{"a":62173,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"scr_ptr"},{"a":62175,"t":"code","b":[24],"m":"clc"},{"a":62176,"t":"code","b":[105,13],"m":"adc","o":"#$0D"},{"a":62178,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":62180,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":62182,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":62184,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":62186,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"col_ptr"},{"a":62188,"t":"code","b":[24],"m":"clc"},{"a":62189,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":62191,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":62193,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":62195,"t":"code","b":[165,16],"m":"lda","oa":16,"o":"col_ptr_hi"},{"a":62197,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":62199,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":62201,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":62203,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":62205,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":62207,"t":"code","b":[76,205,242],"m":"jmp","oa":62157,"o":"j_F2CD"},{"a":62210,"l":"b_F302","t":"code","b":[160,10],"m":"ldy","o":"#$0A","x":[62171]},{"a":62212,"l":"b_F304","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[62226]},{"a":62214,"t":"code","b":[153,28,216],"m":"sta","o":"$D81C,y"},{"a":62217,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":62219,"t":"code","b":[153,68,216],"m":"sta","o":"$D844,y"},{"a":62222,"t":"code","b":[153,148,216],"m":"sta","o":"$D894,y"},{"a":62225,"t":"code","b":[136],"m":"dey"},{"a":62226,"t":"code","b":[16,240],"m":"bpl","oa":62212,"o":"b_F304"},{"a":62228,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":62230,"l":"b_F316","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[62260]},{"a":62232,"t":"code","b":[153,190,216],"m":"sta","o":"$D8BE,y"},{"a":62235,"t":"code","b":[153,94,217],"m":"sta","o":"$D95E,y"},{"a":62238,"t":"code","b":[153,134,217],"m":"sta","o":"$D986,y"},{"a":62241,"t":"code","b":[153,174,217],"m":"sta","o":"$D9AE,y"},{"a":62244,"t":"code","b":[153,214,217],"m":"sta","o":"$D9D6,y"},{"a":62247,"t":"code","b":[153,198,218],"m":"sta","o":"$DAC6,y"},{"a":62250,"t":"code","b":[153,238,218],"m":"sta","o":"$DAEE,y"},{"a":62253,"t":"code","b":[153,22,219],"m":"sta","o":"$DB16,y"},{"a":62256,"t":"code","b":[153,62,219],"m":"sta","o":"$DB3E,y"},{"a":62259,"t":"code","b":[136],"m":"dey"},{"a":62260,"t":"code","b":[16,224],"m":"bpl","oa":62230,"o":"b_F316"},{"a":62262,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":62264,"t":"code","b":[141,159,216],"m":"sta","o":"$D89F"},{"a":62267,"t":"code","b":[32,78,250],"m":"jsr","oa":64078,"o":"draw_lives"},{"a":62270,"t":"code","b":[32,155,243],"m":"jsr","oa":62363,"o":"draw_round_numbers"},{"a":62273,"t":"code","b":[32,254,250],"m":"jsr","oa":64254,"o":"update_scores_display"},{"a":62276,"t":"code","b":[96],"m":"rts"},{"a":62277,"l":"drum_82","c":"Title-tune percussion sound $82, reached only through the JSR at $FEE8 (drum table entry $82: $B07D/$A253 + $82). Plays on the SID volume register: patches its own store at $F362 from STA $9418 to STA $D418, then 14 x 12 steps, each a delay loop of $FE35+Y counts and the low nibble of $DE (advanced by $0E) written as the volume; puts STA $9418 back and returns. Holds the CPU while it plays.","t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":62279,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":62281,"t":"code","b":[24],"m":"clc"},{"a":62282,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":62284,"t":"code","b":[141,100,243],"m":"sta","oa":62308,"o":"drum_82_store_hi"},{"a":62287,"l":"b_F34F","t":"code","b":[162,12],"m":"ldx","o":"#$0C","x":[62313]},{"a":62289,"l":"b_F351","t":"code","b":[185,53,254],"m":"lda","oa":65077,"o":"drum_82_delays,y","x":[62310]},{"a":62292,"l":"b_F354","t":"code","b":[56],"m":"sec","x":[62295]},{"a":62293,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":62295,"t":"code","b":[208,251],"m":"bne","oa":62292,"o":"b_F354"},{"a":62297,"t":"code","b":[165,222],"m":"lda","oa":222,"o":"noise_acc"},{"a":62299,"t":"code","b":[24],"m":"clc"},{"a":62300,"t":"code","b":[105,14],"m":"adc","o":"#$0E"},{"a":62302,"t":"code","b":[133,222],"m":"sta","oa":222,"o":"noise_acc"},{"a":62304,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":62306,"t":"code","b":[141,24,148],"m":"sta","oa":37912,"o":"d418_decoy"},{"a":62308,"t":"note","l":"drum_82_store_hi","c":"Operand high byte of drum_82's volume store at $F362: $D4 (writes $D418) while the sound plays, $94 (harmless $9418) otherwise; set at $F34C and $F36D.","note":"inside the item at $F362","x":[62284,62317]},{"a":62309,"t":"code","b":[202],"m":"dex"},{"a":62310,"t":"code","b":[208,233],"m":"bne","oa":62289,"o":"b_F351"},{"a":62312,"t":"code","b":[136],"m":"dey"},{"a":62313,"t":"code","b":[16,228],"m":"bpl","oa":62287,"o":"b_F34F"},{"a":62315,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":62317,"t":"code","b":[141,100,243],"m":"sta","oa":62308,"o":"drum_82_store_hi"},{"a":62320,"t":"code","b":[96],"m":"rts"},{"a":62321,"l":"rebuild_wall_from_buffer","c":"Rebuilds the current player's wall from that player's 160-byte buffer (pointer from wall_buffer_lo/hi at $06CD/$06CF indexed by $0938: $0459 or $04F9), clearing the brick counters $0455 and $0456, through draw_wall at $F40E. Called when the turn passes to the other player ($9C26).","t":"code","b":[172,56,9],"m":"ldy","oa":2360,"o":"current_player","x":[39974]},{"a":62324,"t":"code","b":[185,205,6],"m":"lda","oa":1741,"o":"wall_buffer_lo,y"},{"a":62327,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":62329,"t":"code","b":[185,207,6],"m":"lda","oa":1743,"o":"wall_buffer_hi,y"},{"a":62332,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":62334,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":62336,"t":"code","b":[141,86,4],"m":"sta","oa":1110,"o":"metal_count"},{"a":62339,"t":"code","b":[141,85,4],"m":"sta","oa":1109,"o":"bricks_left"},{"a":62342,"t":"code","b":[76,14,244],"m":"jmp","oa":62478,"o":"draw_wall"},{"a":62345,"l":"number_to_two_digits","c":"Converts A + 1 (A = 0-98) to two decimal digits by repeated subtraction of 10: returns A = units (0-9) and X = tens. Used by draw_round_numbers, so the 0-based round shows as 1 upwards.","t":"code","b":[24],"m":"clc","x":[62366,62385]},{"a":62346,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":62348,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":62350,"t":"code","b":[56],"m":"sec"},{"a":62351,"l":"b_F38F","t":"code","b":[233,10],"m":"sbc","o":"#$0A","x":[62356]},{"a":62353,"t":"code","b":[144,3],"m":"bcc","oa":62358,"o":"b_F396"},{"a":62355,"t":"code","b":[232],"m":"inx"},{"a":62356,"t":"code","b":[208,249],"m":"bne","oa":62351,"o":"b_F38F"},{"a":62358,"l":"b_F396","t":"code","b":[105,10],"m":"adc","o":"#$0A","x":[62353]},{"a":62360,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":62362,"t":"code","b":[96],"m":"rts"},{"a":62363,"l":"draw_round_numbers","c":"Shows both players' round numbers in the panel: $093D + 1 at $C1DD-$C1DE (row 11, columns 37-38) and $093E + 1 at $C345-$C346 (row 20), as screen-code digits ($30 + digit).","t":"code","b":[173,61,9],"m":"lda","oa":2365,"o":"round_p1","x":[39952,43159,61947,62270,62402]},{"a":62366,"t":"code","b":[32,137,243],"m":"jsr","oa":62345,"o":"number_to_two_digits"},{"a":62369,"t":"code","b":[24],"m":"clc"},{"a":62370,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":62372,"t":"code","b":[141,222,193],"m":"sta","oa":49630,"o":"a_C1DE"},{"a":62375,"t":"code","b":[138],"m":"txa"},{"a":62376,"t":"code","b":[24],"m":"clc"},{"a":62377,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":62379,"t":"code","b":[141,221,193],"m":"sta","oa":49629,"o":"p1_round_digits"},{"a":62382,"t":"code","b":[173,62,9],"m":"lda","oa":2366,"o":"round_p2"},{"a":62385,"t":"code","b":[32,137,243],"m":"jsr","oa":62345,"o":"number_to_two_digits"},{"a":62388,"t":"code","b":[24],"m":"clc"},{"a":62389,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":62391,"t":"code","b":[141,70,195],"m":"sta","oa":49990,"o":"a_C346"},{"a":62394,"t":"code","b":[138],"m":"txa"},{"a":62395,"t":"code","b":[24],"m":"clc"},{"a":62396,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":62398,"t":"code","b":[141,69,195],"m":"sta","oa":49989,"o":"p2_round_digits"},{"a":62401,"t":"code","b":[96],"m":"rts"},{"a":62402,"l":"draw_round_wall","c":"Draws the current player's round from the layouts at $8000: redraws the round numbers, then pointer ($11) = $8000 + round x 160 (round = $093D,X, 0-based, X = current player $0938; round x 32 + round x 128 built by shifts at $F3DA-$F40C) and falls into draw_wall. Called from new_game_init and $96CE (each round start). For the round index $20 (Doh) the pointer would be $9400.","t":"code","b":[32,155,243],"m":"jsr","oa":62363,"o":"draw_round_numbers","x":[38606,61941]},{"a":62405,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":62408,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":62411,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":62413,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":62415,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":62417,"t":"code","b":[141,17,2],"m":"sta","oa":529,"o":"bits_lo"},{"a":62420,"t":"code","b":[141,85,4],"m":"sta","oa":1109,"o":"bricks_left"},{"a":62423,"t":"code","b":[141,86,4],"m":"sta","oa":1110,"o":"metal_count"},{"a":62426,"t":"code","b":[70,18],"m":"lsr","oa":18,"o":"src_ptr_hi"},{"a":62428,"t":"code","b":[102,17],"m":"ror","oa":17,"o":"src_ptr"},{"a":62430,"t":"code","b":[70,18],"m":"lsr","oa":18,"o":"src_ptr_hi"},{"a":62432,"t":"code","b":[102,17],"m":"ror","oa":17,"o":"src_ptr"},{"a":62434,"t":"code","b":[70,18],"m":"lsr","oa":18,"o":"src_ptr_hi"},{"a":62436,"t":"code","b":[102,17],"m":"ror","oa":17,"o":"src_ptr"},{"a":62438,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":62441,"t":"code","b":[141,18,2],"m":"sta","oa":530,"o":"bits_hi"},{"a":62444,"t":"code","b":[78,18,2],"m":"lsr","oa":530,"o":"bits_hi"},{"a":62447,"t":"code","b":[110,17,2],"m":"ror","oa":529,"o":"bits_lo"},{"a":62450,"t":"code","b":[173,17,2],"m":"lda","oa":529,"o":"bits_lo"},{"a":62453,"t":"code","b":[24],"m":"clc"},{"a":62454,"t":"code","b":[101,17],"m":"adc","oa":17,"o":"src_ptr"},{"a":62456,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":62458,"t":"code","b":[173,18,2],"m":"lda","oa":530,"o":"bits_hi"},{"a":62461,"t":"code","b":[101,18],"m":"adc","oa":18,"o":"src_ptr_hi"},{"a":62463,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":62465,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":62467,"t":"code","b":[24],"m":"clc"},{"a":62468,"t":"code","b":[101,17],"m":"adc","oa":17,"o":"src_ptr"},{"a":62470,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"src_ptr"},{"a":62472,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":62474,"t":"code","b":[101,18],"m":"adc","oa":18,"o":"src_ptr_hi"},{"a":62476,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"src_ptr_hi"},{"a":62478,"l":"draw_wall","c":"Draws a wall from the 160-byte layout at ($11): 16 rows of 10 bytes. Each row: a 2-byte column mask, first bit first (14 columns used), then 8 bytes of 4-bit brick types (16 nibbles, unpacked to $0264-$0273). For each set bit, at row 1 + r, columns 1 + 2c and 2 + 2c of $C000: a type below 8 is a normal brick, screen codes $80 $81, colour RAM = type + 8, and $0455 (bricks left to clear) + 1; a type of 8 or more is special: type AND 3 = 1 a silver brick (codes $85 $89, counted in $0455, hit counter = silver_hits_by_round + 1), any other a gold brick (codes $8D $91, counter $80, not counted). Each special brick takes the next entry (from 1) of $0300 (flag $80), $0355 (hit counter) and $03AA/$03AB (its screen address); $0456 counts them. Every brick also shades the two cells one row down and one column right (OR $10 into the screen code; the second only if it is not a brick).","t":"code","b":[169,41],"m":"lda","o":"#$29","x":[62342]},{"a":62480,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":62482,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":62484,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":62486,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":62488,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":62490,"t":"code","b":[24],"m":"clc"},{"a":62491,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":62493,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":62495,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":62497,"l":"j_F421","t":"code","b":[177,17],"m":"lda","oa":17,"o":"(src_ptr),y","x":[62632]},{"a":62499,"t":"code","b":[200],"m":"iny"},{"a":62500,"t":"code","b":[141,38,2],"m":"sta","oa":550,"o":"row_bits_hi"},{"a":62503,"t":"code","b":[177,17],"m":"lda","oa":17,"o":"(src_ptr),y"},{"a":62505,"t":"code","b":[200],"m":"iny"},{"a":62506,"t":"code","b":[141,39,2],"m":"sta","oa":551,"o":"row_bits_lo"},{"a":62509,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":62511,"l":"b_F42F","t":"code","b":[177,17],"m":"lda","oa":17,"o":"(src_ptr),y","x":[62532]},{"a":62513,"t":"code","b":[200],"m":"iny"},{"a":62514,"t":"code","b":[72],"m":"pha"},{"a":62515,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":62516,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":62517,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":62518,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":62519,"t":"code","b":[157,100,2],"m":"sta","oa":612,"o":"row_nibbles,x"},{"a":62522,"t":"code","b":[232],"m":"inx"},{"a":62523,"t":"code","b":[104],"m":"pla"},{"a":62524,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":62526,"t":"code","b":[157,100,2],"m":"sta","oa":612,"o":"row_nibbles,x"},{"a":62529,"t":"code","b":[232],"m":"inx"},{"a":62530,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":62532,"t":"code","b":[144,233],"m":"bcc","oa":62511,"o":"b_F42F"},{"a":62534,"t":"code","b":[132,19],"m":"sty","oa":19,"o":"save_y"},{"a":62536,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":62538,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":62540,"l":"b_F44C","t":"code","b":[14,39,2],"m":"asl","oa":551,"o":"row_bits_lo","x":[62609]},{"a":62543,"t":"code","b":[46,38,2],"m":"rol","oa":550,"o":"row_bits_hi"},{"a":62546,"t":"code","b":[144,53],"m":"bcc","oa":62601,"o":"b_F489"},{"a":62548,"t":"code","b":[189,100,2],"m":"lda","oa":612,"o":"row_nibbles,x"},{"a":62551,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":62553,"t":"code","b":[176,81],"m":"bcs","oa":62636,"o":"b_F4AC"},{"a":62555,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":62557,"t":"code","b":[238,85,4],"m":"inc","oa":1109,"o":"bricks_left"},{"a":62560,"t":"code","b":[200],"m":"iny"},{"a":62561,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":62563,"t":"code","b":[136],"m":"dey"},{"a":62564,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":62566,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":62568,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62570,"t":"code","b":[200],"m":"iny"},{"a":62571,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":62573,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62575,"t":"code","b":[200],"m":"iny"},{"a":62576,"t":"code","b":[152],"m":"tya"},{"a":62577,"t":"code","b":[24],"m":"clc"},{"a":62578,"t":"code","b":[105,39],"m":"adc","o":"#$27"},{"a":62580,"t":"code","b":[168],"m":"tay"},{"a":62581,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":62583,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":62585,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62587,"t":"code","b":[200],"m":"iny"},{"a":62588,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":62590,"t":"code","b":[48,4],"m":"bmi","oa":62596,"o":"b_F484"},{"a":62592,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":62594,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62596,"l":"b_F484","t":"code","b":[152],"m":"tya","x":[62590]},{"a":62597,"t":"code","b":[56],"m":"sec"},{"a":62598,"t":"code","b":[233,42],"m":"sbc","o":"#$2A"},{"a":62600,"t":"code","b":[168],"m":"tay"},{"a":62601,"l":"b_F489","t":"code","b":[152],"m":"tya","x":[62546,62759]},{"a":62602,"t":"code","b":[24],"m":"clc"},{"a":62603,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":62605,"t":"code","b":[168],"m":"tay"},{"a":62606,"t":"code","b":[232],"m":"inx"},{"a":62607,"t":"code","b":[224,14],"m":"cpx","o":"#$0E"},{"a":62609,"t":"code","b":[144,185],"m":"bcc","oa":62540,"o":"b_F44C"},{"a":62611,"t":"code","b":[164,19],"m":"ldy","oa":19,"o":"save_y"},{"a":62613,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"scr_ptr"},{"a":62615,"t":"code","b":[24],"m":"clc"},{"a":62616,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":62618,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":62620,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":62622,"t":"code","b":[144,4],"m":"bcc","oa":62628,"o":"b_F4A4"},{"a":62624,"t":"code","b":[230,14],"m":"inc","oa":14,"o":"scr_ptr_hi"},{"a":62626,"t":"code","b":[230,16],"m":"inc","oa":16,"o":"col_ptr_hi"},{"a":62628,"l":"b_F4A4","t":"code","b":[192,160],"m":"cpy","o":"#$A0","x":[62622]},{"a":62630,"t":"code","b":[176,3],"m":"bcs","oa":62635,"o":"r_F4AB"},{"a":62632,"t":"code","b":[76,33,244],"m":"jmp","oa":62497,"o":"j_F421"},{"a":62635,"l":"r_F4AB","t":"code","b":[96],"m":"rts","x":[62630]},{"a":62636,"l":"b_F4AC","t":"code","b":[200],"m":"iny","x":[62553]},{"a":62637,"t":"code","b":[72],"m":"pha"},{"a":62638,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":62640,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":62642,"t":"code","b":[136],"m":"dey"},{"a":62643,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":62645,"t":"code","b":[104],"m":"pla"},{"a":62646,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":62648,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":62650,"t":"code","b":[240,3],"m":"beq","oa":62655,"o":"b_F4BF"},{"a":62652,"t":"code","b":[169,141],"m":"lda","o":"#$8D"},{"a":62654,"t":"code","b":[44,169,133],"m":"bit","oa":34217,"o":"round_10_byte_9"},{"a":62657,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62659,"t":"code","b":[200],"m":"iny"},{"a":62660,"t":"code","b":[24],"m":"clc"},{"a":62661,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":62663,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62665,"t":"code","b":[200],"m":"iny"},{"a":62666,"t":"code","b":[142,13,2],"m":"stx","oa":525,"o":"x_save"},{"a":62669,"t":"code","b":[174,86,4],"m":"ldx","oa":1110,"o":"metal_count"},{"a":62672,"t":"code","b":[232],"m":"inx"},{"a":62673,"t":"code","b":[201,138],"m":"cmp","o":"#$8A"},{"a":62675,"t":"code","b":[176,21],"m":"bcs","oa":62698,"o":"b_F4EA"},{"a":62677,"t":"code","b":[238,85,4],"m":"inc","oa":1109,"o":"bricks_left"},{"a":62680,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":62683,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":62686,"t":"code","b":[170],"m":"tax"},{"a":62687,"t":"code","b":[189,42,245],"m":"lda","oa":62762,"o":"silver_hits_by_round,x"},{"a":62690,"t":"code","b":[174,86,4],"m":"ldx","oa":1110,"o":"metal_count"},{"a":62693,"t":"code","b":[232],"m":"inx"},{"a":62694,"t":"code","b":[24],"m":"clc"},{"a":62695,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":62697,"t":"code","b":[44,169,128],"m":"bit","oa":32937,"o":"round_02_byte_9"},{"a":62700,"t":"code","b":[157,85,3],"m":"sta","oa":853,"o":"metal_hits,x"},{"a":62703,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":62705,"t":"code","b":[157,0,3],"m":"sta","oa":768,"o":"metal_state,x"},{"a":62708,"t":"code","b":[142,86,4],"m":"stx","oa":1110,"o":"metal_count"},{"a":62711,"t":"code","b":[138],"m":"txa"},{"a":62712,"t":"code","b":[10],"m":"asl","o":"a"},{"a":62713,"t":"code","b":[170],"m":"tax"},{"a":62714,"t":"code","b":[152],"m":"tya"},{"a":62715,"t":"code","b":[56],"m":"sec"},{"a":62716,"t":"code","b":[233,2],"m":"sbc","o":"#$02"},{"a":62718,"t":"code","b":[24],"m":"clc"},{"a":62719,"t":"code","b":[101,13],"m":"adc","oa":13,"o":"scr_ptr"},{"a":62721,"t":"code","b":[157,170,3],"m":"sta","oa":938,"o":"metal_pos,x"},{"a":62724,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":62726,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":62728,"t":"code","b":[157,171,3],"m":"sta","oa":939,"o":"metal_pos_hi,x"},{"a":62731,"t":"code","b":[174,13,2],"m":"ldx","oa":525,"o":"x_save"},{"a":62734,"t":"code","b":[152],"m":"tya"},{"a":62735,"t":"code","b":[24],"m":"clc"},{"a":62736,"t":"code","b":[105,39],"m":"adc","o":"#$27"},{"a":62738,"t":"code","b":[168],"m":"tay"},{"a":62739,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":62741,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":62743,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62745,"t":"code","b":[200],"m":"iny"},{"a":62746,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":62748,"t":"code","b":[48,4],"m":"bmi","oa":62754,"o":"b_F522"},{"a":62750,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":62752,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62754,"l":"b_F522","t":"code","b":[152],"m":"tya","x":[62748]},{"a":62755,"t":"code","b":[56],"m":"sec"},{"a":62756,"t":"code","b":[233,42],"m":"sbc","o":"#$2A"},{"a":62758,"t":"code","b":[168],"m":"tay"},{"a":62759,"t":"code","b":[76,137,244],"m":"jmp","oa":62601,"o":"b_F489"},{"a":62762,"l":"silver_hits_by_round","c":"Silver-brick hit counter minus 1, by round (index $093D, 32 entries for rounds 1-32): 1 for rounds 1-8, 2 for 9-16, 3 for 17-24, 4 for 25-32. draw_wall stores the value + 1 in $0355; $ABA6 counts it down and silver_brick_hit ($B073) breaks the brick when it is zero.","t":"byte","b":[1,1,1,1,1,1,1,1],"x":[62687]},{"a":62770,"t":"byte","b":[2,2,2,2,2,2,2,2]},{"a":62778,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":62786,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":62794,"l":"background_colour_by_round","c":"Colour RAM value of the playfield background, by round AND 3: $0E, $0A, $0E, $0A (stored in $0457 by draw_playfield_background).","t":"byte","b":[14,10,14,10],"x":[62872]},{"a":62798,"l":"background_char_base_by_round","c":"First screen code of the playfield's 4 x 4 background tile, by round AND 3: $40, $60, $40, $60 (stored in $0458).","t":"byte","b":[64,96,64,96],"x":[62878]},{"a":62802,"l":"draw_playfield_background","c":"Fills the playfield (rows 1-24, columns 1-26) with the round's background pattern. Copies one of two 64-character sets into characters $40-$7F of the play set ($CA00-$CBFF): $EC00-$EDFF, or $EE00-$EFFF when bit 1 of the round number is set. The tile is 4 x 4 characters: screen code = $0458 + (row AND 3) x 4 + (column AND 3) cycling, colour $0457 (both by round AND 3, $F54A/$F54E). Then $0277-$0279 = $A3E8 + (round AND 3) and $D022 = $0C. Called from new_game_init, $96C8 and $9C20.","t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player","x":[38600,39968,61935]},{"a":62805,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":62808,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":62810,"t":"code","b":[208,19],"m":"bne","oa":62831,"o":"b_F56F"},{"a":62812,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":62814,"l":"b_F55E","t":"code","b":[185,0,236],"m":"lda","oa":60416,"o":"tiles_set_a,y","x":[62827]},{"a":62817,"t":"code","b":[153,0,202],"m":"sta","oa":51712,"o":"charset_tiles,y"},{"a":62820,"t":"code","b":[185,0,237],"m":"lda","oa":60672,"o":"tiles_set_a_96,y"},{"a":62823,"t":"code","b":[153,0,203],"m":"sta","oa":51968,"o":"charset_tiles_96,y"},{"a":62826,"t":"code","b":[136],"m":"dey"},{"a":62827,"t":"code","b":[208,241],"m":"bne","oa":62814,"o":"b_F55E"},{"a":62829,"t":"code","b":[240,17],"m":"beq","oa":62848,"o":"b_F580"},{"a":62831,"l":"b_F56F","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[62810]},{"a":62833,"l":"b_F571","t":"code","b":[185,0,238],"m":"lda","oa":60928,"o":"tiles_set_b,y","x":[62846]},{"a":62836,"t":"code","b":[153,0,202],"m":"sta","oa":51712,"o":"charset_tiles,y"},{"a":62839,"t":"code","b":[185,0,239],"m":"lda","oa":61184,"o":"tiles_set_b_96,y"},{"a":62842,"t":"code","b":[153,0,203],"m":"sta","oa":51968,"o":"charset_tiles_96,y"},{"a":62845,"t":"code","b":[136],"m":"dey"},{"a":62846,"t":"code","b":[208,241],"m":"bne","oa":62833,"o":"b_F571"},{"a":62848,"l":"b_F580","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[62829]},{"a":62850,"t":"code","b":[141,30,2],"m":"sta","oa":542,"o":"row_counter"},{"a":62853,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":62855,"t":"code","b":[141,29,2],"m":"sta","oa":541,"o":"pattern_phase"},{"a":62858,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":62860,"t":"code","b":[132,13],"m":"sty","oa":13,"o":"scr_ptr"},{"a":62862,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":62864,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":62866,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":62869,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":62871,"t":"code","b":[168],"m":"tay"},{"a":62872,"t":"code","b":[185,74,245],"m":"lda","oa":62794,"o":"background_colour_by_round,y"},{"a":62875,"t":"code","b":[141,87,4],"m":"sta","oa":1111,"o":"bg_colour"},{"a":62878,"t":"code","b":[185,78,245],"m":"lda","oa":62798,"o":"background_char_base_by_round,y"},{"a":62881,"t":"code","b":[141,88,4],"m":"sta","oa":1112,"o":"bg_char_base"},{"a":62884,"l":"j_F5A4","t":"code","b":[160,26],"m":"ldy","o":"#$1A","x":[62950]},{"a":62886,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":62888,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"scr_ptr"},{"a":62890,"t":"code","b":[24],"m":"clc"},{"a":62891,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":62893,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":62895,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":62897,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"scr_ptr_hi"},{"a":62899,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":62901,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":62903,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":62905,"t":"code","b":[24],"m":"clc"},{"a":62906,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":62908,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":62910,"t":"code","b":[138],"m":"txa"},{"a":62911,"l":"b_F5BF","t":"code","b":[24],"m":"clc","x":[62931]},{"a":62912,"t":"code","b":[109,88,4],"m":"adc","oa":1112,"o":"bg_char_base"},{"a":62915,"t":"code","b":[109,29,2],"m":"adc","oa":541,"o":"pattern_phase"},{"a":62918,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":62920,"t":"code","b":[173,87,4],"m":"lda","oa":1111,"o":"bg_colour"},{"a":62923,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":62925,"t":"code","b":[202],"m":"dex"},{"a":62926,"t":"code","b":[138],"m":"txa"},{"a":62927,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":62929,"t":"code","b":[170],"m":"tax"},{"a":62930,"t":"code","b":[136],"m":"dey"},{"a":62931,"t":"code","b":[208,234],"m":"bne","oa":62911,"o":"b_F5BF"},{"a":62933,"t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter"},{"a":62936,"t":"code","b":[173,30,2],"m":"lda","oa":542,"o":"row_counter"},{"a":62939,"t":"code","b":[201,25],"m":"cmp","o":"#$19"},{"a":62941,"t":"code","b":[176,10],"m":"bcs","oa":62953,"o":"b_F5E9"},{"a":62943,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":62945,"t":"code","b":[10],"m":"asl","o":"a"},{"a":62946,"t":"code","b":[10],"m":"asl","o":"a"},{"a":62947,"t":"code","b":[141,29,2],"m":"sta","oa":541,"o":"pattern_phase"},{"a":62950,"t":"code","b":[76,164,245],"m":"jmp","oa":62884,"o":"j_F5A4"},{"a":62953,"l":"b_F5E9","t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player","x":[62941]},{"a":62956,"t":"code","b":[189,61,9],"m":"lda","oa":2365,"o":"round_p1,x"},{"a":62959,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":62961,"t":"code","b":[170],"m":"tax"},{"a":62962,"t":"code","b":[189,232,163],"m":"lda","oa":41960,"o":"enemy_anim_start,x"},{"a":62965,"t":"code","b":[141,119,2],"m":"sta","oa":631,"o":"enemy_anim"},{"a":62968,"t":"code","b":[141,120,2],"m":"sta","oa":632,"o":"enemy_anim_1"},{"a":62971,"t":"code","b":[141,121,2],"m":"sta","oa":633,"o":"enemy_anim_2"},{"a":62974,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":62976,"t":"code","b":[141,34,208],"m":"sta","o":"vic_background1"},{"a":62979,"t":"code","b":[96],"m":"rts"},{"a":62980,"l":"drum_81","c":"Title-tune percussion sound $81, reached only through the JSR at $FEE8 (drum table entry $81). Patches its own store at $F621 to STA $D418, then 6 x 12 steps, each a delay of $FECE+Y counts and the low nibble of $DE (advanced by 1) written as the SID volume; afterwards sets the store to STA $DD18. Holds the CPU while it plays.","t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":62982,"t":"code","b":[169,148],"m":"lda","o":"#$94"},{"a":62984,"t":"code","b":[24],"m":"clc"},{"a":62985,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":62987,"t":"code","b":[141,35,246],"m":"sta","oa":63011,"o":"drum_81_store_hi"},{"a":62990,"l":"b_F60E","t":"code","b":[162,12],"m":"ldx","o":"#$0C","x":[63016]},{"a":62992,"l":"b_F610","t":"code","b":[185,206,254],"m":"lda","oa":65230,"o":"drum_81_delays,y","x":[63013]},{"a":62995,"l":"b_F613","t":"code","b":[56],"m":"sec","x":[62998]},{"a":62996,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":62998,"t":"code","b":[208,251],"m":"bne","oa":62995,"o":"b_F613"},{"a":63000,"t":"code","b":[165,222],"m":"lda","oa":222,"o":"noise_acc"},{"a":63002,"t":"code","b":[24],"m":"clc"},{"a":63003,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":63005,"t":"code","b":[133,222],"m":"sta","oa":222,"o":"noise_acc"},{"a":63007,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":63009,"t":"code","b":[141,24,221],"m":"sta","o":"$DD18"},{"a":63011,"t":"note","l":"drum_81_store_hi","c":"Operand high byte of drum_81's volume store at $F621: $D4 while the sound plays; set to $DD afterwards ($F62A), so the idle instruction reads STA $DD18 (it never runs in that state).","note":"inside the item at $F621","x":[62987,63020]},{"a":63012,"t":"code","b":[202],"m":"dex"},{"a":63013,"t":"code","b":[208,233],"m":"bne","oa":62992,"o":"b_F610"},{"a":63015,"t":"code","b":[136],"m":"dey"},{"a":63016,"t":"code","b":[16,228],"m":"bpl","oa":62990,"o":"b_F60E"},{"a":63018,"t":"code","b":[169,221],"m":"lda","o":"#$DD"},{"a":63020,"t":"code","b":[141,35,246],"m":"sta","oa":63011,"o":"drum_81_store_hi"},{"a":63023,"t":"code","b":[96],"m":"rts"},{"a":63024,"l":"draw_walls","c":"Draws the playfield's walls in colour $0E: row 0 from top_wall_row (28 screen codes), shading the row below (OR $10); then rows 1-23, the left wall at column 0 (screen codes $F1-$F5 cycling with $0220) with column 1 shaded, and the right wall at column 27 ($F6-$FA); then the closed exit at the bottom of the right wall (exit_gate_close) and its three screen codes $E8-$EA at rows 22-24, column 27 ($C38B, $C3B3, $C3DB). Called from new_game_init and $95E5, $96CB, $9C23, $9C3B.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[38373,38603,39971,39995,61938]},{"a":63026,"t":"code","b":[141,30,2],"m":"sta","oa":542,"o":"row_counter"},{"a":63029,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":63031,"t":"code","b":[141,32,2],"m":"sta","oa":544,"o":"anim_tick"},{"a":63034,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":63036,"t":"code","b":[24],"m":"clc"},{"a":63037,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":63039,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":63041,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":63043,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":63045,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"scr_ptr_hi"},{"a":63047,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":63049,"t":"code","b":[105,216],"m":"adc","o":"#$D8"},{"a":63051,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"col_ptr_hi"},{"a":63053,"t":"code","b":[160,27],"m":"ldy","o":"#$1B"},{"a":63055,"l":"b_F64F","t":"code","b":[185,222,246],"m":"lda","oa":63198,"o":"top_wall_row,y","x":[63075]},{"a":63058,"t":"code","b":[153,0,192],"m":"sta","oa":49152,"o":"screen,y"},{"a":63061,"t":"code","b":[185,40,192],"m":"lda","oa":49192,"o":"f_C028,y"},{"a":63064,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":63066,"t":"code","b":[153,40,192],"m":"sta","oa":49192,"o":"f_C028,y"},{"a":63069,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":63071,"t":"code","b":[153,0,216],"m":"sta","o":"colour_ram,y"},{"a":63074,"t":"code","b":[136],"m":"dey"},{"a":63075,"t":"code","b":[16,234],"m":"bpl","oa":63055,"o":"b_F64F"},{"a":63077,"l":"b_F665","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[63145,63151]},{"a":63079,"t":"code","b":[173,32,2],"m":"lda","oa":544,"o":"anim_tick"},{"a":63082,"t":"code","b":[24],"m":"clc"},{"a":63083,"t":"code","b":[105,241],"m":"adc","o":"#$F1"},{"a":63085,"t":"code","b":[72],"m":"pha"},{"a":63086,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":63088,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":63090,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":63092,"t":"code","b":[200],"m":"iny"},{"a":63093,"t":"code","b":[177,13],"m":"lda","oa":13,"o":"(scr_ptr),y"},{"a":63095,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":63097,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":63099,"t":"code","b":[160,27],"m":"ldy","o":"#$1B"},{"a":63101,"t":"code","b":[104],"m":"pla"},{"a":63102,"t":"code","b":[24],"m":"clc"},{"a":63103,"t":"code","b":[105,5],"m":"adc","o":"#$05"},{"a":63105,"t":"code","b":[145,13],"m":"sta","oa":13,"o":"(scr_ptr),y"},{"a":63107,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":63109,"t":"code","b":[145,15],"m":"sta","oa":15,"o":"(col_ptr),y"},{"a":63111,"t":"code","b":[238,30,2],"m":"inc","oa":542,"o":"row_counter"},{"a":63114,"t":"code","b":[173,30,2],"m":"lda","oa":542,"o":"row_counter"},{"a":63117,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":63119,"t":"code","b":[176,32],"m":"bcs","oa":63153,"o":"b_F6B1"},{"a":63121,"t":"code","b":[173,32,2],"m":"lda","oa":544,"o":"anim_tick"},{"a":63124,"t":"code","b":[24],"m":"clc"},{"a":63125,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":63127,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":63129,"t":"code","b":[144,2],"m":"bcc","oa":63133,"o":"b_F69D"},{"a":63131,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":63133,"l":"b_F69D","t":"code","b":[141,32,2],"m":"sta","oa":544,"o":"anim_tick","x":[63129]},{"a":63136,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"scr_ptr"},{"a":63138,"t":"code","b":[24],"m":"clc"},{"a":63139,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":63141,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"scr_ptr"},{"a":63143,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"col_ptr"},{"a":63145,"t":"code","b":[144,186],"m":"bcc","oa":63077,"o":"b_F665"},{"a":63147,"t":"code","b":[230,16],"m":"inc","oa":16,"o":"col_ptr_hi"},{"a":63149,"t":"code","b":[230,14],"m":"inc","oa":14,"o":"scr_ptr_hi"},{"a":63151,"t":"code","b":[208,180],"m":"bne","oa":63077,"o":"b_F665"},{"a":63153,"l":"b_F6B1","t":"code","b":[32,194,246],"m":"jsr","oa":63170,"o":"exit_gate_close","x":[63119]},{"a":63156,"t":"code","b":[160,232],"m":"ldy","o":"#$E8"},{"a":63158,"t":"code","b":[140,139,195],"m":"sty","oa":50059,"o":"exit_cells"},{"a":63161,"t":"code","b":[200],"m":"iny"},{"a":63162,"t":"code","b":[140,179,195],"m":"sty","oa":50099,"o":"a_C3B3"},{"a":63165,"t":"code","b":[200],"m":"iny"},{"a":63166,"t":"code","b":[140,219,195],"m":"sty","oa":50139,"o":"a_C3DB"},{"a":63169,"t":"code","b":[96],"m":"rts"},{"a":63170,"l":"exit_gate_close","c":"Redraws characters $E8-$EA of the play set (24 bytes at $CF40, plus one byte into $EB at $CF58) from $CFB0 and sets colour $0E on their three cells at the bottom of the right wall (rows 22-24, column 27). By its place this is the exit the break capsule opens (not checked). Called from draw_walls and $95EE, $9C1D, $9C44, $AA34.","t":"code","b":[160,24],"m":"ldy","o":"#$18","x":[38382,39965,40004,43572,63153]},{"a":63172,"l":"b_F6C4","t":"code","b":[185,176,207],"m":"lda","oa":53168,"o":"chars_wall_right,y","x":[63179]},{"a":63175,"t":"code","b":[153,64,207],"m":"sta","oa":53056,"o":"chars_exit,y"},{"a":63178,"t":"code","b":[136],"m":"dey"},{"a":63179,"t":"code","b":[16,247],"m":"bpl","oa":63172,"o":"b_F6C4"},{"a":63181,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":63183,"t":"code","b":[141,139,219],"m":"sta","o":"$DB8B"},{"a":63186,"t":"code","b":[141,179,219],"m":"sta","o":"$DBB3"},{"a":63189,"t":"code","b":[141,219,219],"m":"sta","o":"$DBDB"},{"a":63192,"t":"code","b":[96],"m":"rts"},{"a":63193,"l":"drum_script_commands","c":"The five command bytes of the title percussion script ($20, $40, $60, $49, $4C), searched by drum_script_step at $FF01; the index found selects the handler from drum_command_lo ($F8A8) and drum_command_hi ($B47B): $A449, $A932, $A1E6, $A7C9, $A44E.","t":"byte","b":[32,64,96,73,76],"x":[65281]},{"a":63198,"l":"top_wall_row","c":"The playfield's top wall: 28 screen codes for row 0, columns 0-27 ($FB corner, $FC wall, $EB $EC $EB at 6-8 and $FD $FE $FD at 19-21, $FF corner), drawn by draw_walls.","t":"byte","b":[251,252,252,252,252,252,235,236],"x":[63055]},{"a":63206,"t":"byte","b":[235,252,252,252,252,252,252,252]},{"a":63214,"t":"byte","b":[252,252,252,253,254,253,252,252]},{"a":63222,"t":"byte","b":[252,252,252,255]},{"a":63226,"l":"clear_variables","c":"Clears the variable page $0200-$02FF and the Y positions of the 12 virtual sprites ($942D-$9438; Y = 0 means unused). Called from main_entry and new_game_init.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[61472,61929]},{"a":63228,"t":"code","b":[152],"m":"tya"},{"a":63229,"l":"b_F6FD","t":"code","b":[153,0,2],"m":"sta","oa":512,"o":"frame_ticks,y","x":[63233]},{"a":63232,"t":"code","b":[136],"m":"dey"},{"a":63233,"t":"code","b":[208,250],"m":"bne","oa":63229,"o":"b_F6FD"},{"a":63235,"t":"code","b":[160,11],"m":"ldy","o":"#$0B"},{"a":63237,"l":"b_F705","t":"code","b":[153,45,148],"m":"sta","oa":37933,"o":"obj_y,y","x":[63241]},{"a":63240,"t":"code","b":[136],"m":"dey"},{"a":63241,"t":"code","b":[16,250],"m":"bpl","oa":63237,"o":"b_F705"},{"a":63243,"t":"code","b":[96],"m":"rts"},{"a":63244,"l":"wait_tune_end","c":"Loops until $3417 returns zero (the tune that is playing has finished). Called from main_entry and $95CF, $9656, $96FF, $9BC3.","t":"code","b":[32,23,52],"m":"jsr","oa":13335,"o":"sound_busy","x":[38351,38486,38655,39875,61506,63247]},{"a":63247,"t":"code","b":[208,251],"m":"bne","oa":63244,"o":"wait_tune_end"},{"a":63249,"t":"code","b":[96],"m":"rts"},{"a":63250,"l":"unused_colours_f712","c":"Unused: 7 bytes ($00 $00 $03 $02 $00 $0C $0F) that nothing reads, in the same shape as play_screen_colours after it; perhaps an earlier palette. Not known.","t":"byte","b":[0,0,3,2,0,12,15]},{"a":63257,"l":"play_screen_colours","c":"Colours for $D020-$D026 on the menu, story and play screens, copied by $B54D: border $00, background $00, extra backgrounds $0C, $0E, $00, sprite multicolours $01 and $0E.","t":"byte","b":[0,0,12,14,0,1,14],"x":[46413]},{"a":63264,"l":"irq_frame_bottom","c":"Raster interrupt at line $F7 (247), the last of the frame. Acknowledges, sets the next interrupt to irq_frame_top ($F75E) at line $14 (20), counts the frame in $0201/$0241 (16 bits), CLI, then sorts the virtual sprites (mux_sort $FA06), finds how many are in use (mux_count_active $F7EB) and copies the tables for the next frame (mux_copy_tables $F7CD); hardware sprites 0 and 1 take their X from $9439 and $943A.","t":"code","b":[72],"m":"pha"},{"a":63265,"t":"code","b":[152],"m":"tya"},{"a":63266,"t":"code","b":[72],"m":"pha"},{"a":63267,"t":"code","b":[138],"m":"txa"},{"a":63268,"t":"code","b":[72],"m":"pha"},{"a":63269,"t":"code","b":[216],"m":"cld"},{"a":63270,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":63272,"t":"code","b":[141,25,208],"m":"sta","o":"vic_irq_status"},{"a":63275,"t":"code","b":[169,94],"m":"lda","o":"#$5E"},{"a":63277,"t":"code","b":[141,254,255],"m":"sta","oa":65534,"o":"irq_vector"},{"a":63280,"t":"code","b":[169,247],"m":"lda","o":"#$F7"},{"a":63282,"t":"code","b":[141,255,255],"m":"sta","oa":65535,"o":"$FFFF"},{"a":63285,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":63287,"t":"code","b":[142,18,208],"m":"stx","o":"vic_raster"},{"a":63290,"t":"code","b":[238,1,2],"m":"inc","oa":513,"o":"frame_counter"},{"a":63293,"t":"code","b":[208,3],"m":"bne","oa":63298,"o":"b_F742"},{"a":63295,"t":"code","b":[238,65,2],"m":"inc","oa":577,"o":"frame_counter_hi"},{"a":63298,"l":"b_F742","t":"code","b":[88],"m":"cli","x":[63293]},{"a":63299,"t":"code","b":[32,6,250],"m":"jsr","oa":64006,"o":"mux_sort"},{"a":63302,"t":"code","b":[32,235,247],"m":"jsr","oa":63467,"o":"mux_count_active"},{"a":63305,"t":"code","b":[32,205,247],"m":"jsr","oa":63437,"o":"mux_copy_tables"},{"a":63308,"t":"code","b":[173,57,148],"m":"lda","oa":37945,"o":"mux_x"},{"a":63311,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":63314,"t":"code","b":[173,58,148],"m":"lda","oa":37946,"o":"mux_x_1"},{"a":63317,"t":"code","b":[141,2,208],"m":"sta","o":"vic_sprite1_x"},{"a":63320,"t":"code","b":[104],"m":"pla"},{"a":63321,"t":"code","b":[170],"m":"tax"},{"a":63322,"t":"code","b":[104],"m":"pla"},{"a":63323,"t":"code","b":[168],"m":"tay"},{"a":63324,"t":"code","b":[104],"m":"pla"},{"a":63325,"t":"code","b":[64],"m":"rti"},{"a":63326,"l":"irq_frame_top","c":"Raster interrupt at line $14 (20). Acknowledges, loads CIA 2 timer B with $07A8 and starts it one-shot ($DD0F = $19), so nmi_frame_a ($F855) fires some 30 lines later; sets the next raster interrupt to irq_mux ($FBEE) and places the first six virtual sprites (mux_first_six $F95F).","t":"code","b":[72],"m":"pha"},{"a":63327,"t":"code","b":[152],"m":"tya"},{"a":63328,"t":"code","b":[72],"m":"pha"},{"a":63329,"t":"code","b":[138],"m":"txa"},{"a":63330,"t":"code","b":[72],"m":"pha"},{"a":63331,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":63333,"t":"code","b":[141,25,208],"m":"sta","o":"vic_irq_status"},{"a":63336,"t":"code","b":[169,168],"m":"lda","o":"#$A8"},{"a":63338,"t":"code","b":[141,6,221],"m":"sta","o":"cia2_timer_b_lo"},{"a":63341,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":63343,"t":"code","b":[141,7,221],"m":"sta","o":"cia2_timer_b_hi"},{"a":63346,"t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":63348,"t":"code","b":[141,15,221],"m":"sta","o":"cia2_control_b"},{"a":63351,"t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":63353,"t":"code","b":[141,254,255],"m":"sta","oa":65534,"o":"irq_vector"},{"a":63356,"t":"code","b":[169,251],"m":"lda","o":"#$FB"},{"a":63358,"t":"code","b":[141,255,255],"m":"sta","oa":65535,"o":"$FFFF"},{"a":63361,"t":"code","b":[32,95,249],"m":"jsr","oa":63839,"o":"mux_first_six"},{"a":63364,"t":"code","b":[104],"m":"pla"},{"a":63365,"t":"code","b":[170],"m":"tax"},{"a":63366,"t":"code","b":[104],"m":"pla"},{"a":63367,"t":"code","b":[168],"m":"tay"},{"a":63368,"t":"code","b":[104],"m":"pla"},{"a":63369,"t":"code","b":[64],"m":"rti"},{"a":63370,"l":"pad_f78a","c":"A single $00 between the IRQ code and the screen row address table at $F78B; nothing reads or runs it.","t":"byte","b":[0]},{"a":63371,"l":"screen_row_addresses","c":"Start address of each screen row, as words: $C000 + 40 x row for rows 0-24 (50 bytes, $F78B-$F7BC). Read as low byte $F78B,Y and high byte $F78C,Y with Y = 2 x row by the text printers (print_menu_text $B635 and others) and by $0629, $A246, $A279, $A6D5, $AE1E, $AE88.","t":"word","b":[0,192,40,192,80,192,120,192],"d":[49152,49192,49232,49272],"x":[1567,41535,41586,42702,44567,44673,46657,46720,46783]},{"a":63372,"t":"note","l":"screen_row_addresses_hi","c":"The same table seen one byte on: screen_row_addresses + 1, the high byte of row Y/2's address when read as $F78C,Y.","note":"inside the item at $F78B","x":[1577,41542,41593,42709,44574,44680,46662,46725,46788]},{"a":63379,"t":"word","b":[160,192,200,192,240,192,24,193],"d":[49312,49352,49392,49432]},{"a":63387,"t":"word","b":[64,193,104,193,144,193,184,193],"d":[49472,49512,49552,49592]},{"a":63395,"t":"word","b":[224,193,8,194,48,194,88,194],"d":[49632,49672,49712,49752]},{"a":63403,"t":"word","b":[128,194,168,194,208,194,248,194],"d":[49792,49832,49872,49912]},{"a":63411,"t":"word","b":[32,195,72,195,112,195,152,195],"d":[49952,49992,50032,50072]},{"a":63419,"t":"word","b":[192,195],"d":[50112]},{"a":63421,"l":"unused_bit_masks_f7bd","c":"Unused: 16 bytes nothing reads: $FE $FD $FB $F7 $EF $DF $BF $7F (each bit cleared) then $01 $02 $04 ... $80 (each bit set). The same 16 bytes stand again at $FC81.","t":"byte","b":[254,253,251,247,239,223,191,127]},{"a":63429,"t":"byte","b":[1,2,4,8,16,32,64,128]},{"a":63437,"l":"mux_copy_tables","c":"Copies the 12 virtual sprites' Y ($942D to $9421), X ($9445 to $9439) and sorted order ($9415 to $9409), so the interrupts during the next frame work from a fixed copy. Called from irq_frame_bottom and mux_init.","t":"code","b":[162,11],"m":"ldx","o":"#$0B","x":[63305,63507]},{"a":63439,"l":"b_F7CF","t":"code","b":[189,45,148],"m":"lda","oa":37933,"o":"obj_y,x","x":[63458]},{"a":63442,"t":"code","b":[157,33,148],"m":"sta","oa":37921,"o":"mux_y,x"},{"a":63445,"t":"code","b":[189,69,148],"m":"lda","oa":37957,"o":"obj_x,x"},{"a":63448,"t":"code","b":[157,57,148],"m":"sta","oa":37945,"o":"mux_x,x"},{"a":63451,"t":"code","b":[189,21,148],"m":"lda","oa":37909,"o":"obj_order,x"},{"a":63454,"t":"code","b":[157,9,148],"m":"sta","oa":37897,"o":"mux_order,x"},{"a":63457,"t":"code","b":[202],"m":"dex"},{"a":63458,"t":"code","b":[16,235],"m":"bpl","oa":63439,"o":"b_F7CF"},{"a":63460,"t":"code","b":[96],"m":"rts"},{"a":63461,"l":"bit_masks_f7e5","c":"Six bit masks $20 $10 $08 $04 $02 $01, read by $AEFB.","t":"byte","b":[32,16,8,4,2,1],"x":[44795]},{"a":63467,"l":"mux_count_active","c":"Finds the last entry of the sorted order $9415 whose sprite has a non-zero Y (searching from entry 11 down), and leaves its index in $04, where the multiplexer starts. Y = 0 marks a slot as unused.","t":"code","b":[160,11],"m":"ldy","o":"#$0B","x":[63302,63510]},{"a":63469,"l":"b_F7ED","t":"code","b":[190,21,148],"m":"ldx","oa":37909,"o":"obj_order,y","x":[63478]},{"a":63472,"t":"code","b":[189,45,148],"m":"lda","oa":37933,"o":"obj_y,x"},{"a":63475,"t":"code","b":[208,5],"m":"bne","oa":63482,"o":"b_F7FA"},{"a":63477,"t":"code","b":[136],"m":"dey"},{"a":63478,"t":"code","b":[16,245],"m":"bpl","oa":63469,"o":"b_F7ED"},{"a":63480,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":63482,"l":"b_F7FA","t":"code","b":[132,4],"m":"sty","oa":4,"o":"mux_next","x":[63475]},{"a":63484,"t":"code","b":[96],"m":"rts"},{"a":63485,"l":"spare_rts_f7fd","c":"A second RTS straight after mux_count_active's own; nothing jumps to it.","t":"byte","b":[96]},{"a":63486,"l":"mux_init","c":"Sets up the sprite multiplexer: the sorted order $9415 = 0-11, the positions of hardware sprites 0-5 zeroed ($D000-$D00B), then sort, copy and count (falls into mux_count_active). Called by the start-up ($B9E1) and the attract mode ($9500).","t":"code","b":[160,11],"m":"ldy","o":"#$0B","x":[38144,47585]},{"a":63488,"l":"b_F800","t":"code","b":[152],"m":"tya","x":[63502]},{"a":63489,"t":"code","b":[153,21,148],"m":"sta","oa":37909,"o":"obj_order,y"},{"a":63492,"t":"code","b":[152],"m":"tya"},{"a":63493,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":63495,"t":"code","b":[170],"m":"tax"},{"a":63496,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":63498,"t":"code","b":[157,0,208],"m":"sta","o":"vic_sprite0_x,x"},{"a":63501,"t":"code","b":[136],"m":"dey"},{"a":63502,"t":"code","b":[16,240],"m":"bpl","oa":63488,"o":"b_F800"},{"a":63504,"t":"code","b":[32,6,250],"m":"jsr","oa":64006,"o":"mux_sort"},{"a":63507,"t":"code","b":[32,205,247],"m":"jsr","oa":63437,"o":"mux_copy_tables"},{"a":63510,"t":"code","b":[76,235,247],"m":"jmp","oa":63467,"o":"mux_count_active"},{"a":63513,"l":"slot_colours","c":"Colour of each of the 12 virtual sprites (slots 0-11, $F819-$F824), written to $D029+n when the slot is placed on hardware sprite 2+n (mux_first_six $F96B, irq_mux $FC0C). Slot 0 here: set to 2 by new_game_init.","t":"byte","b":[1],"x":[62020,63851,64524]},{"a":63514,"l":"slot_colour_1","c":"Colour of virtual sprite slot 1 (the Vaus, X from place_vaus via $9446), copied to the hardware sprite's colour register when the multiplexer places it; written by $F247.","t":"byte","b":[1],"x":[62023]},{"a":63515,"l":"slot_colour_2","c":"Colour of virtual sprite slot 2 (role not traced here), copied to the hardware sprite's colour register when the multiplexer places it; written by $0904.","t":"byte","b":[1],"x":[2308,42883]},{"a":63516,"l":"slot_colour_3","c":"Colour of virtual sprite slot 3 (role not traced here), copied to the hardware sprite's colour register when the multiplexer places it; written by $0907.","t":"byte","b":[1],"x":[2311]},{"a":63517,"l":"slot_colour_4","c":"Colour of virtual sprite slot 4 (ball 0), copied to the hardware sprite's colour register when the multiplexer places it; written by $F254.","t":"byte","b":[1],"x":[62036]},{"a":63518,"l":"slot_colour_5","c":"Colour of virtual sprite slot 5 (ball 1), copied to the hardware sprite's colour register when the multiplexer places it; written by $F257.","t":"byte","b":[1],"x":[62039]},{"a":63519,"l":"slot_colour_6","c":"Colour of virtual sprite slot 6 (ball 2), copied to the hardware sprite's colour register when the multiplexer places it; written by $F25A.","t":"byte","b":[1],"x":[62042]},{"a":63520,"l":"slot_colour_7","c":"Colour of virtual sprite slot 7 (the falling capsule), copied to the hardware sprite's colour register when the multiplexer places it; written by $B21F (capsule_colours) and $F279.","t":"byte","b":[1],"x":[45599,62073]},{"a":63521,"l":"slot_colour_8","c":"Colour of virtual sprite slot 8 (title animation and aim_at_vaus X = 0), copied to the hardware sprite's colour register when the multiplexer places it; written by $08FF and indexed stores ($9F0C).","t":"byte","b":[1],"x":[2303,40716,40893]},{"a":63522,"l":"slot_colour_9","c":"Colour of virtual sprite slot 9 (aim_at_vaus X = 1 (not checked)), copied to the hardware sprite's colour register when the multiplexer places it; written by $08FA.","t":"byte","b":[1],"x":[2298]},{"a":63523,"l":"slot_colour_10","c":"Colour of virtual sprite slot 10 (aim_at_vaus X = 2 (not checked)), copied to the hardware sprite's colour register when the multiplexer places it; written by $08F5.","t":"byte","b":[1,1],"x":[2293]},{"a":63525,"l":"slot_shapes","c":"Shape (sprite pointer) of each of the 12 virtual sprites (slots 0-11, $F825-$F830), written to $C3FA+n (or the page patched in at $F976/$FC17) with the slot's position. Slot 0 here: written by $07C3, $9B4C, $A40B, $A5DC and $AD9C.","t":"byte","b":[64],"x":[1987,39756,41995,42460,44444,63857,64530]},{"a":63526,"l":"slot_shape_1","c":"Shape (sprite pointer) of virtual sprite slot 1 (the Vaus, X from place_vaus via $9446), copied to the pointer at $C3FA+n when placed; written by $9B52, $A411, $A5E2, $ADA2.","t":"byte","b":[64],"x":[39762,42001,42466,44450]},{"a":63527,"l":"slot_shape_2","c":"Shape (sprite pointer) of virtual sprite slot 2 (role not traced here), copied to the pointer at $C3FA+n when placed; written by $091F and indexed stores ($A63F, $A77E).","t":"byte","b":[64],"x":[2335,42549,42559,42878]},{"a":63528,"l":"slot_shape_3","c":"Shape (sprite pointer) of virtual sprite slot 3 (role not traced here), copied to the pointer at $C3FA+n when placed; written by $0923.","t":"byte","b":[64],"x":[2339]},{"a":63529,"l":"slot_shape_4","c":"Shape (sprite pointer) of virtual sprite slot 4 (ball 0), copied to the pointer at $C3FA+n when placed; written by $F269.","t":"byte","b":[64],"x":[62057]},{"a":63530,"l":"slot_shape_5","c":"Shape (sprite pointer) of virtual sprite slot 5 (ball 1), copied to the pointer at $C3FA+n when placed; written by $F26C.","t":"byte","b":[64],"x":[62060]},{"a":63531,"l":"slot_shape_6","c":"Shape (sprite pointer) of virtual sprite slot 6 (ball 2), copied to the pointer at $C3FA+n when placed; written by $F26F.","t":"byte","b":[64],"x":[62063]},{"a":63532,"l":"slot_shape_7","c":"Shape (sprite pointer) of virtual sprite slot 7 (the falling capsule), copied to the pointer at $C3FA+n when placed; written by $F274.","t":"byte","b":[64],"x":[62068]},{"a":63533,"l":"slot_shape_8","c":"Shape (sprite pointer) of virtual sprite slot 8 (title animation and aim_at_vaus X = 0), copied to the pointer at $C3FA+n when placed; written by $074C, $07BE, $08B3, $08BD, $08C3 and title_sprite_animate ($B992).","t":"byte","b":[64,64],"x":[1808,1868,1963,1982,2227,2237,2243,39018,41817,47506]},{"a":63535,"l":"slot_shape_10","c":"Shape (sprite pointer) of virtual sprite slot 10 (aim_at_vaus X = 2 (not checked)), copied to the pointer at $C3FA+n when placed; written by $0770.","t":"byte","b":[64,64],"x":[1904]},{"a":63537,"l":"irq_init","c":"Arms the raster interrupt chain: SEI, IRQ vector $FFFE = $F720 (irq_frame_bottom), raster interrupt enabled ($D01A = 1), CIA 1 timer A interrupt switched off ($DC0D = $01) and acknowledged, $01 = $35, multiplexer hardware-sprite counter $08 = 5, first raster line $F9. Called by the start-up ($B9E7) and the attract mode ($9506).","t":"code","b":[120],"m":"sei","x":[38150,47591]},{"a":63538,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":63540,"t":"code","b":[141,254,255],"m":"sta","oa":65534,"o":"irq_vector"},{"a":63543,"t":"code","b":[169,247],"m":"lda","o":"#$F7"},{"a":63545,"t":"code","b":[141,255,255],"m":"sta","oa":65535,"o":"$FFFF"},{"a":63548,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":63550,"t":"code","b":[141,26,208],"m":"sta","o":"vic_irq_enable"},{"a":63553,"t":"code","b":[141,13,220],"m":"sta","o":"cia1_interrupt"},{"a":63556,"t":"code","b":[173,13,220],"m":"lda","o":"cia1_interrupt"},{"a":63559,"t":"code","b":[169,53],"m":"lda","o":"#$35"},{"a":63561,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"cpu_port"},{"a":63563,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":63565,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"mux_sprite"},{"a":63567,"t":"code","b":[169,249],"m":"lda","o":"#$F9"},{"a":63569,"t":"code","b":[141,18,208],"m":"sta","o":"vic_raster"},{"a":63572,"t":"code","b":[96],"m":"rts"},{"a":63573,"l":"nmi_frame_a","c":"NMI handler while the vector holds $F855, fired by CIA 2 timer B. If the serial-port flag is set it goes to the never-run path at $F90B. Otherwise, first call of the pair ($F958 = 0): reloads timer B with $24F8 and restarts it, sets $F958 = 1 and runs the sound (sound_tick $F889). Second call ($F958 = 1, $F8AD): counts the tick in $0200 (waited on by wait_tick $B472), runs down $0216 (or, when $0217 = 2, clears it once the tune has ended), hides hardware sprites 2-7 (Y = 0), repairs the raster chain if it is still on irq_mux (vector $FBEE: forces $F720), sets the NMI vector to nmi_frame_end ($F903), and runs the sound again when $0209 = 0 (during play: twice per frame).","t":"code","b":[72],"m":"pha"},{"a":63574,"t":"code","b":[173,13,221],"m":"lda","o":"cia2_interrupt"},{"a":63577,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":63579,"t":"code","b":[240,9],"m":"beq","oa":63590,"o":"b_F866"},{"a":63581,"t":"code","b":[76,11,249],"m":"jmp","oa":63755,"o":"j_F90B"},{"a":63584,"l":"j_F860","t":"code","b":[104],"m":"pla","x":[63622,63744]},{"a":63585,"t":"code","b":[170],"m":"tax"},{"a":63586,"t":"code","b":[104],"m":"pla"},{"a":63587,"t":"code","b":[168],"m":"tay"},{"a":63588,"t":"code","b":[104],"m":"pla"},{"a":63589,"t":"code","b":[64],"m":"rti"},{"a":63590,"l":"b_F866","t":"code","b":[152],"m":"tya","x":[63579]},{"a":63591,"t":"code","b":[72],"m":"pha"},{"a":63592,"t":"code","b":[138],"m":"txa"},{"a":63593,"t":"code","b":[72],"m":"pha"},{"a":63594,"t":"code","b":[216],"m":"cld"},{"a":63595,"t":"code","b":[174,88,249],"m":"ldx","oa":63832,"o":"nmi_phase"},{"a":63598,"t":"code","b":[208,61],"m":"bne","oa":63661,"o":"nmi_frame_a_tick"},{"a":63600,"t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":63602,"t":"code","b":[141,6,221],"m":"sta","o":"cia2_timer_b_lo"},{"a":63605,"t":"code","b":[169,36],"m":"lda","o":"#$24"},{"a":63607,"t":"code","b":[141,7,221],"m":"sta","o":"cia2_timer_b_hi"},{"a":63610,"t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":63612,"t":"code","b":[141,15,221],"m":"sta","o":"cia2_control_b"},{"a":63615,"t":"code","b":[232],"m":"inx"},{"a":63616,"t":"code","b":[142,88,249],"m":"stx","oa":63832,"o":"nmi_phase"},{"a":63619,"t":"code","b":[32,137,248],"m":"jsr","oa":63625,"o":"sound_tick"},{"a":63622,"t":"code","b":[76,96,248],"m":"jmp","oa":63584,"o":"j_F860"},{"a":63625,"l":"sound_tick","c":"Sound for one NMI: CLI; while $0209 bit 7 is set (the title screen) steps the percussion script (drum_script_step $FEF4); then calls the sound driver's seven routines $2B5D, $2C15, $2D6C, $2EC5, $3022, $3160 and $32D2.","t":"code","b":[88],"m":"cli","x":[63619,63741]},{"a":63626,"t":"code","b":[173,9,2],"m":"lda","oa":521,"o":"drum_mode"},{"a":63629,"t":"code","b":[16,3],"m":"bpl","oa":63634,"o":"b_F892"},{"a":63631,"t":"code","b":[32,244,254],"m":"jsr","oa":65268,"o":"drum_script_step"},{"a":63634,"l":"b_F892","t":"code","b":[32,93,43],"m":"jsr","oa":11101,"o":"filter_tick","x":[63629]},{"a":63637,"t":"code","b":[32,21,44],"m":"jsr","oa":11285,"o":"seq0_tick"},{"a":63640,"t":"code","b":[32,108,45],"m":"jsr","oa":11628,"o":"seq1_tick"},{"a":63643,"t":"code","b":[32,197,46],"m":"jsr","oa":11973,"o":"seq2_tick"},{"a":63646,"t":"code","b":[32,34,48],"m":"jsr","oa":12322,"o":"fx0_tick"},{"a":63649,"t":"code","b":[32,96,49],"m":"jsr","oa":12640,"o":"fx1_tick"},{"a":63652,"t":"code","b":[32,210,50],"m":"jsr","oa":13010,"o":"fx2_tick"},{"a":63655,"t":"code","b":[96],"m":"rts"},{"a":63656,"l":"drum_command_lo","c":"Low bytes of the title percussion script's command handlers, in the order of drum_script_commands ($F6D9); high bytes at drum_command_hi ($B47B). Copied into the JSR at $FF12.","t":"byte","b":[73,50,230,201,78],"x":[65286]},{"a":63661,"l":"nmi_frame_a_tick","c":"nmi_frame_a's second call of the pair: ticks $0200, runs down $0216 (when $0217 = 2, clears it only once tune $3417 has ended), hides hardware sprites 2-7 (Y = 0 at $D005-$D00F), forces the raster chain back to irq_frame_bottom if the vector is still on irq_mux (low byte $EE; never seen in the simulator), points the NMI vector at nmi_frame_end ($F903) and, during play ($0209 = 0), runs sound_tick a second time.","t":"code","b":[238,0,2],"m":"inc","oa":512,"o":"frame_ticks","x":[63598]},{"a":63664,"t":"code","b":[173,22,2],"m":"lda","oa":534,"o":"tune_hold"},{"a":63667,"t":"code","b":[240,22],"m":"beq","oa":63691,"o":"b_F8CB"},{"a":63669,"t":"code","b":[173,23,2],"m":"lda","oa":535,"o":"tune_hold_kind"},{"a":63672,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":63674,"t":"code","b":[208,12],"m":"bne","oa":63688,"o":"b_F8C8"},{"a":63676,"t":"code","b":[32,23,52],"m":"jsr","oa":13335,"o":"sound_busy"},{"a":63679,"t":"code","b":[208,10],"m":"bne","oa":63691,"o":"b_F8CB"},{"a":63681,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":63683,"t":"code","b":[141,22,2],"m":"sta","oa":534,"o":"tune_hold"},{"a":63686,"t":"code","b":[240,3],"m":"beq","oa":63691,"o":"b_F8CB"},{"a":63688,"l":"b_F8C8","t":"code","b":[206,22,2],"m":"dec","oa":534,"o":"tune_hold","x":[63674]},{"a":63691,"l":"b_F8CB","t":"code","b":[162,10],"m":"ldx","o":"#$0A","x":[63667,63679,63686]},{"a":63693,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":63695,"l":"b_F8CF","t":"code","b":[157,5,208],"m":"sta","o":"vic_sprite2_y,x","x":[63700]},{"a":63698,"t":"code","b":[202],"m":"dex"},{"a":63699,"t":"code","b":[202],"m":"dex"},{"a":63700,"t":"code","b":[16,249],"m":"bpl","oa":63695,"o":"b_F8CF"},{"a":63702,"t":"code","b":[173,254,255],"m":"lda","oa":65534,"o":"irq_vector"},{"a":63705,"t":"code","b":[201,238],"m":"cmp","o":"#$EE"},{"a":63707,"t":"code","b":[208,17],"m":"bne","oa":63726,"o":"b_F8EE"},{"a":63709,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":63711,"t":"code","b":[141,254,255],"m":"sta","oa":65534,"o":"irq_vector"},{"a":63714,"t":"code","b":[169,247],"m":"lda","o":"#$F7"},{"a":63716,"t":"code","b":[141,255,255],"m":"sta","oa":65535,"o":"$FFFF"},{"a":63719,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":63721,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"mux_next"},{"a":63723,"t":"code","b":[238,18,208],"m":"inc","o":"vic_raster"},{"a":63726,"l":"b_F8EE","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[63707]},{"a":63728,"t":"code","b":[141,250,255],"m":"sta","oa":65530,"o":"nmi_vector"},{"a":63731,"t":"code","b":[169,249],"m":"lda","o":"#$F9"},{"a":63733,"t":"code","b":[141,251,255],"m":"sta","oa":65531,"o":"$FFFB"},{"a":63736,"t":"code","b":[173,9,2],"m":"lda","oa":521,"o":"drum_mode"},{"a":63739,"t":"code","b":[208,3],"m":"bne","oa":63744,"o":"b_F900"},{"a":63741,"t":"code","b":[32,137,248],"m":"jsr","oa":63625,"o":"sound_tick"},{"a":63744,"l":"b_F900","t":"code","b":[76,96,248],"m":"jmp","oa":63584,"o":"j_F860","x":[63739]},{"a":63747,"l":"nmi_frame_end","c":"NMI handler while the vector holds $F903 (late in the frame). If CIA 2's serial-port flag is set ($F90B, never run in the simulator): reads $DD0C, sets timer A to 2, masks CIA 2's interrupts, starts timer A with the serial port as output ($DD0E = $51), waits, writes the byte back to $DD0C, SEI and JMP $0107 (the stack page, where the fast loader ran); what that path is for is not known. Otherwise: NMI vector back to nmi_frame_a ($F855), timer B high byte 9, started one-shot ($DD0F = $19), $F958 = 0.","t":"code","b":[72],"m":"pha"},{"a":63748,"t":"code","b":[173,13,221],"m":"lda","o":"cia2_interrupt"},{"a":63751,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":63753,"t":"code","b":[240,42],"m":"beq","oa":63797,"o":"b_F935"},{"a":63755,"l":"j_F90B","t":"code","b":[173,12,221],"m":"lda","o":"cia2_serial","x":[63581]},{"a":63758,"t":"code","b":[72],"m":"pha"},{"a":63759,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":63761,"t":"code","b":[141,4,221],"m":"sta","o":"cia2_timer_a_lo"},{"a":63764,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":63766,"t":"code","b":[141,5,221],"m":"sta","o":"cia2_timer_a_hi"},{"a":63769,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":63771,"t":"code","b":[141,13,221],"m":"sta","o":"cia2_interrupt"},{"a":63774,"t":"code","b":[169,81],"m":"lda","o":"#$51"},{"a":63776,"t":"code","b":[141,14,221],"m":"sta","o":"cia2_control_a"},{"a":63779,"t":"code","b":[138],"m":"txa"},{"a":63780,"t":"code","b":[72],"m":"pha"},{"a":63781,"t":"code","b":[162,127],"m":"ldx","o":"#$7F"},{"a":63783,"l":"b_F927","t":"code","b":[202],"m":"dex","x":[63784]},{"a":63784,"t":"code","b":[16,253],"m":"bpl","oa":63783,"o":"b_F927"},{"a":63786,"t":"code","b":[104],"m":"pla"},{"a":63787,"t":"code","b":[170],"m":"tax"},{"a":63788,"t":"code","b":[104],"m":"pla"},{"a":63789,"t":"code","b":[141,12,221],"m":"sta","o":"cia2_serial"},{"a":63792,"t":"code","b":[120],"m":"sei"},{"a":63793,"t":"code","b":[104],"m":"pla"},{"a":63794,"t":"code","b":[76,7,1],"m":"jmp","oa":263,"o":"nmi_serial_target"},{"a":63797,"l":"b_F935","t":"code","b":[138],"m":"txa","x":[63753]},{"a":63798,"t":"code","b":[72],"m":"pha"},{"a":63799,"t":"code","b":[152],"m":"tya"},{"a":63800,"t":"code","b":[72],"m":"pha"},{"a":63801,"t":"code","b":[169,85],"m":"lda","o":"#$55"},{"a":63803,"t":"code","b":[141,250,255],"m":"sta","oa":65530,"o":"nmi_vector"},{"a":63806,"t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":63808,"t":"code","b":[141,251,255],"m":"sta","oa":65531,"o":"$FFFB"},{"a":63811,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":63813,"t":"code","b":[141,7,221],"m":"sta","o":"cia2_timer_b_hi"},{"a":63816,"t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":63818,"t":"code","b":[141,15,221],"m":"sta","o":"cia2_control_b"},{"a":63821,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":63823,"t":"code","b":[141,88,249],"m":"sta","oa":63832,"o":"nmi_phase"},{"a":63826,"t":"code","b":[104],"m":"pla"},{"a":63827,"t":"code","b":[168],"m":"tay"},{"a":63828,"t":"code","b":[104],"m":"pla"},{"a":63829,"t":"code","b":[170],"m":"tax"},{"a":63830,"t":"code","b":[104],"m":"pla"},{"a":63831,"t":"code","b":[64],"m":"rti"},{"a":63832,"l":"nmi_phase","c":"Which half of the nmi_frame_a pair comes next: 0 the first (reload timer, sound), 1 the second (tick). Cleared by nmi_frame_end.","t":"byte","b":[0],"x":[63595,63616,63823]},{"a":63833,"l":"drum_85_delays","c":"Delay counts for drum_85 ($B290), one per outer step (Y = 5-0): $23 $14 $0C $09 $06 $03.","t":"byte","b":[35,20,12,9,6,3],"x":[45724]},{"a":63839,"l":"mux_first_six","c":"Places the first virtual sprites of the frame, called from irq_frame_top: from sorted entry $04 downward, each slot's colour, shape, X and Y go to hardware sprite 2 + $08 ($08 counting 5 to 0, position registers from mux_sprite_offsets $FC7B). After six, or if none remain, it sets the raster for the next slot's Y - 14 (if below $F0) and leaves the chain on irq_mux; when the list ends it sets raster $F7 and the vector to irq_frame_bottom.","t":"code","b":[164,4],"m":"ldy","oa":4,"o":"mux_next","x":[63361,63883]},{"a":63841,"t":"code","b":[190,9,148],"m":"ldx","oa":37897,"o":"mux_order,y"},{"a":63844,"t":"code","b":[189,33,148],"m":"lda","oa":37921,"o":"mux_y,x"},{"a":63847,"t":"code","b":[133,9],"m":"sta","oa":9,"o":"mux_obj_y"},{"a":63849,"t":"code","b":[164,8],"m":"ldy","oa":8,"o":"mux_sprite"},{"a":63851,"t":"code","b":[189,25,248],"m":"lda","oa":63513,"o":"slot_colours,x"},{"a":63854,"t":"code","b":[153,41,208],"m":"sta","o":"vic_sprite2_colour,y"},{"a":63857,"t":"code","b":[189,37,248],"m":"lda","oa":63525,"o":"slot_shapes,x"},{"a":63860,"t":"code","b":[153,250,195],"m":"sta","oa":50170,"o":"f_C3FA,y"},{"a":63862,"t":"note","l":"mux_first_ptr_page","c":"Operand high byte of mux_first_six's STA $C3FA,Y: the page of the sprite pointers ($C3 for the screen at $C000). Main_entry stores $C3 here after the intro, which had pointed it at the bitmap bank's $63F8.","note":"inside the item at $F974","x":[2257,61570]},{"a":63863,"t":"code","b":[189,57,148],"m":"lda","oa":37945,"o":"mux_x,x"},{"a":63866,"t":"code","b":[190,123,252],"m":"ldx","oa":64635,"o":"mux_sprite_offsets,y"},{"a":63869,"t":"code","b":[157,0,208],"m":"sta","o":"vic_sprite0_x,x"},{"a":63872,"t":"code","b":[165,9],"m":"lda","oa":9,"o":"mux_obj_y"},{"a":63874,"t":"code","b":[157,1,208],"m":"sta","o":"vic_sprite0_y,x"},{"a":63877,"t":"code","b":[198,4],"m":"dec","oa":4,"o":"mux_next"},{"a":63879,"t":"code","b":[48,27],"m":"bmi","oa":63908,"o":"b_F9A4"},{"a":63881,"t":"code","b":[198,8],"m":"dec","oa":8,"o":"mux_sprite"},{"a":63883,"t":"code","b":[16,210],"m":"bpl","oa":63839,"o":"mux_first_six"},{"a":63885,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":63887,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"mux_sprite"},{"a":63889,"t":"code","b":[164,4],"m":"ldy","oa":4,"o":"mux_next"},{"a":63891,"t":"code","b":[190,9,148],"m":"ldx","oa":37897,"o":"mux_order,y"},{"a":63894,"t":"code","b":[189,33,148],"m":"lda","oa":37921,"o":"mux_y,x"},{"a":63897,"t":"code","b":[56],"m":"sec"},{"a":63898,"t":"code","b":[233,14],"m":"sbc","o":"#$0E"},{"a":63900,"t":"code","b":[201,240],"m":"cmp","o":"#$F0"},{"a":63902,"t":"code","b":[176,4],"m":"bcs","oa":63908,"o":"b_F9A4"},{"a":63904,"t":"code","b":[141,18,208],"m":"sta","o":"vic_raster"},{"a":63907,"t":"code","b":[96],"m":"rts"},{"a":63908,"l":"b_F9A4","t":"code","b":[169,5],"m":"lda","o":"#$05","x":[63879,63902]},{"a":63910,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"mux_sprite"},{"a":63912,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":63914,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"mux_next"},{"a":63916,"t":"code","b":[169,247],"m":"lda","o":"#$F7"},{"a":63918,"t":"code","b":[141,18,208],"m":"sta","o":"vic_raster"},{"a":63921,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":63923,"t":"code","b":[141,254,255],"m":"sta","oa":65534,"o":"irq_vector"},{"a":63926,"t":"code","b":[169,247],"m":"lda","o":"#$F7"},{"a":63928,"t":"code","b":[141,255,255],"m":"sta","oa":65535,"o":"$FFFF"},{"a":63931,"t":"code","b":[96],"m":"rts"},{"a":63932,"l":"unused_checksum","c":"Unused code (nothing calls it, never run in the simulator): LDY #0, adds the 32 bytes at a self-modified pointer (operand $F9C3-$F9C4, starting $9500) into $0454, moves the pointer on 32 bytes; when it reaches $A600, compares the sum with $09: equal, restarts at $9500 with the sum cleared; different, sets $0944 = 1 (the flag that $A2CB tests and answers with $A523). Then JMP $F9FD to itself, and the stray bytes $8D $FF $0F $2C $00 $DE. A checksum of $9500-$A5FF left out of this build.","t":"byte","b":[160,0,173,84,4,24,121,0]},{"a":63940,"t":"byte","b":[149,200,192,32,144,248,141,84]},{"a":63948,"t":"byte","b":[4,173,195,249,24,105,32,141]},{"a":63956,"t":"byte","b":[195,249,173,196,249,105,0,141]},{"a":63964,"t":"byte","b":[196,249,201,166,144,20,173,84]},{"a":63972,"t":"byte","b":[4,201,9,208,14,169,149,141]},{"a":63980,"t":"byte","b":[196,249,169,0,141,195,249,141]},{"a":63988,"t":"byte","b":[84,4,96,169,1,141,68,9]},{"a":63996,"t":"byte","b":[96,76,253,249,141,255,15,44]},{"a":64004,"t":"byte","b":[0,222]},{"a":64006,"l":"mux_sort","c":"Insertion sort of the virtual sprites' order list $9415 (12 entries) by Y ($942D), largest first, so the multiplexer can walk it from the end (topmost sprite) upward; $0B counts the moves. Called from irq_frame_bottom and mux_init.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[63299,63504]},{"a":64008,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"sort_moves"},{"a":64010,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":64012,"l":"b_FA0C","t":"code","b":[188,20,148],"m":"ldy","oa":37908,"o":"obj_order_m1,x","x":[64075]},{"a":64015,"t":"code","b":[185,45,148],"m":"lda","oa":37933,"o":"obj_y,y"},{"a":64018,"t":"code","b":[188,21,148],"m":"ldy","oa":37909,"o":"obj_order,x"},{"a":64021,"t":"code","b":[217,45,148],"m":"cmp","oa":37933,"o":"obj_y,y"},{"a":64024,"t":"code","b":[176,46],"m":"bcs","oa":64072,"o":"b_FA48"},{"a":64026,"t":"code","b":[185,45,148],"m":"lda","oa":37933,"o":"obj_y,y"},{"a":64029,"t":"code","b":[132,6],"m":"sty","oa":6,"o":"sort_obj"},{"a":64031,"t":"code","b":[134,7],"m":"stx","oa":7,"o":"sort_from"},{"a":64033,"t":"code","b":[202],"m":"dex"},{"a":64034,"l":"b_FA22","t":"code","b":[202],"m":"dex","x":[64045]},{"a":64035,"t":"code","b":[48,10],"m":"bmi","oa":64047,"o":"b_FA2F"},{"a":64037,"t":"code","b":[188,21,148],"m":"ldy","oa":37909,"o":"obj_order,x"},{"a":64040,"t":"code","b":[217,45,148],"m":"cmp","oa":37933,"o":"obj_y,y"},{"a":64043,"t":"code","b":[240,2],"m":"beq","oa":64047,"o":"b_FA2F"},{"a":64045,"t":"code","b":[176,243],"m":"bcs","oa":64034,"o":"b_FA22"},{"a":64047,"l":"b_FA2F","t":"code","b":[232],"m":"inx","x":[64035,64043]},{"a":64048,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"sort_moves"},{"a":64050,"t":"code","b":[134,12],"m":"stx","oa":12,"o":"sort_to"},{"a":64052,"t":"code","b":[166,7],"m":"ldx","oa":7,"o":"sort_from"},{"a":64054,"l":"b_FA36","t":"code","b":[189,20,148],"m":"lda","oa":37908,"o":"obj_order_m1,x","x":[64063]},{"a":64057,"t":"code","b":[157,21,148],"m":"sta","oa":37909,"o":"obj_order,x"},{"a":64060,"t":"code","b":[202],"m":"dex"},{"a":64061,"t":"code","b":[228,12],"m":"cpx","oa":12,"o":"sort_to"},{"a":64063,"t":"code","b":[208,245],"m":"bne","oa":64054,"o":"b_FA36"},{"a":64065,"t":"code","b":[165,6],"m":"lda","oa":6,"o":"sort_obj"},{"a":64067,"t":"code","b":[157,21,148],"m":"sta","oa":37909,"o":"obj_order,x"},{"a":64070,"t":"code","b":[166,7],"m":"ldx","oa":7,"o":"sort_from"},{"a":64072,"l":"b_FA48","t":"code","b":[232],"m":"inx","x":[64024]},{"a":64073,"t":"code","b":[224,12],"m":"cpx","o":"#$0C"},{"a":64075,"t":"code","b":[208,191],"m":"bne","oa":64012,"o":"b_FA0C"},{"a":64077,"t":"code","b":[96],"m":"rts"},{"a":64078,"l":"draw_lives","c":"Shows both players' lives ($0936, $0937, BCD) in the panel at $C1B5-$C1B6 (row 10) and $C31D-$C31E (row 19): a tens digit of 0 or 9 shows as a blank ($1C), and $99 (no player) as two blanks. Called from new_game_init, draw_side_panel, check_extra_life and $9C0D, $A894.","t":"code","b":[173,54,9],"m":"lda","oa":2358,"o":"lives_p1","x":[39949,43156,61944,62267,64249]},{"a":64081,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":64083,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64084,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64085,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64086,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64087,"t":"code","b":[240,4],"m":"beq","oa":64093,"o":"b_FA5D"},{"a":64089,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":64091,"t":"code","b":[208,3],"m":"bne","oa":64096,"o":"b_FA60"},{"a":64093,"l":"b_FA5D","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[64087]},{"a":64095,"t":"code","b":[44,105,48],"m":"bit","oa":12393,"o":"a_3069"},{"a":64098,"t":"code","b":[141,181,193],"m":"sta","oa":49589,"o":"p1_lives_digits"},{"a":64101,"t":"code","b":[173,54,9],"m":"lda","oa":2358,"o":"lives_p1"},{"a":64104,"t":"code","b":[201,153],"m":"cmp","o":"#$99"},{"a":64106,"t":"code","b":[240,5],"m":"beq","oa":64113,"o":"b_FA71"},{"a":64108,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":64110,"t":"code","b":[76,116,250],"m":"jmp","oa":64116,"o":"j_FA74"},{"a":64113,"l":"b_FA71","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[64106]},{"a":64115,"t":"code","b":[44,105,48],"m":"bit","oa":12393,"o":"a_3069"},{"a":64118,"t":"code","b":[141,182,193],"m":"sta","oa":49590,"o":"a_C1B6"},{"a":64121,"t":"code","b":[173,55,9],"m":"lda","oa":2359,"o":"lives_p2"},{"a":64124,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":64126,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64127,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64128,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64129,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64130,"t":"code","b":[240,4],"m":"beq","oa":64136,"o":"b_FA88"},{"a":64132,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":64134,"t":"code","b":[208,3],"m":"bne","oa":64139,"o":"b_FA8B"},{"a":64136,"l":"b_FA88","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[64130]},{"a":64138,"t":"code","b":[44,105,48],"m":"bit","oa":12393,"o":"a_3069"},{"a":64141,"t":"code","b":[141,29,195],"m":"sta","oa":49949,"o":"p2_lives_digits"},{"a":64144,"t":"code","b":[173,55,9],"m":"lda","oa":2359,"o":"lives_p2"},{"a":64147,"t":"code","b":[201,153],"m":"cmp","o":"#$99"},{"a":64149,"t":"code","b":[240,5],"m":"beq","oa":64156,"o":"b_FA9C"},{"a":64151,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":64153,"t":"code","b":[76,159,250],"m":"jmp","oa":64159,"o":"j_FA9F"},{"a":64156,"l":"b_FA9C","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[64149]},{"a":64158,"t":"code","b":[44,105,48],"m":"bit","oa":12393,"o":"a_3069"},{"a":64161,"t":"code","b":[141,30,195],"m":"sta","oa":49950,"o":"a_C31E"},{"a":64164,"t":"code","b":[96],"m":"rts"},{"a":64165,"l":"check_extra_life","c":"Extra life: compares the current player's score ($0927-$0929 or $092A-$092C) with the threshold ($092D-$092F or $0930-$0932, BCD); when it is reached, adds $20 to the threshold's middle byte (another 20000 on the screen), adds 1 to the player's lives (BCD; not stored if the result would be $88 or more), sets $0216 = $28 and $0217 = 2, starts tune $2F ($262B) and redraws the lives.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[64254]},{"a":64167,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":64169,"t":"code","b":[173,56,9],"m":"lda","oa":2360,"o":"current_player"},{"a":64172,"t":"code","b":[240,2],"m":"beq","oa":64176,"o":"b_FAB0"},{"a":64174,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":64176,"l":"b_FAB0","t":"code","b":[189,39,9],"m":"lda","oa":2343,"o":"score_p1,x","x":[64172,64188]},{"a":64179,"t":"code","b":[221,45,9],"m":"cmp","oa":2349,"o":"extra_life_p1,x"},{"a":64182,"t":"code","b":[144,68],"m":"bcc","oa":64252,"o":"b_FAFC"},{"a":64184,"t":"code","b":[208,4],"m":"bne","oa":64190,"o":"b_FABE"},{"a":64186,"t":"code","b":[202],"m":"dex"},{"a":64187,"t":"code","b":[136],"m":"dey"},{"a":64188,"t":"code","b":[16,242],"m":"bpl","oa":64176,"o":"b_FAB0"},{"a":64190,"l":"b_FABE","t":"code","b":[248],"m":"sed","x":[64184]},{"a":64191,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":64193,"t":"code","b":[173,56,9],"m":"lda","oa":2360,"o":"current_player"},{"a":64196,"t":"code","b":[240,2],"m":"beq","oa":64200,"o":"b_FAC8"},{"a":64198,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":64200,"l":"b_FAC8","t":"code","b":[169,32],"m":"lda","o":"#$20","x":[64196]},{"a":64202,"t":"code","b":[24],"m":"clc"},{"a":64203,"t":"code","b":[125,46,9],"m":"adc","oa":2350,"o":"a_092E,x"},{"a":64206,"t":"code","b":[157,46,9],"m":"sta","oa":2350,"o":"a_092E,x"},{"a":64209,"t":"code","b":[189,47,9],"m":"lda","oa":2351,"o":"a_092F,x"},{"a":64212,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":64214,"t":"code","b":[157,47,9],"m":"sta","oa":2351,"o":"a_092F,x"},{"a":64217,"t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":64220,"t":"code","b":[189,54,9],"m":"lda","oa":2358,"o":"lives_p1,x"},{"a":64223,"t":"code","b":[24],"m":"clc"},{"a":64224,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":64226,"t":"code","b":[201,136],"m":"cmp","o":"#$88"},{"a":64228,"t":"code","b":[176,22],"m":"bcs","oa":64252,"o":"b_FAFC"},{"a":64230,"t":"code","b":[157,54,9],"m":"sta","oa":2358,"o":"lives_p1,x"},{"a":64233,"t":"code","b":[216],"m":"cld"},{"a":64234,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":64236,"t":"code","b":[141,22,2],"m":"sta","oa":534,"o":"tune_hold"},{"a":64239,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":64241,"t":"code","b":[141,23,2],"m":"sta","oa":535,"o":"tune_hold_kind"},{"a":64244,"t":"code","b":[160,47],"m":"ldy","o":"#$2F"},{"a":64246,"t":"code","b":[32,43,38],"m":"jsr","oa":9771,"o":"music_start_tune"},{"a":64249,"t":"code","b":[32,78,250],"m":"jsr","oa":64078,"o":"draw_lives"},{"a":64252,"l":"b_FAFC","t":"code","b":[216],"m":"cld","x":[64182,64228]},{"a":64253,"t":"code","b":[96],"m":"rts"},{"a":64254,"l":"update_scores_display","c":"Checks for an extra life, then copies the current player's score into the high score $0941-$0943 if it is higher, and prints the high score ($C0BF, row 4), player 1's score ($C187, row 9) and player 2's ($C2EF, row 18) as six digits each (the panel adds a fixed last 0). Every 8 frames ($0201 bit 3) it flips the colour of the current player's marker beside the panel ($D8EF for player 1, $DA57 for player 2; the other set to $0E). Called from the main loop ($95B7) and $9560, $962E, draw_side_panel.","t":"code","b":[32,165,250],"m":"jsr","oa":64165,"o":"check_extra_life","x":[38240,38327,38446,62273]},{"a":64257,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":64259,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":64261,"t":"code","b":[173,56,9],"m":"lda","oa":2360,"o":"current_player"},{"a":64264,"t":"code","b":[240,5],"m":"beq","oa":64271,"o":"b_FB0F"},{"a":64266,"t":"code","b":[152],"m":"tya"},{"a":64267,"t":"code","b":[24],"m":"clc"},{"a":64268,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":64270,"t":"code","b":[168],"m":"tay"},{"a":64271,"l":"b_FB0F","t":"code","b":[140,16,2],"m":"sty","oa":528,"o":"index_save","x":[64264]},{"a":64274,"l":"b_FB12","t":"code","b":[185,39,9],"m":"lda","oa":2343,"o":"score_p1,y","x":[64286]},{"a":64277,"t":"code","b":[221,65,9],"m":"cmp","oa":2369,"o":"high_score,x"},{"a":64280,"t":"code","b":[144,21],"m":"bcc","oa":64303,"o":"b_FB2F"},{"a":64282,"t":"code","b":[208,4],"m":"bne","oa":64288,"o":"b_FB20"},{"a":64284,"t":"code","b":[202],"m":"dex"},{"a":64285,"t":"code","b":[136],"m":"dey"},{"a":64286,"t":"code","b":[16,242],"m":"bpl","oa":64274,"o":"b_FB12"},{"a":64288,"l":"b_FB20","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[64282]},{"a":64290,"t":"code","b":[172,16,2],"m":"ldy","oa":528,"o":"index_save"},{"a":64293,"l":"b_FB25","t":"code","b":[185,39,9],"m":"lda","oa":2343,"o":"score_p1,y","x":[64301]},{"a":64296,"t":"code","b":[157,65,9],"m":"sta","oa":2369,"o":"high_score,x"},{"a":64299,"t":"code","b":[136],"m":"dey"},{"a":64300,"t":"code","b":[202],"m":"dex"},{"a":64301,"t":"code","b":[16,246],"m":"bpl","oa":64293,"o":"b_FB25"},{"a":64303,"l":"b_FB2F","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[64280]},{"a":64305,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":64307,"l":"b_FB33","t":"code","b":[189,65,9],"m":"lda","oa":2369,"o":"high_score,x","x":[64333]},{"a":64310,"t":"code","b":[72],"m":"pha"},{"a":64311,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":64313,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64314,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64315,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64316,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64317,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":64319,"t":"code","b":[153,191,192],"m":"sta","oa":49343,"o":"hiscore_digits,y"},{"a":64322,"t":"code","b":[200],"m":"iny"},{"a":64323,"t":"code","b":[104],"m":"pla"},{"a":64324,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":64326,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":64328,"t":"code","b":[153,191,192],"m":"sta","oa":49343,"o":"hiscore_digits,y"},{"a":64331,"t":"code","b":[200],"m":"iny"},{"a":64332,"t":"code","b":[202],"m":"dex"},{"a":64333,"t":"code","b":[16,228],"m":"bpl","oa":64307,"o":"b_FB33"},{"a":64335,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":64337,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":64339,"l":"b_FB53","t":"code","b":[189,39,9],"m":"lda","oa":2343,"o":"score_p1,x","x":[64365]},{"a":64342,"t":"code","b":[72],"m":"pha"},{"a":64343,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":64345,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64346,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64347,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64348,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64349,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":64351,"t":"code","b":[153,135,193],"m":"sta","oa":49543,"o":"p1_score_digits,y"},{"a":64354,"t":"code","b":[200],"m":"iny"},{"a":64355,"t":"code","b":[104],"m":"pla"},{"a":64356,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":64358,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":64360,"t":"code","b":[153,135,193],"m":"sta","oa":49543,"o":"p1_score_digits,y"},{"a":64363,"t":"code","b":[200],"m":"iny"},{"a":64364,"t":"code","b":[202],"m":"dex"},{"a":64365,"t":"code","b":[16,228],"m":"bpl","oa":64339,"o":"b_FB53"},{"a":64367,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":64369,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":64371,"l":"b_FB73","t":"code","b":[189,42,9],"m":"lda","oa":2346,"o":"score_p2,x","x":[64397]},{"a":64374,"t":"code","b":[72],"m":"pha"},{"a":64375,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":64377,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64378,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64379,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64380,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":64381,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":64383,"t":"code","b":[153,239,194],"m":"sta","oa":49903,"o":"p2_score_digits,y"},{"a":64386,"t":"code","b":[200],"m":"iny"},{"a":64387,"t":"code","b":[104],"m":"pla"},{"a":64388,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":64390,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":64392,"t":"code","b":[153,239,194],"m":"sta","oa":49903,"o":"p2_score_digits,y"},{"a":64395,"t":"code","b":[200],"m":"iny"},{"a":64396,"t":"code","b":[202],"m":"dex"},{"a":64397,"t":"code","b":[16,228],"m":"bpl","oa":64371,"o":"b_FB73"},{"a":64399,"t":"code","b":[173,1,2],"m":"lda","oa":513,"o":"frame_counter"},{"a":64402,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":64404,"t":"code","b":[205,15,2],"m":"cmp","oa":527,"o":"blink_phase"},{"a":64407,"t":"code","b":[240,21],"m":"beq","oa":64430,"o":"r_FBAE"},{"a":64409,"t":"code","b":[141,15,2],"m":"sta","oa":527,"o":"blink_phase"},{"a":64412,"t":"code","b":[173,56,9],"m":"lda","oa":2360,"o":"current_player"},{"a":64415,"t":"code","b":[208,14],"m":"bne","oa":64431,"o":"b_FBAF"},{"a":64417,"t":"code","b":[173,239,216],"m":"lda","o":"$D8EF"},{"a":64420,"t":"code","b":[73,7],"m":"eor","o":"#$07"},{"a":64422,"t":"code","b":[141,239,216],"m":"sta","o":"$D8EF"},{"a":64425,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":64427,"t":"code","b":[141,87,218],"m":"sta","o":"$DA57"},{"a":64430,"l":"r_FBAE","t":"code","b":[96],"m":"rts","x":[64407]},{"a":64431,"l":"b_FBAF","t":"code","b":[173,87,218],"m":"lda","o":"$DA57","x":[64415]},{"a":64434,"t":"code","b":[73,7],"m":"eor","o":"#$07"},{"a":64436,"t":"code","b":[141,87,218],"m":"sta","o":"$DA57"},{"a":64439,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":64441,"t":"code","b":[141,239,216],"m":"sta","o":"$D8EF"},{"a":64444,"t":"code","b":[96],"m":"rts"},{"a":64445,"l":"add_score","c":"Adds the 3-byte BCD amount in $0933-$0935 to the current player's score ($0927-$0929, or $092A-$092C for player 2) in decimal mode and clears the amount. Called from brick_hit ($B28A) and $9F4A, $9F5B, $A9E0.","t":"code","b":[172,56,9],"m":"ldy","oa":2360,"o":"current_player","x":[40778,40795,43488,45706]},{"a":64448,"t":"code","b":[240,2],"m":"beq","oa":64452,"o":"b_FBC4"},{"a":64450,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":64452,"l":"b_FBC4","t":"code","b":[248],"m":"sed","x":[64448]},{"a":64453,"t":"code","b":[173,51,9],"m":"lda","oa":2355,"o":"points_pending"},{"a":64456,"t":"code","b":[24],"m":"clc"},{"a":64457,"t":"code","b":[121,39,9],"m":"adc","oa":2343,"o":"score_p1,y"},{"a":64460,"t":"code","b":[153,39,9],"m":"sta","oa":2343,"o":"score_p1,y"},{"a":64463,"t":"code","b":[173,52,9],"m":"lda","oa":2356,"o":"a_0934"},{"a":64466,"t":"code","b":[121,40,9],"m":"adc","oa":2344,"o":"f_0928,y"},{"a":64469,"t":"code","b":[153,40,9],"m":"sta","oa":2344,"o":"f_0928,y"},{"a":64472,"t":"code","b":[173,53,9],"m":"lda","oa":2357,"o":"a_0935"},{"a":64475,"t":"code","b":[121,41,9],"m":"adc","oa":2345,"o":"f_0929,y"},{"a":64478,"t":"code","b":[153,41,9],"m":"sta","oa":2345,"o":"f_0929,y"},{"a":64481,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":64483,"t":"code","b":[141,51,9],"m":"sta","oa":2355,"o":"points_pending"},{"a":64486,"t":"code","b":[141,52,9],"m":"sta","oa":2356,"o":"a_0934"},{"a":64489,"t":"code","b":[141,53,9],"m":"sta","oa":2357,"o":"a_0935"},{"a":64492,"t":"code","b":[216],"m":"cld"},{"a":64493,"t":"code","b":[96],"m":"rts"},{"a":64494,"l":"irq_mux","c":"Raster interrupt of the sprite multiplexer, chained between irq_frame_top and irq_frame_bottom. For each next slot in sorted order whose Y - 14 the beam has reached: colour, shape, X and Y onto the next hardware sprite (2-7 in turn). When the next slot's line is still ahead it sets the raster interrupt there (or, if the line has already passed, one line on); when the list ends or the line is $F0 or more, the chain goes on to irq_frame_bottom at line $F7.","t":"code","b":[72],"m":"pha"},{"a":64495,"t":"code","b":[152],"m":"tya"},{"a":64496,"t":"code","b":[72],"m":"pha"},{"a":64497,"t":"code","b":[138],"m":"txa"},{"a":64498,"t":"code","b":[72],"m":"pha"},{"a":64499,"t":"code","b":[216],"m":"cld"},{"a":64500,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":64502,"t":"code","b":[141,25,208],"m":"sta","o":"vic_irq_status"},{"a":64505,"l":"b_FBF9","t":"code","b":[164,4],"m":"ldy","oa":4,"o":"mux_next","x":[64556,64562]},{"a":64507,"t":"code","b":[190,9,148],"m":"ldx","oa":37897,"o":"mux_order,y"},{"a":64510,"t":"code","b":[189,33,148],"m":"lda","oa":37921,"o":"mux_y,x"},{"a":64513,"t":"code","b":[133,9],"m":"sta","oa":9,"o":"mux_obj_y"},{"a":64515,"t":"code","b":[233,14],"m":"sbc","o":"#$0E"},{"a":64517,"t":"code","b":[205,18,208],"m":"cmp","o":"vic_raster"},{"a":64520,"t":"code","b":[176,83],"m":"bcs","oa":64605,"o":"b_FC5D"},{"a":64522,"t":"code","b":[164,8],"m":"ldy","oa":8,"o":"mux_sprite"},{"a":64524,"t":"code","b":[189,25,248],"m":"lda","oa":63513,"o":"slot_colours,x"},{"a":64527,"t":"code","b":[153,41,208],"m":"sta","o":"vic_sprite2_colour,y"},{"a":64530,"t":"code","b":[189,37,248],"m":"lda","oa":63525,"o":"slot_shapes,x"},{"a":64533,"t":"code","b":[153,250,195],"m":"sta","oa":50170,"o":"f_C3FA,y"},{"a":64535,"t":"note","l":"mux_ptr_page","c":"Operand high byte of irq_mux's STA $C3FA,Y: the page of the sprite pointers, $C3; main_entry rewrites it with $C3 after the intro.","note":"inside the item at $FC15","x":[2254,61567]},{"a":64536,"t":"code","b":[189,57,148],"m":"lda","oa":37945,"o":"mux_x,x"},{"a":64539,"t":"code","b":[190,123,252],"m":"ldx","oa":64635,"o":"mux_sprite_offsets,y"},{"a":64542,"t":"code","b":[157,0,208],"m":"sta","o":"vic_sprite0_x,x"},{"a":64545,"t":"code","b":[165,9],"m":"lda","oa":9,"o":"mux_obj_y"},{"a":64547,"t":"code","b":[157,1,208],"m":"sta","o":"vic_sprite0_y,x"},{"a":64550,"t":"code","b":[198,4],"m":"dec","oa":4,"o":"mux_next"},{"a":64552,"t":"code","b":[48,18],"m":"bmi","oa":64572,"o":"irq_mux_end"},{"a":64554,"t":"code","b":[198,8],"m":"dec","oa":8,"o":"mux_sprite"},{"a":64556,"t":"code","b":[16,203],"m":"bpl","oa":64505,"o":"b_FBF9"},{"a":64558,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":64560,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"mux_sprite"},{"a":64562,"t":"code","b":[76,249,251],"m":"jmp","oa":64505,"o":"b_FBF9"},{"a":64565,"l":"unused_fragment_fc35","c":"Unused: 7 bytes of code that nothing reaches (DEC $04 / BMI +3 / JMP $FBF9), the same as irq_mux's loop end; left over from editing.","t":"byte","b":[198,4,48,3,76,249,251]},{"a":64572,"l":"irq_mux_end","c":"irq_mux's ending: the sprite list is done (or the next line is $F0 or more): counter $08 = 5, $04 = $0B, and unless the vector is already $F720 sets raster line $F7 and the vector to irq_frame_bottom. Then the shared exit (pull registers, RTI), and at $FC72 the case where the next sprite's line has already passed: $D012 + 1 so the interrupt comes again on the next line.","t":"code","b":[169,5],"m":"lda","o":"#$05","x":[64552,64615]},{"a":64574,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"mux_sprite"},{"a":64576,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":64578,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"mux_next"},{"a":64580,"t":"code","b":[173,254,255],"m":"lda","oa":65534,"o":"irq_vector"},{"a":64583,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":64585,"t":"code","b":[240,33],"m":"beq","oa":64620,"o":"b_FC6C"},{"a":64587,"t":"code","b":[169,247],"m":"lda","o":"#$F7"},{"a":64589,"t":"code","b":[141,18,208],"m":"sta","o":"vic_raster"},{"a":64592,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":64594,"t":"code","b":[141,254,255],"m":"sta","oa":65534,"o":"irq_vector"},{"a":64597,"t":"code","b":[169,247],"m":"lda","o":"#$F7"},{"a":64599,"t":"code","b":[141,255,255],"m":"sta","oa":65535,"o":"$FFFF"},{"a":64602,"t":"code","b":[76,108,252],"m":"jmp","oa":64620,"o":"b_FC6C"},{"a":64605,"l":"b_FC5D","t":"code","b":[24],"m":"clc","x":[64520]},{"a":64606,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":64608,"t":"code","b":[205,18,208],"m":"cmp","o":"vic_raster"},{"a":64611,"t":"code","b":[144,13],"m":"bcc","oa":64626,"o":"b_FC72"},{"a":64613,"t":"code","b":[201,240],"m":"cmp","o":"#$F0"},{"a":64615,"t":"code","b":[176,211],"m":"bcs","oa":64572,"o":"irq_mux_end"},{"a":64617,"t":"code","b":[141,18,208],"m":"sta","o":"vic_raster"},{"a":64620,"l":"b_FC6C","t":"code","b":[104],"m":"pla","x":[64585,64602]},{"a":64621,"t":"code","b":[170],"m":"tax"},{"a":64622,"t":"code","b":[104],"m":"pla"},{"a":64623,"t":"code","b":[168],"m":"tay"},{"a":64624,"t":"code","b":[104],"m":"pla"},{"a":64625,"t":"code","b":[64],"m":"rti"},{"a":64626,"l":"b_FC72","t":"code","b":[238,18,208],"m":"inc","o":"vic_raster","x":[64611]},{"a":64629,"t":"code","b":[104],"m":"pla"},{"a":64630,"t":"code","b":[170],"m":"tax"},{"a":64631,"t":"code","b":[104],"m":"pla"},{"a":64632,"t":"code","b":[168],"m":"tay"},{"a":64633,"t":"code","b":[104],"m":"pla"},{"a":64634,"t":"code","b":[64],"m":"rti"},{"a":64635,"l":"mux_sprite_offsets","c":"Offsets of the position registers of hardware sprites 2-7 from $D000: $04 $06 $08 $0A $0C $0E, indexed by the multiplexer's counter $08.","t":"byte","b":[4,6,8,10,12,14],"x":[63866,64539]},{"a":64641,"l":"unused_bit_masks_fc81","c":"Unused: 16 bytes nothing reads, the same clear-bit and set-bit masks as at $F7BD.","t":"byte","b":[254,253,251,247,239,223,191,127]},{"a":64649,"t":"byte","b":[1,2,4,8,16,32,64,128]},{"a":64657,"l":"bit_masks_fc91","c":"Eight bit masks $80 $40 $20 $10 $08 $04 $02 $01, read by $A4E0 and $A4FE.","t":"byte","b":[128,64,32,16,8,4,2,1],"x":[42208,42238]},{"a":64665,"l":"read_input_move_vaus","c":"Reads the chosen input device and moves the Vaus, unless $023D is set (then it returns at once). Called from the main loop ($958D), $9604 and the menu ($B5AC). The device routine (read_input_device) gives the fire state in A, stored in $0236 (1 = pressed), and for joystick, keyboard and mouse a step in X (positive = left) that is added to the Vaus centre $0206, held between 0 and 255; paddles set $0206 themselves (read_paddle_entry). Then place_vaus.","t":"code","b":[173,61,2],"m":"lda","oa":573,"o":"exiting","x":[38285,38404,46508]},{"a":64668,"t":"code","b":[240,35],"m":"beq","oa":64705,"o":"b_FCC1"},{"a":64670,"t":"code","b":[96],"m":"rts"},{"a":64671,"l":"read_input_device","c":"Jumps to the reader of the input device in $093F through an RTS: pushes the address from input_reader_hi/lo minus one. 0 Neos mouse ($FE43), 1 joystick ($FDA2), 2 keyboard ($FD7B), 3 paddles ($FCB3), the order of the menu's N J K P.","t":"code","b":[172,63,9],"m":"ldy","oa":2367,"o":"input_device","x":[64705]},{"a":64674,"t":"code","b":[185,175,252],"m":"lda","oa":64687,"o":"input_reader_hi,y"},{"a":64677,"t":"code","b":[72],"m":"pha"},{"a":64678,"t":"code","b":[185,171,252],"m":"lda","oa":64683,"o":"input_reader_lo,y"},{"a":64681,"t":"code","b":[72],"m":"pha"},{"a":64682,"t":"code","b":[96],"m":"rts"},{"a":64683,"l":"input_reader_lo","c":"Low bytes, minus one, of the input readers in device order: $42 $A1 $7A $B2 (mouse $FE43, joystick $FDA2, keyboard $FD7B, paddles $FCB3).","t":"byte","b":[66,161,122,178],"x":[64678]},{"a":64687,"l":"input_reader_hi","c":"High bytes of the input readers in device order: $FE $FD $FD $FC (read_input_device pushes these first).","t":"byte","b":[254,253,253,252],"x":[64674]},{"a":64691,"l":"read_paddle_entry","c":"Paddles (device 3): drops the return into read_input_move_vaus (PLA PLA), reads the paddle (read_paddle $FE09), stores fire in $0236 and the new Vaus centre in $0206 directly, then place_vaus, whose RTS returns to read_input_move_vaus's caller.","t":"code","b":[104],"m":"pla"},{"a":64692,"t":"code","b":[104],"m":"pla"},{"a":64693,"t":"code","b":[32,9,254],"m":"jsr","oa":65033,"o":"read_paddle"},{"a":64696,"t":"code","b":[141,54,2],"m":"sta","oa":566,"o":"fire_now"},{"a":64699,"t":"code","b":[142,6,2],"m":"stx","oa":518,"o":"vaus_x"},{"a":64702,"t":"code","b":[76,238,252],"m":"jmp","oa":64750,"o":"place_vaus"},{"a":64705,"l":"b_FCC1","t":"code","b":[32,159,252],"m":"jsr","oa":64671,"o":"read_input_device","x":[64668]},{"a":64708,"t":"code","b":[141,54,2],"m":"sta","oa":566,"o":"fire_now"},{"a":64711,"t":"code","b":[138],"m":"txa"},{"a":64712,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":64714,"t":"code","b":[16,14],"m":"bpl","oa":64730,"o":"b_FCDA"},{"a":64716,"t":"code","b":[56],"m":"sec"},{"a":64717,"t":"code","b":[109,6,2],"m":"adc","oa":518,"o":"vaus_x"},{"a":64720,"t":"code","b":[176,2],"m":"bcs","oa":64724,"o":"b_FCD4"},{"a":64722,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":64724,"l":"b_FCD4","t":"code","b":[141,6,2],"m":"sta","oa":518,"o":"vaus_x","x":[64720]},{"a":64727,"t":"code","b":[76,238,252],"m":"jmp","oa":64750,"o":"place_vaus"},{"a":64730,"l":"b_FCDA","t":"code","b":[56],"m":"sec","x":[64714]},{"a":64731,"t":"code","b":[109,6,2],"m":"adc","oa":518,"o":"vaus_x"},{"a":64734,"t":"code","b":[144,2],"m":"bcc","oa":64738,"o":"b_FCE2"},{"a":64736,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":64738,"l":"b_FCE2","t":"code","b":[141,6,2],"m":"sta","oa":518,"o":"vaus_x","x":[64734]},{"a":64741,"t":"code","b":[76,238,252],"m":"jmp","oa":64750,"o":"place_vaus"},{"a":64744,"l":"drum_84_delays","c":"Delay counts for drum_84 ($B500), one per outer step (Y = 5-0): $05 $1E $19 $14 $0F $0A.","t":"byte","b":[5,30,25,20,15,10],"x":[46348]},{"a":64750,"l":"place_vaus","c":"Keeps the Vaus between the walls and sets its sprites: with centre $0206 and half-width $020A, the left edge is held at $20 or more and the right edge below $DB (reaching it sets $023E = 1), $0206 is corrected, and the Vaus's two sprite X positions are written to $9445 (left) and $9446 (left + 2 x half-width). Also stores zero through the self-modified STX at $FCF6 (to $150C at first; this routine then points it at $1515), an address nothing reads. Called from read_input_move_vaus and $9530, $9B02.","t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x","x":[38192,39682,64702,64727,64741]},{"a":64753,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":64755,"t":"code","b":[142,11,2],"m":"stx","oa":523,"o":"vaus_overhang"},{"a":64758,"t":"code","b":[142,12,21],"m":"stx","oa":5388,"o":"a_150C"},{"a":64759,"t":"note","l":"place_vaus_stx_lo","c":"Operand low byte of place_vaus's STX at $FCF6: $0C in the image (STX $150C), set to $15 (STX $1515) by $FD52 and $FD71. Neither address is read anywhere; the dead code at $0960 also writes here.","note":"inside the item at $FCF6","x":[64850,64881]},{"a":64761,"t":"code","b":[56],"m":"sec"},{"a":64762,"t":"code","b":[237,10,2],"m":"sbc","oa":522,"o":"vaus_stretch"},{"a":64765,"t":"code","b":[144,4],"m":"bcc","oa":64771,"o":"b_FD03"},{"a":64767,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":64769,"t":"code","b":[176,13],"m":"bcs","oa":64784,"o":"b_FD10"},{"a":64771,"l":"b_FD03","t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x","x":[64765]},{"a":64774,"t":"code","b":[56],"m":"sec"},{"a":64775,"t":"code","b":[237,10,2],"m":"sbc","oa":522,"o":"vaus_stretch"},{"a":64778,"t":"code","b":[56],"m":"sec"},{"a":64779,"t":"code","b":[233,32],"m":"sbc","o":"#$20"},{"a":64781,"t":"code","b":[141,11,2],"m":"sta","oa":523,"o":"vaus_overhang"},{"a":64784,"l":"b_FD10","t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x","x":[64769]},{"a":64787,"t":"code","b":[24],"m":"clc"},{"a":64788,"t":"code","b":[109,10,2],"m":"adc","oa":522,"o":"vaus_stretch"},{"a":64791,"t":"code","b":[176,9],"m":"bcs","oa":64802,"o":"b_FD22"},{"a":64793,"t":"code","b":[201,219],"m":"cmp","o":"#$DB"},{"a":64795,"t":"code","b":[144,57],"m":"bcc","oa":64854,"o":"b_FD56"},{"a":64797,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":64799,"t":"code","b":[141,62,2],"m":"sta","oa":574,"o":"vaus_at_wall"},{"a":64802,"l":"b_FD22","t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x","x":[64791]},{"a":64805,"t":"code","b":[24],"m":"clc"},{"a":64806,"t":"code","b":[109,10,2],"m":"adc","oa":522,"o":"vaus_stretch"},{"a":64809,"t":"code","b":[233,219],"m":"sbc","o":"#$DB"},{"a":64811,"t":"code","b":[141,11,2],"m":"sta","oa":523,"o":"vaus_overhang"},{"a":64814,"l":"b_FD2E","t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x","x":[64857]},{"a":64817,"t":"code","b":[56],"m":"sec"},{"a":64818,"t":"code","b":[237,11,2],"m":"sbc","oa":523,"o":"vaus_overhang"},{"a":64821,"t":"code","b":[56],"m":"sec"},{"a":64822,"t":"code","b":[237,10,2],"m":"sbc","oa":522,"o":"vaus_stretch"},{"a":64825,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":64828,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":64831,"t":"code","b":[10],"m":"asl","o":"a"},{"a":64832,"t":"code","b":[109,69,148],"m":"adc","oa":37957,"o":"obj_x"},{"a":64835,"t":"code","b":[141,70,148],"m":"sta","oa":37958,"o":"vaus_right_x"},{"a":64838,"t":"code","b":[173,69,148],"m":"lda","oa":37957,"o":"obj_x"},{"a":64841,"t":"code","b":[24],"m":"clc"},{"a":64842,"t":"code","b":[109,10,2],"m":"adc","oa":522,"o":"vaus_stretch"},{"a":64845,"t":"code","b":[141,6,2],"m":"sta","oa":518,"o":"vaus_x"},{"a":64848,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":64850,"t":"code","b":[141,247,252],"m":"sta","oa":64759,"o":"place_vaus_stx_lo"},{"a":64853,"t":"code","b":[96],"m":"rts"},{"a":64854,"l":"b_FD56","t":"code","b":[174,11,2],"m":"ldx","oa":523,"o":"vaus_overhang","x":[64795]},{"a":64857,"t":"code","b":[208,211],"m":"bne","oa":64814,"o":"b_FD2E"},{"a":64859,"t":"code","b":[173,6,2],"m":"lda","oa":518,"o":"vaus_x"},{"a":64862,"t":"code","b":[56],"m":"sec"},{"a":64863,"t":"code","b":[237,10,2],"m":"sbc","oa":522,"o":"vaus_stretch"},{"a":64866,"t":"code","b":[141,69,148],"m":"sta","oa":37957,"o":"obj_x"},{"a":64869,"t":"code","b":[173,10,2],"m":"lda","oa":522,"o":"vaus_stretch"},{"a":64872,"t":"code","b":[24],"m":"clc"},{"a":64873,"t":"code","b":[109,6,2],"m":"adc","oa":518,"o":"vaus_x"},{"a":64876,"t":"code","b":[141,70,148],"m":"sta","oa":37958,"o":"vaus_right_x"},{"a":64879,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":64881,"t":"code","b":[141,247,252],"m":"sta","oa":64759,"o":"place_vaus_stx_lo"},{"a":64884,"t":"code","b":[96],"m":"rts"},{"a":64885,"l":"table_fd75","c":"Six bytes read by $ACE2 (Y = 0-5): $28 $0A $14 $0A $0F $0A. Their meaning belongs to that routine.","t":"byte","b":[40,10,20,10,15,10],"x":[44258]},{"a":64891,"l":"read_keyboard","c":"Keyboard (device 2): left SHIFT (key $0F) sets the left bit, right SHIFT (key $34) the right bit of $0203 (through key_held $0832); fire is $DC01 bit 4 with keyboard row 7 left selected by key_held: SPACE, or fire on a joystick in port 1. Then joystick_step ($FDBF) with Y = 1.","t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":64893,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":64895,"t":"code","b":[140,3,2],"m":"sty","oa":515,"o":"ctrl_bits"},{"a":64898,"t":"code","b":[32,50,8],"m":"jsr","oa":2098,"o":"key_held"},{"a":64901,"t":"code","b":[144,5],"m":"bcc","oa":64908,"o":"b_FD8C"},{"a":64903,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":64905,"t":"code","b":[141,3,2],"m":"sta","oa":515,"o":"ctrl_bits"},{"a":64908,"l":"b_FD8C","t":"code","b":[169,52],"m":"lda","o":"#$34","x":[64901]},{"a":64910,"t":"code","b":[32,50,8],"m":"jsr","oa":2098,"o":"key_held"},{"a":64913,"t":"code","b":[144,8],"m":"bcc","oa":64923,"o":"b_FD9B"},{"a":64915,"t":"code","b":[173,3,2],"m":"lda","oa":515,"o":"ctrl_bits"},{"a":64918,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":64920,"t":"code","b":[141,3,2],"m":"sta","oa":515,"o":"ctrl_bits"},{"a":64923,"l":"b_FD9B","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[64913]},{"a":64925,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":64927,"t":"code","b":[76,191,253],"m":"jmp","oa":64959,"o":"joystick_step"},{"a":64930,"l":"read_joystick","c":"Joystick (device 1): reads port 1 ($DC01), or port 2 ($DC00) for player 2 when two devices are chosen ($0940 = 1). The five low bits, inverted, go to $0203 (bit 0 up, 1 down, 2 left, 3 right, 4 fire), then joystick_step.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":64932,"t":"code","b":[173,64,9],"m":"lda","oa":2368,"o":"two_devices"},{"a":64935,"t":"code","b":[240,10],"m":"beq","oa":64947,"o":"b_FDB3"},{"a":64937,"t":"code","b":[168],"m":"tay"},{"a":64938,"t":"code","b":[173,56,9],"m":"lda","oa":2360,"o":"current_player"},{"a":64941,"t":"code","b":[240,4],"m":"beq","oa":64947,"o":"b_FDB3"},{"a":64943,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":64945,"t":"code","b":[240,2],"m":"beq","oa":64949,"o":"b_FDB5"},{"a":64947,"l":"b_FDB3","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[64935,64941]},{"a":64949,"l":"b_FDB5","t":"code","b":[185,0,220],"m":"lda","o":"cia1_port_a,y","x":[64945]},{"a":64952,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":64954,"t":"code","b":[73,31],"m":"eor","o":"#$1F"},{"a":64956,"t":"code","b":[141,3,2],"m":"sta","oa":515,"o":"ctrl_bits"},{"a":64959,"l":"joystick_step","c":"Turns the direction bits in $0203 into the Vaus's step: left and right together, or neither, give X = 0; left X = 2 x ($023A + 1), 4 when $023A = 0; right the same, negated. Then A = 1 if the fire bit of $DC00,Y (the port being read) is low, else 0.","t":"code","b":[173,3,2],"m":"lda","oa":515,"o":"ctrl_bits","x":[64927]},{"a":64962,"t":"code","b":[41,12],"m":"and","o":"#$0C"},{"a":64964,"t":"code","b":[201,12],"m":"cmp","o":"#$0C"},{"a":64966,"t":"code","b":[240,52],"m":"beq","oa":65020,"o":"b_FDFC"},{"a":64968,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":64970,"t":"code","b":[240,17],"m":"beq","oa":64989,"o":"b_FDDD"},{"a":64972,"t":"code","b":[173,58,2],"m":"lda","oa":570,"o":"ball_speed"},{"a":64975,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":64977,"t":"code","b":[176,3],"m":"bcs","oa":64982,"o":"b_FDD6"},{"a":64979,"t":"code","b":[24],"m":"clc"},{"a":64980,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":64982,"l":"b_FDD6","t":"code","b":[105,0],"m":"adc","o":"#$00","x":[64977]},{"a":64984,"t":"code","b":[10],"m":"asl","o":"a"},{"a":64985,"t":"code","b":[170],"m":"tax"},{"a":64986,"t":"code","b":[76,252,253],"m":"jmp","oa":65020,"o":"b_FDFC"},{"a":64989,"l":"b_FDDD","t":"code","b":[173,3,2],"m":"lda","oa":515,"o":"ctrl_bits","x":[64970]},{"a":64992,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":64994,"t":"code","b":[240,22],"m":"beq","oa":65018,"o":"b_FDFA"},{"a":64996,"t":"code","b":[173,58,2],"m":"lda","oa":570,"o":"ball_speed"},{"a":64999,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":65001,"t":"code","b":[176,3],"m":"bcs","oa":65006,"o":"b_FDEE"},{"a":65003,"t":"code","b":[24],"m":"clc"},{"a":65004,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":65006,"l":"b_FDEE","t":"code","b":[105,0],"m":"adc","o":"#$00","x":[65001]},{"a":65008,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65009,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":65011,"t":"code","b":[24],"m":"clc"},{"a":65012,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":65014,"t":"code","b":[170],"m":"tax"},{"a":65015,"t":"code","b":[76,252,253],"m":"jmp","oa":65020,"o":"b_FDFC"},{"a":65018,"l":"b_FDFA","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[64994]},{"a":65020,"l":"b_FDFC","t":"code","b":[185,0,220],"m":"lda","o":"cia1_port_a,y","x":[64966,64986,65015]},{"a":65023,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":65025,"t":"code","b":[208,3],"m":"bne","oa":65030,"o":"b_FE06"},{"a":65027,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":65029,"t":"code","b":[44,169,0],"m":"bit","oa":169,"o":"v2_stack_lo_top"},{"a":65032,"t":"code","b":[96],"m":"rts"},{"a":65033,"l":"read_paddle","c":"Reads the paddle of the current player ($0938): $DC00 = $5F (port A's top bits 01: a paddle pair to the SID), fire from $DC01 (bit 2 for player 1, bit 3 for player 2, paddle_fire_bits) as A = 0 or 1, position from $D419 (player 1) or $D41A (player 2): X = (255 - value + $0206) / 2, half way from the old centre to the reading.","t":"code","b":[169,95],"m":"lda","o":"#$5F","x":[64693]},{"a":65035,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":65038,"t":"code","b":[173,1,220],"m":"lda","o":"cia1_port_b"},{"a":65041,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":65043,"t":"code","b":[172,56,9],"m":"ldy","oa":2360,"o":"current_player"},{"a":65046,"t":"code","b":[57,49,254],"m":"and","oa":65073,"o":"paddle_fire_bits,y"},{"a":65049,"t":"code","b":[240,2],"m":"beq","oa":65053,"o":"b_FE1D"},{"a":65051,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":65053,"l":"b_FE1D","t":"code","b":[141,54,2],"m":"sta","oa":566,"o":"fire_now","x":[65049]},{"a":65056,"t":"code","b":[185,25,212],"m":"lda","o":"sid_paddle_x,y"},{"a":65059,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":65061,"t":"code","b":[24],"m":"clc"},{"a":65062,"t":"code","b":[109,6,2],"m":"adc","oa":518,"o":"vaus_x"},{"a":65065,"t":"code","b":[106],"m":"ror","o":"a"},{"a":65066,"t":"code","b":[170],"m":"tax"},{"a":65067,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":65069,"t":"code","b":[173,54,2],"m":"lda","oa":566,"o":"fire_now"},{"a":65072,"t":"code","b":[96],"m":"rts"},{"a":65073,"l":"paddle_fire_bits","c":"The paddle fire bit in $DC01 for each player: $04, $08.","t":"byte","b":[4,8],"x":[65046]},{"a":65075,"l":"mouse_port_bits","c":"Bit ORed into the mouse's port data at $FE5C, by port index X: $80 for port A ($DC00), $40 for port B ($DC01).","t":"byte","b":[128,64],"x":[65116]},{"a":65077,"l":"drum_82_delays","c":"Delay counts for drum_82 ($F345), one per outer step (Y = 13-0): $20 $10 $08 $04 $02 $01 $28 $0A $3C $0A $14 $0A $20 $40.","t":"byte","b":[32,16,8,4,2,1,40,10],"x":[62289]},{"a":65085,"t":"byte","b":[60,10,20,10,32,64]},{"a":65091,"l":"read_neos_mouse","c":"Neos mouse (device 0): port 1 (X = 1, $DC01), or port 2 (X = 0) for player 2 with two devices. Sets bit 4 of the port to output, then reads four nibbles, toggling bit 4 between them with short delays (delay_y $FEC9): the high and low nibble of the X movement (X), then of the Y movement (Y). Button: A = 1 when $D419 reads $FF. Note: TAX at $FE86 replaces the port index with the X movement, so the later reads and writes $DC00,X land on CIA 1 register (movement AND 15), not on the mouse's port; see the report.","t":"code","b":[174,56,9],"m":"ldx","oa":2360,"o":"current_player"},{"a":65094,"t":"code","b":[240,8],"m":"beq","oa":65104,"o":"b_FE50"},{"a":65096,"t":"code","b":[173,64,9],"m":"lda","oa":2368,"o":"two_devices"},{"a":65099,"t":"code","b":[240,3],"m":"beq","oa":65104,"o":"b_FE50"},{"a":65101,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":65103,"t":"code","b":[44,162,1],"m":"bit","oa":418,"o":"a_01A2"},{"a":65106,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":65108,"t":"code","b":[157,2,220],"m":"sta","o":"cia1_ddr_a,x"},{"a":65111,"t":"code","b":[189,0,220],"m":"lda","o":"cia1_port_a,x"},{"a":65114,"t":"code","b":[41,47],"m":"and","o":"#$2F"},{"a":65116,"t":"code","b":[29,51,254],"m":"ora","oa":65075,"o":"mouse_port_bits,x"},{"a":65119,"t":"code","b":[157,0,220],"m":"sta","o":"cia1_port_a,x"},{"a":65122,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":65124,"t":"code","b":[32,201,254],"m":"jsr","oa":65225,"o":"delay_y"},{"a":65127,"t":"code","b":[189,0,220],"m":"lda","o":"cia1_port_a,x"},{"a":65130,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65131,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65132,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65133,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65134,"t":"code","b":[141,223,254],"m":"sta","oa":65247,"o":"mouse_nibble"},{"a":65137,"t":"code","b":[189,0,220],"m":"lda","o":"cia1_port_a,x"},{"a":65140,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":65142,"t":"code","b":[157,0,220],"m":"sta","o":"cia1_port_a,x"},{"a":65145,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":65147,"t":"code","b":[32,201,254],"m":"jsr","oa":65225,"o":"delay_y"},{"a":65150,"t":"code","b":[189,0,220],"m":"lda","o":"cia1_port_a,x"},{"a":65153,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":65155,"t":"code","b":[13,223,254],"m":"ora","oa":65247,"o":"mouse_nibble"},{"a":65158,"t":"code","b":[170],"m":"tax"},{"a":65159,"t":"code","b":[189,0,220],"m":"lda","o":"cia1_port_a,x"},{"a":65162,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":65164,"t":"code","b":[157,0,220],"m":"sta","o":"cia1_port_a,x"},{"a":65167,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":65169,"t":"code","b":[32,201,254],"m":"jsr","oa":65225,"o":"delay_y"},{"a":65172,"t":"code","b":[189,0,220],"m":"lda","o":"cia1_port_a,x"},{"a":65175,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65176,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65177,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65178,"t":"code","b":[10],"m":"asl","o":"a"},{"a":65179,"t":"code","b":[141,223,254],"m":"sta","oa":65247,"o":"mouse_nibble"},{"a":65182,"t":"code","b":[189,0,220],"m":"lda","o":"cia1_port_a,x"},{"a":65185,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":65187,"t":"code","b":[157,0,220],"m":"sta","o":"cia1_port_a,x"},{"a":65190,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":65192,"t":"code","b":[32,201,254],"m":"jsr","oa":65225,"o":"delay_y"},{"a":65195,"t":"code","b":[189,0,220],"m":"lda","o":"cia1_port_a,x"},{"a":65198,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":65200,"t":"code","b":[13,223,254],"m":"ora","oa":65247,"o":"mouse_nibble"},{"a":65203,"t":"code","b":[168],"m":"tay"},{"a":65204,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":65206,"t":"code","b":[157,0,220],"m":"sta","o":"cia1_port_a,x"},{"a":65209,"t":"code","b":[157,2,220],"m":"sta","o":"cia1_ddr_a,x"},{"a":65212,"t":"code","b":[173,25,212],"m":"lda","o":"sid_paddle_x"},{"a":65215,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":65217,"t":"code","b":[240,3],"m":"beq","oa":65222,"o":"b_FEC6"},{"a":65219,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":65221,"t":"code","b":[44,169,1],"m":"bit","oa":425,"o":"a_01A9"},{"a":65224,"t":"code","b":[96],"m":"rts"},{"a":65225,"l":"delay_y","c":"Delay of Y x 7 cycles (NOP, DEY, BNE), used between the mouse's nibbles.","t":"code","b":[234],"m":"nop","x":[65124,65147,65169,65192,65227]},{"a":65226,"t":"code","b":[136],"m":"dey"},{"a":65227,"t":"code","b":[208,252],"m":"bne","oa":65225,"o":"delay_y"},{"a":65229,"t":"code","b":[96],"m":"rts"},{"a":65230,"l":"drum_81_delays","c":"Delay counts for drum_81 ($F604), one per outer step (Y = 5-0): $40 $1E $3E $19 $3C $14.","t":"byte","b":[64,30,62,25,60,20],"x":[62992]},{"a":65236,"l":"unused_fragment_fed4","c":"Unused: 11 bytes of code nothing reaches: LDA #$01 / STA $D015 / STA $D027 / JMP $957F. The old build at $BF63 has the same lines ending JMP $94C5.","t":"byte","b":[169,1,141,21,208,141,39,208]},{"a":65244,"t":"byte","b":[76,127,149]},{"a":65247,"l":"mouse_nibble","c":"The mouse reader's high nibble, kept while the low one is read (written $FE6E and $FE9B, ORed in at $FE83 and $FEB0).","t":"byte","b":[0],"x":[65134,65155,65179,65200]},{"a":65248,"l":"drum_play","c":"Plays the title percussion: if a sound is due ($DF non-zero) it clears $DF, calls the drum routine through the JSR at $FEE8 (operand set by drum_script_step) and sets the volume to $0F OR $3FFF. Called only by the title loop ($B4E0), so the drums play on the title screen only.","t":"code","b":[165,223],"m":"lda","oa":223,"o":"drum_pending","x":[46304]},{"a":65250,"t":"code","b":[240,85],"m":"beq","oa":65337,"o":"r_FF39"},{"a":65252,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":65254,"t":"code","b":[133,223],"m":"sta","oa":223,"o":"drum_pending"},{"a":65256,"t":"code","b":[32,221,221],"m":"jsr","oa":56797,"o":"s_DDDD"},{"a":65257,"t":"note","l":"drum_jsr_lo","c":"Low byte of the JSR at $FEE8, the drum routine to call: set from $B07D + drum ($FF2D).","note":"inside the item at $FEE8","x":[65328]},{"a":65258,"t":"note","l":"drum_jsr_hi","c":"High byte of the JSR at $FEE8: set from $A253 + drum ($FF33).","note":"inside the item at $FEE8","x":[65334]},{"a":65259,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":65261,"t":"code","b":[13,255,63],"m":"ora","oa":16383,"o":"sample_filter_bits"},{"a":65264,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":65267,"t":"code","b":[96],"m":"rts"},{"a":65268,"l":"drum_script_step","c":"Steps the title percussion script, from sound_tick while $0209 bit 7 is set: counts $DC down; at zero reads the script at ($DA) (start $9A71, set by $B52C). A byte below $80 is a command: found in drum_script_commands and called through the JSR at $FF12 (it reads its own operands and moves ($DA)), then the next byte is read. A byte of $80 or more is a drum: it goes to $DF (played by drum_play), the next byte to $DC (the wait), ($DA) moves on 2, and the JSR at $FEE8 is pointed at that drum's routine. A command byte not in the table would run the search on past it.","t":"code","b":[198,220],"m":"dec","oa":220,"o":"drum_wait","x":[63631]},{"a":65270,"t":"code","b":[208,65],"m":"bne","oa":65337,"o":"r_FF39"},{"a":65272,"l":"j_FEF8","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[65301]},{"a":65274,"t":"code","b":[177,218],"m":"lda","oa":218,"o":"(drum_ptr),y"},{"a":65276,"t":"code","b":[48,26],"m":"bmi","oa":65304,"o":"b_FF18"},{"a":65278,"t":"code","b":[162,255],"m":"ldx","o":"#$FF"},{"a":65280,"l":"b_FF00","t":"code","b":[232],"m":"inx","x":[65284]},{"a":65281,"t":"code","b":[221,217,246],"m":"cmp","oa":63193,"o":"drum_script_commands,x"},{"a":65284,"t":"code","b":[208,250],"m":"bne","oa":65280,"o":"b_FF00"},{"a":65286,"t":"code","b":[189,168,248],"m":"lda","oa":63656,"o":"drum_command_lo,x"},{"a":65289,"t":"code","b":[141,19,255],"m":"sta","oa":65299,"o":"command_jsr_lo"},{"a":65292,"t":"code","b":[189,123,180],"m":"lda","oa":46203,"o":"drum_command_hi,x"},{"a":65295,"t":"code","b":[141,20,255],"m":"sta","oa":65300,"o":"command_jsr_hi"},{"a":65298,"t":"code","b":[32,221,221],"m":"jsr","oa":56797,"o":"s_DDDD"},{"a":65299,"t":"note","l":"command_jsr_lo","c":"Low byte of the JSR at $FF12, the script command's handler (from drum_command_lo).","note":"inside the item at $FF12","x":[65289]},{"a":65300,"t":"note","l":"command_jsr_hi","c":"High byte of the JSR at $FF12 (from drum_command_hi at $B47B).","note":"inside the item at $FF12","x":[65295]},{"a":65301,"t":"code","b":[76,248,254],"m":"jmp","oa":65272,"o":"j_FEF8"},{"a":65304,"l":"b_FF18","t":"code","b":[133,223],"m":"sta","oa":223,"o":"drum_pending","x":[65276]},{"a":65306,"t":"code","b":[170],"m":"tax"},{"a":65307,"t":"code","b":[200],"m":"iny"},{"a":65308,"t":"code","b":[177,218],"m":"lda","oa":218,"o":"(drum_ptr),y"},{"a":65310,"t":"code","b":[133,220],"m":"sta","oa":220,"o":"drum_wait"},{"a":65312,"t":"code","b":[165,218],"m":"lda","oa":218,"o":"drum_ptr"},{"a":65314,"t":"code","b":[24],"m":"clc"},{"a":65315,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":65317,"t":"code","b":[133,218],"m":"sta","oa":218,"o":"drum_ptr"},{"a":65319,"t":"code","b":[165,219],"m":"lda","oa":219,"o":"drum_ptr_hi"},{"a":65321,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":65323,"t":"code","b":[133,219],"m":"sta","oa":219,"o":"drum_ptr_hi"},{"a":65325,"t":"code","b":[189,125,176],"m":"lda","oa":45181,"o":"drum_lo_base,x"},{"a":65328,"t":"code","b":[141,233,254],"m":"sta","oa":65257,"o":"drum_jsr_lo"},{"a":65331,"t":"code","b":[189,83,162],"m":"lda","oa":41555,"o":"drum_handler_hi_base,x"},{"a":65334,"t":"code","b":[141,234,254],"m":"sta","oa":65258,"o":"drum_jsr_hi"},{"a":65337,"l":"r_FF39","t":"code","b":[96],"m":"rts","x":[65250,65270]},{"a":65338,"l":"unused_tail_ff3a","c":"Unused to $FFF9 (nothing reads or runs it): $FF3A-$FF5D is a copy of drum_script_step's last lines assembled for other addresses (it patches $FF0D-$FF0E); from $FF5E data: $ED $EF ... $FF $01 $23 ... $EF, $55 $55 $55, runs of $FF, and graphic-looking bytes ($AA, $A8, $C0, $3A, $0E). Left over from the build.","t":"byte","b":[28,255,133,223,170,200,177,218]},{"a":65346,"t":"byte","b":[133,220,165,218,24,105,2,133]},{"a":65354,"t":"byte","b":[218,165,219,105,0,133,219,189]},{"a":65362,"t":"byte","b":[125,176,141,13,255,189,83,162]},{"a":65370,"t":"byte","b":[141,14,255,96]},{"a":65374,"l":"unused_data_ff5e","c":"Part of the unused tail: 156 bytes ($FF5E-$FFF9) nothing reads: a run of odd bytes $ED-$FF, nibble pairs $01 $23 $45 $67 $89 $AB $CD $EF, $55 x3, $FF fill, then bytes that look like sprite or character rows.","t":"byte","b":[237,239,241,243,245,247,249,251]},{"a":65382,"t":"byte","b":[253,255,1,35,69,103,137,171]},{"a":65390,"t":"byte","b":[205,239,85,85,85,255,255,255]},{"a":65398,"t":"byte","b":[82,0,255,255,255,255,255,255]},{"a":65406,"t":"byte","b":[255,255,255,243,255,255,255,255]},{"a":65414,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":65422,"t":"byte","b":[191,255,255,255,255,255,255,255]},{"a":65430,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":65438,"t":"byte","b":[255,255,255,255,255,255,255,239]},{"a":65446,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":65454,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":65462,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":65470,"t":"byte","b":[255,255,255,255,255,170,170,170]},{"a":65478,"t":"byte","b":[168,168,161,172,172,4,0,0]},{"a":65486,"t":"byte","b":[0,0,0,3,3,14,14,58]},{"a":65494,"t":"byte","b":[58,250,234,234,170,192,192,192]},{"a":65502,"t":"byte","b":[192,192,192,192,192,192,192,192]},{"a":65510,"t":"byte","b":[192,192,192,192,192,0,0,0]},{"a":65518,"t":"byte","b":[1,0,0,32,32,234,234,58]},{"a":65526,"t":"byte","b":[58,58,14,14]},{"a":65530,"l":"nmi_vector","c":"The hardware NMI vector, owned by the game with the KERNAL banked out ($01 = $35): $0000 in the image (not part of the loaded file), set to $F903 by nmi_timer_init and switched between $F855 and $F903 by the NMI handlers.","t":"word","b":[0,0],"d":[0],"x":[61660,63728,63803]},{"a":65532,"l":"reset_vector","c":"The RESET vector's RAM: $0000, never written or read by the game.","t":"word","b":[0,0],"d":[0]},{"a":65534,"l":"irq_vector","c":"The hardware IRQ vector: $FFFF in the image, set to $F720 by irq_init and rewritten by each raster handler to the next ($F75E, $FBEE, $F720).","t":"word","b":[255,255],"d":[65535],"x":[63277,63353,63540,63702,63711,63923,64580,64594]}]}