{"schema":1,"platform":"c64","game":"little-computer-people","title":"Little Computer People","build":"single-file crack by Mr Z (crack screen \"CRACKED BY MR Z...\"): disk name LCP, one crunched 192-block program COMPUTER PEOPLE; no error bytes","symbols_sha256":"0b0ccdff14b1e9b453f970fc8a1996d1d9617e24ec5388ffeb1eb6562f92312f","index":[{"a":0,"n":"cpu_ddr","k":"variable","len":1,"c":true},{"a":1,"n":"cpu_port","k":"variable","len":1,"c":true},{"a":2,"n":"zp_free_02","k":"table","len":12,"c":true},{"a":16,"n":"parse_ptr","k":"variable","len":1,"c":true},{"a":17,"n":"parse_ptr_hi","k":"variable","len":1,"c":true},{"a":18,"n":"rule_miss_bits","k":"variable","len":1,"c":true},{"a":19,"n":"rule_sentence_inv","k":"variable","len":1,"c":true},{"a":20,"n":"zp_free_14","k":"table","len":4,"c":true},{"a":24,"n":"tmp_ptr_a","k":"variable","len":1,"c":true},{"a":25,"n":"tmp_ptr_a_hi","k":"variable","len":1,"c":true},{"a":26,"n":"tmp_ptr_b","k":"variable","len":1,"c":true},{"a":27,"n":"tmp_ptr_b_hi","k":"variable","len":1,"c":true},{"a":28,"n":"tmp_ptr_c","k":"variable","len":1,"c":true},{"a":29,"n":"tmp_ptr_c_hi","k":"variable","len":1,"c":true},{"a":30,"n":"tmp_ptr_d","k":"variable","len":1,"c":true},{"a":31,"n":"tmp_ptr_d_hi","k":"variable","len":1,"c":true},{"a":32,"n":"zp_free_20","k":"table","len":8,"c":true},{"a":40,"n":"switch_ptr","k":"variable","len":1,"c":true},{"a":41,"n":"switch_ptr_hi","k":"variable","len":1,"c":true},{"a":42,"n":"zp_cleared_2a","k":"variable","len":1,"c":true},{"a":43,"n":"frame_count","k":"variable","len":1,"c":true},{"a":44,"n":"idle_count_lo","k":"variable","len":1,"c":true},{"a":45,"n":"idle_count_hi","k":"variable","len":1,"c":true},{"a":46,"n":"joy_port1","k":"variable","len":1,"c":true},{"a":47,"n":"joy_port2","k":"variable","len":1,"c":true},{"a":48,"n":"key_new","k":"variable","len":1,"c":true},{"a":49,"n":"key_last","k":"variable","len":1,"c":true},{"a":50,"n":"key_scan_index","k":"variable","len":1,"c":true},{"a":51,"n":"key_held","k":"variable","len":1,"c":true},{"a":52,"n":"temp_34","k":"variable","len":1,"c":true},{"a":53,"n":"temp_35","k":"variable","len":1,"c":true},{"a":54,"n":"cold_figure_passes","k":"variable","len":1,"c":true},{"a":55,"n":"zp_free_37","k":"table","len":5,"c":true},{"a":60,"n":"irq_scratch_3c","k":"variable","len":1,"c":true},{"a":61,"n":"irq_band_bottom","k":"variable","len":1,"c":true},{"a":62,"n":"irq_sprite_count","k":"variable","len":1,"c":true},{"a":63,"n":"irq_wait_line","k":"variable","len":1,"c":true},{"a":64,"n":"frame_flag","k":"variable","len":1,"c":true},{"a":65,"n":"saved_d016","k":"variable","len":1,"c":true},{"a":66,"n":"save_d015","k":"variable","len":1,"c":true},{"a":67,"n":"save_spr_x","k":"variable","len":1,"c":true},{"a":68,"n":"save_spr_y","k":"variable","len":1,"c":true},{"a":69,"n":"save_d010","k":"variable","len":1,"c":true},{"a":70,"n":"save_d01c","k":"variable","len":1,"c":true},{"a":71,"n":"save_spr_colour","k":"variable","len":1,"c":true},{"a":72,"n":"save_spr_pointer","k":"variable","len":1,"c":true},{"a":73,"n":"save_d01b","k":"variable","len":1,"c":true},{"a":74,"n":"zp_free_4a","k":"variable","len":1,"c":true},{"a":75,"n":"sort_temp","k":"variable","len":1,"c":true},{"a":76,"n":"activity_phase","k":"variable","len":1,"c":true},{"a":77,"n":"snd_job_vec","k":"variable","len":1,"c":true},{"a":78,"n":"snd_job_vec_hi","k":"variable","len":1,"c":true},{"a":79,"n":"tune_tmp","k":"variable","len":1,"c":true},{"a":80,"n":"tune_tmp_hi","k":"variable","len":1,"c":true},{"a":81,"n":"tune_sid_offset","k":"variable","len":2,"c":true},{"a":83,"n":"tune_voice_rec","k":"variable","len":1,"c":true},{"a":84,"n":"tune_voice_pos_hi","k":"variable","len":1,"c":true},{"a":85,"n":"tune_note","k":"variable","len":1,"c":true},{"a":86,"n":"tune_length","k":"variable","len":1,"c":true},{"a":87,"n":"tune_release_mult","k":"variable","len":1,"c":true},{"a":88,"n":"tune_tempo","k":"variable","len":1,"c":true},{"a":89,"n":"tune_reg4","k":"variable","len":1,"c":true},{"a":90,"n":"tune_reg5","k":"variable","len":1,"c":true},{"a":91,"n":"tune_reg6","k":"variable","len":1,"c":true},{"a":92,"n":"tune_countdown","k":"variable","len":1,"c":true},{"a":93,"n":"tune_release_at","k":"variable","len":1,"c":true},{"a":94,"n":"tune_sp","k":"variable","len":1,"c":true},{"a":95,"n":"tune_flags","k":"variable","len":1,"c":true},{"a":96,"n":"tune_stack_ptr","k":"variable","len":1,"c":true},{"a":97,"n":"tune_stack_ptr_hi","k":"variable","len":1,"c":true},{"a":98,"n":"tune_record_ptr","k":"variable","len":1,"c":true},{"a":99,"n":"tune_record_ptr_hi","k":"variable","len":1,"c":true},{"a":100,"n":"tune_vibrato_ptr","k":"variable","len":1,"c":true},{"a":101,"n":"tune_vibrato_ptr_hi","k":"variable","len":1,"c":true},{"a":102,"n":"letter_ptr","k":"variable","len":1,"c":true},{"a":103,"n":"letter_ptr_hi","k":"variable","len":1,"c":true},{"a":104,"n":"activity_subphase","k":"variable","len":1,"c":true},{"a":105,"n":"head_turn_temp","k":"variable","len":1,"c":true},{"a":106,"n":"head_turn_temp2","k":"variable","len":1,"c":true},{"a":107,"n":"mus_tmp0","k":"variable","len":1,"c":true},{"a":108,"n":"mus_channel","k":"variable","len":1,"c":true},{"a":109,"n":"mus_tmp1","k":"variable","len":1,"c":true},{"a":110,"n":"mus_tmp2","k":"variable","len":1,"c":true},{"a":111,"n":"mus_pass","k":"variable","len":1,"c":true},{"a":112,"n":"mus_rec","k":"variable","len":1,"c":true},{"a":113,"n":"mus_tmp3","k":"variable","len":1,"c":true},{"a":114,"n":"mus_filter_done","k":"variable","len":1,"c":true},{"a":115,"n":"mus_pattern","k":"variable","len":1,"c":true},{"a":116,"n":"mus_pattern_hi","k":"variable","len":1,"c":true},{"a":117,"n":"mus_stream_ptrs","k":"variable","len":1,"c":true},{"a":118,"n":"mus_stream_ptrs_hi","k":"table","len":11,"c":true},{"a":129,"n":"mus_read_ptr","k":"variable","len":1,"c":true},{"a":130,"n":"mus_read_ptr_hi","k":"variable","len":1,"c":true},{"a":131,"n":"mus_pattab_ptr","k":"variable","len":1,"c":true},{"a":132,"n":"mus_pattab_ptr_hi","k":"variable","len":1,"c":true},{"a":133,"n":"mus_slide_up","k":"table","len":3,"c":true},{"a":136,"n":"text_margin_lo","k":"variable","len":1,"c":true},{"a":137,"n":"text_margin_hi","k":"variable","len":1,"c":true},{"a":138,"n":"text_right_lo","k":"variable","len":1,"c":true},{"a":139,"n":"text_right_hi","k":"variable","len":1,"c":true},{"a":140,"n":"text_cursor_x","k":"variable","len":1,"c":true},{"a":141,"n":"text_cursor_x_hi","k":"variable","len":1,"c":true},{"a":142,"n":"text_top_row","k":"variable","len":2,"c":true},{"a":144,"n":"glyph_width","k":"variable","len":1,"c":true},{"a":145,"n":"glyph_row","k":"variable","len":1,"c":true},{"a":146,"n":"glyph_rows","k":"variable","len":1,"c":true},{"a":147,"n":"glyph_row_1","k":"variable","len":1,"c":true},{"a":148,"n":"glyph_row_2","k":"variable","len":1,"c":true},{"a":149,"n":"glyph_row_3","k":"variable","len":1,"c":true},{"a":150,"n":"glyph_row_4","k":"variable","len":1,"c":true},{"a":151,"n":"glyph_row_5","k":"variable","len":1,"c":true},{"a":152,"n":"glyph_row_6","k":"variable","len":1,"c":true},{"a":153,"n":"glyph_row_7","k":"variable","len":1,"c":true},{"a":154,"n":"zp_free_9a","k":"table","len":8,"c":true},{"a":162,"n":"glyph_spill","k":"table","len":6,"c":true},{"a":168,"n":"glyph_spill_6","k":"variable","len":1,"c":true},{"a":169,"n":"glyph_spill_7","k":"variable","len":1,"c":true},{"a":170,"n":"zp_free_aa","k":"table","len":8,"c":true},{"a":178,"n":"text_cell_ptr","k":"variable","len":1,"c":true},{"a":179,"n":"text_cell_ptr_hi","k":"variable","len":1,"c":true},{"a":180,"n":"text_cell2_ptr","k":"variable","len":1,"c":true},{"a":181,"n":"text_cell2_ptr_hi","k":"variable","len":1,"c":true},{"a":182,"n":"glyph_font","k":"variable","len":1,"c":true},{"a":183,"n":"zp_free_b7","k":"variable","len":1,"c":true},{"a":184,"n":"text_char","k":"variable","len":1,"c":true},{"a":185,"n":"scroll_dst","k":"variable","len":1,"c":true},{"a":186,"n":"scroll_dst_hi","k":"variable","len":1,"c":true},{"a":187,"n":"zp_free_bb","k":"variable","len":1,"c":true},{"a":188,"n":"text_ptr","k":"variable","len":1,"c":true},{"a":189,"n":"text_ptr_hi","k":"variable","len":1,"c":true},{"a":190,"n":"text_temp","k":"variable","len":1,"c":true},{"a":191,"n":"scroll_row_bytes","k":"variable","len":1,"c":true},{"a":192,"n":"zpa_C0","k":"variable","len":1,"c":true},{"a":193,"n":"text_window","k":"variable","len":1,"c":true},{"a":194,"n":"zp_free_c2","k":"table","len":62,"c":true},{"a":512,"n":"outq_in","k":"variable","len":1,"c":true},{"a":513,"n":"outq_out","k":"variable","len":1,"c":true},{"a":514,"n":"outq_buffer","k":"table","len":32,"c":true},{"a":546,"n":"line_index","k":"variable","len":1,"c":true},{"a":547,"n":"line_last_base","k":"variable","len":1,"c":true},{"a":548,"n":"line_ring","k":"table","len":64,"c":true},{"a":676,"n":"page2_unused_02a4","k":"table","len":48,"c":true},{"a":724,"n":"move_floor","k":"variable","len":1,"c":true},{"a":725,"n":"climb_floor_x2","k":"variable","len":2,"c":true},{"a":727,"n":"move_figure_no","k":"variable","len":1,"c":true},{"a":728,"n":"move_temp","k":"table","len":4,"c":true},{"a":732,"n":"walk_alternate","k":"variable","len":1,"c":true},{"a":733,"n":"move_tick","k":"variable","len":2,"c":true},{"a":735,"n":"stair_steps","k":"variable","len":2,"c":true},{"a":737,"n":"stair_state","k":"variable","len":2,"c":true},{"a":739,"n":"walk_frame_mask_tmp","k":"variable","len":1,"c":true},{"a":740,"n":"walk_frame_tmp","k":"variable","len":1,"c":true},{"a":741,"n":"walk_dx","k":"variable","len":1,"c":true},{"a":742,"n":"walk_ddepth","k":"variable","len":1,"c":true},{"a":743,"n":"walk_dx_sign","k":"variable","len":1,"c":true},{"a":744,"n":"walk_ddepth_sign","k":"variable","len":1,"c":true},{"a":745,"n":"saved_y_1e2e","k":"variable","len":1,"c":true},{"a":746,"n":"act_anim_count","k":"variable","len":1,"c":true},{"a":747,"n":"act_wait_steps","k":"variable","len":1,"c":true},{"a":748,"n":"act_wait_pass","k":"variable","len":1,"c":true},{"a":749,"n":"snd_unused_02ed","k":"variable","len":1,"c":true},{"a":750,"n":"snd_job_index","k":"variable","len":1,"c":true},{"a":751,"n":"snd_job_mask","k":"variable","len":1,"c":true},{"a":752,"n":"shift_rng_seed","k":"variable","len":1,"c":true},{"a":753,"n":"shift_rng_seed_hi","k":"variable","len":1,"c":true},{"a":754,"n":"filter_sweep","k":"variable","len":1,"c":true},{"a":755,"n":"mul_count","k":"table","len":9,"c":true},{"a":764,"n":"blit_row_bytes","k":"variable","len":1,"c":true},{"a":765,"n":"blit_saved_a","k":"variable","len":1,"c":true},{"a":766,"n":"blit_width","k":"variable","len":1,"c":true},{"a":767,"n":"blit_saved_x","k":"table","len":21,"c":true},{"a":788,"n":"irq_vector","k":"variable","len":1,"c":true},{"a":789,"n":"irq_vector_hi","k":"table","len":3,"c":true},{"a":792,"n":"nmi_vector","k":"variable","len":2,"c":true},{"a":832,"n":"reset_jumps","k":"routine","len":3,"c":true},{"a":835,"n":"jt_random","k":"routine","len":3,"c":true},{"a":838,"n":"jt_get_mood","k":"routine","len":4,"c":true},{"a":842,"n":"person_facing_bit","k":"variable","len":1,"c":true},{"a":843,"n":"colour_pair_pref","k":"variable","len":1,"c":true},{"a":844,"n":"colour_pref_2","k":"variable","len":1,"c":true},{"a":845,"n":"late_hour","k":"variable","len":1,"c":true},{"a":846,"n":"alarm_hour","k":"variable","len":1,"c":true},{"a":847,"n":"alarm_tick","k":"variable","len":1,"c":true},{"a":848,"n":"routine_style","k":"variable","len":1,"c":true},{"a":849,"n":"morning_list_len","k":"variable","len":1,"c":true},{"a":850,"n":"morning_list","k":"table","len":5,"c":true},{"a":855,"n":"evening_list_len","k":"variable","len":1,"c":true},{"a":856,"n":"evening_list","k":"table","len":3,"c":true},{"a":859,"n":"list_index","k":"variable","len":1,"c":true},{"a":860,"n":"list_request","k":"variable","len":1,"c":true},{"a":861,"n":"schedule_step","k":"variable","len":1,"c":true},{"a":862,"n":"schedule_next_hour","k":"variable","len":1,"c":true},{"a":863,"n":"mood","k":"variable","len":1,"c":true},{"a":864,"n":"mood_days","k":"table","len":3,"c":true},{"a":867,"n":"mood_days_left","k":"variable","len":1,"c":true},{"a":868,"n":"mood_direction","k":"variable","len":1,"c":true},{"a":869,"n":"illness_level","k":"variable","len":1,"c":true},{"a":870,"n":"illness_timer","k":"variable","len":1,"c":true},{"a":871,"n":"illness_worsening","k":"variable","len":1,"c":true},{"a":872,"n":"act_flag_0368","k":"variable","len":1,"c":true},{"a":873,"n":"trait_byte","k":"table","len":3,"c":true},{"a":876,"n":"noon_act_hour","k":"variable","len":1,"c":true},{"a":877,"n":"act_1_hour","k":"variable","len":1,"c":true},{"a":878,"n":"water_need","k":"variable","len":1,"c":true},{"a":879,"n":"water_period","k":"variable","len":1,"c":true},{"a":880,"n":"water_timer","k":"variable","len":1,"c":true},{"a":881,"n":"food_need","k":"variable","len":1,"c":true},{"a":882,"n":"food_period","k":"variable","len":1,"c":true},{"a":883,"n":"food_timer","k":"variable","len":1,"c":true},{"a":884,"n":"act4_request","k":"variable","len":1,"c":true},{"a":885,"n":"act4_delay","k":"variable","len":1,"c":true},{"a":886,"n":"act4_countdown","k":"variable","len":1,"c":true},{"a":887,"n":"weekday","k":"variable","len":1,"c":true},{"a":888,"n":"days_elapsed","k":"variable","len":1,"c":true},{"a":889,"n":"house_hour","k":"variable","len":1,"c":true},{"a":890,"n":"house_tick","k":"variable","len":1,"c":true},{"a":891,"n":"pending_activity","k":"variable","len":1,"c":true},{"a":892,"n":"head_turn_timer","k":"table","len":5,"c":true},{"a":897,"n":"fig_clip","k":"variable","len":2,"c":true},{"a":899,"n":"fig_clip_prop_a","k":"variable","len":2,"c":true},{"a":901,"n":"fig_clip_head","k":"variable","len":1,"c":true},{"a":902,"n":"fig_colour","k":"table","len":4,"c":true},{"a":906,"n":"fig_colour_head","k":"variable","len":1,"c":true},{"a":907,"n":"fig_frame","k":"variable","len":2,"c":true},{"a":909,"n":"fig_frame_prop_a","k":"variable","len":1,"c":true},{"a":910,"n":"fig_frame_prop_b","k":"variable","len":1,"c":true},{"a":911,"n":"fig_frame_head","k":"variable","len":1,"c":true},{"a":912,"n":"body_direction","k":"variable","len":1,"c":true},{"a":913,"n":"carrying","k":"variable","len":1,"c":true},{"a":914,"n":"unused_0392","k":"variable","len":2,"c":true},{"a":916,"n":"prop_multicolour","k":"variable","len":1,"c":true},{"a":917,"n":"prop_b_multicolour","k":"variable","len":1,"c":true},{"a":918,"n":"fig_behind_bg","k":"variable","len":1,"c":true},{"a":919,"n":"dog_behind_bg","k":"variable","len":1,"c":true},{"a":920,"n":"prop_behind_bg","k":"variable","len":2,"c":true},{"a":922,"n":"fig_mirror","k":"variable","len":2,"c":true},{"a":924,"n":"fig_mirror_prop_a","k":"variable","len":1,"c":true},{"a":925,"n":"fig_mirror_prop_b","k":"variable","len":1,"c":true},{"a":926,"n":"fig_mirror_head","k":"variable","len":1,"c":true},{"a":927,"n":"move_speed","k":"table","len":4,"c":true},{"a":931,"n":"fig_x_half","k":"variable","len":2,"c":true},{"a":933,"n":"fig_x_half_prop_a","k":"variable","len":2,"c":true},{"a":935,"n":"fig_x","k":"variable","len":2,"c":true},{"a":937,"n":"fig_x_prop_a","k":"variable","len":1,"c":true},{"a":938,"n":"fig_x_prop_b","k":"variable","len":1,"c":true},{"a":939,"n":"fig_x_hi","k":"variable","len":1,"c":true},{"a":940,"n":"fig_x_hi_dog","k":"variable","len":1,"c":true},{"a":941,"n":"fig_x_hi_prop_a","k":"variable","len":1,"c":true},{"a":942,"n":"fig_x_hi_prop_b","k":"variable","len":1,"c":true},{"a":943,"n":"fig_floor_y","k":"variable","len":2,"c":true},{"a":945,"n":"fig_floor_y_prop_a","k":"variable","len":1,"c":true},{"a":946,"n":"fig_floor_y_prop_b","k":"variable","len":1,"c":true},{"a":947,"n":"fig_depth","k":"variable","len":2,"c":true},{"a":949,"n":"fig_depth_prop_a","k":"variable","len":1,"c":true},{"a":950,"n":"fig_depth_prop_b","k":"variable","len":1,"c":true},{"a":951,"n":"fig_frame_dy","k":"table","len":5,"c":true},{"a":956,"n":"move_state","k":"table","len":4,"c":true},{"a":960,"n":"move_target","k":"table","len":4,"c":true},{"a":964,"n":"fig_flags","k":"variable","len":1,"c":true},{"a":965,"n":"fig_flags_dog","k":"variable","len":1,"c":true},{"a":966,"n":"fig_flags_prop_a","k":"variable","len":1,"c":true},{"a":967,"n":"fig_flags_prop_b","k":"variable","len":1,"c":true},{"a":968,"n":"fig_flags_head","k":"variable","len":1,"c":true},{"a":969,"n":"sort_key","k":"table","len":4,"c":true},{"a":973,"n":"fig_hw_sprite","k":"variable","len":1,"c":true},{"a":974,"n":"fig_hw_sprite_dog","k":"variable","len":1,"c":true},{"a":975,"n":"fig_hw_sprite_prop","k":"table","len":3,"c":true},{"a":978,"n":"sort_tiebreak","k":"table","len":4,"c":true},{"a":982,"n":"sort_order","k":"table","len":13,"c":true},{"a":995,"n":"sprite_bit","k":"table","len":8,"c":true},{"a":1007,"n":"outline_row","k":"variable","len":1,"c":true},{"a":1008,"n":"outline_row_1","k":"variable","len":1,"c":true},{"a":1009,"n":"outline_row_2","k":"table","len":3,"c":true},{"a":1012,"n":"head_target","k":"table","len":4,"c":true},{"a":1016,"n":"record_bytes_03f8","k":"table","len":4,"c":true},{"a":1020,"n":"name_text","k":"table","len":4,"c":true},{"a":1024,"n":"name_text_cont","k":"table","len":20,"c":true},{"a":1044,"n":"rng_value","k":"variable","len":1,"c":true},{"a":1045,"n":"rng_state","k":"variable","len":1,"c":true},{"a":1046,"n":"rng_temp","k":"variable","len":1,"c":true},{"a":1047,"n":"rng_calls","k":"table","len":12,"c":true},{"a":1059,"n":"script_ptr","k":"variable","len":1,"c":true},{"a":1060,"n":"script_ptr_hi","k":"variable","len":1,"c":true},{"a":1061,"n":"keep_head_colour","k":"variable","len":1,"c":true},{"a":1062,"n":"clock_seconds","k":"variable","len":1,"c":true},{"a":1063,"n":"clock_minutes","k":"variable","len":1,"c":true},{"a":1064,"n":"clock_hours","k":"variable","len":1,"c":true},{"a":1065,"n":"clock_pm","k":"variable","len":2,"c":true},{"a":1067,"n":"act_2ee1_count","k":"variable","len":1,"c":true},{"a":1068,"n":"act_2ee1_bits","k":"variable","len":1,"c":true},{"a":1069,"n":"dog_colour","k":"variable","len":1,"c":true},{"a":1070,"n":"head_colour","k":"variable","len":2,"c":true},{"a":1072,"n":"frame_count_2","k":"variable","len":2,"c":true},{"a":1074,"n":"act_timer_running","k":"variable","len":1,"c":true},{"a":1075,"n":"act_timer_count","k":"variable","len":1,"c":true},{"a":1076,"n":"cold_start","k":"routine","len":196,"c":true},{"a":1082,"n":"b_043A","k":"branch","len":1,"c":false},{"a":1096,"n":"b_0448","k":"branch","len":1,"c":false},{"a":1159,"n":"b_0487","k":"branch","len":1,"c":false},{"a":1178,"n":"b_049A","k":"branch","len":1,"c":false},{"a":1197,"n":"b_04AD","k":"branch","len":1,"c":false},{"a":1209,"n":"b_04B9","k":"branch","len":1,"c":false},{"a":1218,"n":"b_04C2","k":"branch","len":1,"c":false},{"a":1243,"n":"b_04DB","k":"branch","len":1,"c":false},{"a":1272,"n":"time_prompt","k":"routine","len":145,"c":true},{"a":1286,"n":"j_0506","k":"branch","len":1,"c":false},{"a":1301,"n":"b_0515","k":"branch","len":1,"c":false},{"a":1334,"n":"b_0536","k":"branch","len":1,"c":false},{"a":1365,"n":"b_0555","k":"branch","len":1,"c":false},{"a":1385,"n":"b_0569","k":"branch","len":1,"c":false},{"a":1417,"n":"set_screen_on","k":"routine","len":21,"c":true},{"a":1432,"n":"b_0598","k":"branch","len":1,"c":false},{"a":1438,"n":"read_joysticks","k":"routine","len":38,"c":true},{"a":1476,"n":"shift_count","k":"variable","len":1,"c":true},{"a":1477,"n":"ctrl_count","k":"variable","len":1,"c":true},{"a":1478,"n":"scan_keyboard_exit","k":"routine","len":1,"c":true},{"a":1479,"n":"scan_keyboard","k":"routine","len":5,"c":true},{"a":1484,"n":"scan_keyboard_now","k":"routine","len":197,"c":true},{"a":1531,"n":"b_05FB","k":"branch","len":1,"c":false},{"a":1570,"n":"b_0622","k":"branch","len":1,"c":false},{"a":1579,"n":"b_062B","k":"branch","len":1,"c":false},{"a":1585,"n":"b_0631","k":"branch","len":1,"c":false},{"a":1593,"n":"b_0639","k":"branch","len":1,"c":false},{"a":1614,"n":"b_064E","k":"branch","len":1,"c":false},{"a":1621,"n":"b_0655","k":"branch","len":1,"c":false},{"a":1636,"n":"b_0664","k":"branch","len":1,"c":false},{"a":1647,"n":"b_066F","k":"branch","len":1,"c":false},{"a":1653,"n":"b_0675","k":"branch","len":1,"c":false},{"a":1659,"n":"b_067B","k":"branch","len":1,"c":false},{"a":1676,"n":"b_068C","k":"branch","len":1,"c":false},{"a":1680,"n":"r_0690","k":"branch","len":1,"c":false},{"a":1681,"n":"key_ascii","k":"table","len":64,"c":true},{"a":1745,"n":"key_col_bits","k":"table","len":8,"c":true},{"a":1753,"n":"key_row_select","k":"table","len":8,"c":true},{"a":1761,"n":"vic_init_values","k":"table","len":47,"c":true},{"a":1808,"n":"text_band_timer","k":"variable","len":1,"c":true},{"a":1809,"n":"text_band_bottom","k":"variable","len":1,"c":true},{"a":1810,"n":"cursor_off","k":"variable","len":1,"c":true},{"a":1811,"n":"irq_handler","k":"routine","len":237,"c":true},{"a":1842,"n":"b_0732","k":"branch","len":1,"c":false},{"a":1851,"n":"b_073B","k":"branch","len":1,"c":false},{"a":1863,"n":"b_0747","k":"branch","len":1,"c":false},{"a":1881,"n":"b_0759","k":"branch","len":1,"c":false},{"a":1923,"n":"b_0783","k":"branch","len":1,"c":false},{"a":1973,"n":"b_07B5","k":"branch","len":1,"c":false},{"a":1983,"n":"b_07BF","k":"branch","len":1,"c":false},{"a":2011,"n":"b_07DB","k":"branch","len":1,"c":false},{"a":2016,"n":"b_07E0","k":"branch","len":1,"c":false},{"a":2023,"n":"b_07E7","k":"branch","len":1,"c":false},{"a":2025,"n":"b_07E9","k":"branch","len":1,"c":false},{"a":2031,"n":"j_07EF","k":"branch","len":1,"c":false},{"a":2048,"n":"irq_frame_counters","k":"routine","len":42,"c":true},{"a":2054,"n":"b_0806","k":"branch","len":1,"c":false},{"a":2072,"n":"b_0818","k":"branch","len":1,"c":false},{"a":2075,"n":"j_081B","k":"branch","len":1,"c":false},{"a":2090,"n":"nmi_rti","k":"routine","len":1,"c":true},{"a":2091,"n":"irq_shim","k":"routine","len":8,"c":true},{"a":2099,"n":"nmi_shim","k":"routine","len":3,"c":true},{"a":2102,"n":"cursor_sprite_save","k":"routine","len":47,"c":true},{"a":2149,"n":"cursor_sprite_restore","k":"routine","len":47,"c":true},{"a":2196,"n":"count_sprites_near_band","k":"routine","len":21,"c":true},{"a":2200,"n":"b_0898","k":"branch","len":1,"c":false},{"a":2212,"n":"b_08A4","k":"branch","len":1,"c":false},{"a":2217,"n":"to_upper","k":"routine","len":8,"c":true},{"a":2224,"n":"r_08B0","k":"branch","len":1,"c":false},{"a":2225,"n":"parse_bcd","k":"routine","len":34,"c":true},{"a":2229,"n":"j_08B5","k":"branch","len":1,"c":false},{"a":2258,"n":"r_08D2","k":"branch","len":1,"c":false},{"a":2259,"n":"cold_clear_zp","k":"table","len":9,"c":true},{"a":2268,"n":"bit_masks","k":"table","len":8,"c":true},{"a":2276,"n":"bit_masks_inverted","k":"table","len":8,"c":true},{"a":2284,"n":"unused_pair_masks","k":"table","len":16,"c":true},{"a":2300,"n":"band_split_delays","k":"table","len":9,"c":true},{"a":2309,"n":"txt_time_prompt","k":"table","len":34,"c":true},{"a":2343,"n":"irq_vector_init","k":"table","len":6,"c":true},{"a":2349,"n":"irq_saved_port","k":"variable","len":1,"c":true},{"a":2350,"n":"cursor_sprite_reg","k":"variable","len":1,"c":true},{"a":2351,"n":"request_score","k":"variable","len":1,"c":true},{"a":2352,"n":"main_stage","k":"variable","len":1,"c":true},{"a":2353,"n":"main_loop","k":"routine","len":170,"c":true},{"a":2461,"n":"b_099D","k":"branch","len":1,"c":false},{"a":2486,"n":"b_09B6","k":"branch","len":1,"c":false},{"a":2489,"n":"b_09B9","k":"branch","len":1,"c":false},{"a":2523,"n":"main_passes","k":"variable","len":1,"c":true},{"a":2524,"n":"clock_start","k":"routine","len":13,"c":true},{"a":2537,"n":"clock_redraw","k":"variable","len":1,"c":true},{"a":2538,"n":"phone_countdown","k":"variable","len":1,"c":true},{"a":2539,"n":"house_clock","k":"routine","len":38,"c":true},{"a":2566,"n":"b_0A06","k":"branch","len":1,"c":false},{"a":2569,"n":"b_0A09","k":"branch","len":1,"c":false},{"a":2577,"n":"tick_divider","k":"variable","len":1,"c":true},{"a":2578,"n":"frame_bit7_seen","k":"variable","len":1,"c":true},{"a":2579,"n":"house_clock_tick","k":"routine","len":153,"c":true},{"a":2582,"n":"b_0A16","k":"branch","len":1,"c":false},{"a":2614,"n":"b_0A36","k":"branch","len":1,"c":false},{"a":2634,"n":"b_0A4A","k":"branch","len":1,"c":false},{"a":2668,"n":"b_0A6C","k":"branch","len":1,"c":false},{"a":2687,"n":"b_0A7F","k":"branch","len":1,"c":false},{"a":2699,"n":"b_0A8B","k":"branch","len":1,"c":false},{"a":2707,"n":"b_0A93","k":"branch","len":1,"c":false},{"a":2716,"n":"b_0A9C","k":"branch","len":1,"c":false},{"a":2724,"n":"j_0AA4","k":"branch","len":1,"c":false},{"a":2732,"n":"draw_wall_clock","k":"routine","len":229,"c":true},{"a":2739,"n":"b_0AB3","k":"branch","len":1,"c":false},{"a":2768,"n":"b_0AD0","k":"branch","len":1,"c":false},{"a":2782,"n":"b_0ADE","k":"branch","len":1,"c":false},{"a":2794,"n":"j_0AEA","k":"branch","len":1,"c":false},{"a":2823,"n":"b_0B07","k":"branch","len":1,"c":false},{"a":2852,"n":"b_0B24","k":"branch","len":1,"c":false},{"a":2876,"n":"b_0B3C","k":"branch","len":1,"c":false},{"a":2890,"n":"b_0B4A","k":"branch","len":1,"c":false},{"a":2917,"n":"b_0B65","k":"branch","len":1,"c":false},{"a":2944,"n":"b_0B80","k":"branch","len":1,"c":false},{"a":2961,"n":"start_illness","k":"routine","len":31,"c":true},{"a":2968,"n":"b_0B98","k":"branch","len":1,"c":false},{"a":2986,"n":"b_0BAA","k":"branch","len":1,"c":false},{"a":2992,"n":"tick_flag","k":"variable","len":1,"c":true},{"a":2993,"n":"alarm_pressed","k":"variable","len":1,"c":true},{"a":2994,"n":"daily_schedule","k":"routine","len":146,"c":true},{"a":3041,"n":"b_0BE1","k":"branch","len":1,"c":false},{"a":3054,"n":"b_0BEE","k":"branch","len":1,"c":false},{"a":3070,"n":"b_0BFE","k":"branch","len":1,"c":false},{"a":3073,"n":"b_0C01","k":"branch","len":1,"c":false},{"a":3088,"n":"b_0C10","k":"branch","len":1,"c":false},{"a":3100,"n":"j_0C1C","k":"branch","len":1,"c":false},{"a":3105,"n":"b_0C21","k":"branch","len":1,"c":false},{"a":3122,"n":"b_0C32","k":"branch","len":1,"c":false},{"a":3139,"n":"r_0C43","k":"branch","len":1,"c":false},{"a":3140,"n":"schedule_in_6_hours","k":"routine","len":16,"c":true},{"a":3146,"n":"j_0C4A","k":"branch","len":1,"c":false},{"a":3152,"n":"b_0C50","k":"branch","len":1,"c":false},{"a":3156,"n":"schedule_at_late_hour","k":"routine","len":6,"c":true},{"a":3162,"n":"draw_clock_hand","k":"routine","len":152,"c":true},{"a":3181,"n":"j_0C6D","k":"branch","len":1,"c":false},{"a":3224,"n":"b_0C98","k":"branch","len":1,"c":false},{"a":3226,"n":"b_0C9A","k":"branch","len":1,"c":false},{"a":3247,"n":"b_0CAF","k":"branch","len":1,"c":false},{"a":3259,"n":"b_0CBB","k":"branch","len":1,"c":false},{"a":3265,"n":"b_0CC1","k":"branch","len":1,"c":false},{"a":3271,"n":"b_0CC7","k":"branch","len":1,"c":false},{"a":3289,"n":"b_0CD9","k":"branch","len":1,"c":false},{"a":3301,"n":"j_0CE5","k":"branch","len":1,"c":false},{"a":3304,"n":"b_0CE8","k":"branch","len":1,"c":false},{"a":3313,"n":"r_0CF1","k":"branch","len":1,"c":false},{"a":3314,"n":"clock_hand_steps","k":"table","len":20,"c":true},{"a":3334,"n":"clock_hand_dirs","k":"table","len":20,"c":true},{"a":3354,"n":"clock_face_top","k":"table","len":16,"c":true},{"a":3370,"n":"clock_face_bottom","k":"table","len":16,"c":true},{"a":3386,"n":"spr_enable_shadow","k":"variable","len":1,"c":true},{"a":3387,"n":"spr_mcolour_shadow","k":"variable","len":1,"c":true},{"a":3388,"n":"fig_spr1_x","k":"variable","len":1,"c":true},{"a":3389,"n":"fig_spr1_y","k":"variable","len":1,"c":true},{"a":3390,"n":"fig_spr2_x","k":"variable","len":1,"c":true},{"a":3391,"n":"fig_spr2_y","k":"variable","len":1,"c":true},{"a":3392,"n":"fig_spr3_x","k":"variable","len":1,"c":true},{"a":3393,"n":"fig_spr3_y","k":"variable","len":1,"c":true},{"a":3394,"n":"fig_spr4_x","k":"variable","len":1,"c":true},{"a":3395,"n":"fig_spr4_y","k":"table","len":9,"c":true},{"a":3404,"n":"spr_xmsb_shadow","k":"variable","len":1,"c":true},{"a":3405,"n":"fig_spr1_colour","k":"variable","len":1,"c":true},{"a":3406,"n":"fig_spr2_colour","k":"variable","len":1,"c":true},{"a":3407,"n":"fig_spr3_colour","k":"variable","len":1,"c":true},{"a":3408,"n":"fig_spr4_colour","k":"table","len":5,"c":true},{"a":3413,"n":"fig_spr1_pointer","k":"variable","len":1,"c":true},{"a":3414,"n":"fig_spr2_pointer","k":"variable","len":1,"c":true},{"a":3415,"n":"fig_spr3_pointer","k":"variable","len":1,"c":true},{"a":3416,"n":"fig_spr4_pointer","k":"table","len":5,"c":true},{"a":3421,"n":"spr_priority_shadow","k":"variable","len":1,"c":true},{"a":3422,"n":"unpack_figure","k":"variable","len":2,"c":true},{"a":3424,"n":"figure_frame_base","k":"table","len":5,"c":true},{"a":3429,"n":"head_mood_offsets","k":"table","len":3,"c":true},{"a":3432,"n":"figure_sprite_block","k":"table","len":4,"c":true},{"a":3436,"n":"head_sprite_block","k":"variable","len":1,"c":true},{"a":3437,"n":"figure_colour_src_lo","k":"table","len":5,"c":true},{"a":3442,"n":"figure_colour_src_hi","k":"table","len":5,"c":true},{"a":3447,"n":"figure_frames","k":"table","len":64,"c":true},{"a":3565,"n":"figure_frames_dog","k":"table","len":28,"c":true},{"a":3593,"n":"figure_frames_head","k":"table","len":31,"c":true},{"a":3624,"n":"figure_frames_fig23","k":"table","len":25,"c":true},{"a":3649,"n":"unpack_figure_sprite","k":"routine","len":169,"c":true},{"a":3667,"n":"b_0E53","k":"branch","len":1,"c":false},{"a":3676,"n":"b_0E5C","k":"branch","len":1,"c":false},{"a":3704,"n":"b_0E78","k":"branch","len":1,"c":false},{"a":3769,"n":"b_0EB9","k":"branch","len":1,"c":false},{"a":3797,"n":"b_0ED5","k":"branch","len":1,"c":false},{"a":3818,"n":"unpack_src_index","k":"variable","len":1,"c":true},{"a":3819,"n":"unpack_dst_index","k":"variable","len":1,"c":true},{"a":3820,"n":"unpack_rle_rows","k":"routine","len":167,"c":true},{"a":3848,"n":"b_0F08","k":"branch","len":1,"c":false},{"a":3871,"n":"b_0F1F","k":"branch","len":1,"c":false},{"a":3882,"n":"b_0F2A","k":"branch","len":1,"c":false},{"a":3887,"n":"b_0F2F","k":"branch","len":1,"c":false},{"a":3930,"n":"b_0F5A","k":"branch","len":1,"c":false},{"a":3975,"n":"b_0F87","k":"branch","len":1,"c":false},{"a":3987,"n":"clip_row_bytes_left","k":"variable","len":1,"c":true},{"a":3988,"n":"figure_colour_and_outline","k":"routine","len":21,"c":true},{"a":3996,"n":"b_0F9C","k":"branch","len":1,"c":false},{"a":4009,"n":"figure_colour_src_lo_op","k":"routine","len":1,"c":true},{"a":4010,"n":"figure_colour_src_hi_op","k":"routine","len":40,"c":true},{"a":4022,"n":"b_0FB6","k":"branch","len":1,"c":false},{"a":4049,"n":"r_0FD1","k":"branch","len":1,"c":false},{"a":4050,"n":"update_figure_sprites","k":"routine","len":46,"c":true},{"a":4052,"n":"b_0FD4","k":"branch","len":1,"c":false},{"a":4077,"n":"b_0FED","k":"branch","len":1,"c":false},{"a":4096,"n":"sprite_frame_1000","k":"routine","len":1,"c":true},{"a":4097,"n":"sprite_pose_offset","k":"routine","len":30,"c":true},{"a":4118,"n":"b_1016","k":"branch","len":1,"c":false},{"a":4124,"n":"b_101C","k":"branch","len":1,"c":false},{"a":4127,"n":"sprite_depth_sort","k":"routine","len":154,"c":true},{"a":4129,"n":"b_1021","k":"branch","len":1,"c":false},{"a":4146,"n":"b_1032","k":"branch","len":1,"c":false},{"a":4155,"n":"b_103B","k":"branch","len":1,"c":false},{"a":4163,"n":"b_1043","k":"branch","len":1,"c":false},{"a":4173,"n":"b_104D","k":"branch","len":1,"c":false},{"a":4219,"n":"b_107B","k":"branch","len":1,"c":false},{"a":4242,"n":"b_1092","k":"branch","len":1,"c":false},{"a":4247,"n":"b_1097","k":"branch","len":1,"c":false},{"a":4278,"n":"b_10B6","k":"branch","len":1,"c":false},{"a":4281,"n":"sprite_set_positions","k":"routine","len":230,"c":true},{"a":4306,"n":"b_10D2","k":"branch","len":1,"c":false},{"a":4335,"n":"b_10EF","k":"branch","len":1,"c":false},{"a":4338,"n":"b_10F2","k":"branch","len":1,"c":false},{"a":4394,"n":"b_112A","k":"branch","len":1,"c":false},{"a":4429,"n":"b_114D","k":"branch","len":1,"c":false},{"a":4471,"n":"b_1177","k":"branch","len":1,"c":false},{"a":4505,"n":"j_1199","k":"branch","len":1,"c":false},{"a":4511,"n":"mask_person_lower","k":"variable","len":1,"c":true},{"a":4512,"n":"mask_person_upper","k":"table","len":5,"c":true},{"a":4517,"n":"mask_person_all","k":"table","len":5,"c":true},{"a":4522,"n":"mask_person_mc","k":"table","len":5,"c":true},{"a":4527,"n":"mask_dog","k":"table","len":7,"c":true},{"a":4534,"n":"sprite_write_vic","k":"routine","len":247,"c":true},{"a":4565,"n":"b_11D5","k":"branch","len":1,"c":false},{"a":4579,"n":"b_11E3","k":"branch","len":1,"c":false},{"a":4590,"n":"b_11EE","k":"branch","len":1,"c":false},{"a":4601,"n":"b_11F9","k":"branch","len":1,"c":false},{"a":4638,"n":"b_121E","k":"branch","len":1,"c":false},{"a":4652,"n":"b_122C","k":"branch","len":1,"c":false},{"a":4661,"n":"b_1235","k":"branch","len":1,"c":false},{"a":4663,"n":"b_1237","k":"branch","len":1,"c":false},{"a":4694,"n":"b_1256","k":"branch","len":1,"c":false},{"a":4708,"n":"b_1264","k":"branch","len":1,"c":false},{"a":4722,"n":"b_1272","k":"branch","len":1,"c":false},{"a":4727,"n":"b_1277","k":"branch","len":1,"c":false},{"a":4735,"n":"b_127F","k":"branch","len":1,"c":false},{"a":4746,"n":"b_128A","k":"branch","len":1,"c":false},{"a":4781,"n":"pose_yoff_lo","k":"table","len":5,"c":true},{"a":4786,"n":"pose_yoff_hi","k":"table","len":5,"c":true},{"a":4791,"n":"build_outline","k":"routine","len":126,"c":true},{"a":4795,"n":"b_12BB","k":"branch","len":1,"c":false},{"a":4813,"n":"b_12CD","k":"branch","len":1,"c":false},{"a":4815,"n":"b_12CF","k":"branch","len":1,"c":false},{"a":4895,"n":"b_131F","k":"branch","len":1,"c":false},{"a":4917,"n":"outline_fetch_row","k":"routine","len":40,"c":true},{"a":4922,"n":"b_133A","k":"branch","len":1,"c":false},{"a":4947,"n":"b_1353","k":"branch","len":1,"c":false},{"a":4957,"n":"person_upper_dy","k":"variable","len":1,"c":true},{"a":4958,"n":"person_upper_dx","k":"variable","len":1,"c":true},{"a":4959,"n":"mirror_mc_byte","k":"routine","len":37,"c":true},{"a":4972,"n":"b_136C","k":"branch","len":1,"c":false},{"a":4995,"n":"r_1383","k":"branch","len":1,"c":false},{"a":4996,"n":"mirror_save_x","k":"variable","len":1,"c":true},{"a":4997,"n":"mirror_work","k":"variable","len":1,"c":true},{"a":4998,"n":"mirror_result","k":"variable","len":1,"c":true},{"a":4999,"n":"spr_scratch","k":"table","len":3,"c":true},{"a":5002,"n":"outline_row_mid","k":"variable","len":1,"c":true},{"a":5003,"n":"outline_row_mid_1","k":"variable","len":1,"c":true},{"a":5004,"n":"outline_row_mid_2","k":"variable","len":1,"c":true},{"a":5005,"n":"outline_row_prev","k":"table","len":3,"c":true},{"a":5008,"n":"outline_save_x","k":"variable","len":1,"c":true},{"a":5009,"n":"outline_src_idx","k":"variable","len":1,"c":true},{"a":5010,"n":"outline_dst_idx","k":"variable","len":1,"c":true},{"a":5011,"n":"colour_person_lower","k":"variable","len":1,"c":true},{"a":5012,"n":"colour_figure2","k":"variable","len":1,"c":true},{"a":5013,"n":"colour_figure3","k":"variable","len":1,"c":true},{"a":5014,"n":"sprite_addr","k":"routine","len":20,"c":true},{"a":5034,"n":"clip_save_x","k":"variable","len":1,"c":true},{"a":5035,"n":"clip_value","k":"variable","len":1,"c":true},{"a":5036,"n":"clip_sprite","k":"routine","len":67,"c":true},{"a":5047,"n":"b_13B7","k":"branch","len":1,"c":false},{"a":5066,"n":"b_13CA","k":"branch","len":1,"c":false},{"a":5071,"n":"b_13CF","k":"branch","len":1,"c":false},{"a":5079,"n":"b_13D7","k":"branch","len":1,"c":false},{"a":5099,"n":"b_13EB","k":"branch","len":1,"c":false},{"a":5103,"n":"clip_masks","k":"table","len":36,"c":true},{"a":5139,"n":"clip_masks_left","k":"table","len":36,"c":true},{"a":5175,"n":"person_upper_dy_by_pose","k":"table","len":64,"c":true},{"a":5239,"n":"person_upper_dy_pose40","k":"table","len":29,"c":true},{"a":5268,"n":"person_upper_dx_by_pose","k":"table","len":64,"c":true},{"a":5332,"n":"person_upper_dx_pose40","k":"table","len":29,"c":true},{"a":5361,"n":"pose_yoff_person","k":"table","len":93,"c":true},{"a":5454,"n":"pose_yoff_dog","k":"table","len":28,"c":true},{"a":5482,"n":"pose_yoff_upper","k":"variable","len":2,"c":true},{"a":5484,"n":"pose_yoff_objects","k":"table","len":25,"c":true},{"a":5509,"n":"compose_from_parts","k":"routine","len":76,"c":true},{"a":5542,"n":"b_15A6","k":"branch","len":1,"c":false},{"a":5555,"n":"b_15B3","k":"branch","len":1,"c":false},{"a":5567,"n":"b_15BF","k":"branch","len":1,"c":false},{"a":5576,"n":"b_15C8","k":"branch","len":1,"c":false},{"a":5585,"n":"compose_store","k":"routine","len":1,"c":true},{"a":5586,"n":"compose_store_lo","k":"routine","len":1,"c":true},{"a":5587,"n":"compose_store_hi","k":"routine","len":61,"c":true},{"a":5595,"n":"b_15DB","k":"branch","len":1,"c":false},{"a":5627,"n":"b_15FB","k":"branch","len":1,"c":false},{"a":5630,"n":"b_15FE","k":"branch","len":1,"c":false},{"a":5635,"n":"b_1603","k":"branch","len":1,"c":false},{"a":5643,"n":"b_160B","k":"branch","len":1,"c":false},{"a":5648,"n":"sprite_parts","k":"table","len":158,"c":true},{"a":5806,"n":"set_custom_location","k":"routine","len":19,"c":true},{"a":5825,"n":"figure_face_left","k":"table","len":3,"c":true},{"a":5828,"n":"move_figure","k":"routine","len":45,"c":true},{"a":5839,"n":"b_16CF","k":"branch","len":1,"c":false},{"a":5870,"n":"b_16EE","k":"branch","len":1,"c":false},{"a":5873,"n":"move_states","k":"table","len":14,"c":true},{"a":5887,"n":"wander_wait","k":"variable","len":1,"c":true},{"a":5888,"n":"dog_wander_wait","k":"variable","len":1,"c":true},{"a":5889,"n":"mstate_idle","k":"routine","len":35,"c":true},{"a":5907,"n":"b_1713","k":"branch","len":1,"c":false},{"a":5909,"n":"b_1715","k":"branch","len":1,"c":false},{"a":5924,"n":"mstate_next","k":"routine","len":3,"c":true},{"a":5927,"n":"mstate_reset_timer","k":"routine","len":21,"c":true},{"a":5939,"n":"b_1733","k":"branch","len":1,"c":false},{"a":5944,"n":"b_1738","k":"branch","len":1,"c":false},{"a":5948,"n":"mstate_dog","k":"routine","len":189,"c":true},{"a":5970,"n":"b_1752","k":"branch","len":1,"c":false},{"a":5977,"n":"b_1759","k":"branch","len":1,"c":false},{"a":5998,"n":"b_176E","k":"branch","len":1,"c":false},{"a":6006,"n":"b_1776","k":"branch","len":1,"c":false},{"a":6024,"n":"r_1788","k":"branch","len":1,"c":false},{"a":6025,"n":"b_1789","k":"branch","len":1,"c":false},{"a":6052,"n":"b_17A4","k":"branch","len":1,"c":false},{"a":6063,"n":"b_17AF","k":"branch","len":1,"c":false},{"a":6082,"n":"b_17C2","k":"branch","len":1,"c":false},{"a":6100,"n":"b_17D4","k":"branch","len":1,"c":false},{"a":6104,"n":"b_17D8","k":"branch","len":1,"c":false},{"a":6114,"n":"b_17E2","k":"branch","len":1,"c":false},{"a":6134,"n":"b_17F6","k":"branch","len":1,"c":false},{"a":6137,"n":"dog_eating","k":"variable","len":1,"c":true},{"a":6138,"n":"dog_eat_timer","k":"variable","len":1,"c":true},{"a":6139,"n":"dog_eat_poses","k":"table","len":17,"c":true},{"a":6156,"n":"dog_destinations","k":"table","len":21,"c":true},{"a":6177,"n":"draw_bowl","k":"routine","len":21,"c":true},{"a":6198,"n":"bowl_line3","k":"table","len":7,"c":true},{"a":6205,"n":"bowl_line4","k":"table","len":7,"c":true},{"a":6212,"n":"mstate_route","k":"routine","len":23,"c":true},{"a":6230,"n":"b_1856","k":"branch","len":1,"c":false},{"a":6234,"n":"r_185A","k":"branch","len":1,"c":false},{"a":6235,"n":"mstate_to_stairs","k":"routine","len":78,"c":true},{"a":6264,"n":"b_1878","k":"branch","len":1,"c":false},{"a":6288,"n":"b_1890","k":"branch","len":1,"c":false},{"a":6302,"n":"b_189E","k":"branch","len":1,"c":false},{"a":6313,"n":"mstate_stairs","k":"routine","len":34,"c":true},{"a":6324,"n":"b_18B4","k":"branch","len":1,"c":false},{"a":6333,"n":"b_18BD","k":"branch","len":1,"c":false},{"a":6347,"n":"mstate_to_target","k":"routine","len":23,"c":true},{"a":6369,"n":"r_18E1","k":"branch","len":1,"c":false},{"a":6370,"n":"walk_left","k":"routine","len":23,"c":true},{"a":6381,"n":"j_18ED","k":"branch","len":1,"c":false},{"a":6393,"n":"walk_right","k":"routine","len":14,"c":true},{"a":6407,"n":"move_right","k":"routine","len":31,"c":true},{"a":6420,"n":"b_1914","k":"branch","len":1,"c":false},{"a":6432,"n":"b_1920","k":"branch","len":1,"c":false},{"a":6438,"n":"set_facing","k":"routine","len":17,"c":true},{"a":6454,"n":"r_1936","k":"branch","len":1,"c":false},{"a":6455,"n":"move_left","k":"routine","len":21,"c":true},{"a":6476,"n":"speed_mask","k":"routine","len":10,"c":true},{"a":6486,"n":"speed_masks","k":"table","len":8,"c":true},{"a":6494,"n":"random","k":"routine","len":48,"c":true},{"a":6505,"n":"b_1969","k":"branch","len":1,"c":false},{"a":6542,"n":"hex_digits_unused","k":"routine","len":16,"c":true},{"a":6558,"n":"hex_digit","k":"routine","len":10,"c":true},{"a":6567,"n":"r_19A7","k":"branch","len":1,"c":false},{"a":6568,"n":"walk_step","k":"routine","len":311,"c":true},{"a":6577,"n":"b_19B1","k":"branch","len":1,"c":false},{"a":6604,"n":"b_19CC","k":"branch","len":1,"c":false},{"a":6623,"n":"b_19DF","k":"branch","len":1,"c":false},{"a":6639,"n":"b_19EF","k":"branch","len":1,"c":false},{"a":6668,"n":"b_1A0C","k":"branch","len":1,"c":false},{"a":6686,"n":"b_1A1E","k":"branch","len":1,"c":false},{"a":6691,"n":"b_1A23","k":"branch","len":1,"c":false},{"a":6731,"n":"b_1A4B","k":"branch","len":1,"c":false},{"a":6750,"n":"j_1A5E","k":"branch","len":1,"c":false},{"a":6756,"n":"b_1A64","k":"branch","len":1,"c":false},{"a":6778,"n":"b_1A7A","k":"branch","len":1,"c":false},{"a":6791,"n":"j_1A87","k":"branch","len":1,"c":false},{"a":6802,"n":"b_1A92","k":"branch","len":1,"c":false},{"a":6821,"n":"b_1AA5","k":"branch","len":1,"c":false},{"a":6843,"n":"b_1ABB","k":"branch","len":1,"c":false},{"a":6846,"n":"b_1ABE","k":"branch","len":1,"c":false},{"a":6863,"n":"b_1ACF","k":"branch","len":1,"c":false},{"a":6879,"n":"figure_set_pose","k":"routine","len":83,"c":true},{"a":6885,"n":"b_1AE5","k":"branch","len":1,"c":false},{"a":6917,"n":"b_1B05","k":"branch","len":1,"c":false},{"a":6953,"n":"b_1B29","k":"branch","len":1,"c":false},{"a":6962,"n":"stair_step","k":"routine","len":254,"c":true},{"a":6975,"n":"b_1B3F","k":"branch","len":1,"c":false},{"a":6995,"n":"b_1B53","k":"branch","len":1,"c":false},{"a":7028,"n":"b_1B74","k":"branch","len":1,"c":false},{"a":7036,"n":"b_1B7C","k":"branch","len":1,"c":false},{"a":7042,"n":"b_1B82","k":"branch","len":1,"c":false},{"a":7055,"n":"b_1B8F","k":"branch","len":1,"c":false},{"a":7091,"n":"b_1BB3","k":"branch","len":1,"c":false},{"a":7094,"n":"b_1BB6","k":"branch","len":1,"c":false},{"a":7113,"n":"b_1BC9","k":"branch","len":1,"c":false},{"a":7142,"n":"b_1BE6","k":"branch","len":1,"c":false},{"a":7152,"n":"b_1BF0","k":"branch","len":1,"c":false},{"a":7188,"n":"b_1C14","k":"branch","len":1,"c":false},{"a":7216,"n":"stair_anim","k":"routine","len":95,"c":true},{"a":7247,"n":"b_1C4F","k":"branch","len":1,"c":false},{"a":7257,"n":"b_1C59","k":"branch","len":1,"c":false},{"a":7263,"n":"b_1C5F","k":"branch","len":1,"c":false},{"a":7279,"n":"b_1C6F","k":"branch","len":1,"c":false},{"a":7311,"n":"set_stair_state","k":"routine","len":12,"c":true},{"a":7323,"n":"stair_poses","k":"table","len":32,"c":true},{"a":7355,"n":"stair_face","k":"table","len":32,"c":true},{"a":7387,"n":"stair_dx","k":"table","len":32,"c":true},{"a":7419,"n":"stair_dy","k":"table","len":32,"c":true},{"a":7451,"n":"stair_part_steps","k":"table","len":4,"c":true},{"a":7455,"n":"stair_land_dx","k":"variable","len":1,"c":true},{"a":7456,"n":"stair_land_dy","k":"table","len":3,"c":true},{"a":7459,"n":"floor_of_y","k":"routine","len":19,"c":true},{"a":7477,"n":"r_1D35","k":"branch","len":1,"c":false},{"a":7478,"n":"location_y","k":"table","len":46,"c":true},{"a":7524,"n":"location_y_door","k":"table","len":8,"c":true},{"a":7532,"n":"location_y_custom","k":"variable","len":1,"c":true},{"a":7533,"n":"location_x","k":"table","len":46,"c":true},{"a":7579,"n":"location_x_door","k":"table","len":8,"c":true},{"a":7587,"n":"location_x_custom","k":"variable","len":1,"c":true},{"a":7588,"n":"location_depth","k":"table","len":54,"c":true},{"a":7642,"n":"location_depth_custom","k":"variable","len":1,"c":true},{"a":7643,"n":"walk_frame_mask","k":"variable","len":2,"c":true},{"a":7645,"n":"walk_anim","k":"routine","len":52,"c":true},{"a":7657,"n":"b_1DE9","k":"branch","len":1,"c":false},{"a":7696,"n":"r_1E10","k":"branch","len":1,"c":false},{"a":7697,"n":"at_target","k":"routine","len":29,"c":true},{"a":7725,"n":"r_1E2D","k":"branch","len":1,"c":false},{"a":7726,"n":"location_x_of","k":"routine","len":31,"c":true},{"a":7749,"n":"b_1E45","k":"branch","len":1,"c":false},{"a":7753,"n":"b_1E49","k":"branch","len":1,"c":false},{"a":7757,"n":"calc_half_x","k":"routine","len":13,"c":true},{"a":7770,"n":"wait8_count","k":"variable","len":1,"c":true},{"a":7771,"n":"activity_47","k":"routine","len":3,"c":true},{"a":7774,"n":"activity_47_phases","k":"table","len":16,"c":true},{"a":7790,"n":"activity_48","k":"routine","len":3,"c":true},{"a":7793,"n":"activity_48_phases","k":"table","len":20,"c":true},{"a":7813,"n":"activity_49","k":"routine","len":3,"c":true},{"a":7816,"n":"activity_49_phases","k":"table","len":20,"c":true},{"a":7836,"n":"drop_object","k":"routine","len":11,"c":true},{"a":7847,"n":"take_object","k":"routine","len":14,"c":true},{"a":7861,"n":"stove_patch","k":"routine","len":25,"c":true},{"a":7866,"n":"b_1EBA","k":"branch","len":1,"c":false},{"a":7886,"n":"put_on_stove","k":"routine","len":16,"c":true},{"a":7902,"n":"pose_19","k":"routine","len":10,"c":true},{"a":7912,"n":"wait_8_passes","k":"routine","len":14,"c":true},{"a":7925,"n":"r_1EF5","k":"branch","len":1,"c":false},{"a":7926,"n":"stove_on","k":"routine","len":11,"c":true},{"a":7937,"n":"stove_off","k":"routine","len":13,"c":true},{"a":7950,"n":"shower_ticks","k":"variable","len":1,"c":true},{"a":7951,"n":"shower_time","k":"variable","len":1,"c":true},{"a":7952,"n":"shower_save_depth","k":"variable","len":1,"c":true},{"a":7953,"n":"shower_save_x","k":"variable","len":1,"c":true},{"a":7954,"n":"shower_save_clip","k":"variable","len":1,"c":true},{"a":7955,"n":"shower_water_frame","k":"variable","len":1,"c":true},{"a":7956,"n":"shower_start","k":"routine","len":128,"c":true},{"a":8084,"n":"shower_step","k":"variable","len":1,"c":true},{"a":8085,"n":"shower_end","k":"routine","len":11,"c":true},{"a":8096,"n":"unused_handler_1fa0","k":"routine","len":13,"c":true},{"a":8108,"n":"r_1FAC","k":"branch","len":1,"c":false},{"a":8109,"n":"shower_run","k":"routine","len":42,"c":true},{"a":8137,"n":"b_1FC9","k":"branch","len":1,"c":false},{"a":8151,"n":"shower_steps","k":"variable","len":1,"c":true},{"a":8152,"n":"shower_steps_hi","k":"table","len":15,"c":true},{"a":8167,"n":"shower_show","k":"routine","len":12,"c":true},{"a":8179,"n":"shower_finish","k":"routine","len":15,"c":true},{"a":8194,"n":"shower_finish_restore","k":"routine","len":42,"c":true},{"a":8236,"n":"shower_pose_41","k":"routine","len":26,"c":true},{"a":8238,"n":"b_202E","k":"branch","len":1,"c":false},{"a":8258,"n":"b_2042","k":"branch","len":1,"c":false},{"a":8261,"n":"r_2045","k":"branch","len":1,"c":false},{"a":8262,"n":"shower_pose_42","k":"routine","len":5,"c":true},{"a":8266,"n":"r_204A","k":"branch","len":1,"c":false},{"a":8267,"n":"shower_pose_43_44","k":"routine","len":78,"c":true},{"a":8284,"n":"b_205C","k":"branch","len":1,"c":false},{"a":8291,"n":"b_2063","k":"branch","len":1,"c":false},{"a":8297,"n":"b_2069","k":"branch","len":1,"c":false},{"a":8325,"n":"b_2085","k":"branch","len":1,"c":false},{"a":8328,"n":"b_2088","k":"branch","len":1,"c":false},{"a":8339,"n":"b_2093","k":"branch","len":1,"c":false},{"a":8345,"n":"shower_pose_40","k":"routine","len":11,"c":true},{"a":8352,"n":"b_20A0","k":"branch","len":1,"c":false},{"a":8356,"n":"shower_wait","k":"routine","len":29,"c":true},{"a":8379,"n":"b_20BB","k":"branch","len":1,"c":false},{"a":8386,"n":"shower_wait_draw","k":"routine","len":26,"c":true},{"a":8408,"n":"b_20D8","k":"branch","len":1,"c":false},{"a":8412,"n":"shower_trait_masks","k":"table","len":8,"c":true},{"a":8420,"n":"shower_water_tick","k":"routine","len":60,"c":true},{"a":8429,"n":"b_20ED","k":"branch","len":1,"c":false},{"a":8450,"n":"b_2102","k":"branch","len":1,"c":false},{"a":8479,"n":"r_211F","k":"branch","len":1,"c":false},{"a":8480,"n":"shower_rare_chance","k":"routine","len":15,"c":true},{"a":8494,"n":"r_212E","k":"branch","len":1,"c":false},{"a":8495,"n":"face_away_count","k":"variable","len":1,"c":true},{"a":8496,"n":"face_away_tick","k":"variable","len":1,"c":true},{"a":8497,"n":"face_away_sound","k":"routine","len":5,"c":true},{"a":8502,"n":"face_away_turn","k":"routine","len":32,"c":true},{"a":8528,"n":"r_2150","k":"branch","len":1,"c":false},{"a":8529,"n":"b_2151","k":"branch","len":1,"c":false},{"a":8534,"n":"face_away_idle","k":"routine","len":88,"c":true},{"a":8554,"n":"b_216A","k":"branch","len":1,"c":false},{"a":8567,"n":"b_2177","k":"branch","len":1,"c":false},{"a":8591,"n":"b_218F","k":"branch","len":1,"c":false},{"a":8602,"n":"b_219A","k":"branch","len":1,"c":false},{"a":8622,"n":"clear_subphase_next","k":"routine","len":7,"c":true},{"a":8629,"n":"chair_sit_machine","k":"routine","len":3,"c":true},{"a":8644,"n":"chair_walk","k":"routine","len":15,"c":true},{"a":8658,"n":"r_21D2","k":"branch","len":1,"c":false},{"a":8659,"n":"chair_turn","k":"routine","len":26,"c":true},{"a":8685,"n":"chair_sit_time","k":"variable","len":1,"c":true},{"a":8686,"n":"chair_sit","k":"routine","len":97,"c":true},{"a":8716,"n":"b_220C","k":"branch","len":1,"c":false},{"a":8721,"n":"b_2211","k":"branch","len":1,"c":false},{"a":8724,"n":"b_2214","k":"branch","len":1,"c":false},{"a":8729,"n":"b_2219","k":"branch","len":1,"c":false},{"a":8761,"n":"b_2239","k":"branch","len":1,"c":false},{"a":8778,"n":"b_224A","k":"branch","len":1,"c":false},{"a":8783,"n":"act52_greet_reply","k":"routine","len":3,"c":true},{"a":8798,"n":"greet_wait_rts","k":"routine","len":1,"c":true},{"a":8799,"n":"greet_turn_front","k":"routine","len":14,"c":true},{"a":8813,"n":"greet_turn_3q","k":"routine","len":26,"c":true},{"a":8828,"n":"b_227C","k":"branch","len":1,"c":false},{"a":8836,"n":"b_2284","k":"branch","len":1,"c":false},{"a":8839,"n":"greet_set_time","k":"routine","len":11,"c":true},{"a":8850,"n":"greet_hold","k":"routine","len":9,"c":true},{"a":8859,"n":"greet_time","k":"variable","len":2,"c":true},{"a":8861,"n":"act35_head_faces","k":"routine","len":3,"c":true},{"a":8888,"n":"act36_pose_52_53","k":"routine","len":3,"c":true},{"a":8917,"n":"act37_dance_steps","k":"routine","len":3,"c":true},{"a":8954,"n":"act38_pose_54_55","k":"routine","len":3,"c":true},{"a":8983,"n":"act39_pose_56_57","k":"routine","len":3,"c":true},{"a":9016,"n":"act40_pose_58_59","k":"routine","len":3,"c":true},{"a":9045,"n":"act42_overhead_lines","k":"routine","len":3,"c":true},{"a":9086,"n":"act41_talk","k":"routine","len":3,"c":true},{"a":9103,"n":"act46_head_expressions","k":"routine","len":3,"c":true},{"a":9118,"n":"act45_look_side_to_side","k":"routine","len":3,"c":true},{"a":9133,"n":"head_1e_machine","k":"routine","len":3,"c":true},{"a":9144,"n":"anim_tick","k":"variable","len":1,"c":true},{"a":9145,"n":"pose_loop_count","k":"variable","len":1,"c":true},{"a":9146,"n":"head_seq_step","k":"variable","len":1,"c":true},{"a":9147,"n":"talk_skip","k":"variable","len":1,"c":true},{"a":9148,"n":"hide_item_next","k":"routine","len":8,"c":true},{"a":9156,"n":"head_1e_start","k":"routine","len":15,"c":true},{"a":9171,"n":"end_submachine","k":"routine","len":6,"c":true},{"a":9177,"n":"head_seq_repeat","k":"routine","len":38,"c":true},{"a":9199,"n":"b_23EF","k":"branch","len":1,"c":false},{"a":9215,"n":"pop_return","k":"routine","len":3,"c":true},{"a":9218,"n":"pop_next_subphase","k":"routine","len":5,"c":true},{"a":9223,"n":"head_seq_start","k":"routine","len":8,"c":true},{"a":9231,"n":"head_busy","k":"routine","len":6,"c":true},{"a":9237,"n":"head_seq_tick","k":"routine","len":25,"c":true},{"a":9262,"n":"head_seq_expressions","k":"routine","len":23,"c":true},{"a":9268,"n":"j_2434","k":"branch","len":1,"c":false},{"a":9282,"n":"b_2442","k":"branch","len":1,"c":false},{"a":9285,"n":"head_seq_look_around","k":"routine","len":9,"c":true},{"a":9294,"n":"head_seq_expr_table","k":"table","len":9,"c":true},{"a":9303,"n":"head_seq_look_table","k":"table","len":9,"c":true},{"a":9312,"n":"head_seq_facing_table","k":"table","len":9,"c":true},{"a":9321,"n":"talk_until_timer","k":"routine","len":24,"c":true},{"a":9338,"n":"r_247A","k":"branch","len":1,"c":false},{"a":9339,"n":"b_247B","k":"branch","len":1,"c":false},{"a":9345,"n":"talk_wait","k":"routine","len":11,"c":true},{"a":9353,"n":"b_2489","k":"branch","len":1,"c":false},{"a":9357,"n":"turn_toward_front_step","k":"routine","len":59,"c":true},{"a":9379,"n":"b_24A3","k":"branch","len":1,"c":false},{"a":9385,"n":"b_24A9","k":"branch","len":1,"c":false},{"a":9416,"n":"talk_mouth","k":"routine","len":60,"c":true},{"a":9435,"n":"b_24DB","k":"branch","len":1,"c":false},{"a":9453,"n":"b_24ED","k":"branch","len":1,"c":false},{"a":9464,"n":"b_24F8","k":"branch","len":1,"c":false},{"a":9467,"n":"j_24FB","k":"branch","len":1,"c":false},{"a":9476,"n":"head_redraw","k":"routine","len":9,"c":true},{"a":9485,"n":"talk_mouth_poses","k":"table","len":4,"c":true},{"a":9489,"n":"phase_done_head_reset","k":"routine","len":5,"c":true},{"a":9494,"n":"subphase_done_head_reset","k":"routine","len":13,"c":true},{"a":9496,"n":"j_2518","k":"branch","len":1,"c":false},{"a":9507,"n":"random_loop_back_4","k":"routine","len":18,"c":true},{"a":9517,"n":"b_252D","k":"branch","len":1,"c":false},{"a":9524,"n":"r_2534","k":"branch","len":1,"c":false},{"a":9525,"n":"turn_front_then_next","k":"routine","len":11,"c":true},{"a":9536,"n":"turn_busy","k":"variable","len":1,"c":true},{"a":9537,"n":"view_class_poses","k":"table","len":5,"c":true},{"a":9542,"n":"turn_goal_class","k":"variable","len":1,"c":true},{"a":9543,"n":"turn_target_pose","k":"variable","len":1,"c":true},{"a":9544,"n":"turn_target_facing","k":"variable","len":1,"c":true},{"a":9545,"n":"turn_to_back_unused","k":"routine","len":4,"c":true},{"a":9549,"n":"turn_to_side_f0_unused","k":"routine","len":4,"c":true},{"a":9553,"n":"turn_to_side_f8_unused","k":"routine","len":6,"c":true},{"a":9559,"n":"turn_to_front","k":"routine","len":4,"c":true},{"a":9561,"n":"b_2559","k":"branch","len":1,"c":false},{"a":9563,"n":"turn_to_pose","k":"routine","len":187,"c":true},{"a":9620,"n":"j_2594","k":"branch","len":1,"c":false},{"a":9628,"n":"b_259C","k":"branch","len":1,"c":false},{"a":9631,"n":"b_259F","k":"branch","len":1,"c":false},{"a":9640,"n":"b_25A8","k":"branch","len":1,"c":false},{"a":9649,"n":"b_25B1","k":"branch","len":1,"c":false},{"a":9657,"n":"b_25B9","k":"branch","len":1,"c":false},{"a":9705,"n":"b_25E9","k":"branch","len":1,"c":false},{"a":9729,"n":"b_2601","k":"branch","len":1,"c":false},{"a":9743,"n":"b_260F","k":"branch","len":1,"c":false},{"a":9749,"n":"r_2615","k":"branch","len":1,"c":false},{"a":9750,"n":"every_8th_tick","k":"routine","len":13,"c":true},{"a":9763,"n":"wait_8_ticks","k":"routine","len":6,"c":true},{"a":9769,"n":"head_pose_8_held","k":"routine","len":22,"c":true},{"a":9781,"n":"b_2635","k":"branch","len":1,"c":false},{"a":9790,"n":"r_263E","k":"branch","len":1,"c":false},{"a":9791,"n":"head_pose_18","k":"routine","len":9,"c":true},{"a":9800,"n":"head_pose_1b","k":"routine","len":10,"c":true},{"a":9810,"n":"overhead_item_16","k":"routine","len":69,"c":true},{"a":9873,"n":"b_2691","k":"branch","len":1,"c":false},{"a":9879,"n":"overhead_item_17","k":"routine","len":14,"c":true},{"a":9893,"n":"overhead_item_18","k":"routine","len":11,"c":true},{"a":9904,"n":"pose_52_next","k":"routine","len":4,"c":true},{"a":9908,"n":"pose_53_next","k":"routine","len":4,"c":true},{"a":9912,"n":"pose_50_next","k":"routine","len":4,"c":true},{"a":9916,"n":"pose_51_next","k":"routine","len":4,"c":true},{"a":9920,"n":"flip_pose_50_next","k":"routine","len":12,"c":true},{"a":9932,"n":"pose_54_next","k":"routine","len":5,"c":true},{"a":9937,"n":"pose_55_next","k":"routine","len":5,"c":true},{"a":9942,"n":"pose_56_next","k":"routine","len":5,"c":true},{"a":9947,"n":"pose_57_next","k":"routine","len":5,"c":true},{"a":9952,"n":"pose_58_next","k":"routine","len":5,"c":true},{"a":9957,"n":"pose_59_sound_next","k":"routine","len":8,"c":true},{"a":9965,"n":"pose_loop_set","k":"routine","len":14,"c":true},{"a":9979,"n":"pose_loop_back_4","k":"routine","len":16,"c":true},{"a":9987,"n":"b_2703","k":"branch","len":1,"c":false},{"a":9995,"n":"pose_loop_back_8","k":"routine","len":16,"c":true},{"a":10003,"n":"b_2713","k":"branch","len":1,"c":false},{"a":10011,"n":"abort_if_request","k":"routine","len":13,"c":true},{"a":10017,"n":"b_2721","k":"branch","len":1,"c":false},{"a":10024,"n":"maybe_talk","k":"routine","len":33,"c":true},{"a":10043,"n":"j_273B","k":"branch","len":1,"c":false},{"a":10051,"n":"b_2743","k":"branch","len":1,"c":false},{"a":10057,"n":"talk_start_timer","k":"routine","len":16,"c":true},{"a":10073,"n":"talk_or_wait","k":"routine","len":37,"c":true},{"a":10083,"n":"b_2763","k":"branch","len":1,"c":false},{"a":10094,"n":"b_276E","k":"branch","len":1,"c":false},{"a":10102,"n":"b_2776","k":"branch","len":1,"c":false},{"a":10110,"n":"carry_last_facing","k":"variable","len":1,"c":true},{"a":10111,"n":"carry_last_pose","k":"variable","len":1,"c":true},{"a":10112,"n":"carry_last_x","k":"variable","len":1,"c":true},{"a":10113,"n":"carry_last_floor","k":"variable","len":1,"c":true},{"a":10114,"n":"carry_last_depth","k":"variable","len":1,"c":true},{"a":10115,"n":"carried_item","k":"variable","len":1,"c":true},{"a":10116,"n":"carry_x_offset","k":"variable","len":2,"c":true},{"a":10118,"n":"act51_book_delivery","k":"routine","len":4,"c":true},{"a":10122,"n":"act33_dogfood_delivery","k":"routine","len":4,"c":true},{"a":10126,"n":"item7_delivery_unused","k":"routine","len":4,"c":true},{"a":10130,"n":"act50_record_delivery","k":"routine","len":2,"c":true},{"a":10132,"n":"delivery_set_item","k":"routine","len":3,"c":true},{"a":10135,"n":"delivery_machine","k":"routine","len":3,"c":true},{"a":10250,"n":"act34_feed_dog","k":"routine","len":3,"c":true},{"a":10315,"n":"dogfood_store_alt","k":"variable","len":1,"c":true},{"a":10316,"n":"dogfood_store_mode","k":"variable","len":1,"c":true},{"a":10317,"n":"dogfood_toggle_store","k":"routine","len":14,"c":true},{"a":10325,"n":"b_2855","k":"branch","len":1,"c":false},{"a":10331,"n":"dogfood_store_alt_1","k":"routine","len":4,"c":true},{"a":10335,"n":"dogfood_store_alt_0","k":"routine","len":4,"c":true},{"a":10339,"n":"dogfood_mode_1","k":"routine","len":8,"c":true},{"a":10341,"n":"b_2865","k":"branch","len":1,"c":false},{"a":10347,"n":"dogfood_mode_0","k":"routine","len":4,"c":true},{"a":10351,"n":"feed_dog_if_empty","k":"routine","len":10,"c":true},{"a":10361,"n":"dogfood_store_if_bowl_full","k":"routine","len":10,"c":true},{"a":10371,"n":"feed_dog_second_trip","k":"routine","len":10,"c":true},{"a":10381,"n":"carry_dog_food","k":"routine","len":8,"c":true},{"a":10386,"n":"b_2892","k":"branch","len":1,"c":false},{"a":10389,"n":"walk_to_dog_bowl","k":"routine","len":4,"c":true},{"a":10393,"n":"walk_to_place_15","k":"routine","len":4,"c":true},{"a":10397,"n":"walk_to_dogfood_store","k":"routine","len":9,"c":true},{"a":10403,"n":"b_28A3","k":"branch","len":1,"c":false},{"a":10406,"n":"dogfood_store_places","k":"table","len":4,"c":true},{"a":10410,"n":"open_dogfood_store","k":"routine","len":9,"c":true},{"a":10419,"n":"close_dogfood_store","k":"routine","len":9,"c":true},{"a":10428,"n":"dogfood_store_open_objects","k":"table","len":4,"c":true},{"a":10432,"n":"dogfood_store_close_objects","k":"table","len":4,"c":true},{"a":10436,"n":"dogfood_store_index","k":"routine","len":9,"c":true},{"a":10445,"n":"dog_stay","k":"routine","len":8,"c":true},{"a":10453,"n":"item_phases","k":"table","len":16,"c":true},{"a":10469,"n":"goto_item_phases","k":"routine","len":11,"c":true},{"a":10480,"n":"pick_up_item","k":"routine","len":51,"c":true},{"a":10531,"n":"walk_item_home","k":"routine","len":26,"c":true},{"a":10556,"n":"r_293C","k":"branch","len":1,"c":false},{"a":10557,"n":"carry_walk","k":"routine","len":199,"c":true},{"a":10570,"n":"b_294A","k":"branch","len":1,"c":false},{"a":10583,"n":"b_2957","k":"branch","len":1,"c":false},{"a":10618,"n":"b_297A","k":"branch","len":1,"c":false},{"a":10666,"n":"b_29AA","k":"branch","len":1,"c":false},{"a":10668,"n":"b_29AC","k":"branch","len":1,"c":false},{"a":10698,"n":"b_29CA","k":"branch","len":1,"c":false},{"a":10737,"n":"j_29F1","k":"branch","len":1,"c":false},{"a":10742,"n":"j_29F6","k":"branch","len":1,"c":false},{"a":10746,"n":"b_29FA","k":"branch","len":1,"c":false},{"a":10755,"n":"r_2A03","k":"branch","len":1,"c":false},{"a":10756,"n":"drop_item","k":"routine","len":22,"c":true},{"a":10778,"n":"carry_x_offsets","k":"table","len":24,"c":true},{"a":10802,"n":"carry_y_offsets","k":"table","len":24,"c":true},{"a":10826,"n":"item_images","k":"table","len":8,"c":true},{"a":10834,"n":"item_places","k":"table","len":8,"c":true},{"a":10842,"n":"item_colours","k":"table","len":8,"c":true},{"a":10850,"n":"dog_bowl_level","k":"variable","len":1,"c":true},{"a":10851,"n":"fill_dog_bowl","k":"routine","len":11,"c":true},{"a":10862,"n":"house_events_call","k":"routine","len":11,"c":true},{"a":10866,"n":"b_2A72","k":"branch","len":1,"c":false},{"a":10873,"n":"alarm_ring_step","k":"routine","len":56,"c":true},{"a":10893,"n":"b_2A8D","k":"branch","len":1,"c":false},{"a":10910,"n":"b_2A9E","k":"branch","len":1,"c":false},{"a":10928,"n":"r_2AB0","k":"branch","len":1,"c":false},{"a":10929,"n":"alarm_clock_left","k":"table","len":8,"c":true},{"a":10937,"n":"alarm_clock_right","k":"table","len":8,"c":true},{"a":10945,"n":"phone_handset_taken","k":"routine","len":26,"c":true},{"a":10971,"n":"phone_ring_step","k":"routine","len":79,"c":true},{"a":10987,"n":"b_2AEB","k":"branch","len":1,"c":false},{"a":11000,"n":"b_2AF8","k":"branch","len":1,"c":false},{"a":11012,"n":"b_2B04","k":"branch","len":1,"c":false},{"a":11050,"n":"phone_handset_rest","k":"routine","len":27,"c":true},{"a":11077,"n":"turntable_on","k":"variable","len":1,"c":true},{"a":11078,"n":"pet_phase","k":"variable","len":1,"c":true},{"a":11079,"n":"pet_count","k":"variable","len":1,"c":true},{"a":11080,"n":"fire_unit_timer","k":"variable","len":1,"c":true},{"a":11081,"n":"fire_units","k":"variable","len":1,"c":true},{"a":11082,"n":"tv_on","k":"variable","len":1,"c":true},{"a":11083,"n":"lamp_colour","k":"variable","len":1,"c":true},{"a":11084,"n":"phone_ringing","k":"variable","len":1,"c":true},{"a":11085,"n":"phone_ring_timer","k":"variable","len":1,"c":true},{"a":11086,"n":"alarm_rings_left","k":"variable","len":1,"c":true},{"a":11087,"n":"alarm_ring_timer","k":"variable","len":1,"c":true},{"a":11088,"n":"alarm_rang","k":"variable","len":1,"c":true},{"a":11089,"n":"water_level","k":"variable","len":1,"c":true},{"a":11090,"n":"stove_burning","k":"variable","len":1,"c":true},{"a":11091,"n":"stove_flame_index","k":"variable","len":1,"c":true},{"a":11092,"n":"house_events","k":"routine","len":436,"c":true},{"a":11122,"n":"b_2B72","k":"branch","len":1,"c":false},{"a":11145,"n":"b_2B89","k":"branch","len":1,"c":false},{"a":11168,"n":"b_2BA0","k":"branch","len":1,"c":false},{"a":11198,"n":"b_2BBE","k":"branch","len":1,"c":false},{"a":11233,"n":"b_2BE1","k":"branch","len":1,"c":false},{"a":11249,"n":"b_2BF1","k":"branch","len":1,"c":false},{"a":11286,"n":"b_2C16","k":"branch","len":1,"c":false},{"a":11296,"n":"b_2C20","k":"branch","len":1,"c":false},{"a":11299,"n":"b_2C23","k":"branch","len":1,"c":false},{"a":11349,"n":"b_2C55","k":"branch","len":1,"c":false},{"a":11362,"n":"b_2C62","k":"branch","len":1,"c":false},{"a":11381,"n":"b_2C75","k":"branch","len":1,"c":false},{"a":11391,"n":"b_2C7F","k":"branch","len":1,"c":false},{"a":11418,"n":"b_2C9A","k":"branch","len":1,"c":false},{"a":11426,"n":"b_2CA2","k":"branch","len":1,"c":false},{"a":11465,"n":"b_2CC9","k":"branch","len":1,"c":false},{"a":11473,"n":"b_2CD1","k":"branch","len":1,"c":false},{"a":11481,"n":"b_2CD9","k":"branch","len":1,"c":false},{"a":11494,"n":"b_2CE6","k":"branch","len":1,"c":false},{"a":11518,"n":"b_2CFE","k":"branch","len":1,"c":false},{"a":11527,"n":"r_2D07","k":"branch","len":1,"c":false},{"a":11528,"n":"stove_flame_colours","k":"table","len":5,"c":true},{"a":11533,"n":"draw_water_tank","k":"routine","len":52,"c":true},{"a":11540,"n":"b_2D14","k":"branch","len":1,"c":false},{"a":11547,"n":"b_2D1B","k":"branch","len":1,"c":false},{"a":11561,"n":"b_2D29","k":"branch","len":1,"c":false},{"a":11564,"n":"j_2D2C","k":"branch","len":1,"c":false},{"a":11578,"n":"b_2D3A","k":"branch","len":1,"c":false},{"a":11581,"n":"j_2D3D","k":"branch","len":1,"c":false},{"a":11585,"n":"water_tank_mask_left","k":"table","len":12,"c":true},{"a":11597,"n":"water_tank_mask_right","k":"table","len":12,"c":true},{"a":11609,"n":"tv_flicker","k":"routine","len":18,"c":true},{"a":11627,"n":"tv_screen_colour","k":"routine","len":7,"c":true},{"a":11633,"n":"r_2D71","k":"branch","len":1,"c":false},{"a":11634,"n":"turntable_frames","k":"table","len":64,"c":true},{"a":11698,"n":"turntable_reset","k":"routine","len":9,"c":true},{"a":11706,"n":"r_2DBA","k":"branch","len":1,"c":false},{"a":11707,"n":"turntable_step","k":"routine","len":41,"c":true},{"a":11732,"n":"j_2DD4","k":"branch","len":1,"c":false},{"a":11735,"n":"b_2DD7","k":"branch","len":1,"c":false},{"a":11748,"n":"at_place","k":"routine","len":23,"c":true},{"a":11770,"n":"r_2DFA","k":"branch","len":1,"c":false},{"a":11771,"n":"exercise_tick","k":"variable","len":1,"c":true},{"a":11772,"n":"exercise_moves","k":"variable","len":1,"c":true},{"a":11773,"n":"exercise_step","k":"variable","len":1,"c":true},{"a":11774,"n":"act27_exercise","k":"routine","len":3,"c":true},{"a":11787,"n":"exercise_walk","k":"routine","len":5,"c":true},{"a":11792,"n":"exercise_start","k":"routine","len":29,"c":true},{"a":11818,"n":"b_2E2A","k":"branch","len":1,"c":false},{"a":11821,"n":"exercise_move","k":"routine","len":62,"c":true},{"a":11832,"n":"b_2E38","k":"branch","len":1,"c":false},{"a":11842,"n":"b_2E42","k":"branch","len":1,"c":false},{"a":11856,"n":"j_2E50","k":"branch","len":1,"c":false},{"a":11862,"n":"b_2E56","k":"branch","len":1,"c":false},{"a":11865,"n":"b_2E59","k":"branch","len":1,"c":false},{"a":11883,"n":"exercise_poses","k":"table","len":4,"c":true},{"a":11887,"n":"stub_main_clc","k":"routine","len":2,"c":true},{"a":11889,"n":"stub_clc","k":"routine","len":2,"c":true},{"a":11891,"n":"act_timer_tick","k":"routine","len":20,"c":true},{"a":11910,"n":"r_2E86","k":"branch","len":1,"c":false},{"a":11911,"n":"act_timer_start","k":"routine","len":11,"c":true},{"a":11923,"n":"clock_divider","k":"variable","len":1,"c":true},{"a":11924,"n":"clock_tick","k":"routine","len":77,"c":true},{"a":11952,"n":"b_2EB0","k":"branch","len":1,"c":false},{"a":11967,"n":"b_2EBF","k":"branch","len":1,"c":false},{"a":11985,"n":"b_2ED1","k":"branch","len":1,"c":false},{"a":11999,"n":"b_2EDF","k":"branch","len":1,"c":false},{"a":12000,"n":"r_2EE0","k":"branch","len":1,"c":false},{"a":12001,"n":"add_record","k":"routine","len":41,"c":true},{"a":12010,"n":"b_2EEA","k":"branch","len":1,"c":false},{"a":12025,"n":"b_2EF9","k":"branch","len":1,"c":false},{"a":12031,"n":"b_2EFF","k":"branch","len":1,"c":false},{"a":12039,"n":"b_2F07","k":"branch","len":1,"c":false},{"a":12042,"n":"drop_wait_walk","k":"routine","len":14,"c":true},{"a":12055,"n":"r_2F17","k":"branch","len":1,"c":false},{"a":12056,"n":"act25_phone_call","k":"routine","len":3,"c":true},{"a":12091,"n":"phone_hold_out","k":"routine","len":57,"c":true},{"a":12148,"n":"phone_to_ear","k":"routine","len":65,"c":true},{"a":12212,"n":"r_2FB4","k":"branch","len":1,"c":false},{"a":12213,"n":"phone_pause","k":"routine","len":22,"c":true},{"a":12228,"n":"j_2FC4","k":"branch","len":1,"c":false},{"a":12231,"n":"b_2FC7","k":"branch","len":1,"c":false},{"a":12235,"n":"phone_sit","k":"routine","len":27,"c":true},{"a":12262,"n":"phone_walk_to_chair","k":"routine","len":25,"c":true},{"a":12287,"n":"phone_lift_handset","k":"routine","len":17,"c":true},{"a":12304,"n":"phone_hang_up","k":"routine","len":24,"c":true},{"a":12328,"n":"act44_put_away_food","k":"routine","len":8,"c":true},{"a":12336,"n":"act44_phase_table","k":"table","len":52,"c":true},{"a":12388,"n":"act43_take_food","k":"routine","len":3,"c":true},{"a":12391,"n":"act43_phase_table","k":"table","len":22,"c":true},{"a":12413,"n":"act44_loop_until_full","k":"routine","len":15,"c":true},{"a":12425,"n":"b_3089","k":"branch","len":1,"c":false},{"a":12428,"n":"act44_last_item_check","k":"routine","len":27,"c":true},{"a":12452,"n":"b_30A4","k":"branch","len":1,"c":false},{"a":12455,"n":"unused_30A7","k":"table","len":4,"c":true},{"a":12459,"n":"act44_switch_to_act32","k":"routine","len":7,"c":true},{"a":12466,"n":"cupboard_slot","k":"variable","len":1,"c":true},{"a":12467,"n":"cupboard_wait","k":"variable","len":1,"c":true},{"a":12468,"n":"cupboard_food","k":"variable","len":1,"c":true},{"a":12469,"n":"act44_hide_item","k":"routine","len":9,"c":true},{"a":12478,"n":"act44_stow","k":"routine","len":7,"c":true},{"a":12485,"n":"act44_carry","k":"routine","len":8,"c":true},{"a":12487,"n":"b_30C7","k":"branch","len":1,"c":false},{"a":12493,"n":"walk_to_cupboard","k":"routine","len":22,"c":true},{"a":12514,"n":"r_30E2","k":"branch","len":1,"c":false},{"a":12515,"n":"cupboard_face_or_quit","k":"routine","len":55,"c":true},{"a":12533,"n":"b_30F5","k":"branch","len":1,"c":false},{"a":12555,"n":"b_310B","k":"branch","len":1,"c":false},{"a":12570,"n":"pose_0d_next","k":"routine","len":10,"c":true},{"a":12572,"n":"b_311C","k":"branch","len":1,"c":false},{"a":12580,"n":"cupboard_wait16","k":"routine","len":13,"c":true},{"a":12593,"n":"show_food_item","k":"routine","len":7,"c":true},{"a":12600,"n":"cupboard_bits_tmp","k":"variable","len":1,"c":true},{"a":12601,"n":"act43_pick_full_place","k":"routine","len":30,"c":true},{"a":12607,"n":"b_313F","k":"branch","len":1,"c":false},{"a":12623,"n":"b_314F","k":"branch","len":1,"c":false},{"a":12625,"n":"b_3151","k":"branch","len":1,"c":false},{"a":12631,"n":"act43_take_item","k":"routine","len":18,"c":true},{"a":12649,"n":"act44_pick_empty_place","k":"routine","len":24,"c":true},{"a":12655,"n":"b_316F","k":"branch","len":1,"c":false},{"a":12673,"n":"act44_store_item","k":"routine","len":23,"c":true},{"a":12696,"n":"draw_cupboard","k":"routine","len":33,"c":true},{"a":12704,"n":"b_31A0","k":"branch","len":1,"c":false},{"a":12721,"n":"b_31B1","k":"branch","len":1,"c":false},{"a":12728,"n":"b_31B8","k":"branch","len":1,"c":false},{"a":12729,"n":"cupboard_store_lo","k":"routine","len":1,"c":true},{"a":12730,"n":"cupboard_store_hi","k":"routine","len":8,"c":true},{"a":12738,"n":"cupboard_addr_lo","k":"table","len":4,"c":true},{"a":12742,"n":"cupboard_addr_hi","k":"table","len":4,"c":true},{"a":12746,"n":"cupboard_item_gfx","k":"table","len":5,"c":true},{"a":12751,"n":"cupboard_bit","k":"table","len":4,"c":true},{"a":12755,"n":"set_doorway_c","k":"routine","len":4,"c":true},{"a":12759,"n":"set_doorway_d","k":"routine","len":4,"c":true},{"a":12763,"n":"set_doorway_a","k":"routine","len":4,"c":true},{"a":12767,"n":"set_doorway_b","k":"routine","len":7,"c":true},{"a":12769,"n":"b_31E1","k":"branch","len":1,"c":false},{"a":12774,"n":"doorway_script","k":"routine","len":3,"c":true},{"a":12777,"n":"doorway_table","k":"table","len":64,"c":true},{"a":12841,"n":"dw_clip_left","k":"routine","len":11,"c":true},{"a":12852,"n":"dw_step_c","k":"routine","len":26,"c":true},{"a":12878,"n":"dw_walk_right","k":"routine","len":16,"c":true},{"a":12894,"n":"dw_step_a","k":"routine","len":43,"c":true},{"a":12914,"n":"b_3272","k":"branch","len":1,"c":false},{"a":12929,"n":"j_3281","k":"branch","len":1,"c":false},{"a":12934,"n":"j_3286","k":"branch","len":1,"c":false},{"a":12937,"n":"dw_walk","k":"routine","len":38,"c":true},{"a":12959,"n":"b_329F","k":"branch","len":1,"c":false},{"a":12975,"n":"dw_pause_start","k":"routine","len":8,"c":true},{"a":12983,"n":"dw_pause_tick","k":"variable","len":1,"c":true},{"a":12984,"n":"dw_pause","k":"variable","len":1,"c":true},{"a":12985,"n":"dw_pause_wait","k":"routine","len":27,"c":true},{"a":12993,"n":"b_32C1","k":"branch","len":1,"c":false},{"a":13003,"n":"r_32CB","k":"branch","len":1,"c":false},{"a":13004,"n":"b_32CC","k":"branch","len":1,"c":false},{"a":13012,"n":"dw_nop","k":"routine","len":3,"c":true},{"a":13015,"n":"dw_show","k":"routine","len":13,"c":true},{"a":13028,"n":"dw_clip_right","k":"routine","len":11,"c":true},{"a":13039,"n":"dw_clip_off","k":"routine","len":11,"c":true},{"a":13050,"n":"dw_last_x","k":"variable","len":2,"c":true},{"a":13052,"n":"dw_clip_shrink","k":"routine","len":65,"c":true},{"a":13077,"n":"j_3315","k":"branch","len":1,"c":false},{"a":13108,"n":"r_3334","k":"branch","len":1,"c":false},{"a":13109,"n":"b_3335","k":"branch","len":1,"c":false},{"a":13117,"n":"dw_clip_grow","k":"routine","len":26,"c":true},{"a":13143,"n":"act81_target","k":"routine","len":22,"c":true},{"a":13165,"n":"unused_336D","k":"routine","len":7,"c":true},{"a":13172,"n":"bed_tick","k":"variable","len":1,"c":true},{"a":13173,"n":"act30_to_bed","k":"routine","len":3,"c":true},{"a":13176,"n":"act30_phase_table","k":"table","len":20,"c":true},{"a":13196,"n":"act31_get_up","k":"routine","len":3,"c":true},{"a":13199,"n":"act31_phase_table","k":"table","len":16,"c":true},{"a":13215,"n":"act30_check_needs","k":"routine","len":41,"c":true},{"a":13229,"n":"b_33AD","k":"branch","len":1,"c":false},{"a":13239,"n":"b_33B7","k":"branch","len":1,"c":false},{"a":13256,"n":"act_bed_finish","k":"routine","len":5,"c":true},{"a":13261,"n":"act31_clear_state","k":"routine","len":16,"c":true},{"a":13274,"n":"b_33DA","k":"branch","len":1,"c":false},{"a":13277,"n":"act30_set_state","k":"routine","len":8,"c":true},{"a":13285,"n":"act30_walk_to_bed","k":"routine","len":13,"c":true},{"a":13295,"n":"j_33EF","k":"branch","len":1,"c":false},{"a":13298,"n":"act30_turn","k":"routine","len":13,"c":true},{"a":13311,"n":"bed_move_0","k":"routine","len":24,"c":true},{"a":13323,"n":"b_340B","k":"branch","len":1,"c":false},{"a":13328,"n":"j_3410","k":"branch","len":1,"c":false},{"a":13335,"n":"bed_move_1","k":"routine","len":20,"c":true},{"a":13347,"n":"b_3423","k":"branch","len":1,"c":false},{"a":13355,"n":"bed_move_2","k":"routine","len":20,"c":true},{"a":13367,"n":"b_3437","k":"branch","len":1,"c":false},{"a":13375,"n":"bed_move_3","k":"routine","len":20,"c":true},{"a":13387,"n":"b_344B","k":"branch","len":1,"c":false},{"a":13395,"n":"act31_wait_step","k":"routine","len":6,"c":true},{"a":13401,"n":"every_8th_pass","k":"routine","len":13,"c":true},{"a":13413,"n":"r_3465","k":"branch","len":1,"c":false},{"a":13414,"n":"nudge_person_x","k":"routine","len":16,"c":true},{"a":13430,"n":"sound_requests","k":"routine","len":45,"c":true},{"a":13449,"n":"b_3489","k":"branch","len":1,"c":false},{"a":13451,"n":"b_348B","k":"branch","len":1,"c":false},{"a":13475,"n":"snd_handler_lo","k":"routine","len":1,"c":true},{"a":13476,"n":"snd_handler_hi","k":"routine","len":1,"c":true},{"a":13477,"n":"play_oneshots","k":"routine","len":23,"c":true},{"a":13479,"n":"b_34A7","k":"branch","len":1,"c":false},{"a":13500,"n":"footsteps","k":"routine","len":141,"c":true},{"a":13502,"n":"b_34BE","k":"branch","len":1,"c":false},{"a":13515,"n":"b_34CB","k":"branch","len":1,"c":false},{"a":13552,"n":"b_34F0","k":"branch","len":1,"c":false},{"a":13563,"n":"b_34FB","k":"branch","len":1,"c":false},{"a":13578,"n":"b_350A","k":"branch","len":1,"c":false},{"a":13582,"n":"j_350E","k":"branch","len":1,"c":false},{"a":13608,"n":"b_3528","k":"branch","len":1,"c":false},{"a":13611,"n":"b_352B","k":"branch","len":1,"c":false},{"a":13617,"n":"b_3531","k":"branch","len":1,"c":false},{"a":13636,"n":"b_3544","k":"branch","len":1,"c":false},{"a":13641,"n":"step_next_table","k":"table","len":5,"c":true},{"a":13646,"n":"step_next","k":"variable","len":2,"c":true},{"a":13648,"n":"step_mid_l","k":"variable","len":2,"c":true},{"a":13650,"n":"step_mid_r","k":"variable","len":2,"c":true},{"a":13652,"n":"step_low_l","k":"variable","len":2,"c":true},{"a":13654,"n":"step_low_r","k":"variable","len":2,"c":true},{"a":13656,"n":"step_stair_sound","k":"variable","len":2,"c":true},{"a":13658,"n":"step_stair_count","k":"variable","len":2,"c":true},{"a":13660,"n":"snd_oneshot_0b","k":"variable","len":1,"c":true},{"a":13661,"n":"snd_key_click","k":"variable","len":1,"c":true},{"a":13662,"n":"snd_oneshot_01","k":"variable","len":1,"c":true},{"a":13663,"n":"snd_oneshot_02","k":"variable","len":1,"c":true},{"a":13664,"n":"snd_req_water","k":"variable","len":1,"c":true},{"a":13665,"n":"snd_req_1","k":"variable","len":1,"c":true},{"a":13666,"n":"snd_req_hang_up","k":"variable","len":1,"c":true},{"a":13667,"n":"snd_req_piece","k":"variable","len":1,"c":true},{"a":13668,"n":"snd_req_4","k":"variable","len":1,"c":true},{"a":13669,"n":"snd_req_5","k":"variable","len":1,"c":true},{"a":13670,"n":"snd_req_phone_ring","k":"variable","len":1,"c":true},{"a":13671,"n":"snd_req_piece_end","k":"variable","len":1,"c":true},{"a":13672,"n":"snd_req_stop4","k":"variable","len":1,"c":true},{"a":13673,"n":"snd_req_stop5","k":"variable","len":1,"c":true},{"a":13674,"n":"snd_req_10","k":"variable","len":1,"c":true},{"a":13675,"n":"snd_req_ctrl_chime","k":"variable","len":1,"c":true},{"a":13676,"n":"snd_req_fire","k":"variable","len":1,"c":true},{"a":13677,"n":"snd_req_stop12","k":"variable","len":1,"c":true},{"a":13678,"n":"snd_req_14","k":"variable","len":1,"c":true},{"a":13679,"n":"snd_req_stop14","k":"variable","len":1,"c":true},{"a":13680,"n":"snd_req_16","k":"variable","len":1,"c":true},{"a":13681,"n":"snd_req_stop16","k":"variable","len":1,"c":true},{"a":13682,"n":"snd_req_talk","k":"variable","len":1,"c":true},{"a":13683,"n":"snd_req_19","k":"variable","len":1,"c":true},{"a":13684,"n":"snd_req_alarm","k":"variable","len":1,"c":true},{"a":13685,"n":"snd_req_alarm_off","k":"variable","len":1,"c":true},{"a":13686,"n":"snd_req_22","k":"variable","len":1,"c":true},{"a":13687,"n":"snd_req_23","k":"variable","len":1,"c":true},{"a":13688,"n":"snd_req_24","k":"variable","len":1,"c":true},{"a":13689,"n":"snd_req_25","k":"variable","len":1,"c":true},{"a":13690,"n":"snd_req_26","k":"variable","len":1,"c":true},{"a":13691,"n":"snd_req_27","k":"variable","len":1,"c":true},{"a":13692,"n":"snd_slot_handlers","k":"variable","len":1,"c":true},{"a":13693,"n":"snd_slot_handlers_hi","k":"table","len":43,"c":true},{"a":13736,"n":"snd_slot_sound","k":"table","len":21,"c":true},{"a":13757,"n":"snd_slot_sound_21","k":"variable","len":1,"c":true},{"a":13758,"n":"snd_slot_state","k":"table","len":3,"c":true},{"a":13761,"n":"slot3_state","k":"variable","len":1,"c":true},{"a":13762,"n":"slot4_state","k":"variable","len":1,"c":true},{"a":13763,"n":"slot5_state","k":"table","len":17,"c":true},{"a":13780,"n":"slot3_saved_x","k":"variable","len":1,"c":true},{"a":13781,"n":"slot3_flag_delay","k":"table","len":4,"c":true},{"a":13785,"n":"play_once","k":"routine","len":11,"c":true},{"a":13796,"n":"play_to_end","k":"routine","len":31,"c":true},{"a":13807,"n":"b_35EF","k":"branch","len":1,"c":false},{"a":13813,"n":"b_35F5","k":"branch","len":1,"c":false},{"a":13827,"n":"stop_slot_below","k":"routine","len":10,"c":true},{"a":13837,"n":"start_and_hold","k":"routine","len":11,"c":true},{"a":13843,"n":"b_3613","k":"branch","len":1,"c":false},{"a":13848,"n":"stop_slot5","k":"routine","len":10,"c":true},{"a":13858,"n":"stop_slot4","k":"routine","len":8,"c":true},{"a":13866,"n":"stop_all","k":"routine","len":25,"c":true},{"a":13881,"n":"b_3639","k":"branch","len":1,"c":false},{"a":13891,"n":"slot10_nop","k":"routine","len":1,"c":true},{"a":13892,"n":"unused_3644","k":"routine","len":6,"c":true},{"a":13898,"n":"slot3_piece","k":"routine","len":13,"c":true},{"a":13911,"n":"start_slot_sound","k":"routine","len":6,"c":true},{"a":13917,"n":"slot3_follow_flags","k":"routine","len":87,"c":true},{"a":13927,"n":"b_3667","k":"branch","len":1,"c":false},{"a":13947,"n":"b_367B","k":"branch","len":1,"c":false},{"a":13954,"n":"b_3682","k":"branch","len":1,"c":false},{"a":13968,"n":"b_3690","k":"branch","len":1,"c":false},{"a":13971,"n":"b_3693","k":"branch","len":1,"c":false},{"a":13977,"n":"b_3699","k":"branch","len":1,"c":false},{"a":13986,"n":"b_36A2","k":"branch","len":1,"c":false},{"a":13995,"n":"b_36AB","k":"branch","len":1,"c":false},{"a":14000,"n":"b_36B0","k":"branch","len":1,"c":false},{"a":14004,"n":"piece_done","k":"routine","len":22,"c":true},{"a":14026,"n":"unused_36CA","k":"routine","len":1,"c":true},{"a":14027,"n":"stop_piece","k":"routine","len":10,"c":true},{"a":14033,"n":"b_36D1","k":"branch","len":1,"c":false},{"a":14037,"n":"phone_ring_repeat","k":"routine","len":24,"c":true},{"a":14045,"n":"b_36DD","k":"branch","len":1,"c":false},{"a":14050,"n":"b_36E2","k":"branch","len":1,"c":false},{"a":14061,"n":"chime_with_holdoff","k":"routine","len":27,"c":true},{"a":14076,"n":"b_36FC","k":"branch","len":1,"c":false},{"a":14082,"n":"b_3702","k":"branch","len":1,"c":false},{"a":14088,"n":"chime_holdoff","k":"variable","len":1,"c":true},{"a":14089,"n":"ring_tick","k":"variable","len":1,"c":true},{"a":14090,"n":"snd_oneshot_sound","k":"table","len":4,"c":true},{"a":14094,"n":"step_run_end","k":"variable","len":1,"c":true},{"a":14095,"n":"step_run_start","k":"table","len":4,"c":true},{"a":14099,"n":"sound_reset","k":"routine","len":28,"c":true},{"a":14103,"n":"b_3717","k":"branch","len":1,"c":false},{"a":14113,"n":"b_3721","k":"branch","len":1,"c":false},{"a":14118,"n":"b_3726","k":"branch","len":1,"c":false},{"a":14127,"n":"typed_key","k":"variable","len":1,"c":true},{"a":14128,"n":"typed_count","k":"variable","len":1,"c":true},{"a":14129,"n":"type_key","k":"routine","len":110,"c":true},{"a":14160,"n":"b_3750","k":"branch","len":1,"c":false},{"a":14168,"n":"b_3758","k":"branch","len":1,"c":false},{"a":14207,"n":"b_377F","k":"branch","len":1,"c":false},{"a":14230,"n":"b_3796","k":"branch","len":1,"c":false},{"a":14238,"n":"r_379E","k":"branch","len":1,"c":false},{"a":14239,"n":"typed_back","k":"routine","len":9,"c":true},{"a":14248,"n":"typed_advance","k":"routine","len":15,"c":true},{"a":14254,"n":"j_37AE","k":"branch","len":1,"c":false},{"a":14263,"n":"typed_bcd_lo","k":"variable","len":1,"c":true},{"a":14264,"n":"typed_bcd_hi","k":"variable","len":1,"c":true},{"a":14265,"n":"type_digit","k":"routine","len":49,"c":true},{"a":14273,"n":"b_37C1","k":"branch","len":1,"c":false},{"a":14282,"n":"b_37CA","k":"branch","len":1,"c":false},{"a":14296,"n":"b_37D8","k":"branch","len":1,"c":false},{"a":14313,"n":"r_37E9","k":"branch","len":1,"c":false},{"a":14314,"n":"act29_drink_water","k":"routine","len":3,"c":true},{"a":14317,"n":"act29_phase_table","k":"table","len":38,"c":true},{"a":14355,"n":"act29_check_interrupt","k":"routine","len":13,"c":true},{"a":14363,"n":"b_381B","k":"branch","len":1,"c":false},{"a":14368,"n":"act29_wait","k":"variable","len":1,"c":true},{"a":14369,"n":"act29_glass_away","k":"routine","len":16,"c":true},{"a":14385,"n":"act29_start","k":"routine","len":8,"c":true},{"a":14393,"n":"act29_take_glass","k":"routine","len":87,"c":true},{"a":14440,"n":"b_3868","k":"branch","len":1,"c":false},{"a":14480,"n":"act29_at_cooler","k":"routine","len":14,"c":true},{"a":14494,"n":"act29_fill_glass","k":"routine","len":26,"c":true},{"a":14504,"n":"b_38A8","k":"branch","len":1,"c":false},{"a":14520,"n":"act29_drink","k":"routine","len":42,"c":true},{"a":14551,"n":"b_38D7","k":"branch","len":1,"c":false},{"a":14553,"n":"b_38D9","k":"branch","len":1,"c":false},{"a":14562,"n":"act29_wait_step","k":"routine","len":9,"c":true},{"a":14571,"n":"act29_maybe_again","k":"routine","len":27,"c":true},{"a":14595,"n":"b_3903","k":"branch","len":1,"c":false},{"a":14598,"n":"act29_return_glass","k":"routine","len":35,"c":true},{"a":14605,"n":"j_390D","k":"branch","len":1,"c":false},{"a":14630,"n":"b_3926","k":"branch","len":1,"c":false},{"a":14633,"n":"unused_3929","k":"routine","len":6,"c":true},{"a":14639,"n":"needs_check","k":"routine","len":31,"c":true},{"a":14650,"n":"b_393A","k":"branch","len":1,"c":false},{"a":14669,"n":"r_394D","k":"branch","len":1,"c":false},{"a":14670,"n":"music_driver_start","k":"routine","len":11,"c":true},{"a":14681,"n":"timer_irq","k":"routine","len":21,"c":true},{"a":14687,"n":"b_395F","k":"branch","len":1,"c":false},{"a":14694,"n":"b_3966","k":"branch","len":1,"c":false},{"a":14698,"n":"b_396A","k":"branch","len":1,"c":false},{"a":14702,"n":"sound_dispatch","k":"routine","len":43,"c":true},{"a":14713,"n":"b_3979","k":"branch","len":1,"c":false},{"a":14737,"n":"b_3991","k":"branch","len":1,"c":false},{"a":14745,"n":"jmp_sound_job","k":"routine","len":3,"c":true},{"a":14748,"n":"sound_jobs","k":"table","len":8,"c":true},{"a":14756,"n":"sound_jobs_hi","k":"table","len":8,"c":true},{"a":14764,"n":"sound_dispatch_end","k":"routine","len":1,"c":true},{"a":14765,"n":"tune_end","k":"routine","len":5,"c":true},{"a":14770,"n":"stop_music_timers","k":"routine","len":14,"c":true},{"a":14784,"n":"unused_39C0","k":"routine","len":1,"c":true},{"a":14785,"n":"unused_jobs_1","k":"routine","len":6,"c":true},{"a":14791,"n":"unused_regs_39C7","k":"table","len":45,"c":true},{"a":14836,"n":"unused_jobs_3","k":"routine","len":6,"c":true},{"a":14842,"n":"unused_jobs_5","k":"routine","len":6,"c":true},{"a":14848,"n":"unused_regs_3A00","k":"table","len":3,"c":true},{"a":14851,"n":"tune_streams","k":"table","len":24,"c":true},{"a":14875,"n":"tune0_voice1","k":"table","len":18,"c":true},{"a":14893,"n":"tune1_voice1","k":"table","len":22,"c":true},{"a":14915,"n":"tune2_voice1","k":"table","len":29,"c":true},{"a":14944,"n":"tune3_voice1","k":"table","len":19,"c":true},{"a":14963,"n":"unused_set_effect","k":"routine","len":13,"c":true},{"a":14976,"n":"unused_filter_setup","k":"routine","len":22,"c":true},{"a":14998,"n":"effect_nop","k":"routine","len":3,"c":true},{"a":15001,"n":"unused_filter_sweep","k":"routine","len":13,"c":true},{"a":15014,"n":"music_regs_t2","k":"table","len":9,"c":true},{"a":15023,"n":"music_regs_t3","k":"table","len":9,"c":true},{"a":15032,"n":"music_regs_all","k":"table","len":29,"c":true},{"a":15061,"n":"tune0_voice2","k":"table","len":6,"c":true},{"a":15067,"n":"tune1_voice2","k":"table","len":10,"c":true},{"a":15077,"n":"tune2_voice2","k":"table","len":10,"c":true},{"a":15087,"n":"tune3_voice2","k":"table","len":6,"c":true},{"a":15093,"n":"tune0_voice3","k":"table","len":4,"c":true},{"a":15097,"n":"tune1_voice3","k":"table","len":8,"c":true},{"a":15105,"n":"tune2_voice3","k":"table","len":10,"c":true},{"a":15115,"n":"tune3_voice3","k":"table","len":6,"c":true},{"a":15121,"n":"part_b1","k":"table","len":86,"c":true},{"a":15207,"n":"part_b2","k":"table","len":129,"c":true},{"a":15336,"n":"part_b3","k":"table","len":24,"c":true},{"a":15360,"n":"part_a2","k":"table","len":231,"c":true},{"a":15591,"n":"part_a3","k":"table","len":138,"c":true},{"a":15729,"n":"part_a1","k":"table","len":202,"c":true},{"a":15931,"n":"unused_scale","k":"table","len":9,"c":true},{"a":15940,"n":"unused_random","k":"routine","len":22,"c":true},{"a":15962,"n":"unused_multiply","k":"routine","len":31,"c":true},{"a":15985,"n":"b_3E71","k":"branch","len":1,"c":false},{"a":15992,"n":"r_3E78","k":"branch","len":1,"c":false},{"a":15993,"n":"copy_image_row","k":"routine","len":18,"c":true},{"a":15997,"n":"b_3E7D","k":"branch","len":1,"c":false},{"a":16008,"n":"b_3E88","k":"branch","len":1,"c":false},{"a":16011,"n":"row_matrix_dest_lo","k":"routine","len":1,"c":true},{"a":16012,"n":"row_matrix_dest_hi","k":"routine","len":11,"c":true},{"a":16020,"n":"b_3E94","k":"branch","len":1,"c":false},{"a":16023,"n":"row_colour_dest_lo","k":"routine","len":1,"c":true},{"a":16024,"n":"row_colour_dest_hi","k":"routine","len":14,"c":true},{"a":16038,"n":"draw_image_row","k":"routine","len":102,"c":true},{"a":16071,"n":"b_3EC7","k":"branch","len":1,"c":false},{"a":16085,"n":"b_3ED5","k":"branch","len":1,"c":false},{"a":16110,"n":"b_3EEE","k":"branch","len":1,"c":false},{"a":16120,"n":"b_3EF8","k":"branch","len":1,"c":false},{"a":16130,"n":"b_3F02","k":"branch","len":1,"c":false},{"a":16140,"n":"switch_68","k":"routine","len":5,"c":true},{"a":16145,"n":"switch_4c","k":"routine","len":2,"c":true},{"a":16147,"n":"switch_a","k":"routine","len":39,"c":true},{"a":16166,"n":"b_3F26","k":"branch","len":1,"c":false},{"a":16176,"n":"b_3F30","k":"branch","len":1,"c":false},{"a":16186,"n":"switch_index","k":"variable","len":1,"c":true},{"a":16187,"n":"music_timer_a","k":"routine","len":126,"c":true},{"a":16192,"n":"b_3F40","k":"branch","len":1,"c":false},{"a":16251,"n":"b_3F7B","k":"branch","len":1,"c":false},{"a":16280,"n":"b_3F98","k":"branch","len":1,"c":false},{"a":16293,"n":"b_3FA5","k":"branch","len":1,"c":false},{"a":16301,"n":"b_3FAD","k":"branch","len":1,"c":false},{"a":16313,"n":"music_sid_offset","k":"table","len":3,"c":true},{"a":16316,"n":"music_voice_offset","k":"table","len":3,"c":true},{"a":16319,"n":"music_timer_b","k":"routine","len":61,"c":true},{"a":16337,"n":"b_3FD1","k":"branch","len":1,"c":false},{"a":16368,"n":"b_3FF0","k":"branch","len":1,"c":false},{"a":16376,"n":"b_3FF8","k":"branch","len":1,"c":false},{"a":16380,"n":"timers_stop","k":"routine","len":4,"c":true},{"a":16384,"n":"timers_stop_tail","k":"routine","len":15,"c":true},{"a":16399,"n":"timers_start","k":"routine","len":19,"c":true},{"a":16418,"n":"music_run_voice","k":"routine","len":55,"c":true},{"a":16423,"n":"b_4027","k":"branch","len":1,"c":false},{"a":16435,"n":"b_4033","k":"branch","len":1,"c":false},{"a":16466,"n":"b_4052","k":"branch","len":1,"c":false},{"a":16473,"n":"jmp_via_4f","k":"routine","len":3,"c":true},{"a":16476,"n":"music_commit","k":"routine","len":22,"c":true},{"a":16498,"n":"music_ops","k":"table","len":16,"c":true},{"a":16514,"n":"op_misc","k":"routine","len":28,"c":true},{"a":16526,"n":"b_408E","k":"branch","len":1,"c":false},{"a":16542,"n":"op_push_imm","k":"routine","len":4,"c":true},{"a":16546,"n":"op_flags_set","k":"routine","len":3,"c":true},{"a":16549,"n":"op_flags_and","k":"routine","len":5,"c":true},{"a":16554,"n":"op_flags_or","k":"routine","len":5,"c":true},{"a":16559,"n":"op_loop","k":"routine","len":9,"c":true},{"a":16568,"n":"op_next","k":"routine","len":30,"c":true},{"a":16593,"n":"b_40D1","k":"branch","len":1,"c":false},{"a":16598,"n":"op_misc_nop","k":"routine","len":1,"c":true},{"a":16599,"n":"op_drop","k":"routine","len":4,"c":true},{"a":16603,"n":"op_misc_ops","k":"table","len":16,"c":true},{"a":16619,"n":"op_flow","k":"routine","len":116,"c":true},{"a":16652,"n":"b_410C","k":"branch","len":1,"c":false},{"a":16671,"n":"j_411F","k":"branch","len":1,"c":false},{"a":16676,"n":"b_4124","k":"branch","len":1,"c":false},{"a":16696,"n":"b_4138","k":"branch","len":1,"c":false},{"a":16720,"n":"b_4150","k":"branch","len":1,"c":false},{"a":16735,"n":"op_push_reg","k":"routine","len":10,"c":true},{"a":16745,"n":"op_pop_reg","k":"routine","len":13,"c":true},{"a":16758,"n":"op_load_reg","k":"routine","len":13,"c":true},{"a":16771,"n":"music_set_tempo","k":"routine","len":22,"c":true},{"a":16792,"n":"r_4198","k":"branch","len":1,"c":false},{"a":16793,"n":"op_nop","k":"routine","len":2,"c":true},{"a":16795,"n":"op_jump","k":"routine","len":101,"c":true},{"a":16829,"n":"b_41BD","k":"branch","len":1,"c":false},{"a":16846,"n":"b_41CE","k":"branch","len":1,"c":false},{"a":16876,"n":"j_41EC","k":"branch","len":1,"c":false},{"a":16886,"n":"b_41F6","k":"branch","len":1,"c":false},{"a":16896,"n":"music_push_pc","k":"routine","len":14,"c":true},{"a":16910,"n":"op_djnz","k":"routine","len":30,"c":true},{"a":16925,"n":"b_421D","k":"branch","len":1,"c":false},{"a":16935,"n":"b_4227","k":"branch","len":1,"c":false},{"a":16940,"n":"music_fetch","k":"routine","len":9,"c":true},{"a":16949,"n":"music_push","k":"routine","len":7,"c":true},{"a":16956,"n":"music_pop","k":"routine","len":7,"c":true},{"a":16963,"n":"music_note","k":"routine","len":192,"c":true},{"a":17002,"n":"b_426A","k":"branch","len":1,"c":false},{"a":17004,"n":"b_426C","k":"branch","len":1,"c":false},{"a":17006,"n":"b_426E","k":"branch","len":1,"c":false},{"a":17028,"n":"b_4284","k":"branch","len":1,"c":false},{"a":17061,"n":"b_42A5","k":"branch","len":1,"c":false},{"a":17082,"n":"b_42BA","k":"branch","len":1,"c":false},{"a":17085,"n":"b_42BD","k":"branch","len":1,"c":false},{"a":17088,"n":"j_42C0","k":"branch","len":1,"c":false},{"a":17103,"n":"b_42CF","k":"branch","len":1,"c":false},{"a":17148,"n":"b_42FC","k":"branch","len":1,"c":false},{"a":17154,"n":"r_4302","k":"branch","len":1,"c":false},{"a":17155,"n":"music_effects","k":"routine","len":26,"c":true},{"a":17165,"n":"b_430D","k":"branch","len":1,"c":false},{"a":17173,"n":"b_4315","k":"branch","len":1,"c":false},{"a":17180,"n":"r_431C","k":"branch","len":1,"c":false},{"a":17181,"n":"fx_slide","k":"routine","len":34,"c":true},{"a":17215,"n":"fx_hook","k":"routine","len":20,"c":true},{"a":17235,"n":"vibrato_shape","k":"table","len":4,"c":true},{"a":17239,"n":"fx_vibrato","k":"routine","len":42,"c":true},{"a":17281,"n":"freq_shift","k":"routine","len":35,"c":true},{"a":17302,"n":"j_4396","k":"branch","len":1,"c":false},{"a":17312,"n":"b_43A0","k":"branch","len":1,"c":false},{"a":17316,"n":"freq_scale","k":"routine","len":38,"c":true},{"a":17319,"n":"b_43A7","k":"branch","len":1,"c":false},{"a":17339,"n":"b_43BB","k":"branch","len":1,"c":false},{"a":17354,"n":"freq_apply","k":"routine","len":46,"c":true},{"a":17378,"n":"b_43E2","k":"branch","len":1,"c":false},{"a":17400,"n":"sid_list_abs","k":"routine","len":6,"c":true},{"a":17406,"n":"sid_list_voice","k":"routine","len":38,"c":true},{"a":17411,"n":"b_4403","k":"branch","len":1,"c":false},{"a":17423,"n":"b_440F","k":"branch","len":1,"c":false},{"a":17443,"n":"r_4423","k":"branch","len":1,"c":false},{"a":17444,"n":"music_start","k":"routine","len":133,"c":true},{"a":17577,"n":"music_voice_init","k":"routine","len":63,"c":true},{"a":17631,"n":"b_44DF","k":"branch","len":1,"c":false},{"a":17640,"n":"music_clear","k":"routine","len":32,"c":true},{"a":17644,"n":"b_44EC","k":"branch","len":1,"c":false},{"a":17653,"n":"b_44F5","k":"branch","len":1,"c":false},{"a":17663,"n":"b_44FF","k":"branch","len":1,"c":false},{"a":17672,"n":"freq_table_build","k":"routine","len":39,"c":true},{"a":17676,"n":"b_450C","k":"branch","len":1,"c":false},{"a":17688,"n":"b_4518","k":"branch","len":1,"c":false},{"a":17711,"n":"freq_top_octave","k":"table","len":24,"c":true},{"a":17735,"n":"sid_init","k":"routine","len":15,"c":true},{"a":17737,"n":"b_4549","k":"branch","len":1,"c":false},{"a":17750,"n":"sid_init_values","k":"table","len":25,"c":true},{"a":17775,"n":"job_filter_start","k":"routine","len":5,"c":true},{"a":17780,"n":"job_filter_env3","k":"routine","len":18,"c":true},{"a":17798,"n":"job_v2_env3_raw","k":"routine","len":19,"c":true},{"a":17817,"n":"job_v2_env3","k":"routine","len":25,"c":true},{"a":17842,"n":"job_all_fall","k":"routine","len":61,"c":true},{"a":17862,"n":"b_45C6","k":"branch","len":1,"c":false},{"a":17882,"n":"b_45DA","k":"branch","len":1,"c":false},{"a":17902,"n":"r_45EE","k":"branch","len":1,"c":false},{"a":17903,"n":"job_v1_osc3","k":"routine","len":33,"c":true},{"a":17918,"n":"b_45FE","k":"branch","len":1,"c":false},{"a":17935,"n":"r_460F","k":"branch","len":1,"c":false},{"a":17936,"n":"job_v3_fall","k":"routine","len":21,"c":true},{"a":17956,"n":"r_4624","k":"branch","len":1,"c":false},{"a":17957,"n":"job_trill","k":"routine","len":82,"c":true},{"a":17959,"n":"b_4627","k":"branch","len":1,"c":false},{"a":18005,"n":"b_4655","k":"branch","len":1,"c":false},{"a":18029,"n":"b_466D","k":"branch","len":1,"c":false},{"a":18035,"n":"b_4673","k":"branch","len":1,"c":false},{"a":18039,"n":"job_slots_fall","k":"routine","len":50,"c":true},{"a":18041,"n":"b_4679","k":"branch","len":1,"c":false},{"a":18079,"n":"b_469F","k":"branch","len":1,"c":false},{"a":18085,"n":"b_46A5","k":"branch","len":1,"c":false},{"a":18089,"n":"mul8","k":"routine","len":20,"c":true},{"a":18091,"n":"b_46AB","k":"branch","len":1,"c":false},{"a":18100,"n":"b_46B4","k":"branch","len":1,"c":false},{"a":18109,"n":"hw_vectors","k":"table","len":6,"c":true},{"a":18121,"n":"freq_table","k":"table","len":64,"c":true},{"a":18313,"n":"note_count","k":"table","len":3,"c":true},{"a":18316,"n":"music_tune","k":"variable","len":1,"c":true},{"a":18317,"n":"sound_job_bits","k":"variable","len":1,"c":true},{"a":18318,"n":"slide_targets","k":"table","len":3,"c":true},{"a":18321,"n":"job_reg_offset","k":"variable","len":1,"c":true},{"a":18322,"n":"job_slot_index","k":"variable","len":2,"c":true},{"a":18324,"n":"trill_phase","k":"table","len":3,"c":true},{"a":18327,"n":"trill_targets","k":"table","len":3,"c":true},{"a":18330,"n":"trill_up","k":"table","len":3,"c":true},{"a":18333,"n":"trill_down","k":"table","len":3,"c":true},{"a":18336,"n":"mul_a","k":"variable","len":1,"c":true},{"a":18337,"n":"mul_b","k":"table","len":9,"c":true},{"a":18346,"n":"count_9593","k":"variable","len":1,"c":true},{"a":18347,"n":"count_9324","k":"variable","len":1,"c":true},{"a":18348,"n":"count_933f","k":"variable","len":2,"c":true},{"a":18350,"n":"pose_a8c4","k":"variable","len":1,"c":true},{"a":18351,"n":"time_a894","k":"variable","len":1,"c":true},{"a":18352,"n":"pass_a8b1","k":"table","len":16,"c":true},{"a":18368,"n":"sprite_shape_1f","k":"table","len":64,"c":true},{"a":18432,"n":"sprite_buffers","k":"table","len":1024,"c":true},{"a":20480,"n":"font_ascii","k":"table","len":728,"c":true},{"a":21208,"n":"act32_meal","k":"routine","len":6,"c":true},{"a":21214,"n":"act32_phases","k":"table","len":56,"c":true},{"a":21270,"n":"meal_stand","k":"routine","len":17,"c":true},{"a":21286,"n":"r_5326","k":"branch","len":1,"c":false},{"a":21287,"n":"meal_rounds","k":"variable","len":1,"c":true},{"a":21288,"n":"meal_ticks","k":"variable","len":1,"c":true},{"a":21289,"n":"meal_delay","k":"variable","len":1,"c":true},{"a":21290,"n":"meal_carry","k":"routine","len":8,"c":true},{"a":21298,"n":"meal_at_place_28","k":"routine","len":32,"c":true},{"a":21320,"n":"b_5348","k":"branch","len":1,"c":false},{"a":21330,"n":"meal_done","k":"routine","len":12,"c":true},{"a":21341,"n":"r_535D","k":"branch","len":1,"c":false},{"a":21342,"n":"meal_wait_arrival","k":"routine","len":8,"c":true},{"a":21350,"n":"meal_walk_22","k":"routine","len":4,"c":true},{"a":21354,"n":"meal_walk_24","k":"routine","len":4,"c":true},{"a":21358,"n":"meal_walk_27","k":"routine","len":4,"c":true},{"a":21362,"n":"meal_walk_28","k":"routine","len":4,"c":true},{"a":21366,"n":"meal_walk_26","k":"routine","len":10,"c":true},{"a":21368,"n":"b_5378","k":"branch","len":1,"c":false},{"a":21376,"n":"meal_hide_fig3","k":"routine","len":8,"c":true},{"a":21384,"n":"meal_show_fig3","k":"routine","len":45,"c":true},{"a":21429,"n":"meal_check","k":"routine","len":47,"c":true},{"a":21462,"n":"r_53D6","k":"branch","len":1,"c":false},{"a":21463,"n":"b_53D7","k":"branch","len":1,"c":false},{"a":21476,"n":"meal_chew","k":"routine","len":85,"c":true},{"a":21492,"n":"b_53F4","k":"branch","len":1,"c":false},{"a":21507,"n":"b_5403","k":"branch","len":1,"c":false},{"a":21539,"n":"b_5423","k":"branch","len":1,"c":false},{"a":21557,"n":"b_5435","k":"branch","len":1,"c":false},{"a":21560,"n":"r_5438","k":"branch","len":1,"c":false},{"a":21561,"n":"meal_head_frames","k":"table","len":4,"c":true},{"a":21565,"n":"meal_bite","k":"routine","len":62,"c":true},{"a":21627,"n":"meal_bite_wait","k":"routine","len":9,"c":true},{"a":21635,"n":"r_5483","k":"branch","len":1,"c":false},{"a":21636,"n":"meal_begin_eating","k":"routine","len":91,"c":true},{"a":21727,"n":"letter_typing","k":"variable","len":1,"c":true},{"a":21728,"n":"letter_lines","k":"variable","len":1,"c":true},{"a":21729,"n":"carriage_pos","k":"variable","len":1,"c":true},{"a":21730,"n":"letter_done","k":"variable","len":1,"c":true},{"a":21731,"n":"act22_letter","k":"routine","len":3,"c":true},{"a":21734,"n":"act22_phases","k":"table","len":60,"c":true},{"a":21794,"n":"letter_check","k":"routine","len":9,"c":true},{"a":21803,"n":"letter_walk_0a","k":"routine","len":9,"c":true},{"a":21812,"n":"letter_walk_07","k":"routine","len":5,"c":true},{"a":21814,"n":"b_5536","k":"branch","len":1,"c":false},{"a":21817,"n":"letter_walk_08","k":"routine","len":9,"c":true},{"a":21826,"n":"letter_wait_sit","k":"routine","len":10,"c":true},{"a":21833,"n":"b_5549","k":"branch","len":1,"c":false},{"a":21835,"n":"r_554B","k":"branch","len":1,"c":false},{"a":21836,"n":"letter_wait","k":"routine","len":8,"c":true},{"a":21841,"n":"b_5551","k":"branch","len":1,"c":false},{"a":21844,"n":"letter_walk_09","k":"routine","len":7,"c":true},{"a":21851,"n":"letter_fig2_e7","k":"routine","len":4,"c":true},{"a":21855,"n":"letter_fig2_e2","k":"routine","len":47,"c":true},{"a":21857,"n":"b_5561","k":"branch","len":1,"c":false},{"a":21902,"n":"letter_hide_fig2","k":"routine","len":11,"c":true},{"a":21913,"n":"letter_next_char","k":"routine","len":11,"c":true},{"a":21923,"n":"r_55A3","k":"branch","len":1,"c":false},{"a":21924,"n":"letter_begin","k":"routine","len":32,"c":true},{"a":21956,"n":"letter_compose","k":"routine","len":40,"c":true},{"a":21980,"n":"b_55DC","k":"branch","len":1,"c":false},{"a":21996,"n":"letter_write_index","k":"variable","len":1,"c":true},{"a":21997,"n":"letter_copy_piece","k":"routine","len":19,"c":true},{"a":22000,"n":"b_55F0","k":"branch","len":1,"c":false},{"a":22012,"n":"b_55FC","k":"branch","len":1,"c":false},{"a":22016,"n":"txt_letter_dear","k":"table","len":16,"c":true},{"a":22032,"n":"txt_letter_signoff","k":"table","len":42,"c":true},{"a":22074,"n":"txt_letter_thanks","k":"table","len":60,"c":true},{"a":22134,"n":"txt_letter_complaint","k":"table","len":103,"c":true},{"a":22237,"n":"letter_key_delay","k":"variable","len":1,"c":true},{"a":22238,"n":"letter_last_frame","k":"variable","len":1,"c":true},{"a":22239,"n":"letter_type_frames","k":"table","len":4,"c":true},{"a":22243,"n":"letter_type","k":"routine","len":94,"c":true},{"a":22255,"n":"b_56EF","k":"branch","len":1,"c":false},{"a":22280,"n":"b_5708","k":"branch","len":1,"c":false},{"a":22291,"n":"b_5713","k":"branch","len":1,"c":false},{"a":22301,"n":"b_571D","k":"branch","len":1,"c":false},{"a":22310,"n":"b_5726","k":"branch","len":1,"c":false},{"a":22322,"n":"b_5732","k":"branch","len":1,"c":false},{"a":22336,"n":"r_5740","k":"branch","len":1,"c":false},{"a":22337,"n":"letter_wrap","k":"routine","len":5,"c":true},{"a":22342,"n":"letter_count_line","k":"routine","len":16,"c":true},{"a":22357,"n":"r_5755","k":"branch","len":1,"c":false},{"a":22358,"n":"draw_typewriter","k":"routine","len":109,"c":true},{"a":22374,"n":"b_5766","k":"branch","len":1,"c":false},{"a":22385,"n":"b_5771","k":"branch","len":1,"c":false},{"a":22423,"n":"b_5797","k":"branch","len":1,"c":false},{"a":22431,"n":"b_579F","k":"branch","len":1,"c":false},{"a":22466,"n":"r_57C2","k":"branch","len":1,"c":false},{"a":22467,"n":"paper_cell26","k":"table","len":4,"c":true},{"a":22471,"n":"paper_cell27","k":"table","len":4,"c":true},{"a":22475,"n":"paper_cell28","k":"table","len":4,"c":true},{"a":22479,"n":"paper_cell29","k":"table","len":8,"c":true},{"a":22487,"n":"carriage_cell26","k":"table","len":4,"c":true},{"a":22491,"n":"carriage_cell27","k":"table","len":4,"c":true},{"a":22495,"n":"carriage_cell28","k":"table","len":4,"c":true},{"a":22499,"n":"carriage_cell29","k":"table","len":8,"c":true},{"a":22507,"n":"clear_typewriter","k":"routine","len":47,"c":true},{"a":22511,"n":"b_57EF","k":"branch","len":1,"c":false},{"a":22531,"n":"b_5803","k":"branch","len":1,"c":false},{"a":22554,"n":"letter_clear_paper","k":"routine","len":6,"c":true},{"a":22560,"n":"set_person_frame","k":"routine","len":5,"c":true},{"a":22565,"n":"act20_computer","k":"routine","len":3,"c":true},{"a":22568,"n":"act20_phases","k":"table","len":10,"c":true},{"a":22578,"n":"computer_walk","k":"routine","len":5,"c":true},{"a":22583,"n":"computer_ticks","k":"variable","len":1,"c":true},{"a":22584,"n":"computer_time","k":"variable","len":1,"c":true},{"a":22585,"n":"computer_pause","k":"variable","len":1,"c":true},{"a":22586,"n":"computer_sit","k":"routine","len":39,"c":true},{"a":22622,"n":"j_585E","k":"branch","len":1,"c":false},{"a":22625,"n":"computer_pace","k":"variable","len":1,"c":true},{"a":22626,"n":"computer_key_1a","k":"variable","len":1,"c":true},{"a":22627,"n":"computer_key_1d","k":"variable","len":1,"c":true},{"a":22628,"n":"computer_run","k":"routine","len":127,"c":true},{"a":22647,"n":"b_5877","k":"branch","len":1,"c":false},{"a":22657,"n":"b_5881","k":"branch","len":1,"c":false},{"a":22668,"n":"b_588C","k":"branch","len":1,"c":false},{"a":22690,"n":"b_58A2","k":"branch","len":1,"c":false},{"a":22723,"n":"b_58C3","k":"branch","len":1,"c":false},{"a":22735,"n":"b_58CF","k":"branch","len":1,"c":false},{"a":22743,"n":"j_58D7","k":"branch","len":1,"c":false},{"a":22747,"n":"j_58DB","k":"branch","len":1,"c":false},{"a":22755,"n":"computer_maybe_switch","k":"routine","len":16,"c":true},{"a":22770,"n":"r_58F2","k":"branch","len":1,"c":false},{"a":22771,"n":"computer_text_step","k":"routine","len":32,"c":true},{"a":22803,"n":"screen_char_offsets","k":"table","len":7,"c":true},{"a":22810,"n":"screen_char_pixels","k":"table","len":7,"c":true},{"a":22817,"n":"computer_scroll","k":"routine","len":102,"c":true},{"a":22822,"n":"b_5926","k":"branch","len":1,"c":false},{"a":22865,"n":"b_5951","k":"branch","len":1,"c":false},{"a":22919,"n":"screen_x_masks","k":"table","len":7,"c":true},{"a":22926,"n":"screen_x_cells","k":"table","len":7,"c":true},{"a":22933,"n":"screen_y_rows","k":"table","len":9,"c":true},{"a":22942,"n":"screen_colours","k":"table","len":4,"c":true},{"a":22946,"n":"pen_dx","k":"variable","len":2,"c":true},{"a":22948,"n":"pen_dy","k":"table","len":8,"c":true},{"a":22956,"n":"pen_x","k":"variable","len":1,"c":true},{"a":22957,"n":"pen_y","k":"variable","len":1,"c":true},{"a":22958,"n":"pen_colour","k":"variable","len":1,"c":true},{"a":22959,"n":"pixel_bits","k":"variable","len":1,"c":true},{"a":22960,"n":"computer_mode","k":"variable","len":1,"c":true},{"a":22961,"n":"plot_x","k":"variable","len":1,"c":true},{"a":22962,"n":"plot_y","k":"variable","len":1,"c":true},{"a":22963,"n":"draw_style","k":"variable","len":1,"c":true},{"a":22964,"n":"bar_colour","k":"variable","len":1,"c":true},{"a":22965,"n":"bar_height","k":"variable","len":1,"c":true},{"a":22966,"n":"computer_draw","k":"routine","len":216,"c":true},{"a":23053,"n":"b_5A0D","k":"branch","len":1,"c":false},{"a":23056,"n":"b_5A10","k":"branch","len":1,"c":false},{"a":23071,"n":"b_5A1F","k":"branch","len":1,"c":false},{"a":23074,"n":"b_5A22","k":"branch","len":1,"c":false},{"a":23085,"n":"b_5A2D","k":"branch","len":1,"c":false},{"a":23088,"n":"b_5A30","k":"branch","len":1,"c":false},{"a":23110,"n":"b_5A46","k":"branch","len":1,"c":false},{"a":23128,"n":"b_5A58","k":"branch","len":1,"c":false},{"a":23134,"n":"b_5A5E","k":"branch","len":1,"c":false},{"a":23152,"n":"b_5A70","k":"branch","len":1,"c":false},{"a":23158,"n":"b_5A76","k":"branch","len":1,"c":false},{"a":23173,"n":"b_5A85","k":"branch","len":1,"c":false},{"a":23182,"n":"plot_pixel","k":"routine","len":66,"c":true},{"a":23232,"n":"b_5AC0","k":"branch","len":1,"c":false},{"a":23245,"n":"j_5ACD","k":"branch","len":1,"c":false},{"a":23248,"n":"computer_program","k":"routine","len":47,"c":true},{"a":23265,"n":"b_5AE1","k":"branch","len":1,"c":false},{"a":23281,"n":"b_5AF1","k":"branch","len":1,"c":false},{"a":23284,"n":"b_5AF4","k":"branch","len":1,"c":false},{"a":23295,"n":"computer_blank","k":"routine","len":42,"c":true},{"a":23300,"n":"b_5B04","k":"branch","len":1,"c":false},{"a":23337,"n":"hook_after_draw","k":"routine","len":1,"c":true},{"a":23338,"n":"hook_before_draw","k":"routine","len":1,"c":true},{"a":23339,"n":"act113","k":"routine","len":3,"c":true},{"a":23342,"n":"act113_phases","k":"table","len":14,"c":true},{"a":23356,"n":"act113_busy","k":"routine","len":1,"c":true},{"a":23357,"n":"act113_turn","k":"routine","len":19,"c":true},{"a":23376,"n":"act113_start","k":"routine","len":55,"c":true},{"a":23431,"n":"act113_end","k":"routine","len":22,"c":true},{"a":23452,"n":"r_5B9C","k":"branch","len":1,"c":false},{"a":23453,"n":"act113_time","k":"variable","len":1,"c":true},{"a":23454,"n":"act113_step","k":"variable","len":1,"c":true},{"a":23455,"n":"act113_animate","k":"routine","len":48,"c":true},{"a":23479,"n":"b_5BB7","k":"branch","len":1,"c":false},{"a":23482,"n":"b_5BBA","k":"branch","len":1,"c":false},{"a":23503,"n":"act113_frames","k":"table","len":4,"c":true},{"a":23507,"n":"copy_position","k":"routine","len":37,"c":true},{"a":24576,"n":"house_bitmap","k":"table","len":64,"c":true},{"a":24640,"n":"house_row00_c08","k":"table","len":192,"c":true},{"a":24832,"n":"band_fill_6100","k":"table","len":64,"c":true},{"a":24896,"n":"house_row01","k":"table","len":128,"c":true},{"a":25024,"n":"band_fill_61c0","k":"table","len":64,"c":true},{"a":25088,"n":"band_fill_6200","k":"table","len":64,"c":true},{"a":25152,"n":"house_row01_c32","k":"table","len":64,"c":true},{"a":25216,"n":"house_row02","k":"table","len":63,"c":true},{"a":25279,"n":"band_fill_62bf","k":"variable","len":1,"c":true},{"a":25280,"n":"roof_ridge","k":"table","len":64,"c":true},{"a":25344,"n":"house_row02_c16","k":"table","len":192,"c":true},{"a":25536,"n":"house_row03","k":"table","len":320,"c":true},{"a":25856,"n":"house_row04","k":"table","len":320,"c":true},{"a":26176,"n":"house_row05","k":"table","len":72,"c":true},{"a":26248,"n":"turntable_cells","k":"table","len":16,"c":true},{"a":26264,"n":"house_row05_c11","k":"table","len":112,"c":true},{"a":26376,"n":"typewriter_paper","k":"table","len":8,"c":true},{"a":26384,"n":"paper_row5_c26","k":"table","len":8,"c":true},{"a":26392,"n":"paper_row5_c27","k":"table","len":8,"c":true},{"a":26400,"n":"paper_row5_c28","k":"table","len":8,"c":true},{"a":26408,"n":"paper_row5_c29","k":"table","len":8,"c":true},{"a":26416,"n":"house_row05_c30","k":"table","len":80,"c":true},{"a":26496,"n":"house_row06","k":"table","len":200,"c":true},{"a":26696,"n":"paper_row6_c25","k":"table","len":8,"c":true},{"a":26704,"n":"paper_row6_c26","k":"table","len":8,"c":true},{"a":26712,"n":"paper_row6_c27","k":"table","len":8,"c":true},{"a":26720,"n":"paper_row6_c28","k":"table","len":8,"c":true},{"a":26728,"n":"paper_row6_c29","k":"table","len":8,"c":true},{"a":26736,"n":"house_row06_c30","k":"table","len":80,"c":true},{"a":26816,"n":"house_row07","k":"table","len":320,"c":true},{"a":27136,"n":"house_row08","k":"table","len":320,"c":true},{"a":27456,"n":"house_row09","k":"table","len":320,"c":true},{"a":27776,"n":"house_row10","k":"table","len":272,"c":true},{"a":28048,"n":"clock_centre_top","k":"table","len":16,"c":true},{"a":28064,"n":"house_row10_c36","k":"table","len":32,"c":true},{"a":28096,"n":"house_row11","k":"table","len":272,"c":true},{"a":28368,"n":"clock_centre_bottom","k":"table","len":16,"c":true},{"a":28384,"n":"house_row11_c36","k":"table","len":32,"c":true},{"a":28416,"n":"house_row12","k":"table","len":288,"c":true},{"a":28704,"n":"comp_scr_c36","k":"variable","len":1,"c":true},{"a":28705,"n":"comp_scr_c36_l1","k":"variable","len":2,"c":true},{"a":28707,"n":"comp_scr_c36_l3","k":"variable","len":1,"c":true},{"a":28708,"n":"comp_scr_c36_l4","k":"table","len":3,"c":true},{"a":28711,"n":"comp_scr_c36_l7","k":"variable","len":1,"c":true},{"a":28712,"n":"comp_scr_c37","k":"variable","len":1,"c":true},{"a":28713,"n":"comp_scr_c37_l1","k":"variable","len":2,"c":true},{"a":28715,"n":"comp_scr_c37_l3","k":"variable","len":1,"c":true},{"a":28716,"n":"comp_scr_c37_l4","k":"table","len":3,"c":true},{"a":28719,"n":"comp_scr_c37_l7","k":"variable","len":1,"c":true},{"a":28720,"n":"comp_scr_c38","k":"variable","len":1,"c":true},{"a":28721,"n":"comp_scr_c38_l1","k":"variable","len":2,"c":true},{"a":28723,"n":"comp_scr_c38_l3","k":"variable","len":1,"c":true},{"a":28724,"n":"comp_scr_c38_l4","k":"table","len":3,"c":true},{"a":28727,"n":"comp_scr_c38_l7","k":"table","len":9,"c":true},{"a":28736,"n":"house_row13","k":"table","len":57,"c":true},{"a":28793,"n":"alarm_bell_l","k":"table","len":8,"c":true},{"a":28801,"n":"alarm_bell_r","k":"table","len":7,"c":true},{"a":28808,"n":"house_row13_c09","k":"table","len":216,"c":true},{"a":29024,"n":"comp_scr2_c36","k":"variable","len":1,"c":true},{"a":29025,"n":"comp_scr2_c36_l1","k":"variable","len":2,"c":true},{"a":29027,"n":"comp_scr2_c36_l3","k":"table","len":5,"c":true},{"a":29032,"n":"comp_scr2_c37","k":"variable","len":1,"c":true},{"a":29033,"n":"comp_scr2_c37_l1","k":"variable","len":2,"c":true},{"a":29035,"n":"comp_scr2_c37_l3","k":"table","len":5,"c":true},{"a":29040,"n":"comp_scr2_c38","k":"variable","len":1,"c":true},{"a":29041,"n":"comp_scr2_c38_l1","k":"variable","len":2,"c":true},{"a":29043,"n":"comp_scr2_c38_l3","k":"table","len":13,"c":true},{"a":29056,"n":"house_row14","k":"table","len":320,"c":true},{"a":29376,"n":"house_row15","k":"table","len":320,"c":true},{"a":29696,"n":"house_row16","k":"table","len":320,"c":true},{"a":30016,"n":"house_row17","k":"table","len":320,"c":true},{"a":30336,"n":"house_row18","k":"table","len":320,"c":true},{"a":30656,"n":"house_row19","k":"table","len":320,"c":true},{"a":30976,"n":"house_row20","k":"table","len":148,"c":true},{"a":31124,"n":"cooler_water_top","k":"table","len":8,"c":true},{"a":31132,"n":"cooler_water_top_r","k":"table","len":4,"c":true},{"a":31136,"n":"house_row20_c20","k":"table","len":160,"c":true},{"a":31296,"n":"house_row21","k":"table","len":8,"c":true},{"a":31304,"n":"stove_top_7a48","k":"variable","len":1,"c":true},{"a":31305,"n":"stove_top_7a49","k":"table","len":5,"c":true},{"a":31310,"n":"stove_burner","k":"table","len":3,"c":true},{"a":31313,"n":"stove_top_7a51","k":"table","len":7,"c":true},{"a":31320,"n":"house_row21_c03","k":"table","len":116,"c":true},{"a":31436,"n":"cooler_water_base","k":"table","len":8,"c":true},{"a":31444,"n":"cooler_water_base_r","k":"table","len":12,"c":true},{"a":31456,"n":"house_row21_c20","k":"table","len":36,"c":true},{"a":31492,"n":"phone_handset_l4","k":"variable","len":1,"c":true},{"a":31493,"n":"phone_handset_l5","k":"variable","len":1,"c":true},{"a":31494,"n":"phone_handset_l6","k":"table","len":6,"c":true},{"a":31500,"n":"phone_handset_r4","k":"variable","len":1,"c":true},{"a":31501,"n":"phone_handset_r5","k":"variable","len":1,"c":true},{"a":31502,"n":"phone_handset_r6","k":"variable","len":2,"c":true},{"a":31504,"n":"house_row21_c26","k":"table","len":112,"c":true},{"a":31616,"n":"house_row22","k":"table","len":320,"c":true},{"a":31936,"n":"house_row23","k":"table","len":11,"c":true},{"a":31947,"n":"dog_bowl_food","k":"variable","len":1,"c":true},{"a":31948,"n":"dog_bowl_food_2","k":"table","len":4,"c":true},{"a":31952,"n":"house_row23_c02","k":"table","len":304,"c":true},{"a":32256,"n":"house_row24","k":"table","len":320,"c":true},{"a":32576,"n":"music_read_ofs","k":"variable","len":1,"c":true},{"a":32577,"n":"music_op_param","k":"variable","len":1,"c":true},{"a":32578,"n":"music_mul_hi","k":"variable","len":1,"c":true},{"a":32579,"n":"music_mul_mid","k":"variable","len":1,"c":true},{"a":32580,"n":"music_mul_lo","k":"variable","len":1,"c":true},{"a":32581,"n":"music_mul_factor","k":"variable","len":1,"c":true},{"a":32582,"n":"music_voice1","k":"table","len":5,"c":true},{"a":32587,"n":"music_v1_tempo","k":"table","len":4,"c":true},{"a":32591,"n":"music_v_countdown","k":"variable","len":1,"c":true},{"a":32592,"n":"music_v_release","k":"variable","len":2,"c":true},{"a":32594,"n":"music_v_status","k":"variable","len":1,"c":true},{"a":32595,"n":"music_voice1_stack","k":"table","len":32,"c":true},{"a":32627,"n":"music_voice2","k":"table","len":5,"c":true},{"a":32632,"n":"music_v2_tempo","k":"table","len":7,"c":true},{"a":32639,"n":"music_v2_status","k":"variable","len":1,"c":true},{"a":32640,"n":"music_voice2_stack","k":"table","len":32,"c":true},{"a":32672,"n":"music_voice3","k":"table","len":5,"c":true},{"a":32677,"n":"music_v3_tempo","k":"table","len":7,"c":true},{"a":32684,"n":"music_v3_status","k":"variable","len":1,"c":true},{"a":32685,"n":"music_voice3_stack","k":"table","len":32,"c":true},{"a":32717,"n":"sid_shadow","k":"variable","len":1,"c":true},{"a":32718,"n":"sid_shadow_freq_hi","k":"table","len":3,"c":true},{"a":32721,"n":"sid_shadow_ctrl","k":"table","len":3,"c":true},{"a":32724,"n":"sid_shadow_v2_freq","k":"variable","len":1,"c":true},{"a":32725,"n":"sid_shadow_v2_freq_hi","k":"table","len":6,"c":true},{"a":32731,"n":"sid_shadow_v3_freq","k":"variable","len":1,"c":true},{"a":32732,"n":"sid_shadow_v3_freq_hi","k":"table","len":6,"c":true},{"a":32738,"n":"sid_shadow_filter_lo","k":"variable","len":1,"c":true},{"a":32739,"n":"sid_shadow_cutoff","k":"variable","len":1,"c":true},{"a":32740,"n":"sid_shadow_resonance","k":"variable","len":1,"c":true},{"a":32741,"n":"sid_shadow_volume","k":"variable","len":2,"c":true},{"a":32743,"n":"music_cur_voice","k":"variable","len":1,"c":true},{"a":32744,"n":"music_cur_sid_ofs","k":"variable","len":1,"c":true},{"a":32745,"n":"music_cur_block_ofs","k":"variable","len":1,"c":true},{"a":32746,"n":"music_voice_notes","k":"table","len":3,"c":true},{"a":32749,"n":"music_vib_step","k":"table","len":3,"c":true},{"a":32752,"n":"music_vib_len","k":"variable","len":1,"c":true},{"a":32753,"n":"music_slide_mul","k":"variable","len":1,"c":true},{"a":32754,"n":"music_slide_mul_v2","k":"variable","len":1,"c":true},{"a":32755,"n":"music_slide_mul_v3","k":"variable","len":1,"c":true},{"a":32756,"n":"music_hook","k":"variable","len":1,"c":true},{"a":32757,"n":"music_hook_hi","k":"variable","len":1,"c":true},{"a":32758,"n":"music_hook_v2","k":"variable","len":1,"c":true},{"a":32759,"n":"music_hook_v2_hi","k":"variable","len":1,"c":true},{"a":32760,"n":"music_hook_v3","k":"variable","len":1,"c":true},{"a":32761,"n":"music_hook_v3_hi","k":"variable","len":1,"c":true},{"a":32762,"n":"unused_7ffa","k":"table","len":6,"c":true},{"a":32768,"n":"driver_jumps","k":"routine","len":12,"c":true},{"a":32780,"n":"music_tick_jmp","k":"routine","len":3,"c":true},{"a":32783,"n":"music_start_jmp","k":"routine","len":3,"c":true},{"a":32786,"n":"music_stop_jmp","k":"routine","len":3,"c":true},{"a":32789,"n":"drv_stub_8015","k":"routine","len":3,"c":true},{"a":32792,"n":"music_irq_jmp","k":"routine","len":3,"c":true},{"a":32795,"n":"drv_stub_801b","k":"routine","len":3,"c":true},{"a":32798,"n":"music_playing","k":"variable","len":1,"c":true},{"a":32799,"n":"music_stop_req","k":"variable","len":1,"c":true},{"a":32800,"n":"piano_song1","k":"table","len":20,"c":true},{"a":32820,"n":"piano_s1_v2","k":"table","len":181,"c":true},{"a":33001,"n":"piano_s1_v1","k":"table","len":41,"c":true},{"a":33042,"n":"piano_s1_pat_v1","k":"table","len":256,"c":true},{"a":33298,"n":"piano_s1_v3","k":"table","len":65,"c":true},{"a":33363,"n":"piano_s1_pat_v3","k":"table","len":298,"c":true},{"a":33661,"n":"piano_s1_patterns","k":"table","len":16,"c":true},{"a":33677,"n":"piano_song2","k":"table","len":20,"c":true},{"a":33697,"n":"piano_s2_v2","k":"table","len":117,"c":true},{"a":33814,"n":"piano_s2_v1","k":"table","len":86,"c":true},{"a":33900,"n":"piano_s2_v3","k":"table","len":148,"c":true},{"a":34048,"n":"piano_s2_patterns","k":"table","len":12,"c":true},{"a":34060,"n":"piano_s2_pat","k":"table","len":174,"c":true},{"a":34234,"n":"piano_song3","k":"table","len":20,"c":true},{"a":34254,"n":"piano_s3_patterns","k":"table","len":6,"c":true},{"a":34260,"n":"piano_s3_v2","k":"table","len":88,"c":true},{"a":34348,"n":"piano_s3_v1","k":"table","len":70,"c":true},{"a":34418,"n":"piano_s3_v3","k":"table","len":90,"c":true},{"a":34508,"n":"piano_s3_pat","k":"table","len":100,"c":true},{"a":34608,"n":"piano_song4","k":"table","len":20,"c":true},{"a":34628,"n":"piano_s4_v3","k":"table","len":539,"c":true},{"a":35167,"n":"piano_s4_v2","k":"table","len":567,"c":true},{"a":35734,"n":"piano_s4_v1","k":"table","len":515,"c":true},{"a":36249,"n":"script_none","k":"variable","len":1,"c":true},{"a":36250,"n":"act_music_on","k":"variable","len":1,"c":true},{"a":36251,"n":"activity","k":"variable","len":1,"c":true},{"a":36252,"n":"act_wait_count","k":"variable","len":1,"c":true},{"a":36253,"n":"request_running","k":"variable","len":1,"c":true},{"a":36254,"n":"request_activity","k":"variable","len":1,"c":true},{"a":36255,"n":"saved_039a","k":"variable","len":1,"c":true},{"a":36256,"n":"saved_038b","k":"variable","len":1,"c":true},{"a":36257,"n":"saved_phase","k":"variable","len":1,"c":true},{"a":36258,"n":"saved_activity","k":"variable","len":1,"c":true},{"a":36259,"n":"saved_target","k":"variable","len":1,"c":true},{"a":36260,"n":"saved_loc_x","k":"variable","len":1,"c":true},{"a":36261,"n":"saved_loc_depth","k":"variable","len":1,"c":true},{"a":36262,"n":"saved_loc_y","k":"variable","len":1,"c":true},{"a":36263,"n":"saved_subphase","k":"variable","len":1,"c":true},{"a":36264,"n":"saved_script_lo","k":"variable","len":1,"c":true},{"a":36265,"n":"saved_script_hi","k":"variable","len":1,"c":true},{"a":36266,"n":"dispatch_skip","k":"routine","len":1,"c":true},{"a":36267,"n":"activity_dispatch","k":"routine","len":30,"c":true},{"a":36281,"n":"b_8DB9","k":"branch","len":1,"c":false},{"a":36297,"n":"activity_table","k":"table","len":256,"c":true},{"a":36553,"n":"act117","k":"routine","len":3,"c":true},{"a":36556,"n":"act117_phases","k":"table","len":6,"c":true},{"a":36562,"n":"act114","k":"routine","len":19,"c":true},{"a":36578,"n":"b_8EE2","k":"branch","len":1,"c":false},{"a":36581,"n":"set_target_0","k":"routine","len":5,"c":true},{"a":36586,"n":"set_target_1","k":"routine","len":5,"c":true},{"a":36591,"n":"walk_to_location_16","k":"routine","len":5,"c":true},{"a":36596,"n":"walk_to_location_24","k":"routine","len":5,"c":true},{"a":36601,"n":"walk_to_location","k":"routine","len":8,"c":true},{"a":36609,"n":"set_target_2a","k":"routine","len":5,"c":true},{"a":36614,"n":"set_target_2b","k":"routine","len":2,"c":true},{"a":36616,"n":"set_target_next","k":"routine","len":3,"c":true},{"a":36619,"n":"next_phase","k":"routine","len":3,"c":true},{"a":36621,"n":"r_8F0D","k":"branch","len":1,"c":false},{"a":36622,"n":"script_next","k":"routine","len":66,"c":true},{"a":36653,"n":"b_8F2D","k":"branch","len":1,"c":false},{"a":36660,"n":"b_8F34","k":"branch","len":1,"c":false},{"a":36673,"n":"b_8F41","k":"branch","len":1,"c":false},{"a":36688,"n":"start_next_request","k":"routine","len":54,"c":true},{"a":36694,"n":"b_8F56","k":"branch","len":1,"c":false},{"a":36730,"n":"b_8F7A","k":"branch","len":1,"c":false},{"a":36742,"n":"request_pending","k":"routine","len":13,"c":true},{"a":36754,"n":"r_8F92","k":"branch","len":1,"c":false},{"a":36755,"n":"check_other_request","k":"routine","len":20,"c":true},{"a":36757,"n":"b_8F95","k":"branch","len":1,"c":false},{"a":36768,"n":"b_8FA0","k":"branch","len":1,"c":false},{"a":36775,"n":"wait_or_request","k":"routine","len":26,"c":true},{"a":36791,"n":"b_8FB7","k":"branch","len":1,"c":false},{"a":36801,"n":"interrupt_for_request","k":"routine","len":83,"c":true},{"a":36874,"n":"b_900A","k":"branch","len":1,"c":false},{"a":36884,"n":"enter_request","k":"routine","len":45,"c":true},{"a":36898,"n":"b_9022","k":"branch","len":1,"c":false},{"a":36900,"n":"b_9024","k":"branch","len":1,"c":false},{"a":36912,"n":"b_9030","k":"branch","len":1,"c":false},{"a":36920,"n":"j_9038","k":"branch","len":1,"c":false},{"a":36928,"n":"r_9040","k":"branch","len":1,"c":false},{"a":36929,"n":"start_request_a","k":"routine","len":6,"c":true},{"a":36935,"n":"unused_switch_9047","k":"routine","len":3,"c":true},{"a":36940,"n":"act02_cancel_request","k":"routine","len":14,"c":true},{"a":36954,"n":"act03_start_script","k":"routine","len":7,"c":true},{"a":36961,"n":"script_act03","k":"table","len":7,"c":true},{"a":36968,"n":"script_act03_slot7","k":"table","len":7,"c":true},{"a":36975,"n":"act04_start_script","k":"routine","len":7,"c":true},{"a":36982,"n":"script_act04","k":"table","len":11,"c":true},{"a":36993,"n":"act05_watch_tv","k":"routine","len":3,"c":true},{"a":36996,"n":"act05_phases","k":"table","len":22,"c":true},{"a":37018,"n":"skip_if_tv_on","k":"routine","len":8,"c":true},{"a":37023,"n":"b_909F","k":"branch","len":1,"c":false},{"a":37026,"n":"skip_if_tv_off","k":"routine","len":8,"c":true},{"a":37031,"n":"b_90A7","k":"branch","len":1,"c":false},{"a":37034,"n":"set_act16","k":"routine","len":2,"c":true},{"a":37036,"n":"set_activity_a","k":"routine","len":6,"c":true},{"a":37042,"n":"act06_go_to_chair","k":"routine","len":3,"c":true},{"a":37045,"n":"act06_phases","k":"table","len":30,"c":true},{"a":37075,"n":"set_act17","k":"routine","len":5,"c":true},{"a":37080,"n":"act08_short","k":"routine","len":3,"c":true},{"a":37089,"n":"act120_stereo_on","k":"routine","len":3,"c":true},{"a":37092,"n":"act120_phases","k":"table","len":14,"c":true},{"a":37106,"n":"set_act18","k":"routine","len":5,"c":true},{"a":37111,"n":"act121_stereo_off","k":"routine","len":3,"c":true},{"a":37114,"n":"act121_phases","k":"table","len":14,"c":true},{"a":37128,"n":"act10_phone_table","k":"routine","len":3,"c":true},{"a":37131,"n":"act10_phases","k":"table","len":26,"c":true},{"a":37157,"n":"act11_at_sink","k":"routine","len":3,"c":true},{"a":37160,"n":"act11_phases","k":"table","len":14,"c":true},{"a":37174,"n":"act12_start_script","k":"routine","len":7,"c":true},{"a":37181,"n":"script_act12","k":"table","len":8,"c":true},{"a":37189,"n":"act13_start_script","k":"routine","len":7,"c":true},{"a":37196,"n":"script_act13","k":"table","len":8,"c":true},{"a":37204,"n":"act14_start_script","k":"routine","len":7,"c":true},{"a":37211,"n":"act122_come_in","k":"routine","len":7,"c":true},{"a":37218,"n":"script_act14","k":"table","len":8,"c":true},{"a":37226,"n":"act15_resume","k":"routine","len":67,"c":true},{"a":37250,"n":"b_9182","k":"branch","len":1,"c":false},{"a":37258,"n":"b_918A","k":"branch","len":1,"c":false},{"a":37264,"n":"b_9190","k":"branch","len":1,"c":false},{"a":37293,"n":"act16_toggle_tv","k":"routine","len":3,"c":true},{"a":37296,"n":"act16_phases","k":"table","len":30,"c":true},{"a":37326,"n":"rnd_branch","k":"routine","len":13,"c":true},{"a":37336,"n":"b_91D8","k":"branch","len":1,"c":false},{"a":37339,"n":"act17_toggle_lamp","k":"routine","len":3,"c":true},{"a":37342,"n":"act17_phases","k":"table","len":30,"c":true},{"a":37372,"n":"rnd_branch2","k":"routine","len":10,"c":true},{"a":37382,"n":"skip8","k":"routine","len":5,"c":true},{"a":37387,"n":"skip_unless_lamp_75","k":"routine","len":10,"c":true},{"a":37397,"n":"skip6","k":"routine","len":5,"c":true},{"a":37402,"n":"skip_if_lamp_75","k":"routine","len":10,"c":true},{"a":37412,"n":"act18_stereo_off","k":"routine","len":3,"c":true},{"a":37415,"n":"act18_phases","k":"table","len":14,"c":true},{"a":37429,"n":"unused_rnd_9235","k":"routine","len":13,"c":true},{"a":37439,"n":"b_923F","k":"branch","len":1,"c":false},{"a":37442,"n":"skip_if_stereo_on","k":"routine","len":11,"c":true},{"a":37450,"n":"b_924A","k":"branch","len":1,"c":false},{"a":37453,"n":"skip_if_stereo_off","k":"routine","len":9,"c":true},{"a":37462,"n":"stereo_on","k":"routine","len":24,"c":true},{"a":37486,"n":"stereo_off","k":"routine","len":30,"c":true},{"a":37516,"n":"reach_timer","k":"variable","len":1,"c":true},{"a":37517,"n":"reach_pose_start","k":"routine","len":10,"c":true},{"a":37527,"n":"reach_pose_hold","k":"routine","len":11,"c":true},{"a":37537,"n":"r_92A1","k":"branch","len":1,"c":false},{"a":37538,"n":"act19_close_all","k":"routine","len":3,"c":true},{"a":37541,"n":"act19_phases","k":"table","len":84,"c":true},{"a":37625,"n":"rummage_start","k":"routine","len":54,"c":true},{"a":37635,"n":"b_9303","k":"branch","len":1,"c":false},{"a":37657,"n":"b_9319","k":"branch","len":1,"c":false},{"a":37668,"n":"b_9324","k":"branch","len":1,"c":false},{"a":37671,"n":"b_9327","k":"branch","len":1,"c":false},{"a":37679,"n":"rummage_lengths","k":"table","len":16,"c":true},{"a":37695,"n":"rummage_skip","k":"routine","len":1,"c":true},{"a":37696,"n":"rummage","k":"routine","len":35,"c":true},{"a":37714,"n":"b_9352","k":"branch","len":1,"c":false},{"a":37731,"n":"set_pose","k":"routine","len":28,"c":true},{"a":37736,"n":"b_9368","k":"branch","len":1,"c":false},{"a":37756,"n":"b_937C","k":"branch","len":1,"c":false},{"a":37759,"n":"unused_pose20","k":"routine","len":4,"c":true},{"a":37763,"n":"rummage_poses","k":"table","len":4,"c":true},{"a":37767,"n":"act23_filing_cabinet","k":"routine","len":3,"c":true},{"a":37770,"n":"act23_phases","k":"table","len":20,"c":true},{"a":37790,"n":"rnd_open_stubs","k":"routine","len":28,"c":true},{"a":37818,"n":"rnd_open_stubs_8","k":"routine","len":25,"c":true},{"a":37840,"n":"b_93D0","k":"branch","len":1,"c":false},{"a":37843,"n":"rnd_close_stubs","k":"routine","len":53,"c":true},{"a":37893,"n":"b_9405","k":"branch","len":1,"c":false},{"a":37896,"n":"close_stubs","k":"routine","len":53,"c":true},{"a":37946,"n":"b_943A","k":"branch","len":1,"c":false},{"a":37949,"n":"open_stubs","k":"routine","len":50,"c":true},{"a":37999,"n":"obj_open","k":"routine","len":9,"c":true},{"a":38008,"n":"obj_select","k":"routine","len":8,"c":true},{"a":38016,"n":"skip2","k":"routine","len":5,"c":true},{"a":38021,"n":"obj_close","k":"routine","len":12,"c":true},{"a":38033,"n":"obj_rnd_open","k":"routine","len":29,"c":true},{"a":38056,"n":"b_94A8","k":"branch","len":1,"c":false},{"a":38062,"n":"obj_rnd_close","k":"routine","len":29,"c":true},{"a":38085,"n":"b_94C5","k":"branch","len":1,"c":false},{"a":38091,"n":"obj_current","k":"variable","len":1,"c":true},{"a":38092,"n":"object_op","k":"routine","len":6,"c":true},{"a":38098,"n":"object_op_steps","k":"table","len":40,"c":true},{"a":38138,"n":"unused_94FA","k":"table","len":3,"c":true},{"a":38141,"n":"getup_exits","k":"routine","len":9,"c":true},{"a":38146,"n":"b_9502","k":"branch","len":1,"c":false},{"a":38149,"n":"r_9505","k":"branch","len":1,"c":false},{"a":38150,"n":"getup_step","k":"routine","len":30,"c":true},{"a":38174,"n":"b_951E","k":"branch","len":1,"c":false},{"a":38180,"n":"is_low_object","k":"routine","len":13,"c":true},{"a":38191,"n":"b_952F","k":"branch","len":1,"c":false},{"a":38193,"n":"pose_steps_m1","k":"routine","len":1,"c":true},{"a":38194,"n":"pose_steps","k":"table","len":7,"c":true},{"a":38201,"n":"find_pose_step","k":"routine","len":18,"c":true},{"a":38203,"n":"b_953B","k":"branch","len":1,"c":false},{"a":38215,"n":"b_9547","k":"branch","len":1,"c":false},{"a":38219,"n":"op_crouched","k":"routine","len":11,"c":true},{"a":38230,"n":"op_reach_open","k":"routine","len":32,"c":true},{"a":38247,"n":"b_9567","k":"branch","len":1,"c":false},{"a":38256,"n":"b_9570","k":"branch","len":1,"c":false},{"a":38262,"n":"op_reach_close","k":"routine","len":43,"c":true},{"a":38288,"n":"b_9590","k":"branch","len":1,"c":false},{"a":38291,"n":"b_9593","k":"branch","len":1,"c":false},{"a":38304,"n":"r_95A0","k":"branch","len":1,"c":false},{"a":38305,"n":"op_unreach","k":"routine","len":15,"c":true},{"a":38320,"n":"next_subphase","k":"routine","len":3,"c":true},{"a":38323,"n":"op_goto_spot","k":"routine","len":58,"c":true},{"a":38339,"n":"b_95C3","k":"branch","len":1,"c":false},{"a":38350,"n":"b_95CE","k":"branch","len":1,"c":false},{"a":38353,"n":"b_95D1","k":"branch","len":1,"c":false},{"a":38356,"n":"b_95D4","k":"branch","len":1,"c":false},{"a":38358,"n":"b_95D6","k":"branch","len":1,"c":false},{"a":38370,"n":"b_95E2","k":"branch","len":1,"c":false},{"a":38381,"n":"walk_sub_take_requests","k":"routine","len":40,"c":true},{"a":38399,"n":"b_95FF","k":"branch","len":1,"c":false},{"a":38412,"n":"b_960C","k":"branch","len":1,"c":false},{"a":38418,"n":"b_9612","k":"branch","len":1,"c":false},{"a":38421,"n":"op_start_close","k":"routine","len":17,"c":true},{"a":38428,"n":"b_961C","k":"branch","len":1,"c":false},{"a":38434,"n":"b_9622","k":"branch","len":1,"c":false},{"a":38438,"n":"op_start_open","k":"routine","len":26,"c":true},{"a":38450,"n":"b_9632","k":"branch","len":1,"c":false},{"a":38464,"n":"op_arm_toggle","k":"routine","len":30,"c":true},{"a":38489,"n":"b_9659","k":"branch","len":1,"c":false},{"a":38493,"n":"r_965D","k":"branch","len":1,"c":false},{"a":38494,"n":"op_wait_step","k":"routine","len":29,"c":true},{"a":38499,"n":"j_9663","k":"branch","len":1,"c":false},{"a":38517,"n":"b_9675","k":"branch","len":1,"c":false},{"a":38523,"n":"op_divider","k":"routine","len":9,"c":true},{"a":38532,"n":"obj_spot","k":"table","len":14,"c":true},{"a":38546,"n":"open_here_stubs","k":"routine","len":23,"c":true},{"a":38564,"n":"b_96A4","k":"branch","len":1,"c":false},{"a":38569,"n":"close_here_stubs","k":"routine","len":20,"c":true},{"a":38583,"n":"b_96B7","k":"branch","len":1,"c":false},{"a":38588,"n":"r_96BC","k":"branch","len":1,"c":false},{"a":38589,"n":"op_wait_plain","k":"routine","len":8,"c":true},{"a":38597,"n":"odds_masks","k":"table","len":8,"c":true},{"a":38605,"n":"obj_state","k":"table","len":7,"c":true},{"a":38612,"n":"fire_state","k":"table","len":7,"c":true},{"a":38619,"n":"pet_arm_state","k":"variable","len":1,"c":true},{"a":38620,"n":"pet_hand_state","k":"variable","len":1,"c":true},{"a":38621,"n":"obj_timer","k":"table","len":16,"c":true},{"a":38637,"n":"draw_object","k":"routine","len":76,"c":true},{"a":38712,"n":"r_9738","k":"branch","len":1,"c":false},{"a":38713,"n":"fire_flicker","k":"routine","len":30,"c":true},{"a":38735,"n":"b_974F","k":"branch","len":1,"c":false},{"a":38743,"n":"fire_out","k":"routine","len":11,"c":true},{"a":38753,"n":"r_9761","k":"branch","len":1,"c":false},{"a":38754,"n":"petting_anim","k":"routine","len":138,"c":true},{"a":38812,"n":"b_979C","k":"branch","len":1,"c":false},{"a":38843,"n":"b_97BB","k":"branch","len":1,"c":false},{"a":38869,"n":"b_97D5","k":"branch","len":1,"c":false},{"a":38892,"n":"unused_97EC","k":"table","len":4,"c":true},{"a":38896,"n":"obj_scr_lo","k":"table","len":16,"c":true},{"a":38912,"n":"obj_scr_hi","k":"table","len":16,"c":true},{"a":38928,"n":"obj_col_lo","k":"table","len":16,"c":true},{"a":38944,"n":"obj_col_hi","k":"table","len":16,"c":true},{"a":38960,"n":"obj_frames_lo","k":"table","len":16,"c":true},{"a":38976,"n":"obj_frames_hi","k":"table","len":16,"c":true},{"a":38992,"n":"obj_width","k":"table","len":16,"c":true},{"a":39008,"n":"unused_9860","k":"table","len":3,"c":true},{"a":39011,"n":"obj_rows_m1","k":"table","len":16,"c":true},{"a":39027,"n":"obj_bmp_lo","k":"table","len":16,"c":true},{"a":39043,"n":"obj_bmp_hi","k":"table","len":16,"c":true},{"a":39059,"n":"fr_front_door_0","k":"table","len":6,"c":true},{"a":39065,"n":"fr_front_door_1","k":"table","len":6,"c":true},{"a":39071,"n":"fr_front_door_2","k":"table","len":6,"c":true},{"a":39077,"n":"fr_fridge_0","k":"table","len":6,"c":true},{"a":39083,"n":"fr_fridge_1","k":"table","len":6,"c":true},{"a":39089,"n":"fr_fridge_2","k":"table","len":6,"c":true},{"a":39095,"n":"fr_freezer_0","k":"table","len":6,"c":true},{"a":39101,"n":"fr_freezer_1","k":"table","len":6,"c":true},{"a":39107,"n":"fr_freezer_2","k":"table","len":6,"c":true},{"a":39113,"n":"fr_bath_door_0","k":"table","len":6,"c":true},{"a":39119,"n":"fr_bath_door_1","k":"table","len":6,"c":true},{"a":39125,"n":"fr_bath_door_2","k":"table","len":6,"c":true},{"a":39131,"n":"fr_white_door_0","k":"table","len":6,"c":true},{"a":39137,"n":"fr_white_door_1","k":"table","len":6,"c":true},{"a":39143,"n":"fr_white_door_2","k":"table","len":6,"c":true},{"a":39149,"n":"fr_mirror_cabinet_0","k":"table","len":6,"c":true},{"a":39155,"n":"fr_mirror_cabinet_1","k":"table","len":6,"c":true},{"a":39161,"n":"fr_mirror_cabinet_2","k":"table","len":6,"c":true},{"a":39167,"n":"fr_phone_table_0","k":"table","len":6,"c":true},{"a":39173,"n":"fr_phone_table_1","k":"table","len":6,"c":true},{"a":39179,"n":"fr_phone_table_2","k":"table","len":6,"c":true},{"a":39185,"n":"fr_nightstand_0","k":"table","len":6,"c":true},{"a":39191,"n":"fr_nightstand_1","k":"table","len":6,"c":true},{"a":39197,"n":"fr_nightstand_2","k":"table","len":6,"c":true},{"a":39203,"n":"fr_dresser_0","k":"table","len":6,"c":true},{"a":39209,"n":"fr_dresser_1","k":"table","len":6,"c":true},{"a":39215,"n":"fr_dresser_2","k":"table","len":6,"c":true},{"a":39221,"n":"fr_filing_cabinet_0","k":"table","len":6,"c":true},{"a":39227,"n":"fr_filing_cabinet_1","k":"table","len":6,"c":true},{"a":39233,"n":"fr_filing_cabinet_2","k":"table","len":6,"c":true},{"a":39239,"n":"fr_kitchen_cabinet_0","k":"table","len":6,"c":true},{"a":39245,"n":"fr_kitchen_cabinet_1","k":"table","len":6,"c":true},{"a":39251,"n":"fr_kitchen_cabinet_2","k":"table","len":6,"c":true},{"a":39257,"n":"fr_bookcase_cupboard_0","k":"table","len":6,"c":true},{"a":39263,"n":"fr_bookcase_cupboard_1","k":"table","len":6,"c":true},{"a":39269,"n":"fr_bookcase_cupboard_2","k":"table","len":6,"c":true},{"a":39275,"n":"frames_front_door","k":"table","len":8,"c":true},{"a":39283,"n":"frames_fridge","k":"table","len":8,"c":true},{"a":39291,"n":"frames_freezer","k":"table","len":8,"c":true},{"a":39299,"n":"frames_bath_door","k":"table","len":8,"c":true},{"a":39307,"n":"frames_white_door","k":"table","len":8,"c":true},{"a":39315,"n":"frames_mirror_cabinet","k":"table","len":8,"c":true},{"a":39323,"n":"frames_phone_table","k":"table","len":8,"c":true},{"a":39331,"n":"frames_nightstand","k":"table","len":8,"c":true},{"a":39339,"n":"frames_dresser","k":"table","len":8,"c":true},{"a":39347,"n":"frames_filing_cabinet","k":"table","len":8,"c":true},{"a":39355,"n":"frames_kitchen_cabinet","k":"table","len":8,"c":true},{"a":39363,"n":"frames_bookcase_cupboard","k":"table","len":8,"c":true},{"a":39371,"n":"draw_rows","k":"routine","len":7,"c":true},{"a":39378,"n":"copy_frame_record","k":"routine","len":1,"c":true},{"a":39379,"n":"frame_rec_lo","k":"routine","len":1,"c":true},{"a":39380,"n":"frame_rec_hi","k":"routine","len":8,"c":true},{"a":39388,"n":"fr_fire_0","k":"table","len":6,"c":true},{"a":39394,"n":"fr_fire_1","k":"table","len":6,"c":true},{"a":39400,"n":"fr_fire_2","k":"table","len":6,"c":true},{"a":39406,"n":"fr_fire_3","k":"table","len":6,"c":true},{"a":39412,"n":"frames_fire","k":"table","len":10,"c":true},{"a":39422,"n":"fr_pet_arm_1","k":"table","len":6,"c":true},{"a":39428,"n":"fr_pet_arm_2","k":"table","len":6,"c":true},{"a":39434,"n":"fr_pet_arm_3","k":"table","len":6,"c":true},{"a":39440,"n":"frames_pet_arm","k":"table","len":8,"c":true},{"a":39448,"n":"fr_pet_hand_0","k":"table","len":6,"c":true},{"a":39454,"n":"fr_pet_hand_1","k":"table","len":6,"c":true},{"a":39460,"n":"fr_fire_4","k":"table","len":6,"c":true},{"a":39466,"n":"fr_pet_arm_0","k":"table","len":6,"c":true},{"a":39472,"n":"frames_pet_hand","k":"table","len":4,"c":true},{"a":39476,"n":"gfx_bm_front_door","k":"table","len":360,"c":true},{"a":39836,"n":"gfx_bm_fridge","k":"table","len":216,"c":true},{"a":40052,"n":"gfx_bm_freezer","k":"table","len":288,"c":true},{"a":40340,"n":"gfx_bm_bath_door","k":"table","len":360,"c":true},{"a":40700,"n":"gfx_bm_white_door","k":"table","len":260,"c":true},{"a":41060,"n":"gfx_bm_mirror_cabinet","k":"table","len":144,"c":true},{"a":41204,"n":"gfx_bm_phone_table","k":"table","len":96,"c":true},{"a":41300,"n":"gfx_bm_kitchen_cabinet","k":"table","len":144,"c":true},{"a":41444,"n":"gfx_bm_nightstand","k":"table","len":72,"c":true},{"a":41516,"n":"gfx_bm_dresser","k":"table","len":120,"c":true},{"a":41636,"n":"gfx_bm_bookcase_cupboard","k":"table","len":144,"c":true},{"a":41780,"n":"gfx_bm_filing_cabinet","k":"table","len":144,"c":true},{"a":41924,"n":"gfx_bm_fire","k":"table","len":128,"c":true},{"a":42052,"n":"gfx_bm_pet_arm","k":"table","len":144,"c":true},{"a":42196,"n":"gfx_bm_pet_hand","k":"table","len":32,"c":true},{"a":42228,"n":"gfx_bm_fire_out","k":"table","len":32,"c":true},{"a":42260,"n":"gfx_bm_pet_arm_in","k":"table","len":48,"c":true},{"a":42308,"n":"gfx_scr_front_door","k":"table","len":45,"c":true},{"a":42353,"n":"gfx_scr_fridge","k":"table","len":27,"c":true},{"a":42380,"n":"gfx_scr_freezer","k":"table","len":36,"c":true},{"a":42416,"n":"gfx_scr_bath_door","k":"table","len":45,"c":true},{"a":42461,"n":"gfx_scr_white_door","k":"table","len":45,"c":true},{"a":42506,"n":"gfx_scr_mirror_cabinet","k":"table","len":18,"c":true},{"a":42524,"n":"gfx_scr_phone_table","k":"table","len":12,"c":true},{"a":42536,"n":"gfx_scr_kitchen_cabinet","k":"table","len":18,"c":true},{"a":42554,"n":"gfx_scr_nightstand","k":"table","len":9,"c":true},{"a":42563,"n":"gfx_scr_dresser","k":"table","len":15,"c":true},{"a":42578,"n":"gfx_scr_bookcase_cupboard","k":"table","len":18,"c":true},{"a":42596,"n":"gfx_scr_filing_cabinet","k":"table","len":18,"c":true},{"a":42614,"n":"gfx_scr_fire","k":"table","len":16,"c":true},{"a":42630,"n":"gfx_scr_pet_arm","k":"table","len":18,"c":true},{"a":42648,"n":"gfx_scr_pet_hand","k":"table","len":4,"c":true},{"a":42652,"n":"gfx_scr_fire_out","k":"table","len":4,"c":true},{"a":42656,"n":"gfx_scr_pet_arm_in","k":"table","len":6,"c":true},{"a":42662,"n":"gfx_col_front_door","k":"table","len":45,"c":true},{"a":42707,"n":"gfx_col_fridge","k":"table","len":27,"c":true},{"a":42734,"n":"gfx_col_freezer","k":"table","len":36,"c":true},{"a":42770,"n":"gfx_col_bath_door","k":"table","len":45,"c":true},{"a":42815,"n":"gfx_col_white_door","k":"table","len":45,"c":true},{"a":42860,"n":"gfx_col_mirror_cabinet","k":"table","len":18,"c":true},{"a":42878,"n":"gfx_col_phone_table","k":"table","len":12,"c":true},{"a":42890,"n":"gfx_col_gap_A78A","k":"table","len":3,"c":true},{"a":42893,"n":"gfx_col_kitchen_cabinet","k":"table","len":15,"c":true},{"a":42908,"n":"gfx_col_nightstand","k":"table","len":9,"c":true},{"a":42917,"n":"gfx_col_dresser","k":"table","len":15,"c":true},{"a":42932,"n":"gfx_col_bookcase_cupboard","k":"table","len":18,"c":true},{"a":42950,"n":"gfx_col_filing_cabinet","k":"table","len":18,"c":true},{"a":42968,"n":"gfx_col_fire","k":"table","len":16,"c":true},{"a":42984,"n":"gfx_col_pet_arm","k":"table","len":18,"c":true},{"a":43002,"n":"gfx_col_pet_hand","k":"table","len":4,"c":true},{"a":43006,"n":"gfx_col_fire_out","k":"variable","len":2,"c":true},{"a":43008,"n":"unused_zero_A800","k":"table","len":11,"c":true},{"a":43019,"n":"walk_place_1C","k":"routine","len":5,"c":true},{"a":43024,"n":"walk_place_07","k":"routine","len":5,"c":true},{"a":43029,"n":"walk_place_0B","k":"routine","len":5,"c":true},{"a":43034,"n":"walk_place_0C","k":"routine","len":5,"c":true},{"a":43039,"n":"walk_place_15","k":"routine","len":5,"c":true},{"a":43044,"n":"walk_place_13","k":"routine","len":5,"c":true},{"a":43049,"n":"walk_place_14","k":"routine","len":5,"c":true},{"a":43054,"n":"walk_place_17","k":"routine","len":5,"c":true},{"a":43059,"n":"walk_place_22","k":"routine","len":5,"c":true},{"a":43064,"n":"walk_place_23","k":"routine","len":5,"c":true},{"a":43069,"n":"walk_place_24","k":"routine","len":5,"c":true},{"a":43074,"n":"walk_place_25","k":"routine","len":5,"c":true},{"a":43079,"n":"walk_place_2E","k":"routine","len":5,"c":true},{"a":43084,"n":"unused_rts_A84C","k":"routine","len":1,"c":true},{"a":43085,"n":"walk_place_x","k":"routine","len":6,"c":true},{"a":43091,"n":"set_walk_place_x","k":"routine","len":8,"c":true},{"a":43099,"n":"unused_random_pause_set","k":"routine","len":11,"c":true},{"a":43110,"n":"unused_random_pause_wait","k":"routine","len":16,"c":true},{"a":43125,"n":"r_A875","k":"branch","len":1,"c":false},{"a":43126,"n":"act_pose_5B_wait","k":"routine","len":15,"c":true},{"a":43141,"n":"act_walk_to_chair","k":"routine","len":10,"c":true},{"a":43151,"n":"act_chair_fidget_init","k":"routine","len":24,"c":true},{"a":43169,"n":"j_A8A1","k":"branch","len":1,"c":false},{"a":43172,"n":"b_A8A4","k":"branch","len":1,"c":false},{"a":43175,"n":"act_chair_fidget","k":"routine","len":114,"c":true},{"a":43185,"n":"b_A8B1","k":"branch","len":1,"c":false},{"a":43204,"n":"j_A8C4","k":"branch","len":1,"c":false},{"a":43215,"n":"b_A8CF","k":"branch","len":1,"c":false},{"a":43229,"n":"b_A8DD","k":"branch","len":1,"c":false},{"a":43245,"n":"j_A8ED","k":"branch","len":1,"c":false},{"a":43251,"n":"b_A8F3","k":"branch","len":1,"c":false},{"a":43283,"n":"b_A913","k":"branch","len":1,"c":false},{"a":43288,"n":"r_A918","k":"branch","len":1,"c":false},{"a":43289,"n":"unused_drink_step","k":"routine","len":6,"c":true},{"a":43295,"n":"water_drink_glass","k":"routine","len":15,"c":true},{"a":43309,"n":"r_A92D","k":"branch","len":1,"c":false},{"a":43310,"n":"act_lamp_white","k":"routine","len":4,"c":true},{"a":43314,"n":"act_lamp_yellow","k":"routine","len":8,"c":true},{"a":43316,"n":"b_A934","k":"branch","len":1,"c":false},{"a":43322,"n":"lamp_colour_apply","k":"routine","len":10,"c":true},{"a":43332,"n":"lamp_colour_shown","k":"variable","len":1,"c":true},{"a":43333,"n":"act_tv_on","k":"routine","len":11,"c":true},{"a":43344,"n":"act_tv_off","k":"routine","len":18,"c":true},{"a":43362,"n":"act54_walk_place24","k":"routine","len":3,"c":true},{"a":43365,"n":"act54_phases","k":"table","len":6,"c":true},{"a":43371,"n":"act55_carry_to_place24","k":"routine","len":3,"c":true},{"a":43374,"n":"act55_phases","k":"table","len":6,"c":true},{"a":43380,"n":"act56_back_idle","k":"routine","len":3,"c":true},{"a":43383,"n":"act56_phases","k":"table","len":6,"c":true},{"a":43389,"n":"act57_take_item2","k":"routine","len":3,"c":true},{"a":43392,"n":"act57_phases","k":"table","len":4,"c":true},{"a":43396,"n":"act58_take_item4","k":"routine","len":3,"c":true},{"a":43399,"n":"act58_phases","k":"table","len":4,"c":true},{"a":43403,"n":"act59_drop_item","k":"routine","len":3,"c":true},{"a":43406,"n":"act59_phases","k":"table","len":4,"c":true},{"a":43410,"n":"act60_walk_place25","k":"routine","len":3,"c":true},{"a":43413,"n":"act60_phases","k":"table","len":6,"c":true},{"a":43419,"n":"act61_carry_to_place25","k":"routine","len":3,"c":true},{"a":43422,"n":"act61_phases","k":"table","len":6,"c":true},{"a":43428,"n":"act62_open_cupboard","k":"routine","len":3,"c":true},{"a":43431,"n":"act62_phases","k":"table","len":8,"c":true},{"a":43439,"n":"act63_close_cupboard","k":"routine","len":3,"c":true},{"a":43442,"n":"act63_phases","k":"table","len":6,"c":true},{"a":43448,"n":"act64_walk_fridge","k":"routine","len":3,"c":true},{"a":43451,"n":"act64_phases","k":"table","len":6,"c":true},{"a":43457,"n":"act65_carry_to_fridge","k":"routine","len":3,"c":true},{"a":43460,"n":"act65_phases","k":"table","len":6,"c":true},{"a":43466,"n":"act66_open_fridge_top","k":"routine","len":3,"c":true},{"a":43469,"n":"act66_phases","k":"table","len":8,"c":true},{"a":43477,"n":"act67_close_fridge_top","k":"routine","len":3,"c":true},{"a":43480,"n":"act67_phases","k":"table","len":6,"c":true},{"a":43486,"n":"act68_open_fridge_low","k":"routine","len":3,"c":true},{"a":43489,"n":"act68_phases","k":"table","len":8,"c":true},{"a":43497,"n":"act69_close_fridge_low","k":"routine","len":3,"c":true},{"a":43500,"n":"act69_phases","k":"table","len":6,"c":true},{"a":43506,"n":"act70_walk_place22","k":"routine","len":3,"c":true},{"a":43509,"n":"act70_phases","k":"table","len":6,"c":true},{"a":43515,"n":"act71_carry_to_place22","k":"routine","len":3,"c":true},{"a":43518,"n":"act71_phases","k":"table","len":6,"c":true},{"a":43524,"n":"act72_pose_seq","k":"routine","len":3,"c":true},{"a":43527,"n":"act72_phases","k":"table","len":4,"c":true},{"a":43531,"n":"act73_turn_back","k":"routine","len":3,"c":true},{"a":43534,"n":"act73_phases","k":"table","len":4,"c":true},{"a":43538,"n":"wait_random_count","k":"variable","len":1,"c":true},{"a":43539,"n":"act_wait_random","k":"routine","len":14,"c":true},{"a":43552,"n":"r_AA20","k":"branch","len":1,"c":false},{"a":43553,"n":"act_turn_back","k":"routine","len":17,"c":true},{"a":43569,"n":"r_AA31","k":"branch","len":1,"c":false},{"a":43570,"n":"act_take_item2","k":"routine","len":4,"c":true},{"a":43574,"n":"act_take_item4","k":"routine","len":8,"c":true},{"a":43576,"n":"b_AA38","k":"branch","len":1,"c":false},{"a":43582,"n":"act_drop_item","k":"routine","len":11,"c":true},{"a":43593,"n":"act74_start_script","k":"routine","len":4,"c":true},{"a":43597,"n":"start_script","k":"routine","len":9,"c":true},{"a":43606,"n":"script_act74","k":"table","len":6,"c":true},{"a":43612,"n":"act115_back_idle","k":"routine","len":3,"c":true},{"a":43615,"n":"act115_phases","k":"table","len":6,"c":true},{"a":43621,"n":"act75_start_script","k":"routine","len":6,"c":true},{"a":43627,"n":"script_act75","k":"table","len":22,"c":true},{"a":43649,"n":"act76_start_script","k":"routine","len":7,"c":true},{"a":43656,"n":"script_act76","k":"table","len":14,"c":true},{"a":43670,"n":"act01_start_script","k":"routine","len":7,"c":true},{"a":43677,"n":"act28_start_script","k":"routine","len":7,"c":true},{"a":43684,"n":"script_act28","k":"table","len":7,"c":true},{"a":43691,"n":"act21_start_script","k":"routine","len":7,"c":true},{"a":43698,"n":"script_act01","k":"table","len":22,"c":true},{"a":43720,"n":"script_act01_choice","k":"table","len":10,"c":true},{"a":43730,"n":"act116_choose","k":"routine","len":15,"c":true},{"a":43745,"n":"choose_table","k":"table","len":4,"c":true},{"a":43749,"n":"act09_start_script","k":"routine","len":7,"c":true},{"a":43756,"n":"script_act09","k":"table","len":5,"c":true},{"a":43761,"n":"script_act21","k":"table","len":4,"c":true},{"a":43765,"n":"unused_jmp_act09","k":"routine","len":3,"c":true},{"a":43768,"n":"act118_stereo_rummage","k":"routine","len":3,"c":true},{"a":43771,"n":"act118_phases","k":"table","len":12,"c":true},{"a":43783,"n":"act_rummage_once","k":"routine","len":8,"c":true},{"a":43791,"n":"act119_random_key","k":"routine","len":11,"c":true},{"a":43802,"n":"act78_pick_tune","k":"routine","len":52,"c":true},{"a":43854,"n":"tune_12_choices","k":"variable","len":1,"c":true},{"a":43855,"n":"tune_12_choices_hi","k":"table","len":7,"c":true},{"a":43862,"n":"activity_reset_phase","k":"routine","len":7,"c":true},{"a":43869,"n":"activity_skip_phases","k":"routine","len":6,"c":true},{"a":43875,"n":"set_person_destination","k":"routine","len":3,"c":true},{"a":43878,"n":"start_walk_if_away","k":"routine","len":13,"c":true},{"a":43890,"n":"r_AB72","k":"branch","len":1,"c":false},{"a":43891,"n":"act80_open_bath_door","k":"routine","len":3,"c":true},{"a":43894,"n":"act80_phases","k":"table","len":10,"c":true},{"a":43904,"n":"act81_step_in","k":"routine","len":3,"c":true},{"a":43907,"n":"act81_phases","k":"table","len":12,"c":true},{"a":43919,"n":"act82_close_bath_door","k":"routine","len":3,"c":true},{"a":43922,"n":"act82_phases","k":"table","len":6,"c":true},{"a":43928,"n":"act83_open_bath_door","k":"routine","len":3,"c":true},{"a":43931,"n":"act83_phases","k":"table","len":6,"c":true},{"a":43937,"n":"act84_shower","k":"routine","len":3,"c":true},{"a":43940,"n":"act84_phases","k":"table","len":8,"c":true},{"a":43948,"n":"act85_colours_pair","k":"routine","len":3,"c":true},{"a":43951,"n":"act85_phases","k":"table","len":4,"c":true},{"a":43955,"n":"act86_step_out","k":"routine","len":3,"c":true},{"a":43958,"n":"act86_phases","k":"table","len":6,"c":true},{"a":43964,"n":"act87_maybe_close_bath","k":"routine","len":3,"c":true},{"a":43967,"n":"act87_phases","k":"table","len":6,"c":true},{"a":43973,"n":"act88_open_upstairs_closet","k":"routine","len":3,"c":true},{"a":43976,"n":"act88_phases","k":"table","len":10,"c":true},{"a":43986,"n":"act89_close_upstairs_closet","k":"routine","len":3,"c":true},{"a":43989,"n":"act89_phases","k":"table","len":6,"c":true},{"a":43995,"n":"act90_open_upstairs_closet","k":"routine","len":3,"c":true},{"a":43998,"n":"act90_phases","k":"table","len":6,"c":true},{"a":44004,"n":"act91_maybe_close_upstairs_closet","k":"routine","len":3,"c":true},{"a":44007,"n":"act91_phases","k":"table","len":8,"c":true},{"a":44015,"n":"act92_open_closet","k":"routine","len":3,"c":true},{"a":44018,"n":"act92_phases","k":"table","len":10,"c":true},{"a":44028,"n":"act93_close_closet","k":"routine","len":3,"c":true},{"a":44031,"n":"act93_phases","k":"table","len":6,"c":true},{"a":44037,"n":"act94_open_closet_here","k":"routine","len":3,"c":true},{"a":44040,"n":"act94_phases","k":"table","len":6,"c":true},{"a":44046,"n":"act95_maybe_close_closet","k":"routine","len":3,"c":true},{"a":44049,"n":"act95_phases","k":"table","len":6,"c":true},{"a":44055,"n":"act96_open_front_door","k":"routine","len":3,"c":true},{"a":44058,"n":"act96_phases","k":"table","len":10,"c":true},{"a":44068,"n":"act97_door_seq_0","k":"routine","len":3,"c":true},{"a":44071,"n":"act97_phases","k":"table","len":6,"c":true},{"a":44077,"n":"act98_close_front_door","k":"routine","len":3,"c":true},{"a":44080,"n":"act98_phases","k":"table","len":6,"c":true},{"a":44086,"n":"act99_open_front_door_here","k":"routine","len":3,"c":true},{"a":44089,"n":"act99_phases","k":"table","len":6,"c":true},{"a":44095,"n":"act100_door_seq_9","k":"routine","len":3,"c":true},{"a":44098,"n":"act100_phases","k":"table","len":6,"c":true},{"a":44104,"n":"act101_maybe_close_front","k":"routine","len":3,"c":true},{"a":44107,"n":"act101_phases","k":"table","len":6,"c":true},{"a":44113,"n":"act102_shower","k":"routine","len":3,"c":true},{"a":44116,"n":"act102_phases","k":"table","len":8,"c":true},{"a":44124,"n":"act103_colours_single","k":"routine","len":3,"c":true},{"a":44127,"n":"act103_phases","k":"table","len":4,"c":true},{"a":44131,"n":"act104_wait_wrap","k":"routine","len":3,"c":true},{"a":44134,"n":"act104_phases","k":"table","len":6,"c":true},{"a":44140,"n":"wait_wrap_count","k":"variable","len":1,"c":true},{"a":44141,"n":"act_wait_wrap","k":"routine","len":9,"c":true},{"a":44149,"n":"r_AC75","k":"branch","len":1,"c":false},{"a":44150,"n":"act105_dresser","k":"routine","len":3,"c":true},{"a":44153,"n":"act105_phases","k":"table","len":20,"c":true},{"a":44173,"n":"act106_nightstand","k":"routine","len":3,"c":true},{"a":44176,"n":"act106_phases","k":"table","len":20,"c":true},{"a":44196,"n":"act111_open_mirror","k":"routine","len":3,"c":true},{"a":44199,"n":"act111_phases","k":"table","len":10,"c":true},{"a":44209,"n":"act112_close_mirror","k":"routine","len":3,"c":true},{"a":44212,"n":"act112_phases","k":"table","len":10,"c":true},{"a":44222,"n":"script_closet","k":"table","len":4,"c":true},{"a":44226,"n":"script_closet_colour","k":"table","len":6,"c":true},{"a":44232,"n":"act108_dress_pair_bath","k":"routine","len":6,"c":true},{"a":44238,"n":"act107_dress_pair_closet","k":"routine","len":3,"c":true},{"a":44241,"n":"run_script_closet","k":"routine","len":7,"c":true},{"a":44248,"n":"act110_dress_single_bath","k":"routine","len":6,"c":true},{"a":44254,"n":"act109_dress_single_closet","k":"routine","len":6,"c":true},{"a":44260,"n":"set_colour_step_pair","k":"routine","len":4,"c":true},{"a":44264,"n":"set_colour_step_single","k":"routine","len":9,"c":true},{"a":44266,"n":"b_ACEA","k":"branch","len":1,"c":false},{"a":44273,"n":"pose_change_busy","k":"variable","len":1,"c":true},{"a":44274,"n":"gaze_mode","k":"variable","len":1,"c":true},{"a":44275,"n":"upper_body_turn","k":"routine","len":226,"c":true},{"a":44293,"n":"r_AD05","k":"branch","len":1,"c":false},{"a":44294,"n":"b_AD06","k":"branch","len":1,"c":false},{"a":44302,"n":"b_AD0E","k":"branch","len":1,"c":false},{"a":44305,"n":"b_AD11","k":"branch","len":1,"c":false},{"a":44328,"n":"b_AD28","k":"branch","len":1,"c":false},{"a":44377,"n":"b_AD59","k":"branch","len":1,"c":false},{"a":44391,"n":"b_AD67","k":"branch","len":1,"c":false},{"a":44406,"n":"b_AD76","k":"branch","len":1,"c":false},{"a":44426,"n":"b_AD8A","k":"branch","len":1,"c":false},{"a":44438,"n":"j_AD96","k":"branch","len":1,"c":false},{"a":44462,"n":"b_ADAE","k":"branch","len":1,"c":false},{"a":44482,"n":"b_ADC2","k":"branch","len":1,"c":false},{"a":44501,"n":"upper_body_new_target","k":"routine","len":141,"c":true},{"a":44507,"n":"b_ADDB","k":"branch","len":1,"c":false},{"a":44523,"n":"b_ADEB","k":"branch","len":1,"c":false},{"a":44540,"n":"b_ADFC","k":"branch","len":1,"c":false},{"a":44553,"n":"b_AE09","k":"branch","len":1,"c":false},{"a":44594,"n":"b_AE32","k":"branch","len":1,"c":false},{"a":44626,"n":"b_AE52","k":"branch","len":1,"c":false},{"a":44641,"n":"r_AE61","k":"branch","len":1,"c":false},{"a":44642,"n":"body_turn_rows","k":"table","len":3,"c":true},{"a":44645,"n":"body_turn_dirs","k":"table","len":40,"c":true},{"a":44685,"n":"pose_view_class","k":"table","len":64,"c":true},{"a":44749,"n":"pose_view_class_40","k":"table","len":29,"c":true},{"a":44778,"n":"act07_feed_fire","k":"routine","len":3,"c":true},{"a":44781,"n":"act07_phases","k":"table","len":62,"c":true},{"a":44843,"n":"pose_seq_step","k":"variable","len":1,"c":true},{"a":44844,"n":"act_item_raise","k":"routine","len":8,"c":true},{"a":44852,"n":"act_item_lower","k":"routine","len":11,"c":true},{"a":44863,"n":"pose_seq_exits","k":"routine","len":9,"c":true},{"a":44864,"n":"b_AF40","k":"branch","len":1,"c":false},{"a":44872,"n":"unused_pose_seq_alt","k":"routine","len":16,"c":true},{"a":44888,"n":"act_pose_seq","k":"routine","len":27,"c":true},{"a":44901,"n":"j_AF65","k":"branch","len":1,"c":false},{"a":44915,"n":"pose_seq_table","k":"table","len":3,"c":true},{"a":44918,"n":"pose_seq_table_alt","k":"table","len":3,"c":true},{"a":44921,"n":"act_walk_fireplace","k":"routine","len":5,"c":true},{"a":44926,"n":"act_walk_front_door","k":"routine","len":13,"c":true},{"a":44939,"n":"act_add_log","k":"routine","len":14,"c":true},{"a":44953,"n":"act_walk_door_right","k":"routine","len":27,"c":true},{"a":44980,"n":"act_take_item9","k":"routine","len":4,"c":true},{"a":44984,"n":"set_carried_item","k":"routine","len":52,"c":true},{"a":45036,"n":"act_sound_slot12","k":"routine","len":8,"c":true},{"a":45044,"n":"act_sound_slot13","k":"routine","len":8,"c":true},{"a":45052,"n":"fill_AFFC","k":"table","len":4,"c":true},{"a":45056,"n":"sound_jumps","k":"routine","len":3,"c":true},{"a":45059,"n":"sound_frame_jmp","k":"routine","len":3,"c":true},{"a":45062,"n":"sound_start_b_jmp","k":"routine","len":3,"c":true},{"a":45065,"n":"sound_start_a_jmp","k":"routine","len":3,"c":true},{"a":45068,"n":"sound_start_b_jmp2","k":"routine","len":3,"c":true},{"a":45071,"n":"sound_start_a_jmp2","k":"routine","len":3,"c":true},{"a":45074,"n":"snd_piece_ended","k":"variable","len":1,"c":true},{"a":45075,"n":"snd_gate_ch3","k":"variable","len":1,"c":true},{"a":45076,"n":"snd_gate_ch5","k":"variable","len":1,"c":true},{"a":45077,"n":"snd_toggle_ch3","k":"variable","len":1,"c":true},{"a":45078,"n":"snd_toggle_ch45","k":"variable","len":1,"c":true},{"a":45079,"n":"snd_dispatch_count","k":"variable","len":1,"c":true},{"a":45080,"n":"snd_voice_loop","k":"variable","len":1,"c":true},{"a":45081,"n":"snd_note_on","k":"variable","len":1,"c":true},{"a":45082,"n":"snd_note_off","k":"table","len":11,"c":true},{"a":45093,"n":"snd_active","k":"variable","len":1,"c":true},{"a":45094,"n":"snd_last_cmd","k":"table","len":11,"c":true},{"a":45105,"n":"snd_regs","k":"variable","len":1,"c":true},{"a":45106,"n":"snd_regs_freq_hi","k":"variable","len":1,"c":true},{"a":45107,"n":"snd_regs_pulse_lo","k":"variable","len":1,"c":true},{"a":45108,"n":"snd_regs_pulse_hi","k":"variable","len":1,"c":true},{"a":45109,"n":"snd_regs_control","k":"table","len":38,"c":true},{"a":45147,"n":"snd_filter_a","k":"variable","len":1,"c":true},{"a":45148,"n":"snd_filter_a_cut_hi","k":"variable","len":1,"c":true},{"a":45149,"n":"snd_filter_a_res","k":"variable","len":1,"c":true},{"a":45150,"n":"snd_filter_a_mode","k":"variable","len":1,"c":true},{"a":45151,"n":"snd_filter_a_once","k":"table","len":3,"c":true},{"a":45154,"n":"snd_filter_b","k":"table","len":7,"c":true},{"a":45161,"n":"snd_loop1_active","k":"variable","len":1,"c":true},{"a":45162,"n":"snd_loop1_count","k":"table","len":11,"c":true},{"a":45173,"n":"snd_loop2_active","k":"variable","len":1,"c":true},{"a":45174,"n":"snd_loop2_count","k":"table","len":11,"c":true},{"a":45185,"n":"snd_return_lo","k":"variable","len":1,"c":true},{"a":45186,"n":"snd_return_hi","k":"table","len":11,"c":true},{"a":45197,"n":"snd_saved_regs","k":"table","len":42,"c":true},{"a":45239,"n":"snd_filter_restore","k":"variable","len":1,"c":true},{"a":45240,"n":"snd_release_seen","k":"table","len":5,"c":true},{"a":45245,"n":"snd_ended_a","k":"table","len":7,"c":true},{"a":45252,"n":"snd_slide_lo","k":"variable","len":1,"c":true},{"a":45253,"n":"snd_slide_hi","k":"table","len":11,"c":true},{"a":45264,"n":"snd_frame_count","k":"variable","len":1,"c":true},{"a":45265,"n":"snd_rare_count","k":"variable","len":2,"c":true},{"a":45267,"n":"snd_random","k":"variable","len":1,"c":true},{"a":45268,"n":"snd_saved_regs2","k":"table","len":42,"c":true},{"a":45310,"n":"snd_return2_lo","k":"variable","len":1,"c":true},{"a":45311,"n":"snd_return2_hi","k":"table","len":11,"c":true},{"a":45322,"n":"snd_track_enable","k":"variable","len":1,"c":true},{"a":45323,"n":"snd_track_state","k":"variable","len":1,"c":true},{"a":45324,"n":"snd_saved_instr","k":"table","len":40,"c":true},{"a":45364,"n":"snd_return3_lo","k":"variable","len":1,"c":true},{"a":45365,"n":"snd_return3_hi","k":"table","len":11,"c":true},{"a":45376,"n":"snd_return4_lo","k":"variable","len":1,"c":true},{"a":45377,"n":"snd_return4_hi","k":"table","len":11,"c":true},{"a":45388,"n":"snd_saved_irq_lo","k":"variable","len":1,"c":true},{"a":45389,"n":"snd_saved_irq_hi","k":"table","len":3,"c":true},{"a":45392,"n":"snd_temp_y","k":"variable","len":1,"c":true},{"a":45393,"n":"snd_temp_x","k":"variable","len":1,"c":true},{"a":45394,"n":"snd_temp_pulse","k":"variable","len":1,"c":true},{"a":45395,"n":"snd_temp_sweep","k":"variable","len":1,"c":true},{"a":45396,"n":"snd_unused_B154","k":"table","len":8,"c":true},{"a":45404,"n":"snd_fsweep_lo","k":"variable","len":1,"c":true},{"a":45405,"n":"snd_fsweep_hi","k":"table","len":11,"c":true},{"a":45416,"n":"snd_psweep_lo","k":"variable","len":1,"c":true},{"a":45417,"n":"snd_psweep_hi","k":"table","len":11,"c":true},{"a":45428,"n":"snd_note_lists","k":"table","len":64,"c":true},{"a":45492,"n":"snd_note_lists_ch4","k":"table","len":32,"c":true},{"a":45524,"n":"snd_frame_mix","k":"variable","len":1,"c":true},{"a":45525,"n":"snd_reg_offsets","k":"table","len":14,"c":true},{"a":45539,"n":"sound_init","k":"routine","len":57,"c":true},{"a":45550,"n":"b_B1EE","k":"branch","len":1,"c":false},{"a":45562,"n":"b_B1FA","k":"branch","len":1,"c":false},{"a":45574,"n":"b_B206","k":"branch","len":1,"c":false},{"a":45596,"n":"snd_read_slide","k":"routine","len":45,"c":true},{"a":45619,"n":"b_B233","k":"branch","len":1,"c":false},{"a":45630,"n":"b_B23E","k":"branch","len":1,"c":false},{"a":45641,"n":"snd_cmd_11","k":"routine","len":6,"c":true},{"a":45647,"n":"snd_cmd_12","k":"routine","len":6,"c":true},{"a":45653,"n":"sound_start_a","k":"routine","len":7,"c":true},{"a":45660,"n":"snd_cmd_13","k":"routine","len":6,"c":true},{"a":45666,"n":"snd_cmd_14","k":"routine","len":6,"c":true},{"a":45672,"n":"sound_start_b","k":"routine","len":142,"c":true},{"a":45677,"n":"b_B26D","k":"branch","len":1,"c":false},{"a":45703,"n":"b_B287","k":"branch","len":1,"c":false},{"a":45786,"n":"b_B2DA","k":"branch","len":1,"c":false},{"a":45814,"n":"snd_cmd_15","k":"routine","len":9,"c":true},{"a":45823,"n":"snd_cmd_16","k":"routine","len":9,"c":true},{"a":45832,"n":"snd_cmd_17","k":"routine","len":9,"c":true},{"a":45841,"n":"snd_set_instrument","k":"routine","len":30,"c":true},{"a":45850,"n":"b_B31A","k":"branch","len":1,"c":false},{"a":45858,"n":"b_B322","k":"branch","len":1,"c":false},{"a":45871,"n":"snd_cmd_1B","k":"routine","len":12,"c":true},{"a":45883,"n":"snd_cmd_1C","k":"routine","len":9,"c":true},{"a":45892,"n":"snd_cmd_1E","k":"routine","len":9,"c":true},{"a":45901,"n":"snd_output","k":"routine","len":36,"c":true},{"a":45918,"n":"j_B35E","k":"branch","len":1,"c":false},{"a":45937,"n":"snd_rare_path","k":"routine","len":5,"c":true},{"a":45942,"n":"snd_cmd_dispatch_jmp","k":"routine","len":1,"c":true},{"a":45943,"n":"snd_cmd_dispatch_target","k":"routine","len":67,"c":true},{"a":45945,"n":"b_B379","k":"branch","len":1,"c":false},{"a":45955,"n":"b_B383","k":"branch","len":1,"c":false},{"a":45963,"n":"b_B38B","k":"branch","len":1,"c":false},{"a":45982,"n":"b_B39E","k":"branch","len":1,"c":false},{"a":45985,"n":"b_B3A1","k":"branch","len":1,"c":false},{"a":46010,"n":"snd_track_call_lo","k":"routine","len":1,"c":true},{"a":46011,"n":"snd_track_call_hi","k":"routine","len":4,"c":true},{"a":46015,"n":"snd_track_handlers","k":"variable","len":1,"c":true},{"a":46016,"n":"snd_track_handlers_hi","k":"table","len":15,"c":true},{"a":46031,"n":"snd_track_clear0","k":"routine","len":9,"c":true},{"a":46039,"n":"r_B3D7","k":"branch","len":1,"c":false},{"a":46040,"n":"snd_track_set0","k":"routine","len":9,"c":true},{"a":46042,"n":"j_B3DA","k":"branch","len":1,"c":false},{"a":46049,"n":"snd_track_set1","k":"routine","len":5,"c":true},{"a":46054,"n":"snd_track_toggle","k":"routine","len":46,"c":true},{"a":46077,"n":"b_B3FD","k":"branch","len":1,"c":false},{"a":46083,"n":"b_B403","k":"branch","len":1,"c":false},{"a":46094,"n":"b_B40E","k":"branch","len":1,"c":false},{"a":46100,"n":"snd_cmd_1F","k":"routine","len":12,"c":true},{"a":46112,"n":"snd_cmd_1D","k":"routine","len":9,"c":true},{"a":46121,"n":"snd_cmd_26","k":"routine","len":107,"c":true},{"a":46127,"n":"j_B42F","k":"branch","len":1,"c":false},{"a":46170,"n":"b_B45A","k":"branch","len":1,"c":false},{"a":46184,"n":"b_B468","k":"branch","len":1,"c":false},{"a":46186,"n":"b_B46A","k":"branch","len":1,"c":false},{"a":46193,"n":"b_B471","k":"branch","len":1,"c":false},{"a":46196,"n":"b_B474","k":"branch","len":1,"c":false},{"a":46228,"n":"snd_cmd_18","k":"routine","len":9,"c":true},{"a":46237,"n":"snd_cmd_19","k":"routine","len":9,"c":true},{"a":46246,"n":"snd_cmd_1A","k":"routine","len":12,"c":true},{"a":46258,"n":"snd_cmd_27","k":"routine","len":64,"c":true},{"a":46264,"n":"b_B4B8","k":"branch","len":1,"c":false},{"a":46272,"n":"b_B4C0","k":"branch","len":1,"c":false},{"a":46278,"n":"b_B4C6","k":"branch","len":1,"c":false},{"a":46312,"n":"j_B4E8","k":"branch","len":1,"c":false},{"a":46321,"n":"r_B4F1","k":"branch","len":1,"c":false},{"a":46322,"n":"snd_start_b_restart","k":"routine","len":6,"c":true},{"a":46328,"n":"snd_start_a_restart","k":"routine","len":3,"c":true},{"a":46331,"n":"sound_frame","k":"routine","len":188,"c":true},{"a":46358,"n":"b_B516","k":"branch","len":1,"c":false},{"a":46370,"n":"b_B522","k":"branch","len":1,"c":false},{"a":46378,"n":"b_B52A","k":"branch","len":1,"c":false},{"a":46401,"n":"j_B541","k":"branch","len":1,"c":false},{"a":46414,"n":"b_B54E","k":"branch","len":1,"c":false},{"a":46420,"n":"j_B554","k":"branch","len":1,"c":false},{"a":46429,"n":"b_B55D","k":"branch","len":1,"c":false},{"a":46442,"n":"b_B56A","k":"branch","len":1,"c":false},{"a":46471,"n":"b_B587","k":"branch","len":1,"c":false},{"a":46480,"n":"j_B590","k":"branch","len":1,"c":false},{"a":46488,"n":"j_B598","k":"branch","len":1,"c":false},{"a":46491,"n":"b_B59B","k":"branch","len":1,"c":false},{"a":46509,"n":"b_B5AD","k":"branch","len":1,"c":false},{"a":46517,"n":"b_B5B5","k":"branch","len":1,"c":false},{"a":46519,"n":"snd_next_command","k":"routine","len":129,"c":true},{"a":46574,"n":"b_B5EE","k":"branch","len":1,"c":false},{"a":46587,"n":"b_B5FB","k":"branch","len":1,"c":false},{"a":46609,"n":"b_B611","k":"branch","len":1,"c":false},{"a":46630,"n":"b_B626","k":"branch","len":1,"c":false},{"a":46637,"n":"b_B62D","k":"branch","len":1,"c":false},{"a":46648,"n":"snd_io_in","k":"routine","len":9,"c":true},{"a":46657,"n":"snd_freq_direct","k":"variable","len":1,"c":true},{"a":46658,"n":"snd_freq_direct_hi","k":"table","len":31,"c":true},{"a":46689,"n":"snd_freq_octave","k":"variable","len":1,"c":true},{"a":46690,"n":"snd_freq_octave_hi","k":"table","len":17,"c":true},{"a":46707,"n":"snd_freq_notes_a","k":"table","len":14,"c":true},{"a":46721,"n":"snd_stream_rest","k":"table","len":10,"c":true},{"a":46731,"n":"snd_tune0_stream","k":"table","len":8,"c":true},{"a":46739,"n":"snd_freq_notes_b","k":"table","len":14,"c":true},{"a":46753,"n":"snd_filter_presets","k":"variable","len":1,"c":true},{"a":46754,"n":"snd_filter_presets_1","k":"variable","len":1,"c":true},{"a":46755,"n":"snd_filter_presets_2","k":"variable","len":1,"c":true},{"a":46756,"n":"snd_filter_presets_3","k":"table","len":61,"c":true},{"a":46817,"n":"snd_filter_presets_16","k":"table","len":16,"c":true},{"a":46833,"n":"snd_data_B6F1","k":"table","len":53,"c":true},{"a":46886,"n":"snd_durations","k":"variable","len":1,"c":true},{"a":46887,"n":"snd_durations_off","k":"table","len":63,"c":true},{"a":46950,"n":"snd_subs_shared","k":"table","len":106,"c":true},{"a":47056,"n":"fill_B7D0","k":"table","len":6,"c":true},{"a":47062,"n":"snd_subs_shared_56","k":"table","len":40,"c":true},{"a":47102,"n":"snd_subs_ch1","k":"table","len":200,"c":true},{"a":47302,"n":"snd_subs_ch1_100","k":"table","len":24,"c":true},{"a":47326,"n":"snd_subs_ch2","k":"table","len":8,"c":true},{"a":47334,"n":"snd_subs_ch2_4","k":"table","len":178,"c":true},{"a":47512,"n":"fill_B998","k":"table","len":6,"c":true},{"a":47518,"n":"snd_subs_ch2_96","k":"table","len":32,"c":true},{"a":47550,"n":"person_colours_pair","k":"routine","len":26,"c":true},{"a":47562,"n":"b_B9CA","k":"branch","len":1,"c":false},{"a":47576,"n":"person_head_colour","k":"routine","len":27,"c":true},{"a":47594,"n":"b_B9EA","k":"branch","len":1,"c":false},{"a":47597,"n":"b_B9ED","k":"branch","len":1,"c":false},{"a":47600,"n":"b_B9F0","k":"branch","len":1,"c":false},{"a":47603,"n":"head_colours","k":"variable","len":2,"c":true},{"a":47605,"n":"person_colours_single","k":"routine","len":25,"c":true},{"a":47617,"n":"b_BA01","k":"branch","len":1,"c":false},{"a":47630,"n":"colour_pairs","k":"variable","len":1,"c":true},{"a":47631,"n":"colour_pairs_multi","k":"table","len":31,"c":true},{"a":47662,"n":"colour_singles","k":"table","len":8,"c":true},{"a":47670,"n":"text_scroll_left","k":"variable","len":1,"c":true},{"a":47671,"n":"text_return_left","k":"variable","len":1,"c":true},{"a":47672,"n":"text_erase_mode","k":"variable","len":1,"c":true},{"a":47673,"n":"text_busy","k":"variable","len":1,"c":true},{"a":47674,"n":"text_band_open","k":"routine","len":22,"c":true},{"a":47696,"n":"queue_char","k":"routine","len":14,"c":true},{"a":47710,"n":"print_queued","k":"routine","len":118,"c":true},{"a":47731,"n":"b_BA73","k":"branch","len":1,"c":false},{"a":47777,"n":"b_BAA1","k":"branch","len":1,"c":false},{"a":47785,"n":"b_BAA9","k":"branch","len":1,"c":false},{"a":47787,"n":"b_BAAB","k":"branch","len":1,"c":false},{"a":47794,"n":"b_BAB2","k":"branch","len":1,"c":false},{"a":47798,"n":"b_BAB6","k":"branch","len":1,"c":false},{"a":47816,"n":"b_BAC8","k":"branch","len":1,"c":false},{"a":47827,"n":"r_BAD3","k":"branch","len":1,"c":false},{"a":47828,"n":"text_band_restore","k":"routine","len":46,"c":true},{"a":47835,"n":"b_BADB","k":"branch","len":1,"c":false},{"a":47857,"n":"b_BAF1","k":"branch","len":1,"c":false},{"a":47874,"n":"unused_hang","k":"routine","len":6,"c":true},{"a":47877,"n":"j_BB05","k":"branch","len":1,"c":false},{"a":47880,"n":"print_char","k":"routine","len":16,"c":true},{"a":47896,"n":"unused_add_c0","k":"routine","len":17,"c":true},{"a":47910,"n":"b_BB26","k":"branch","len":1,"c":false},{"a":47913,"n":"glyph_fetch","k":"routine","len":197,"c":true},{"a":47940,"n":"b_BB44","k":"branch","len":1,"c":false},{"a":47970,"n":"b_BB62","k":"branch","len":1,"c":false},{"a":48008,"n":"j_BB88","k":"branch","len":1,"c":false},{"a":48012,"n":"b_BB8C","k":"branch","len":1,"c":false},{"a":48027,"n":"b_BB9B","k":"branch","len":1,"c":false},{"a":48035,"n":"b_BBA3","k":"branch","len":1,"c":false},{"a":48039,"n":"b_BBA7","k":"branch","len":1,"c":false},{"a":48045,"n":"b_BBAD","k":"branch","len":1,"c":false},{"a":48051,"n":"b_BBB3","k":"branch","len":1,"c":false},{"a":48081,"n":"b_BBD1","k":"branch","len":1,"c":false},{"a":48089,"n":"b_BBD9","k":"branch","len":1,"c":false},{"a":48094,"n":"j_BBDE","k":"branch","len":1,"c":false},{"a":48099,"n":"b_BBE3","k":"branch","len":1,"c":false},{"a":48109,"n":"r_BBED","k":"branch","len":1,"c":false},{"a":48110,"n":"glyph_screen_addr","k":"routine","len":80,"c":true},{"a":48126,"n":"b_BBFE","k":"branch","len":1,"c":false},{"a":48142,"n":"b_BC0E","k":"branch","len":1,"c":false},{"a":48190,"n":"glyph_draw","k":"routine","len":6,"c":true},{"a":48196,"n":"unused_glyph_skip","k":"routine","len":113,"c":true},{"a":48209,"n":"b_BC51","k":"branch","len":1,"c":false},{"a":48212,"n":"b_BC54","k":"branch","len":1,"c":false},{"a":48219,"n":"b_BC5B","k":"branch","len":1,"c":false},{"a":48239,"n":"b_BC6F","k":"branch","len":1,"c":false},{"a":48286,"n":"b_BC9E","k":"branch","len":1,"c":false},{"a":48309,"n":"glyph_done","k":"routine","len":11,"c":true},{"a":48311,"n":"j_BCB7","k":"branch","len":1,"c":false},{"a":48320,"n":"text_newline","k":"routine","len":8,"c":true},{"a":48328,"n":"text_return_step","k":"routine","len":47,"c":true},{"a":48345,"n":"b_BCD9","k":"branch","len":1,"c":false},{"a":48360,"n":"b_BCE8","k":"branch","len":1,"c":false},{"a":48375,"n":"text_scroll_step","k":"routine","len":120,"c":true},{"a":48383,"n":"b_BCFF","k":"branch","len":1,"c":false},{"a":48387,"n":"j_BD03","k":"branch","len":1,"c":false},{"a":48416,"n":"b_BD20","k":"branch","len":1,"c":false},{"a":48418,"n":"b_BD22","k":"branch","len":1,"c":false},{"a":48438,"n":"b_BD36","k":"branch","len":1,"c":false},{"a":48480,"n":"b_BD60","k":"branch","len":1,"c":false},{"a":48483,"n":"j_BD63","k":"branch","len":1,"c":false},{"a":48494,"n":"r_BD6E","k":"branch","len":1,"c":false},{"a":48495,"n":"text_scroll_dst_lo","k":"table","len":3,"c":true},{"a":48498,"n":"text_scroll_dst_hi","k":"table","len":3,"c":true},{"a":48501,"n":"text_scroll_src_lo","k":"table","len":3,"c":true},{"a":48504,"n":"text_scroll_src_hi","k":"table","len":3,"c":true},{"a":48507,"n":"text_scroll_count","k":"table","len":3,"c":true},{"a":48510,"n":"text_home","k":"routine","len":36,"c":true},{"a":48546,"n":"text_band_blank","k":"routine","len":30,"c":true},{"a":48550,"n":"b_BDA6","k":"branch","len":1,"c":false},{"a":48560,"n":"b_BDB0","k":"branch","len":1,"c":false},{"a":48576,"n":"font_base_lo","k":"variable","len":2,"c":true},{"a":48578,"n":"font_base_hi","k":"variable","len":2,"c":true},{"a":48580,"n":"text_windows","k":"variable","len":1,"c":true},{"a":48581,"n":"text_windows_1","k":"variable","len":1,"c":true},{"a":48582,"n":"text_windows_2","k":"variable","len":1,"c":true},{"a":48583,"n":"text_windows_3","k":"table","len":9,"c":true},{"a":48592,"n":"roof_row_pattern","k":"table","len":64,"c":true},{"a":48656,"n":"roof_row_pattern_2","k":"table","len":192,"c":true},{"a":48848,"n":"request_scan","k":"routine","len":25,"c":true},{"a":48855,"n":"b_BED7","k":"branch","len":1,"c":false},{"a":48865,"n":"r_BEE1","k":"branch","len":1,"c":false},{"a":48866,"n":"b_BEE2","k":"branch","len":1,"c":false},{"a":48873,"n":"request_activities","k":"table","len":10,"c":true},{"a":48883,"n":"request_flags","k":"variable","len":2,"c":true},{"a":48885,"n":"request_flag_phone","k":"variable","len":1,"c":true},{"a":48886,"n":"request_flag_food","k":"variable","len":1,"c":true},{"a":48887,"n":"request_flag_chair","k":"variable","len":1,"c":true},{"a":48888,"n":"request_flag_book","k":"variable","len":1,"c":true},{"a":48889,"n":"request_flag_record","k":"table","len":3,"c":true},{"a":48892,"n":"request_flag_9","k":"variable","len":1,"c":true},{"a":48893,"n":"paper_wait","k":"variable","len":1,"c":true},{"a":48894,"n":"paper_tick","k":"variable","len":1,"c":true},{"a":48895,"n":"act24_easy_chair_paper","k":"routine","len":3,"c":true},{"a":48898,"n":"act24_phases","k":"table","len":34,"c":true},{"a":48932,"n":"act_paper_turn","k":"routine","len":22,"c":true},{"a":48941,"n":"b_BF2D","k":"branch","len":1,"c":false},{"a":48954,"n":"act_paper_pose","k":"routine","len":11,"c":true},{"a":48965,"n":"act_paper_pose34","k":"routine","len":13,"c":true},{"a":48978,"n":"act_paper_frame1","k":"routine","len":33,"c":true},{"a":49011,"n":"act_paper_again","k":"routine","len":24,"c":true},{"a":49035,"n":"act_paper_away","k":"routine","len":14,"c":true},{"a":49045,"n":"b_BF95","k":"branch","len":1,"c":false},{"a":49048,"n":"r_BF98","k":"branch","len":1,"c":false},{"a":49049,"n":"act_paper_wait","k":"routine","len":30,"c":true},{"a":49067,"n":"b_BFAB","k":"branch","len":1,"c":false},{"a":49075,"n":"b_BFB3","k":"branch","len":1,"c":false},{"a":49079,"n":"act_sit_paper","k":"routine","len":16,"c":true},{"a":49095,"n":"act_walk_chair_2b","k":"routine","len":5,"c":true},{"a":49100,"n":"paper_show","k":"routine","len":49,"c":true},{"a":49149,"n":"fill_BFFD","k":"table","len":3,"c":true},{"a":49152,"n":"parse_pos","k":"variable","len":1,"c":true},{"a":49153,"n":"parse_last_char","k":"variable","len":1,"c":true},{"a":49154,"n":"parse_sentence_actions","k":"table","len":8,"c":true},{"a":49162,"n":"parse_polite_action","k":"variable","len":1,"c":true},{"a":49163,"n":"parse_rule_actions","k":"table","len":8,"c":true},{"a":49171,"n":"parse_action_count","k":"variable","len":1,"c":true},{"a":49172,"n":"parse_sentence_score","k":"variable","len":1,"c":true},{"a":49173,"n":"parse_rule_score","k":"variable","len":1,"c":true},{"a":49174,"n":"parse_bits_list1","k":"table","len":5,"c":true},{"a":49179,"n":"parse_bits_list2","k":"table","len":5,"c":true},{"a":49184,"n":"parse_word","k":"table","len":32,"c":true},{"a":49216,"n":"parse_typed_line","k":"routine","len":110,"c":true},{"a":49298,"n":"b_C092","k":"branch","len":1,"c":false},{"a":49319,"n":"b_C0A7","k":"branch","len":1,"c":false},{"a":49325,"n":"r_C0AD","k":"branch","len":1,"c":false},{"a":49326,"n":"parse_mood_bonus","k":"table","len":4,"c":true},{"a":49330,"n":"parse_extract_word","k":"routine","len":74,"c":true},{"a":49343,"n":"b_C0BF","k":"branch","len":1,"c":false},{"a":49361,"n":"b_C0D1","k":"branch","len":1,"c":false},{"a":49385,"n":"b_C0E9","k":"branch","len":1,"c":false},{"a":49398,"n":"b_C0F6","k":"branch","len":1,"c":false},{"a":49401,"n":"b_C0F9","k":"branch","len":1,"c":false},{"a":49404,"n":"parse_is_letter","k":"routine","len":22,"c":true},{"a":49422,"n":"b_C10E","k":"branch","len":1,"c":false},{"a":49424,"n":"b_C110","k":"branch","len":1,"c":false},{"a":49426,"n":"parse_advance","k":"routine","len":18,"c":true},{"a":49444,"n":"parse_is_sentence_end","k":"routine","len":11,"c":true},{"a":49446,"n":"b_C126","k":"branch","len":1,"c":false},{"a":49454,"n":"r_C12E","k":"branch","len":1,"c":false},{"a":49455,"n":"parse_end_chars","k":"table","len":4,"c":true},{"a":49459,"n":"parse_get_word_char","k":"routine","len":7,"c":true},{"a":49466,"n":"parse_get_action","k":"routine","len":7,"c":true},{"a":49473,"n":"parse_clear_actions","k":"routine","len":6,"c":true},{"a":49479,"n":"parse_lookup_word","k":"routine","len":59,"c":true},{"a":49495,"n":"b_C157","k":"branch","len":1,"c":false},{"a":49509,"n":"b_C165","k":"branch","len":1,"c":false},{"a":49520,"n":"b_C170","k":"branch","len":1,"c":false},{"a":49534,"n":"b_C17E","k":"branch","len":1,"c":false},{"a":49536,"n":"b_C180","k":"branch","len":1,"c":false},{"a":49538,"n":"parse_found_bits","k":"table","len":5,"c":true},{"a":49543,"n":"parse_search_list","k":"routine","len":62,"c":true},{"a":49547,"n":"j_C18B","k":"branch","len":1,"c":false},{"a":49549,"n":"b_C18D","k":"branch","len":1,"c":false},{"a":49565,"n":"j_C19D","k":"branch","len":1,"c":false},{"a":49581,"n":"b_C1AD","k":"branch","len":1,"c":false},{"a":49588,"n":"b_C1B4","k":"branch","len":1,"c":false},{"a":49603,"n":"b_C1C3","k":"branch","len":1,"c":false},{"a":49605,"n":"parse_match_rules","k":"routine","len":111,"c":true},{"a":49613,"n":"j_C1CD","k":"branch","len":1,"c":false},{"a":49619,"n":"b_C1D3","k":"branch","len":1,"c":false},{"a":49661,"n":"b_C1FD","k":"branch","len":1,"c":false},{"a":49663,"n":"j_C1FF","k":"branch","len":1,"c":false},{"a":49680,"n":"b_C210","k":"branch","len":1,"c":false},{"a":49696,"n":"b_C220","k":"branch","len":1,"c":false},{"a":49707,"n":"b_C22B","k":"branch","len":1,"c":false},{"a":49716,"n":"vocab_verbs","k":"table","len":940,"c":true},{"a":50656,"n":"vocab_nouns","k":"table","len":891,"c":true},{"a":51547,"n":"vocab_nouns_end","k":"table","len":15,"c":true},{"a":51562,"n":"parse_rules","k":"table","len":545,"c":true},{"a":52107,"n":"unused_cb8b","k":"table","len":117,"c":true},{"a":52224,"n":"house_colour_ram","k":"table","len":1024,"c":true},{"a":53248,"n":"snd_event","k":"routine","len":65,"c":true},{"a":53313,"n":"snd_cmd_handler","k":"variable","len":1,"c":true},{"a":53314,"n":"snd_cmd_handler_hi","k":"variable","len":1,"c":true},{"a":53315,"n":"b_D043","k":"routine","len":3,"c":true},{"a":53318,"n":"snd_note","k":"routine","len":73,"c":true},{"a":53339,"n":"b_D05B","k":"branch","len":1,"c":false},{"a":53350,"n":"b_D066","k":"branch","len":1,"c":false},{"a":53366,"n":"j_D076","k":"branch","len":1,"c":false},{"a":53378,"n":"j_D082","k":"branch","len":1,"c":false},{"a":53381,"n":"j_D085","k":"branch","len":1,"c":false},{"a":53391,"n":"snd_duration","k":"routine","len":48,"c":true},{"a":53413,"n":"b_D0A5","k":"branch","len":1,"c":false},{"a":53439,"n":"snd_cmd_sound","k":"routine","len":10,"c":true},{"a":53449,"n":"snd_cmd_sound_2","k":"routine","len":6,"c":true},{"a":53451,"n":"b_D0CB","k":"branch","len":1,"c":false},{"a":53455,"n":"snd_cmd_jump","k":"routine","len":14,"c":true},{"a":53469,"n":"snd_pattern_begin","k":"routine","len":22,"c":true},{"a":53491,"n":"snd_cmd_loop","k":"routine","len":24,"c":true},{"a":53509,"n":"b_D105","k":"branch","len":1,"c":false},{"a":53515,"n":"snd_cmd_call","k":"routine","len":79,"c":true},{"a":53517,"n":"b_D10D","k":"branch","len":1,"c":false},{"a":53546,"n":"b_D12A","k":"branch","len":1,"c":false},{"a":53557,"n":"b_D135","k":"branch","len":1,"c":false},{"a":53565,"n":"j_D13D","k":"branch","len":1,"c":false},{"a":53580,"n":"j_D14C","k":"branch","len":1,"c":false},{"a":53591,"n":"j_D157","k":"branch","len":1,"c":false},{"a":53594,"n":"snd_read_filter_step","k":"routine","len":72,"c":true},{"a":53659,"n":"b_D19B","k":"branch","len":1,"c":false},{"a":53666,"n":"snd_read_pw_step","k":"routine","len":41,"c":true},{"a":53698,"n":"b_D1C2","k":"branch","len":1,"c":false},{"a":53707,"n":"snd_slide_down","k":"routine","len":4,"c":true},{"a":53711,"n":"snd_slide_up","k":"routine","len":137,"c":true},{"a":53713,"n":"b_D1D1","k":"branch","len":1,"c":false},{"a":53731,"n":"b_D1E3","k":"branch","len":1,"c":false},{"a":53744,"n":"b_D1F0","k":"branch","len":1,"c":false},{"a":53758,"n":"b_D1FE","k":"branch","len":1,"c":false},{"a":53772,"n":"b_D20C","k":"branch","len":1,"c":false},{"a":53775,"n":"b_D20F","k":"branch","len":1,"c":false},{"a":53788,"n":"b_D21C","k":"branch","len":1,"c":false},{"a":53797,"n":"b_D225","k":"branch","len":1,"c":false},{"a":53811,"n":"b_D233","k":"branch","len":1,"c":false},{"a":53823,"n":"b_D23F","k":"branch","len":1,"c":false},{"a":53836,"n":"b_D24C","k":"branch","len":1,"c":false},{"a":53848,"n":"snd_filter_step","k":"routine","len":93,"c":true},{"a":53858,"n":"b_D262","k":"branch","len":1,"c":false},{"a":53915,"n":"b_D29B","k":"branch","len":1,"c":false},{"a":53941,"n":"snd_pw_step","k":"routine","len":137,"c":true},{"a":54004,"n":"b_D2F4","k":"branch","len":1,"c":false},{"a":54065,"n":"b_D331","k":"branch","len":1,"c":false},{"a":54077,"n":"r_D33D","k":"branch","len":1,"c":false},{"a":54078,"n":"snd_dispatch","k":"routine","len":36,"c":true},{"a":54080,"n":"b_D340","k":"branch","len":1,"c":false},{"a":54111,"n":"b_D35F","k":"branch","len":1,"c":false},{"a":54114,"n":"snd_set_filter","k":"routine","len":40,"c":true},{"a":54124,"n":"b_D36C","k":"branch","len":1,"c":false},{"a":54154,"n":"snd_cmd_random_call","k":"routine","len":59,"c":true},{"a":54156,"n":"b_D38C","k":"branch","len":1,"c":false},{"a":54194,"n":"b_D3B2","k":"branch","len":1,"c":false},{"a":54213,"n":"snd_cmd_random_return","k":"routine","len":29,"c":true},{"a":54229,"n":"b_D3D5","k":"branch","len":1,"c":false},{"a":54242,"n":"snd_cmd_set_notes","k":"routine","len":73,"c":true},{"a":54247,"n":"j_D3E7","k":"branch","len":1,"c":false},{"a":54255,"n":"b_D3EF","k":"branch","len":1,"c":false},{"a":54271,"n":"b_D3FF","k":"branch","len":1,"c":false},{"a":54315,"n":"snd_cmd_loop2","k":"routine","len":61,"c":true},{"a":54333,"n":"b_D43D","k":"branch","len":1,"c":false},{"a":54339,"n":"b_D443","k":"branch","len":1,"c":false},{"a":54347,"n":"j_D44B","k":"branch","len":1,"c":false},{"a":54362,"n":"j_D45A","k":"branch","len":1,"c":false},{"a":54373,"n":"b_D465","k":"branch","len":1,"c":false},{"a":54376,"n":"snd_cmd_slide_down","k":"routine","len":6,"c":true},{"a":54382,"n":"snd_cmd_slide_up","k":"routine","len":6,"c":true},{"a":54388,"n":"snd_cmd_slide_auto","k":"routine","len":13,"c":true},{"a":54401,"n":"snd_cmd_slide_step","k":"routine","len":6,"c":true},{"a":54407,"n":"snd_cmd_call_b","k":"routine","len":42,"c":true},{"a":54409,"n":"b_D489","k":"branch","len":1,"c":false},{"a":54438,"n":"b_D4A6","k":"branch","len":1,"c":false},{"a":54449,"n":"snd_cmd_return_b","k":"routine","len":29,"c":true},{"a":54465,"n":"b_D4C1","k":"branch","len":1,"c":false},{"a":54478,"n":"snd_cmd_instrument","k":"routine","len":10,"c":true},{"a":54488,"n":"snd_cmd_filter","k":"routine","len":16,"c":true},{"a":54504,"n":"snd_cmd_skip","k":"routine","len":11,"c":true},{"a":54512,"n":"b_D4F0","k":"branch","len":1,"c":false},{"a":54515,"n":"snd_cmd_nop","k":"routine","len":7,"c":true},{"a":54522,"n":"snd_cmd_call_c","k":"routine","len":30,"c":true},{"a":54541,"n":"b_D50D","k":"branch","len":1,"c":false},{"a":54552,"n":"snd_cmd_return_c","k":"routine","len":15,"c":true},{"a":54567,"n":"snd_pattern_lookup","k":"routine","len":2,"c":true},{"a":54569,"n":"snd_pattern_lookup_a","k":"routine","len":57,"c":true},{"a":54585,"n":"b_D539","k":"branch","len":1,"c":false},{"a":54586,"n":"b_D53A","k":"branch","len":1,"c":false},{"a":54607,"n":"b_D54F","k":"branch","len":1,"c":false},{"a":54617,"n":"b_D559","k":"branch","len":1,"c":false},{"a":54626,"n":"snd_pattab_lo_a","k":"routine","len":1,"c":true},{"a":54627,"n":"snd_pattab_hi_a","k":"routine","len":5,"c":true},{"a":54632,"n":"snd_pattab_lo_b","k":"routine","len":1,"c":true},{"a":54633,"n":"snd_pattab_hi_b","k":"routine","len":19,"c":true},{"a":54652,"n":"snd_cmd_set_notes_n","k":"routine","len":11,"c":true},{"a":54663,"n":"snd_instruments","k":"table","len":60,"c":true},{"a":54723,"n":"snd_instruments_3c","k":"table","len":150,"c":true},{"a":54873,"n":"snd_unused_d659","k":"table","len":167,"c":true},{"a":55040,"n":"snd_commands","k":"variable","len":1,"c":true},{"a":55041,"n":"snd_commands_hi","k":"table","len":63,"c":true},{"a":55104,"n":"snd_commands_20","k":"table","len":36,"c":true},{"a":55140,"n":"snd_table","k":"variable","len":1,"c":true},{"a":55141,"n":"snd_table_hi","k":"table","len":5,"c":true},{"a":55146,"n":"snd_sound_01","k":"table","len":6,"c":true},{"a":55152,"n":"snd_sound_02","k":"table","len":6,"c":true},{"a":55158,"n":"snd_sound_03","k":"table","len":6,"c":true},{"a":55164,"n":"snd_sound_04","k":"table","len":6,"c":true},{"a":55170,"n":"snd_sound_05","k":"table","len":6,"c":true},{"a":55176,"n":"snd_sound_06","k":"table","len":6,"c":true},{"a":55182,"n":"snd_sound_07","k":"table","len":6,"c":true},{"a":55188,"n":"snd_sound_08","k":"table","len":6,"c":true},{"a":55194,"n":"snd_sound_09","k":"table","len":6,"c":true},{"a":55200,"n":"snd_sound_10","k":"table","len":6,"c":true},{"a":55206,"n":"snd_sound_11","k":"table","len":6,"c":true},{"a":55212,"n":"snd_sound_12","k":"variable","len":1,"c":true},{"a":55213,"n":"a_D7AD","k":"variable","len":1,"c":true},{"a":55214,"n":"snd_sound_12_c1","k":"variable","len":1,"c":true},{"a":55215,"n":"a_D7AF","k":"variable","len":1,"c":true},{"a":55216,"n":"snd_sound_12_c2","k":"variable","len":1,"c":true},{"a":55217,"n":"a_D7B1","k":"variable","len":1,"c":true},{"a":55218,"n":"snd_sound_13","k":"table","len":6,"c":true},{"a":55224,"n":"snd_sound_14","k":"table","len":6,"c":true},{"a":55230,"n":"snd_sound_15","k":"table","len":6,"c":true},{"a":55236,"n":"snd_sound_16","k":"table","len":6,"c":true},{"a":55242,"n":"snd_sound_17","k":"table","len":6,"c":true},{"a":55248,"n":"snd_sound_18","k":"table","len":6,"c":true},{"a":55254,"n":"snd_sound_19","k":"table","len":6,"c":true},{"a":55260,"n":"snd_sound_20","k":"table","len":6,"c":true},{"a":55266,"n":"snd_sound_21","k":"table","len":6,"c":true},{"a":55272,"n":"snd_sound_22","k":"table","len":6,"c":true},{"a":55278,"n":"snd_sound_23","k":"table","len":6,"c":true},{"a":55284,"n":"snd_sound_24","k":"table","len":6,"c":true},{"a":55290,"n":"snd_sound_25","k":"table","len":6,"c":true},{"a":55296,"n":"f_D800","k":"table","len":6,"c":true},{"a":55302,"n":"snd_unused_d806","k":"table","len":30,"c":true},{"a":55332,"n":"snd_20_c0","k":"table","len":6,"c":true},{"a":55338,"n":"snd_20_c1","k":"table","len":7,"c":true},{"a":55345,"n":"snd_pattern_tables","k":"table","len":8,"c":true},{"a":55353,"n":"snd_01_c2","k":"table","len":9,"c":true},{"a":55362,"n":"snd_02_c2","k":"table","len":9,"c":true},{"a":55371,"n":"snd_03_c0","k":"table","len":8,"c":true},{"a":55379,"n":"snd_pat_c0_1f","k":"table","len":4,"c":true},{"a":55383,"n":"snd_pat_c0_20","k":"table","len":4,"c":true},{"a":55387,"n":"snd_pat_c0_21","k":"table","len":4,"c":true},{"a":55391,"n":"snd_pat_c0_22","k":"table","len":4,"c":true},{"a":55395,"n":"snd_05_c0","k":"table","len":10,"c":true},{"a":55405,"n":"snd_pat_c0_23","k":"table","len":4,"c":true},{"a":55409,"n":"snd_pat_c0_24","k":"table","len":4,"c":true},{"a":55413,"n":"snd_pat_c0_25","k":"table","len":4,"c":true},{"a":55417,"n":"snd_pat_c0_26","k":"table","len":4,"c":true},{"a":55421,"n":"snd_04_c0","k":"table","len":8,"c":true},{"a":55429,"n":"snd_04_c2","k":"table","len":8,"c":true},{"a":55437,"n":"snd_pat_c0_2f","k":"table","len":4,"c":true},{"a":55441,"n":"snd_pat_c0_32","k":"table","len":4,"c":true},{"a":55445,"n":"snd_pat_c0_34","k":"table","len":4,"c":true},{"a":55449,"n":"snd_pat_c2_62","k":"table","len":4,"c":true},{"a":55453,"n":"snd_09_c0","k":"table","len":5,"c":true},{"a":55458,"n":"snd_pat_c0_27","k":"table","len":8,"c":true},{"a":55466,"n":"snd_pat_c0_28","k":"table","len":23,"c":true},{"a":55489,"n":"snd_pat_c0_29","k":"table","len":24,"c":true},{"a":55513,"n":"snd_10_c0","k":"table","len":8,"c":true},{"a":55521,"n":"snd_11_c0","k":"table","len":16,"c":true},{"a":55537,"n":"snd_11_c2","k":"table","len":4,"c":true},{"a":55541,"n":"a_D8F5","k":"table","len":40,"c":true},{"a":55581,"n":"a_D91D","k":"table","len":57,"c":true},{"a":55638,"n":"f_D956","k":"table","len":63,"c":true},{"a":55701,"n":"snd_patterns_c0_50","k":"table","len":38,"c":true},{"a":55739,"n":"snd_13_c1","k":"table","len":7,"c":true},{"a":55746,"n":"snd_14_c1","k":"table","len":66,"c":true},{"a":55812,"n":"snd_16_silence","k":"variable","len":2,"c":true},{"a":55814,"n":"snd_15_c0","k":"table","len":27,"c":true},{"a":55841,"n":"snd_pat_c0_11","k":"table","len":5,"c":true},{"a":55846,"n":"snd_pat_c0_12","k":"table","len":5,"c":true},{"a":55851,"n":"snd_pat_c0_13","k":"table","len":5,"c":true},{"a":55856,"n":"snd_pat_c0_14","k":"table","len":5,"c":true},{"a":55861,"n":"snd_pat_c0_15","k":"table","len":5,"c":true},{"a":55866,"n":"snd_pat_c0_16","k":"table","len":5,"c":true},{"a":55871,"n":"snd_19_c1","k":"table","len":14,"c":true},{"a":55885,"n":"snd_13_c2","k":"table","len":4,"c":true},{"a":55889,"n":"snd_17_c0","k":"table","len":14,"c":true},{"a":55903,"n":"snd_pat_c0_1b","k":"table","len":4,"c":true},{"a":55907,"n":"snd_pat_c0_1c","k":"table","len":4,"c":true},{"a":55911,"n":"snd_pat_c0_1d","k":"table","len":4,"c":true},{"a":55915,"n":"snd_pat_c0_1e","k":"table","len":4,"c":true},{"a":55919,"n":"snd_18_c0","k":"table","len":7,"c":true},{"a":55926,"n":"snd_18_c1","k":"table","len":6,"c":true},{"a":55932,"n":"snd_pat_c0_17","k":"table","len":4,"c":true},{"a":55936,"n":"snd_pat_c0_18","k":"table","len":4,"c":true},{"a":55940,"n":"snd_pat_c0_19","k":"table","len":4,"c":true},{"a":55944,"n":"snd_pat_c0_1a","k":"table","len":4,"c":true},{"a":55948,"n":"snd_25_c0","k":"table","len":12,"c":true},{"a":55960,"n":"snd_pat_bc","k":"table","len":5,"c":true},{"a":55965,"n":"snd_pat_bd","k":"table","len":5,"c":true},{"a":55970,"n":"snd_pat_be","k":"table","len":5,"c":true},{"a":55975,"n":"snd_pat_bf","k":"table","len":5,"c":true},{"a":55980,"n":"snd_pat_c0","k":"table","len":5,"c":true},{"a":55985,"n":"snd_pat_c1","k":"table","len":5,"c":true},{"a":55990,"n":"snd_pat_c2","k":"table","len":5,"c":true},{"a":55995,"n":"snd_pat_c3","k":"table","len":5,"c":true},{"a":56000,"n":"snd_pat_c4","k":"table","len":4,"c":true},{"a":56004,"n":"snd_pat_c5","k":"table","len":4,"c":true},{"a":56008,"n":"snd_pat_c6","k":"table","len":4,"c":true},{"a":56012,"n":"snd_pat_c7","k":"table","len":8,"c":true},{"a":56020,"n":"snd_pat_c8","k":"table","len":8,"c":true},{"a":56028,"n":"snd_pat_c9","k":"table","len":8,"c":true},{"a":56036,"n":"snd_pat_ca","k":"table","len":8,"c":true},{"a":56044,"n":"snd_pat_cb","k":"table","len":8,"c":true},{"a":56052,"n":"snd_26_c2","k":"table","len":8,"c":true},{"a":56060,"n":"snd_pat_c2_68","k":"table","len":8,"c":true},{"a":56068,"n":"snd_pat_c2_69","k":"table","len":16,"c":true},{"a":56084,"n":"snd_pat_c2_6a","k":"table","len":30,"c":true},{"a":56114,"n":"snd_pat_c2_6b","k":"table","len":23,"c":true},{"a":56137,"n":"a_DB49","k":"table","len":11,"c":true},{"a":56148,"n":"snd_pat_c2_6c","k":"table","len":44,"c":true},{"a":56192,"n":"snd_pat_c2_6e","k":"table","len":18,"c":true},{"a":56210,"n":"snd_21_c0","k":"table","len":7,"c":true},{"a":56217,"n":"a_DB99","k":"variable","len":1,"c":true},{"a":56218,"n":"snd_21_c1","k":"table","len":9,"c":true},{"a":56227,"n":"snd_pat_b8","k":"table","len":6,"c":true},{"a":56233,"n":"snd_pat_b9","k":"table","len":6,"c":true},{"a":56239,"n":"snd_pat_ba","k":"table","len":6,"c":true},{"a":56245,"n":"snd_pat_bb","k":"table","len":6,"c":true},{"a":56251,"n":"snd_pat_c0_54","k":"table","len":17,"c":true},{"a":56268,"n":"snd_pat_c1_61","k":"table","len":13,"c":true},{"a":56281,"n":"snd_pat_c0_55","k":"table","len":17,"c":true},{"a":56298,"n":"snd_pat_c1_62","k":"table","len":13,"c":true},{"a":56311,"n":"snd_pat_c0_56","k":"table","len":17,"c":true},{"a":56328,"n":"snd_pat_c1_63","k":"table","len":13,"c":true},{"a":56341,"n":"snd_pat_c0_57","k":"table","len":17,"c":true},{"a":56358,"n":"snd_pat_c1_64","k":"table","len":13,"c":true},{"a":56371,"n":"snd_pat_c0_58","k":"table","len":17,"c":true},{"a":56388,"n":"snd_pat_c1_65","k":"table","len":13,"c":true},{"a":56401,"n":"snd_pat_c0_59","k":"table","len":19,"c":true},{"a":56420,"n":"snd_pat_c1_66","k":"table","len":13,"c":true},{"a":56433,"n":"snd_pat_c0_5a","k":"table","len":26,"c":true},{"a":56459,"n":"snd_pat_c1_67","k":"table","len":22,"c":true},{"a":56481,"n":"snd_pat_c0_5b","k":"table","len":26,"c":true},{"a":56507,"n":"snd_pat_c1_68","k":"table","len":22,"c":true},{"a":56529,"n":"snd_pat_c0_53","k":"table","len":26,"c":true},{"a":56555,"n":"snd_pat_c1_60","k":"table","len":22,"c":true},{"a":56577,"n":"snd_22_c1","k":"table","len":54,"c":true},{"a":56631,"n":"snd_23_c0","k":"table","len":6,"c":true},{"a":56637,"n":"snd_23_c1","k":"table","len":8,"c":true},{"a":56645,"n":"snd_orphan_dd45","k":"table","len":12,"c":true},{"a":56657,"n":"snd_24_c1","k":"table","len":62,"c":true},{"a":56719,"n":"snd_unused_dd8f","k":"table","len":113,"c":true},{"a":57344,"n":"act53_dance","k":"routine","len":6,"c":true},{"a":57350,"n":"act53_phases","k":"table","len":20,"c":true},{"a":57370,"n":"act53_start","k":"routine","len":44,"c":true},{"a":57380,"n":"b_E024","k":"branch","len":1,"c":false},{"a":57411,"n":"b_E043","k":"branch","len":1,"c":false},{"a":57414,"n":"act53_count_moves","k":"routine","len":13,"c":true},{"a":57427,"n":"act53_tick","k":"variable","len":1,"c":true},{"a":57428,"n":"act53_moves_left","k":"variable","len":1,"c":true},{"a":57429,"n":"act53_step_gate","k":"routine","len":26,"c":true},{"a":57447,"n":"b_E067","k":"branch","len":1,"c":false},{"a":57452,"n":"b_E06C","k":"branch","len":1,"c":false},{"a":57455,"n":"act53_poses_up","k":"routine","len":19,"c":true},{"a":57469,"n":"j_E07D","k":"branch","len":1,"c":false},{"a":57474,"n":"act53_set_pose","k":"routine","len":22,"c":true},{"a":57496,"n":"act53_turns","k":"routine","len":14,"c":true},{"a":57510,"n":"act53_next_move","k":"routine","len":5,"c":true},{"a":57515,"n":"act53_choose_move","k":"routine","len":64,"c":true},{"a":57578,"n":"r_E0EA","k":"branch","len":1,"c":false},{"a":57579,"n":"act53_finish","k":"routine","len":41,"c":true},{"a":57620,"n":"act53_poses_down","k":"routine","len":18,"c":true},{"a":57638,"n":"chooser_queued_121","k":"variable","len":1,"c":true},{"a":57639,"n":"chooser_deferred","k":"variable","len":1,"c":true},{"a":57640,"n":"action_queue_in","k":"variable","len":1,"c":true},{"a":57641,"n":"action_queue_out","k":"variable","len":1,"c":true},{"a":57642,"n":"action_queue","k":"table","len":16,"c":true},{"a":57658,"n":"action_queue_spare","k":"table","len":5,"c":true},{"a":57663,"n":"activity_chooser","k":"routine","len":304,"c":true},{"a":57682,"n":"b_E152","k":"branch","len":1,"c":false},{"a":57695,"n":"b_E15F","k":"branch","len":1,"c":false},{"a":57710,"n":"b_E16E","k":"branch","len":1,"c":false},{"a":57740,"n":"b_E18C","k":"branch","len":1,"c":false},{"a":57745,"n":"b_E191","k":"branch","len":1,"c":false},{"a":57755,"n":"b_E19B","k":"branch","len":1,"c":false},{"a":57780,"n":"b_E1B4","k":"branch","len":1,"c":false},{"a":57798,"n":"b_E1C6","k":"branch","len":1,"c":false},{"a":57824,"n":"b_E1E0","k":"branch","len":1,"c":false},{"a":57838,"n":"b_E1EE","k":"branch","len":1,"c":false},{"a":57842,"n":"b_E1F2","k":"branch","len":1,"c":false},{"a":57868,"n":"b_E20C","k":"branch","len":1,"c":false},{"a":57882,"n":"b_E21A","k":"branch","len":1,"c":false},{"a":57884,"n":"j_E21C","k":"branch","len":1,"c":false},{"a":57887,"n":"b_E21F","k":"branch","len":1,"c":false},{"a":57896,"n":"b_E228","k":"branch","len":1,"c":false},{"a":57906,"n":"b_E232","k":"branch","len":1,"c":false},{"a":57918,"n":"b_E23E","k":"branch","len":1,"c":false},{"a":57927,"n":"b_E247","k":"branch","len":1,"c":false},{"a":57930,"n":"b_E24A","k":"branch","len":1,"c":false},{"a":57936,"n":"b_E250","k":"branch","len":1,"c":false},{"a":57941,"n":"b_E255","k":"branch","len":1,"c":false},{"a":57945,"n":"b_E259","k":"branch","len":1,"c":false},{"a":57967,"n":"chooser_noon_armed","k":"variable","len":1,"c":true},{"a":57968,"n":"b_E270","k":"routine","len":26,"c":true},{"a":57991,"n":"b_E287","k":"branch","len":1,"c":false},{"a":57994,"n":"chooser_act1_armed","k":"variable","len":1,"c":true},{"a":57995,"n":"b_E28B","k":"routine","len":88,"c":true},{"a":58022,"n":"b_E2A6","k":"branch","len":1,"c":false},{"a":58045,"n":"b_E2BD","k":"branch","len":1,"c":false},{"a":58053,"n":"b_E2C5","k":"branch","len":1,"c":false},{"a":58069,"n":"b_E2D5","k":"branch","len":1,"c":false},{"a":58083,"n":"chooser_by_step","k":"routine","len":17,"c":true},{"a":58100,"n":"chooser_step_jumps","k":"variable","len":1,"c":true},{"a":58101,"n":"chooser_step_jumps_hi","k":"table","len":7,"c":true},{"a":58108,"n":"chooser_step0","k":"routine","len":3,"c":true},{"a":58111,"n":"chooser_mode_step1","k":"table","len":8,"c":true},{"a":58119,"n":"chooser_mode_step2","k":"table","len":8,"c":true},{"a":58127,"n":"chooser_mode_step3","k":"table","len":8,"c":true},{"a":58135,"n":"chooser_step1","k":"routine","len":6,"c":true},{"a":58141,"n":"chooser_step2","k":"routine","len":6,"c":true},{"a":58147,"n":"chooser_step3","k":"routine","len":3,"c":true},{"a":58150,"n":"chooser_pick_list","k":"routine","len":15,"c":true},{"a":58165,"n":"chooser_pick_a","k":"routine","len":16,"c":true},{"a":58181,"n":"chooser_list_a","k":"table","len":16,"c":true},{"a":58197,"n":"b_E355","k":"routine","len":2,"c":true},{"a":58199,"n":"chooser_pick_b","k":"routine","len":16,"c":true},{"a":58215,"n":"chooser_list_b","k":"table","len":16,"c":true},{"a":58231,"n":"chooser_pick_c","k":"routine","len":14,"c":true},{"a":58245,"n":"chooser_start","k":"routine","len":14,"c":true},{"a":58259,"n":"chooser_set_activity","k":"routine","len":6,"c":true},{"a":58264,"n":"r_E398","k":"branch","len":1,"c":false},{"a":58265,"n":"chooser_list_c","k":"table","len":16,"c":true},{"a":58281,"n":"chooser_not_repeat","k":"routine","len":21,"c":true},{"a":58295,"n":"b_E3B7","k":"branch","len":1,"c":false},{"a":58300,"n":"b_E3BC","k":"branch","len":1,"c":false},{"a":58302,"n":"chooser_last","k":"variable","len":1,"c":true},{"a":58303,"n":"empty_stage3","k":"routine","len":1,"c":true},{"a":58304,"n":"unused_e3c0","k":"variable","len":1,"c":true},{"a":58305,"n":"empty_hook_188d","k":"routine","len":1,"c":true},{"a":58306,"n":"empty_hook_1bb0","k":"routine","len":1,"c":true},{"a":58307,"n":"unused_e3c3","k":"table","len":7,"c":true},{"a":58314,"n":"act79_piano","k":"routine","len":3,"c":true},{"a":58317,"n":"act79_phases","k":"table","len":22,"c":true},{"a":58339,"n":"act79_rts","k":"routine","len":1,"c":true},{"a":58340,"n":"act79_check_stereo","k":"routine","len":13,"c":true},{"a":58350,"n":"b_E3EE","k":"branch","len":1,"c":false},{"a":58353,"n":"act79_start_piece","k":"routine","len":15,"c":true},{"a":58368,"n":"act79_stop_piece","k":"routine","len":9,"c":true},{"a":58377,"n":"act79_unused_wait","k":"routine","len":13,"c":true},{"a":58390,"n":"act79_unused_phase","k":"routine","len":5,"c":true},{"a":58395,"n":"act79_unused_count","k":"variable","len":1,"c":true},{"a":58396,"n":"unused_e41c","k":"variable","len":1,"c":true},{"a":58397,"n":"piano_part_offsets","k":"table","len":4,"c":true},{"a":58401,"n":"piano_parts_changed","k":"variable","len":1,"c":true},{"a":58402,"n":"act79_walk","k":"routine","len":5,"c":true},{"a":58407,"n":"act79_turn_28","k":"routine","len":4,"c":true},{"a":58411,"n":"act79_turn_21","k":"routine","len":2,"c":true},{"a":58413,"n":"act79_turn","k":"routine","len":15,"c":true},{"a":58424,"n":"b_E438","k":"branch","len":1,"c":false},{"a":58427,"n":"r_E43B","k":"branch","len":1,"c":false},{"a":58428,"n":"act79_play","k":"routine","len":23,"c":true},{"a":58451,"n":"graphic_offsets","k":"table","len":366,"c":true},{"a":58817,"n":"gfx_body_000","k":"table","len":982,"c":true},{"a":59799,"n":"gfx_body_020","k":"table","len":968,"c":true},{"a":60767,"n":"gfx_body_043","k":"table","len":966,"c":true},{"a":61733,"n":"gfx_body_065","k":"table","len":975,"c":true},{"a":62708,"n":"gfx_body_091","k":"table","len":286,"c":true},{"a":62994,"n":"gfx_dog_098","k":"table","len":321,"c":true},{"a":63315,"n":"gfx_objects_106","k":"table","len":564,"c":true},{"a":63879,"n":"gfx_head_131","k":"table","len":234,"c":true},{"a":64113,"n":"gfx_head_mood0_138","k":"table","len":455,"c":true},{"a":64568,"n":"gfx_head_mood1_153","k":"table","len":446,"c":true},{"a":65014,"n":"gfx_head_mood2_168","k":"table","len":452,"c":true},{"a":65466,"n":"unused_ffba","k":"table","len":64,"c":true},{"a":65530,"n":"vec_nmi","k":"variable","len":2,"c":true},{"a":65532,"n":"vec_reset","k":"variable","len":2,"c":true},{"a":65534,"n":"vec_irq","k":"variable","len":2,"c":true}],"records":[{"a":0,"l":"cpu_ddr","c":"6510 data direction register: the cold start writes $2F (bits 0-3 and 5 outputs). The JSR $0000 at $B3B9 is not a call to here: its operand is rewritten before use.","t":"byte","b":[0],"x":[1155,1212,17644,46009]},{"a":1,"l":"cpu_port","c":"6510 port: memory configuration. The game keeps the low bits at 5 (I/O in, BASIC and KERNAL out) and drops them to 4 around uses of the RAM under $D000 ($B26F, $B5C3, $B62E, $B639). The IRQ handler keeps the low three bits in $092D, forces 5 and restores them on exit.","t":"byte","b":[85],"x":[1145,1151,1816,1823,1829,2075,2082,43809,43815,43849,45679,45683,46531,46535,46638,46642,46649,46653]},{"a":2,"l":"zp_free_02","c":"$02-$0F: no traced instruction of the game uses these bytes (the cross-references once listed for $03, $05, $0A and $0D came from switch tables decoded as code, or from zero page itself being decoded as code). They keep what the loader left there.","t":"byte","b":[0,170,177,145,179,34,0,0]},{"a":10,"t":"byte","b":[0,76,0]},{"a":13,"c":"No genuine use found: the only reference is at $E3E0, a byte of the switch table after JSR $3F11 at $E3CA that the disassembler decodes as code. 0 in every snapshot.","t":"byte","b":[0]},{"a":14,"t":"gap","n":2},{"a":16,"l":"parse_ptr","c":"Parser pointer, low byte (high byte $11): walks a word list in s_C187 (five concept bytes, the word, $00; $FF ends the list) comparing records with the current word at $C020, and walks the 16-byte rule records from $C96A in s_C1C5.","t":"byte","b":[0],"x":[49543,49549,49568,49572,49581,49590,49592,49607,49626,49645,49650,49666]},{"a":17,"l":"parse_ptr_hi","c":"High byte of the parser pointer $10: $C2 or $C5 for the word lists at $C234 and $C5E0, $C9 for the rules at $C96A, advanced as the records are stepped over.","t":"byte","b":[0],"x":[49545,49594,49598,49611,49652,49656]},{"a":18,"l":"rule_miss_bits","c":"Parser rule matcher s_C1C5: OR over the ten bit bytes of (rule bits AND NOT sentence bits $C016-$C01F). Zero means every concept the rule needs is in the sentence, and the rule's action codes are taken.","t":"byte","b":[0],"x":[49615,49634,49636,49641]},{"a":19,"l":"rule_sentence_inv","c":"Parser rule matcher s_C1C5: the current sentence bit byte ($C016,y) inverted, ANDed with the rule byte.","t":"byte","b":[0],"x":[49624,49632]},{"a":20,"l":"zp_free_14","c":"$14-$17: no traced instruction uses these bytes ($15 and $17 were listed only from switch tables decoded as code); they hold $12 $08 $19 $16 from the loader in every snapshot.","t":"byte","b":[18,8,25,22]},{"a":24,"l":"tmp_ptr_a","c":"Scratch pointer, low byte (high $19), shared by many routines: unpack_figure_sprite's packed-data pointer and s_12B7's source image; update_figure_sprites' pointer to the frame Y offsets; the body image builder at $1585-$160B; script_next's activity script pointer ($8F14); draw_object's frame list ($9708) and, through copy_frame_record ($99D5), the colour-RAM source the blitter $3E79 reads; the product of the multiply at $3E5A. draw_clock_hand keeps its direction flips in $18.","t":"byte","b":[128],"x":[3167,3186,3705,3709,3714,3724,3728,3739,3782,3803,3822,3827,3832,4024,4090,4100,4927,5536,5542,5559,5561,5612,5643,15972,15977,16020,16122,16124,36628,36637,38664,38676,38682,39381]},{"a":25,"l":"tmp_ptr_a_hi","c":"High byte of the scratch pointer $18; draw_clock_hand uses it alone as its count of steps left.","t":"byte","b":[73],"x":[3162,3306,3684,3707,3718,3720,3733,3741,3745,4033,4095,5538,5565,5621,15979,15983,16128,36633,38669]},{"a":26,"l":"tmp_ptr_b","c":"Scratch pointer, low byte (high $1B): the sprite block being written by unpack_figure_sprite, s_12B7 and s_13AC ($4000 + 64 x block, from s_1396); the blitter's colour-matrix source ($3E88); the part builder's pointer at $1592-$1606; the multiplicand at $3E5A. draw_clock_hand keeps its step index in $1A.","t":"byte","b":[192],"x":[3171,3181,3304,3811,3850,3855,3860,3887,3894,3899,3902,3911,3918,3936,3939,3942,3945,3948,3951,3955,3958,3961,3964,3967,3970,4022,4029,4904,5021,5026,5031,5079,5084,5522,5544,5610,5617,5638,15975,15985,16008,16112,16114]},{"a":27,"l":"tmp_ptr_b_hi","c":"High byte of the scratch pointer $1A; draw_clock_hand's 2-bit pixel mask.","t":"byte","b":[73],"x":[3175,3239,3242,3247,3255,3260,3263,3281,3296,4031,4038,5017,5024,5029,5527,5619,5625,15981,15987,16118]},{"a":28,"l":"tmp_ptr_c","c":"Scratch: the blitter's bitmap source pointer (low byte, high $1D; $3E7D, from copy_frame_record); the first byte of unpack_figure_sprite's repeated row; a part pointer at $15FE; draw_clock_hand's byte offset in the clock area.","t":"byte","b":[3],"x":[3179,3203,3208,3216,3220,3224,3265,3269,3274,3824,3848,5630,15997,16102,16104]},{"a":29,"l":"tmp_ptr_c_hi","c":"High byte of the blitter's bitmap source pointer $1C; the second byte of unpack_figure_sprite's repeated row; draw_clock_hand's step temp.","t":"byte","b":[255],"x":[3193,3199,3228,3234,3829,3853,16108]},{"a":30,"l":"tmp_ptr_d","c":"Scratch: the blitter's bitmap destination pointer (low byte, high $1F; set by draw_object at $9727, stored through at $3E7F, moved on 320 bytes a row at $3ED5); the third byte of unpack_figure_sprite's repeated row; a part pointer at $15CF.","t":"byte","b":[0],"x":[3834,3858,5583,15999,16088,16090,38695]},{"a":31,"l":"tmp_ptr_d_hi","c":"High byte of the blitter's bitmap destination pointer $1E ($972C, $3EDE).","t":"byte","b":[106],"x":[16094,16096,38700]},{"a":32,"l":"zp_free_20","c":"$20-$27: no traced instruction of the game uses these bytes (the references once listed for $21-$27 were bytes of switch tables decoded as code); they hold the same loader values in every snapshot.","t":"byte","b":[0,0,64,8,179,189]},{"a":38,"c":"No genuine use found: the only reference is at $E3D4, inside the switch table after JSR $3F11 at $E3CA, decoded as code. 0 in every snapshot.","t":"byte","b":[0,0]},{"a":40,"l":"switch_ptr","c":"Pointer for the switch at $3F13: it pops the caller's return address (the last byte of the JSR) into $28/$29 and adds 2 x index + 1, then reads the handler address minus one from the inline table at ($28),1 and ($28),2 and pushes it.","t":"byte","b":[190],"x":[16151,16160,16170,16178,16182]},{"a":41,"l":"switch_ptr_hi","c":"High byte of the switch routine's table pointer $28.","t":"byte","b":[33],"x":[16154,16164,16174]},{"a":42,"l":"zp_cleared_2a","c":"Cleared by the cold start (it is in cold_clear_zp) and used by no other traced instruction.","t":"byte","b":[0]},{"a":43,"l":"frame_count","c":"Frame counter, low byte: the raster IRQ increments it every frame and carries into $2C and $2D. Also read alone: print_queued counts the text band down when it is 0 (every 256 frames), and $2E73 counts its timer when the low two bits are 0.","t":"byte","b":[3],"x":[2044,11891,47798]},{"a":44,"l":"idle_count_lo","c":"Middle byte of the frame counter ($2B, $2C, $2D), counting 256-frame units. The keyboard scan clears it and $2D whenever any key is down, so $2C/$2D measure the time since the last key press.","t":"byte","b":[24],"x":[1527,2048]},{"a":45,"l":"idle_count_hi","c":"High byte of the frame counter, one step per 65536 frames (about 22 minutes at 50 Hz); cleared by any key. From 10 up (about 3.6 hours without a key) the screen is blanked (set_screen_on), start_illness does nothing and the code at $30E3 changes activity $2B into activity $27 (as it also does when $30B4 is 0).","t":"byte","b":[0],"x":[1424,1529,2052,2961,12522]},{"a":46,"l":"joy_port1","c":"Control port 1 bits 0-4 from $DC01 (up, down, left, right, fire; 0 = pressed), stored by read_joysticks every main loop pass. No traced instruction reads it.","t":"byte","b":[31],"x":[1473]},{"a":47,"l":"joy_port2","c":"Control port 2 bits 0-4 from $DC00 (0 = pressed), stored by read_joysticks. No traced instruction reads it.","t":"byte","b":[31],"x":[1455]},{"a":48,"l":"key_new","c":"The new key for the game (ASCII, or a control code for CTRL with a letter), set by the keyboard scan; the code that takes it sets it back to 0 (the line editor at $3763, the CTRL-key handler $2B54); $37B9 reads it, and $BAD4 and the time prompt ($04FD) clear it.","t":"byte","b":[0],"x":[1277,1319,1667,11092,11098,11122,11133,11145,11156,11168,11186,11198,11204,11249,11255,11299,11305,11391,11397,14139,14171,14179,14265,47833]},{"a":49,"l":"key_last","c":"Copy of the last new key, stored with $30 by the keyboard scan and cleared at cold start. No traced instruction reads it.","t":"byte","b":[13],"x":[1279,1671]},{"a":50,"l":"key_scan_index","c":"Keyboard scan: index (0-63) of the lowest-numbered key found down that is not SHIFT, CTRL or ignored; $FF when none.","t":"byte","b":[255],"x":[1505,1583,1589]},{"a":51,"l":"key_held","c":"Keyboard scan: the key last taken, still held. The same key is ignored until a scan finds no key (or code $5C) and clears this, so holding a key does not repeat. Also read at $3378 inside a switch table, which is not a real use.","t":"byte","b":[0],"x":[1659,1669,1678]},{"a":52,"l":"temp_34","c":"Scratch byte: key index in the keyboard scan (63 down to 0), BCD accumulator in parse_bcd, prompt text index and $4800 fill pointer (low) in the cold start, item index when the main loop copies the parser result, and a counter in $5756.","t":"byte","b":[0],"x":[1188,1197,1284,1286,1296,1343,1355,1501,1531,1536,1556,1585,2227,2243,2245,2247,2249,2251,2253,2436,2461,2481,22417,22423,43811,43847]},{"a":53,"l":"temp_35","c":"Scratch byte: high byte of the cold start's fill pointer ($34/$35, $48-$4F), and a mask in $5756.","t":"byte","b":[80],"x":[1193,1202,22421,22429,22434,22442,22450,22458]},{"a":54,"l":"cold_figure_passes","c":"Cold start: counts the five calls of update_figure_sprites (4 down to -1).","t":"byte","b":[255],"x":[1241,1246]},{"a":55,"l":"zp_free_37","c":"$37-$3B: no traced instruction uses these bytes ($37 and $38 were listed only from switch tables or data decoded as code); constant $00 $A0 $B1 $57 $C9 in every snapshot.","t":"byte","b":[0,160,177,87,201]},{"a":60,"l":"irq_scratch_3c","c":"IRQ scratch: the largest sprite Y found so far (starts at 14); then the band bottom minus 21 for count_sprites_near_band; then the band_split_delays entry, whose bits 6 and 7 BIT tests for the extra cycles.","t":"byte","b":[246],"x":[1849,1854,1858,1990,2002,2019,2207]},{"a":61,"l":"irq_band_bottom","c":"IRQ: the band's bottom raster line ($0711, or $49), upper limit for count_sprites_near_band.","t":"byte","b":[73],"x":[1985,2203]},{"a":62,"l":"irq_sprite_count","c":"IRQ: the number of sprites near the band bottom returned by count_sprites_near_band, stored and reloaded as the index into band_split_delays.","t":"byte","b":[1],"x":[1995,1997]},{"a":63,"l":"irq_wait_line","c":"IRQ: the raster line the handler waits for before restoring $D016 and the cursor sprite (the band's bottom, $49 when $0711 is 0).","t":"byte","b":[73],"x":[1983,2007]},{"a":64,"l":"frame_flag","c":"Set to 1 by every raster interrupt ($080B). No traced instruction reads it.","t":"byte","b":[1],"x":[2059]},{"a":65,"l":"saved_d016","c":"IRQ: $D016 as it was when the interrupt came (multicolour on), written back at the band's bottom line.","t":"byte","b":[216],"x":[1845,2009]},{"a":66,"l":"save_d015","c":"cursor_sprite_save: $D015 (sprite enable).","t":"byte","b":[255],"x":[2111,2190]},{"a":67,"l":"save_spr_x","c":"cursor_sprite_save: X position of the borrowed sprite.","t":"byte","b":[128],"x":[2116,2185]},{"a":68,"l":"save_spr_y","c":"cursor_sprite_save: Y position of the borrowed sprite.","t":"byte","b":[246],"x":[2121,2180]},{"a":69,"l":"save_d010","c":"cursor_sprite_save: $D010 (sprite X high bits).","t":"byte","b":[240],"x":[2126,2175]},{"a":70,"l":"save_d01c","c":"cursor_sprite_save: $D01C (sprite multicolour).","t":"byte","b":[61],"x":[2131,2170]},{"a":71,"l":"save_spr_colour","c":"cursor_sprite_save: the borrowed sprite's colour register ($D027+n).","t":"byte","b":[241],"x":[2136,2165]},{"a":72,"l":"save_spr_pointer","c":"cursor_sprite_save: the borrowed sprite's pointer ($5FF8+n).","t":"byte","b":[32],"x":[2141,2160]},{"a":73,"l":"save_d01b","c":"cursor_sprite_save: $D01B (sprite priority).","t":"byte","b":[0],"x":[2146,2155]},{"a":74,"l":"zp_free_4a","c":"No traced instruction uses $4A; it holds $D0 in every snapshot.","t":"byte","b":[208]},{"a":75,"l":"sort_temp","c":"Scratch byte: in update_figure_sprites' depth sort ($103D-$1090) the index of the smallest key, a swap temporary, then the next free hardware sprite number; the water tank drawing loop $2D0D counts the tank level ($2B51) down in it; type_digit ($37D4) keeps a digit in it.","t":"byte","b":[8],"x":[4157,4168,4176,4181,4189,4197,4205,4217,4222,4227,4233,4238,4240,11536,11542,14292,14308]},{"a":76,"l":"activity_phase","c":"Activity phase: the index for the switches reached by JSR $3F11 inside each activity (84 sites), so it picks the handler for this pass. j_8F0B adds 1 (next phase); many handlers store a phase; cleared at cold start. The activity number itself is $8D9B.","t":"byte","b":[7],"x":[7855,8646,8653,9489,10358,10368,10378,10477,12228,12422,12540,13256,14365,14501,14592,16145,21371,21460,21833,36619,36841,37285,43864,43870,43872,49032,57377,57512,57546,57548,57617,57665,58347,58392]},{"a":77,"l":"snd_job_vec","c":"Jump vector of sound_dispatch ($396E): for each bit set in $478D it copies that job's address from sound_jobs here ($3987, high byte $398C) and jumps through JMP ($004D) at $3999. The routines that would set $478D ($39C1, $39F4, $39FA, $456F) have no traced callers, so it keeps the $57 the loader left in every snapshot.","t":"byte","b":[87],"x":[14727,14745]},{"a":78,"l":"snd_job_vec_hi","c":"High byte of sound_dispatch's job vector $4D, from sound_jobs' high half ($398C).","t":"byte","b":[165],"x":[14732]},{"a":79,"l":"tune_tmp","c":"Scratch word of the timer tune player (with $50): the jump vector for a tune command, JMP ($004F) at $4059 (set at $4045 from the command table $4072); also a branch target, the note byte in s_4243, the frequency step of vibrato and pitch slides ($4334, $4386, $43AD-$43EB) and the pointer to a tune's (register, value) list ($440F). $4F-$65 are cleared together by s_44E8.","t":"byte","b":[235],"x":[16453,16473,16529,16661,16685,16702,16707,16709,16818,16829,16833,16835,16851,16866,16868,16886,16963,16980,17030,17090,17092,17094,17204,17223,17286,17325,17330,17360,17365,17382,17387,17414,17423,17432]},{"a":80,"l":"tune_tmp_hi","c":"High byte of the tune player's scratch word $4F; in s_4243 the note byte's length nibble, 0 meaning the note does not wait ($425A, $426E).","t":"byte","b":[64],"x":[16459,16535,16666,16691,16715,16824,16841,16856,16872,16874,16890,16986,17006,17133,17149,17209,17229,17288,17332,17337,17370,17375,17392,17397,17419]},{"a":81,"l":"tune_sid_offset","c":"Added to each register number when a tune writes (register, value) pairs to the SID and its shadow at $7FCD ($4415): 0 from the entry at $43F8, the voice's SID offset $7FE8 from the entry at $43FE. $52 after it has no reference (only the $4F-$65 clear).","t":"byte","b":[0,0],"x":[17402,17409,17429]},{"a":83,"l":"tune_voice_rec","c":"$53-$5F: the current tune voice's 13-byte record, copied in from ($62) before the interpreter s_4022 runs and copied back after ($3F96-$3FAB); s_44A9 sets it up from the tune table $3A03. $53/$54 = where the voice's next tune bytes are: s_422C reads ($53),Y with Y from $7F40, and s_405C adds $7F40 to it after each event.","t":"byte","b":[1],"x":[16282,16293,16478,16483,16590,16683,16705,16731,16816,16831,16864,16888,16899,16946,17595,17631]},{"a":84,"l":"tune_voice_pos_hi","c":"Voice record byte 1: high byte of the tune position $53.","t":"byte","b":[59],"x":[16485,16489,16585,16687,16711,16726,16820,16837,16870,16892,16904,17601]},{"a":85,"l":"tune_note","c":"Voice record byte 2: the current note as a semitone number (0-95, an index into the frequency table at $46C9); each note byte adds a signed interval to it ($42D0), negated while flag bit 5 of $5F is set. Also reached as $55,x by the tune commands that set, push and pop registers ($415F-$417C).","t":"byte","b":[31],"x":[16738,16751,16764,17104,17106]},{"a":86,"l":"tune_length","c":"Voice record byte 3: the note length in units of 8 timer-A ticks, set by a note byte with a length nibble ($426A) and reused by nibble 6.","t":"byte","b":[22],"x":[17002,17004,17020]},{"a":87,"l":"tune_release_mult","c":"Voice record byte 4: articulation. The gate goes off when the countdown reaches $56 x $57 ($4275-$4284); 0 = no early release. Set to 2 by s_44A9.","t":"byte","b":[2],"x":[17013,17627]},{"a":88,"l":"tune_tempo","c":"Voice record byte 5: the CIA1 timer A high byte (a tick is $58 x 256 cycles), $3B from s_44A9 ($447A); the tempo command also copies it into the three voice records and $DC05.","t":"byte","b":[59],"x":[17532]},{"a":89,"l":"tune_reg4","c":"Voice record byte 6, tune register 4: only reachable through the indexed register commands ($55,x); no tune uses it.","t":"byte","b":[0]},{"a":90,"l":"tune_reg5","c":"Voice record byte 7, tune register 5: like $59, unused by the tunes.","t":"byte","b":[0]},{"a":91,"l":"tune_reg6","c":"Voice record byte 8, tune register 6: only the tune byte $E3 at $3CAD pops a finished loop count into it. (The STX $5B at $5B38 is switch-table data.)","t":"byte","b":[0]},{"a":92,"l":"tune_countdown","c":"Voice record byte 9: timer-A ticks until the voice's next event: length x 8 from a note ($4273), 1 from s_44A9. Timer A counts the record's copy down ($3F59) and runs the interpreter at 0.","t":"byte","b":[0],"x":[17011,17623]},{"a":93,"l":"tune_release_at","c":"Voice record byte 10: the countdown value at which the gate is released, $56 x $57 ($4284); compared at $3F62-$3F68 while flag bit 6 is set.","t":"byte","b":[44],"x":[17028]},{"a":94,"l":"tune_sp","c":"Voice record byte 11: index into the voice's 32-byte stack at ($60) of return addresses and loop counts (push $4235, pop $423C, loop count $420E, $40D1).","t":"byte","b":[0],"x":[16593,16595,16910,16949,16953,16956,16958]},{"a":95,"l":"tune_flags","c":"Voice record byte 12, flags: bit 7 voice active (tested at $3F4E, cleared by the end command $40F6), bit 6 early release (set by each note $424E, cleared for a tied note), bit 5 invert intervals, bit 3 call the vector at $7FF4 (always $44A8, an RTS), bit 2 slide up, bit 1 pitch slide ($431D), bit 0 vibrato ($4357). $C0 from s_44A9.","t":"byte","b":[64],"x":[16204,16222,16349,16361,16546,16549,16551,16554,16556,16630,16634,16974,16978,17069,17071,17088,17155,17619]},{"a":96,"l":"tune_stack_ptr","c":"Pointer to the current voice's stack, its record + 13 ($3F89-$3F94), used by the push, pop and loop commands.","t":"byte","b":[173],"x":[16270,16583,16588,16913,16918,16951,16960]},{"a":97,"l":"tune_stack_ptr_hi","c":"High byte of the voice stack pointer $60.","t":"byte","b":[127],"x":[16276]},{"a":98,"l":"tune_record_ptr","c":"Pointer to the current voice's 45-byte record in RAM: $7F46, $7F73 or $7FA0 ($3F7B, $44C9), from which $53-$5F are copied.","t":"byte","b":[160],"x":[16257,16265,16280,16296,17609,17634]},{"a":99,"l":"tune_record_ptr_hi","c":"High byte of the voice record pointer $62 ($7F).","t":"byte","b":[127],"x":[16263,16272,17615]},{"a":100,"l":"tune_vibrato_ptr","c":"Pointer to the vibrato shape table, $4353 (set at $443D; $00 $01 $03 $01), read at $436D with the counter AND 3.","t":"byte","b":[83],"x":[17261,17471]},{"a":101,"l":"tune_vibrato_ptr_hi","c":"High byte of the vibrato table pointer $64 ($43).","t":"byte","b":[67],"x":[17475]},{"a":102,"l":"letter_ptr","c":"Pointer to the next character of the letter being typed: set to $7F40 at $55A9, where the code at $55C4 assembles the letter from the pieces at $5600; read and advanced by s_5599.","t":"byte","b":[208],"x":[21915,21917,21931]},{"a":103,"l":"letter_ptr_hi","c":"High byte of the letter pointer $66 ($7F while a letter is typed; $02 in the snapshots, where no letter has been written).","t":"byte","b":[2],"x":[21921,21935]},{"a":104,"l":"activity_subphase","c":"Second switch index: JSR $3F0C switches on it (16 sites, for example $21B5, $229D-$23AD, $3375, $94CF). Set, cleared and incremented by the activity handlers; cleared at cold start.","t":"byte","b":[3],"x":[8624,8801,8806,9186,9191,9331,9336,9494,9517,9522,9987,9992,10003,10008,10029,10065,12542,12769,12852,12878,12883,12889,12900,12906,12934,12951,13167,13295,16140,36874,37290,38008,38320,43866,57520,57667]},{"a":105,"l":"head_turn_temp","c":"Head turning ($ACF3): scratch for the step between the head's current direction ($038F) and its target ($03F4); later the chosen new direction.","t":"byte","b":[1],"x":[44333,44340,44351,44359,44361,44378,44380,44385,44394,44401,44411,44418,44429,44436,44526,44544,44551,44556,44558,44570,44576,44628]},{"a":106,"l":"head_turn_temp2","c":"Head turning ($ACF3): scratch: the current direction (low three bits of $038F); later the chosen row, 0-2, for the new target.","t":"byte","b":[2],"x":[44344,44382,44603,44610,44614,44622,44624,44626]},{"a":107,"l":"mus_tmp0","c":"Music player ($B000) scratch: when a song starts, song x 2 and then the offset song x 6 + 2 x voice into the song table $D764 ($B27A-$B289); when the voices are output, the count of the 7 SID registers ($B4C4, $B4CE); in the note code the frequency low byte from $B641/$B661 shifted for the octave ($D04C-$D085).","t":"byte","b":[255],"x":[45690,45693,45696,45705,45782,46276,46286,53324,53354,53373,53381]},{"a":108,"l":"mus_channel","c":"Music player: channel x 2 (0-10: channels 0-2 are the first set, 3-5 the second), the X/Y of every stream command ($B287, $B56C, $B5B7); during output, SID voice x 2, counting 4, 2, 0 down to $FE ($B35C, $B4E8).","t":"byte","b":[254],"x":[45598,45703,45763,45784,45842,45916,45918,46146,46312,46314,46444,46519,53298,53395,53455,53471,53491,53596,53668,53717,53848,53941,54116,54166,54213,54249,54276,54294,54315,54390,54449,54478,54504,54515,54552,54569,54571]},{"a":109,"l":"mus_tmp1","c":"Music player scratch: count of the 5-byte instrument copy ($B320, $B32A); during output the chosen channel x 2 ($B360, $B42F, $B452); in the note code the frequency high byte ($D051-$D08A).","t":"byte","b":[0],"x":[45856,45866,45920,46127,46162,53329,53359,53371,53386]},{"a":110,"l":"mus_tmp2","c":"Music player scratch: the voice counter 2 to 0 when a song starts ($B285, $B2DE); the end offset of the chosen voice record during output ($B45A, $B4C0); the note byte in the note code ($D046, $D071); the low byte of a slide step in $D1CB.","t":"byte","b":[6],"x":[45701,45790,46170,46272,53318,53361,53731,53761,53767,53770,53773,53780,53786,53788,53801,53827]},{"a":111,"l":"mus_pass","c":"Music player frame loop: 0 while the first-set channel of voice $B018 is handled, 1 for its second-set channel ($B550, $B55B, $B563).","t":"byte","b":[1],"x":[46416,46423,46427,46435]},{"a":112,"l":"mus_rec","c":"Music player: offset (0, 7 ... 35) of the current channel's 7-byte SID record in the table at $B031 ($B5B5, $D091, $B4D7), the X of most stream commands.","t":"byte","b":[35],"x":[45638,46295,46517,46570,46609,53257,53308,53393,53426,53481,53663,53704,53715,53943,54225,54310,54461,54491]},{"a":113,"l":"mus_tmp3","c":"Music player scratch: during output the first-set record offset while the second set is checked ($B440, $B454); in a pitch slide the step's high byte ($D1EC-$D250).","t":"byte","b":[6],"x":[46144,46164,53740,53775,53815,53834,53840]},{"a":114,"l":"mus_filter_done","c":"Music player: cleared at $B358 and set to $FF once a set's filter and volume record ($B05B or $B062, to $D415-$D418) has been written this frame ($B490), so the other voices skip it ($B45C).","t":"byte","b":[0],"x":[45912,46172,46224]},{"a":115,"l":"mus_pattern","c":"Music player: a pattern address fetched from ($83) at $D570; the stream commands $04, $0A, $20 and $24 save a return address and load it into the channel's stream pointer ($D12A, $D4A6, $D3BA, $D50D). (The ADC $73,X at $AA72 is script data.)","t":"byte","b":[170],"x":[53546,54202,54438,54541,54640]},{"a":116,"l":"mus_pattern_hi","c":"High byte of the pattern address $73 ($D575).","t":"byte","b":[216],"x":[53550,54206,54442,54545,54645]},{"a":117,"l":"mus_stream_ptrs","c":"$75-$80: the six channels' 16-bit stream read pointers, indexed by channel x 2: set from the song table $D764 when a song starts ($B299, $B2A1), advanced per byte ($B314, $D000, $D09F), replaced by the jump, loop, call and return commands, and copied to $81/$82 for reading ($B5BB). Channels 3-5 ($7B-$80) play the piano pieces.","t":"byte","b":[161],"x":[45600,45632,45721,45844,46523,46555,53248,53300,53397,53407,53459,53473,53548,53575,53580,53585,53598,53653,53670,53698,54204,54218,54284,54357,54362,54367,54440,54454,54506,54543,54557,54649]},{"a":118,"l":"mus_stream_ptrs_hi","c":"High byte of channel 0's stream pointer; the other high bytes follow at $78, $7A, $7C, $7E and $80 (reached only by index).","t":"byte","b":[216,5,218,5,218,5,218,5],"x":[45604,45636,45729,45848,46527,46560,53252,53304,53401,53411,53464,53477,53533,53552,53572,53589,53602,53661,53674,53702,54192,54197,54208,54223,54289,54354,54371,54425,54444,54459,54510,54528,54547,54562]},{"a":126,"t":"byte","b":[218,5,218]},{"a":129,"l":"mus_read_ptr","c":"Music player: working copy of the current channel's stream pointer, read through ($81),Y ($B5BD, $B5C9, $D09D). The player's init also uses it to clear $B012-$B173 ($B1E6-$B204).","t":"byte","b":[5],"x":[45542,45550,45564,45566,45602,45608,45613,45619,45624,45630,45724,45758,46525,46537,53302,53399,53405,53439,53449,53457,53462,53475,53483,53560,53566,53570,53600,53606,53615,53648,53672,53678,53684,53689,54168,54174,54255,54278,54342,54348,54352,54480,54488,54567]},{"a":130,"l":"mus_read_ptr_hi","c":"High byte of the music player's read pointer $81.","t":"byte","b":[218],"x":[45546,45556,45570,45606,45617,45628,45634,45732,46529,53306,53403,53479,53604,53657,53659,53676,53696,53700,54287]},{"a":131,"l":"mus_pattab_ptr","c":"Music player: pointer to the pattern table used by $D527 ($D564): from $D831 for the first set (per channel, or shared when the operand's bit 7 is set), the piano piece's base + 6 for the second set (self-modified at $D53E-$D559); read at $D56E and $D573.","t":"byte","b":[245],"x":[54628,54638,54643]},{"a":132,"l":"mus_pattab_ptr_hi","c":"High byte of the pattern table pointer $83 ($D56A).","t":"byte","b":[216],"x":[54634]},{"a":133,"l":"mus_slide_up","c":"Music player pitch slide direction: 0 = step subtracted (down, $D1CB), 1 = added (up, $D1CF); read at $D221. $86 and $87 after it have no reference ($30 and $38 in every snapshot).","t":"byte","b":[0,48,56],"x":[53713,53793]},{"a":136,"l":"text_margin_lo","c":"Text: X of the start of a line (the left margin), low byte, from $BDC4 (3); the cursor goes back here on RETURN and cannot be moved left of it.","t":"byte","b":[3],"x":[48077,48081,48341,48345,48515]},{"a":137,"l":"text_margin_hi","c":"Text: X of the left margin, high byte.","t":"byte","b":[0],"x":[48071,48085,48335,48349,48522]},{"a":138,"l":"text_right_lo","c":"Text: right limit ($BDC6 - 6 = $0139), low byte, written by s_BD7E. No traced instruction reads it or $8B.","t":"byte","b":[57],"x":[48532]},{"a":139,"l":"text_right_hi","c":"Text: right limit, high byte. Written by s_BD7E only.","t":"byte","b":[1],"x":[48539]},{"a":140,"l":"text_cursor_x","c":"Text cursor X in pixels across the band, low byte (high byte $8D): advanced by each glyph's width, moved back on backspace and RETURN. The IRQ places the cursor sprite at this X + 13; $5756 reads it too.","t":"byte","b":[236],"x":[1897,22361,48056,48061,48075,48083,48089,48157,48199,48201,48299,48301,48339,48347,48360,48365,48517]},{"a":141,"l":"text_cursor_x_hi","c":"Text cursor X, high byte. While it is 1 (X of 256 or more) the line editor accepts only RETURN and DEL ($374B), and print_queued, while $54DF is set, turns a space (or a hyphen) into RETURN to break the line ($BA8C).","t":"byte","b":[0],"x":[1906,14155,22358,47756,48063,48069,48087,48168,48203,48207,48303,48307,48333,48351,48367,48371,48524]},{"a":142,"l":"text_top_row","c":"Text: pixel row of the top of the text line in the band, set to $0E by s_BD7E; added to each glyph's vertical offset.","t":"byte","b":[14],"x":[47996,48047,48543]},{"a":143,"c":"No genuine use found: the references at $582A and $E3D1 are bytes of the switch tables after JSR $3F11 at $5825 and $E3CA, decoded as code. Holds $58 in every snapshot.","t":"byte","b":[88]},{"a":144,"l":"glyph_width","c":"Text: the width in pixels of the glyph being printed (low nibble of its first byte; measured from the pixels for the second font), added to the cursor X.","t":"byte","b":[8],"x":[47910,47987,48006,48045,48059,48296]},{"a":145,"l":"glyph_row","c":"Text: the pixel row where the glyph starts: $8E plus the high nibble of the glyph's first byte (just $8E for the second font).","t":"byte","b":[14],"x":[47998,48049,48118,48142]},{"a":146,"l":"glyph_rows","c":"Text: the eight bytes of the glyph being printed, $92-$99 (for the first font byte 0 holds the width and offset, rows 1-7 the pixels), shifted right by the cursor's X AND 7; the bits shifted out go to $A2-$A9. Drawn with EOR, so printing the same glyph again erases it.","t":"byte","b":[1],"x":[47972,47983,47989,48012,48027,48099,48241]},{"a":147,"l":"glyph_row_1","c":"Text: glyph row 1 ($92 + 1), the first pixel row of a first-font glyph.","t":"byte","b":[0]},{"a":148,"l":"glyph_row_2","c":"Text: glyph row 2 ($92 + 2).","t":"byte","b":[0]},{"a":149,"l":"glyph_row_3","c":"Text: glyph row 3 ($92 + 3).","t":"byte","b":[0]},{"a":150,"l":"glyph_row_4","c":"Text: glyph row 4 ($92 + 4).","t":"byte","b":[31]},{"a":151,"l":"glyph_row_5","c":"Text: glyph row 5 ($92 + 5).","t":"byte","b":[18]},{"a":152,"l":"glyph_row_6","c":"Text: glyph row 6 ($92 + 6).","t":"byte","b":[18]},{"a":153,"l":"glyph_row_7","c":"Text: glyph row 7, the last ($92 + 7); also the start value when the second font's width is measured ($BB8A).","t":"byte","b":[18],"x":[48010]},{"a":154,"l":"zp_free_9a","c":"$9A-$A1: no traced instruction uses these bytes, which lie between the glyph rows ($92-$99) and the spill bytes ($A2-$A9). $A1 changed only before the game started (the KERNAL's jiffy clock, $A0-$A2, ran during the crack screen).","t":"byte","b":[3,0,0,0,0,0,0,21]},{"a":162,"l":"glyph_spill","c":"Text: the right-hand parts of the glyph rows, $A2-$A9, shifted out of $92-$99 when the cursor is not on a cell boundary; drawn into the next cell.","t":"byte","b":[0,0,0,0,192,64],"x":[47977,48101,48247]},{"a":168,"l":"glyph_spill_6","c":"Text: glyph spill row 6 ($A2 + 6).","t":"byte","b":[64]},{"a":169,"l":"glyph_spill_7","c":"Text: glyph spill row 7 ($A2 + 7).","t":"byte","b":[64]},{"a":170,"l":"zp_free_aa","c":"$AA-$B1: no traced instruction uses these bytes ($AA, $AE and $AF were listed only from switch tables decoded as code); constant in every snapshot.","t":"byte","b":[0,0,0,0,192,255,0,0]},{"a":178,"l":"text_cell_ptr","c":"Text: bitmap address of the glyph's first row in its left cell (low byte; high $B3), from the cursor X and the glyph row; moved to the next cell row when the glyph crosses one.","t":"byte","b":[94],"x":[48174,48219,48239,48243,48260,48265]},{"a":179,"l":"text_cell_ptr_hi","c":"Text: high byte of the left cell pointer $B2.","t":"byte","b":[99],"x":[48183,48267,48271]},{"a":180,"l":"text_cell2_ptr","c":"Text: bitmap address of the same row in the cell to the right ($B2 + 8), low byte; the spill bytes $A2-$A9 go here.","t":"byte","b":[102],"x":[48179,48245,48249,48273,48278]},{"a":181,"l":"text_cell2_ptr_hi","c":"Text: high byte of the right cell pointer $B4.","t":"byte","b":[99],"x":[48187,48280,48284]},{"a":182,"l":"glyph_font","c":"Text: font of the glyph being printed, bit 7 of the character: 0 = the font at $5000, 1 = the one at $5800 (glyph number EOR $20, all eight rows are pixels).","t":"byte","b":[0],"x":[47923,47928,47934,47953,48000,48232]},{"a":183,"l":"zp_free_b7","c":"No traced instruction uses $B7 (it was listed only from a switch table decoded as code); it holds $01.","t":"byte","b":[1]},{"a":184,"l":"text_char","c":"Text: the character being printed (print_char stores it; bit 7 is cleared before drawing). Codes below $20 are not drawn.","t":"byte","b":[109],"x":[47886,47890,47913,47925,48190]},{"a":185,"l":"scroll_dst","c":"Text scroll: destination pointer (low; high $BA) into the band's bitmap ($6000, $6140, $6280 for the three cell rows): each pass moves every row of each cell up one pixel.","t":"byte","b":[96],"x":[47896,47901,48392,48418,48421,48438,48453,48458]},{"a":186,"l":"scroll_dst_hi","c":"Text scroll: high byte of the destination pointer $B9.","t":"byte","b":[8],"x":[47903,47907,48402,48460,48464]},{"a":187,"l":"zp_free_bb","c":"No traced instruction uses $BB (listed only from a switch table decoded as code); it holds $FF.","t":"byte","b":[255]},{"a":188,"l":"text_ptr","c":"Text: pointer, low byte (high $BD): first the glyph in the font, then the bitmap address of the cell, then during a scroll the cell row below, whose top pixel row is pulled up.","t":"byte","b":[38],"x":[47959,47970,48112,48126,48131,48147,48149,48162,48164,48172,48397,48436,48440,48445]},{"a":189,"l":"text_ptr_hi","c":"Text: high byte of the pointer $BC.","t":"byte","b":[98],"x":[47942,47945,47948,47951,47961,47966,48116,48133,48137,48151,48155,48166,48170,48181,48407,48447,48451]},{"a":190,"l":"text_temp","c":"Text scratch: rows left in the current cell while drawing, the OR of the glyph rows when measuring the second font, and the cell row (0-2) during a scroll.","t":"byte","b":[2],"x":[48017,48035,48223,48228,48230,48252,48258,48385,48387,48430,48469,48471]},{"a":191,"l":"scroll_row_bytes","c":"Text scroll: how many bytes of each cell are moved up (8, 8, then 7 for the last cell row, from $BD7B).","t":"byte","b":[0],"x":[48412,48425]},{"a":192,"l":"zpa_C0","c":"Added, with carry set, to the scroll pointer $B9/$BA by the routine at $BB18, which no instruction or address pair in the image calls or points to. 0 in every snapshot.","t":"byte","b":[0],"x":[47899]},{"a":193,"l":"text_window","c":"Text window number, an index into the margin table $BDC4: set to 0 by $BA3A and only read by s_BD7E, so the band's single window (X 3 to $13F) is the only one used.","t":"byte","b":[0],"x":[47676,48510]},{"a":194,"l":"zp_free_c2","c":"$C2-$FF: no traced instruction of the game uses these bytes (the references listed for $CB-$FF come from switch tables decoded as code). They hold what the KERNAL and the crack left: the screen line table pattern $84-$87 at $D9-$F2, and values at $CC-$D6 and $F3-$FD that last changed while the crack handed over.","t":"byte","b":[160,1,8,64,0,0,3,0]},{"a":202,"t":"byte","b":[3,64,12,12,32,0,0,0]},{"a":210,"t":"byte","b":[4,0,0,39,0,46,0,132]},{"a":218,"t":"byte","b":[132,132,132,132,132,132]},{"a":224,"c":"No genuine use found: the only reference is at $E00A, inside the switch table after JSR $3F11 at $E003, decoded as code. Holds $85: $D9-$F2 still hold the KERNAL's screen line table pattern ($84-$87) from before the game started.","t":"byte","b":[133,133,133,133]},{"a":228,"c":"No genuine use found: the references at $E3CF and $E3DD are inside the switch table after JSR $3F11 at $E3CA, decoded as code. Holds $85, part of the KERNAL screen line table pattern left in $D9-$F2.","t":"byte","b":[133,133,134,134,134,134,134,134]},{"a":236,"t":"byte","b":[134,135,135,135]},{"a":240,"c":"No genuine use found: the only reference, $E3D6, is inside the switch table after JSR $3F11 at $E3CA, decoded as code. Holds $87, part of the KERNAL screen line table pattern left in $D9-$F2.","t":"byte","b":[135,135,135,0,216,0,0,0]},{"a":248,"t":"byte","b":[0,0,0,204,216,0,8]},{"a":255,"c":"No genuine use found: the only reference, $E3DA, is inside the switch table after JSR $3F11 at $E3CA, decoded as code. Holds $A2 in every snapshot.","t":"byte","b":[162]},{"a":256,"t":"gap","n":256},{"a":512,"l":"outq_in","c":"Text output queue, write index (0-31): queue_char ($BA50) stores a character at $0202 + index and advances it.","t":"byte","b":[8],"x":[1218,47696,47706,47715]},{"a":513,"l":"outq_out","c":"Text output queue, read index (0-31): print_queued ($BA5E) takes one character per main loop pass while it differs from $0200.","t":"byte","b":[8],"x":[47718,47739,47742,47745,47750]},{"a":514,"l":"outq_buffer","c":"Text output queue, 32 bytes $0202-$0221: characters waiting to be printed in the text band, one per main loop pass (the typed echo and the letters).","t":"byte","b":[49,48,58,48,48,32,97,109],"x":[47699,47753]},{"a":522,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":530,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":538,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":546,"l":"line_index","c":"Write index into the typed-line ring $0224 (0-127): the line editor $3731 stores each accepted key there and advances it, DEL steps back ($379F). The parser compares its own read index $C000 with it. The time prompt resets it to 0.","t":"byte","b":[0],"x":[1281,1306,1408,14196,14207,14242,14251,14254,14259,49216,49338,49393,49440]},{"a":547,"l":"line_last_base","c":"The typed-line ring minus one: the parser reads $0223,X with X = $0222 ($C048) to get the last character typed. When the index has just wrapped to 0 this reads $0223 itself (always 0) instead of $02A3.","t":"byte","b":[0],"x":[49224]},{"a":548,"l":"line_ring","c":"The typed line: a 128-byte ring, $0224-$02A3, of every key the line editor accepts (RETURN included), written at $0224 + $0222. The parser reads the words from it with its own index $C000; the time prompt parses the time from the start (parse_bcd). In the play snapshots $0277-$027E hold '10:00 AM', put into the KERNAL keyboard buffer by the emulator's typing, not by the game.","t":"byte","b":[49,48,58,48,48,32,97,109],"x":[1365,1385,2229,14204,14210,49346,49364]},{"a":556,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":564,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":572,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":580,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":588,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":596,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":604,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":612,"t":"gap","n":64},{"a":676,"l":"page2_unused_02a4","c":"$02A4-$02D3: 48 bytes after the typed-line ring that no traced instruction uses; zero in every snapshot (the cold start clears all of page 2).","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":684,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":692,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":700,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":708,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":716,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":724,"l":"move_floor","c":"Floor of the figure being moved, from its floor line $03AF,x by floor_of_y at $16DB: 0 top ($65), 1 middle ($A5), 2 ground ($E5), $80 between floors (on the stairs). Read at $1897, $18B4 and $19C0.","t":"byte","b":[2],"x":[5851,6295,6324,6592]},{"a":725,"l":"climb_floor_x2","c":"Per walking figure ($02D5 person, $02D6 dog): twice the floor the figure is climbing from, stored on each stair step while it is still on a floor line ($18BA); used as an index for the landing depth ($1BCB).","t":"byte","b":[0,2],"x":[6330,7115]},{"a":727,"l":"move_figure_no","c":"The figure move_figure is working on (0 person, 1 dog), stored at $16C4 and reloaded into X throughout the movement code.","t":"byte","b":[1],"x":[5828,5839,5854,5953,6025,6104,6212,6240,6267,6273,6333,6352,6381,6407,6455,6476,6577,6809,6824,7257]},{"a":728,"l":"move_temp","c":"Movement scratch: the stair direction $00/$80 handed to set_stair_state ($1865-$187E); the X nudge at a landing ($1C00-$1C18); the stair table index and signed X step ($1C38-$1C79).","t":"byte","b":[0,0,0,0],"x":[6245,6261,6264,6542,6553,7168,7178,7185,7192,7224,7232,7266,7279,7282,7289]},{"a":732,"l":"walk_alternate","c":"walk_step: toggled $00/$FF each step while the figure is 15 or more half-pixels from its target and not at depth 5, so X steps alternate with steps toward the walking lane at depth 5 ($1AD2, $1AD7).","t":"byte","b":[255],"x":[6866,6871]},{"a":733,"l":"move_tick","c":"Per walking figure ($02DD person, $02DE dog): pass counter, +1 each move_figure pass ($16D2). ANDed with the speed mask it decides which passes move ($18AE, $18E5, $18FC, $19AB); shifted, it gives the walking frame ($1DE6). Reset to the inverted mask by mstate_reset_timer ($171D, $1738).","t":"byte","b":[254,100],"x":[5842,5917,5930,5944,5970,6318,6373,6396,6571,7654,7680]},{"a":735,"l":"stair_steps","c":"Per walking figure ($02DF person, $02E0 dog): steps taken in the current part of a flight of stairs; zeroed at $18A3 and $1B55, counted at $1B32; a part ends after 28, 27, 26 or 25 steps (stair_part_steps). The low three bits index the stair animation tables ($1C3B).","t":"byte","b":[0,0],"x":[6307,6962,6965,6984,6997,7227]},{"a":737,"l":"stair_state","c":"Per walking figure ($02E1 person, $02E2 dog), set by set_stair_state: bit 7 = going down, bit 6 = second part of the flight (after the landing, $1C28); the low bits count every fourth step ($1B3C), which nothing reads. Bits 7-6 pick the part's length and animation tables.","t":"byte","b":[64,192],"x":[6290,6972,6975,7000,7005,7047,7106,7135,7155,7208,7216,7236,7311]},{"a":739,"l":"walk_frame_mask_tmp","c":"walk_anim ($1DDD) scratch: walk_frame_mask,x (7 person, 3 dog) shifted left with speed + 1 one-bits ($1DE3, $1DEB); only tested at $1DFD, in a tail that changes nothing.","t":"byte","b":[15],"x":[7651,7659,7677]},{"a":740,"l":"walk_frame_tmp","c":"walk_anim scratch: the pass counter shifted right by speed + 1 ($1DF1); AND walk_frame_mask,x it is the walking frame (0-7 person, 0-3 dog) given to figure_set_pose. The later read at $1E05 has no effect.","t":"byte","b":[19],"x":[7665,7685]},{"a":741,"l":"walk_dx","c":"walk_step: distance in half-pixels between the figure's reference X and its target's ($19F9-$1A0C); 0 = no X move, 15 or more = far mode; compared with $02E6 ($1A7A).","t":"byte","b":[0],"x":[6649,6659,6668,6778]},{"a":742,"l":"walk_ddepth","c":"walk_step: distance in depth to the target ($19EF), or to depth 5 in far mode ($1ACF).","t":"byte","b":[1],"x":[6639,6786,6863]},{"a":743,"l":"walk_dx_sign","c":"walk_step: $FF when the target is to the right (move right), 0 when to the left ($19FC-$1A00); flipped at $1A45 after a turn; read at $1A11 (facing check) and $1AB3 (walk_right or walk_left).","t":"byte","b":[0],"x":[6656,6673,6713,6720,6725,6835]},{"a":744,"l":"walk_ddepth_sign","c":"walk_step: signed depth minus target depth ($19E6), or depth minus 5 ($1AC6); negative means step deeper (+1), otherwise nearer (-1) ($1A8B).","t":"byte","b":[255],"x":[6630,6795,6854]},{"a":745,"l":"saved_y_1e2e","c":"location_x_of ($1E2E) keeps Y here and puts it back on return ($1E49).","t":"byte","b":[32],"x":[7726,7753]},{"a":746,"l":"act_anim_count","c":"Counter in the activity handlers at $21D3-$21FB: cleared at $21E7, incremented each pass at $21EE; every eighth pass counts $21ED down.","t":"byte","b":[154],"x":[8679,8686,8689]},{"a":747,"l":"act_wait_steps","c":"Activity at $2F18: steps to wait before the next phase (1, 4, or a random 64-127 at $2FAE); counted down every fourth pass by $2FB5, and the phase advances when it is 0.","t":"byte","b":[0],"x":[12142,12206,12223,12231,12256]},{"a":748,"l":"act_wait_pass","c":"Activity at $2F18: pass counter, incremented at $2FB5; $02EB is counted when its low two bits are 0.","t":"byte","b":[56],"x":[12213,12216]},{"a":749,"l":"snd_unused_02ed","c":"Cleared with $478D by $3953 (j_394E, reached through $800F) and by the cold start's page 2 clear; nothing reads it.","t":"byte","b":[0],"x":[14675]},{"a":750,"l":"snd_job_index","c":"sound_dispatch's job index: $FF at $3970, incremented for each bit at $3979, used as X at $3981.","t":"byte","b":[0],"x":[14704,14713,14721]},{"a":751,"l":"snd_job_mask","c":"sound_dispatch's copy of the job bits $478D ($3976), shifted right per job ($397C); the loop ends when it is 0 ($3991).","t":"byte","b":[0],"x":[14710,14716,14737]},{"a":752,"l":"shift_rng_seed","c":"Seed of a shift and exclusive-or random routine at $3E44-$3E59 (with $02F1). Nothing calls that routine; 0 in every snapshot.","t":"byte","b":[0],"x":[15940,15952,15958]},{"a":753,"l":"shift_rng_seed_hi","c":"Second byte of the $3E44 routine's seed ($3E4C, $3E53); that routine has no caller.","t":"byte","b":[0],"x":[15948,15955]},{"a":754,"l":"filter_sweep","c":"Incremented and written to the SID filter ($D416) and its shadow $7FE3 by $3A99-$3AA5, which nothing calls.","t":"byte","b":[0],"x":[15001,15004]},{"a":755,"l":"mul_count","c":"Multiplier of a shift-and-add loop at $3E5A-$3E78 ($18/$19 plus $1A/$1B times it), which nothing calls. $02F4-$02FB after it are not referenced anywhere (only the cold start's page 2 clear).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[15962,15967]},{"a":763,"t":"byte","b":[0]},{"a":764,"l":"blit_row_bytes","c":"Bitmap block copier $3EA6/$3E79: bitmap bytes per row, the width in cells x 8 ($3EB3).","t":"byte","b":[24],"x":[15993,16051,16098]},{"a":765,"l":"blit_saved_a","c":"Bitmap block copier: the caller's A, kept at $3EA6 and handed back in A on return ($3E9C, $3F08).","t":"byte","b":[4],"x":[16028,16038,16136]},{"a":766,"l":"blit_width","c":"Bitmap block copier: the width in cells (the caller's Y): colour bytes per row, and the step for the colour sources; returned in Y.","t":"byte","b":[3],"x":[16004,16016,16031,16044,16130]},{"a":767,"l":"blit_saved_x","c":"Bitmap block copier: the caller's X (draw_rows' row count), kept at $3EA9 and returned in X.","t":"byte","b":[0,139,227,131,164,124,165,26],"x":[16034,16041,16133]},{"a":775,"t":"byte","b":[167,228,167,134,174,0,0,0]},{"a":783,"t":"byte","b":[0,76,72,178,0]},{"a":788,"l":"irq_vector","c":"KERNAL-style IRQ vector: $0713 (irq_handler), set by the cold start from $0927; irq_shim jumps through it. The music player's init reads it at $B206. The next word, $0316, the KERNAL's BRK vector, still holds $FE66: the cold start skips it and the game's IRQ entry never reads it.","t":"word","b":[19],"d":[],"x":[1093,2096,45574]},{"a":789,"l":"irq_vector_hi","c":"High byte of the IRQ vector $0314 ($07).","t":"word","b":[7,102,254],"d":[26119],"x":[45580]},{"a":792,"l":"nmi_vector","c":"KERNAL-style NMI vector: $082A (nmi_rti), set by the cold start; nmi_shim jumps through it.","t":"word","b":[42,8],"d":[2090],"x":[2099]},{"a":794,"t":"gap","n":38},{"a":832,"l":"reset_jumps","c":"Jump table, the first bytes of the block the crack copies here from $4B40 before jumping to $0340; the RESET vector $FFFC (set by the cold start from $46BD) also points here. $0340 JMP cold_start, $0343 JMP $195E (the random number generator), $0346 LDA $035F / RTS (the mood). The parser code at $C040-$C233 calls the main program only through the last two ($C064, $C074); otherwise it only reads the typed line ($0222-$02A3).","t":"code","b":[76,52,4],"m":"jmp","o":"cold_start","oa":1076,"x":[18111,65532]},{"a":835,"l":"jt_random","c":"Jump table entry 2: JMP $195E, the random number generator (new value in A, state in $0414-$0417). The parser module at $C000 calls it here ($C074) rather than directly.","t":"code","b":[76,94,25],"m":"jmp","o":"random","oa":6494,"x":[49268]},{"a":838,"l":"jt_get_mood","c":"Jump table entry 3: returns the mood $035F in A (0, 1 or 2). Called by the parser at $C064, which adds 3, 1 or 0 for moods 0, 1, 2 (table $C0AE) to the score that decides whether a request is carried out.","t":"code","b":[173,95,3],"m":"lda","o":"mood","oa":863,"x":[49252]},{"a":841,"t":"code","b":[96],"m":"rts"},{"a":842,"l":"person_facing_bit","c":"Bit 7 becomes the person's facing flag $039A in the handler at $5484 (a phase of the activity switched at $52DB). $FF in the image. First of the constants in this page that no code changes ($034A-$035A, $0369, $036C, $036D, $036F, $0372, $0375); the crack brought $0340-$03FF over from $4B40, so they are this copy's settings.","t":"byte","b":[255],"x":[21636]},{"a":843,"l":"colour_pair_pref","c":"Colour pair used by $B9BE for the person when the random number (AND $1F) is 16 or more; below 16 the random number itself is used. Indexes the pairs at $BA0E (body colour $1393, sprite multicolour 0 $D025). 3 in the image.","t":"byte","b":[3],"x":[47559]},{"a":844,"l":"colour_pref_2","c":"Colour index used by the handler at $B9F5 (switch at $AC5C) when its random number (AND $0F) is 8 or more: picks $D025 and $1393 from the table at $BA2E. 3 in the image.","t":"byte","b":[3],"x":[47614]},{"a":845,"l":"late_hour","c":"House hour (0-23) at which daily_schedule reaches its last step and asks for the evening list ($035C = $41): 23 in the image.","t":"byte","b":[23],"x":[3156]},{"a":846,"l":"alarm_hour","c":"House hour at which daily_schedule rings the alarm clock (step 0, tick 0) and at which step 3 returns to step 1: 3 in the image.","t":"byte","b":[3],"x":[3012,3122]},{"a":847,"l":"alarm_tick","c":"Tick of the alarm hour (0-11, five house minutes each) at which the ringing alarm starts the morning list ($035C = $81): 2 in the image.","t":"byte","b":[2],"x":[3046]},{"a":848,"l":"routine_style","c":"Index 0-7 into three eight-entry tables at $E2FF, $E307 and $E30F, one per schedule step, that tell the activity chooser where to pick the next activity: 0 = by weekday (day 5 from the list at $E399, day 6 from $E367, other days from $E345), bit 7 set = from $E399, other values = from $E367. 4 in the image; nothing writes it.","t":"byte","b":[4],"x":[58096]},{"a":849,"l":"morning_list_len","c":"Number of entries in morning_list ($0352): 3.","t":"byte","b":[3],"x":[58035]},{"a":850,"l":"morning_list","c":"Activity numbers the chooser runs in turn after the alarm ($035C = $81): $6C, $4B, $0B (two spare bytes follow). The index is $035B.","t":"byte","b":[108,75,11,0,0],"x":[58040]},{"a":855,"l":"evening_list_len","c":"Number of entries in evening_list ($0358): 1.","t":"byte","b":[1],"x":[58059]},{"a":856,"l":"evening_list","c":"Activity numbers the chooser runs in turn at the late hour ($035C = $41): $6E (two spare bytes follow). When they are done the chooser sets schedule step 0 and clears the alarm flag $2B50.","t":"byte","b":[110,0,0],"x":[58064]},{"a":859,"l":"list_index","c":"Activity chooser: index into morning_list or evening_list; set to $FF when bit 0 of $035C asks for a restart, advanced before each entry.","t":"byte","b":[0],"x":[58019,58029,58032,58053,58056]},{"a":860,"l":"list_request","c":"Request from daily_schedule to the activity chooser ($E293): $81 = run morning_list from the start, $41 = run evening_list from the start (bit 0 = restart the index), 0 = none. Cleared by the chooser when a list is done and by daily_schedule at the alarm hour.","t":"byte","b":[0],"x":[3056,3105,3117,3136,58003,58009,58014,58022,58047,58077]},{"a":861,"l":"schedule_step","c":"daily_schedule step, 0-3: 0 until the alarm (the chooser sets 0 after evening_list), then 1, 2 and 3 at six-hour steps. The activity chooser dispatches on it at $E2E3 and also tests it with the illness level at $E235.","t":"byte","b":[1],"x":[3002,3100,3132,57909,57998,58074,58083]},{"a":862,"l":"schedule_next_hour","c":"House hour (0-23) at which daily_schedule takes its next step: six hours on (schedule_in_6_hours) or $034D (schedule_at_late_hour).","t":"byte","b":[6],"x":[3077,3092,3110,3152]},{"a":863,"l":"mood","c":"The mood, 0-2, drawn on his face: head frames below $18 get +0, +$0F or +$1E (head_mood_offsets). house_clock moves it along 1, 0, 1, 2 every two days; while the illness level $0365 is 2 or more it is held at 2; CTRL P (petting) sets 0 at $2C39 when the person is not moving ($03BC) and the check s_2DE4 with X = $2B passes. The parser adds 3, 1 or 0 for moods 0, 1, 2 to a request's score ($C064 through jt_get_mood), so mood 0 is the happiest.","t":"byte","b":[1],"x":[838,2678,2687,2690,2704,2707,2887,3697,11321]},{"a":864,"l":"mood_days","c":"Days each mood lasts before house_clock moves it on, indexed by the mood: 2, 2, 2.","t":"byte","b":[2,2,2],"x":[2710]},{"a":867,"l":"mood_days_left","c":"Days left before the mood $035F changes (reloaded from mood_days).","t":"byte","b":[2],"x":[2668,2713]},{"a":868,"l":"mood_direction","c":"Direction of the mood cycle: bit 7 clear = going down (towards 0), set = going up; flipped at the ends of 0-2, where the mood jumps back to 1.","t":"byte","b":[0],"x":[2673,2699]},{"a":869,"l":"illness_level","c":"Illness level 0-4 (0 = well). start_illness sets 1 (and sprite multicolour 1, $D026, to green 5); while $0367 is set it rises one level every 12 ticks, otherwise it falls one level per tick, and at 0 $D026 goes back to $0A. Level 2 or more holds the mood at 2. Read by the movement code at $170E and by the activity chooser at $E232.","t":"byte","b":[0],"x":[2876,2932,2939,2949,2968,2973,5902,57906]},{"a":870,"l":"illness_timer","c":"Ticks until the illness level changes: 12 while getting worse, 1 while recovering.","t":"byte","b":[2],"x":[2905,2914,2917,2929,2946,2978]},{"a":871,"l":"illness_worsening","c":"1 while the illness gets worse (set by start_illness); cleared by $392F once both the food and water levels ($0371, $036E) are below 3, after which the illness recovers.","t":"byte","b":[0],"x":[2900,2922,2988,14666]},{"a":872,"l":"act_flag_0368","c":"Flag used by the activity code: set to 0 at $33CF or $FF at $33DF (handlers of the switch at $338C) and read as an index at $3404-$3444. While non-zero the activity chooser picks activity $1F ($E22D, $E250) and turns requests other than $2E into $1F, keeping the request in $E127 ($E389).","t":"byte","b":[0],"x":[13263,13279,13316,13340,13360,13380,57901,57918,57936,58249]},{"a":873,"l":"trait_byte","c":"Constant $2D from the image, a personality byte. Bits 0-2 pick an AND mask (tables at $20DC and $96C5) for random draws, and bit 7 decides whether a draw passes on a non-zero or a zero result: the in-bed states ($206E-$20CF), the choices at $9491-$94BA, the value stored to $47AB at $930D-$9324 (table $932F). At $E1AA bit 7 also stops the chooser from queueing activity $79. The next two bytes ($22, $02) are not read by any traced instruction.","t":"byte","b":[45,34,2],"x":[8302,8315,8386,8399,37645,37650,38033,38045,38062,38074,57770]},{"a":876,"l":"noon_act_hour","c":"House hour (12) at which the activity chooser runs activity $4C once a day ($E25C, flag $E26F).","t":"byte","b":[12],"x":[57948]},{"a":877,"l":"act_1_hour","c":"House hour (17) at which the activity chooser runs activity $01 once a day ($E276, flag $E28A).","t":"byte","b":[17],"x":[57974]},{"a":878,"l":"water_need","c":"Water need level 0-3: house_clock raises it each time water_timer ($0370) runs out, and a rise from 2 or more holds it at 3 and calls start_illness. The activity chooser picks activity $1D (29, a drink of water, $37EA) at level 1 now and then (random), at 2 or more when the tank $2B51 has water or once when water_timer is 2; $33A6 does the same. Reset to 0 at $38C5, where the timer is also reloaded.","t":"byte","b":[0],"x":[2834,2837,2846,13222,14533,14657,57798]},{"a":879,"l":"water_period","c":"Ticks per water need level: 15 (reloads $0370).","t":"byte","b":[15],"x":[2828,14536]},{"a":880,"l":"water_timer","c":"Ticks until the water need level $036E rises; counted down every tick, and by the chooser at $E1DB when it is 2 and the tank is empty.","t":"byte","b":[34],"x":[2596,2823,2831,14539,57812,57819]},{"a":881,"l":"food_need","c":"Food need level 0-3: house_clock raises it each time food_timer ($0373) runs out, and a rise from 2 or more holds it at 3 and calls start_illness. At 2 or more the handler at $308C can start activity $20 (32, whose handlers at $52D8 on reset this level at $5447); the activity chooser picks activity $4A at level 1 now and then, at 2 or more when $30B4 is non-zero or once when food_timer is 2. Reset to 0 at $5447, where the timer is reloaded.","t":"byte","b":[0],"x":[2805,2808,2817,12441,14650,21575,57842]},{"a":882,"l":"food_period","c":"Ticks per food need level: 20 (reloads $0373).","t":"byte","b":[20],"x":[2799,21578]},{"a":883,"l":"food_timer","c":"Ticks until the food need level $0371 rises; counted down every tick, and by the chooser at $E207 when it is 2 and $30B4 is 0.","t":"byte","b":[38],"x":[2593,2794,2802,21581,57856,57863]},{"a":884,"l":"act4_request","c":"Set to 1 by house_clock when the countdown $0376 runs out, 7 ticks after a food or water need reset ($392F). While it is set the activity chooser ($E21F) and $33AF start activity 4, whose script ($9076) runs activity 114 ($8ED2): that copies it into sound request 19 ($3573) and clears it.","t":"byte","b":[0],"x":[2611,13231,36562,36572,57887]},{"a":885,"l":"act4_delay","c":"Ticks loaded into $0376 by $392F, which the code resetting the food need ($5450) and the water need ($38CE) calls: 7.","t":"byte","b":[7],"x":[14644]},{"a":886,"l":"act4_countdown","c":"Ticks until $0374 is set: loaded from $0375 by $392F when it is 0, counted down by house_clock.","t":"byte","b":[0],"x":[2599,2604,14639,14647]},{"a":887,"l":"weekday","c":"Day counter: low three bits 0-6 are the day of the week (the chooser treats 5 and 6 specially at $E328); bit 3 alternates each week (values 0-6, then 8-14). 6 at the start.","t":"byte","b":[6],"x":[2641,2644,2653,2656,2665,58152]},{"a":888,"l":"days_elapsed","c":"Days passed since the start, counted by house_clock and held at 255.","t":"byte","b":[0],"x":[2716,2721]},{"a":889,"l":"house_hour","c":"Hour of the house day, 0-23, advanced every 12 ticks (about nine minutes at 50 Hz). 15 at the start. Drives daily_schedule and the chooser's timed activities. Not tied to the wall clock the player set.","t":"byte","b":[15],"x":[2626,2629,2638,2999,3015,3140,57945,57971]},{"a":890,"l":"house_tick","c":"Tick within the house hour, 0-11 (one tick = 2304 frames, 46 s at 50 Hz).","t":"byte","b":[2],"x":[2587,2614,2623,3020,3049]},{"a":891,"l":"pending_activity","c":"An activity request that also locks the keyboard (scan_keyboard does nothing while it is non-zero): activity 0, the chooser, takes it as the next activity ($E145) and clears it ($E14C). $7A in the image, so the first activity after the time prompt is $7A; while it is set the dog heads for the front door (location $2E) and gets no long waits ($17BB-$17E0), and $931D picks 2. The movement code also tests for $7B and $7C ($170A, $178F, $1793), but nothing stores those values.","t":"byte","b":[0],"x":[1479,5895,6028,6075,6107,37661,57669,57676]},{"a":892,"l":"head_turn_timer","c":"Countdown of the head turning at $ACF3: when it runs out the head's frame $038F steps one notch toward its target $03F4, and it is reloaded with 5-8 ($AD19), or 7-$FF once the target is reached ($ADBF); at 0 a new target near the body's direction is chosen and it is set to 1 ($AE5E). Also set to 1 at $1B26, $24B7, $2575 and $E107 and cleared at $24AB, $549E, $E094 and $E0E2.","t":"byte","b":[155,0,0,0,0],"x":[6950,9387,9399,9589,21662,44282,44288,44313,44479,44638,57492,57570,57607]},{"a":897,"l":"fig_clip","c":"Column clip per figure ($0381 body ... $0385 head), applied when the image is rebuilt (s_13AC from $0F94): bits 0-6 = how many 2-bit pixel columns (1-12) are blanked, bit 7 set = from the left, clear = from the right. The doorway code sets $81/$01/$00 ($3229, $32E4, $32EF) and moves it one column per half-pixel step ($32FC-$3354); saved and cleared at $1F2A-$1F4A. $0C (the whole body blanked) in the image.","t":"byte","b":[0,0],"x":[3988,7978,8010,8209,12843,13030,13041,13063,13077,13083,13086,13128]},{"a":899,"l":"fig_clip_prop_a","c":"Column clip of figure 2 (element 2 of fig_clip): only ever cleared ($1F4D).","t":"byte","b":[0,0],"x":[8013]},{"a":901,"l":"fig_clip_head","c":"Column clip of the head (element 4 of fig_clip): always written together with the body's $0381 ($1F50, $322E, $32E9, $32F4, $330A, $3321).","t":"byte","b":[0],"x":[8016,8212,12846,13033,13044,13066,13089]},{"a":902,"l":"fig_colour","c":"Colour of each figure's multicolour sprite ($0386 body ... $038A head): stored at each rebuild ($0FAB) from the address patched into the LDA at $0FA8 ($1393, $042D, $1394, $1395, $042E) and copied to the colour shadow at $1177. The cold start first copies the dog's colour into it ($04D4), which the first rebuild replaces.","t":"byte","b":[13,9,1,1],"x":[1236,4011,4471]},{"a":906,"l":"fig_colour_head","c":"The head's colour (element 4 of fig_colour), used as the colour of the person's second sprite ($1193).","t":"byte","b":[9],"x":[4499]},{"a":907,"l":"fig_frame","c":"Frame number of each figure ($038B body, $038C dog, $038D and $038E props, $038F head): the graphic is figure_frames[frame + figure_frame_base,x] ($0E41). Usually set through figure_set_pose ($1ADF), which asks for a rebuild. Body frames: 0-7 walking, 8 standing, $09-$17 stairs, $11 turning, higher values other poses.","t":"byte","b":[47,4],"x":[3649,4062,4097,6745,6879,6885,8286,8330,8556,8605,8729,8763,8813,9360,9373,9601,9623,9657,9666,9686,9729,10607,10642,11842,13502,21494,21499,21594,21674,22695,36823,37625,38209,38242,38272,38481]},{"a":909,"l":"fig_frame_prop_a","c":"Frame of figure 2, the object sprite, from the shared object frames: set by the activities, for example the carried item ($28F6), water spray $0B ($1F6C), a pen $0E-$10 ($5BC6), food $13/$14 ($5340, $54B4).","t":"byte","b":[0],"x":[8044,8456,9863,9881,9895,10486,10976,11262,12093,12150,12240,14395,21307,21312,21684,21862,23405,23494,44984,48943,48985,49115]},{"a":910,"l":"fig_frame_prop_b","c":"Frame of figure 3: only ever set to $15, at $53AA (activity 32).","t":"byte","b":[19],"x":[21418]},{"a":911,"l":"fig_frame_head","c":"Frame of the head (figure 4): bits 0-2 the direction it looks (0 at the viewer, 2 left, 4 away, 6 right; 1-3 drawn mirrored), bits 3-4 the tilt row ($00, $08, $10); frames $18-$1E are special faces. Stepped toward $03F4 by the head turning ($AD96); also set at $243B (nod and shake), $541B and $E0D5.","t":"byte","b":[17],"x":[9201,9275,9390,9410,9425,9455,9467,9503,9781,21526,21531,21599,21679,23408,44297,44316,44325,44335,44353,44368,44396,44413,44431,44438,44446,44462,57552,57557,57599]},{"a":912,"l":"body_direction","c":"The person's facing, 0-7, taken by figure_set_pose from the table $AE8D for his frame ((8 - d) AND 7 when not mirrored, $1AEC-$1B0C); when it changes, the direction bits of the head's target $03F4 are replaced and $037C is set to 1. Used by the head turning at $AE10 (table $AE65).","t":"byte","b":[2],"x":[6919,6924,6932,6942,44560,44566]},{"a":913,"l":"carrying","c":"$FF while the person carries something: unpack_figure_sprite then draws body frames 0-$18 from the arms-forward set (+$5D, and $21 as $6A). Set at $2915, $30C7, $3880, $390A and $AF2E; cleared at $1E9E, $1ED3, $2A06, $2F0C, $3183, $3823, $38AA, $5357 and $AA43; read at $95ED.","t":"byte","b":[0],"x":[3656,7838,7891,10517,10758,12044,12487,12675,14371,14464,14506,14602,21335,38381,43587,44846,44854]},{"a":914,"l":"unused_0392","c":"Written ($FF) once at $2677, while figure 2 is set up, and never read; $0394 may have been meant there (see $0396).","t":"byte","b":[0,0],"x":[9847]},{"a":916,"l":"prop_multicolour","c":"Non-zero = the object sprite is multicolour ($0394 figure 2, $0395 figure 3; read at $1248). Only ever stored as $FF or $83 ($1F5B, $2910, $2F5A, $387D, $54A2 and others).","t":"byte","b":[255],"x":[4680,8027,10512,12122,14461,21666,21896,23392,45022,49102]},{"a":917,"l":"prop_b_multicolour","c":"Figure 3's multicolour flag: $FF, stored at $539B only.","t":"byte","b":[255],"x":[21403]},{"a":918,"l":"fig_behind_bg","c":"Non-zero = the figure's sprites go behind the background picture ($D01B): $0396 all four of the person's ($11E3), $0397 the dog, $0398/$0399 figures 2 and 3. The person's is set to 9 at $5556 and cleared at $553B and $267C (the clear at $267C, next to the write of $0392, may have been meant for $0398).","t":"byte","b":[0],"x":[4579,9852,21819,21846]},{"a":919,"l":"dog_behind_bg","c":"The dog's behind-the-background flag: read at $1210, never written, so always 0.","t":"byte","b":[0],"x":[4624]},{"a":920,"l":"prop_behind_bg","c":"Figure 2's behind-the-background flag ($0399 is figure 3's, never written): set non-zero at $5580, 0 at $2906, $384A, $549B, $5590 and $AFE3; read through $1264.","t":"byte","b":[0,0],"x":[4708,10502,14410,21659,21888,21904,45027]},{"a":922,"l":"fig_mirror","c":"Facing of each figure ($039A body ... $039E head): 0 = the image as stored (facing right), non-zero = mirrored (facing left). unpack_figure_sprite mirrors the rows ($0F22 on). Walking sets 0 ($1907) or figure_face_left,x (8 person, 4 dog; $1937) through set_facing, which asks for a rebuild.","t":"byte","b":[8,4],"x":[3874,3930,6302,6438,6441,6678,6686,6691,6697,6731,6737,6756,6762,6896,7152,7260,7269,7742,8022,8504,8575,8580,8830,9612,9643,9671,9726,9810,9920,9925,10562,10570,10618,10688,12243,12563,14422,14430,21272,21641,22277,22725,23537,23540,36829,37741,37744,43275,43555,57474,57499,57579,57632,58413]},{"a":924,"l":"fig_mirror_prop_a","c":"Figure 2's facing: copied from the person's ($2655, $294D, $3859, $5BF4) or set to 0 ($1F53, $2FD6, $556B, $AFE6, $BFD8).","t":"byte","b":[0],"x":[8019,9813,10573,12246,14425,21867,45030,49112]},{"a":925,"l":"fig_mirror_prop_b","c":"Figure 3's facing: set to 0 at $5397 only.","t":"byte","b":[0],"x":[21399]},{"a":926,"l":"fig_mirror_head","c":"The head's facing: 8 when its direction is 1-3, else 0 (head turning, $AD99-$ADAB), or from the table at $2460 ($243E).","t":"byte","b":[8],"x":[9278,44443,44459]},{"a":927,"l":"move_speed","c":"Speed index of each walking figure ($039F person, $03A0 dog), set in movement state 0 ($1715): 1 normally, 2 for the person while ill ($0365) or when $037B is $7B. speed_mask turns it into the mask $1956[n] (1 or 3: a step every second or fourth pass, half that on the stairs); walk_anim uses it too.","t":"byte","b":[1,1,0,0],"x":[5909,6479,7645]},{"a":931,"l":"fig_x_half","c":"X / 2 of each figure ($03A3-$03A6), the unit of the location tables: recomputed by calc_half_x ($1E56) and at $5BE2. Read by location_x_of ($1E31, $1E46), $2DEF, the doorway code ($32A0-$333D) and the footsteps ($3519, $3531).","t":"byte","b":[55,17],"x":[7729,7750,7766,11759,12915,12960,12966,13052,13117,13593,13617,23522]},{"a":933,"l":"fig_x_half_prop_a","c":"Figure 2's X / 2: written at $2A0C and $5BE2, never read.","t":"byte","b":[90,0],"x":[10764]},{"a":935,"l":"fig_x","c":"X position of each figure, low byte ($03A7 body, $03A8 dog, $03A9 and $03AA props), in sprite units: walking moves it by 1 ($190F, $1940), the stairs and doorway code too; copied to the sprite shadow at $112A. The head has no entry: it is placed from the body.","t":"byte","b":[114,35],"x":[4394,6415,6464,6467,7075,7188,7195,7285,7292,7762,7966,7997,8197,8736,8742,9816,10583,10624,10702,12096,12153,13415,13418,14441,21713,23515,23518,49118]},{"a":937,"l":"fig_x_prop_a","c":"Figure 2's X, set by the activities near the person ($1F38, $265B, $29D1, $2F46, $2F7F, $386C, $54D4 and others).","t":"byte","b":[229],"x":[7992,9819,10705,12102,12159,14444,21716,21857,45008,49121]},{"a":938,"l":"fig_x_prop_b","c":"Figure 3's X: $80, stored at $538F only.","t":"byte","b":[128],"x":[21391]},{"a":939,"l":"fig_x_hi","c":"X bit 8 of each figure ($03AB-$03AE), non-zero for X of 256 or more. For the person and the dog the value is the bit of the figure's first hardware sprite ($03E3), flipped at $1914 and re-masked when the sprite changes ($10AB-$10B3); read for $D010 ($11EE, $121E, $1256) and by calc_half_x.","t":"byte","b":[0],"x":[4267,4275,4590,6420,6429,7757,7984,9834,10712,12162,14447,23507,23510,49124]},{"a":940,"l":"fig_x_hi_dog","c":"The dog's X bit 8, read at $121E for $D010.","t":"byte","b":[0],"x":[4638]},{"a":941,"l":"fig_x_hi_prop_a","c":"Figure 2's X bit 8: copied from the person's ($1F33, $266D, $2F85, $3872, $BFE7), computed as $80/0 ($29D5-$29E6) or cleared ($5498, $556E, $AFD6).","t":"byte","b":[0],"x":[4694,7987,9837,10709,10718,10726,12165,14450,21656,21870,45014,49127]},{"a":942,"l":"fig_x_hi_prop_b","c":"Figure 3's X bit 8: cleared at $5394 only.","t":"byte","b":[0],"x":[21396]},{"a":943,"l":"fig_floor_y","c":"Floor line of each figure ($03AF-$03B2): $65, $A5 or $E5 on the three floors, values in between on the stairs. The sprite's Y is this minus the depth $03B3 minus the frame offset $03B7 ($10FF-$110A). Locations take it from location_y ($1D36).","t":"byte","b":[101,229],"x":[4351,5845,6223,6254,6278,6583,7019,7062,7081,7094,7101,7126,7129,7142,7171,7198,7205,7295,7302,7711,8047,9822,10591,10630,10669,11751,12105,12168,12854,12894,12937,13582,14413,21476,21615,21700,23525,23528,49130]},{"a":945,"l":"fig_floor_y_prop_a","c":"Figure 2's floor line, set relative to the person's by the activities (for example $29B4).","t":"byte","b":[229],"x":[8050,9825,9858,10676,12108,12174,14419,21479,21484,21621,21703,21885,44993,49133]},{"a":946,"l":"fig_floor_y_prop_b","c":"Figure 3's floor line: $E5 (ground floor), stored at $53A0 only.","t":"byte","b":[255],"x":[21408]},{"a":947,"l":"fig_depth","c":"Depth into the room of each figure ($03B3-$03B6), about 2-15: a larger depth is further back, drawn higher on the screen and sorted behind (key depth x 8 + tie-break, $1021). Walking moves it by 1 ($1A93); locations take it from location_depth ($1DA4).","t":"byte","b":[10,8],"x":[4129,4355,6604,6623,6791,6803,6846,7068,7098,7122,7719,7972,8002,8203,9828,10599,10636,10679,11767,12111,12177,12923,12943,14453,21706,23531,23534,49136]},{"a":949,"l":"fig_depth_prop_a","c":"Figure 2's depth, usually the person's minus 1 to 5 so the object is drawn in front of him ($267F, $2F97, $54CE, $5B55).","t":"byte","b":[7],"x":[8005,9831,9855,10682,12117,12183,14456,21710,21880,23381,44998,49140]},{"a":950,"l":"fig_depth_prop_b","c":"Figure 3's depth: 9, stored at $53A5 only.","t":"byte","b":[9],"x":[21413]},{"a":951,"l":"fig_frame_dy","c":"Signed Y adjustment of each figure's current frame ($03B7-$03BB), read at each rebuild from the figure's table (pointers $12AD/$12B2: $14F1 body, $154E dog, $156C props, $156A head) by frame ($0FF7-$1009); a change sets bit 0 of the flags. Subtracted at $1107 for figures 0-3 only, so the head's value ($03BB) is never used.","t":"byte","b":[250,0,0,0,2],"x":[4102,4105,4359]},{"a":956,"l":"move_state","c":"Movement state of the person ($03BC) and the dog ($03BD), the index of move_figure's switch: 0 idle, 1 the dog between walks, 2 and 5 choose the route, 3 walk to the stairs, 4 on the stairs, 6 walk to the target. The activities set the person's to 2 to send him walking ($AB6F, $2FF9, $3923 and others) and wait for 0 ($535E, $554C, $8FA7, $9174, $95F2).","t":"byte","b":[0,1,0,0],"x":[5860,5924,6231,6363,10737,11307,12047,12281,13109,14627,21342,21836,36775,36886,36920,37236,37258,38386,38412,43887,44933,44974,57408]},{"a":960,"l":"move_target","c":"Target location of the person ($03C0) and the dog ($03C1), 0-$36, an index into location_y/location_x/location_depth: $00-$2F sixteen per floor, $30-$35 the stair ends, $36 a scratch location (set_custom_location). The dog's is drawn from dog_destinations ($17C5-$17E2); the person's is set by $AB63 and the activities, and saved and restored around a request ($8FEE, $8F61).","t":"byte","b":[54,32,0,0],"x":[6114,6215,6248,6580,7012,7036,7700,12269,14615,36705,36846,38342,43875,44928,44960,57396]},{"a":964,"l":"fig_flags","c":"Update flags of each figure ($03C4 body, $03C5 dog, $03C6 and $03C7 props, $03C8 head): bit 7 visible (sprite enable), bit 1 rebuild the image (update_figure_sprites does one figure per pass, highest number first), bit 2 image just rebuilt, bit 0 position, colour or pointer changed; bits 0 and 2 are cleared when the shadows are written ($10F5). move_figure waits while bits 0-1 are set ($16C7) and the activity dispatcher while any of bits 0-2 are ($8DBC).","t":"byte","b":[128],"x":[4052,4077,4084,4110,4115,4259,4264,4298,4303,4306,4313,4328,4338,4343,4565,5602,5831,6336,6341,6384,6389,6446,6451,6765,6770,6812,6817,6827,6832,6953,6958,7314,7319,8073,8087,8169,8224,8583,8588,8749,8754,10520,10525,10767,10772,13017,13092,13097,13421,13426,14467,14472,21504,21607,21692,36284,44490,44495,57482,57487]},{"a":965,"l":"fig_flags_dog","c":"The dog's flags (element 1 of fig_flags): bit 7 shows its two sprites ($11FF).","t":"byte","b":[128],"x":[4607]},{"a":966,"l":"fig_flags_prop_a","c":"Figure 2's flags: the activities show ($83, $82, $81) and hide ($00, $02) the object sprite here.","t":"byte","b":[0],"x":[4663,7841,7888,8055,8098,8191,8425,8459,8464,9150,9868,9886,10497,10557,10578,10662,10729,10734,10761,10971,12132,12188,12237,12474,12480,14374,14405,14487,14610,21317,21332,21489,21612,21689,21893,21907,23413,23436,23455,23499,43584,44857,45019,48948,48990,49042,49145]},{"a":967,"l":"fig_flags_prop_b","c":"Figure 3's flags: $83 at $53AF (shown), $00 at $5382 (hidden).","t":"byte","b":[128],"x":[21378,21423]},{"a":968,"l":"fig_flags_head","c":"The head's flags: bit 7 enables the person's second and fourth sprites ($11CA); when bit 2 is set (head rebuilt) the head's bits are cleared and the body's bit 0 set ($10BB-$10CF). The head turning ($ACF3) and $240F wait on bits 1-2.","t":"byte","b":[128],"x":[4283,4290,4295,4323,4554,8078,8090,8172,8229,9209,9231,9476,9481,13022,13100,13105,21536,21604,21697,23417,44275,44482,44487,57575,57612]},{"a":969,"l":"sort_key","c":"Depth sort workspace for figures 0-3 ($03C9-$03CC): depth x 8 + tie-break ($1021), sorted in place ($103B-$1073), then overwritten with each figure's new first hardware sprite ($1080) and compared with $03CD ($1097).","t":"byte","b":[4,1,0,3],"x":[4138,4160,4163,4170,4178,4183,4186,4191,4224,4247]},{"a":973,"l":"fig_hw_sprite","c":"First hardware sprite of each figure ($03CD body, $03CE dog, $03CF and $03D0 props): the person uses n to n+3 (body colour, head colour, then the two black outlines), the dog n and n+1, each object one. Updated at $109F (which asks for a refresh); indexes the shadow registers ($10FA, $114D) and the bit masks ($11C7, $1917).","t":"byte","b":[4],"x":[4250,4255,4346,4429,4551,6423]},{"a":974,"l":"fig_hw_sprite_dog","c":"The dog's first hardware sprite (element 1 of fig_hw_sprite), read at $1204.","t":"byte","b":[1],"x":[4612]},{"a":975,"l":"fig_hw_sprite_prop","c":"First hardware sprite of figure 2 ($03CF) and figure 3 ($03D0), read at $123C.","t":"byte","b":[0,3,1],"x":[4668]},{"a":978,"l":"sort_tiebreak","c":"Tie-break added to the depth sort key, 1, 2, 3, 4 for figures 0-3 ($1027), so at equal depth the lower figure number comes out in front.","t":"byte","b":[1,2,3,4],"x":[4135]},{"a":982,"l":"sort_order","c":"Figure numbers in depth order after the sort ($03D6-$03D9): position 3 the nearest ... 0 the furthest ($1030-$1073); hardware sprites are dealt from 0 starting with the nearest ($107B). $03DA after it, and the masks $FE, $FD ... $7F at $03DB-$03E2, are not read by any instruction.","t":"byte","b":[0,3,1,2,0,254,253,251],"x":[4147,4194,4199,4202,4207,4219]},{"a":990,"t":"byte","b":[247,239,223,191,127]},{"a":995,"l":"sprite_bit","c":"One bit per hardware sprite, $01, $02 ... $80 ($03E3-$03EA), used for $D010, $D015, $D01B and $D01C bits ($10B0, $122C, $1242-$126C, $191A). The four bytes after it, $00 $42 $2C $16, are not referenced.","t":"byte","b":[1,2,4,8,16,32,64,128],"x":[4272,4652,4674,4688,4702,4716,6426]},{"a":1003,"t":"gap","n":4},{"a":1007,"l":"outline_row","c":"s_12B7's current image row widened by one pixel to each side ($03EF-$03F1, $12E1-$1317), ORed with the rows above and below to make the outline sprite ($131F-$1328).","t":"byte","b":[0],"x":[4840,4884,4887,4895]},{"a":1008,"l":"outline_row_1","c":"Byte 1 of s_12B7's widened row ($12F2, $130A, $130D).","t":"byte","b":[0],"x":[4850,4874,4877]},{"a":1009,"l":"outline_row_2","c":"Byte 2 of s_12B7's widened row ($12FC-$1303). $03F2-$03F3 after it are not referenced.","t":"byte","b":[0,0,0],"x":[4860,4864,4867]},{"a":1012,"l":"head_target","c":"The frame the head turns toward (same form as $038F): chosen at random around the body's direction by the head turning ($ADD5-$AE59); its direction bits are replaced when the body turns ($1B19-$1B21); 8 = look at the viewer ($23F4, $24BF, $E0DD, $E102); $0F at $5B6A. $03F5-$03F7 after it are not referenced.","t":"byte","b":[17,0,0,0],"x":[6927,6937,6945,9204,9407,23402,44294,44328,44346,44365,44406,44465,44633,57565,57602]},{"a":1016,"l":"record_bytes_03f8","c":"Four bytes $01, $08, $31, $85 (they read as BCD) from the image, before the name at $03FC. No instruction, and no address pair anywhere in the image, refers to $03F5-$03FB.","t":"byte","b":[1,8,49,133]},{"a":1020,"l":"name_text","c":"ASCII 'Bill', the start of the name 'Billy Bob Binkle' that runs on to $040B, followed by zeros to $0413. Part of the $0340-$03FF block the crack copies from $4B40 (the rest comes back from $4C00 with $0400-$07FF). No instruction operand and no address pair in the image points into $03FC-$0413, so nothing traced reads or prints it; the letters are signed 'Your Friend'.","t":"byte","b":[66,105,108,108]},{"a":1024,"l":"name_text_cont","c":"ASCII 'y Bob Binkle', the rest of the name begun at $03FC, then eight zero bytes ($040C-$0413). Not referenced by any instruction or address pair in the image.","t":"byte","b":[121,32,66,111,98,32,66,105]},{"a":1032,"t":"byte","b":[110,107,108,101,0,0,0,0]},{"a":1040,"t":"byte","b":[0,0,0,0]},{"a":1044,"l":"rng_value","c":"Random number generator state (j_195E, jt_random): the last value returned in A. Many routines read it directly as a random byte (for example $17B0, $AD11, $BF66). In the image as loaded, $0414-$0417 hold the ASCII letters 'Zeke' (the crack's copy at $4C14), so those four letters are the generator's starting state; the first call (clock_start, from the cold start) overwrites them, and nothing reads them as text.","t":"byte","b":[60],"x":[6064,6511,6520,6526,6538,8058,9156,9507,11446,11506,11616,12201,22272,44305,44514,44939,48998,49016]},{"a":1045,"l":"rng_state","c":"Random number generator: second state byte, also read directly by the activity chooser as a second random value ($E1E7, $E213).","t":"byte","b":[163],"x":[6499,6502,6505,6515,6532,6535,57831,57875]},{"a":1046,"l":"rng_temp","c":"Random number generator: temporary copy of $0415.","t":"byte","b":[158],"x":[6508,6529]},{"a":1047,"l":"rng_calls","c":"Random number generator: incremented on every call; while bit 7 is set the caller's A and carry are added into $0415.","t":"byte","b":[244,0,0,0,0,0,0,0],"x":[6494,6523]},{"a":1055,"t":"byte","b":[0,0,0,0]},{"a":1059,"l":"script_ptr","c":"Pointer to the next entry of the current activity script, a zero-terminated list of activity numbers (for example $AA56, $8D99): $8F0E reads the next number into $8D9B and advances the pointer. Set at $3104, $33C1, $8FCF, $9193 and $AA4D.","t":"byte","b":[68],"x":[12548,13249,36625,36644,36801,36815,37267,43597]},{"a":1060,"l":"script_ptr_hi","c":"High byte of the activity script pointer $0423.","t":"byte","b":[145],"x":[12551,13252,36630,36649,36807,36820,37273,43600]},{"a":1061,"l":"keep_head_colour","c":"Non-zero (3 in the image): $B9BE leaves the head colour $042E as it is. At 0 it would pick a random one ($0B or $09, or $D025).","t":"byte","b":[3],"x":[47576]},{"a":1062,"l":"clock_seconds","c":"Real-time clock seconds, BCD 0-59, advanced once a second (every 50 frames) by $2E94 from the raster IRQ; each wrap flags a new minute in $09E9.","t":"byte","b":[32],"x":[11938,11952]},{"a":1063,"l":"clock_minutes","c":"Real-time clock minutes, BCD 0-59: set by the time prompt, advanced by $2E94. The wall clock's minute hand.","t":"byte","b":[2],"x":[1361,2758,2777,11958,11967]},{"a":1064,"l":"clock_hours","c":"Real-time clock hours, BCD 1-12 (0 is accepted at the prompt): set by the time prompt, advanced by $2E94. The wall clock's hour hand.","t":"byte","b":[16],"x":[1349,2755,11972,11976,11985]},{"a":1065,"l":"clock_pm","c":"0 for am, 1 for pm as typed at the prompt; $2E94 increments it at every 12 o'clock rather than toggling it. No traced instruction reads it.","t":"byte","b":[0,0],"x":[1400,11996]},{"a":1067,"l":"act_2ee1_count","c":"Counted up (held at 255) by the handler at $2EE1 (a phase of the activity switched at $2797). Nothing else reads it.","t":"byte","b":[4],"x":[12031,12036]},{"a":1068,"l":"act_2ee1_bits","c":"Eight flags filled one random bit at a time by the handler at $2EE1 until all are set ($FF). Nothing else reads it.","t":"byte","b":[89],"x":[12001,12016,12025,12028]},{"a":1069,"l":"dog_colour","c":"The dog's colour (9, brown): loaded for figure 1 through the self-modified LDA at $0FA8; the cold start also copies it to $0386.","t":"byte","b":[9],"x":[1233]},{"a":1070,"l":"head_colour","c":"Colour of the person's head sprite (figure 4, the upper sprite, whose lower rows hold the head), loaded through the self-modified LDA at $0FA8; $B9BE would randomise it if $0425 were 0. 9 in the image.","t":"byte","b":[9,0],"x":[4008,47597]},{"a":1072,"l":"frame_count_2","c":"Second frame counter, incremented by the raster IRQ; house_clock watches its bit 7 go back to 0, once every 256 frames.","t":"byte","b":[34,32],"x":[2054,2544]},{"a":1074,"l":"act_timer_running","c":"1 while the activity timer runs: set with $0433 = 104 by $2E87 (called at $2753) and cleared by $2E73 when $0433 runs out. Read by the activity code at $2469, $2768, $276E, $33D2.","t":"byte","b":[0],"x":[9321,10088,10094,11907,11913,13266]},{"a":1075,"l":"act_timer_count","c":"Activity timer count: counted down by $2E73 (main loop stage 7) on passes when the frame counter's low two bits are 0, so it lasts about 104 x 4 frames when the loop is quick.","t":"byte","b":[0],"x":[11897,11902,11918]},{"a":1076,"l":"cold_start","c":"Cold start, reached from reset_jumps at $0340 (the crack jumps there; $FFFC also points there). Stack to $FF; copies the six hardware vectors $FFFA-$FFFF from $46BD and the IRQ and NMI vectors $0314/$0318 from $0927; stops the CIA timers and masks all CIA interrupts; VIC bank 1 ($DD00); $01 = x5 (I/O in, ROMs out) and $00 = $2F; VIC registers $D000-$D02E from vic_init_values ($06E1); enables the raster interrupt at line $28. Also sets $DD03 = 0 and the SID volume to 0. Clears $4800-$4FFF (where the crack screen was; the figures' sprite images are unpacked there, blocks $20-$3F), the nine zero-page bytes listed at $08D3 and page 2 ($0200-$02FF). Then $3713 (clears the sound state and the SID voices, then the music player init $B000), clock_start, $B9BE (random colours for the person; its exit through $8F0B leaves the activity phase $4C at 1), copies $042D to $0386, builds the figures five times (update_figure_sprites), sets bitmap mode ($D011=$3B, $D018=$78, $D016=$D8, $D026=$0A) and falls into the time-of-day prompt at $04F8.","t":"code","b":[120],"m":"sei","x":[832]},{"a":1077,"t":"code","b":[162,255],"m":"ldx","o":"#$FF"},{"a":1079,"t":"code","b":[154],"m":"txs"},{"a":1080,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":1082,"l":"b_043A","t":"code","b":[189,189,70],"m":"lda","o":"hw_vectors,x","oa":18109,"x":[1097]},{"a":1085,"t":"code","b":[157,250,255],"m":"sta","o":"vec_nmi,x","oa":65530},{"a":1088,"t":"code","b":[189,39,9],"m":"lda","o":"irq_vector_init,x","oa":2343},{"a":1091,"t":"code","b":[240,3],"m":"beq","o":"b_0448","oa":1096},{"a":1093,"t":"code","b":[157,20,3],"m":"sta","o":"irq_vector,x","oa":788},{"a":1096,"l":"b_0448","t":"code","b":[202],"m":"dex","x":[1091]},{"a":1097,"t":"code","b":[16,239],"m":"bpl","o":"b_043A","oa":1082},{"a":1099,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":1101,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":1104,"t":"code","b":[141,14,221],"m":"sta","o":"cia2_control_a"},{"a":1107,"t":"code","b":[141,15,220],"m":"sta","o":"cia1_control_b"},{"a":1110,"t":"code","b":[141,15,221],"m":"sta","o":"cia2_control_b"},{"a":1113,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":1115,"t":"code","b":[141,13,220],"m":"sta","o":"cia1_interrupt"},{"a":1118,"t":"code","b":[141,13,221],"m":"sta","o":"cia2_interrupt"},{"a":1121,"t":"code","b":[173,13,220],"m":"lda","o":"cia1_interrupt"},{"a":1124,"t":"code","b":[173,13,221],"m":"lda","o":"cia2_interrupt"},{"a":1127,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":1129,"t":"code","b":[142,3,221],"m":"stx","o":"cia2_ddr_b"},{"a":1132,"t":"code","b":[142,24,212],"m":"stx","o":"sid_filter_mode_volume"},{"a":1135,"t":"code","b":[173,0,221],"m":"lda","o":"cia2_port_a"},{"a":1138,"t":"code","b":[41,252],"m":"and","o":"#$FC"},{"a":1140,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":1142,"t":"code","b":[141,0,221],"m":"sta","o":"cia2_port_a"},{"a":1145,"t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1},{"a":1147,"t":"code","b":[41,248],"m":"and","o":"#$F8"},{"a":1149,"t":"code","b":[9,5],"m":"ora","o":"#$05"},{"a":1151,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":1153,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":1155,"t":"code","b":[133,0],"m":"sta","o":"cpu_ddr","oa":0},{"a":1157,"t":"code","b":[162,46],"m":"ldx","o":"#$2E"},{"a":1159,"l":"b_0487","t":"code","b":[189,225,6],"m":"lda","o":"vic_init_values,x","oa":1761,"x":[1166]},{"a":1162,"t":"code","b":[157,0,208],"m":"sta","o":"vic_sprite0_x,x"},{"a":1165,"t":"code","b":[202],"m":"dex"},{"a":1166,"t":"code","b":[16,247],"m":"bpl","o":"b_0487","oa":1159},{"a":1168,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":1170,"t":"code","b":[141,25,208],"m":"sta","o":"vic_irq_status"},{"a":1173,"t":"code","b":[141,26,208],"m":"sta","o":"vic_irq_enable"},{"a":1176,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":1178,"l":"b_049A","t":"code","b":[205,18,208],"m":"cmp","o":"vic_raster","x":[1181]},{"a":1181,"t":"code","b":[208,251],"m":"bne","o":"b_049A","oa":1178},{"a":1183,"t":"code","b":[141,18,208],"m":"sta","o":"vic_raster"},{"a":1186,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":1188,"t":"code","b":[133,52],"m":"sta","o":"temp_34","oa":52},{"a":1190,"t":"code","b":[168],"m":"tay"},{"a":1191,"t":"code","b":[162,72],"m":"ldx","o":"#$48"},{"a":1193,"t":"code","b":[134,53],"m":"stx","o":"temp_35","oa":53},{"a":1195,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":1197,"l":"b_04AD","t":"code","b":[145,52],"m":"sta","o":"(temp_34),y","oa":52,"x":[1200,1205]},{"a":1199,"t":"code","b":[200],"m":"iny"},{"a":1200,"t":"code","b":[208,251],"m":"bne","o":"b_04AD","oa":1197},{"a":1202,"t":"code","b":[230,53],"m":"inc","o":"temp_35","oa":53},{"a":1204,"t":"code","b":[202],"m":"dex"},{"a":1205,"t":"code","b":[208,246],"m":"bne","o":"b_04AD","oa":1197},{"a":1207,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":1209,"l":"b_04B9","t":"code","b":[190,211,8],"m":"ldx","o":"cold_clear_zp,y","oa":2259,"x":[1215]},{"a":1212,"t":"code","b":[149,0],"m":"sta","o":"cpu_ddr,x","oa":0},{"a":1214,"t":"code","b":[136],"m":"dey"},{"a":1215,"t":"code","b":[16,248],"m":"bpl","o":"b_04B9","oa":1209},{"a":1217,"t":"code","b":[170],"m":"tax"},{"a":1218,"l":"b_04C2","t":"code","b":[157,0,2],"m":"sta","o":"outq_in,x","oa":512,"x":[1222]},{"a":1221,"t":"code","b":[232],"m":"inx"},{"a":1222,"t":"code","b":[208,250],"m":"bne","o":"b_04C2","oa":1218},{"a":1224,"t":"code","b":[32,19,55],"m":"jsr","o":"sound_reset","oa":14099},{"a":1227,"t":"code","b":[32,220,9],"m":"jsr","o":"clock_start","oa":2524},{"a":1230,"t":"code","b":[32,190,185],"m":"jsr","o":"person_colours_pair","oa":47550},{"a":1233,"t":"code","b":[173,45,4],"m":"lda","o":"dog_colour","oa":1069},{"a":1236,"t":"code","b":[141,134,3],"m":"sta","o":"fig_colour","oa":902},{"a":1239,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":1241,"t":"code","b":[133,54],"m":"sta","o":"cold_figure_passes","oa":54},{"a":1243,"l":"b_04DB","t":"code","b":[32,210,15],"m":"jsr","o":"update_figure_sprites","oa":4050,"x":[1248]},{"a":1246,"t":"code","b":[198,54],"m":"dec","o":"cold_figure_passes","oa":54},{"a":1248,"t":"code","b":[16,249],"m":"bpl","o":"b_04DB","oa":1243},{"a":1250,"t":"code","b":[88],"m":"cli"},{"a":1251,"t":"code","b":[234],"m":"nop"},{"a":1252,"t":"code","b":[169,59],"m":"lda","o":"#$3B"},{"a":1254,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":1257,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":1259,"t":"code","b":[141,24,208],"m":"sta","o":"vic_memory"},{"a":1262,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":1264,"t":"code","b":[141,22,208],"m":"sta","o":"vic_control2"},{"a":1267,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":1269,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":1272,"l":"time_prompt","c":"The time-of-day prompt: opens the text band ($BA3A), prints txt_time_prompt, then loops reading the joysticks, the keyboard (scan_keyboard_now, which ignores the $037B lock) and echoing keys through the line editor $3731 into the typed line $0224, keeping $0710 at 2 so the band stays open. More than 15 characters restarts the prompt. On RETURN the line must be digits, ':', digits, optional spaces, then A or P and M in either case: hours (kept as the last two digits, BCD) must be below $13 and minutes below $60, else the prompt starts again. Stores hours in $0428, minutes in $0427, $0429 = 0 for am and 1 for pm, closes the band ($BAD4), calls clock_start and enters the main loop through set_screen_on ($0589). Hour 0 is accepted.","t":"code","b":[32,58,186],"m":"jsr","o":"text_band_open","oa":47674,"x":[1311,1341,1347,1359,1383,1393]},{"a":1275,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":1277,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":1279,"t":"code","b":[133,49],"m":"sta","o":"key_last","oa":49},{"a":1281,"t":"code","b":[141,34,2],"m":"sta","o":"line_index","oa":546},{"a":1284,"t":"code","b":[133,52],"m":"sta","o":"temp_34","oa":52},{"a":1286,"l":"j_0506","t":"code","b":[166,52],"m":"ldx","o":"temp_34","oa":52,"x":[1298]},{"a":1288,"t":"code","b":[189,5,9],"m":"lda","o":"txt_time_prompt,x","oa":2309},{"a":1291,"t":"code","b":[48,8],"m":"bmi","o":"b_0515","oa":1301},{"a":1293,"t":"code","b":[32,8,187],"m":"jsr","o":"print_char","oa":47880},{"a":1296,"t":"code","b":[230,52],"m":"inc","o":"temp_34","oa":52},{"a":1298,"t":"code","b":[76,6,5],"m":"jmp","o":"j_0506","oa":1286},{"a":1301,"l":"b_0515","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[1291,1331]},{"a":1303,"t":"code","b":[141,16,7],"m":"sta","o":"text_band_timer","oa":1808},{"a":1306,"t":"code","b":[173,34,2],"m":"lda","o":"line_index","oa":546},{"a":1309,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":1311,"t":"code","b":[176,215],"m":"bcs","o":"time_prompt","oa":1272},{"a":1313,"t":"code","b":[32,158,5],"m":"jsr","o":"read_joysticks","oa":1438},{"a":1316,"t":"code","b":[32,204,5],"m":"jsr","o":"scan_keyboard_now","oa":1484},{"a":1319,"t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48},{"a":1321,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":1323,"t":"code","b":[240,9],"m":"beq","o":"b_0536","oa":1334},{"a":1325,"t":"code","b":[32,49,55],"m":"jsr","o":"type_key","oa":14129},{"a":1328,"t":"code","b":[32,94,186],"m":"jsr","o":"print_queued","oa":47710},{"a":1331,"t":"code","b":[76,21,5],"m":"jmp","o":"b_0515","oa":1301},{"a":1334,"l":"b_0536","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[1323]},{"a":1336,"t":"code","b":[32,177,8],"m":"jsr","o":"parse_bcd","oa":2225},{"a":1339,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":1341,"t":"code","b":[208,185],"m":"bne","o":"time_prompt","oa":1272},{"a":1343,"t":"code","b":[165,52],"m":"lda","o":"temp_34","oa":52},{"a":1345,"t":"code","b":[201,19],"m":"cmp","o":"#$13"},{"a":1347,"t":"code","b":[176,179],"m":"bcs","o":"time_prompt","oa":1272},{"a":1349,"t":"code","b":[141,40,4],"m":"sta","o":"clock_hours","oa":1064},{"a":1352,"t":"code","b":[32,177,8],"m":"jsr","o":"parse_bcd","oa":2225},{"a":1355,"t":"code","b":[165,52],"m":"lda","o":"temp_34","oa":52},{"a":1357,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":1359,"t":"code","b":[176,167],"m":"bcs","o":"time_prompt","oa":1272},{"a":1361,"t":"code","b":[141,39,4],"m":"sta","o":"clock_minutes","oa":1063},{"a":1364,"t":"code","b":[202],"m":"dex"},{"a":1365,"l":"b_0555","t":"code","b":[189,36,2],"m":"lda","o":"line_ring,x","oa":548,"x":[1371]},{"a":1368,"t":"code","b":[232],"m":"inx"},{"a":1369,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":1371,"t":"code","b":[240,248],"m":"beq","o":"b_0555","oa":1365},{"a":1373,"t":"code","b":[168],"m":"tay"},{"a":1374,"t":"code","b":[32,169,8],"m":"jsr","o":"to_upper","oa":2217},{"a":1377,"t":"code","b":[201,65],"m":"cmp","o":"#$41"},{"a":1379,"t":"code","b":[240,4],"m":"beq","o":"b_0569","oa":1385},{"a":1381,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":1383,"t":"code","b":[208,143],"m":"bne","o":"time_prompt","oa":1272},{"a":1385,"l":"b_0569","t":"code","b":[189,36,2],"m":"lda","o":"line_ring,x","oa":548,"x":[1379]},{"a":1388,"t":"code","b":[32,169,8],"m":"jsr","o":"to_upper","oa":2217},{"a":1391,"t":"code","b":[201,77],"m":"cmp","o":"#$4D"},{"a":1393,"t":"code","b":[208,133],"m":"bne","o":"time_prompt","oa":1272},{"a":1395,"t":"code","b":[152],"m":"tya"},{"a":1396,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":1398,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":1400,"t":"code","b":[141,41,4],"m":"sta","o":"clock_pm","oa":1065},{"a":1403,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":1405,"t":"code","b":[141,16,7],"m":"sta","o":"text_band_timer","oa":1808},{"a":1408,"t":"code","b":[141,34,2],"m":"sta","o":"line_index","oa":546},{"a":1411,"t":"code","b":[32,212,186],"m":"jsr","o":"text_band_restore","oa":47828},{"a":1414,"t":"code","b":[32,220,9],"m":"jsr","o":"clock_start","oa":2524},{"a":1417,"l":"set_screen_on","c":"End of every main loop pass (and entry from the time prompt): sets the display-enable bit of $D011, but clears it again, blanking the screen, while the idle counter $2D is 10 or more (about 10 x 65536 frames, three and a half hours at 50 Hz, without a key), then jumps to main_loop.","t":"code","b":[173,17,208],"m":"lda","o":"vic_control1","x":[2520]},{"a":1420,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":1422,"t":"code","b":[9,16],"m":"ora","o":"#$10"},{"a":1424,"t":"code","b":[164,45],"m":"ldy","o":"idle_count_hi","oa":45},{"a":1426,"t":"code","b":[192,10],"m":"cpy","o":"#$0A"},{"a":1428,"t":"code","b":[144,2],"m":"bcc","o":"b_0598","oa":1432},{"a":1430,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":1432,"l":"b_0598","t":"code","b":[141,17,208],"m":"sta","o":"vic_control1","x":[1428]},{"a":1435,"t":"code","b":[76,49,9],"m":"jmp","o":"main_loop","oa":2353},{"a":1438,"l":"read_joysticks","c":"Reads both joystick ports with the keyboard matrix idle: $DC00 bits 0-4 (control port 2) into $2F, then $DC01 bits 0-4 (control port 1) into $2E; active low. Leaves port A as output with $FF and port B as input, as the keyboard scan expects. Called from the main loop (stage 2) and from the time prompt.","t":"code","b":[162,255],"m":"ldx","o":"#$FF","x":[1313,2369]},{"a":1440,"t":"code","b":[142,3,220],"m":"stx","o":"cia1_ddr_b"},{"a":1443,"t":"code","b":[142,1,220],"m":"stx","o":"cia1_port_b"},{"a":1446,"t":"code","b":[232],"m":"inx"},{"a":1447,"t":"code","b":[142,2,220],"m":"stx","o":"cia1_ddr_a"},{"a":1450,"t":"code","b":[173,0,220],"m":"lda","o":"cia1_port_a"},{"a":1453,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":1455,"t":"code","b":[133,47],"m":"sta","o":"joy_port2","oa":47},{"a":1457,"t":"code","b":[202],"m":"dex"},{"a":1458,"t":"code","b":[142,2,220],"m":"stx","o":"cia1_ddr_a"},{"a":1461,"t":"code","b":[142,0,220],"m":"stx","o":"cia1_port_a"},{"a":1464,"t":"code","b":[232],"m":"inx"},{"a":1465,"t":"code","b":[142,3,220],"m":"stx","o":"cia1_ddr_b"},{"a":1468,"t":"code","b":[173,1,220],"m":"lda","o":"cia1_port_b"},{"a":1471,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":1473,"t":"code","b":[133,46],"m":"sta","o":"joy_port1","oa":46},{"a":1475,"t":"code","b":[96],"m":"rts"},{"a":1476,"l":"shift_count","c":"Keyboard scan: number of SHIFT keys found down this scan (key code $23).","t":"byte","b":[0],"x":[1512,1565,1606,1629,1636]},{"a":1477,"l":"ctrl_count","c":"Keyboard scan: number of CTRL keys found down this scan (key code $24).","t":"byte","b":[0],"x":[1515,1574,1614]},{"a":1478,"l":"scan_keyboard_exit","c":"The RTS shared by scan_keyboard and scan_keyboard_now for their early exits.","t":"code","b":[96],"m":"rts","x":[1482,1492,1497]},{"a":1479,"l":"scan_keyboard","c":"Main-loop keyboard scan (stage 2). Does nothing while $037B, a pending activity request, is non-zero; otherwise falls into scan_keyboard_now.","t":"code","b":[173,123,3],"m":"lda","o":"pending_activity","oa":891,"x":[2372]},{"a":1482,"t":"code","b":[208,250],"m":"bne","o":"scan_keyboard_exit","oa":1478},{"a":1484,"l":"scan_keyboard_now","c":"Keyboard scan without the $037B lock (the time prompt calls it directly). Returns at once unless $DC01 reads $FF with all rows released and $DC00 reads back $FF (no joystick line held). Any key down clears the idle counters $2C/$2D. Walks the 64 keys from index 63 down (index in $34, row = index AND 7 selected by key_row_select, column = index / 8 tested with key_col_bits), counting SHIFT ($23) in $05C4 and CTRL ($24) in $05C5, skipping $21 keys; the lowest-numbered other key held is kept in $32. Letters: SHIFT subtracts $20 (upper case), CTRL leaves the control code (AND $1F); SHIFT also clears bit 4 of digits and turns / : ; into ? [ ]. A key equal to $33 (the key already taken and still held) is ignored; code $5C or no key clears $33. A new key is stored in $30, $31 and $33.","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[1316]},{"a":1486,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":1489,"t":"code","b":[205,1,220],"m":"cmp","o":"cia1_port_b"},{"a":1492,"t":"code","b":[208,240],"m":"bne","o":"scan_keyboard_exit","oa":1478},{"a":1494,"t":"code","b":[205,0,220],"m":"cmp","o":"cia1_port_a"},{"a":1497,"t":"code","b":[208,235],"m":"bne","o":"scan_keyboard_exit","oa":1478},{"a":1499,"t":"code","b":[169,63],"m":"lda","o":"#$3F"},{"a":1501,"t":"code","b":[133,52],"m":"sta","o":"temp_34","oa":52},{"a":1503,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":1505,"t":"code","b":[133,50],"m":"sta","o":"key_scan_index","oa":50},{"a":1507,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":1509,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":1512,"t":"code","b":[141,196,5],"m":"sta","o":"shift_count","oa":1476},{"a":1515,"t":"code","b":[141,197,5],"m":"sta","o":"ctrl_count","oa":1477},{"a":1518,"t":"code","b":[173,1,220],"m":"lda","o":"cia1_port_b"},{"a":1521,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":1523,"t":"code","b":[240,68],"m":"beq","o":"b_0639","oa":1593},{"a":1525,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":1527,"t":"code","b":[133,44],"m":"sta","o":"idle_count_lo","oa":44},{"a":1529,"t":"code","b":[133,45],"m":"sta","o":"idle_count_hi","oa":45},{"a":1531,"l":"b_05FB","t":"code","b":[165,52],"m":"lda","o":"temp_34","oa":52,"x":[1587]},{"a":1533,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":1535,"t":"code","b":[170],"m":"tax"},{"a":1536,"t":"code","b":[165,52],"m":"lda","o":"temp_34","oa":52},{"a":1538,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":1539,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":1540,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":1541,"t":"code","b":[168],"m":"tay"},{"a":1542,"t":"code","b":[189,217,6],"m":"lda","o":"key_row_select,x","oa":1753},{"a":1545,"t":"code","b":[141,0,220],"m":"sta","o":"cia1_port_a"},{"a":1548,"t":"code","b":[173,1,220],"m":"lda","o":"cia1_port_b"},{"a":1551,"t":"code","b":[57,209,6],"m":"and","o":"key_col_bits,y","oa":1745},{"a":1554,"t":"code","b":[208,29],"m":"bne","o":"b_0631","oa":1585},{"a":1556,"t":"code","b":[166,52],"m":"ldx","o":"temp_34","oa":52},{"a":1558,"t":"code","b":[189,145,6],"m":"lda","o":"key_ascii,x","oa":1681},{"a":1561,"t":"code","b":[201,35],"m":"cmp","o":"#$23"},{"a":1563,"t":"code","b":[208,5],"m":"bne","o":"b_0622","oa":1570},{"a":1565,"t":"code","b":[238,196,5],"m":"inc","o":"shift_count","oa":1476},{"a":1568,"t":"code","b":[208,15],"m":"bne","o":"b_0631","oa":1585},{"a":1570,"l":"b_0622","t":"code","b":[201,36],"m":"cmp","o":"#$24","x":[1563]},{"a":1572,"t":"code","b":[208,5],"m":"bne","o":"b_062B","oa":1579},{"a":1574,"t":"code","b":[238,197,5],"m":"inc","o":"ctrl_count","oa":1477},{"a":1577,"t":"code","b":[208,6],"m":"bne","o":"b_0631","oa":1585},{"a":1579,"l":"b_062B","t":"code","b":[201,33],"m":"cmp","o":"#$21","x":[1572]},{"a":1581,"t":"code","b":[240,2],"m":"beq","o":"b_0631","oa":1585},{"a":1583,"t":"code","b":[134,50],"m":"stx","o":"key_scan_index","oa":50},{"a":1585,"l":"b_0631","t":"code","b":[198,52],"m":"dec","o":"temp_34","oa":52,"x":[1554,1568,1577,1581]},{"a":1587,"t":"code","b":[16,198],"m":"bpl","o":"b_05FB","oa":1531},{"a":1589,"t":"code","b":[166,50],"m":"ldx","o":"key_scan_index","oa":50},{"a":1591,"t":"code","b":[224,255],"m":"cpx","o":"#$FF"},{"a":1593,"l":"b_0639","t":"code","b":[240,81],"m":"beq","o":"b_068C","oa":1676,"x":[1523]},{"a":1595,"t":"code","b":[189,145,6],"m":"lda","o":"key_ascii,x","oa":1681},{"a":1598,"t":"code","b":[201,97],"m":"cmp","o":"#$61"},{"a":1600,"t":"code","b":[144,19],"m":"bcc","o":"b_0655","oa":1621},{"a":1602,"t":"code","b":[201,123],"m":"cmp","o":"#$7B"},{"a":1604,"t":"code","b":[176,15],"m":"bcs","o":"b_0655","oa":1621},{"a":1606,"t":"code","b":[174,196,5],"m":"ldx","o":"shift_count","oa":1476},{"a":1609,"t":"code","b":[240,3],"m":"beq","o":"b_064E","oa":1614},{"a":1611,"t":"code","b":[56],"m":"sec"},{"a":1612,"t":"code","b":[233,32],"m":"sbc","o":"#$20"},{"a":1614,"l":"b_064E","t":"code","b":[174,197,5],"m":"ldx","o":"ctrl_count","oa":1477,"x":[1609]},{"a":1617,"t":"code","b":[240,2],"m":"beq","o":"b_0655","oa":1621},{"a":1619,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":1621,"l":"b_0655","t":"code","b":[201,48],"m":"cmp","o":"#$30","x":[1600,1604,1617]},{"a":1623,"t":"code","b":[144,11],"m":"bcc","o":"b_0664","oa":1636},{"a":1625,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":1627,"t":"code","b":[176,7],"m":"bcs","o":"b_0664","oa":1636},{"a":1629,"t":"code","b":[174,196,5],"m":"ldx","o":"shift_count","oa":1476},{"a":1632,"t":"code","b":[240,2],"m":"beq","o":"b_0664","oa":1636},{"a":1634,"t":"code","b":[41,47],"m":"and","o":"#$2F"},{"a":1636,"l":"b_0664","t":"code","b":[174,196,5],"m":"ldx","o":"shift_count","oa":1476,"x":[1623,1627,1632]},{"a":1639,"t":"code","b":[240,18],"m":"beq","o":"b_067B","oa":1659},{"a":1641,"t":"code","b":[201,47],"m":"cmp","o":"#$2F"},{"a":1643,"t":"code","b":[208,2],"m":"bne","o":"b_066F","oa":1647},{"a":1645,"t":"code","b":[169,63],"m":"lda","o":"#$3F"},{"a":1647,"l":"b_066F","t":"code","b":[201,58],"m":"cmp","o":"#$3A","x":[1643]},{"a":1649,"t":"code","b":[208,2],"m":"bne","o":"b_0675","oa":1653},{"a":1651,"t":"code","b":[169,91],"m":"lda","o":"#$5B"},{"a":1653,"l":"b_0675","t":"code","b":[201,59],"m":"cmp","o":"#$3B","x":[1649]},{"a":1655,"t":"code","b":[208,2],"m":"bne","o":"b_067B","oa":1659},{"a":1657,"t":"code","b":[169,93],"m":"lda","o":"#$5D"},{"a":1659,"l":"b_067B","t":"code","b":[197,51],"m":"cmp","o":"key_held","oa":51,"x":[1639,1655]},{"a":1661,"t":"code","b":[240,17],"m":"beq","o":"r_0690","oa":1680},{"a":1663,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":1665,"t":"code","b":[240,9],"m":"beq","o":"b_068C","oa":1676},{"a":1667,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":1669,"t":"code","b":[133,51],"m":"sta","o":"key_held","oa":51},{"a":1671,"t":"code","b":[133,49],"m":"sta","o":"key_last","oa":49},{"a":1673,"t":"code","b":[76,144,6],"m":"jmp","o":"r_0690","oa":1680},{"a":1676,"l":"b_068C","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[1593,1665]},{"a":1678,"t":"code","b":[133,51],"m":"sta","o":"key_held","oa":51},{"a":1680,"l":"r_0690","t":"code","b":[96],"m":"rts","x":[1661,1673]},{"a":1681,"l":"key_ascii","c":"The keyboard, as scan_keyboard reads it: 64 ASCII codes indexed by row + 8 * column of the key matrix (row selected through $DC00, column read from $DC01). Special codes: $23 SHIFT, $24 CTRL, $21 a key ignored, $5C no character.","t":"byte","b":[8,51,53,55,57,43,33,49],"x":[1558,1595]},{"a":1689,"t":"byte","b":[13,119,114,121,105,112,42,33]},{"a":1697,"t":"byte","b":[33,97,100,103,106,108,59,36]},{"a":1705,"t":"byte","b":[92,52,54,56,48,45,33,50]},{"a":1713,"t":"byte","b":[92,122,99,98,109,46,35,32]},{"a":1721,"t":"byte","b":[92,115,102,104,107,58,61,33]},{"a":1729,"t":"byte","b":[92,101,116,117,111,64,61,113]},{"a":1737,"t":"byte","b":[33,35,120,118,110,44,47,92]},{"a":1745,"l":"key_col_bits","c":"One bit per keyboard column, tested against what $DC01 reads back.","t":"byte","b":[1,2,4,8,16,32,64,128],"x":[1551]},{"a":1753,"l":"key_row_select","c":"The byte written to $DC00 to select each keyboard row: one bit low.","t":"byte","b":[254,253,251,247,239,223,191,127],"x":[1542]},{"a":1761,"l":"vic_init_values","c":"47 values copied by the cold start to the VIC registers $D000-$D02E: sprite X/Y pairs ($20,$80 $38,$80 ... $C8,$80), $D010=$00, $D011=$0B (screen off), $D016=$08, $D018=$78, then zeros (sprites off, no interrupts) through $D02E.","t":"byte","b":[32,128,56,128,80,128,104,128],"x":[1159]},{"a":1769,"t":"byte","b":[128,128,152,128,176,128,200,128]},{"a":1777,"t":"byte","b":[0,11,0,0,0,0,8,0]},{"a":1785,"t":"byte","b":[120,0,0,0,0,0,0,0]},{"a":1793,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":1801,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":1808,"l":"text_band_timer","c":"Text band open counter: set to 3 when something is printed ($BA3A, print_queued), counted down every 256 frames while the output queue is empty; at 0 the band is cleared ($BAD4). The time prompt keeps it at 2. The IRQ handles the band (hires split, cursor sprite) while this or $0711 is non-zero.","t":"byte","b":[0],"x":[1303,1405,1870,14160,47686,47723,47733,47803,47808]},{"a":1809,"l":"text_band_bottom","c":"Bottom raster line of a taller text band: the IRQ waits for it instead of $49 and hides the cursor while it is non-zero, and the line editor ($3731), CTRL R ($2BA6) and the movement code at $17C8 test it. No store to it was found anywhere in the image and it is 0 in every snapshot, so the band always ends at line $49.","t":"byte","b":[0],"x":[1873,1965,1976,6088,11174,14129]},{"a":1810,"l":"cursor_off","c":"Hides the cursor sprite while non-zero (read at $07A8). No store to it was found anywhere in the image; 0 in every snapshot.","t":"byte","b":[0],"x":[1960]},{"a":1811,"l":"irq_handler","c":"The game's IRQ handler, reached through $0314 from irq_shim; about three interrupts a frame, one of them the raster interrupt at line $28. Keeps the low bits of $01 in $092D and forces I/O in. Any source but the raster (the CIA1 timers of the timer-driven tune player) goes to timer_irq through $8018. Raster: saves $D016 in $41, finds the sprite lowest on the screen ($092E) and runs the real-time clock ($2E94). While the text band is open ($0710 or $0711 non-zero) it switches the band to hires ($D016 AND $EF), borrows that sprite as the text cursor (pointer $1F, so $47C0; dark grey; Y $35; X = the text cursor $8C/$8D + 13; shown only while $0711 and $0712 are zero), waits for the band's bottom line ($0711, or $49 when it is 0), delays by band_split_delays, restores $D016 and puts the sprite back. Then acknowledges, clears the raster high bit, counts the frame in $2B/$2C/$2D and $0430, sets $40, and calls sound_dispatch ($800C) while $801E is set (a timer-player tune is playing) or else the $B000 music player's frame routine ($B003). Restores $01 and the registers.","t":"code","b":[216],"m":"cld"},{"a":1812,"t":"code","b":[173,25,208],"m":"lda","o":"vic_irq_status"},{"a":1815,"t":"code","b":[72],"m":"pha"},{"a":1816,"t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1},{"a":1818,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":1820,"t":"code","b":[141,45,9],"m":"sta","o":"irq_saved_port","oa":2349},{"a":1823,"t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1},{"a":1825,"t":"code","b":[41,248],"m":"and","o":"#$F8"},{"a":1827,"t":"code","b":[9,5],"m":"ora","o":"#$05"},{"a":1829,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":1831,"t":"code","b":[104],"m":"pla"},{"a":1832,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":1834,"t":"code","b":[208,6],"m":"bne","o":"b_0732","oa":1842},{"a":1836,"t":"code","b":[32,24,128],"m":"jsr","o":"music_irq_jmp","oa":32792},{"a":1839,"t":"code","b":[76,27,8],"m":"jmp","o":"j_081B","oa":2075},{"a":1842,"l":"b_0732","t":"code","b":[173,22,208],"m":"lda","o":"vic_control2","x":[1834]},{"a":1845,"t":"code","b":[133,65],"m":"sta","o":"saved_d016","oa":65},{"a":1847,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":1849,"t":"code","b":[132,60],"m":"sty","o":"irq_scratch_3c","oa":60},{"a":1851,"l":"b_073B","t":"code","b":[185,1,208],"m":"lda","o":"vic_sprite0_y,y","x":[1865]},{"a":1854,"t":"code","b":[197,60],"m":"cmp","o":"irq_scratch_3c","oa":60},{"a":1856,"t":"code","b":[144,5],"m":"bcc","o":"b_0747","oa":1863},{"a":1858,"t":"code","b":[133,60],"m":"sta","o":"irq_scratch_3c","oa":60},{"a":1860,"t":"code","b":[140,46,9],"m":"sty","o":"cursor_sprite_reg","oa":2350},{"a":1863,"l":"b_0747","t":"code","b":[136],"m":"dey","x":[1856]},{"a":1864,"t":"code","b":[136],"m":"dey"},{"a":1865,"t":"code","b":[16,240],"m":"bpl","o":"b_073B","oa":1851},{"a":1867,"t":"code","b":[32,148,46],"m":"jsr","o":"clock_tick","oa":11924},{"a":1870,"t":"code","b":[173,16,7],"m":"lda","o":"text_band_timer","oa":1808},{"a":1873,"t":"code","b":[13,17,7],"m":"ora","o":"text_band_bottom","oa":1809},{"a":1876,"t":"code","b":[208,3],"m":"bne","o":"b_0759","oa":1881},{"a":1878,"t":"code","b":[76,239,7],"m":"jmp","o":"j_07EF","oa":2031},{"a":1881,"l":"b_0759","t":"code","b":[173,22,208],"m":"lda","o":"vic_control2","x":[1876]},{"a":1884,"t":"code","b":[41,239],"m":"and","o":"#$EF"},{"a":1886,"t":"code","b":[141,22,208],"m":"sta","o":"vic_control2"},{"a":1889,"t":"code","b":[32,54,8],"m":"jsr","o":"cursor_sprite_save","oa":2102},{"a":1892,"t":"code","b":[169,53],"m":"lda","o":"#$35"},{"a":1894,"t":"code","b":[153,1,208],"m":"sta","o":"vic_sprite0_y,y"},{"a":1897,"t":"code","b":[173,140,0],"m":"lda","o":"text_cursor_x","oa":140},{"a":1900,"t":"code","b":[24],"m":"clc"},{"a":1901,"t":"code","b":[105,13],"m":"adc","o":"#$0D"},{"a":1903,"t":"code","b":[153,0,208],"m":"sta","o":"vic_sprite0_x,y"},{"a":1906,"t":"code","b":[173,141,0],"m":"lda","o":"text_cursor_x_hi","oa":141},{"a":1909,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":1911,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":1912,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":1915,"t":"code","b":[61,228,8],"m":"and","o":"bit_masks_inverted,x","oa":2276},{"a":1918,"t":"code","b":[144,3],"m":"bcc","o":"b_0783","oa":1923},{"a":1920,"t":"code","b":[29,220,8],"m":"ora","o":"bit_masks,x","oa":2268},{"a":1923,"l":"b_0783","t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb","x":[1918]},{"a":1926,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":1928,"t":"code","b":[157,248,95],"m":"sta","o":"f_5FF8,x","oa":24568},{"a":1931,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":1934,"t":"code","b":[61,228,8],"m":"and","o":"bit_masks_inverted,x","oa":2276},{"a":1937,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":1940,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":1942,"t":"code","b":[157,39,208],"m":"sta","o":"vic_sprite0_colour,x"},{"a":1945,"t":"code","b":[173,27,208],"m":"lda","o":"vic_sprite_priority"},{"a":1948,"t":"code","b":[61,228,8],"m":"and","o":"bit_masks_inverted,x","oa":2276},{"a":1951,"t":"code","b":[141,27,208],"m":"sta","o":"vic_sprite_priority"},{"a":1954,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":1957,"t":"code","b":[61,228,8],"m":"and","o":"bit_masks_inverted,x","oa":2276},{"a":1960,"t":"code","b":[172,18,7],"m":"ldy","o":"cursor_off","oa":1810},{"a":1963,"t":"code","b":[208,8],"m":"bne","o":"b_07B5","oa":1973},{"a":1965,"t":"code","b":[172,17,7],"m":"ldy","o":"text_band_bottom","oa":1809},{"a":1968,"t":"code","b":[208,3],"m":"bne","o":"b_07B5","oa":1973},{"a":1970,"t":"code","b":[29,220,8],"m":"ora","o":"bit_masks,x","oa":2268},{"a":1973,"l":"b_07B5","t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable","x":[1963,1968]},{"a":1976,"t":"code","b":[173,17,7],"m":"lda","o":"text_band_bottom","oa":1809},{"a":1979,"t":"code","b":[208,2],"m":"bne","o":"b_07BF","oa":1983},{"a":1981,"t":"code","b":[169,73],"m":"lda","o":"#$49"},{"a":1983,"l":"b_07BF","t":"code","b":[133,63],"m":"sta","o":"irq_wait_line","oa":63,"x":[1979]},{"a":1985,"t":"code","b":[133,61],"m":"sta","o":"irq_band_bottom","oa":61},{"a":1987,"t":"code","b":[56],"m":"sec"},{"a":1988,"t":"code","b":[233,21],"m":"sbc","o":"#$15"},{"a":1990,"t":"code","b":[133,60],"m":"sta","o":"irq_scratch_3c","oa":60},{"a":1992,"t":"code","b":[32,148,8],"m":"jsr","o":"count_sprites_near_band","oa":2196},{"a":1995,"t":"code","b":[134,62],"m":"stx","o":"irq_sprite_count","oa":62},{"a":1997,"t":"code","b":[166,62],"m":"ldx","o":"irq_sprite_count","oa":62},{"a":1999,"t":"code","b":[189,252,8],"m":"lda","o":"band_split_delays,x","oa":2300},{"a":2002,"t":"code","b":[133,60],"m":"sta","o":"irq_scratch_3c","oa":60},{"a":2004,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":2006,"t":"code","b":[168],"m":"tay"},{"a":2007,"t":"code","b":[166,63],"m":"ldx","o":"irq_wait_line","oa":63},{"a":2009,"t":"code","b":[165,65],"m":"lda","o":"saved_d016","oa":65},{"a":2011,"l":"b_07DB","t":"code","b":[236,18,208],"m":"cpx","o":"vic_raster","x":[2014]},{"a":2014,"t":"code","b":[208,251],"m":"bne","o":"b_07DB","oa":2011},{"a":2016,"l":"b_07E0","t":"code","b":[136],"m":"dey","x":[2017]},{"a":2017,"t":"code","b":[16,253],"m":"bpl","o":"b_07E0","oa":2016},{"a":2019,"t":"code","b":[36,60],"m":"bit","o":"irq_scratch_3c","oa":60},{"a":2021,"t":"code","b":[112,0],"m":"bvs","o":"b_07E7","oa":2023},{"a":2023,"l":"b_07E7","t":"code","b":[48,0],"m":"bmi","o":"b_07E9","oa":2025,"x":[2021]},{"a":2025,"l":"b_07E9","t":"code","b":[141,22,208],"m":"sta","o":"vic_control2","x":[2023]},{"a":2028,"t":"code","b":[32,101,8],"m":"jsr","o":"cursor_sprite_restore","oa":2149},{"a":2031,"l":"j_07EF","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[1878]},{"a":2033,"t":"code","b":[141,25,208],"m":"sta","o":"vic_irq_status"},{"a":2036,"t":"code","b":[173,17,208],"m":"lda","o":"vic_control1"},{"a":2039,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":2041,"t":"code","b":[141,17,208],"m":"sta","o":"vic_control1"},{"a":2044,"t":"code","b":[230,43],"m":"inc","o":"frame_count","oa":43},{"a":2046,"t":"code","b":[208,6],"m":"bne","o":"b_0806","oa":2054},{"a":2048,"l":"irq_frame_counters","c":"IRQ handler continued (raster path): carries the frame count from $2B into $2C and $2D, counts $0430, sets $40 = 1, then calls sound_dispatch through $800C while $801E is set (a tune of the timer-driven player is playing), else the $B000 music player's frame routine through $B003; finally puts back the $01 bits kept in $092D, pulls Y, X and A and returns (RTI).","t":"code","b":[230,44],"m":"inc","o":"idle_count_lo","oa":44},{"a":2050,"t":"code","b":[208,2],"m":"bne","o":"b_0806","oa":2054},{"a":2052,"t":"code","b":[230,45],"m":"inc","o":"idle_count_hi","oa":45},{"a":2054,"l":"b_0806","t":"code","b":[238,48,4],"m":"inc","o":"frame_count_2","oa":1072,"x":[2046,2050]},{"a":2057,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2059,"t":"code","b":[133,64],"m":"sta","o":"frame_flag","oa":64},{"a":2061,"t":"code","b":[173,30,128],"m":"lda","o":"music_playing","oa":32798},{"a":2064,"t":"code","b":[240,6],"m":"beq","o":"b_0818","oa":2072},{"a":2066,"t":"code","b":[32,12,128],"m":"jsr","o":"music_tick_jmp","oa":32780},{"a":2069,"t":"code","b":[76,27,8],"m":"jmp","o":"j_081B","oa":2075},{"a":2072,"l":"b_0818","t":"code","b":[32,3,176],"m":"jsr","o":"sound_frame_jmp","oa":45059,"x":[2064]},{"a":2075,"l":"j_081B","t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1,"x":[1839,2069]},{"a":2077,"t":"code","b":[41,248],"m":"and","o":"#$F8"},{"a":2079,"t":"code","b":[13,45,9],"m":"ora","o":"irq_saved_port","oa":2349},{"a":2082,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":2084,"t":"code","b":[104],"m":"pla"},{"a":2085,"t":"code","b":[168],"m":"tay"},{"a":2086,"t":"code","b":[104],"m":"pla"},{"a":2087,"t":"code","b":[170],"m":"tax"},{"a":2088,"t":"code","b":[104],"m":"pla"},{"a":2089,"t":"code","b":[64],"m":"rti"},{"a":2090,"l":"nmi_rti","c":"The NMI handler: a lone RTI. $0318/$0319 point here (set from $092B by the cold start) and nmi_shim jumps through them, so RESTORE does nothing.","t":"code","b":[64],"m":"rti"},{"a":2091,"l":"irq_shim","c":"Hardware IRQ entry ($FFFE in RAM; the KERNAL is banked out, $01=$35). Pushes A, X and Y as the KERNAL would and jumps through $0314, so the game keeps a KERNAL-style vector.","t":"code","b":[72],"m":"pha","x":[18113,65534]},{"a":2092,"t":"code","b":[138],"m":"txa"},{"a":2093,"t":"code","b":[72],"m":"pha"},{"a":2094,"t":"code","b":[152],"m":"tya"},{"a":2095,"t":"code","b":[72],"m":"pha"},{"a":2096,"t":"code","b":[108,20,3],"m":"jmp","o":"(irq_vector)","oa":788},{"a":2099,"l":"nmi_shim","c":"Hardware NMI entry ($FFFA in RAM): jumps through $0318, which points at an RTI ($082A), so RESTORE does nothing. Counted zero hits in play.","t":"code","b":[108,24,3],"m":"jmp","o":"(nmi_vector)","oa":792,"x":[18109,65530]},{"a":2102,"l":"cursor_sprite_save","c":"IRQ helper: saves the registers of the hardware sprite chosen for the text cursor (register offset in $092E, the sprite with the largest Y this frame): $D015 to $42, its X and Y to $43/$44, $D010 to $45, $D01C to $46, its colour to $47, its pointer ($5FF8+n) to $48 and $D01B to $49. Returns with X = sprite number and Y = register offset.","t":"code","b":[173,46,9],"m":"lda","o":"cursor_sprite_reg","oa":2350,"x":[1889]},{"a":2105,"t":"code","b":[168],"m":"tay"},{"a":2106,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2107,"t":"code","b":[170],"m":"tax"},{"a":2108,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":2111,"t":"code","b":[133,66],"m":"sta","o":"save_d015","oa":66},{"a":2113,"t":"code","b":[185,0,208],"m":"lda","o":"vic_sprite0_x,y"},{"a":2116,"t":"code","b":[133,67],"m":"sta","o":"save_spr_x","oa":67},{"a":2118,"t":"code","b":[185,1,208],"m":"lda","o":"vic_sprite0_y,y"},{"a":2121,"t":"code","b":[133,68],"m":"sta","o":"save_spr_y","oa":68},{"a":2123,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":2126,"t":"code","b":[133,69],"m":"sta","o":"save_d010","oa":69},{"a":2128,"t":"code","b":[173,28,208],"m":"lda","o":"vic_sprite_multicolour"},{"a":2131,"t":"code","b":[133,70],"m":"sta","o":"save_d01c","oa":70},{"a":2133,"t":"code","b":[189,39,208],"m":"lda","o":"vic_sprite0_colour,x"},{"a":2136,"t":"code","b":[133,71],"m":"sta","o":"save_spr_colour","oa":71},{"a":2138,"t":"code","b":[189,248,95],"m":"lda","o":"f_5FF8,x","oa":24568},{"a":2141,"t":"code","b":[133,72],"m":"sta","o":"save_spr_pointer","oa":72},{"a":2143,"t":"code","b":[173,27,208],"m":"lda","o":"vic_sprite_priority"},{"a":2146,"t":"code","b":[133,73],"m":"sta","o":"save_d01b","oa":73},{"a":2148,"t":"code","b":[96],"m":"rts"},{"a":2149,"l":"cursor_sprite_restore","c":"IRQ helper: puts back everything cursor_sprite_save kept in $42-$49 (pointer, colour, $D01B, $D01C, $D010, Y, X and $D015) once the raster has passed the text band, so the borrowed sprite shows at its own place further down the screen.","t":"code","b":[173,46,9],"m":"lda","o":"cursor_sprite_reg","oa":2350,"x":[2028]},{"a":2152,"t":"code","b":[168],"m":"tay"},{"a":2153,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2154,"t":"code","b":[170],"m":"tax"},{"a":2155,"t":"code","b":[165,73],"m":"lda","o":"save_d01b","oa":73},{"a":2157,"t":"code","b":[141,27,208],"m":"sta","o":"vic_sprite_priority"},{"a":2160,"t":"code","b":[165,72],"m":"lda","o":"save_spr_pointer","oa":72},{"a":2162,"t":"code","b":[157,248,95],"m":"sta","o":"f_5FF8,x","oa":24568},{"a":2165,"t":"code","b":[165,71],"m":"lda","o":"save_spr_colour","oa":71},{"a":2167,"t":"code","b":[157,39,208],"m":"sta","o":"vic_sprite0_colour,x"},{"a":2170,"t":"code","b":[165,70],"m":"lda","o":"save_d01c","oa":70},{"a":2172,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":2175,"t":"code","b":[165,69],"m":"lda","o":"save_d010","oa":69},{"a":2177,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":2180,"t":"code","b":[165,68],"m":"lda","o":"save_spr_y","oa":68},{"a":2182,"t":"code","b":[153,1,208],"m":"sta","o":"vic_sprite0_y,y"},{"a":2185,"t":"code","b":[165,67],"m":"lda","o":"save_spr_x","oa":67},{"a":2187,"t":"code","b":[153,0,208],"m":"sta","o":"vic_sprite0_x,y"},{"a":2190,"t":"code","b":[165,66],"m":"lda","o":"save_d015","oa":66},{"a":2192,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":2195,"t":"code","b":[96],"m":"rts"},{"a":2196,"l":"count_sprites_near_band","c":"IRQ helper: counts the hardware sprites whose Y lies from $3C (band bottom minus 21) up to, but not including, $3D (the band's bottom line). The count, 0-8, picks the delay in band_split_delays ($08FC) so the $D016 write lands at the same place on the line whatever sprite DMA steals.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[1992]},{"a":2198,"t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":2200,"l":"b_0898","t":"code","b":[185,1,208],"m":"lda","o":"vic_sprite0_y,y","x":[2214]},{"a":2203,"t":"code","b":[197,61],"m":"cmp","o":"irq_band_bottom","oa":61},{"a":2205,"t":"code","b":[176,5],"m":"bcs","o":"b_08A4","oa":2212},{"a":2207,"t":"code","b":[197,60],"m":"cmp","o":"irq_scratch_3c","oa":60},{"a":2209,"t":"code","b":[144,1],"m":"bcc","o":"b_08A4","oa":2212},{"a":2211,"t":"code","b":[232],"m":"inx"},{"a":2212,"l":"b_08A4","t":"code","b":[136],"m":"dey","x":[2205,2209]},{"a":2213,"t":"code","b":[136],"m":"dey"},{"a":2214,"t":"code","b":[16,240],"m":"bpl","o":"b_0898","oa":2200},{"a":2216,"t":"code","b":[96],"m":"rts"},{"a":2217,"l":"to_upper","c":"Converts a lower-case ASCII letter in A to upper case (subtracts $20 from anything $60 or above). Used by the time prompt on the am/pm letters.","t":"code","b":[201,96],"m":"cmp","o":"#$60","x":[1374,1388]},{"a":2219,"t":"code","b":[144,3],"m":"bcc","o":"r_08B0","oa":2224},{"a":2221,"t":"code","b":[56],"m":"sec"},{"a":2222,"t":"code","b":[233,32],"m":"sbc","o":"#$20"},{"a":2224,"l":"r_08B0","t":"code","b":[96],"m":"rts","x":[2219]},{"a":2225,"l":"parse_bcd","c":"Reads decimal digits from the typed line $0224 starting at index X into $34 as BCD (each digit shifted in from the right, so only the last two count). Returns with the first non-digit in A and X just past it. Used by the time prompt for hours and minutes.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[1336,1352]},{"a":2227,"t":"code","b":[133,52],"m":"sta","o":"temp_34","oa":52},{"a":2229,"l":"j_08B5","t":"code","b":[189,36,2],"m":"lda","o":"line_ring,x","oa":548,"x":[2255]},{"a":2232,"t":"code","b":[232],"m":"inx"},{"a":2233,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":2235,"t":"code","b":[144,21],"m":"bcc","o":"r_08D2","oa":2258},{"a":2237,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":2239,"t":"code","b":[176,17],"m":"bcs","o":"r_08D2","oa":2258},{"a":2241,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":2243,"t":"code","b":[6,52],"m":"asl","o":"temp_34","oa":52},{"a":2245,"t":"code","b":[6,52],"m":"asl","o":"temp_34","oa":52},{"a":2247,"t":"code","b":[6,52],"m":"asl","o":"temp_34","oa":52},{"a":2249,"t":"code","b":[6,52],"m":"asl","o":"temp_34","oa":52},{"a":2251,"t":"code","b":[5,52],"m":"ora","o":"temp_34","oa":52},{"a":2253,"t":"code","b":[133,52],"m":"sta","o":"temp_34","oa":52},{"a":2255,"t":"code","b":[76,181,8],"m":"jmp","o":"j_08B5","oa":2229},{"a":2258,"l":"r_08D2","t":"code","b":[96],"m":"rts","x":[2235,2239]},{"a":2259,"l":"cold_clear_zp","c":"Nine zero-page addresses the cold start clears ($04B7): $2A, $2C, $2D (idle counter), $4C (activity phase), $68 (sub-phase), $30, $33, $31 (keys) and $32.","t":"byte","b":[42,44,45,76,104,48,51,49],"x":[1209]},{"a":2267,"t":"byte","b":[50]},{"a":2268,"l":"bit_masks","c":"One bit per sprite, 1 << n for n = 0-7: ORed into $D010 and $D015 by the IRQ handler for the cursor sprite, and used by $2EED to pick a free bit.","t":"byte","b":[1,2,4,8,16,32,64,128],"x":[1920,1970,12013]},{"a":2276,"l":"bit_masks_inverted","c":"The complements of bit_masks ($FE, $FD ... $7F): the IRQ handler ANDs $D010, $D01C, $D01B and $D015 with them to take the cursor sprite out of multicolour, priority and enable.","t":"byte","b":[254,253,251,247,239,223,191,127],"x":[1915,1934,1948,1957]},{"a":2284,"l":"unused_pair_masks","c":"Sixteen bytes, each bit mask twice ($01,$01,$02,$02 ... $80,$80). No traced instruction reads them; bit_masks_inverted is only ever indexed 0-7.","t":"byte","b":[1,1,2,2,4,4,8,8]},{"a":2292,"t":"byte","b":[16,16,32,32,64,64,128,128]},{"a":2300,"l":"band_split_delays","c":"Nine timing values for the text band split, indexed by the number of sprites near the band's bottom (count_sprites_near_band): the low nibble is the DEY delay count; bits 6 and 7 add a cycle each through BIT $3C / BVS / BMI before $D016 is written at $07E9.","t":"byte","b":[8,8,8,7,8,8,199,7],"x":[1999]},{"a":2308,"t":"byte","b":[198]},{"a":2309,"l":"txt_time_prompt","c":"ASCII, printed a character at a time through print_char until a byte with bit 7 set ($FF here): \"Enter time of day (HH:MM am/pm)> \"","t":"byte","b":[69,110,116,101,114,32,116,105],"x":[1288]},{"a":2317,"t":"byte","b":[109,101,32,111,102,32,100,97]},{"a":2325,"t":"byte","b":[121,32,40,72,72,58,77,77]},{"a":2333,"t":"byte","b":[32,97,109,47,112,109,41,62]},{"a":2341,"t":"byte","b":[32,255]},{"a":2343,"l":"irq_vector_init","c":"Initial KERNAL-style vectors copied by the cold start to $0314-$0319 (a zero byte is skipped, so the BRK vector is left alone): IRQ $0713 (irq_handler), BRK $0000 (skipped), NMI $082A (nmi_rti).","t":"word","b":[19,7,0,0,42,8],"d":[1811,0,2090],"x":[1088]},{"a":2349,"l":"irq_saved_port","c":"IRQ handler: the low three bits of $01 as the interrupted code had them, put back on exit.","t":"byte","b":[5],"x":[1820,2079]},{"a":2350,"l":"cursor_sprite_reg","c":"IRQ handler: register offset (2 x sprite number) of the sprite lowest on the screen, borrowed for the text cursor.","t":"byte","b":[6],"x":[1860,2102,2149]},{"a":2351,"l":"request_score","c":"Score of the last parsed request ($C014, kept by the main loop at $098B). The activity chooser ($E16E) carries out the queued request from the ring at $E12A while it is 8 or more, sets it to 0 when the ring is empty, and adds 1 on each visit while it is 4-7, so a request scoring 4-7 is carried out a few visits later and one below 4 is not taken from the ring.","t":"byte","b":[0],"x":[2443,57710,57742,57745,57752]},{"a":2352,"l":"main_stage","c":"Main loop stage number, 1-12, written before each stage. No traced instruction reads it.","t":"byte","b":[1],"x":[2358,2366,2380,2388,2396,2404,2409,2417,2425,2496,2506,2514]},{"a":2353,"l":"main_loop","c":"The main loop. At most one pass per frame, since stage 1 waits for raster line $FA before it writes the sprite registers (46 passes in about a second were counted live). Counts passes in $09DB and writes the stage number 1-12 to $0930 before each stage (nothing reads it). 1 update_figure_sprites; 2 read_joysticks, scan_keyboard, print_queued; 3 $E3BF (an RTS); 4 house_clock; 5 $2E6F (CLC, RTS); 6 nothing; 7 $2E73 (the $0432/$0433 timer); 8 $3476; 9 the line editor $3731 and the parser $C040, then, when the parser has a result ($C002 non-zero), keeps its score ($C014) in $092F, copies the result bytes into the 16-entry ring at $E12A (write index $E128; a score of 8 or more first sets the read index $E129 to it and $BEFC to 1) and clears $C002 ($C141); 10 $16C4 for the person (X=0), then for the dog (X=1); 11 $ACF3 (turns the head, figure 4); 12 $8DAB, the activity dispatcher. Ends through set_screen_on.","t":"code","b":[238,219,9],"m":"inc","o":"main_passes","oa":2523,"x":[1435]},{"a":2356,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2358,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2361,"t":"code","b":[32,210,15],"m":"jsr","o":"update_figure_sprites","oa":4050},{"a":2364,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":2366,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2369,"t":"code","b":[32,158,5],"m":"jsr","o":"read_joysticks","oa":1438},{"a":2372,"t":"code","b":[32,199,5],"m":"jsr","o":"scan_keyboard","oa":1479},{"a":2375,"t":"code","b":[32,94,186],"m":"jsr","o":"print_queued","oa":47710},{"a":2378,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":2380,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2383,"t":"code","b":[32,191,227],"m":"jsr","o":"empty_stage3","oa":58303},{"a":2386,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":2388,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2391,"t":"code","b":[32,235,9],"m":"jsr","o":"house_clock","oa":2539},{"a":2394,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":2396,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2399,"t":"code","b":[32,111,46],"m":"jsr","o":"stub_main_clc","oa":11887},{"a":2402,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":2404,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2407,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":2409,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2412,"t":"code","b":[32,115,46],"m":"jsr","o":"act_timer_tick","oa":11891},{"a":2415,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":2417,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2420,"t":"code","b":[32,118,52],"m":"jsr","o":"sound_requests","oa":13430},{"a":2423,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":2425,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2428,"t":"code","b":[32,49,55],"m":"jsr","o":"type_key","oa":14129},{"a":2431,"t":"code","b":[32,64,192],"m":"jsr","o":"parse_typed_line","oa":49216},{"a":2434,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":2436,"t":"code","b":[134,52],"m":"stx","o":"temp_34","oa":52},{"a":2438,"t":"code","b":[32,58,193],"m":"jsr","o":"parse_get_action","oa":49466},{"a":2441,"t":"code","b":[240,46],"m":"beq","o":"b_09B9","oa":2489},{"a":2443,"t":"code","b":[140,47,9],"m":"sty","o":"request_score","oa":2351},{"a":2446,"t":"code","b":[173,40,225],"m":"lda","o":"action_queue_in","oa":57640},{"a":2449,"t":"code","b":[192,8],"m":"cpy","o":"#$08"},{"a":2451,"t":"code","b":[144,8],"m":"bcc","o":"b_099D","oa":2461},{"a":2453,"t":"code","b":[141,41,225],"m":"sta","o":"action_queue_out","oa":57641},{"a":2456,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2458,"t":"code","b":[141,252,190],"m":"sta","o":"request_flag_9","oa":48892},{"a":2461,"l":"b_099D","t":"code","b":[166,52],"m":"ldx","o":"temp_34","oa":52,"x":[2451,2483]},{"a":2463,"t":"code","b":[32,58,193],"m":"jsr","o":"parse_get_action","oa":49466},{"a":2466,"t":"code","b":[240,18],"m":"beq","o":"b_09B6","oa":2486},{"a":2468,"t":"code","b":[174,40,225],"m":"ldx","o":"action_queue_in","oa":57640},{"a":2471,"t":"code","b":[157,42,225],"m":"sta","o":"action_queue,x","oa":57642},{"a":2474,"t":"code","b":[232],"m":"inx"},{"a":2475,"t":"code","b":[138],"m":"txa"},{"a":2476,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":2478,"t":"code","b":[141,40,225],"m":"sta","o":"action_queue_in","oa":57640},{"a":2481,"t":"code","b":[230,52],"m":"inc","o":"temp_34","oa":52},{"a":2483,"t":"code","b":[76,157,9],"m":"jmp","o":"b_099D","oa":2461},{"a":2486,"l":"b_09B6","t":"code","b":[32,65,193],"m":"jsr","o":"parse_clear_actions","oa":49473,"x":[2466]},{"a":2489,"l":"b_09B9","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[2441]},{"a":2491,"t":"code","b":[32,196,22],"m":"jsr","o":"move_figure","oa":5828},{"a":2494,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":2496,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2499,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":2501,"t":"code","b":[32,196,22],"m":"jsr","o":"move_figure","oa":5828},{"a":2504,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":2506,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2509,"t":"code","b":[32,243,172],"m":"jsr","o":"upper_body_turn","oa":44275},{"a":2512,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":2514,"t":"code","b":[141,48,9],"m":"sta","o":"main_stage","oa":2352},{"a":2517,"t":"code","b":[32,171,141],"m":"jsr","o":"activity_dispatch","oa":36267},{"a":2520,"t":"code","b":[76,137,5],"m":"jmp","o":"set_screen_on","oa":1417},{"a":2523,"l":"main_passes","c":"Main loop pass counter (incremented at the top of every pass); other code tests its low bits to act only every fourth or eighth pass ($2D59, $9739, and also $2CAA, $2CEB, $2DBB, $58EA, $59B6, $59C5, $5BA6).","t":"byte","b":[111],"x":[2353,11434,11499,11609,11707,22762,22966,22981,23462,38713,43110]},{"a":2524,"l":"clock_start","c":"Called by the cold start and when the time has been entered: sets the phone countdown $09EA to a random 32-63 house-clock ticks and runs house_clock from $0AA4: draws the wall clock (while $09E9 is non-zero, as it is at start) and runs the food, water, illness and schedule checks that follow it.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[1227,1414]},{"a":2527,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":2529,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":2531,"t":"code","b":[141,234,9],"m":"sta","o":"phone_countdown","oa":2538},{"a":2534,"t":"code","b":[76,164,10],"m":"jmp","o":"j_0AA4","oa":2724},{"a":2537,"l":"clock_redraw","c":"Wall clock redraw flag: $2E94 sets it to $FF when a minute passes; house_clock redraws the clock when bit 7 is set, and on every tick while it is non-zero; draw_wall_clock sets it to 1.","t":"byte","b":[1],"x":[2569,2724,2734,11947]},{"a":2538,"l":"phone_countdown","c":"Ticks until the phone rings by itself: clock_start and each ring set it to a random 32-63; at 0 house_clock sets $BEF5 and $2B4C to that new value, as CTRL C sets them to $FF.","t":"byte","b":[44],"x":[2531,2857,2867]},{"a":2539,"l":"house_clock","c":"Main-loop stage 4. Clears the tick flag $0BB0; every 256 frames (bit 7 of the frame counter $0430 going back to 0) counts $0A11 down, and every 9th time (2304 frames, 46 s at 50 Hz) makes a tick: 12 ticks ($037A) make an hour ($0379, 0-23); a new day advances the weekday counter $0377 and the saturating day count $0378, and every $0363 days (two) moves the mood $035F one step along the cycle 1, 0, 1, 2. Each tick counts down the food and water timers $0373/$0370: when one runs out it is reloaded ($0372, $036F) and its need level ($0371 food, $036E water) goes up; if the level was already 2 or more it is set to 3 and start_illness is called. Each tick also counts down $0376 (sets $0374 at zero) and the phone countdown $09EA (at zero the phone rings as with CTRL C), runs the illness course ($0365-$0367; sprite multicolour 1, $D026, green 5 while ill, back to $0A when well) and daily_schedule. The wall clock is redrawn from the real time $0428/$0427 on every tick and whenever the interrupt clock flags a new minute ($09E9 bit 7).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[2391]},{"a":2541,"t":"code","b":[141,176,11],"m":"sta","o":"tick_flag","oa":2992},{"a":2544,"t":"code","b":[173,48,4],"m":"lda","o":"frame_count_2","oa":1072},{"a":2547,"t":"code","b":[48,17],"m":"bmi","o":"b_0A06","oa":2566},{"a":2549,"t":"code","b":[173,18,10],"m":"lda","o":"frame_bit7_seen","oa":2578},{"a":2552,"t":"code","b":[240,15],"m":"beq","o":"b_0A09","oa":2569},{"a":2554,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2556,"t":"code","b":[141,18,10],"m":"sta","o":"frame_bit7_seen","oa":2578},{"a":2559,"t":"code","b":[206,17,10],"m":"dec","o":"tick_divider","oa":2577},{"a":2562,"t":"code","b":[240,18],"m":"beq","o":"b_0A16","oa":2582},{"a":2564,"t":"code","b":[208,3],"m":"bne","o":"b_0A09","oa":2569},{"a":2566,"l":"b_0A06","t":"code","b":[141,18,10],"m":"sta","o":"frame_bit7_seen","oa":2578,"x":[2547]},{"a":2569,"l":"b_0A09","t":"code","b":[173,233,9],"m":"lda","o":"clock_redraw","oa":2537,"x":[2552,2564]},{"a":2572,"t":"code","b":[48,5],"m":"bmi","o":"house_clock_tick","oa":2579},{"a":2574,"t":"code","b":[76,234,10],"m":"jmp","o":"j_0AEA","oa":2794},{"a":2577,"l":"tick_divider","c":"house_clock: counts the 256-frame periods down; at 0 a tick happens and it is reloaded with 9.","t":"byte","b":[3],"x":[2559,2584]},{"a":2578,"l":"frame_bit7_seen","c":"house_clock: non-zero once bit 7 of the frame counter $0430 has been seen set, so the return to 0 is counted once.","t":"byte","b":[0],"x":[2549,2556,2566]},{"a":2579,"l":"house_clock_tick","c":"house_clock continued: $0A13 jumps to the redraw when a new minute is flagged; $0A16 is the tick: reloads the divider, advances the tick and, when due, the hour, weekday and day count, sets $0BB0, counts down the food, water and $0376 timers, and every $0363 days moves the mood; then the redraw check at $0AA4.","t":"code","b":[76,172,10],"m":"jmp","o":"draw_wall_clock","oa":2732,"x":[2572]},{"a":2582,"l":"b_0A16","t":"code","b":[169,9],"m":"lda","o":"#$09","x":[2562]},{"a":2584,"t":"code","b":[141,17,10],"m":"sta","o":"tick_divider","oa":2577},{"a":2587,"t":"code","b":[238,122,3],"m":"inc","o":"house_tick","oa":890},{"a":2590,"t":"code","b":[238,176,11],"m":"inc","o":"tick_flag","oa":2992},{"a":2593,"t":"code","b":[206,115,3],"m":"dec","o":"food_timer","oa":883},{"a":2596,"t":"code","b":[206,112,3],"m":"dec","o":"water_timer","oa":880},{"a":2599,"t":"code","b":[173,118,3],"m":"lda","o":"act4_countdown","oa":886},{"a":2602,"t":"code","b":[240,10],"m":"beq","o":"b_0A36","oa":2614},{"a":2604,"t":"code","b":[206,118,3],"m":"dec","o":"act4_countdown","oa":886},{"a":2607,"t":"code","b":[208,5],"m":"bne","o":"b_0A36","oa":2614},{"a":2609,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2611,"t":"code","b":[141,116,3],"m":"sta","o":"act4_request","oa":884},{"a":2614,"l":"b_0A36","t":"code","b":[173,122,3],"m":"lda","o":"house_tick","oa":890,"x":[2602,2607]},{"a":2617,"t":"code","b":[201,12],"m":"cmp","o":"#$0C"},{"a":2619,"t":"code","b":[208,13],"m":"bne","o":"b_0A4A","oa":2634},{"a":2621,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2623,"t":"code","b":[141,122,3],"m":"sta","o":"house_tick","oa":890},{"a":2626,"t":"code","b":[238,121,3],"m":"inc","o":"house_hour","oa":889},{"a":2629,"t":"code","b":[173,121,3],"m":"lda","o":"house_hour","oa":889},{"a":2632,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":2634,"l":"b_0A4A","t":"code","b":[208,88],"m":"bne","o":"j_0AA4","oa":2724,"x":[2619]},{"a":2636,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2638,"t":"code","b":[141,121,3],"m":"sta","o":"house_hour","oa":889},{"a":2641,"t":"code","b":[238,119,3],"m":"inc","o":"weekday","oa":887},{"a":2644,"t":"code","b":[173,119,3],"m":"lda","o":"weekday","oa":887},{"a":2647,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":2649,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":2651,"t":"code","b":[208,15],"m":"bne","o":"b_0A6C","oa":2668},{"a":2653,"t":"code","b":[238,119,3],"m":"inc","o":"weekday","oa":887},{"a":2656,"t":"code","b":[173,119,3],"m":"lda","o":"weekday","oa":887},{"a":2659,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":2661,"t":"code","b":[144,5],"m":"bcc","o":"b_0A6C","oa":2668},{"a":2663,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2665,"t":"code","b":[141,119,3],"m":"sta","o":"weekday","oa":887},{"a":2668,"l":"b_0A6C","t":"code","b":[206,99,3],"m":"dec","o":"mood_days_left","oa":867,"x":[2651,2661]},{"a":2671,"t":"code","b":[208,43],"m":"bne","o":"b_0A9C","oa":2716},{"a":2673,"t":"code","b":[174,100,3],"m":"ldx","o":"mood_direction","oa":868},{"a":2676,"t":"code","b":[48,9],"m":"bmi","o":"b_0A7F","oa":2687},{"a":2678,"t":"code","b":[206,95,3],"m":"dec","o":"mood","oa":863},{"a":2681,"t":"code","b":[16,24],"m":"bpl","o":"b_0A93","oa":2707},{"a":2683,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":2685,"t":"code","b":[208,12],"m":"bne","o":"b_0A8B","oa":2699},{"a":2687,"l":"b_0A7F","t":"code","b":[238,95,3],"m":"inc","o":"mood","oa":863,"x":[2676]},{"a":2690,"t":"code","b":[173,95,3],"m":"lda","o":"mood","oa":863},{"a":2693,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":2695,"t":"code","b":[144,10],"m":"bcc","o":"b_0A93","oa":2707},{"a":2697,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2699,"l":"b_0A8B","t":"code","b":[141,100,3],"m":"sta","o":"mood_direction","oa":868,"x":[2685]},{"a":2702,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2704,"t":"code","b":[141,95,3],"m":"sta","o":"mood","oa":863},{"a":2707,"l":"b_0A93","t":"code","b":[174,95,3],"m":"ldx","o":"mood","oa":863,"x":[2681,2695]},{"a":2710,"t":"code","b":[189,96,3],"m":"lda","o":"mood_days,x","oa":864},{"a":2713,"t":"code","b":[141,99,3],"m":"sta","o":"mood_days_left","oa":867},{"a":2716,"l":"b_0A9C","t":"code","b":[238,120,3],"m":"inc","o":"days_elapsed","oa":888,"x":[2671]},{"a":2719,"t":"code","b":[208,3],"m":"bne","o":"j_0AA4","oa":2724},{"a":2721,"t":"code","b":[206,120,3],"m":"dec","o":"days_elapsed","oa":888},{"a":2724,"l":"j_0AA4","t":"code","b":[173,233,9],"m":"lda","o":"clock_redraw","oa":2537,"x":[2534,2634,2719]},{"a":2727,"t":"code","b":[208,3],"m":"bne","o":"draw_wall_clock","oa":2732},{"a":2729,"t":"code","b":[76,234,10],"m":"jmp","o":"j_0AEA","oa":2794},{"a":2732,"l":"draw_wall_clock","c":"Redraws the little analogue clock on the house wall: copies the clock face (clock_face_top/bottom) into the bitmap at $6D90 and $6ED0, then draws the hour hand (3 steps; the hour $0428 in BCD, plus one from minute 35 on) and the minute hand (5 steps; minutes $0427 divided by five in decimal mode) with draw_clock_hand.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[2579,2727]},{"a":2734,"t":"code","b":[141,233,9],"m":"sta","o":"clock_redraw","oa":2537},{"a":2737,"t":"code","b":[162,15],"m":"ldx","o":"#$0F"},{"a":2739,"l":"b_0AB3","t":"code","b":[189,26,13],"m":"lda","o":"clock_face_top,x","oa":3354,"x":[2752]},{"a":2742,"t":"code","b":[157,144,109],"m":"sta","o":"clock_centre_top,x","oa":28048},{"a":2745,"t":"code","b":[189,42,13],"m":"lda","o":"clock_face_bottom,x","oa":3370},{"a":2748,"t":"code","b":[157,208,110],"m":"sta","o":"clock_centre_bottom,x","oa":28368},{"a":2751,"t":"code","b":[202],"m":"dex"},{"a":2752,"t":"code","b":[16,241],"m":"bpl","o":"b_0AB3","oa":2739},{"a":2754,"t":"code","b":[248],"m":"sed"},{"a":2755,"t":"code","b":[173,40,4],"m":"lda","o":"clock_hours","oa":1064},{"a":2758,"t":"code","b":[174,39,4],"m":"ldx","o":"clock_minutes","oa":1063},{"a":2761,"t":"code","b":[224,53],"m":"cpx","o":"#$35"},{"a":2763,"t":"code","b":[144,3],"m":"bcc","o":"b_0AD0","oa":2768},{"a":2765,"t":"code","b":[24],"m":"clc"},{"a":2766,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":2768,"l":"b_0AD0","t":"code","b":[216],"m":"cld","x":[2763]},{"a":2769,"t":"code","b":[170],"m":"tax"},{"a":2770,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":2772,"t":"code","b":[32,90,12],"m":"jsr","o":"draw_clock_hand","oa":3162},{"a":2775,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":2777,"t":"code","b":[173,39,4],"m":"lda","o":"clock_minutes","oa":1063},{"a":2780,"t":"code","b":[56],"m":"sec"},{"a":2781,"t":"code","b":[248],"m":"sed"},{"a":2782,"l":"b_0ADE","t":"code","b":[232],"m":"inx","x":[2785]},{"a":2783,"t":"code","b":[233,5],"m":"sbc","o":"#$05"},{"a":2785,"t":"code","b":[176,251],"m":"bcs","o":"b_0ADE","oa":2782},{"a":2787,"t":"code","b":[202],"m":"dex"},{"a":2788,"t":"code","b":[216],"m":"cld"},{"a":2789,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":2791,"t":"code","b":[32,90,12],"m":"jsr","o":"draw_clock_hand","oa":3162},{"a":2794,"l":"j_0AEA","t":"code","b":[173,115,3],"m":"lda","o":"food_timer","oa":883,"x":[2574,2729]},{"a":2797,"t":"code","b":[208,24],"m":"bne","o":"b_0B07","oa":2823},{"a":2799,"t":"code","b":[173,114,3],"m":"lda","o":"food_period","oa":882},{"a":2802,"t":"code","b":[141,115,3],"m":"sta","o":"food_timer","oa":883},{"a":2805,"t":"code","b":[173,113,3],"m":"lda","o":"food_need","oa":881},{"a":2808,"t":"code","b":[238,113,3],"m":"inc","o":"food_need","oa":881},{"a":2811,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":2813,"t":"code","b":[144,8],"m":"bcc","o":"b_0B07","oa":2823},{"a":2815,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":2817,"t":"code","b":[141,113,3],"m":"sta","o":"food_need","oa":881},{"a":2820,"t":"code","b":[32,145,11],"m":"jsr","o":"start_illness","oa":2961},{"a":2823,"l":"b_0B07","t":"code","b":[173,112,3],"m":"lda","o":"water_timer","oa":880,"x":[2797,2813]},{"a":2826,"t":"code","b":[208,24],"m":"bne","o":"b_0B24","oa":2852},{"a":2828,"t":"code","b":[173,111,3],"m":"lda","o":"water_period","oa":879},{"a":2831,"t":"code","b":[141,112,3],"m":"sta","o":"water_timer","oa":880},{"a":2834,"t":"code","b":[173,110,3],"m":"lda","o":"water_need","oa":878},{"a":2837,"t":"code","b":[238,110,3],"m":"inc","o":"water_need","oa":878},{"a":2840,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":2842,"t":"code","b":[144,8],"m":"bcc","o":"b_0B24","oa":2852},{"a":2844,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":2846,"t":"code","b":[141,110,3],"m":"sta","o":"water_need","oa":878},{"a":2849,"t":"code","b":[32,145,11],"m":"jsr","o":"start_illness","oa":2961},{"a":2852,"l":"b_0B24","t":"code","b":[173,176,11],"m":"lda","o":"tick_flag","oa":2992,"x":[2826,2842]},{"a":2855,"t":"code","b":[240,19],"m":"beq","o":"b_0B3C","oa":2876},{"a":2857,"t":"code","b":[206,234,9],"m":"dec","o":"phone_countdown","oa":2538},{"a":2860,"t":"code","b":[208,14],"m":"bne","o":"b_0B3C","oa":2876},{"a":2862,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":2865,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":2867,"t":"code","b":[141,234,9],"m":"sta","o":"phone_countdown","oa":2538},{"a":2870,"t":"code","b":[141,245,190],"m":"sta","o":"request_flag_phone","oa":48885},{"a":2873,"t":"code","b":[141,76,43],"m":"sta","o":"phone_ringing","oa":11084},{"a":2876,"l":"b_0B3C","t":"code","b":[173,101,3],"m":"lda","o":"illness_level","oa":869,"x":[2855,2860]},{"a":2879,"t":"code","b":[240,113],"m":"beq","o":"daily_schedule","oa":2994},{"a":2881,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":2883,"t":"code","b":[144,5],"m":"bcc","o":"b_0B4A","oa":2890},{"a":2885,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":2887,"t":"code","b":[141,95,3],"m":"sta","o":"mood","oa":863},{"a":2890,"l":"b_0B4A","t":"code","b":[173,176,11],"m":"lda","o":"tick_flag","oa":2992,"x":[2883]},{"a":2893,"t":"code","b":[240,99],"m":"beq","o":"daily_schedule","oa":2994},{"a":2895,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":2897,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":2900,"t":"code","b":[173,103,3],"m":"lda","o":"illness_worsening","oa":871},{"a":2903,"t":"code","b":[208,12],"m":"bne","o":"b_0B65","oa":2917},{"a":2905,"t":"code","b":[173,102,3],"m":"lda","o":"illness_timer","oa":870},{"a":2908,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":2910,"t":"code","b":[144,5],"m":"bcc","o":"b_0B65","oa":2917},{"a":2912,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":2914,"t":"code","b":[141,102,3],"m":"sta","o":"illness_timer","oa":870},{"a":2917,"l":"b_0B65","t":"code","b":[206,102,3],"m":"dec","o":"illness_timer","oa":870,"x":[2903,2910]},{"a":2920,"t":"code","b":[208,72],"m":"bne","o":"daily_schedule","oa":2994},{"a":2922,"t":"code","b":[173,103,3],"m":"lda","o":"illness_worsening","oa":871},{"a":2925,"t":"code","b":[240,17],"m":"beq","o":"b_0B80","oa":2944},{"a":2927,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":2929,"t":"code","b":[141,102,3],"m":"sta","o":"illness_timer","oa":870},{"a":2932,"t":"code","b":[173,101,3],"m":"lda","o":"illness_level","oa":869},{"a":2935,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":2937,"t":"code","b":[176,55],"m":"bcs","o":"daily_schedule","oa":2994},{"a":2939,"t":"code","b":[238,101,3],"m":"inc","o":"illness_level","oa":869},{"a":2942,"t":"code","b":[208,50],"m":"bne","o":"daily_schedule","oa":2994},{"a":2944,"l":"b_0B80","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[2925]},{"a":2946,"t":"code","b":[141,102,3],"m":"sta","o":"illness_timer","oa":870},{"a":2949,"t":"code","b":[206,101,3],"m":"dec","o":"illness_level","oa":869},{"a":2952,"t":"code","b":[208,40],"m":"bne","o":"daily_schedule","oa":2994},{"a":2954,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":2956,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":2959,"t":"code","b":[208,33],"m":"bne","o":"daily_schedule","oa":2994},{"a":2961,"l":"start_illness","c":"Called when the food or water need level rises while already 2 or more. Does nothing while the player has been idle for $2D >= 10 (the screen is blanked). Otherwise, if not yet ill ($0365 = 0), makes him ill: level 1, $0366 = 12 ticks, sprite multicolour 1 ($D026) = 5, green; always sets $0367 so the illness gets worse.","t":"code","b":[165,45],"m":"lda","o":"idle_count_hi","oa":45,"x":[2820,2849]},{"a":2963,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":2965,"t":"code","b":[144,1],"m":"bcc","o":"b_0B98","oa":2968},{"a":2967,"t":"code","b":[96],"m":"rts"},{"a":2968,"l":"b_0B98","t":"code","b":[173,101,3],"m":"lda","o":"illness_level","oa":869,"x":[2965]},{"a":2971,"t":"code","b":[208,13],"m":"bne","o":"b_0BAA","oa":2986},{"a":2973,"t":"code","b":[238,101,3],"m":"inc","o":"illness_level","oa":869},{"a":2976,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":2978,"t":"code","b":[141,102,3],"m":"sta","o":"illness_timer","oa":870},{"a":2981,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":2983,"t":"code","b":[141,38,208],"m":"sta","o":"vic_sprite_mc1"},{"a":2986,"l":"b_0BAA","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[2971]},{"a":2988,"t":"code","b":[141,103,3],"m":"sta","o":"illness_worsening","oa":871},{"a":2991,"t":"code","b":[96],"m":"rts"},{"a":2992,"l":"tick_flag","c":"Set to 1 by house_clock on a tick and cleared at the start of the next pass; the phone countdown, the illness course and daily_schedule run only when it is set.","t":"byte","b":[0],"x":[2541,2590,2852,2890,2994]},{"a":2993,"l":"alarm_pressed","c":"Set to $FF by CTRL A ($2BDE); in schedule step 0 the next tick starts the morning list at once, then it is cleared.","t":"byte","b":[0],"x":[3007,3061,11230]},{"a":2994,"l":"daily_schedule","c":"Part of house_clock, run once per tick: the daily schedule around the alarm clock. $035D is the step, $035E the house hour of the next step, $035C the request flags read by the activity chooser at $E293. Step 0: at hour $034E, tick 0, rings the alarm clock ($2B50/$2B4E/$3574); at tick $034F of the ringing hour, or at once after CTRL A ($0BB1), sets $035C = $81 (run the list at $0352) and goes to step 1 with the next step six hours on. Steps 1 and 2 move on every six hours (the second to hour $034D); step 3 sets $035C = $41 (run the list at $0358) at hour $034D and at hour $034E goes back to step 1. The activity chooser returns it to step 0 ($E2DA) once the $0358 list has run.","t":"code","b":[173,176,11],"m":"lda","o":"tick_flag","oa":2992,"x":[2879,2893,2920,2937,2942,2952,2959]},{"a":2997,"t":"code","b":[240,71],"m":"beq","o":"b_0BFE","oa":3070},{"a":2999,"t":"code","b":[174,121,3],"m":"ldx","o":"house_hour","oa":889},{"a":3002,"t":"code","b":[173,93,3],"m":"lda","o":"schedule_step","oa":861},{"a":3005,"t":"code","b":[208,66],"m":"bne","o":"b_0C01","oa":3073},{"a":3007,"t":"code","b":[173,177,11],"m":"lda","o":"alarm_pressed","oa":2993},{"a":3010,"t":"code","b":[208,42],"m":"bne","o":"b_0BEE","oa":3054},{"a":3012,"t":"code","b":[173,78,3],"m":"lda","o":"alarm_hour","oa":846},{"a":3015,"t":"code","b":[205,121,3],"m":"cmp","o":"house_hour","oa":889},{"a":3018,"t":"code","b":[208,21],"m":"bne","o":"b_0BE1","oa":3041},{"a":3020,"t":"code","b":[173,122,3],"m":"lda","o":"house_tick","oa":890},{"a":3023,"t":"code","b":[208,16],"m":"bne","o":"b_0BE1","oa":3041},{"a":3025,"t":"code","b":[173,80,43],"m":"lda","o":"alarm_rang","oa":11088},{"a":3028,"t":"code","b":[208,11],"m":"bne","o":"b_0BE1","oa":3041},{"a":3030,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":3032,"t":"code","b":[141,116,53],"m":"sta","o":"snd_req_alarm","oa":13684},{"a":3035,"t":"code","b":[141,78,43],"m":"sta","o":"alarm_rings_left","oa":11086},{"a":3038,"t":"code","b":[141,80,43],"m":"sta","o":"alarm_rang","oa":11088},{"a":3041,"l":"b_0BE1","t":"code","b":[173,80,43],"m":"lda","o":"alarm_rang","oa":11088,"x":[3018,3023,3028]},{"a":3044,"t":"code","b":[240,24],"m":"beq","o":"b_0BFE","oa":3070},{"a":3046,"t":"code","b":[173,79,3],"m":"lda","o":"alarm_tick","oa":847},{"a":3049,"t":"code","b":[205,122,3],"m":"cmp","o":"house_tick","oa":890},{"a":3052,"t":"code","b":[208,16],"m":"bne","o":"b_0BFE","oa":3070},{"a":3054,"l":"b_0BEE","t":"code","b":[169,129],"m":"lda","o":"#$81","x":[3010]},{"a":3056,"t":"code","b":[141,92,3],"m":"sta","o":"list_request","oa":860},{"a":3059,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":3061,"t":"code","b":[141,177,11],"m":"sta","o":"alarm_pressed","oa":2993},{"a":3064,"t":"code","b":[32,68,12],"m":"jsr","o":"schedule_in_6_hours","oa":3140},{"a":3067,"t":"code","b":[76,28,12],"m":"jmp","o":"j_0C1C","oa":3100},{"a":3070,"l":"b_0BFE","t":"code","b":[76,67,12],"m":"jmp","o":"r_0C43","oa":3139,"x":[2997,3044,3052]},{"a":3073,"l":"b_0C01","t":"code","b":[201,1],"m":"cmp","o":"#$01","x":[3005]},{"a":3075,"t":"code","b":[208,11],"m":"bne","o":"b_0C10","oa":3088},{"a":3077,"t":"code","b":[236,94,3],"m":"cpx","o":"schedule_next_hour","oa":862},{"a":3080,"t":"code","b":[208,57],"m":"bne","o":"r_0C43","oa":3139},{"a":3082,"t":"code","b":[32,68,12],"m":"jsr","o":"schedule_in_6_hours","oa":3140},{"a":3085,"t":"code","b":[76,28,12],"m":"jmp","o":"j_0C1C","oa":3100},{"a":3088,"l":"b_0C10","t":"code","b":[201,2],"m":"cmp","o":"#$02","x":[3075]},{"a":3090,"t":"code","b":[208,13],"m":"bne","o":"b_0C21","oa":3105},{"a":3092,"t":"code","b":[236,94,3],"m":"cpx","o":"schedule_next_hour","oa":862},{"a":3095,"t":"code","b":[208,42],"m":"bne","o":"r_0C43","oa":3139},{"a":3097,"t":"code","b":[32,84,12],"m":"jsr","o":"schedule_at_late_hour","oa":3156},{"a":3100,"l":"j_0C1C","t":"code","b":[238,93,3],"m":"inc","o":"schedule_step","oa":861,"x":[3067,3085]},{"a":3103,"t":"code","b":[208,34],"m":"bne","o":"r_0C43","oa":3139},{"a":3105,"l":"b_0C21","t":"code","b":[173,92,3],"m":"lda","o":"list_request","oa":860,"x":[3090]},{"a":3108,"t":"code","b":[208,12],"m":"bne","o":"b_0C32","oa":3122},{"a":3110,"t":"code","b":[236,94,3],"m":"cpx","o":"schedule_next_hour","oa":862},{"a":3113,"t":"code","b":[208,24],"m":"bne","o":"r_0C43","oa":3139},{"a":3115,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":3117,"t":"code","b":[141,92,3],"m":"sta","o":"list_request","oa":860},{"a":3120,"t":"code","b":[208,17],"m":"bne","o":"r_0C43","oa":3139},{"a":3122,"l":"b_0C32","t":"code","b":[236,78,3],"m":"cpx","o":"alarm_hour","oa":846,"x":[3108]},{"a":3125,"t":"code","b":[208,12],"m":"bne","o":"r_0C43","oa":3139},{"a":3127,"t":"code","b":[32,68,12],"m":"jsr","o":"schedule_in_6_hours","oa":3140},{"a":3130,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":3132,"t":"code","b":[142,93,3],"m":"stx","o":"schedule_step","oa":861},{"a":3135,"t":"code","b":[202],"m":"dex"},{"a":3136,"t":"code","b":[142,92,3],"m":"stx","o":"list_request","oa":860},{"a":3139,"l":"r_0C43","t":"code","b":[96],"m":"rts","x":[3070,3080,3095,3103,3113,3120,3125]},{"a":3140,"l":"schedule_in_6_hours","c":"Sets the schedule's next hour $035E to the house hour $0379 plus 6, wrapped to 0-23.","t":"code","b":[173,121,3],"m":"lda","o":"house_hour","oa":889,"x":[3064,3082,3127]},{"a":3143,"t":"code","b":[24],"m":"clc"},{"a":3144,"t":"code","b":[105,6],"m":"adc","o":"#$06"},{"a":3146,"l":"j_0C4A","t":"code","b":[201,24],"m":"cmp","o":"#$18","x":[3159]},{"a":3148,"t":"code","b":[144,2],"m":"bcc","o":"b_0C50","oa":3152},{"a":3150,"t":"code","b":[233,24],"m":"sbc","o":"#$18"},{"a":3152,"l":"b_0C50","t":"code","b":[141,94,3],"m":"sta","o":"schedule_next_hour","oa":862,"x":[3148]},{"a":3155,"t":"code","b":[96],"m":"rts"},{"a":3156,"l":"schedule_at_late_hour","c":"Sets the schedule's next hour $035E to $034D (23 in this image), wrapped to 0-23.","t":"code","b":[173,77,3],"m":"lda","o":"late_hour","oa":845,"x":[3097]},{"a":3159,"t":"code","b":[76,74,12],"m":"jmp","o":"j_0C4A","oa":3146},{"a":3162,"l":"draw_clock_hand","c":"Draws one hand of the wall clock by clearing 2-bit pixels in the 8 x 16 clock area at $6D90/$6ED0. A = length in steps (3 hour hand, 5 minute hand), X = position (0-11 for minutes; BCD 1-$13 for hours) looked up in clock_hand_dirs: its low nibble is the start in clock_hand_steps and its high nibble flips the steps' directions. Works in $18 (flips), $19 (steps left), $1A (step index), $1B (pixel mask), $1C (byte offset: bits 0-2 row, bit 3 right cell, bit 7 lower cell row), $1D (temp). Calls $5B2A before and $5B29 after each bitmap write (both are RTS here).","t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25,"x":[2772,2791]},{"a":3164,"t":"code","b":[189,6,13],"m":"lda","o":"clock_hand_dirs,x","oa":3334},{"a":3167,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":3169,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":3171,"t":"code","b":[133,26],"m":"sta","o":"tmp_ptr_b","oa":26},{"a":3173,"t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":3175,"t":"code","b":[133,27],"m":"sta","o":"tmp_ptr_b_hi","oa":27},{"a":3177,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":3179,"t":"code","b":[133,28],"m":"sta","o":"tmp_ptr_c","oa":28},{"a":3181,"l":"j_0C6D","t":"code","b":[166,26],"m":"ldx","o":"tmp_ptr_b","oa":26,"x":[3310]},{"a":3183,"t":"code","b":[189,242,12],"m":"lda","o":"clock_hand_steps,x","oa":3314},{"a":3186,"t":"code","b":[69,24],"m":"eor","o":"tmp_ptr_a","oa":24},{"a":3188,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":3190,"t":"code","b":[240,112],"m":"beq","o":"b_0CE8","oa":3304},{"a":3192,"t":"code","b":[72],"m":"pha"},{"a":3193,"t":"code","b":[133,29],"m":"sta","o":"tmp_ptr_c_hi","oa":29},{"a":3195,"t":"code","b":[41,32],"m":"and","o":"#$20"},{"a":3197,"t":"code","b":[240,27],"m":"beq","o":"b_0C9A","oa":3226},{"a":3199,"t":"code","b":[165,29],"m":"lda","o":"tmp_ptr_c_hi","oa":29},{"a":3201,"t":"code","b":[48,21],"m":"bmi","o":"b_0C98","oa":3224},{"a":3203,"t":"code","b":[165,28],"m":"lda","o":"tmp_ptr_c","oa":28},{"a":3205,"t":"code","b":[72],"m":"pha"},{"a":3206,"t":"code","b":[41,248],"m":"and","o":"#$F8"},{"a":3208,"t":"code","b":[133,28],"m":"sta","o":"tmp_ptr_c","oa":28},{"a":3210,"t":"code","b":[104],"m":"pla"},{"a":3211,"t":"code","b":[24],"m":"clc"},{"a":3212,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":3214,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":3216,"t":"code","b":[5,28],"m":"ora","o":"tmp_ptr_c","oa":28},{"a":3218,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":3220,"t":"code","b":[133,28],"m":"sta","o":"tmp_ptr_c","oa":28},{"a":3222,"t":"code","b":[208,2],"m":"bne","o":"b_0C9A","oa":3226},{"a":3224,"l":"b_0C98","t":"code","b":[198,28],"m":"dec","o":"tmp_ptr_c","oa":28,"x":[3201]},{"a":3226,"l":"b_0C9A","t":"code","b":[104],"m":"pla","x":[3197,3222]},{"a":3227,"t":"code","b":[10],"m":"asl","o":"a"},{"a":3228,"t":"code","b":[133,29],"m":"sta","o":"tmp_ptr_c_hi","oa":29},{"a":3230,"t":"code","b":[41,32],"m":"and","o":"#$20"},{"a":3232,"t":"code","b":[240,37],"m":"beq","o":"b_0CC7","oa":3271},{"a":3234,"t":"code","b":[165,29],"m":"lda","o":"tmp_ptr_c_hi","oa":29},{"a":3236,"t":"code","b":[48,9],"m":"bmi","o":"b_0CAF","oa":3247},{"a":3238,"t":"code","b":[56],"m":"sec"},{"a":3239,"t":"code","b":[38,27],"m":"rol","o":"tmp_ptr_b_hi","oa":27},{"a":3241,"t":"code","b":[56],"m":"sec"},{"a":3242,"t":"code","b":[38,27],"m":"rol","o":"tmp_ptr_b_hi","oa":27},{"a":3244,"t":"code","b":[76,199,12],"m":"jmp","o":"b_0CC7","oa":3271},{"a":3247,"l":"b_0CAF","t":"code","b":[165,27],"m":"lda","o":"tmp_ptr_b_hi","oa":27,"x":[3236]},{"a":3249,"t":"code","b":[201,252],"m":"cmp","o":"#$FC"},{"a":3251,"t":"code","b":[208,6],"m":"bne","o":"b_0CBB","oa":3259},{"a":3253,"t":"code","b":[169,63],"m":"lda","o":"#$3F"},{"a":3255,"t":"code","b":[133,27],"m":"sta","o":"tmp_ptr_b_hi","oa":27},{"a":3257,"t":"code","b":[208,6],"m":"bne","o":"b_0CC1","oa":3265},{"a":3259,"l":"b_0CBB","t":"code","b":[56],"m":"sec","x":[3251]},{"a":3260,"t":"code","b":[102,27],"m":"ror","o":"tmp_ptr_b_hi","oa":27},{"a":3262,"t":"code","b":[56],"m":"sec"},{"a":3263,"t":"code","b":[102,27],"m":"ror","o":"tmp_ptr_b_hi","oa":27},{"a":3265,"l":"b_0CC1","t":"code","b":[165,28],"m":"lda","o":"tmp_ptr_c","oa":28,"x":[3257]},{"a":3267,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":3269,"t":"code","b":[133,28],"m":"sta","o":"tmp_ptr_c","oa":28},{"a":3271,"l":"b_0CC7","t":"code","b":[32,42,91],"m":"jsr","o":"hook_before_draw","oa":23338,"x":[3232,3244]},{"a":3274,"t":"code","b":[166,28],"m":"ldx","o":"tmp_ptr_c","oa":28},{"a":3276,"t":"code","b":[48,11],"m":"bmi","o":"b_0CD9","oa":3289},{"a":3278,"t":"code","b":[189,144,109],"m":"lda","o":"clock_centre_top,x","oa":28048},{"a":3281,"t":"code","b":[37,27],"m":"and","o":"tmp_ptr_b_hi","oa":27},{"a":3283,"t":"code","b":[157,144,109],"m":"sta","o":"clock_centre_top,x","oa":28048},{"a":3286,"t":"code","b":[76,229,12],"m":"jmp","o":"j_0CE5","oa":3301},{"a":3289,"l":"b_0CD9","t":"code","b":[138],"m":"txa","x":[3276]},{"a":3290,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":3292,"t":"code","b":[170],"m":"tax"},{"a":3293,"t":"code","b":[189,208,110],"m":"lda","o":"clock_centre_bottom,x","oa":28368},{"a":3296,"t":"code","b":[37,27],"m":"and","o":"tmp_ptr_b_hi","oa":27},{"a":3298,"t":"code","b":[157,208,110],"m":"sta","o":"clock_centre_bottom,x","oa":28368},{"a":3301,"l":"j_0CE5","t":"code","b":[32,41,91],"m":"jsr","o":"hook_after_draw","oa":23337,"x":[3286]},{"a":3304,"l":"b_0CE8","t":"code","b":[230,26],"m":"inc","o":"tmp_ptr_b","oa":26,"x":[3190]},{"a":3306,"t":"code","b":[198,25],"m":"dec","o":"tmp_ptr_a_hi","oa":25},{"a":3308,"t":"code","b":[240,3],"m":"beq","o":"r_0CF1","oa":3313},{"a":3310,"t":"code","b":[76,109,12],"m":"jmp","o":"j_0C6D","oa":3181},{"a":3313,"l":"r_0CF1","t":"code","b":[96],"m":"rts","x":[3308]},{"a":3314,"l":"clock_hand_steps","c":"Steps for draw_clock_hand, 20 bytes, one per pixel of a hand: bits 5 and 7 of the high nibble move one row (bit 7 up, else down) and bits 4 and 6 (after the shift at $0C9B) move one 2-bit pixel (left or right); a step whose moves cancel after the direction flip draws nothing.","t":"byte","b":[160,160,160,160,160,160,240,160],"x":[3183]},{"a":3322,"t":"byte","b":[240,160,240,240,0,240,0,80]},{"a":3330,"t":"byte","b":[80,0,80,0]},{"a":3334,"l":"clock_hand_dirs","c":"Hand positions for draw_clock_hand, indexed 0-19 (minutes / 5, or the hour in BCD so $10-$13 are hours 10-13): low nibble = first entry in clock_hand_steps, high nibble = direction flips. Indexes 12-15 are not valid BCD hours.","t":"byte","b":[0,5,10,15,138,133,128,197],"x":[3164]},{"a":3342,"t":"byte","b":[202,79,74,69,0,5,0,0]},{"a":3350,"t":"byte","b":[74,69,0,5]},{"a":3354,"l":"clock_face_top","c":"The wall clock's face, top half: 16 bytes of multicolour bitmap (two cells side by side) copied to $6D90 by draw_wall_clock before the hands are drawn.","t":"byte","b":[6,149,85,85,85,85,85,84],"x":[2739]},{"a":3362,"t":"byte","b":[64,88,84,85,86,85,85,86]},{"a":3370,"l":"clock_face_bottom","c":"The wall clock's face, bottom half: 16 bytes copied to $6ED0 (the cells below $6D90).","t":"byte","b":[85,85,85,85,85,149,6,0],"x":[2745]},{"a":3378,"t":"byte","b":[85,85,86,85,84,88,64,0]},{"a":3386,"l":"spr_enable_shadow","c":"Shadow of $D015 (sprite enable), rebuilt by update_figure_sprites ($11B6 on) from the figures' visible flags (bit 7 of $03C4-$03C8) and the slots they hold, then written to the VIC at $1299.","t":"byte","b":[254],"x":[4545,4562,4573,4576,4618,4621,4671,4677,4761]},{"a":3387,"l":"spr_mcolour_shadow","c":"Shadow of $D01C (sprite multicolour): the person's two colour sprites (body and head) and the dog's colour sprite, and figures 2 and 3 when their $0394/$0395 flag is set; written at $129F.","t":"byte","b":[58],"x":[4539,4604,4655,4658,4685,4691,4767]},{"a":3388,"l":"fig_spr1_x","c":"Shadow of the sprite positions, $0D3C-$0D4B = $D000-$D00F, copied with $0D4C to the VIC at $127F. Indexed by 2 x the figure's first hardware sprite: $0D3C,y = X of its first sprite (the figure's X $03A7).","t":"byte","b":[229],"x":[4397,4735]},{"a":3389,"l":"fig_spr1_y","c":"Sprite position shadow, $0D3D,y: Y of a figure's first sprite: its Y $03AF minus $03B3 minus the frame's Y offset $03B7.","t":"byte","b":[222],"x":[4362]},{"a":3390,"l":"fig_spr2_x","c":"Sprite position shadow, $0D3E,y: X of a figure's second sprite: the same X for the dog's outline; for the person, his X plus the head offset $135E (the head's colour sprite).","t":"byte","b":[35],"x":[4404,4416,4423]},{"a":3391,"l":"fig_spr2_y","c":"Sprite position shadow, $0D3F,y: Y of a figure's second sprite: the dog's Y again; for the person, his Y minus $135D (21 lines, one sprite height, for most poses), so the head sprite sits on top of the body sprite.","t":"byte","b":[221],"x":[4369,4381,4388]},{"a":3392,"l":"fig_spr3_x","c":"Sprite position shadow, $0D40,y: X of the person's third sprite (the body outline, same X as the body).","t":"byte","b":[35],"x":[4419]},{"a":3393,"l":"fig_spr3_y","c":"Sprite position shadow, $0D41,y: Y of the person's third sprite (the body outline).","t":"byte","b":[221],"x":[4384]},{"a":3394,"l":"fig_spr4_x","c":"Sprite position shadow, $0D42,y: X of the person's fourth sprite (the head outline, at the head's X).","t":"byte","b":[128],"x":[4426]},{"a":3395,"l":"fig_spr4_y","c":"Sprite position shadow, $0D43,y: Y of the person's fourth sprite (the head outline). The shadow ends at $0D4B.","t":"byte","b":[246,114,97,120,76,114,97,120],"x":[4391]},{"a":3403,"t":"byte","b":[76]},{"a":3404,"l":"spr_xmsb_shadow","c":"Shadow of $D010 (sprite X bit 8): bits for the sprites of each figure whose X high flag ($03AB-$03AE) is set; written with the positions at $127F.","t":"byte","b":[0],"x":[4548,4598,4646,4649,4699,4705]},{"a":3405,"l":"fig_spr1_colour","c":"Shadow of the sprite colours $D027-$D02E ($0D4D-$0D54), copied at $1290. $0D4D,y (y = first sprite) = the figure's colour $0386,x.","t":"byte","b":[1],"x":[4474,4752]},{"a":3406,"l":"fig_spr2_colour","c":"Sprite colour shadow, $0D4E,y: 0 (black) for the dog's outline; for the person, the head colour $038A.","t":"byte","b":[9],"x":[4483,4490,4502]},{"a":3407,"l":"fig_spr3_colour","c":"Sprite colour shadow, $0D4F,y: 0 (black), the person's body outline.","t":"byte","b":[0],"x":[4493]},{"a":3408,"l":"fig_spr4_colour","c":"Sprite colour shadow, $0D50,y: 0 (black), the person's head outline. The colour shadow ends at $0D54.","t":"byte","b":[1,13,9,0,0],"x":[4496]},{"a":3413,"l":"fig_spr1_pointer","c":"Shadow of the sprite pointers $5FF8-$5FFF ($0D55-$0D5C), copied at $128D. $0D55,y = the figure's sprite block $0D68,x (its fill image).","t":"byte","b":[33],"x":[4435,4746]},{"a":3414,"l":"fig_spr2_pointer","c":"Sprite pointer shadow, $0D56,y: the block after the fill (the outline) for the dog; for the person, the head's block $0D6C.","t":"byte","b":[42],"x":[4447,4453,4462]},{"a":3415,"l":"fig_spr3_pointer","c":"Sprite pointer shadow, $0D57,y: the person's body outline (his block + 1).","t":"byte","b":[43],"x":[4456]},{"a":3416,"l":"fig_spr4_pointer","c":"Sprite pointer shadow, $0D58,y: the head outline ($0D6C + 1). The pointer shadow ends at $0D5C.","t":"byte","b":[32,36,38,37,39],"x":[4468]},{"a":3421,"l":"spr_priority_shadow","c":"Shadow of $D01B (sprites behind the background): the person's and the dog's sprites when $0396/$0397 are set, figures 2 and 3 when $0398/$0399 are set; written at $12A5.","t":"byte","b":[0],"x":[4542,4587,4632,4635,4713,4719,4773]},{"a":3422,"l":"unpack_figure","c":"unpack_figure_sprite: the figure number being rebuilt (X is used for other things meanwhile).","t":"byte","b":[4,0],"x":[3758,3871,3882,3921,3981]},{"a":3424,"l":"figure_frame_base","c":"Where each figure's frames start in figure_frames, by figure: body 0, dog $76, figure 2 $B1, figure 3 $B1 (the same set), head $92.","t":"byte","b":[0,118,177,177,146],"x":[3678]},{"a":3429,"l":"head_mood_offsets","c":"Added to the head's graphic number for the mood $035F (its frames below $18): 0, $0F, $1E. The three faces are three runs of graphics, $8A-$98, $99-$A7 and $A8-$B6.","t":"byte","b":[0,15,30],"x":[3701]},{"a":3432,"l":"figure_sprite_block","c":"Each figure's current sprite block (VIC bank 1, address $4000 + 64 x block): body $24, dog $2A, figure 2 $21, figure 3 $20, head $26 in the image; unpack_figure_sprite flips it by EOR 8 before each rebuild (double buffering, so $24 alternates with $2C). The outline built for figures 0, 1 and 4 goes in the next block.","t":"byte","b":[36,42,33,32],"x":[3747,3752,4432,4442,5014,5511,5516]},{"a":3436,"l":"head_sprite_block","c":"The head's (figure 4's) entry of figure_sprite_block: read at $116B to make the person's second and fourth sprites (the head's colour sprite, and its outline at +1).","t":"byte","b":[38],"x":[4459]},{"a":3437,"l":"figure_colour_src_lo","c":"Low bytes of the address each figure's colour is loaded from (self-modified LDA at $0FA8): $1393 body, $042D dog, $1394 figure 2, $1395 figure 3, $042E head.","t":"byte","b":[147,45,148,149,46],"x":[3996]},{"a":3442,"l":"figure_colour_src_hi","c":"High bytes of the figure colour addresses, paired with figure_colour_src_lo: $13, $04, $13, $13, $04.","t":"byte","b":[19,4,19,19,4],"x":[4002]},{"a":3447,"l":"figure_frames","c":"Frame table: the graphic number for each figure frame, indexed by frame + figure_frame_base. Graphic n's packed image is found through the word at $E453 + 2n. $0D77-$0DEC: the person's body, 118 entries (graphics 0-$61); entries $5D-$75 are the frames 0-$18 used instead while $0391 is set.","t":"byte","b":[0,1,2,3,4,1,6,7],"x":[3686]},{"a":3455,"t":"byte","b":[43,9,10,11,12,20,21,22]},{"a":3463,"t":"byte","b":[21,13,14,15,16,17,18,19]},{"a":3471,"t":"byte","b":[18,23,24,25,24,27,28,29]},{"a":3479,"t":"byte","b":[30,31,32,33,34,35,36,37]},{"a":3487,"t":"byte","b":[27,38,39,40,41,42,43,44]},{"a":3495,"t":"byte","b":[45,46,47,48,49,50,51,52]},{"a":3503,"t":"byte","b":[53,54,67,68,32,69,70,71]},{"a":3511,"t":"gap","n":54},{"a":3565,"l":"figure_frames_dog","c":"Frame table, the dog's part: frames 0-$1B. Frames 0-3 and 5-$18 repeat graphics $62-$65 in turn, frame 4 is $66 and frames $19-$1B are $67-$69.","t":"byte","b":[98,99,100,101,102,98,99,100]},{"a":3573,"t":"byte","b":[101,98,99,100,101,98,99,100]},{"a":3581,"t":"byte","b":[101,98,99,100,101,98,99,100]},{"a":3589,"t":"byte","b":[101,103,104,105]},{"a":3593,"l":"figure_frames_head","c":"Frame table, the head's part (figure 4; decoded, frame 0 is a face and frame 4 the back of the hair): frames 0-$17 are three rows of eight directions (graphics $8A-$98; directions 1-3 use the graphics of 7-5, drawn mirrored because $ACF3 sets the head's facing flag $039E for them) and get the mood offset; frames $18-$1E are graphics $83-$89 without it.","t":"byte","b":[138,139,140,141,142,141,140,139]},{"a":3601,"t":"byte","b":[143,144,145,146,147,146,145,144]},{"a":3609,"t":"byte","b":[148,149,150,151,152,151,150,149]},{"a":3617,"t":"byte","b":[131,132,133,134,135,136,137]},{"a":3624,"l":"figure_frames_fig23","c":"Frame table, the part shared by figures 2 and 3: frames 0-$18, graphics $6A-$82, one each.","t":"byte","b":[106,107,108,109,110,111,112,113]},{"a":3632,"t":"byte","b":[114,115,116,117,118,119,120,121]},{"a":3640,"t":"byte","b":[122,123,124,125,126,127,128,129]},{"a":3648,"t":"byte","b":[130]},{"a":3649,"l":"unpack_figure_sprite","c":"Builds the sprite image of figure X (0 the person's body, 1 the dog, 2 and 3 objects, 4 the person's head) for its frame $038B,x. The frame table index is the frame plus figure_frame_base,x; for the body, frames below $19 get +$5D (and $21 becomes $0D) while $0391 is set; for the head, frames below $18 (table index below $AA) have head_mood_offsets[$035F] (0, $0F or $1E) added to the graphic number. The frame table gives a graphic number; the graphic's packed data is found through the offset table at $E453 (stored offset - $5000 + $E453). The figure's sprite block ($0D68,x) is flipped between two buffers (EOR 8) and the data unpacked into $4000 + 64 * block: a count byte with bit 7 set copies (n AND $7F) * 3 literal bytes, otherwise the next three bytes are repeated n times, until 61 bytes are written. If the facing flag $039A,x is set each row is mirrored (s_135F, left and right bytes swapped) and, for the body and the head, moved one multicolour pixel. Then columns are clipped off by s_13AC when $0381,x is set, the figure's colour is stored in $0386,x through the self-modified LDA at $0FA8, and for figures 0, 1 and 4 the hires outline sprite is built in the next block by s_12B7.","t":"code","b":[189,139,3],"m":"lda","o":"fig_frame,x","oa":907,"x":[4118]},{"a":3652,"t":"code","b":[168],"m":"tay"},{"a":3653,"t":"code","b":[138],"m":"txa"},{"a":3654,"t":"code","b":[208,20],"m":"bne","o":"b_0E5C","oa":3676},{"a":3656,"t":"code","b":[173,145,3],"m":"lda","o":"carrying","oa":913},{"a":3659,"t":"code","b":[240,15],"m":"beq","o":"b_0E5C","oa":3676},{"a":3661,"t":"code","b":[192,33],"m":"cpy","o":"#$21"},{"a":3663,"t":"code","b":[208,2],"m":"bne","o":"b_0E53","oa":3667},{"a":3665,"t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":3667,"l":"b_0E53","t":"code","b":[192,25],"m":"cpy","o":"#$19","x":[3663]},{"a":3669,"t":"code","b":[176,5],"m":"bcs","o":"b_0E5C","oa":3676},{"a":3671,"t":"code","b":[152],"m":"tya"},{"a":3672,"t":"code","b":[24],"m":"clc"},{"a":3673,"t":"code","b":[105,93],"m":"adc","o":"#$5D"},{"a":3675,"t":"code","b":[168],"m":"tay"},{"a":3676,"l":"b_0E5C","t":"code","b":[152],"m":"tya","x":[3654,3659,3669]},{"a":3677,"t":"code","b":[24],"m":"clc"},{"a":3678,"t":"code","b":[125,96,13],"m":"adc","o":"figure_frame_base,x","oa":3424},{"a":3681,"t":"code","b":[168],"m":"tay"},{"a":3682,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":3684,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":3686,"t":"code","b":[185,119,13],"m":"lda","o":"figure_frames,y","oa":3447},{"a":3689,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":3691,"t":"code","b":[208,11],"m":"bne","o":"b_0E78","oa":3704},{"a":3693,"t":"code","b":[192,170],"m":"cpy","o":"#$AA"},{"a":3695,"t":"code","b":[176,7],"m":"bcs","o":"b_0E78","oa":3704},{"a":3697,"t":"code","b":[172,95,3],"m":"ldy","o":"mood","oa":863},{"a":3700,"t":"code","b":[24],"m":"clc"},{"a":3701,"t":"code","b":[121,101,13],"m":"adc","o":"head_mood_offsets,y","oa":3429},{"a":3704,"l":"b_0E78","t":"code","b":[10],"m":"asl","o":"a","x":[3691,3695]},{"a":3705,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":3707,"t":"code","b":[38,25],"m":"rol","o":"tmp_ptr_a_hi","oa":25},{"a":3709,"t":"code","b":[165,24],"m":"lda","o":"tmp_ptr_a","oa":24},{"a":3711,"t":"code","b":[24],"m":"clc"},{"a":3712,"t":"code","b":[105,83],"m":"adc","o":"#$53"},{"a":3714,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":3716,"t":"code","b":[169,228],"m":"lda","o":"#$E4"},{"a":3718,"t":"code","b":[101,25],"m":"adc","o":"tmp_ptr_a_hi","oa":25},{"a":3720,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":3722,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":3724,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":3726,"t":"code","b":[72],"m":"pha"},{"a":3727,"t":"code","b":[200],"m":"iny"},{"a":3728,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":3730,"t":"code","b":[56],"m":"sec"},{"a":3731,"t":"code","b":[233,80],"m":"sbc","o":"#$50"},{"a":3733,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":3735,"t":"code","b":[104],"m":"pla"},{"a":3736,"t":"code","b":[24],"m":"clc"},{"a":3737,"t":"code","b":[105,83],"m":"adc","o":"#$53"},{"a":3739,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":3741,"t":"code","b":[165,25],"m":"lda","o":"tmp_ptr_a_hi","oa":25},{"a":3743,"t":"code","b":[105,228],"m":"adc","o":"#$E4"},{"a":3745,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":3747,"t":"code","b":[189,104,13],"m":"lda","o":"figure_sprite_block,x","oa":3432},{"a":3750,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":3752,"t":"code","b":[157,104,13],"m":"sta","o":"figure_sprite_block,x","oa":3432},{"a":3755,"t":"code","b":[32,150,19],"m":"jsr","o":"sprite_addr","oa":5014},{"a":3758,"t":"code","b":[142,94,13],"m":"stx","o":"unpack_figure","oa":3422},{"a":3761,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":3763,"t":"code","b":[141,234,14],"m":"sta","o":"unpack_src_index","oa":3818},{"a":3766,"t":"code","b":[141,235,14],"m":"sta","o":"unpack_dst_index","oa":3819},{"a":3769,"l":"b_0EB9","t":"code","b":[173,235,14],"m":"lda","o":"unpack_dst_index","oa":3819,"x":[3816,3869]},{"a":3772,"t":"code","b":[201,61],"m":"cmp","o":"#$3D"},{"a":3774,"t":"code","b":[176,95],"m":"bcs","o":"b_0F1F","oa":3871},{"a":3776,"t":"code","b":[172,234,14],"m":"ldy","o":"unpack_src_index","oa":3818},{"a":3779,"t":"code","b":[238,234,14],"m":"inc","o":"unpack_src_index","oa":3818},{"a":3782,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":3784,"t":"code","b":[16,34],"m":"bpl","o":"unpack_rle_rows","oa":3820},{"a":3786,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":3788,"t":"code","b":[141,135,19],"m":"sta","o":"spr_scratch","oa":4999},{"a":3791,"t":"code","b":[10],"m":"asl","o":"a"},{"a":3792,"t":"code","b":[24],"m":"clc"},{"a":3793,"t":"code","b":[109,135,19],"m":"adc","o":"spr_scratch","oa":4999},{"a":3796,"t":"code","b":[170],"m":"tax"},{"a":3797,"l":"b_0ED5","t":"code","b":[172,234,14],"m":"ldy","o":"unpack_src_index","oa":3818,"x":[3814]},{"a":3800,"t":"code","b":[238,234,14],"m":"inc","o":"unpack_src_index","oa":3818},{"a":3803,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":3805,"t":"code","b":[172,235,14],"m":"ldy","o":"unpack_dst_index","oa":3819},{"a":3808,"t":"code","b":[238,235,14],"m":"inc","o":"unpack_dst_index","oa":3819},{"a":3811,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3813,"t":"code","b":[202],"m":"dex"},{"a":3814,"t":"code","b":[208,237],"m":"bne","o":"b_0ED5","oa":3797},{"a":3816,"t":"code","b":[240,207],"m":"beq","o":"b_0EB9","oa":3769},{"a":3818,"l":"unpack_src_index","c":"unpack_figure_sprite: index into the packed graphic data at ($18). Two data bytes inside the code (the BEQ at $0EE8 always skips them).","t":"byte","b":[33],"x":[3763,3776,3779,3797,3800,3836,3842]},{"a":3819,"l":"unpack_dst_index","c":"unpack_figure_sprite: number of sprite bytes written so far at ($1A); unpacking stops at 61 ($3D).","t":"byte","b":[63],"x":[3766,3769,3805,3808,3845,3866]},{"a":3820,"l":"unpack_rle_rows","c":"unpack_figure_sprite continued: a count byte below $80 repeats the next three bytes ($1C, $1D, $1E) as that many sprite rows. From $0F1F the finished image is mirrored when the figure's facing flag $039A,x is set: each 3-byte row has its bytes swapped end for end and each byte's 2-bit pixels reversed (s_135F); for the body and the head (figures 0 and 4) the mirrored row is also shifted left one multicolour pixel.","t":"code","b":[170],"m":"tax","x":[3784]},{"a":3821,"t":"code","b":[200],"m":"iny"},{"a":3822,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":3824,"t":"code","b":[133,28],"m":"sta","o":"tmp_ptr_c","oa":28},{"a":3826,"t":"code","b":[200],"m":"iny"},{"a":3827,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":3829,"t":"code","b":[133,29],"m":"sta","o":"tmp_ptr_c_hi","oa":29},{"a":3831,"t":"code","b":[200],"m":"iny"},{"a":3832,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":3834,"t":"code","b":[133,30],"m":"sta","o":"tmp_ptr_d","oa":30},{"a":3836,"t":"code","b":[173,234,14],"m":"lda","o":"unpack_src_index","oa":3818},{"a":3839,"t":"code","b":[24],"m":"clc"},{"a":3840,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":3842,"t":"code","b":[141,234,14],"m":"sta","o":"unpack_src_index","oa":3818},{"a":3845,"t":"code","b":[172,235,14],"m":"ldy","o":"unpack_dst_index","oa":3819},{"a":3848,"l":"b_0F08","t":"code","b":[165,28],"m":"lda","o":"tmp_ptr_c","oa":28,"x":[3864]},{"a":3850,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3852,"t":"code","b":[200],"m":"iny"},{"a":3853,"t":"code","b":[165,29],"m":"lda","o":"tmp_ptr_c_hi","oa":29},{"a":3855,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3857,"t":"code","b":[200],"m":"iny"},{"a":3858,"t":"code","b":[165,30],"m":"lda","o":"tmp_ptr_d","oa":30},{"a":3860,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3862,"t":"code","b":[200],"m":"iny"},{"a":3863,"t":"code","b":[202],"m":"dex"},{"a":3864,"t":"code","b":[208,238],"m":"bne","o":"b_0F08","oa":3848},{"a":3866,"t":"code","b":[140,235,14],"m":"sty","o":"unpack_dst_index","oa":3819},{"a":3869,"t":"code","b":[240,154],"m":"beq","o":"b_0EB9","oa":3769},{"a":3871,"l":"b_0F1F","t":"code","b":[174,94,13],"m":"ldx","o":"unpack_figure","oa":3422,"x":[3774]},{"a":3874,"t":"code","b":[189,154,3],"m":"lda","o":"fig_mirror,x","oa":922},{"a":3877,"t":"code","b":[208,3],"m":"bne","o":"b_0F2A","oa":3882},{"a":3879,"t":"code","b":[76,148,15],"m":"jmp","o":"figure_colour_and_outline","oa":3988},{"a":3882,"l":"b_0F2A","t":"code","b":[142,94,13],"m":"stx","o":"unpack_figure","oa":3422,"x":[3877]},{"a":3885,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":3887,"l":"b_0F2F","t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26,"x":[3979]},{"a":3889,"t":"code","b":[32,95,19],"m":"jsr","o":"mirror_mc_byte","oa":4959},{"a":3892,"t":"code","b":[72],"m":"pha"},{"a":3893,"t":"code","b":[136],"m":"dey"},{"a":3894,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":3896,"t":"code","b":[32,95,19],"m":"jsr","o":"mirror_mc_byte","oa":4959},{"a":3899,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3901,"t":"code","b":[136],"m":"dey"},{"a":3902,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":3904,"t":"code","b":[32,95,19],"m":"jsr","o":"mirror_mc_byte","oa":4959},{"a":3907,"t":"code","b":[141,170,19],"m":"sta","o":"clip_save_x","oa":5034},{"a":3910,"t":"code","b":[104],"m":"pla"},{"a":3911,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3913,"t":"code","b":[173,170,19],"m":"lda","o":"clip_save_x","oa":5034},{"a":3916,"t":"code","b":[200],"m":"iny"},{"a":3917,"t":"code","b":[200],"m":"iny"},{"a":3918,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3920,"t":"code","b":[200],"m":"iny"},{"a":3921,"t":"code","b":[173,94,13],"m":"lda","o":"unpack_figure","oa":3422},{"a":3924,"t":"code","b":[240,4],"m":"beq","o":"b_0F5A","oa":3930},{"a":3926,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":3928,"t":"code","b":[208,45],"m":"bne","o":"b_0F87","oa":3975},{"a":3930,"l":"b_0F5A","t":"code","b":[189,154,3],"m":"lda","o":"fig_mirror,x","oa":922,"x":[3924]},{"a":3933,"t":"code","b":[240,40],"m":"beq","o":"b_0F87","oa":3975},{"a":3935,"t":"code","b":[136],"m":"dey"},{"a":3936,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":3938,"t":"code","b":[10],"m":"asl","o":"a"},{"a":3939,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3941,"t":"code","b":[136],"m":"dey"},{"a":3942,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":3944,"t":"code","b":[42],"m":"rol","o":"a"},{"a":3945,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3947,"t":"code","b":[136],"m":"dey"},{"a":3948,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":3950,"t":"code","b":[42],"m":"rol","o":"a"},{"a":3951,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3953,"t":"code","b":[200],"m":"iny"},{"a":3954,"t":"code","b":[200],"m":"iny"},{"a":3955,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":3957,"t":"code","b":[10],"m":"asl","o":"a"},{"a":3958,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3960,"t":"code","b":[136],"m":"dey"},{"a":3961,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":3963,"t":"code","b":[42],"m":"rol","o":"a"},{"a":3964,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3966,"t":"code","b":[136],"m":"dey"},{"a":3967,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":3969,"t":"code","b":[42],"m":"rol","o":"a"},{"a":3970,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":3972,"t":"code","b":[200],"m":"iny"},{"a":3973,"t":"code","b":[200],"m":"iny"},{"a":3974,"t":"code","b":[200],"m":"iny"},{"a":3975,"l":"b_0F87","t":"code","b":[200],"m":"iny","x":[3928,3933]},{"a":3976,"t":"code","b":[200],"m":"iny"},{"a":3977,"t":"code","b":[192,65],"m":"cpy","o":"#$41"},{"a":3979,"t":"code","b":[144,162],"m":"bcc","o":"b_0F2F","oa":3887},{"a":3981,"t":"code","b":[174,94,13],"m":"ldx","o":"unpack_figure","oa":3422},{"a":3984,"t":"code","b":[76,148,15],"m":"jmp","o":"figure_colour_and_outline","oa":3988},{"a":3987,"l":"clip_row_bytes_left","c":"Byte counter for s_13AC, the column clip at $13AC: counts down the three bytes of each sprite row while it ANDs them with the clip masks from $13EF.","t":"byte","b":[0],"x":[5076,5092]},{"a":3988,"l":"figure_colour_and_outline","c":"unpack_figure_sprite, last part: clips columns off the image with s_13AC when $0381,x is non-zero, loads the figure's colour through the self-modified LDA at $0FA8 into $0386,x, and for figures 0, 1 and 4 points $18/$19 at the new image and $1A/$1B 64 bytes on and calls s_12B7 to build the hires outline sprite (X kept in $1390).","t":"code","b":[189,129,3],"m":"lda","o":"fig_clip,x","oa":897,"x":[3879,3984]},{"a":3991,"t":"code","b":[240,3],"m":"beq","o":"b_0F9C","oa":3996},{"a":3993,"t":"code","b":[32,172,19],"m":"jsr","o":"clip_sprite","oa":5036},{"a":3996,"l":"b_0F9C","t":"code","b":[189,109,13],"m":"lda","o":"figure_colour_src_lo,x","oa":3437,"x":[3991]},{"a":3999,"t":"code","b":[141,169,15],"m":"sta","o":"figure_colour_src_lo_op","oa":4009},{"a":4002,"t":"code","b":[189,114,13],"m":"lda","o":"figure_colour_src_hi,x","oa":3442},{"a":4005,"t":"code","b":[141,170,15],"m":"sta","o":"figure_colour_src_hi_op","oa":4010},{"a":4008,"s":"Self-modified: the operand of this LDA is set by the two stores above from figure_colour_src_lo/hi ($0D6D/$0D72), so it loads the colour of figure X: $1393 body, $042D dog, $1394 and $1395 figures 2 and 3, $042E head. The result goes to $0386,x.","t":"code","b":[173,46,4],"m":"lda","o":"head_colour","oa":1070},{"a":4009,"t":"note","l":"figure_colour_src_lo_op","c":"Operand low byte of the LDA at $0FA8, rewritten per figure from $0D6D,x.","note":"inside the item at $0FA8","x":[3999]},{"a":4010,"t":"note","l":"figure_colour_src_hi_op","c":"Operand high byte of the LDA at $0FA8, rewritten per figure from $0D72,x.","note":"inside the item at $0FA8","x":[4005]},{"a":4011,"t":"code","b":[157,134,3],"m":"sta","o":"fig_colour,x","oa":902},{"a":4014,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":4016,"t":"code","b":[240,4],"m":"beq","o":"b_0FB6","oa":4022},{"a":4018,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":4020,"t":"code","b":[176,27],"m":"bcs","o":"r_0FD1","oa":4049},{"a":4022,"l":"b_0FB6","t":"code","b":[165,26],"m":"lda","o":"tmp_ptr_b","oa":26,"x":[4016]},{"a":4024,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":4026,"t":"code","b":[24],"m":"clc"},{"a":4027,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":4029,"t":"code","b":[133,26],"m":"sta","o":"tmp_ptr_b","oa":26},{"a":4031,"t":"code","b":[165,27],"m":"lda","o":"tmp_ptr_b_hi","oa":27},{"a":4033,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":4035,"t":"code","b":[24],"m":"clc"},{"a":4036,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":4038,"t":"code","b":[133,27],"m":"sta","o":"tmp_ptr_b_hi","oa":27},{"a":4040,"t":"code","b":[142,144,19],"m":"stx","o":"outline_save_x","oa":5008},{"a":4043,"t":"code","b":[32,183,18],"m":"jsr","o":"build_outline","oa":4791},{"a":4046,"t":"code","b":[174,144,19],"m":"ldx","o":"outline_save_x","oa":5008},{"a":4049,"l":"r_0FD1","t":"code","b":[96],"m":"rts","x":[4020]},{"a":4050,"l":"update_figure_sprites","c":"Main-loop stage 1 (and five times at cold start). Looks from figure 4 down to 0 for one whose flags $03C4,x have bit 1 (new frame) set and rebuilds only that one: for the body (X=0) first takes the head's offsets $135D/$135E from the tables $1437/$1494 by frame; clears bit 1 and sets bit 2; reads the frame's Y offset from the figure's table (pointer from $12AD/$12B2) into $03B7,x, setting bit 0 when it changed; then unpack_figure_sprite. It continues past $1000: sorts figures 0-3 on $03B3 to share out the eight hardware sprites (four for the person, two for the dog, one each for figures 2 and 3, the front one getting the lowest numbers), refreshes the shadow registers $0D3A-$0D5D for figures that changed, waits for raster line $FA and copies them to the VIC.","t":"code","b":[162,4],"m":"ldx","o":"#$04","x":[1243,2361]},{"a":4052,"l":"b_0FD4","t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964,"x":[4125]},{"a":4055,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":4057,"t":"code","b":[240,65],"m":"beq","o":"b_101C","oa":4124},{"a":4059,"t":"code","b":[138],"m":"txa"},{"a":4060,"t":"code","b":[208,15],"m":"bne","o":"b_0FED","oa":4077},{"a":4062,"t":"code","b":[172,139,3],"m":"ldy","o":"fig_frame","oa":907},{"a":4065,"t":"code","b":[185,55,20],"m":"lda","o":"person_upper_dy_by_pose,y","oa":5175},{"a":4068,"t":"code","b":[141,93,19],"m":"sta","o":"person_upper_dy","oa":4957},{"a":4071,"t":"code","b":[185,148,20],"m":"lda","o":"person_upper_dx_by_pose,y","oa":5268},{"a":4074,"t":"code","b":[141,94,19],"m":"sta","o":"person_upper_dx","oa":4958},{"a":4077,"l":"b_0FED","t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964,"x":[4060]},{"a":4080,"t":"code","b":[41,253],"m":"and","o":"#$FD"},{"a":4082,"t":"code","b":[9,4],"m":"ora","o":"#$04"},{"a":4084,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":4087,"t":"code","b":[189,173,18],"m":"lda","o":"pose_yoff_lo,x","oa":4781},{"a":4090,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":4092,"t":"code","b":[189,178,18],"m":"lda","o":"pose_yoff_hi,x","oa":4786},{"a":4095,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":4096,"t":"note","l":"sprite_frame_1000","c":"Not an instruction: the operand byte of the STA $19 at $0FFF. The sprite frame routine at $0FD2 (main loop stage 1, $0939; also called by the cold start at $04DB) crosses into this range here, and this label only marks the boundary. The code resumes at sprite_pose_offset ($1001).","note":"inside the item at $0FFF"},{"a":4097,"l":"sprite_pose_offset","c":"Continuation of the sprite frame routine ($0FD2), inside its loop over figures 4 down to 0, for the first one whose pose or facing changed (bit 1 of $03C4,x; $0FED has already swapped it for bit 2). Reads the figure's per-pose Y offset from its table (pose_yoff_lo/pose_yoff_hi, index = pose $038B,x) into $03B7,x, setting bit 0 of $03C4,x when it changed; then rebuilds the figure's sprite image ($0E41) and goes to sprite_depth_sort, so only one image is rebuilt per pass. When no figure needs one, the loop ($101C) runs out into the sort. Figures: 0 = the person's lower body, 1 = the dog, 2 and 3 = one-sprite objects, 4 = the person's upper body.","t":"code","b":[188,139,3],"m":"ldy","o":"fig_frame,x","oa":907},{"a":4100,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":4102,"t":"code","b":[221,183,3],"m":"cmp","o":"fig_frame_dy,x","oa":951},{"a":4105,"t":"code","b":[157,183,3],"m":"sta","o":"fig_frame_dy,x","oa":951},{"a":4108,"t":"code","b":[240,8],"m":"beq","o":"b_1016","oa":4118},{"a":4110,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":4113,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":4115,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":4118,"l":"b_1016","t":"code","b":[32,65,14],"m":"jsr","o":"unpack_figure_sprite","oa":3649,"x":[4108]},{"a":4121,"t":"code","b":[76,31,16],"m":"jmp","o":"sprite_depth_sort","oa":4127},{"a":4124,"l":"b_101C","t":"code","b":[202],"m":"dex","x":[4057]},{"a":4125,"t":"code","b":[16,181],"m":"bpl","o":"b_0FD4","oa":4052},{"a":4127,"l":"sprite_depth_sort","c":"Gives figures 0-3 their hardware sprites by depth. Key = depth $03B3,x times 8 plus a fixed tie-break $03D2,x (1-4); a selection sort puts the order in $03D6. Sprite numbers are then dealt from 0 upward, nearest figure (smallest key) first, so nearer figures get lower-numbered sprites, which the VIC draws in front: the person takes four (lower body, upper body and their two outlines), the dog two, figures 2 and 3 one each, eight in all. A figure whose number changed gets it in $03CD,x, bit 0 of $03C4,x set, and its X high bit, kept as that sprite's bit in $03AB,x, moved to the new bit ($03E3,y).","t":"code","b":[162,3],"m":"ldx","o":"#$03","x":[4121]},{"a":4129,"l":"b_1021","t":"code","b":[189,179,3],"m":"lda","o":"fig_depth,x","oa":947,"x":[4142]},{"a":4132,"t":"code","b":[10],"m":"asl","o":"a"},{"a":4133,"t":"code","b":[10],"m":"asl","o":"a"},{"a":4134,"t":"code","b":[10],"m":"asl","o":"a"},{"a":4135,"t":"code","b":[29,210,3],"m":"ora","o":"sort_tiebreak,x","oa":978},{"a":4138,"t":"code","b":[157,201,3],"m":"sta","o":"sort_key,x","oa":969},{"a":4141,"t":"code","b":[202],"m":"dex"},{"a":4142,"t":"code","b":[16,241],"m":"bpl","o":"b_1021","oa":4129},{"a":4144,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":4146,"l":"b_1032","t":"code","b":[138],"m":"txa","x":[4151]},{"a":4147,"t":"code","b":[157,214,3],"m":"sta","o":"sort_order,x","oa":982},{"a":4150,"t":"code","b":[202],"m":"dex"},{"a":4151,"t":"code","b":[16,249],"m":"bpl","o":"b_1032","oa":4146},{"a":4153,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":4155,"l":"b_103B","t":"code","b":[138],"m":"txa","x":[4211]},{"a":4156,"t":"code","b":[168],"m":"tay"},{"a":4157,"t":"code","b":[132,75],"m":"sty","o":"sort_temp","oa":75},{"a":4159,"t":"code","b":[136],"m":"dey"},{"a":4160,"t":"code","b":[189,201,3],"m":"lda","o":"sort_key,x","oa":969},{"a":4163,"l":"b_1043","t":"code","b":[217,201,3],"m":"cmp","o":"sort_key,y","oa":969,"x":[4174]},{"a":4166,"t":"code","b":[144,5],"m":"bcc","o":"b_104D","oa":4173},{"a":4168,"t":"code","b":[132,75],"m":"sty","o":"sort_temp","oa":75},{"a":4170,"t":"code","b":[185,201,3],"m":"lda","o":"sort_key,y","oa":969},{"a":4173,"l":"b_104D","t":"code","b":[136],"m":"dey","x":[4166]},{"a":4174,"t":"code","b":[16,243],"m":"bpl","o":"b_1043","oa":4163},{"a":4176,"t":"code","b":[164,75],"m":"ldy","o":"sort_temp","oa":75},{"a":4178,"t":"code","b":[189,201,3],"m":"lda","o":"sort_key,x","oa":969},{"a":4181,"t":"code","b":[133,75],"m":"sta","o":"sort_temp","oa":75},{"a":4183,"t":"code","b":[185,201,3],"m":"lda","o":"sort_key,y","oa":969},{"a":4186,"t":"code","b":[157,201,3],"m":"sta","o":"sort_key,x","oa":969},{"a":4189,"t":"code","b":[165,75],"m":"lda","o":"sort_temp","oa":75},{"a":4191,"t":"code","b":[153,201,3],"m":"sta","o":"sort_key,y","oa":969},{"a":4194,"t":"code","b":[189,214,3],"m":"lda","o":"sort_order,x","oa":982},{"a":4197,"t":"code","b":[133,75],"m":"sta","o":"sort_temp","oa":75},{"a":4199,"t":"code","b":[185,214,3],"m":"lda","o":"sort_order,y","oa":982},{"a":4202,"t":"code","b":[157,214,3],"m":"sta","o":"sort_order,x","oa":982},{"a":4205,"t":"code","b":[165,75],"m":"lda","o":"sort_temp","oa":75},{"a":4207,"t":"code","b":[153,214,3],"m":"sta","o":"sort_order,y","oa":982},{"a":4210,"t":"code","b":[202],"m":"dex"},{"a":4211,"t":"code","b":[208,198],"m":"bne","o":"b_103B","oa":4155},{"a":4213,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":4215,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":4217,"t":"code","b":[133,75],"m":"sta","o":"sort_temp","oa":75},{"a":4219,"l":"b_107B","t":"code","b":[190,214,3],"m":"ldx","o":"sort_order,y","oa":982,"x":[4243]},{"a":4222,"t":"code","b":[165,75],"m":"lda","o":"sort_temp","oa":75},{"a":4224,"t":"code","b":[157,201,3],"m":"sta","o":"sort_key,x","oa":969},{"a":4227,"t":"code","b":[230,75],"m":"inc","o":"sort_temp","oa":75},{"a":4229,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":4231,"t":"code","b":[176,9],"m":"bcs","o":"b_1092","oa":4242},{"a":4233,"t":"code","b":[230,75],"m":"inc","o":"sort_temp","oa":75},{"a":4235,"t":"code","b":[138],"m":"txa"},{"a":4236,"t":"code","b":[208,4],"m":"bne","o":"b_1092","oa":4242},{"a":4238,"t":"code","b":[230,75],"m":"inc","o":"sort_temp","oa":75},{"a":4240,"t":"code","b":[230,75],"m":"inc","o":"sort_temp","oa":75},{"a":4242,"l":"b_1092","t":"code","b":[136],"m":"dey","x":[4231,4236]},{"a":4243,"t":"code","b":[16,230],"m":"bpl","o":"b_107B","oa":4219},{"a":4245,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":4247,"l":"b_1097","t":"code","b":[189,201,3],"m":"lda","o":"sort_key,x","oa":969,"x":[4279]},{"a":4250,"t":"code","b":[221,205,3],"m":"cmp","o":"fig_hw_sprite,x","oa":973},{"a":4253,"t":"code","b":[240,23],"m":"beq","o":"b_10B6","oa":4278},{"a":4255,"t":"code","b":[157,205,3],"m":"sta","o":"fig_hw_sprite,x","oa":973},{"a":4258,"t":"code","b":[168],"m":"tay"},{"a":4259,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":4262,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":4264,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":4267,"t":"code","b":[189,171,3],"m":"lda","o":"fig_x_hi,x","oa":939},{"a":4270,"t":"code","b":[240,6],"m":"beq","o":"b_10B6","oa":4278},{"a":4272,"t":"code","b":[185,227,3],"m":"lda","o":"sprite_bit,y","oa":995},{"a":4275,"t":"code","b":[157,171,3],"m":"sta","o":"fig_x_hi,x","oa":939},{"a":4278,"l":"b_10B6","t":"code","b":[202],"m":"dex","x":[4253,4270]},{"a":4279,"t":"code","b":[16,222],"m":"bpl","o":"b_1097","oa":4247},{"a":4281,"l":"sprite_set_positions","c":"Once figure 4's new image is built (bit 2 of $03C8) keeps only its bit 7 and sets bit 0 of $03C4, so the person is repositioned. Then for figures 3 down to 0 with bit 0 or bit 2 of $03C4,x set (both cleared) writes the shadow registers at the figure's sprite number n = $03CD,x: Y = floor line $03AF,x - depth $03B3,x - pose offset $03B7,x, X = $03A7,x, pointer $0D68,x, colour $0386,x. Figures 0 and 1 also get sprite n+1 at the same place showing the next sprite block (the outline) in colour 0, black. For the person n+1 and n+3 are the upper body (pointer $0D6C, colour $038A) and its outline, placed person_upper_dy lines higher and person_upper_dx pixels across; n+2 is the lower body's outline.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":4283,"t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968},{"a":4286,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":4288,"t":"code","b":[240,16],"m":"beq","o":"b_10D2","oa":4306},{"a":4290,"t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968},{"a":4293,"t":"code","b":[41,128],"m":"and","o":"#$80"},{"a":4295,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":4298,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":4301,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":4303,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":4306,"l":"b_10D2","t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964,"x":[4288,4508]},{"a":4309,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":4311,"t":"code","b":[208,25],"m":"bne","o":"b_10F2","oa":4338},{"a":4313,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":4316,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":4318,"t":"code","b":[208,18],"m":"bne","o":"b_10F2","oa":4338},{"a":4320,"t":"code","b":[138],"m":"txa"},{"a":4321,"t":"code","b":[208,12],"m":"bne","o":"b_10EF","oa":4335},{"a":4323,"t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968},{"a":4326,"t":"code","b":[16,7],"m":"bpl","o":"b_10EF","oa":4335},{"a":4328,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":4331,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":4333,"t":"code","b":[208,3],"m":"bne","o":"b_10F2","oa":4338},{"a":4335,"l":"b_10EF","t":"code","b":[76,153,17],"m":"jmp","o":"j_1199","oa":4505,"x":[4321,4326]},{"a":4338,"l":"b_10F2","t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964,"x":[4311,4318,4333]},{"a":4341,"t":"code","b":[41,250],"m":"and","o":"#$FA"},{"a":4343,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":4346,"t":"code","b":[189,205,3],"m":"lda","o":"fig_hw_sprite,x","oa":973},{"a":4349,"t":"code","b":[10],"m":"asl","o":"a"},{"a":4350,"t":"code","b":[168],"m":"tay"},{"a":4351,"t":"code","b":[189,175,3],"m":"lda","o":"fig_floor_y,x","oa":943},{"a":4354,"t":"code","b":[56],"m":"sec"},{"a":4355,"t":"code","b":[253,179,3],"m":"sbc","o":"fig_depth,x","oa":947},{"a":4358,"t":"code","b":[56],"m":"sec"},{"a":4359,"t":"code","b":[253,183,3],"m":"sbc","o":"fig_frame_dy,x","oa":951},{"a":4362,"t":"code","b":[153,61,13],"m":"sta","o":"fig_spr1_y,y","oa":3389},{"a":4365,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":4367,"t":"code","b":[176,25],"m":"bcs","o":"b_112A","oa":4394},{"a":4369,"t":"code","b":[153,63,13],"m":"sta","o":"fig_spr2_y,y","oa":3391},{"a":4372,"t":"code","b":[224,0],"m":"cpx","o":"#$00"},{"a":4374,"t":"code","b":[208,18],"m":"bne","o":"b_112A","oa":4394},{"a":4376,"t":"code","b":[56],"m":"sec"},{"a":4377,"t":"code","b":[237,93,19],"m":"sbc","o":"person_upper_dy","oa":4957},{"a":4380,"t":"code","b":[72],"m":"pha"},{"a":4381,"t":"code","b":[185,63,13],"m":"lda","o":"fig_spr2_y,y","oa":3391},{"a":4384,"t":"code","b":[153,65,13],"m":"sta","o":"fig_spr3_y,y","oa":3393},{"a":4387,"t":"code","b":[104],"m":"pla"},{"a":4388,"t":"code","b":[153,63,13],"m":"sta","o":"fig_spr2_y,y","oa":3391},{"a":4391,"t":"code","b":[153,67,13],"m":"sta","o":"fig_spr4_y,y","oa":3395},{"a":4394,"l":"b_112A","t":"code","b":[189,167,3],"m":"lda","o":"fig_x,x","oa":935,"x":[4367,4374]},{"a":4397,"t":"code","b":[153,60,13],"m":"sta","o":"fig_spr1_x,y","oa":3388},{"a":4400,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":4402,"t":"code","b":[176,25],"m":"bcs","o":"b_114D","oa":4429},{"a":4404,"t":"code","b":[153,62,13],"m":"sta","o":"fig_spr2_x,y","oa":3390},{"a":4407,"t":"code","b":[224,0],"m":"cpx","o":"#$00"},{"a":4409,"t":"code","b":[208,18],"m":"bne","o":"b_114D","oa":4429},{"a":4411,"t":"code","b":[24],"m":"clc"},{"a":4412,"t":"code","b":[109,94,19],"m":"adc","o":"person_upper_dx","oa":4958},{"a":4415,"t":"code","b":[72],"m":"pha"},{"a":4416,"t":"code","b":[185,62,13],"m":"lda","o":"fig_spr2_x,y","oa":3390},{"a":4419,"t":"code","b":[153,64,13],"m":"sta","o":"fig_spr3_x,y","oa":3392},{"a":4422,"t":"code","b":[104],"m":"pla"},{"a":4423,"t":"code","b":[153,62,13],"m":"sta","o":"fig_spr2_x,y","oa":3390},{"a":4426,"t":"code","b":[153,66,13],"m":"sta","o":"fig_spr4_x,y","oa":3394},{"a":4429,"l":"b_114D","t":"code","b":[188,205,3],"m":"ldy","o":"fig_hw_sprite,x","oa":973,"x":[4402,4409]},{"a":4432,"t":"code","b":[189,104,13],"m":"lda","o":"figure_sprite_block,x","oa":3432},{"a":4435,"t":"code","b":[153,85,13],"m":"sta","o":"fig_spr1_pointer,y","oa":3413},{"a":4438,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":4440,"t":"code","b":[176,29],"m":"bcs","o":"b_1177","oa":4471},{"a":4442,"t":"code","b":[189,104,13],"m":"lda","o":"figure_sprite_block,x","oa":3432},{"a":4445,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":4447,"t":"code","b":[153,86,13],"m":"sta","o":"fig_spr2_pointer,y","oa":3414},{"a":4450,"t":"code","b":[138],"m":"txa"},{"a":4451,"t":"code","b":[208,18],"m":"bne","o":"b_1177","oa":4471},{"a":4453,"t":"code","b":[185,86,13],"m":"lda","o":"fig_spr2_pointer,y","oa":3414},{"a":4456,"t":"code","b":[153,87,13],"m":"sta","o":"fig_spr3_pointer,y","oa":3415},{"a":4459,"t":"code","b":[173,108,13],"m":"lda","o":"head_sprite_block","oa":3436},{"a":4462,"t":"code","b":[153,86,13],"m":"sta","o":"fig_spr2_pointer,y","oa":3414},{"a":4465,"t":"code","b":[24],"m":"clc"},{"a":4466,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":4468,"t":"code","b":[153,88,13],"m":"sta","o":"fig_spr4_pointer,y","oa":3416},{"a":4471,"l":"b_1177","t":"code","b":[189,134,3],"m":"lda","o":"fig_colour,x","oa":902,"x":[4440,4451]},{"a":4474,"t":"code","b":[153,77,13],"m":"sta","o":"fig_spr1_colour,y","oa":3405},{"a":4477,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":4479,"t":"code","b":[176,24],"m":"bcs","o":"j_1199","oa":4505},{"a":4481,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":4483,"t":"code","b":[153,78,13],"m":"sta","o":"fig_spr2_colour,y","oa":3406},{"a":4486,"t":"code","b":[224,0],"m":"cpx","o":"#$00"},{"a":4488,"t":"code","b":[208,15],"m":"bne","o":"j_1199","oa":4505},{"a":4490,"t":"code","b":[185,78,13],"m":"lda","o":"fig_spr2_colour,y","oa":3406},{"a":4493,"t":"code","b":[153,79,13],"m":"sta","o":"fig_spr3_colour,y","oa":3407},{"a":4496,"t":"code","b":[153,80,13],"m":"sta","o":"fig_spr4_colour,y","oa":3408},{"a":4499,"t":"code","b":[173,138,3],"m":"lda","o":"fig_colour_head","oa":906},{"a":4502,"t":"code","b":[153,78,13],"m":"sta","o":"fig_spr2_colour,y","oa":3406},{"a":4505,"l":"j_1199","t":"code","b":[202],"m":"dex","x":[4335,4479,4488]},{"a":4506,"t":"code","b":[48,26],"m":"bmi","o":"sprite_write_vic","oa":4534},{"a":4508,"t":"code","b":[76,210,16],"m":"jmp","o":"b_10D2","oa":4306},{"a":4511,"l":"mask_person_lower","c":"Sprite bit masks %0101 shifted left 0-5 times (6 bytes, $119F-$11A4): entry n selects sprites n and n+2, the person's lower body and its outline when his first sprite is n (read at $11DA).","t":"byte","b":[5],"x":[4570]},{"a":4512,"l":"mask_person_upper","c":"mask_person_lower read one entry on: entry n = %1010 shifted left n times, sprites n+1 and n+3, the person's upper body and its outline (read at $11CF when bit 7 of $03C8 is set).","t":"byte","b":[10,20,40,80,160],"x":[4559]},{"a":4517,"l":"mask_person_all","c":"%1111 shifted left 0-4 times: all four of the person's sprites from sprite n; used for his behind-background bits ($0396, at $11E8) and his X high bits ($03AB, at $11F3).","t":"byte","b":[15,30,60,120,240],"x":[4584,4595]},{"a":4522,"l":"mask_person_mc","c":"%11 shifted left 0-4 times: the person's two colour sprites (n and n+1), the ones switched to multicolour; the outlines stay hires (read at $11F9).","t":"byte","b":[3,6,12,24,48],"x":[4601]},{"a":4527,"l":"mask_dog","c":"%11 shifted left 0-6 times: the dog's two sprites (n and n+1), for its enable bits, its behind-background bits ($0397) and its X high bits ($03AC) (read at $1207, $1215, $1223).","t":"byte","b":[3,6,12,24,48,96,192],"x":[4615,4629,4643]},{"a":4534,"l":"sprite_write_vic","c":"End of the sprite frame: builds the enable ($0D3A), multicolour ($0D3B), X high bit ($0D4C) and behind-background ($0D5D) masks. Person: lower pair if bit 7 of $03C4, upper pair if bit 7 of $03C8, all four behind the background if $0396, X high bits from $03AB, multicolour on the two colour sprites. Dog: its pair if bit 7 of $03C5, with $0397 and $03AC, multicolour on the first. Figures 2 and 3: if bit 7 of $03C6/$03C7, multicolour if $0394/$0395, X high bit $03AD/$03AE, behind background if $0398/$0399. Then waits for raster line $FA and, with interrupts off, copies the shadows to $D000-$D010, the pointers $5FF8-$5FFF, the colours $D027-$D02E, $D015, $D01C and $D01B. The STX $1387 at entry stores $FF where nothing reads it before it is rewritten.","t":"code","b":[142,135,19],"m":"stx","o":"spr_scratch","oa":4999,"x":[4506]},{"a":4537,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":4539,"t":"code","b":[141,59,13],"m":"sta","o":"spr_mcolour_shadow","oa":3387},{"a":4542,"t":"code","b":[141,93,13],"m":"sta","o":"spr_priority_shadow","oa":3421},{"a":4545,"t":"code","b":[141,58,13],"m":"sta","o":"spr_enable_shadow","oa":3386},{"a":4548,"t":"code","b":[141,76,13],"m":"sta","o":"spr_xmsb_shadow","oa":3404},{"a":4551,"t":"code","b":[172,205,3],"m":"ldy","o":"fig_hw_sprite","oa":973},{"a":4554,"t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968},{"a":4557,"t":"code","b":[16,6],"m":"bpl","o":"b_11D5","oa":4565},{"a":4559,"t":"code","b":[185,160,17],"m":"lda","o":"mask_person_upper,y","oa":4512},{"a":4562,"t":"code","b":[141,58,13],"m":"sta","o":"spr_enable_shadow","oa":3386},{"a":4565,"l":"b_11D5","t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964,"x":[4557]},{"a":4568,"t":"code","b":[16,9],"m":"bpl","o":"b_11E3","oa":4579},{"a":4570,"t":"code","b":[185,159,17],"m":"lda","o":"mask_person_lower,y","oa":4511},{"a":4573,"t":"code","b":[13,58,13],"m":"ora","o":"spr_enable_shadow","oa":3386},{"a":4576,"t":"code","b":[141,58,13],"m":"sta","o":"spr_enable_shadow","oa":3386},{"a":4579,"l":"b_11E3","t":"code","b":[173,150,3],"m":"lda","o":"fig_behind_bg","oa":918,"x":[4568]},{"a":4582,"t":"code","b":[240,6],"m":"beq","o":"b_11EE","oa":4590},{"a":4584,"t":"code","b":[185,165,17],"m":"lda","o":"mask_person_all,y","oa":4517},{"a":4587,"t":"code","b":[141,93,13],"m":"sta","o":"spr_priority_shadow","oa":3421},{"a":4590,"l":"b_11EE","t":"code","b":[173,171,3],"m":"lda","o":"fig_x_hi","oa":939,"x":[4582]},{"a":4593,"t":"code","b":[240,6],"m":"beq","o":"b_11F9","oa":4601},{"a":4595,"t":"code","b":[185,165,17],"m":"lda","o":"mask_person_all,y","oa":4517},{"a":4598,"t":"code","b":[141,76,13],"m":"sta","o":"spr_xmsb_shadow","oa":3404},{"a":4601,"l":"b_11F9","t":"code","b":[185,170,17],"m":"lda","o":"mask_person_mc,y","oa":4522,"x":[4593]},{"a":4604,"t":"code","b":[141,59,13],"m":"sta","o":"spr_mcolour_shadow","oa":3387},{"a":4607,"t":"code","b":[173,197,3],"m":"lda","o":"fig_flags_dog","oa":965},{"a":4610,"t":"code","b":[16,49],"m":"bpl","o":"b_1235","oa":4661},{"a":4612,"t":"code","b":[172,206,3],"m":"ldy","o":"fig_hw_sprite_dog","oa":974},{"a":4615,"t":"code","b":[185,175,17],"m":"lda","o":"mask_dog,y","oa":4527},{"a":4618,"t":"code","b":[13,58,13],"m":"ora","o":"spr_enable_shadow","oa":3386},{"a":4621,"t":"code","b":[141,58,13],"m":"sta","o":"spr_enable_shadow","oa":3386},{"a":4624,"t":"code","b":[173,151,3],"m":"lda","o":"dog_behind_bg","oa":919},{"a":4627,"t":"code","b":[240,9],"m":"beq","o":"b_121E","oa":4638},{"a":4629,"t":"code","b":[185,175,17],"m":"lda","o":"mask_dog,y","oa":4527},{"a":4632,"t":"code","b":[13,93,13],"m":"ora","o":"spr_priority_shadow","oa":3421},{"a":4635,"t":"code","b":[141,93,13],"m":"sta","o":"spr_priority_shadow","oa":3421},{"a":4638,"l":"b_121E","t":"code","b":[173,172,3],"m":"lda","o":"fig_x_hi_dog","oa":940,"x":[4627]},{"a":4641,"t":"code","b":[240,9],"m":"beq","o":"b_122C","oa":4652},{"a":4643,"t":"code","b":[185,175,17],"m":"lda","o":"mask_dog,y","oa":4527},{"a":4646,"t":"code","b":[13,76,13],"m":"ora","o":"spr_xmsb_shadow","oa":3404},{"a":4649,"t":"code","b":[141,76,13],"m":"sta","o":"spr_xmsb_shadow","oa":3404},{"a":4652,"l":"b_122C","t":"code","b":[185,227,3],"m":"lda","o":"sprite_bit,y","oa":995,"x":[4641]},{"a":4655,"t":"code","b":[13,59,13],"m":"ora","o":"spr_mcolour_shadow","oa":3387},{"a":4658,"t":"code","b":[141,59,13],"m":"sta","o":"spr_mcolour_shadow","oa":3387},{"a":4661,"l":"b_1235","t":"code","b":[162,1],"m":"ldx","o":"#$01","x":[4610]},{"a":4663,"l":"b_1237","t":"code","b":[189,198,3],"m":"lda","o":"fig_flags_prop_a,x","oa":966,"x":[4723]},{"a":4666,"t":"code","b":[16,54],"m":"bpl","o":"b_1272","oa":4722},{"a":4668,"t":"code","b":[188,207,3],"m":"ldy","o":"fig_hw_sprite_prop,x","oa":975},{"a":4671,"t":"code","b":[173,58,13],"m":"lda","o":"spr_enable_shadow","oa":3386},{"a":4674,"t":"code","b":[25,227,3],"m":"ora","o":"sprite_bit,y","oa":995},{"a":4677,"t":"code","b":[141,58,13],"m":"sta","o":"spr_enable_shadow","oa":3386},{"a":4680,"t":"code","b":[189,148,3],"m":"lda","o":"prop_multicolour,x","oa":916},{"a":4683,"t":"code","b":[240,9],"m":"beq","o":"b_1256","oa":4694},{"a":4685,"t":"code","b":[173,59,13],"m":"lda","o":"spr_mcolour_shadow","oa":3387},{"a":4688,"t":"code","b":[25,227,3],"m":"ora","o":"sprite_bit,y","oa":995},{"a":4691,"t":"code","b":[141,59,13],"m":"sta","o":"spr_mcolour_shadow","oa":3387},{"a":4694,"l":"b_1256","t":"code","b":[189,173,3],"m":"lda","o":"fig_x_hi_prop_a,x","oa":941,"x":[4683]},{"a":4697,"t":"code","b":[240,9],"m":"beq","o":"b_1264","oa":4708},{"a":4699,"t":"code","b":[173,76,13],"m":"lda","o":"spr_xmsb_shadow","oa":3404},{"a":4702,"t":"code","b":[25,227,3],"m":"ora","o":"sprite_bit,y","oa":995},{"a":4705,"t":"code","b":[141,76,13],"m":"sta","o":"spr_xmsb_shadow","oa":3404},{"a":4708,"l":"b_1264","t":"code","b":[189,152,3],"m":"lda","o":"prop_behind_bg,x","oa":920,"x":[4697]},{"a":4711,"t":"code","b":[240,9],"m":"beq","o":"b_1272","oa":4722},{"a":4713,"t":"code","b":[173,93,13],"m":"lda","o":"spr_priority_shadow","oa":3421},{"a":4716,"t":"code","b":[25,227,3],"m":"ora","o":"sprite_bit,y","oa":995},{"a":4719,"t":"code","b":[141,93,13],"m":"sta","o":"spr_priority_shadow","oa":3421},{"a":4722,"l":"b_1272","t":"code","b":[202],"m":"dex","x":[4666,4711]},{"a":4723,"t":"code","b":[16,194],"m":"bpl","o":"b_1237","oa":4663},{"a":4725,"t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":4727,"l":"b_1277","t":"code","b":[205,18,208],"m":"cmp","o":"vic_raster","x":[4730]},{"a":4730,"t":"code","b":[208,251],"m":"bne","o":"b_1277","oa":4727},{"a":4732,"t":"code","b":[120],"m":"sei"},{"a":4733,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":4735,"l":"b_127F","t":"code","b":[185,60,13],"m":"lda","o":"fig_spr1_x,y","oa":3388,"x":[4742]},{"a":4738,"s":"VIC sprite X/Y registers $D000-$D010 (I/O is in here)","t":"code","b":[153,0,208],"m":"sta","o":"vic_sprite0_x,y"},{"a":4741,"t":"code","b":[136],"m":"dey"},{"a":4742,"t":"code","b":[16,247],"m":"bpl","o":"b_127F","oa":4735},{"a":4744,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":4746,"l":"b_128A","t":"code","b":[185,85,13],"m":"lda","o":"fig_spr1_pointer,y","oa":3413,"x":[4759]},{"a":4749,"t":"code","b":[153,248,95],"m":"sta","o":"f_5FF8,y","oa":24568},{"a":4752,"t":"code","b":[185,77,13],"m":"lda","o":"fig_spr1_colour,y","oa":3405},{"a":4755,"t":"code","b":[153,39,208],"m":"sta","o":"vic_sprite0_colour,y"},{"a":4758,"t":"code","b":[136],"m":"dey"},{"a":4759,"t":"code","b":[16,241],"m":"bpl","o":"b_128A","oa":4746},{"a":4761,"t":"code","b":[173,58,13],"m":"lda","o":"spr_enable_shadow","oa":3386},{"a":4764,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":4767,"t":"code","b":[173,59,13],"m":"lda","o":"spr_mcolour_shadow","oa":3387},{"a":4770,"t":"code","b":[141,28,208],"m":"sta","o":"vic_sprite_multicolour"},{"a":4773,"t":"code","b":[173,93,13],"m":"lda","o":"spr_priority_shadow","oa":3421},{"a":4776,"t":"code","b":[141,27,208],"m":"sta","o":"vic_sprite_priority"},{"a":4779,"t":"code","b":[88],"m":"cli"},{"a":4780,"t":"code","b":[96],"m":"rts"},{"a":4781,"l":"pose_yoff_lo","c":"Split lo/hi pointer table, one entry per figure 0-4 (lo bytes here, hi bytes at pose_yoff_hi): each figure's table of per-pose Y offsets, read at $0FF7/$0FFC. Figure 0 -> $14F1 (person), 1 -> $154E (dog), 2 and 3 -> $156C (objects), 4 -> $156A (two bytes before the objects' table; figure 4's offset is computed but its sprites are placed from the person's).","t":"byte","b":[241,78,108,108,106],"d":["pose_yoff_person","pose_yoff_dog","pose_yoff_objects","pose_yoff_objects","pose_yoff_upper"],"note":"split table: 5 lo/hi pointers","x":[4087]},{"a":4786,"l":"pose_yoff_hi","c":"High bytes of the five pose_yoff_lo pointers ($14, $15, $15, $15, $15).","t":"byte","b":[20,21,21,21,21],"x":[4092]},{"a":4791,"l":"build_outline","c":"Builds the black outline sprite that sits behind a colour sprite: ($18) = the colour image just built, ($1A) = the next 64-byte block. Called for figures 0, 1 and 4 from $0FCB after a rebuild, and by compose_from_parts ($15FB). Works up the 21 rows from the bottom: each source row has every non-empty two-bit pixel turned to %11 (outline_fetch_row), the row is ORed with itself shifted one pixel left and right ($03EF-$03F1) and with the rows above and below, so the outline is the figure's silhouette grown by one hires pixel left, right, up and down.","t":"code","b":[162,8],"m":"ldx","o":"#$08","x":[4043,5627]},{"a":4793,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":4795,"l":"b_12BB","t":"code","b":[157,135,19],"m":"sta","o":"spr_scratch,x","oa":4999,"x":[4799]},{"a":4798,"t":"code","b":[202],"m":"dex"},{"a":4799,"t":"code","b":[16,250],"m":"bpl","o":"b_12BB","oa":4795},{"a":4801,"t":"code","b":[160,63],"m":"ldy","o":"#$3F"},{"a":4803,"t":"code","b":[140,145,19],"m":"sty","o":"outline_src_idx","oa":5009},{"a":4806,"t":"code","b":[136],"m":"dey"},{"a":4807,"t":"code","b":[140,146,19],"m":"sty","o":"outline_dst_idx","oa":5010},{"a":4810,"t":"code","b":[32,53,19],"m":"jsr","o":"outline_fetch_row","oa":4917},{"a":4813,"l":"b_12CD","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[4914]},{"a":4815,"l":"b_12CF","t":"code","b":[189,138,19],"m":"lda","o":"outline_row_mid,x","oa":5002,"x":[4828]},{"a":4818,"t":"code","b":[157,141,19],"m":"sta","o":"outline_row_prev,x","oa":5005},{"a":4821,"t":"code","b":[189,135,19],"m":"lda","o":"spr_scratch,x","oa":4999},{"a":4824,"t":"code","b":[157,138,19],"m":"sta","o":"outline_row_mid,x","oa":5002},{"a":4827,"t":"code","b":[202],"m":"dex"},{"a":4828,"t":"code","b":[16,241],"m":"bpl","o":"b_12CF","oa":4815},{"a":4830,"t":"code","b":[32,53,19],"m":"jsr","o":"outline_fetch_row","oa":4917},{"a":4833,"t":"code","b":[173,138,19],"m":"lda","o":"outline_row_mid","oa":5002},{"a":4836,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":4837,"t":"code","b":[13,138,19],"m":"ora","o":"outline_row_mid","oa":5002},{"a":4840,"t":"code","b":[141,239,3],"m":"sta","o":"outline_row","oa":1007},{"a":4843,"t":"code","b":[173,139,19],"m":"lda","o":"outline_row_mid_1","oa":5003},{"a":4846,"t":"code","b":[106],"m":"ror","o":"a"},{"a":4847,"t":"code","b":[13,139,19],"m":"ora","o":"outline_row_mid_1","oa":5003},{"a":4850,"t":"code","b":[141,240,3],"m":"sta","o":"outline_row_1","oa":1008},{"a":4853,"t":"code","b":[173,140,19],"m":"lda","o":"outline_row_mid_2","oa":5004},{"a":4856,"t":"code","b":[106],"m":"ror","o":"a"},{"a":4857,"t":"code","b":[13,140,19],"m":"ora","o":"outline_row_mid_2","oa":5004},{"a":4860,"t":"code","b":[141,241,3],"m":"sta","o":"outline_row_2","oa":1009},{"a":4863,"t":"code","b":[10],"m":"asl","o":"a"},{"a":4864,"t":"code","b":[13,241,3],"m":"ora","o":"outline_row_2","oa":1009},{"a":4867,"t":"code","b":[141,241,3],"m":"sta","o":"outline_row_2","oa":1009},{"a":4870,"t":"code","b":[173,139,19],"m":"lda","o":"outline_row_mid_1","oa":5003},{"a":4873,"t":"code","b":[42],"m":"rol","o":"a"},{"a":4874,"t":"code","b":[13,240,3],"m":"ora","o":"outline_row_1","oa":1008},{"a":4877,"t":"code","b":[141,240,3],"m":"sta","o":"outline_row_1","oa":1008},{"a":4880,"t":"code","b":[173,138,19],"m":"lda","o":"outline_row_mid","oa":5002},{"a":4883,"t":"code","b":[42],"m":"rol","o":"a"},{"a":4884,"t":"code","b":[13,239,3],"m":"ora","o":"outline_row","oa":1007},{"a":4887,"t":"code","b":[141,239,3],"m":"sta","o":"outline_row","oa":1007},{"a":4890,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":4892,"t":"code","b":[172,146,19],"m":"ldy","o":"outline_dst_idx","oa":5010},{"a":4895,"l":"b_131F","t":"code","b":[189,239,3],"m":"lda","o":"outline_row,x","oa":1007,"x":[4908]},{"a":4898,"t":"code","b":[29,135,19],"m":"ora","o":"spr_scratch,x","oa":4999},{"a":4901,"t":"code","b":[29,141,19],"m":"ora","o":"outline_row_prev,x","oa":5005},{"a":4904,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":4906,"t":"code","b":[136],"m":"dey"},{"a":4907,"t":"code","b":[202],"m":"dex"},{"a":4908,"t":"code","b":[16,241],"m":"bpl","o":"b_131F","oa":4895},{"a":4910,"t":"code","b":[140,146,19],"m":"sty","o":"outline_dst_idx","oa":5010},{"a":4913,"t":"code","b":[152],"m":"tya"},{"a":4914,"t":"code","b":[16,153],"m":"bpl","o":"b_12CD","oa":4813},{"a":4916,"t":"code","b":[96],"m":"rts"},{"a":4917,"l":"outline_fetch_row","c":"For build_outline: fetches the next source row upward, the three bytes before index outline_src_idx in ($18) (zero once the index is below 0), with every non-empty two-bit pixel made %11, into $1387-$1389; updates outline_src_idx.","t":"code","b":[172,145,19],"m":"ldy","o":"outline_src_idx","oa":5009,"x":[4810,4830]},{"a":4920,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":4922,"l":"b_133A","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[4951]},{"a":4924,"t":"code","b":[136],"m":"dey"},{"a":4925,"t":"code","b":[48,20],"m":"bmi","o":"b_1353","oa":4947},{"a":4927,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":4929,"t":"code","b":[157,135,19],"m":"sta","o":"spr_scratch,x","oa":4999},{"a":4932,"t":"code","b":[41,170],"m":"and","o":"#$AA"},{"a":4934,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":4935,"t":"code","b":[29,135,19],"m":"ora","o":"spr_scratch,x","oa":4999},{"a":4938,"t":"code","b":[157,135,19],"m":"sta","o":"spr_scratch,x","oa":4999},{"a":4941,"t":"code","b":[41,85],"m":"and","o":"#$55"},{"a":4943,"t":"code","b":[10],"m":"asl","o":"a"},{"a":4944,"t":"code","b":[29,135,19],"m":"ora","o":"spr_scratch,x","oa":4999},{"a":4947,"l":"b_1353","t":"code","b":[157,135,19],"m":"sta","o":"spr_scratch,x","oa":4999,"x":[4925]},{"a":4950,"t":"code","b":[202],"m":"dex"},{"a":4951,"t":"code","b":[16,225],"m":"bpl","o":"b_133A","oa":4922},{"a":4953,"t":"code","b":[140,145,19],"m":"sty","o":"outline_src_idx","oa":5009},{"a":4956,"t":"code","b":[96],"m":"rts"},{"a":4957,"l":"person_upper_dy","c":"How many lines the person's upper-body sprites sit above the lower-body ones: set per pose from person_upper_dy_by_pose at $0FE4, subtracted at $1119. $15 (21, one sprite height) for most poses.","t":"byte","b":[21],"x":[4068,4377]},{"a":4958,"l":"person_upper_dx","c":"Horizontal offset of the person's upper-body sprites from the lower-body ones, in pixels: set per pose from person_upper_dx_by_pose at $0FEA, added to the X low byte at $113C (without carrying into the X high bit). 0 for most poses.","t":"byte","b":[6],"x":[4074,4412]},{"a":4959,"l":"mirror_mc_byte","c":"Returns A with its four two-bit pixels in reverse order, a multicolour sprite byte mirrored (A = 0 returns at once). X is kept in mirror_save_x. The image decoder calls it at $0F31-$0F40 to mirror a figure's image when it faces left ($039A,x non-zero).","t":"code","b":[240,34],"m":"beq","o":"r_1383","oa":4995,"x":[3889,3896,3904]},{"a":4961,"t":"code","b":[141,134,19],"m":"sta","o":"mirror_result","oa":4998},{"a":4964,"t":"code","b":[142,132,19],"m":"stx","o":"mirror_save_x","oa":4996},{"a":4967,"t":"code","b":[141,133,19],"m":"sta","o":"mirror_work","oa":4997},{"a":4970,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":4972,"l":"b_136C","t":"code","b":[110,133,19],"m":"ror","o":"mirror_work","oa":4997,"x":[4987]},{"a":4975,"t":"code","b":[106],"m":"ror","o":"a"},{"a":4976,"t":"code","b":[110,133,19],"m":"ror","o":"mirror_work","oa":4997},{"a":4979,"t":"code","b":[46,134,19],"m":"rol","o":"mirror_result","oa":4998},{"a":4982,"t":"code","b":[42],"m":"rol","o":"a"},{"a":4983,"t":"code","b":[46,134,19],"m":"rol","o":"mirror_result","oa":4998},{"a":4986,"t":"code","b":[202],"m":"dex"},{"a":4987,"t":"code","b":[16,239],"m":"bpl","o":"b_136C","oa":4972},{"a":4989,"t":"code","b":[173,134,19],"m":"lda","o":"mirror_result","oa":4998},{"a":4992,"t":"code","b":[174,132,19],"m":"ldx","o":"mirror_save_x","oa":4996},{"a":4995,"l":"r_1383","t":"code","b":[96],"m":"rts","x":[4959]},{"a":4996,"l":"mirror_save_x","c":"mirror_mc_byte keeps the caller's X here.","t":"byte","b":[4],"x":[4964,4992]},{"a":4997,"l":"mirror_work","c":"mirror_mc_byte's work copy of its input, which it rotates the pixels out of.","t":"byte","b":[252],"x":[4967,4972,4976]},{"a":4998,"l":"mirror_result","c":"mirror_mc_byte assembles the mirrored byte here and returns it.","t":"byte","b":[63],"x":[4961,4979,4983,4989]},{"a":4999,"l":"spr_scratch","c":"Scratch for the sprite routines: build_outline's current (upper) source row, three bytes with $1388-$1389, cleared at $12BB and filled by outline_fetch_row; clip_sprite's mask offset; the image decoder's count times three ($0ECC-$0ED1); sprite_write_vic stores X ($FF) in it.","t":"byte","b":[255,0,0],"x":[3788,3793,4534,4795,4821,4898,4929,4935,4938,4944,4947,5050,5055,5066,5071]},{"a":5002,"l":"outline_row_mid","c":"build_outline: the row being written (three bytes, $138A-$138C), one below the current source row; its shifted copies are ORed together into $03EF-$03F1.","t":"byte","b":[0],"x":[4815,4824,4833,4837,4880]},{"a":5003,"l":"outline_row_mid_1","c":"Second byte of outline_row_mid, read on its own at $12EB-$1306 while the row is shifted.","t":"byte","b":[0],"x":[4843,4847,4870]},{"a":5004,"l":"outline_row_mid_2","c":"Third byte of outline_row_mid, read at $12F5 and $12F9.","t":"byte","b":[0],"x":[4853,4857]},{"a":5005,"l":"outline_row_prev","c":"build_outline: the row below outline_row_mid (three bytes, $138D-$138F), ORed into the output unshifted.","t":"byte","b":[0,0,0],"x":[4818,4901]},{"a":5008,"l":"outline_save_x","c":"The image decoder keeps the figure number here across build_outline ($0FC8, $0FCE).","t":"byte","b":[4],"x":[4040,4046]},{"a":5009,"l":"outline_src_idx","c":"build_outline's source index into ($18): starts at 63 and drops three per row; below 0 the fetched row is empty.","t":"byte","b":[253],"x":[4803,4917,4953]},{"a":5010,"l":"outline_dst_idx","c":"build_outline's destination index into ($1A): starts at 62 and drops three per row; the loop ends when it goes negative.","t":"byte","b":[255],"x":[4807,4892,4910]},{"a":5011,"l":"colour_person_lower","c":"Colour of the person's lower-body sprite. $0FA8 copies it into $0386 whenever figure 0's image is rebuilt, through the pointer $0D6D/$0D72 (the LDA there is self-modified). Chosen together with $D025 from the table at $BA0E ($B9CC) or at $BA2E ($BA02); $0D, light green, in the loaded image and the snapshots.","t":"byte","b":[13],"x":[47567,47624]},{"a":5012,"l":"colour_figure2","c":"Colour of figure 2, the first one-sprite object (a carried item, the shower's water, an item by the front door...): copied into $0388 when its image is rebuilt. Set by the activities that show it, e.g. $1F60 (3, cyan water), $28FC (per carried object, from $2A5A), $AFBB (9).","t":"byte","b":[1],"x":[8032,9842,10492,12127,12193,14400,21721,21875,23397,44987,49107]},{"a":5013,"l":"colour_figure3","c":"Colour of figure 3, the second one-sprite object: copied into $0389 when its image is rebuilt. Only $538A writes it.","t":"byte","b":[1],"x":[21386]},{"a":5014,"l":"sprite_addr","c":"Sets ($1A) to the address of the 64-byte block that sprite pointer $0D68,x names: $4000 + pointer x 64 (VIC bank 1).","t":"code","b":[189,104,13],"m":"lda","o":"figure_sprite_block,x","oa":3432,"x":[3755,5519,5607]},{"a":5017,"t":"code","b":[133,27],"m":"sta","o":"tmp_ptr_b_hi","oa":27},{"a":5019,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":5021,"t":"code","b":[133,26],"m":"sta","o":"tmp_ptr_b","oa":26},{"a":5023,"t":"code","b":[56],"m":"sec"},{"a":5024,"t":"code","b":[102,27],"m":"ror","o":"tmp_ptr_b_hi","oa":27},{"a":5026,"t":"code","b":[102,26],"m":"ror","o":"tmp_ptr_b","oa":26},{"a":5028,"t":"code","b":[24],"m":"clc"},{"a":5029,"t":"code","b":[102,27],"m":"ror","o":"tmp_ptr_b_hi","oa":27},{"a":5031,"t":"code","b":[102,26],"m":"ror","o":"tmp_ptr_b","oa":26},{"a":5033,"t":"code","b":[96],"m":"rts"},{"a":5034,"l":"clip_save_x","c":"clip_sprite keeps the caller's X here.","t":"byte","b":[0],"x":[3907,3913,5036,5099]},{"a":5035,"l":"clip_value","c":"clip_sprite's argument: bits 0-6 = how many two-bit pixels to hide (1-12), bit 7 set = hide them on the left instead of the right.","t":"byte","b":[128],"x":[5039,5058]},{"a":5036,"l":"clip_sprite","c":"Hides a vertical strip at one side of a figure's image: A = the figure's clip value ($0381,x; called from $0F99 once the image is built, not at all when 0), ($1A) = the image. Every row is ANDed with the same three-byte mask from clip_masks, entry n - 1 for n = A AND $7F, from the second half when bit 7 is set: values 1-12 clear that many two-bit pixels from the right, or from the left with bit 7. Row counter in $0F93. $32E4-$3354 sets and steps the person's values ($0381 and $0385) as he moves.","t":"code","b":[142,170,19],"m":"stx","o":"clip_save_x","oa":5034,"x":[3993]},{"a":5039,"t":"code","b":[141,171,19],"m":"sta","o":"clip_value","oa":5035},{"a":5042,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":5044,"t":"code","b":[208,1],"m":"bne","o":"b_13B7","oa":5047},{"a":5046,"t":"code","b":[96],"m":"rts"},{"a":5047,"l":"b_13B7","t":"code","b":[56],"m":"sec","x":[5044]},{"a":5048,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":5050,"t":"code","b":[141,135,19],"m":"sta","o":"spr_scratch","oa":4999},{"a":5053,"t":"code","b":[10],"m":"asl","o":"a"},{"a":5054,"t":"code","b":[24],"m":"clc"},{"a":5055,"t":"code","b":[109,135,19],"m":"adc","o":"spr_scratch","oa":4999},{"a":5058,"t":"code","b":[172,171,19],"m":"ldy","o":"clip_value","oa":5035},{"a":5061,"t":"code","b":[16,3],"m":"bpl","o":"b_13CA","oa":5066},{"a":5063,"t":"code","b":[24],"m":"clc"},{"a":5064,"t":"code","b":[105,36],"m":"adc","o":"#$24"},{"a":5066,"l":"b_13CA","t":"code","b":[141,135,19],"m":"sta","o":"spr_scratch","oa":4999,"x":[5061]},{"a":5069,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":5071,"l":"b_13CF","t":"code","b":[174,135,19],"m":"ldx","o":"spr_scratch","oa":4999,"x":[5097]},{"a":5074,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":5076,"t":"code","b":[141,147,15],"m":"sta","o":"clip_row_bytes_left","oa":3987},{"a":5079,"l":"b_13D7","t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26,"x":[5095]},{"a":5081,"t":"code","b":[61,239,19],"m":"and","o":"clip_masks,x","oa":5103},{"a":5084,"t":"code","b":[145,26],"m":"sta","o":"(tmp_ptr_b),y","oa":26},{"a":5086,"t":"code","b":[200],"m":"iny"},{"a":5087,"t":"code","b":[232],"m":"inx"},{"a":5088,"t":"code","b":[192,63],"m":"cpy","o":"#$3F"},{"a":5090,"t":"code","b":[240,7],"m":"beq","o":"b_13EB","oa":5099},{"a":5092,"t":"code","b":[206,147,15],"m":"dec","o":"clip_row_bytes_left","oa":3987},{"a":5095,"t":"code","b":[16,238],"m":"bpl","o":"b_13D7","oa":5079},{"a":5097,"t":"code","b":[48,228],"m":"bmi","o":"b_13CF","oa":5071},{"a":5099,"l":"b_13EB","t":"code","b":[174,170,19],"m":"ldx","o":"clip_save_x","oa":5034,"x":[5090]},{"a":5102,"t":"code","b":[96],"m":"rts"},{"a":5103,"l":"clip_masks","c":"clip_sprite's row masks, three bytes each: entries 0-11 (here) keep the left 11, 10 ... 0 two-bit pixels, clearing the right end; entries 12-23 at clip_masks_left keep the right end instead.","t":"byte","b":[255,255,252,255,255,240,255,255],"x":[5081]},{"a":5111,"t":"byte","b":[192,255,255,0,255,252,0,255]},{"a":5119,"t":"byte","b":[240,0,255,192,0,255,0,0]},{"a":5127,"t":"byte","b":[252,0,0,240,0,0,192,0]},{"a":5135,"t":"byte","b":[0,0,0,0]},{"a":5139,"l":"clip_masks_left","c":"clip_masks entries 12-23 (bit 7 of the clip value): keep the right 11, 10 ... 0 two-bit pixels, clearing the left end.","t":"byte","b":[63,255,255,15,255,255,3,255]},{"a":5147,"t":"byte","b":[255,0,255,255,0,63,255,0]},{"a":5155,"t":"byte","b":[15,255,0,3,255,0,0,255]},{"a":5163,"t":"byte","b":[0,0,63,0,0,15,0,0]},{"a":5171,"t":"byte","b":[3,0,0,0]},{"a":5175,"l":"person_upper_dy_by_pose","c":"One byte per pose of the person, $00-$3F here and $40-$5C at $1477 (93 poses): lines between his lower and upper sprites, copied to person_upper_dy at $0FE1. $15 for most poses; $12 for $1A-$1D, $23-$29 and $3B; $11 for $1E-$20 and $2A; $14 for $33.","t":"byte","b":[21,21,21,21,21,21,21,21],"x":[4065]},{"a":5183,"t":"byte","b":[21,21,21,21,21,21,21,21]},{"a":5191,"t":"byte","b":[21,21,21,21,21,21,21,21]},{"a":5199,"t":"byte","b":[21,21,18,18,18,18,17,17]},{"a":5207,"t":"byte","b":[17,21,21,18,18,18,18,18]},{"a":5215,"t":"byte","b":[18,18,17,21,21,21,21,21]},{"a":5223,"t":"byte","b":[21,21,21,20,21,21,21,21]},{"a":5231,"t":"byte","b":[21,21,21,18,21,21,21,21]},{"a":5239,"l":"person_upper_dy_pose40","c":"person_upper_dy_by_pose for poses $40-$5C: $05 for $40-$44 (the bath poses: the upper body only five lines up), $13 for $45-$46, $14 for $4F, $52, $53, $58, $5A, otherwise $15.","t":"byte","b":[5,5,5,5,5,19,19,21]},{"a":5247,"t":"byte","b":[21,21,21,21,21,21,21,20]},{"a":5255,"t":"byte","b":[21,21,20,20,21,21,21,21]},{"a":5263,"t":"byte","b":[20,21,20,21,21]},{"a":5268,"l":"person_upper_dx_by_pose","c":"One byte per pose of the person, $00-$3F here and $40-$5C at $14D4: horizontal shift of his upper body, copied to person_upper_dx at $0FE7. 0 except $06 for poses $2F and $30 and $FF (-1) for $32.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[4071]},{"a":5276,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5284,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5292,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5300,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5308,"t":"byte","b":[0,0,0,0,0,0,0,6]},{"a":5316,"t":"byte","b":[6,0,255,0,0,0,0,0]},{"a":5324,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5332,"l":"person_upper_dx_pose40","c":"person_upper_dx_by_pose for poses $40-$5C: all 0.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5340,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5348,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5356,"t":"byte","b":[0,0,0,0,0]},{"a":5361,"l":"pose_yoff_person","c":"Per-pose Y offset of figure 0, the person's lower body (93 bytes, poses $00-$5C, signed), subtracted from the sprite's Y: -2 draws it two lines lower. The walking poses 0-7 go -2, -3, -2, -1 twice, a bob in step; the bath poses $40-$44 are +$0B, 11 lines higher.","t":"byte","b":[254,253,254,255,254,253,254,255],"x":[4781]},{"a":5369,"t":"byte","b":[254,254,254,254,254,254,254,254]},{"a":5377,"t":"byte","b":[254,254,254,254,254,254,254,254]},{"a":5385,"t":"byte","b":[254,254,254,254,254,254,252,252]},{"a":5393,"t":"byte","b":[252,254,254,254,254,254,254,254]},{"a":5401,"t":"byte","b":[254,254,252,250,250,250,254,250]},{"a":5409,"t":"byte","b":[250,251,249,245,249,251,251,251]},{"a":5417,"t":"byte","b":[251,251,252,255,0,254,254,254]},{"a":5425,"t":"byte","b":[11,11,11,11,11,0,255,249]},{"a":5433,"t":"byte","b":[249,252,249,254,254,252,254,255]},{"a":5441,"t":"byte","b":[254,254,255,255,254,254,254,254]},{"a":5449,"t":"byte","b":[255,254,255,254,254]},{"a":5454,"l":"pose_yoff_dog","c":"Per-pose Y offset of the dog (figure 1), poses $00-$1B: all 0.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[4782]},{"a":5462,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5470,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5478,"t":"byte","b":[0,0,0,0]},{"a":5482,"l":"pose_yoff_upper","c":"Where pose_yoff_lo points for figure 4 (the person's upper body): two zero bytes, then the objects' table. The offset read through it only sets bit 0 of $03C8, which nothing tests; the upper body is placed from the person's position.","t":"byte","b":[0,0],"x":[4785]},{"a":5484,"l":"pose_yoff_objects","c":"Per-pose Y offset of the one-sprite objects (figures 2 and 3), poses $00-$18, signed: $F0 for pose 0, $0A for the water drops $0B-$0D, $02 for $0E-$10, and others.","t":"byte","b":[240,0,0,0,0,1,0,0],"x":[4783,4784]},{"a":5492,"t":"byte","b":[0,0,0,10,10,10,2,2]},{"a":5500,"t":"byte","b":[2,246,253,0,247,246,249,5]},{"a":5508,"t":"byte","b":[6]},{"a":5509,"l":"compose_from_parts","c":"Builds the person's lower-body image from three part images instead of a stored pose: swaps his sprite buffer ($0D68 EOR 8), points the store below at the new block (self-modified operand $15D2/$15D3, from sprite_addr) and fills it: rows 0-9 take their left byte from ($18) and the other two from ($1A), rows 10-20 from ($1C) and ($1E). The four pointers are sprite_parts plus the offsets at $E41D-$E420 ($00, $40 or $80: part 0, 1 or 2), so the left and right halves of the top and of the bottom change separately. Then $03C4 = $81 (shown, repositioned) and on to build_outline. Only caller: the JMP at $E450 in activity 79 (which walks to location 6, at the piano in the picture, and silences the sound and sets $3563 at $E3F1), when $E421 is set; $3665-$36AE set the offsets from the music player's flags $B013-$B016.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[58448]},{"a":5511,"t":"code","b":[189,104,13],"m":"lda","o":"figure_sprite_block,x","oa":3432},{"a":5514,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":5516,"t":"code","b":[157,104,13],"m":"sta","o":"figure_sprite_block,x","oa":3432},{"a":5519,"t":"code","b":[32,150,19],"m":"jsr","o":"sprite_addr","oa":5014},{"a":5522,"t":"code","b":[165,26],"m":"lda","o":"tmp_ptr_b","oa":26},{"a":5524,"t":"code","b":[141,210,21],"m":"sta","o":"compose_store_lo","oa":5586},{"a":5527,"t":"code","b":[165,27],"m":"lda","o":"tmp_ptr_b_hi","oa":27},{"a":5529,"t":"code","b":[141,211,21],"m":"sta","o":"compose_store_hi","oa":5587},{"a":5532,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":5534,"t":"code","b":[162,22],"m":"ldx","o":"#$16"},{"a":5536,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":5538,"t":"code","b":[134,25],"m":"stx","o":"tmp_ptr_a_hi","oa":25},{"a":5540,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":5542,"l":"b_15A6","t":"code","b":[181,24],"m":"lda","o":"tmp_ptr_a,x","oa":24,"x":[5549]},{"a":5544,"t":"code","b":[149,26],"m":"sta","o":"tmp_ptr_b,x","oa":26},{"a":5546,"t":"code","b":[232],"m":"inx"},{"a":5547,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":5549,"t":"code","b":[208,247],"m":"bne","o":"b_15A6","oa":5542},{"a":5551,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":5553,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":5555,"l":"b_15B3","t":"code","b":[185,29,228],"m":"lda","o":"piano_part_offsets,y","oa":58397,"x":[5570]},{"a":5558,"t":"code","b":[24],"m":"clc"},{"a":5559,"t":"code","b":[117,24],"m":"adc","o":"tmp_ptr_a,x","oa":24},{"a":5561,"t":"code","b":[149,24],"m":"sta","o":"tmp_ptr_a,x","oa":24},{"a":5563,"t":"code","b":[144,2],"m":"bcc","o":"b_15BF","oa":5567},{"a":5565,"t":"code","b":[246,25],"m":"inc","o":"tmp_ptr_a_hi,x","oa":25},{"a":5567,"l":"b_15BF","t":"code","b":[202],"m":"dex","x":[5563]},{"a":5568,"t":"code","b":[202],"m":"dex"},{"a":5569,"t":"code","b":[136],"m":"dey"},{"a":5570,"t":"code","b":[16,239],"m":"bpl","o":"b_15B3","oa":5555},{"a":5572,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":5574,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":5576,"l":"b_15C8","t":"code","b":[192,30],"m":"cpy","o":"#$1E","x":[5598]},{"a":5578,"t":"code","b":[144,55],"m":"bcc","o":"b_1603","oa":5635},{"a":5580,"t":"code","b":[138],"m":"txa"},{"a":5581,"t":"code","b":[240,47],"m":"beq","o":"b_15FE","oa":5630},{"a":5583,"t":"code","b":[177,30],"m":"lda","o":"(tmp_ptr_d),y","oa":30},{"a":5585,"l":"compose_store","c":"The STA abs,Y of compose_from_parts's copy loop. Its operand ($15D2/$15D3) is rewritten at $1594/$1599 with the new sprite block's address, so the bytes land in the person's sprite, not here; the JMPs at $1600, $1608 and $160D return to it with the next byte.","t":"code","b":[153,209,21],"m":"sta","o":"compose_store,y","oa":5585,"x":[5585,5632,5640,5645]},{"a":5586,"t":"note","l":"compose_store_lo","c":"Low byte of compose_store's operand: the target sprite block, written at $1594 from ($1A).","note":"inside the item at $15D1","x":[5524]},{"a":5587,"t":"note","l":"compose_store_hi","c":"High byte of compose_store's operand, written at $1599 from ($1B).","note":"inside the item at $15D1","x":[5529]},{"a":5588,"t":"code","b":[232],"m":"inx"},{"a":5589,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":5591,"t":"code","b":[208,2],"m":"bne","o":"b_15DB","oa":5595},{"a":5593,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":5595,"l":"b_15DB","t":"code","b":[200],"m":"iny","x":[5591]},{"a":5596,"t":"code","b":[192,64],"m":"cpy","o":"#$40"},{"a":5598,"t":"code","b":[208,232],"m":"bne","o":"b_15C8","oa":5576},{"a":5600,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":5602,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":5605,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":5607,"t":"code","b":[32,150,19],"m":"jsr","o":"sprite_addr","oa":5014},{"a":5610,"t":"code","b":[165,26],"m":"lda","o":"tmp_ptr_b","oa":26},{"a":5612,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":5614,"t":"code","b":[24],"m":"clc"},{"a":5615,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":5617,"t":"code","b":[133,26],"m":"sta","o":"tmp_ptr_b","oa":26},{"a":5619,"t":"code","b":[165,27],"m":"lda","o":"tmp_ptr_b_hi","oa":27},{"a":5621,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":5623,"t":"code","b":[144,2],"m":"bcc","o":"b_15FB","oa":5627},{"a":5625,"t":"code","b":[230,27],"m":"inc","o":"tmp_ptr_b_hi","oa":27},{"a":5627,"l":"b_15FB","t":"code","b":[76,183,18],"m":"jmp","o":"build_outline","oa":4791,"x":[5623]},{"a":5630,"l":"b_15FE","t":"code","b":[177,28],"m":"lda","o":"(tmp_ptr_c),y","oa":28,"x":[5581]},{"a":5632,"t":"code","b":[76,209,21],"m":"jmp","o":"compose_store","oa":5585},{"a":5635,"l":"b_1603","t":"code","b":[138],"m":"txa","x":[5578]},{"a":5636,"t":"code","b":[240,5],"m":"beq","o":"b_160B","oa":5643},{"a":5638,"t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26},{"a":5640,"t":"code","b":[76,209,21],"m":"jmp","o":"compose_store","oa":5585},{"a":5643,"l":"b_160B","t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24,"x":[5636]},{"a":5645,"t":"code","b":[76,209,21],"m":"jmp","o":"compose_store","oa":5585},{"a":5648,"l":"sprite_parts","c":"Three multicolour sprite images used as parts by compose_from_parts (not addressed directly: it loads #$10/#$16): part 0 at $1610 (no hands showing), part 1 at $1650 (hands, colour %11, out at both sides; its legs a row higher), part 2 at $1690, of which only rows 0-9 (30 bytes) exist, since the next byte is code: the other hand positions. The code at $3665-$36AE only ever picks parts 0 or 1 for the bottom rows.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5656,"t":"byte","b":[0,0,168,0,2,170,0,2]},{"a":5664,"t":"byte","b":[170,0,10,170,128,10,170,128]},{"a":5672,"t":"byte","b":[0,168,0,0,168,0,0,84]},{"a":5680,"t":"byte","b":[0,0,84,0,0,0,0,0]},{"a":5688,"t":"byte","b":[0,0,1,1,0,1,1,0]},{"a":5696,"t":"byte","b":[9,1,128,42,2,160,0,0]},{"a":5704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5720,"t":"byte","b":[0,0,168,0,204,168,204,58]},{"a":5728,"t":"byte","b":[170,176,250,170,188,0,168,0]},{"a":5736,"t":"byte","b":[0,168,0,0,168,0,1,85]},{"a":5744,"t":"byte","b":[0,1,85,0,0,0,0,0]},{"a":5752,"t":"byte","b":[0,0,1,1,0,9,1,128]},{"a":5760,"t":"byte","b":[42,2,160,0,0,0,0,0]},{"a":5768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5784,"t":"byte","b":[0,0,168,0,51,171,48,14]},{"a":5792,"t":"byte","b":[170,192,62,170,240,0,168,0]},{"a":5800,"t":"byte","b":[0,168,0,0,168,0]},{"a":5806,"l":"set_custom_location","c":"Copies location X's floor line, X/2 and depth (location_y, location_x, location_depth) into entry 54, the location activities adjust and walk to. Callers: $8EF9 and $A853 (which then make 54 the person's target), $2FE8, $33E7, $390D, $95BC, $A887, $AF9B, $E026.","t":"code","b":[189,164,29],"m":"lda","o":"location_depth,x","oa":7588,"x":[12264,13287,14605,36601,38332,43091,43143,44955,57382]},{"a":5809,"t":"code","b":[141,218,29],"m":"sta","o":"location_depth_custom","oa":7642},{"a":5812,"t":"code","b":[189,109,29],"m":"lda","o":"location_x,x","oa":7533},{"a":5815,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":5818,"t":"code","b":[189,54,29],"m":"lda","o":"location_y,x","oa":7478},{"a":5821,"t":"code","b":[141,108,29],"m":"sta","o":"location_y_custom","oa":7532},{"a":5824,"t":"code","b":[96],"m":"rts"},{"a":5825,"l":"figure_face_left","c":"Per figure (0 person, 1 dog, 2): the value $039A,x takes when the figure faces left (8, 4, 1); turning EORs it in. It is also the pose the person (8) and the dog (4) take when they arrive (state 6, $18D3). The third byte is never read: only figures 0 and 1 walk.","t":"byte","b":[8,4,1],"x":[6355,6458,6694,6734,6759,7132,7149,7247]},{"a":5828,"l":"move_figure","c":"Moves figure X (0 the person, main loop $09BB; 1 the dog, $09C5) one step of its movement state machine. Waits while the figure's last change is not on screen yet (bits 0-1 of $03C4,x). Otherwise increments its pass counter $02DD,x, puts the floor of its floor line in $02D4 (floor_of_y: 0-2, $80 on the stairs), stirs the random generator, refreshes X/2 ($03A3,x) unless idle, and switches on the state $03BC,x through move_states: 0 idle, 1 the dog between walks, 2 and 5 choose the route, 3 walk to the stairs, 4 climb, 6 walk to the target location $03C0,x.","t":"code","b":[142,215,2],"m":"stx","o":"move_figure_no","oa":727,"x":[2491,2501]},{"a":5831,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":5834,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":5836,"t":"code","b":[240,1],"m":"beq","o":"b_16CF","oa":5839},{"a":5838,"t":"code","b":[96],"m":"rts"},{"a":5839,"l":"b_16CF","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[5836]},{"a":5842,"t":"code","b":[254,221,2],"m":"inc","o":"move_tick,x","oa":733},{"a":5845,"t":"code","b":[189,175,3],"m":"lda","o":"fig_floor_y,x","oa":943},{"a":5848,"t":"code","b":[32,35,29],"m":"jsr","o":"floor_of_y","oa":7459},{"a":5851,"t":"code","b":[140,212,2],"m":"sty","o":"move_floor","oa":724},{"a":5854,"t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727},{"a":5857,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":5860,"t":"code","b":[189,188,3],"m":"lda","o":"move_state,x","oa":956},{"a":5863,"t":"code","b":[240,5],"m":"beq","o":"b_16EE","oa":5870},{"a":5865,"t":"code","b":[72],"m":"pha"},{"a":5866,"t":"code","b":[32,77,30],"m":"jsr","o":"calc_half_x","oa":7757},{"a":5869,"t":"code","b":[104],"m":"pla"},{"a":5870,"l":"b_16EE","t":"code","b":[32,19,63],"m":"jsr","o":"switch_a","oa":16147,"x":[5863]},{"a":5873,"l":"move_states","c":"move_figure's switch table (handler address minus one), by state: 0 $1701 mstate_idle, 1 $173C mstate_dog, 2 $1844 mstate_route, 3 $185B mstate_to_stairs, 4 $18A9 mstate_stairs, 5 $1844 mstate_route again after a flight, 6 $18CB mstate_to_target.","t":"word","b":[0,23,59,23,67,24,90,24],"d":[5888,5947,6211,6234]},{"a":5881,"t":"word","b":[168,24,67,24,202,24],"d":[6312,6211,6346]},{"a":5887,"l":"wander_wait","c":"Per figure: state 1's countdown before the dog picks its next destination, decremented every eighth pass at $1797. Only the dog's byte (dog_wander_wait, $1700) is used: $16FF, the person's, is never read because the person never enters state 1.","t":"byte","b":[1],"x":[5956,6039]},{"a":5888,"l":"dog_wander_wait","c":"The dog's wait before its next walk (wander_wait + 1): set at $17C2 to 3, 7, 11 or 15 from the random byte, or $E3-$EF for destinations 0-8 when $037B is 0, to $40 when it goes to eat ($17F3), and to $FF by the phase handler at $28CD. At $10 or more the dog rests in pose $19 ($174D).","t":"byte","b":[2],"x":[6082,6131,10447]},{"a":5889,"l":"mstate_idle","c":"Movement state 0, idle. Sets the figure's speed $039F,x to 1 (a step every second pass), or to 2 (every fourth) for the person when $037B is $7B or $0365 is non-zero ($0365 is non-zero while he is sick: $0B4F then makes the skin colour $D026 green), and restarts the step timer. The person then stays idle until an activity sets state 2 ($AB63 and others); the dog goes straight on to state 1.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":5891,"t":"code","b":[224,0],"m":"cpx","o":"#$00"},{"a":5893,"t":"code","b":[208,14],"m":"bne","o":"b_1715","oa":5909},{"a":5895,"t":"code","b":[172,123,3],"m":"ldy","o":"pending_activity","oa":891},{"a":5898,"t":"code","b":[192,123],"m":"cpy","o":"#$7B"},{"a":5900,"t":"code","b":[240,5],"m":"beq","o":"b_1713","oa":5907},{"a":5902,"t":"code","b":[172,101,3],"m":"ldy","o":"illness_level","oa":869},{"a":5905,"t":"code","b":[240,2],"m":"beq","o":"b_1715","oa":5909},{"a":5907,"l":"b_1713","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[5900]},{"a":5909,"l":"b_1715","t":"code","b":[157,159,3],"m":"sta","o":"move_speed,x","oa":927,"x":[5893,5905]},{"a":5912,"t":"code","b":[32,76,25],"m":"jsr","o":"speed_mask","oa":6476},{"a":5915,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":5917,"t":"code","b":[157,221,2],"m":"sta","o":"move_tick,x","oa":733},{"a":5920,"t":"code","b":[138],"m":"txa"},{"a":5921,"t":"code","b":[208,1],"m":"bne","o":"mstate_next","oa":5924},{"a":5923,"t":"code","b":[96],"m":"rts"},{"a":5924,"l":"mstate_next","c":"Advances figure X to its next movement state ($03BC,x + 1) and restarts its step timer (mstate_reset_timer).","t":"code","b":[254,188,3],"m":"inc","o":"move_state,x","oa":956,"x":[5921,6134,6310,7091]},{"a":5927,"l":"mstate_reset_timer","c":"Restarts figure X's step timer $02DD,x as the complement of its speed mask, so the next step is a full period away; for the dog, when the person's timer is 0, its timer is set to 2 instead. Also entered at $1733 (from $1A54).","t":"code","b":[138],"m":"txa","x":[6366]},{"a":5928,"t":"code","b":[240,9],"m":"beq","o":"b_1733","oa":5939},{"a":5930,"t":"code","b":[173,221,2],"m":"lda","o":"move_tick","oa":733},{"a":5933,"t":"code","b":[208,4],"m":"bne","o":"b_1733","oa":5939},{"a":5935,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":5937,"t":"code","b":[208,5],"m":"bne","o":"b_1738","oa":5944},{"a":5939,"l":"b_1733","t":"code","b":[32,76,25],"m":"jsr","o":"speed_mask","oa":6476,"x":[5928,5933,6740]},{"a":5942,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":5944,"l":"b_1738","t":"code","b":[157,221,2],"m":"sta","o":"move_tick,x","oa":733,"x":[5937]},{"a":5947,"t":"code","b":[96],"m":"rts"},{"a":5948,"l":"mstate_dog","c":"Movement state 1, the dog between walks. On every pass while it eats (dog_eating non-zero), dog_eat_timer counts down, each underflow takes one unit of food from the bowl ($2A62) and redraws it (draw_bowl), and a pose from dog_eat_poses is shown every fourth count. On every eighth pass it counts dog_wander_wait down, except while $037B is $7B or $7C; at 0 it stops eating and picks a random entry 0-20 of dog_destinations, drawn again if it is on the top floor (below 16) while $0711 is non-zero or the activity ($8D9B) is $7E or more; with $037B non-zero it goes to 46, the front door, instead. Sets the new wait, the target $03C1 and state 2. Going to 32, its bowl, with food in it starts eating on arrival.","t":"code","b":[173,249,23],"m":"lda","o":"dog_eating","oa":6137},{"a":5951,"t":"code","b":[208,17],"m":"bne","o":"b_1752","oa":5970},{"a":5953,"t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727},{"a":5956,"t":"code","b":[189,255,22],"m":"lda","o":"wander_wait,x","oa":5887},{"a":5959,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":5961,"t":"code","b":[144,7],"m":"bcc","o":"b_1752","oa":5970},{"a":5963,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":5965,"t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":5967,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":5970,"l":"b_1752","t":"code","b":[189,221,2],"m":"lda","o":"move_tick,x","oa":733,"x":[5951,5961]},{"a":5973,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":5975,"t":"code","b":[240,48],"m":"beq","o":"b_1789","oa":6025},{"a":5977,"l":"b_1759","t":"code","b":[173,249,23],"m":"lda","o":"dog_eating","oa":6137,"x":[6033,6037,6042]},{"a":5980,"t":"code","b":[240,42],"m":"beq","o":"r_1788","oa":6024},{"a":5982,"t":"code","b":[206,250,23],"m":"dec","o":"dog_eat_timer","oa":6138},{"a":5985,"t":"code","b":[16,19],"m":"bpl","o":"b_1776","oa":6006},{"a":5987,"t":"code","b":[173,98,42],"m":"lda","o":"dog_bowl_level","oa":10850},{"a":5990,"t":"code","b":[240,6],"m":"beq","o":"b_176E","oa":5998},{"a":5992,"t":"code","b":[206,98,42],"m":"dec","o":"dog_bowl_level","oa":10850},{"a":5995,"t":"code","b":[32,33,24],"m":"jsr","o":"draw_bowl","oa":6177},{"a":5998,"l":"b_176E","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[5990]},{"a":6001,"t":"code","b":[41,63],"m":"and","o":"#$3F"},{"a":6003,"t":"code","b":[141,250,23],"m":"sta","o":"dog_eat_timer","oa":6138},{"a":6006,"l":"b_1776","t":"code","b":[173,250,23],"m":"lda","o":"dog_eat_timer","oa":6138,"x":[5985]},{"a":6009,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":6010,"t":"code","b":[176,12],"m":"bcs","o":"r_1788","oa":6024},{"a":6012,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":6013,"t":"code","b":[176,9],"m":"bcs","o":"r_1788","oa":6024},{"a":6015,"t":"code","b":[168],"m":"tay"},{"a":6016,"t":"code","b":[185,251,23],"m":"lda","o":"dog_eat_poses,y","oa":6139},{"a":6019,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":6021,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":6024,"l":"r_1788","t":"code","b":[96],"m":"rts","x":[5980,6010,6013]},{"a":6025,"l":"b_1789","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[5975]},{"a":6028,"t":"code","b":[173,123,3],"m":"lda","o":"pending_activity","oa":891},{"a":6031,"t":"code","b":[201,123],"m":"cmp","o":"#$7B"},{"a":6033,"t":"code","b":[240,198],"m":"beq","o":"b_1759","oa":5977},{"a":6035,"t":"code","b":[201,124],"m":"cmp","o":"#$7C"},{"a":6037,"t":"code","b":[240,194],"m":"beq","o":"b_1759","oa":5977},{"a":6039,"t":"code","b":[222,255,22],"m":"dec","o":"wander_wait,x","oa":5887},{"a":6042,"t":"code","b":[208,189],"m":"bne","o":"b_1759","oa":5977},{"a":6044,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6046,"t":"code","b":[141,249,23],"m":"sta","o":"dog_eating","oa":6137},{"a":6049,"t":"code","b":[141,250,23],"m":"sta","o":"dog_eat_timer","oa":6138},{"a":6052,"l":"b_17A4","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[6102]},{"a":6055,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":6057,"t":"code","b":[201,21],"m":"cmp","o":"#$15"},{"a":6059,"t":"code","b":[144,2],"m":"bcc","o":"b_17AF","oa":6063},{"a":6061,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":6063,"l":"b_17AF","t":"code","b":[170],"m":"tax","x":[6059]},{"a":6064,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":6067,"t":"code","b":[41,12],"m":"and","o":"#$0C"},{"a":6069,"t":"code","b":[9,3],"m":"ora","o":"#$03"},{"a":6071,"t":"code","b":[224,9],"m":"cpx","o":"#$09"},{"a":6073,"t":"code","b":[176,7],"m":"bcs","o":"b_17C2","oa":6082},{"a":6075,"t":"code","b":[172,123,3],"m":"ldy","o":"pending_activity","oa":891},{"a":6078,"t":"code","b":[208,2],"m":"bne","o":"b_17C2","oa":6082},{"a":6080,"t":"code","b":[9,224],"m":"ora","o":"#$E0"},{"a":6082,"l":"b_17C2","t":"code","b":[141,0,23],"m":"sta","o":"dog_wander_wait","oa":5888,"x":[6073,6078]},{"a":6085,"t":"code","b":[189,12,24],"m":"lda","o":"dog_destinations,x","oa":6156},{"a":6088,"t":"code","b":[172,17,7],"m":"ldy","o":"text_band_bottom","oa":1809},{"a":6091,"t":"code","b":[208,7],"m":"bne","o":"b_17D4","oa":6100},{"a":6093,"t":"code","b":[172,155,141],"m":"ldy","o":"activity","oa":36251},{"a":6096,"t":"code","b":[192,126],"m":"cpy","o":"#$7E"},{"a":6098,"t":"code","b":[144,4],"m":"bcc","o":"b_17D8","oa":6104},{"a":6100,"l":"b_17D4","t":"code","b":[201,16],"m":"cmp","o":"#$10","x":[6091]},{"a":6102,"t":"code","b":[144,204],"m":"bcc","o":"b_17A4","oa":6052},{"a":6104,"l":"b_17D8","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[6098]},{"a":6107,"t":"code","b":[172,123,3],"m":"ldy","o":"pending_activity","oa":891},{"a":6110,"t":"code","b":[240,2],"m":"beq","o":"b_17E2","oa":6114},{"a":6112,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":6114,"l":"b_17E2","t":"code","b":[157,192,3],"m":"sta","o":"move_target,x","oa":960,"x":[6110]},{"a":6117,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":6119,"t":"code","b":[208,13],"m":"bne","o":"b_17F6","oa":6134},{"a":6121,"t":"code","b":[173,98,42],"m":"lda","o":"dog_bowl_level","oa":10850},{"a":6124,"t":"code","b":[240,8],"m":"beq","o":"b_17F6","oa":6134},{"a":6126,"t":"code","b":[141,249,23],"m":"sta","o":"dog_eating","oa":6137},{"a":6129,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":6131,"t":"code","b":[141,0,23],"m":"sta","o":"dog_wander_wait","oa":5888},{"a":6134,"l":"b_17F6","t":"code","b":[76,36,23],"m":"jmp","o":"mstate_next","oa":5924,"x":[6119,6124]},{"a":6137,"l":"dog_eating","c":"Non-zero while the dog eats: set at $17EE (to the bowl level $2A62) when it heads for location 32 with food in the bowl; cleared at $179C when its wait runs out.","t":"byte","b":[0],"x":[5948,5977,6046,6126]},{"a":6138,"l":"dog_eat_timer","c":"Counts down every pass while the dog eats; on underflow one unit of food goes and it restarts at a random 0-63. When its two low bits are 0, the value / 4 picks the pose from dog_eat_poses.","t":"byte","b":[0],"x":[5982,6003,6006,6049]},{"a":6139,"l":"dog_eat_poses","c":"Dog poses while eating, by dog_eat_timer / 4 (0-15): $1B (head down) for 0-3, then $04 (standing) and $1A alternating. The 17th byte, $180B, is never reached.","t":"byte","b":[27,27,27,27,4,26,4,26],"x":[6016]},{"a":6147,"t":"byte","b":[4,26,4,26,4,26,4,26]},{"a":6155,"t":"byte","b":[4]},{"a":6156,"l":"dog_destinations","c":"The 21 locations the dog wanders to, by a random index 0-20 (random values 21-31 are folded to 5-15): 11, 15, 16, 31, 27, 32, 42, 45, 47, 32, 20, 21, 26, 29, 46, 32, 46, 32, 1, 12, 46. 32 is its bowl, 46 inside the front door. Indexes 0-8 get the long wait ($E3-$EF) unless $037B is non-zero.","t":"byte","b":[11,15,16,31,27,32,42,45],"x":[6085]},{"a":6164,"t":"byte","b":[47,32,20,21,26,29,46,32]},{"a":6172,"t":"byte","b":[46,32,1,12,46]},{"a":6177,"l":"draw_bowl","c":"Redraws the dog's bowl for the food level $2A62 (0-6): lines 3 and 4 of the bitmap cell at row 23, column 1 ($7CCB, $7CCC) from bowl_line3/bowl_line4, and that cell's colour RAM ($DB99) set to 0, black, the colour of its %11 pixels: the fuller the bowl, the more black pixels. Called when the dog eats ($176B) and after $2A63 fills the bowl to 6.","t":"code","b":[174,98,42],"m":"ldx","o":"dog_bowl_level","oa":10850,"x":[5995,10856]},{"a":6180,"t":"code","b":[189,54,24],"m":"lda","o":"bowl_line3,x","oa":6198},{"a":6183,"t":"code","b":[141,203,124],"m":"sta","o":"dog_bowl_food","oa":31947},{"a":6186,"t":"code","b":[189,61,24],"m":"lda","o":"bowl_line4,x","oa":6205},{"a":6189,"t":"code","b":[141,204,124],"m":"sta","o":"dog_bowl_food_2","oa":31948},{"a":6192,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6194,"t":"code","b":[141,153,219],"m":"sta","o":"$DB99"},{"a":6197,"t":"code","b":[96],"m":"rts"},{"a":6198,"l":"bowl_line3","c":"Bitmap line 3 of the bowl cell for food levels 0-6: $AA, $AA, $AA, $BA, $BA, $BE, $BE (each %11 pair is a black pixel).","t":"byte","b":[170,170,170,186,186,190,190],"x":[6180,13709]},{"a":6205,"l":"bowl_line4","c":"Bitmap line 4 of the bowl cell for food levels 0-6: $AA, $EA, $FA, $FA, $FE, $FE, $FF.","t":"byte","b":[170,234,250,250,254,254,255],"x":[6186]},{"a":6212,"l":"mstate_route","c":"Movement states 2 and 5: if the target location ($03C0,x) has the figure's floor line ($03AF,x), goes to state 6 (walk to it); otherwise to state 3 (walk to the stairs).","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727},{"a":6215,"t":"code","b":[188,192,3],"m":"ldy","o":"move_target,x","oa":960},{"a":6218,"t":"code","b":[185,54,29],"m":"lda","o":"location_y,y","oa":7478},{"a":6221,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":6223,"t":"code","b":[221,175,3],"m":"cmp","o":"fig_floor_y,x","oa":943},{"a":6226,"t":"code","b":[208,2],"m":"bne","o":"b_1856","oa":6230},{"a":6228,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":6230,"l":"b_1856","t":"code","b":[152],"m":"tya","x":[6226]},{"a":6231,"t":"code","b":[157,188,3],"m":"sta","o":"move_state,x","oa":956},{"a":6234,"l":"r_185A","t":"code","b":[96],"m":"rts","x":[6238]},{"a":6235,"l":"mstate_to_stairs","c":"Movement state 3: walks (walk_step) to the stair end that leads toward the target's floor. On arrival stores the direction in $02E1,x (bit 7 set = going down, set_stair_state), passes the floor being left to $E3C1 (the person only; an RTS in this build), faces the figure for the first part of the flight ($039A,x = 8, or 0 when going down from the middle floor), zeroes the step count $02DF,x and moves to state 4.","t":"code","b":[32,168,25],"m":"jsr","o":"walk_step","oa":6568},{"a":6238,"t":"code","b":[208,250],"m":"bne","o":"r_185A","oa":6234},{"a":6240,"t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727},{"a":6243,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6245,"t":"code","b":[141,216,2],"m":"sta","o":"move_temp","oa":728},{"a":6248,"t":"code","b":[188,192,3],"m":"ldy","o":"move_target,x","oa":960},{"a":6251,"t":"code","b":[185,54,29],"m":"lda","o":"location_y,y","oa":7478},{"a":6254,"t":"code","b":[221,175,3],"m":"cmp","o":"fig_floor_y,x","oa":943},{"a":6257,"t":"code","b":[144,5],"m":"bcc","o":"b_1878","oa":6264},{"a":6259,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":6261,"t":"code","b":[141,216,2],"m":"sta","o":"move_temp","oa":728},{"a":6264,"l":"b_1878","t":"code","b":[173,216,2],"m":"lda","o":"move_temp","oa":728,"x":[6257]},{"a":6267,"t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727},{"a":6270,"t":"code","b":[32,143,28],"m":"jsr","o":"set_stair_state","oa":7311},{"a":6273,"t":"code","b":[173,215,2],"m":"lda","o":"move_figure_no","oa":727},{"a":6276,"t":"code","b":[208,10],"m":"bne","o":"b_1890","oa":6288},{"a":6278,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":6281,"t":"code","b":[32,35,29],"m":"jsr","o":"floor_of_y","oa":7459},{"a":6284,"t":"code","b":[152],"m":"tya"},{"a":6285,"t":"code","b":[32,193,227],"m":"jsr","o":"empty_hook_188d","oa":58305},{"a":6288,"l":"b_1890","t":"code","b":[169,8],"m":"lda","o":"#$08","x":[6276]},{"a":6290,"t":"code","b":[188,225,2],"m":"ldy","o":"stair_state,x","oa":737},{"a":6293,"t":"code","b":[16,7],"m":"bpl","o":"b_189E","oa":6302},{"a":6295,"t":"code","b":[172,212,2],"m":"ldy","o":"move_floor","oa":724},{"a":6298,"t":"code","b":[240,2],"m":"beq","o":"b_189E","oa":6302},{"a":6300,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6302,"l":"b_189E","t":"code","b":[157,154,3],"m":"sta","o":"fig_mirror,x","oa":922,"x":[6293,6298]},{"a":6305,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6307,"t":"code","b":[157,223,2],"m":"sta","o":"stair_steps,x","oa":735},{"a":6310,"t":"code","b":[76,36,23],"m":"jmp","o":"mstate_next","oa":5924},{"a":6313,"l":"mstate_stairs","c":"Movement state 4, on the stairs: acts at half the walking rate (mask x 2 + 1), keeps floor x 2 in $02D5,x while the figure is still on a floor line, flags a reposition and takes one step (stair_step).","t":"code","b":[32,76,25],"m":"jsr","o":"speed_mask","oa":6476},{"a":6316,"t":"code","b":[56],"m":"sec"},{"a":6317,"t":"code","b":[42],"m":"rol","o":"a"},{"a":6318,"t":"code","b":[61,221,2],"m":"and","o":"move_tick,x","oa":733},{"a":6321,"t":"code","b":[240,1],"m":"beq","o":"b_18B4","oa":6324},{"a":6323,"t":"code","b":[96],"m":"rts"},{"a":6324,"l":"b_18B4","t":"code","b":[173,212,2],"m":"lda","o":"move_floor","oa":724,"x":[6321]},{"a":6327,"t":"code","b":[48,4],"m":"bmi","o":"b_18BD","oa":6333},{"a":6329,"t":"code","b":[10],"m":"asl","o":"a"},{"a":6330,"t":"code","b":[157,213,2],"m":"sta","o":"climb_floor_x2,x","oa":725},{"a":6333,"l":"b_18BD","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[6327]},{"a":6336,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":6339,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":6341,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":6344,"t":"code","b":[76,50,27],"m":"jmp","o":"stair_step","oa":6962},{"a":6347,"l":"mstate_to_target","c":"Movement state 6: walks to the target location; on arrival takes the standing pose figure_face_left,x (8 the person, 4 the dog), state 0, and restarts the step timer.","t":"code","b":[32,168,25],"m":"jsr","o":"walk_step","oa":6568},{"a":6350,"t":"code","b":[208,17],"m":"bne","o":"r_18E1","oa":6369},{"a":6352,"t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727},{"a":6355,"t":"code","b":[189,193,22],"m":"lda","o":"figure_face_left,x","oa":5825},{"a":6358,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":6361,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6363,"t":"code","b":[157,188,3],"m":"sta","o":"move_state,x","oa":956},{"a":6366,"t":"code","b":[76,39,23],"m":"jmp","o":"mstate_reset_timer","oa":5927},{"a":6369,"l":"r_18E1","t":"code","b":[96],"m":"rts","x":[6350,6376,6399]},{"a":6370,"l":"walk_left","c":"Steps figure X one pixel left (move_left) if its speed mask allows it this pass, and sets bit 0 of $03C4,x.","t":"code","b":[32,76,25],"m":"jsr","o":"speed_mask","oa":6476,"x":[6843]},{"a":6373,"t":"code","b":[61,221,2],"m":"and","o":"move_tick,x","oa":733},{"a":6376,"t":"code","b":[208,247],"m":"bne","o":"r_18E1","oa":6369},{"a":6378,"t":"code","b":[32,55,25],"m":"jsr","o":"move_left","oa":6455},{"a":6381,"l":"j_18ED","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[6404]},{"a":6384,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":6387,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":6389,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":6392,"t":"code","b":[96],"m":"rts"},{"a":6393,"l":"walk_right","c":"Steps figure X one pixel right (move_right) if its speed mask allows it this pass, and sets bit 0 of $03C4,x.","t":"code","b":[32,76,25],"m":"jsr","o":"speed_mask","oa":6476,"x":[6840]},{"a":6396,"t":"code","b":[61,221,2],"m":"and","o":"move_tick,x","oa":733},{"a":6399,"t":"code","b":[208,224],"m":"bne","o":"r_18E1","oa":6369},{"a":6401,"t":"code","b":[32,7,25],"m":"jsr","o":"move_right","oa":6407},{"a":6404,"t":"code","b":[76,237,24],"m":"jmp","o":"j_18ED","oa":6381},{"a":6407,"l":"move_right","c":"Moves figure X one pixel right: faces it right (set_facing with 0), increments $03A7,x and on overflow flips its X high bit ($03AB,x, the bit of its sprite from $03E3), refreshes X/2 (calc_half_x) and returns A = 1.","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[6401]},{"a":6410,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6412,"t":"code","b":[32,38,25],"m":"jsr","o":"set_facing","oa":6438},{"a":6415,"t":"code","b":[254,167,3],"m":"inc","o":"fig_x,x","oa":935},{"a":6418,"t":"code","b":[208,12],"m":"bne","o":"b_1920","oa":6432},{"a":6420,"l":"b_1914","t":"code","b":[189,171,3],"m":"lda","o":"fig_x_hi,x","oa":939,"x":[6472]},{"a":6423,"t":"code","b":[188,205,3],"m":"ldy","o":"fig_hw_sprite,x","oa":973},{"a":6426,"t":"code","b":[89,227,3],"m":"eor","o":"sprite_bit,y","oa":995},{"a":6429,"t":"code","b":[157,171,3],"m":"sta","o":"fig_x_hi,x","oa":939},{"a":6432,"l":"b_1920","t":"code","b":[32,77,30],"m":"jsr","o":"calc_half_x","oa":7757,"x":[6418,6474]},{"a":6435,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":6437,"t":"code","b":[96],"m":"rts"},{"a":6438,"l":"set_facing","c":"Sets figure X's facing $039A,x to A (0 right, non-zero left); if it changed, sets bit 1 of $03C4,x so the image is rebuilt (mirrored when facing left).","t":"code","b":[221,154,3],"m":"cmp","o":"fig_mirror,x","oa":922,"x":[6412,6461]},{"a":6441,"t":"code","b":[157,154,3],"m":"sta","o":"fig_mirror,x","oa":922},{"a":6444,"t":"code","b":[240,8],"m":"beq","o":"r_1936","oa":6454},{"a":6446,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":6449,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":6451,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":6454,"l":"r_1936","t":"code","b":[96],"m":"rts","x":[6444]},{"a":6455,"l":"move_left","c":"Moves figure X one pixel left: faces it left (figure_face_left), decrements $03A7,x and on underflow flips its X high bit, refreshes X/2 and returns A = 1.","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[6378]},{"a":6458,"t":"code","b":[189,193,22],"m":"lda","o":"figure_face_left,x","oa":5825},{"a":6461,"t":"code","b":[32,38,25],"m":"jsr","o":"set_facing","oa":6438},{"a":6464,"t":"code","b":[222,167,3],"m":"dec","o":"fig_x,x","oa":935},{"a":6467,"t":"code","b":[189,167,3],"m":"lda","o":"fig_x,x","oa":935},{"a":6470,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":6472,"t":"code","b":[240,202],"m":"beq","o":"b_1914","oa":6420},{"a":6474,"t":"code","b":[208,212],"m":"bne","o":"b_1920","oa":6432},{"a":6476,"l":"speed_mask","c":"Loads X with the figure being moved ($02D7) and returns speed_masks[$039F,x]: the figure acts only on passes where its counter $02DD,x AND this mask is 0.","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[5912,5939,6313,6370,6393,6568]},{"a":6479,"t":"code","b":[188,159,3],"m":"ldy","o":"move_speed,x","oa":927},{"a":6482,"t":"code","b":[185,86,25],"m":"lda","o":"speed_masks,y","oa":6486},{"a":6485,"t":"code","b":[96],"m":"rts"},{"a":6486,"l":"speed_masks","c":"Step masks by speed index 0-7: 0, 1, 3, 7, 15, 31, 63, 63 (every pass, one pass in 2, in 4 ...). Walking uses index 1 or 2 (mstate_idle); the stairs use the mask doubled plus one.","t":"byte","b":[0,1,3,7,15,31,63,63],"x":[6482]},{"a":6494,"l":"random","c":"The random number generator, also the second entry of the jump table ($0343). State $0414-$0417; in the crack-screen snapshot, where the crack's own screen occupies $0400, this page is parked at $4C00 with \"Zeke\" at $4C14 (the later snapshots have \"Billy Bob Binkle\" back at $03FC). Increments $0417; while that is negative, first adds the caller's A and carry into $0415; then $0414 = ((($0414 rotated left) + $C3) EOR $0414) + $0417, $0415 = old $0415 EOR ($0415 shifted left with $0414's top bit), and returns the new $0414 in A (X, Y kept). No fixed period, since the callers' A goes in. 68 JSRs plus the jump table (used by $C074) mask the result for random choices (waits, destinations, poses); move_figure calls it every pass for both figures, and many routines read $0414 directly as the last value.","t":"code","b":[238,23,4],"m":"inc","o":"rng_calls","oa":1047,"x":[835,2524,2862,5857,5998,6052,8308,8392,8487,8515,8570,8591,8659,8768,8839,9177,9416,9965,10031,11792,12007,12601,12649,14581,21449,21547,21644,22325,22596,22612,22700,22712,22755,22908,23043,23062,23074,23110,23164,23248,23268,23420,37326,37372,37429,37736,37747,38039,38068,38720,43099,43151,43254,43270,43730,43791,43802,44470,44535,44585,44616,47550,47581,47605,48932,57414,57540,57824,57868,58165,58199,58231]},{"a":6497,"t":"code","b":[16,6],"m":"bpl","o":"b_1969","oa":6505},{"a":6499,"t":"code","b":[109,21,4],"m":"adc","o":"rng_state","oa":1045},{"a":6502,"t":"code","b":[141,21,4],"m":"sta","o":"rng_state","oa":1045},{"a":6505,"l":"b_1969","t":"code","b":[173,21,4],"m":"lda","o":"rng_state","oa":1045,"x":[6497]},{"a":6508,"t":"code","b":[141,22,4],"m":"sta","o":"rng_temp","oa":1046},{"a":6511,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":6514,"t":"code","b":[42],"m":"rol","o":"a"},{"a":6515,"t":"code","b":[46,21,4],"m":"rol","o":"rng_state","oa":1045},{"a":6518,"t":"code","b":[105,195],"m":"adc","o":"#$C3"},{"a":6520,"t":"code","b":[77,20,4],"m":"eor","o":"rng_value","oa":1044},{"a":6523,"t":"code","b":[109,23,4],"m":"adc","o":"rng_calls","oa":1047},{"a":6526,"t":"code","b":[141,20,4],"m":"sta","o":"rng_value","oa":1044},{"a":6529,"t":"code","b":[173,22,4],"m":"lda","o":"rng_temp","oa":1046},{"a":6532,"t":"code","b":[77,21,4],"m":"eor","o":"rng_state","oa":1045},{"a":6535,"t":"code","b":[141,21,4],"m":"sta","o":"rng_state","oa":1045},{"a":6538,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":6541,"t":"code","b":[96],"m":"rts"},{"a":6542,"l":"hex_digits_unused","c":"Unreferenced: nothing calls, jumps or branches to $198E, and no pointer to it is stored anywhere in RAM (no $198E word; the only $198D words are inside STA $D019 instructions). Saves A in $02D8 and converts its high nibble with hex_digit, then increments X and converts the low nibble; nothing stores the first digit, which is lost.","t":"code","b":[141,216,2],"m":"sta","o":"move_temp","oa":728},{"a":6545,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":6546,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":6547,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":6548,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":6549,"t":"code","b":[32,158,25],"m":"jsr","o":"hex_digit","oa":6558},{"a":6552,"t":"code","b":[232],"m":"inx"},{"a":6553,"t":"code","b":[173,216,2],"m":"lda","o":"move_temp","oa":728},{"a":6556,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":6558,"l":"hex_digit","c":"Returns the hex digit for A (0-15): $30-$39 for 0-9 and $01-$06 for 10-15, the screen codes of A-F rather than ASCII. Only hex_digits_unused calls it.","t":"code","b":[24],"m":"clc","x":[6549]},{"a":6559,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":6561,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":6563,"t":"code","b":[144,2],"m":"bcc","o":"r_19A7","oa":6567},{"a":6565,"t":"code","b":[233,57],"m":"sbc","o":"#$39"},{"a":6567,"l":"r_19A7","t":"code","b":[96],"m":"rts","x":[6563]},{"a":6568,"l":"walk_step","c":"One walking step for figure X toward its target location ($03C0,x), or toward the stair end on its floor when the target is on another floor (location 48 + 2 x floor going up, 49 + 2 x floor going down). Returns A = 0 (Z set) when there (depth and location_x_of both match), non-zero otherwise, including on the passes its speed skips. From 15 half-pixels away or more it alternates X steps with steps toward depth 5 ($02DC toggles); nearer, it steps along whichever of X and depth is further off. To reverse it first turns: pose $11 (facing out) for a step, then pose 0 facing the new way, unless turning alone would carry its reference point past the target ($1A23). Work bytes $02E5-$02E8.","t":"code","b":[32,76,25],"m":"jsr","o":"speed_mask","oa":6476,"x":[6235,6347]},{"a":6571,"t":"code","b":[61,221,2],"m":"and","o":"move_tick,x","oa":733},{"a":6574,"t":"code","b":[240,1],"m":"beq","o":"b_19B1","oa":6577},{"a":6576,"t":"code","b":[96],"m":"rts"},{"a":6577,"l":"b_19B1","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[6574]},{"a":6580,"t":"code","b":[188,192,3],"m":"ldy","o":"move_target,x","oa":960},{"a":6583,"t":"code","b":[189,175,3],"m":"lda","o":"fig_floor_y,x","oa":943},{"a":6586,"t":"code","b":[217,54,29],"m":"cmp","o":"location_y,y","oa":7478},{"a":6589,"t":"code","b":[240,13],"m":"beq","o":"b_19CC","oa":6604},{"a":6591,"t":"code","b":[8],"m":"php"},{"a":6592,"t":"code","b":[173,212,2],"m":"lda","o":"move_floor","oa":724},{"a":6595,"t":"code","b":[10],"m":"asl","o":"a"},{"a":6596,"t":"code","b":[24],"m":"clc"},{"a":6597,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":6599,"t":"code","b":[168],"m":"tay"},{"a":6600,"t":"code","b":[40],"m":"plp"},{"a":6601,"t":"code","b":[176,1],"m":"bcs","o":"b_19CC","oa":6604},{"a":6603,"t":"code","b":[200],"m":"iny"},{"a":6604,"l":"b_19CC","t":"code","b":[189,179,3],"m":"lda","o":"fig_depth,x","oa":947,"x":[6589,6601]},{"a":6607,"t":"code","b":[217,164,29],"m":"cmp","o":"location_depth,y","oa":7588},{"a":6610,"t":"code","b":[208,11],"m":"bne","o":"b_19DF","oa":6623},{"a":6612,"t":"code","b":[32,46,30],"m":"jsr","o":"location_x_of","oa":7726},{"a":6615,"t":"code","b":[217,109,29],"m":"cmp","o":"location_x,y","oa":7533},{"a":6618,"t":"code","b":[208,3],"m":"bne","o":"b_19DF","oa":6623},{"a":6620,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6622,"t":"code","b":[96],"m":"rts"},{"a":6623,"l":"b_19DF","t":"code","b":[189,179,3],"m":"lda","o":"fig_depth,x","oa":947,"x":[6610,6618]},{"a":6626,"t":"code","b":[56],"m":"sec"},{"a":6627,"t":"code","b":[249,164,29],"m":"sbc","o":"location_depth,y","oa":7588},{"a":6630,"t":"code","b":[141,232,2],"m":"sta","o":"walk_ddepth_sign","oa":744},{"a":6633,"t":"code","b":[176,4],"m":"bcs","o":"b_19EF","oa":6639},{"a":6635,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":6637,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":6639,"l":"b_19EF","t":"code","b":[141,230,2],"m":"sta","o":"walk_ddepth","oa":742,"x":[6633]},{"a":6642,"t":"code","b":[32,46,30],"m":"jsr","o":"location_x_of","oa":7726},{"a":6645,"t":"code","b":[56],"m":"sec"},{"a":6646,"t":"code","b":[249,109,29],"m":"sbc","o":"location_x,y","oa":7533},{"a":6649,"t":"code","b":[141,229,2],"m":"sta","o":"walk_dx","oa":741},{"a":6652,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6654,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":6656,"t":"code","b":[141,231,2],"m":"sta","o":"walk_dx_sign","oa":743},{"a":6659,"t":"code","b":[173,229,2],"m":"lda","o":"walk_dx","oa":741},{"a":6662,"t":"code","b":[176,4],"m":"bcs","o":"b_1A0C","oa":6668},{"a":6664,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":6666,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":6668,"l":"b_1A0C","t":"code","b":[141,229,2],"m":"sta","o":"walk_dx","oa":741,"x":[6662]},{"a":6671,"t":"code","b":[240,105],"m":"beq","o":"b_1A7A","oa":6778},{"a":6673,"t":"code","b":[173,231,2],"m":"lda","o":"walk_dx_sign","oa":743},{"a":6676,"t":"code","b":[16,8],"m":"bpl","o":"b_1A1E","oa":6686},{"a":6678,"t":"code","b":[189,154,3],"m":"lda","o":"fig_mirror,x","oa":922},{"a":6681,"t":"code","b":[208,8],"m":"bne","o":"b_1A23","oa":6691},{"a":6683,"t":"code","b":[76,122,26],"m":"jmp","o":"b_1A7A","oa":6778},{"a":6686,"l":"b_1A1E","t":"code","b":[189,154,3],"m":"lda","o":"fig_mirror,x","oa":922,"x":[6676]},{"a":6689,"t":"code","b":[208,87],"m":"bne","o":"b_1A7A","oa":6778},{"a":6691,"l":"b_1A23","t":"code","b":[189,154,3],"m":"lda","o":"fig_mirror,x","oa":922,"x":[6681]},{"a":6694,"t":"code","b":[93,193,22],"m":"eor","o":"figure_face_left,x","oa":5825},{"a":6697,"t":"code","b":[157,154,3],"m":"sta","o":"fig_mirror,x","oa":922},{"a":6700,"t":"code","b":[32,46,30],"m":"jsr","o":"location_x_of","oa":7726},{"a":6703,"t":"code","b":[56],"m":"sec"},{"a":6704,"t":"code","b":[249,109,29],"m":"sbc","o":"location_x,y","oa":7533},{"a":6707,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6709,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":6711,"t":"code","b":[41,128],"m":"and","o":"#$80"},{"a":6713,"t":"code","b":[77,231,2],"m":"eor","o":"walk_dx_sign","oa":743},{"a":6716,"t":"code","b":[41,128],"m":"and","o":"#$80"},{"a":6718,"t":"code","b":[240,11],"m":"beq","o":"b_1A4B","oa":6731},{"a":6720,"t":"code","b":[173,231,2],"m":"lda","o":"walk_dx_sign","oa":743},{"a":6723,"t":"code","b":[73,128],"m":"eor","o":"#$80"},{"a":6725,"t":"code","b":[141,231,2],"m":"sta","o":"walk_dx_sign","oa":743},{"a":6728,"t":"code","b":[76,122,26],"m":"jmp","o":"b_1A7A","oa":6778},{"a":6731,"l":"b_1A4B","t":"code","b":[189,154,3],"m":"lda","o":"fig_mirror,x","oa":922,"x":[6718]},{"a":6734,"t":"code","b":[93,193,22],"m":"eor","o":"figure_face_left,x","oa":5825},{"a":6737,"t":"code","b":[157,154,3],"m":"sta","o":"fig_mirror,x","oa":922},{"a":6740,"t":"code","b":[32,51,23],"m":"jsr","o":"b_1733","oa":5939},{"a":6743,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":6745,"t":"code","b":[221,139,3],"m":"cmp","o":"fig_frame,x","oa":907},{"a":6748,"t":"code","b":[240,6],"m":"beq","o":"b_1A64","oa":6756},{"a":6750,"l":"j_1A5E","t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879,"x":[6775]},{"a":6753,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":6755,"t":"code","b":[96],"m":"rts"},{"a":6756,"l":"b_1A64","t":"code","b":[189,154,3],"m":"lda","o":"fig_mirror,x","oa":922,"x":[6748]},{"a":6759,"t":"code","b":[93,193,22],"m":"eor","o":"figure_face_left,x","oa":5825},{"a":6762,"t":"code","b":[157,154,3],"m":"sta","o":"fig_mirror,x","oa":922},{"a":6765,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":6768,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":6770,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":6773,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":6775,"t":"code","b":[76,94,26],"m":"jmp","o":"j_1A5E","oa":6750},{"a":6778,"l":"b_1A7A","t":"code","b":[173,229,2],"m":"lda","o":"walk_dx","oa":741,"x":[6671,6683,6689,6728]},{"a":6781,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":6783,"t":"code","b":[176,61],"m":"bcs","o":"b_1ABE","oa":6846},{"a":6785,"t":"code","b":[56],"m":"sec"},{"a":6786,"t":"code","b":[237,230,2],"m":"sbc","o":"walk_ddepth","oa":742},{"a":6789,"t":"code","b":[176,30],"m":"bcs","o":"b_1AA5","oa":6821},{"a":6791,"l":"j_1A87","t":"code","b":[188,179,3],"m":"ldy","o":"fig_depth,x","oa":947,"x":[6876]},{"a":6794,"t":"code","b":[200],"m":"iny"},{"a":6795,"t":"code","b":[173,232,2],"m":"lda","o":"walk_ddepth_sign","oa":744},{"a":6798,"t":"code","b":[48,2],"m":"bmi","o":"b_1A92","oa":6802},{"a":6800,"t":"code","b":[136],"m":"dey"},{"a":6801,"t":"code","b":[136],"m":"dey"},{"a":6802,"l":"b_1A92","t":"code","b":[152],"m":"tya","x":[6798]},{"a":6803,"t":"code","b":[157,179,3],"m":"sta","o":"fig_depth,x","oa":947},{"a":6806,"t":"code","b":[32,221,29],"m":"jsr","o":"walk_anim","oa":7645},{"a":6809,"t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727},{"a":6812,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":6815,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":6817,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":6820,"t":"code","b":[96],"m":"rts"},{"a":6821,"l":"b_1AA5","t":"code","b":[32,221,29],"m":"jsr","o":"walk_anim","oa":7645,"x":[6789,6852,6874]},{"a":6824,"t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727},{"a":6827,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":6830,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":6832,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":6835,"t":"code","b":[173,231,2],"m":"lda","o":"walk_dx_sign","oa":743},{"a":6838,"t":"code","b":[16,3],"m":"bpl","o":"b_1ABB","oa":6843},{"a":6840,"t":"code","b":[76,249,24],"m":"jmp","o":"walk_right","oa":6393},{"a":6843,"l":"b_1ABB","t":"code","b":[76,226,24],"m":"jmp","o":"walk_left","oa":6370,"x":[6838]},{"a":6846,"l":"b_1ABE","t":"code","b":[189,179,3],"m":"lda","o":"fig_depth,x","oa":947,"x":[6783]},{"a":6849,"t":"code","b":[56],"m":"sec"},{"a":6850,"t":"code","b":[233,5],"m":"sbc","o":"#$05"},{"a":6852,"t":"code","b":[240,223],"m":"beq","o":"b_1AA5","oa":6821},{"a":6854,"t":"code","b":[141,232,2],"m":"sta","o":"walk_ddepth_sign","oa":744},{"a":6857,"t":"code","b":[176,4],"m":"bcs","o":"b_1ACF","oa":6863},{"a":6859,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":6861,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":6863,"l":"b_1ACF","t":"code","b":[141,230,2],"m":"sta","o":"walk_ddepth","oa":742,"x":[6857]},{"a":6866,"t":"code","b":[173,220,2],"m":"lda","o":"walk_alternate","oa":732},{"a":6869,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":6871,"t":"code","b":[141,220,2],"m":"sta","o":"walk_alternate","oa":732},{"a":6874,"t":"code","b":[240,201],"m":"beq","o":"b_1AA5","oa":6821},{"a":6876,"t":"code","b":[76,135,26],"m":"jmp","o":"j_1A87","oa":6791},{"a":6879,"l":"figure_set_pose","c":"Sets figure X's pose $038B,x to A; if it changed, sets bit 1 of $03C4,x so the sprite frame routine rebuilds the image. For the person (X = 0) it also takes a direction 0-7 for the pose from the table at $AE8D (as (8 - d) AND 7 when he faces right, unless d is 0 or 4) into $0390, and when that differs from the low bits of $03F4 (the pose $ACF3 turns figure 4, the upper body, towards) puts it there and sets $037C = 1.","t":"code","b":[221,139,3],"m":"cmp","o":"fig_frame,x","oa":907,"x":[5967,6021,6358,6750,7308,7671,7906,8039,8219,8240,8342,8349,8370,8531,8726,11858,12574,21302,22562,37733,57479]},{"a":6882,"t":"code","b":[208,1],"m":"bne","o":"b_1AE5","oa":6885},{"a":6884,"t":"code","b":[96],"m":"rts"},{"a":6885,"l":"b_1AE5","t":"code","b":[157,139,3],"m":"sta","o":"fig_frame,x","oa":907,"x":[6882]},{"a":6888,"t":"code","b":[224,0],"m":"cpx","o":"#$00"},{"a":6890,"t":"code","b":[208,61],"m":"bne","o":"b_1B29","oa":6953},{"a":6892,"t":"code","b":[168],"m":"tay"},{"a":6893,"t":"code","b":[185,141,174],"m":"lda","o":"pose_view_class,y","oa":44685},{"a":6896,"t":"code","b":[174,154,3],"m":"ldx","o":"fig_mirror","oa":922},{"a":6899,"t":"code","b":[208,16],"m":"bne","o":"b_1B05","oa":6917},{"a":6901,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":6903,"t":"code","b":[240,12],"m":"beq","o":"b_1B05","oa":6917},{"a":6905,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":6907,"t":"code","b":[240,8],"m":"beq","o":"b_1B05","oa":6917},{"a":6909,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":6911,"t":"code","b":[56],"m":"sec"},{"a":6912,"t":"code","b":[249,141,174],"m":"sbc","o":"pose_view_class,y","oa":44685},{"a":6915,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":6917,"l":"b_1B05","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[6899,6903,6907]},{"a":6919,"t":"code","b":[205,144,3],"m":"cmp","o":"body_direction","oa":912},{"a":6922,"t":"code","b":[240,29],"m":"beq","o":"b_1B29","oa":6953},{"a":6924,"t":"code","b":[141,144,3],"m":"sta","o":"body_direction","oa":912},{"a":6927,"t":"code","b":[173,244,3],"m":"lda","o":"head_target","oa":1012},{"a":6930,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":6932,"t":"code","b":[205,144,3],"m":"cmp","o":"body_direction","oa":912},{"a":6935,"t":"code","b":[240,16],"m":"beq","o":"b_1B29","oa":6953},{"a":6937,"t":"code","b":[173,244,3],"m":"lda","o":"head_target","oa":1012},{"a":6940,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":6942,"t":"code","b":[13,144,3],"m":"ora","o":"body_direction","oa":912},{"a":6945,"t":"code","b":[141,244,3],"m":"sta","o":"head_target","oa":1012},{"a":6948,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":6950,"t":"code","b":[141,124,3],"m":"sta","o":"head_turn_timer","oa":892},{"a":6953,"l":"b_1B29","t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964,"x":[6890,6922,6935]},{"a":6956,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":6958,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":6961,"t":"code","b":[96],"m":"rts"},{"a":6962,"l":"stair_step","c":"One step on the stairs for figure X: $02DF,x counts the steps of the current part of the flight (every fourth step the low bits of $02E1,x count too, which nothing reads). Part = bits 7-6 of $02E1,x: 0 up first, 1 up second, 2 down first, 3 down second, with 28, 27, 26, 25 steps (stair_part_steps). After a first part it keeps the screen Y but takes the depth of the stair end on the arrival floor, sets the facing for the second part, nudges X and Y (stair_land_dx/dy) and sets bit 6. After a second part it puts the figure exactly on the arrival stair end (49 + 2 x floor going up, 48 + 2 x floor going down; the middle floor when the target is two floors away), passes the new floor to $E3C2 (the person only; an RTS in this build) and moves to state 5. Otherwise it animates the step (stair_anim).","t":"code","b":[254,223,2],"m":"inc","o":"stair_steps,x","oa":735,"x":[6344]},{"a":6965,"t":"code","b":[189,223,2],"m":"lda","o":"stair_steps,x","oa":735},{"a":6968,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":6970,"t":"code","b":[208,3],"m":"bne","o":"b_1B3F","oa":6975},{"a":6972,"t":"code","b":[254,225,2],"m":"inc","o":"stair_state,x","oa":737},{"a":6975,"l":"b_1B3F","t":"code","b":[189,225,2],"m":"lda","o":"stair_state,x","oa":737,"x":[6970]},{"a":6978,"t":"code","b":[42],"m":"rol","o":"a"},{"a":6979,"t":"code","b":[42],"m":"rol","o":"a"},{"a":6980,"t":"code","b":[42],"m":"rol","o":"a"},{"a":6981,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":6983,"t":"code","b":[168],"m":"tay"},{"a":6984,"t":"code","b":[189,223,2],"m":"lda","o":"stair_steps,x","oa":735},{"a":6987,"t":"code","b":[217,27,29],"m":"cmp","o":"stair_part_steps,y","oa":7451},{"a":6990,"t":"code","b":[176,3],"m":"bcs","o":"b_1B53","oa":6995},{"a":6992,"t":"code","b":[76,48,28],"m":"jmp","o":"stair_anim","oa":7216},{"a":6995,"l":"b_1B53","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[6990]},{"a":6997,"t":"code","b":[157,223,2],"m":"sta","o":"stair_steps,x","oa":735},{"a":7000,"t":"code","b":[189,225,2],"m":"lda","o":"stair_state,x","oa":737},{"a":7003,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":7005,"t":"code","b":[157,225,2],"m":"sta","o":"stair_state,x","oa":737},{"a":7008,"t":"code","b":[41,64],"m":"and","o":"#$40"},{"a":7010,"t":"code","b":[240,82],"m":"beq","o":"b_1BB6","oa":7094},{"a":7012,"t":"code","b":[188,192,3],"m":"ldy","o":"move_target,x","oa":960},{"a":7015,"t":"code","b":[185,54,29],"m":"lda","o":"location_y,y","oa":7478},{"a":7018,"t":"code","b":[56],"m":"sec"},{"a":7019,"t":"code","b":[253,175,3],"m":"sbc","o":"fig_floor_y,x","oa":943},{"a":7022,"t":"code","b":[176,4],"m":"bcs","o":"b_1B74","oa":7028},{"a":7024,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":7026,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":7028,"l":"b_1B74","t":"code","b":[201,64],"m":"cmp","o":"#$40","x":[7022]},{"a":7030,"t":"code","b":[144,4],"m":"bcc","o":"b_1B7C","oa":7036},{"a":7032,"t":"code","b":[169,165],"m":"lda","o":"#$A5"},{"a":7034,"t":"code","b":[208,6],"m":"bne","o":"b_1B82","oa":7042},{"a":7036,"l":"b_1B7C","t":"code","b":[188,192,3],"m":"ldy","o":"move_target,x","oa":960,"x":[7030]},{"a":7039,"t":"code","b":[185,54,29],"m":"lda","o":"location_y,y","oa":7478},{"a":7042,"l":"b_1B82","t":"code","b":[32,35,29],"m":"jsr","o":"floor_of_y","oa":7459,"x":[7034]},{"a":7045,"t":"code","b":[152],"m":"tya"},{"a":7046,"t":"code","b":[10],"m":"asl","o":"a"},{"a":7047,"t":"code","b":[188,225,2],"m":"ldy","o":"stair_state,x","oa":737},{"a":7050,"t":"code","b":[48,3],"m":"bmi","o":"b_1B8F","oa":7055},{"a":7052,"t":"code","b":[24],"m":"clc"},{"a":7053,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":7055,"l":"b_1B8F","t":"code","b":[24],"m":"clc","x":[7050]},{"a":7056,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":7058,"t":"code","b":[168],"m":"tay"},{"a":7059,"t":"code","b":[185,54,29],"m":"lda","o":"location_y,y","oa":7478},{"a":7062,"t":"code","b":[157,175,3],"m":"sta","o":"fig_floor_y,x","oa":943},{"a":7065,"t":"code","b":[185,164,29],"m":"lda","o":"location_depth,y","oa":7588},{"a":7068,"t":"code","b":[157,179,3],"m":"sta","o":"fig_depth,x","oa":947},{"a":7071,"t":"code","b":[185,109,29],"m":"lda","o":"location_x,y","oa":7533},{"a":7074,"t":"code","b":[10],"m":"asl","o":"a"},{"a":7075,"t":"code","b":[157,167,3],"m":"sta","o":"fig_x,x","oa":935},{"a":7078,"t":"code","b":[138],"m":"txa"},{"a":7079,"t":"code","b":[208,10],"m":"bne","o":"b_1BB3","oa":7091},{"a":7081,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":7084,"t":"code","b":[32,35,29],"m":"jsr","o":"floor_of_y","oa":7459},{"a":7087,"t":"code","b":[152],"m":"tya"},{"a":7088,"t":"code","b":[32,194,227],"m":"jsr","o":"empty_hook_1bb0","oa":58306},{"a":7091,"l":"b_1BB3","t":"code","b":[76,36,23],"m":"jmp","o":"mstate_next","oa":5924,"x":[7079]},{"a":7094,"l":"b_1BB6","t":"code","b":[189,175,3],"m":"lda","o":"fig_floor_y,x","oa":943,"x":[7010]},{"a":7097,"t":"code","b":[56],"m":"sec"},{"a":7098,"t":"code","b":[253,179,3],"m":"sbc","o":"fig_depth,x","oa":947},{"a":7101,"t":"code","b":[157,175,3],"m":"sta","o":"fig_floor_y,x","oa":943},{"a":7104,"t":"code","b":[160,50],"m":"ldy","o":"#$32"},{"a":7106,"t":"code","b":[189,225,2],"m":"lda","o":"stair_state,x","oa":737},{"a":7109,"t":"code","b":[48,2],"m":"bmi","o":"b_1BC9","oa":7113},{"a":7111,"t":"code","b":[160,47],"m":"ldy","o":"#$2F"},{"a":7113,"l":"b_1BC9","t":"code","b":[152],"m":"tya","x":[7109]},{"a":7114,"t":"code","b":[24],"m":"clc"},{"a":7115,"t":"code","b":[125,213,2],"m":"adc","o":"climb_floor_x2,x","oa":725},{"a":7118,"t":"code","b":[168],"m":"tay"},{"a":7119,"t":"code","b":[185,164,29],"m":"lda","o":"location_depth,y","oa":7588},{"a":7122,"t":"code","b":[157,179,3],"m":"sta","o":"fig_depth,x","oa":947},{"a":7125,"t":"code","b":[24],"m":"clc"},{"a":7126,"t":"code","b":[125,175,3],"m":"adc","o":"fig_floor_y,x","oa":943},{"a":7129,"t":"code","b":[157,175,3],"m":"sta","o":"fig_floor_y,x","oa":943},{"a":7132,"t":"code","b":[189,193,22],"m":"lda","o":"figure_face_left,x","oa":5825},{"a":7135,"t":"code","b":[188,225,2],"m":"ldy","o":"stair_state,x","oa":737},{"a":7138,"t":"code","b":[16,2],"m":"bpl","o":"b_1BE6","oa":7142},{"a":7140,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7142,"l":"b_1BE6","t":"code","b":[188,175,3],"m":"ldy","o":"fig_floor_y,x","oa":943,"x":[7138]},{"a":7145,"t":"code","b":[192,165],"m":"cpy","o":"#$A5"},{"a":7147,"t":"code","b":[176,3],"m":"bcs","o":"b_1BF0","oa":7152},{"a":7149,"t":"code","b":[93,193,22],"m":"eor","o":"figure_face_left,x","oa":5825},{"a":7152,"l":"b_1BF0","t":"code","b":[157,154,3],"m":"sta","o":"fig_mirror,x","oa":922,"x":[7147]},{"a":7155,"t":"code","b":[189,225,2],"m":"lda","o":"stair_state,x","oa":737},{"a":7158,"t":"code","b":[24],"m":"clc"},{"a":7159,"t":"code","b":[41,128],"m":"and","o":"#$80"},{"a":7161,"t":"code","b":[42],"m":"rol","o":"a"},{"a":7162,"t":"code","b":[42],"m":"rol","o":"a"},{"a":7163,"t":"code","b":[42],"m":"rol","o":"a"},{"a":7164,"t":"code","b":[168],"m":"tay"},{"a":7165,"t":"code","b":[185,31,29],"m":"lda","o":"stair_land_dx,y","oa":7455},{"a":7168,"t":"code","b":[141,216,2],"m":"sta","o":"move_temp","oa":728},{"a":7171,"t":"code","b":[189,175,3],"m":"lda","o":"fig_floor_y,x","oa":943},{"a":7174,"t":"code","b":[201,165],"m":"cmp","o":"#$A5"},{"a":7176,"t":"code","b":[176,10],"m":"bcs","o":"b_1C14","oa":7188},{"a":7178,"t":"code","b":[173,216,2],"m":"lda","o":"move_temp","oa":728},{"a":7181,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":7183,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":7185,"t":"code","b":[141,216,2],"m":"sta","o":"move_temp","oa":728},{"a":7188,"l":"b_1C14","t":"code","b":[189,167,3],"m":"lda","o":"fig_x,x","oa":935,"x":[7176]},{"a":7191,"t":"code","b":[24],"m":"clc"},{"a":7192,"t":"code","b":[109,216,2],"m":"adc","o":"move_temp","oa":728},{"a":7195,"t":"code","b":[157,167,3],"m":"sta","o":"fig_x,x","oa":935},{"a":7198,"t":"code","b":[189,175,3],"m":"lda","o":"fig_floor_y,x","oa":943},{"a":7201,"t":"code","b":[24],"m":"clc"},{"a":7202,"t":"code","b":[121,32,29],"m":"adc","o":"stair_land_dy,y","oa":7456},{"a":7205,"t":"code","b":[157,175,3],"m":"sta","o":"fig_floor_y,x","oa":943},{"a":7208,"t":"code","b":[189,225,2],"m":"lda","o":"stair_state,x","oa":737},{"a":7211,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":7213,"t":"code","b":[32,143,28],"m":"jsr","o":"set_stair_state","oa":7311},{"a":7216,"l":"stair_anim","c":"Animates one stair step: index = part x 8 + (step AND 7) into four 32-entry tables: stair_poses (the pose, via figure_set_pose), stair_face (only in parts 0 and 3, the parts with no sideways movement: 1 = mirrored), stair_dx (X change, negated when facing left) and stair_dy (Y change).","t":"code","b":[189,225,2],"m":"lda","o":"stair_state,x","oa":737,"x":[6992]},{"a":7219,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":7220,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":7221,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":7222,"t":"code","b":[41,24],"m":"and","o":"#$18"},{"a":7224,"t":"code","b":[141,216,2],"m":"sta","o":"move_temp","oa":728},{"a":7227,"t":"code","b":[189,223,2],"m":"lda","o":"stair_steps,x","oa":735},{"a":7230,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":7232,"t":"code","b":[13,216,2],"m":"ora","o":"move_temp","oa":728},{"a":7235,"t":"code","b":[168],"m":"tay"},{"a":7236,"t":"code","b":[189,225,2],"m":"lda","o":"stair_state,x","oa":737},{"a":7239,"t":"code","b":[41,192],"m":"and","o":"#$C0"},{"a":7241,"t":"code","b":[240,4],"m":"beq","o":"b_1C4F","oa":7247},{"a":7243,"t":"code","b":[201,192],"m":"cmp","o":"#$C0"},{"a":7245,"t":"code","b":[208,16],"m":"bne","o":"b_1C5F","oa":7263},{"a":7247,"l":"b_1C4F","t":"code","b":[189,193,22],"m":"lda","o":"figure_face_left,x","oa":5825,"x":[7241]},{"a":7250,"t":"code","b":[190,187,28],"m":"ldx","o":"stair_face,y","oa":7355},{"a":7253,"t":"code","b":[208,2],"m":"bne","o":"b_1C59","oa":7257},{"a":7255,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7257,"l":"b_1C59","t":"code","b":[174,215,2],"m":"ldx","o":"move_figure_no","oa":727,"x":[7253]},{"a":7260,"t":"code","b":[157,154,3],"m":"sta","o":"fig_mirror,x","oa":922},{"a":7263,"l":"b_1C5F","t":"code","b":[185,219,28],"m":"lda","o":"stair_dx,y","oa":7387,"x":[7245]},{"a":7266,"t":"code","b":[140,216,2],"m":"sty","o":"move_temp","oa":728},{"a":7269,"t":"code","b":[188,154,3],"m":"ldy","o":"fig_mirror,x","oa":922},{"a":7272,"t":"code","b":[240,5],"m":"beq","o":"b_1C6F","oa":7279},{"a":7274,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":7276,"t":"code","b":[24],"m":"clc"},{"a":7277,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":7279,"l":"b_1C6F","t":"code","b":[172,216,2],"m":"ldy","o":"move_temp","oa":728,"x":[7272]},{"a":7282,"t":"code","b":[141,216,2],"m":"sta","o":"move_temp","oa":728},{"a":7285,"t":"code","b":[189,167,3],"m":"lda","o":"fig_x,x","oa":935},{"a":7288,"t":"code","b":[24],"m":"clc"},{"a":7289,"t":"code","b":[109,216,2],"m":"adc","o":"move_temp","oa":728},{"a":7292,"t":"code","b":[157,167,3],"m":"sta","o":"fig_x,x","oa":935},{"a":7295,"t":"code","b":[189,175,3],"m":"lda","o":"fig_floor_y,x","oa":943},{"a":7298,"t":"code","b":[24],"m":"clc"},{"a":7299,"t":"code","b":[121,251,28],"m":"adc","o":"stair_dy,y","oa":7419},{"a":7302,"t":"code","b":[157,175,3],"m":"sta","o":"fig_floor_y,x","oa":943},{"a":7305,"t":"code","b":[185,155,28],"m":"lda","o":"stair_poses,y","oa":7323},{"a":7308,"t":"code","b":[76,223,26],"m":"jmp","o":"figure_set_pose","oa":6879},{"a":7311,"l":"set_stair_state","c":"Stores A in $02E1,x (the stair direction and part) and sets bit 0 of $03C4,x (reposition).","t":"code","b":[157,225,2],"m":"sta","o":"stair_state,x","oa":737,"x":[6270,7213]},{"a":7314,"t":"code","b":[189,196,3],"m":"lda","o":"fig_flags,x","oa":964},{"a":7317,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":7319,"t":"code","b":[157,196,3],"m":"sta","o":"fig_flags,x","oa":964},{"a":7322,"t":"code","b":[96],"m":"rts"},{"a":7323,"l":"stair_poses","c":"Pose for each stair step, 8 per part: up first $0D $0E $0F $0E, up second $09-$0C, down first $11-$14, down second $15 $16 $17 $16 (each pattern twice).","t":"byte","b":[13,14,15,14,13,14,15,14],"x":[7305]},{"a":7331,"t":"byte","b":[9,10,11,12,9,10,11,12]},{"a":7339,"t":"byte","b":[17,18,19,20,17,18,19,20]},{"a":7347,"t":"byte","b":[21,22,23,22,21,22,23,22]},{"a":7355,"l":"stair_face","c":"Facing per stair step, used in parts 0 and 3 only: 1 (face left, mirrored) on steps 5-7 of each 8, else 0; the part 1 and part 2 entries are 0 and unused.","t":"byte","b":[0,0,0,0,0,1,1,1],"x":[7250]},{"a":7363,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7371,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7379,"t":"byte","b":[0,0,0,0,0,1,1,1]},{"a":7387,"l":"stair_dx","c":"X change per stair step, before negation for a left-facing figure: 0 in parts 0 and 3, 2 on three steps in four in parts 1 and 2 (the sideways run of the flight).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[7263]},{"a":7395,"t":"byte","b":[2,2,2,0,2,2,2,0]},{"a":7403,"t":"byte","b":[0,2,2,2,0,2,2,2]},{"a":7411,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7419,"l":"stair_dy","c":"Y change per stair step, signed: part 0 -2 on half the steps, part 1 -1 or -2, part 2 +1 or +2, part 3 +2 on half the steps (8 lines per 8 steps in each part).","t":"byte","b":[254,0,0,254,254,0,0,254],"x":[7299]},{"a":7427,"t":"byte","b":[254,0,255,255,254,0,255,255]},{"a":7435,"t":"byte","b":[1,1,0,2,1,1,0,2]},{"a":7443,"t":"byte","b":[0,2,2,0,0,2,2,0]},{"a":7451,"l":"stair_part_steps","c":"Steps in each part of a flight: 28, 27 (up), 26, 25 (down).","t":"byte","b":[28,27,26,25],"x":[6987]},{"a":7455,"l":"stair_land_dx","c":"X nudge between the two parts of a flight, read at index 0 going up (0) or 2 going down (8, negated on the upper staircase); index 1 and 3 belong to stair_land_dy.","t":"byte","b":[0],"x":[7165]},{"a":7456,"l":"stair_land_dy","c":"Y nudge between the two parts of a flight: +1 going up (index 0), -1 going down (index 2).","t":"byte","b":[1,8,255],"x":[7202]},{"a":7459,"l":"floor_of_y","c":"Floor number for floor line A, in Y: 0 for $65 (top floor), 1 for $A5 (middle floor), 2 for $E5 (ground floor), $80 for anything else (on the stairs).","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[5848,6281,7042,7084]},{"a":7461,"t":"code","b":[201,101],"m":"cmp","o":"#$65"},{"a":7463,"t":"code","b":[240,12],"m":"beq","o":"r_1D35","oa":7477},{"a":7465,"t":"code","b":[200],"m":"iny"},{"a":7466,"t":"code","b":[201,165],"m":"cmp","o":"#$A5"},{"a":7468,"t":"code","b":[240,7],"m":"beq","o":"r_1D35","oa":7477},{"a":7470,"t":"code","b":[200],"m":"iny"},{"a":7471,"t":"code","b":[201,229],"m":"cmp","o":"#$E5"},{"a":7473,"t":"code","b":[240,2],"m":"beq","o":"r_1D35","oa":7477},{"a":7475,"t":"code","b":[160,128],"m":"ldy","o":"#$80"},{"a":7477,"l":"r_1D35","t":"code","b":[96],"m":"rts","x":[7463,7468,7473]},{"a":7478,"l":"location_y","c":"The 55 locations figures walk to, table 1 of 3 (location_x and location_depth have the same index): the floor line, a sprite Y. $65 top floor (0-15), $A5 middle floor (16-31), $E5 ground floor (32-47). 48-53 are stair ends: 48 + 2 x floor where the stairs up start, 49 + 2 x floor where the stairs down start (48 and 53 are dummies). 54 is a scratch entry that set_custom_location and the activities fill. 32 is the dog's bowl, 46 inside the front door, 6 at the piano. Also read by index at $2DE4-$2DF4.","t":"byte","b":[101,101,101,101,101,101,101,101],"x":[5818,6218,6251,6586,7015,7039,7059,7714,11748]},{"a":7486,"t":"byte","b":[101,101,101,101,101,101,101,101]},{"a":7494,"t":"byte","b":[165,165,165,165,165,165,165,165]},{"a":7502,"t":"byte","b":[165,165,165,165,165,165,165,165]},{"a":7510,"t":"byte","b":[229,229,229,229,229,229,229,229]},{"a":7518,"t":"byte","b":[229,229,229,229,229,229]},{"a":7524,"l":"location_y_door","c":"location_y entry 46, the spot inside the front door; $AFBE reads it directly to put figure 2 (pose 9, colour 9) there. Entries 47-53 follow.","t":"byte","b":[229,229,101,101,165,165,229,229],"x":[44990]},{"a":7532,"l":"location_y_custom","c":"location_y entry 54, the scratch location: written by set_custom_location, $3239, $3261, $328C and $8F77, read at $9004.","t":"byte","b":[101],"x":[5821,12857,12897,12940,36727,36868]},{"a":7533,"l":"location_x","c":"Table 2 of 3: each location's X in half pixels (sprite X / 2). walk_step and at_target compare it with the figure's $03A3,x as location_x_of adjusts it.","t":"byte","b":[22,36,49,55,60,56,83,96],"x":[5812,6615,6646,6704,7071,7706,11756]},{"a":7541,"t":"byte","b":[106,118,113,110,139,47,133,146]},{"a":7549,"t":"byte","b":[16,40,34,36,45,61,90,100]},{"a":7557,"t":"byte","b":[111,100,111,124,134,138,144,61]},{"a":7565,"t":"byte","b":[17,12,16,22,48,32,54,60]},{"a":7573,"t":"byte","b":[67,78,106,119,123,144]},{"a":7579,"l":"location_x_door","c":"location_x entry 46 (inside the front door); $AFC9 reads it directly and places figure 2 13 half-pixels to its right.","t":"byte","b":[148,107,101,101,78,71,95,95],"x":[45001]},{"a":7587,"l":"location_x_custom","c":"location_x entry 54, the scratch location: activities copy a location in and shift it, e.g. +$14 at $E02F, +4 at $30DF, +9 at $AFA9.","t":"byte","b":[57],"x":[5815,8746,10547,10553,12508,12511,12918,12963,13143,13149,36715,36856,44963,44969,57385,57391]},{"a":7588,"l":"location_depth","c":"Table 3 of 3: each location's depth into the room, 2-15. A figure's sprite is drawn that many lines higher, and nearer figures (lower depth) get the front sprites.","t":"byte","b":[9,14,11,10,11,14,12,13],"x":[5806,6607,6627,7065,7119,7722,11764]},{"a":7596,"t":"byte","b":[12,12,12,6,15,10,14,3]},{"a":7604,"t":"byte","b":[3,3,8,15,13,15,12,13]},{"a":7612,"t":"byte","b":[14,12,10,11,13,10,13,5]},{"a":7620,"t":"byte","b":[8,7,14,13,15,14,14,14]},{"a":7628,"t":"byte","b":[14,14,13,12,14,12,13,2]},{"a":7636,"t":"byte","b":[2,2,14,2,14,14]},{"a":7642,"l":"location_depth_custom","c":"location_depth entry 54, the scratch location: written by set_custom_location, $327E, $3292, $3362 and $8F71, read at $8FFE.","t":"byte","b":[10],"x":[5809,12926,12946,13154,36721,36862]},{"a":7643,"l":"walk_frame_mask","c":"Walking animation mask per figure: 7 for the person (poses 0-7), 3 for the dog (poses 0-3).","t":"byte","b":[7,3],"x":[7648,7668]},{"a":7645,"l":"walk_anim","c":"Sets figure X's walking pose from its pass counter: ($02DD,x shifted right speed + 1 times) AND walk_frame_mask,x, so the frame advances once per step. For the person the code after figure_set_pose tests $02E3/$02E4, but both of its exits return with X = 0: it has no effect.","t":"code","b":[188,159,3],"m":"ldy","o":"move_speed,x","oa":927,"x":[6806,6821]},{"a":7648,"t":"code","b":[189,219,29],"m":"lda","o":"walk_frame_mask,x","oa":7643},{"a":7651,"t":"code","b":[141,227,2],"m":"sta","o":"walk_frame_mask_tmp","oa":739},{"a":7654,"t":"code","b":[189,221,2],"m":"lda","o":"move_tick,x","oa":733},{"a":7657,"l":"b_1DE9","t":"code","b":[74],"m":"lsr","o":"a","x":[7663]},{"a":7658,"t":"code","b":[56],"m":"sec"},{"a":7659,"t":"code","b":[46,227,2],"m":"rol","o":"walk_frame_mask_tmp","oa":739},{"a":7662,"t":"code","b":[136],"m":"dey"},{"a":7663,"t":"code","b":[16,248],"m":"bpl","o":"b_1DE9","oa":7657},{"a":7665,"t":"code","b":[141,228,2],"m":"sta","o":"walk_frame_tmp","oa":740},{"a":7668,"t":"code","b":[61,219,29],"m":"and","o":"walk_frame_mask,x","oa":7643},{"a":7671,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":7674,"t":"code","b":[138],"m":"txa"},{"a":7675,"t":"code","b":[208,19],"m":"bne","o":"r_1E10","oa":7696},{"a":7677,"t":"code","b":[173,227,2],"m":"lda","o":"walk_frame_mask_tmp","oa":739},{"a":7680,"t":"code","b":[61,221,2],"m":"and","o":"move_tick,x","oa":733},{"a":7683,"t":"code","b":[208,11],"m":"bne","o":"r_1E10","oa":7696},{"a":7685,"t":"code","b":[173,228,2],"m":"lda","o":"walk_frame_tmp","oa":740},{"a":7688,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":7690,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":7692,"t":"code","b":[240,2],"m":"beq","o":"r_1E10","oa":7696},{"a":7694,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":7696,"l":"r_1E10","t":"code","b":[96],"m":"rts","x":[7675,7683,7692]},{"a":7697,"l":"at_target","c":"Is figure X at its target location $03C0,x? Refreshes X/2 (calc_half_x) and returns Z set when X/2 (as location_x_of adjusts it), floor line and depth all match. The activities call it before starting a walk ($AB68, $2FF2, $391C, $E039).","t":"code","b":[32,77,30],"m":"jsr","o":"calc_half_x","oa":7757,"x":[12274,14620,43880,57401]},{"a":7700,"t":"code","b":[188,192,3],"m":"ldy","o":"move_target,x","oa":960},{"a":7703,"t":"code","b":[32,46,30],"m":"jsr","o":"location_x_of","oa":7726},{"a":7706,"t":"code","b":[217,109,29],"m":"cmp","o":"location_x,y","oa":7533},{"a":7709,"t":"code","b":[208,14],"m":"bne","o":"r_1E2D","oa":7725},{"a":7711,"t":"code","b":[189,175,3],"m":"lda","o":"fig_floor_y,x","oa":943},{"a":7714,"t":"code","b":[217,54,29],"m":"cmp","o":"location_y,y","oa":7478},{"a":7717,"t":"code","b":[208,6],"m":"bne","o":"r_1E2D","oa":7725},{"a":7719,"t":"code","b":[189,179,3],"m":"lda","o":"fig_depth,x","oa":947},{"a":7722,"t":"code","b":[217,164,29],"m":"cmp","o":"location_depth,y","oa":7588},{"a":7725,"l":"r_1E2D","t":"code","b":[96],"m":"rts","x":[7709,7717]},{"a":7726,"l":"location_x_of","c":"Returns figure X's X/2 ($03A3,x) as compared with the X of location Y: for the person going to an ordinary location (Y below 48) minus 1 when he faces right or minus 11 when he faces left, as his reference point depends on his facing; unchanged for the dog and the stair ends. Y is kept (via $02E9).","t":"code","b":[140,233,2],"m":"sty","o":"saved_y_1e2e","oa":745,"x":[6612,6642,6700,7703]},{"a":7729,"t":"code","b":[189,163,3],"m":"lda","o":"fig_x_half,x","oa":931},{"a":7732,"t":"code","b":[192,48],"m":"cpy","o":"#$30"},{"a":7734,"t":"code","b":[176,17],"m":"bcs","o":"b_1E49","oa":7753},{"a":7736,"t":"code","b":[224,1],"m":"cpx","o":"#$01"},{"a":7738,"t":"code","b":[240,13],"m":"beq","o":"b_1E49","oa":7753},{"a":7740,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":7742,"t":"code","b":[188,154,3],"m":"ldy","o":"fig_mirror,x","oa":922},{"a":7745,"t":"code","b":[240,2],"m":"beq","o":"b_1E45","oa":7749},{"a":7747,"t":"code","b":[169,245],"m":"lda","o":"#$F5"},{"a":7749,"l":"b_1E45","t":"code","b":[24],"m":"clc","x":[7745]},{"a":7750,"t":"code","b":[125,163,3],"m":"adc","o":"fig_x_half,x","oa":931},{"a":7753,"l":"b_1E49","t":"code","b":[172,233,2],"m":"ldy","o":"saved_y_1e2e","oa":745,"x":[7734,7738]},{"a":7756,"t":"code","b":[96],"m":"rts"},{"a":7757,"l":"calc_half_x","c":"Sets $03A3,x to figure X's X position halved: the 9-bit X ($03A7,x, with the high bit when $03AB,x is non-zero) shifted right once.","t":"code","b":[189,171,3],"m":"lda","o":"fig_x_hi,x","oa":939,"x":[5866,6432,7697]},{"a":7760,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":7762,"t":"code","b":[189,167,3],"m":"lda","o":"fig_x,x","oa":935},{"a":7765,"t":"code","b":[106],"m":"ror","o":"a"},{"a":7766,"t":"code","b":[157,163,3],"m":"sta","o":"fig_x_half,x","oa":931},{"a":7769,"t":"code","b":[96],"m":"rts"},{"a":7770,"l":"wait8_count","c":"Pass counter for the phase handler wait_8_passes: counted up there, the phase ends when its low three bits come round to 0.","t":"byte","b":[0],"x":[7912,7915]},{"a":7771,"l":"activity_47","c":"Activity 47 ($2F; entry 47 of the activity table at $8DC9): switches on the phase $4C through activity_47_phases. All its handlers are outside this range: $30CD (walk to location 37, just right of the refrigerator in the picture), $8FA7 (wait to arrive), $9469, $94CC, $AF58, $2136 (pose $21), $2156, then the common end $8F0E. What the player sees is not established here.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":7774,"l":"activity_47_phases","c":"activity_47's phase table (handler address minus one): $30CD, $8FA7, $9469, $94CC, $AF58, $2136, $2156, $8F0E.","t":"word","b":[204,48,166,143,104,148,203,148],"d":[12492,36774,37992,38091]},{"a":7782,"t":"word","b":[87,175,53,33,85,33,13,143],"d":[44887,8501,8533,36621]},{"a":7790,"l":"activity_48","c":"Activity 48 ($30): switches on the phase $4C through activity_48_phases. As the code reads, the person cooks: walks to location 37, just right of the refrigerator ($30CD), waits to arrive ($8FA7), picks up object 3, a small yellow pot (take_object), walks to location 34 at the stove ($A833), carries it ($293D), sets it on the stove (put_on_stove, drawn into the picture), faces the room in pose $19, waits eight passes and lights the burner (stove_on), then the common end $8F0E.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":7793,"l":"activity_48_phases","c":"activity_48's phase table (handler address minus one): $30CD, $8FA7, take_object, $A833, $293D, put_on_stove, pose_19, wait_8_passes, stove_on, $8F0E.","t":"word","b":[204,48,166,143,166,30,50,168],"d":[12492,36774,7846,43058]},{"a":7801,"t":"word","b":[60,41,205,30,221,30,231,30],"d":[10556,7885,7901,7911]},{"a":7809,"t":"word","b":[245,30,13,143],"d":[7925,36621]},{"a":7813,"l":"activity_49","c":"Activity 49 ($31): switches on the phase $4C through activity_49_phases. The other half of cooking: walks to location 34 at the stove ($A833), waits ($8FA7), pose $19, waits eight passes, turns the burner off (stove_off), takes the pot off the stove (take_object, which also clears it from the picture), walks to location 36 at the sink ($A83D), carries it ($293D), puts it away (drop_object), then the common end $8F0E.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":7816,"l":"activity_49_phases","c":"activity_49's phase table (handler address minus one): $A833, $8FA7, pose_19, wait_8_passes, stove_off, take_object, $A83D, $293D, drop_object, $8F0E.","t":"word","b":[50,168,166,143,221,30,231,30],"d":[43058,36774,7901,7911]},{"a":7824,"t":"word","b":[0,31,166,30,60,168,60,41],"d":[7936,7846,43068,10556]},{"a":7832,"t":"word","b":[155,30,13,143],"d":[7835,36621]},{"a":7836,"l":"drop_object","c":"Phase handler (activity 49): puts the carried object away: $0391 = 0 (the person's lower body goes back to its normal images) and figure 2 hidden ($03C6 = 0); next phase.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7838,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":7841,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":7844,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":7847,"l":"take_object","c":"Phase handler (activities 48 and 49): the person takes object 3: $2783 = 3 and $28F0 give figure 2 that object's pose and colour ($2A4A/$2A5A: pose $12, yellow) and set $0391 (carrying); the DEC $4C undoes the phase step $28F0 makes. Then clears the pot from the stove in the picture (stove_patch with zeros) and moves to the next phase.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":7849,"t":"code","b":[141,131,39],"m":"sta","o":"carried_item","oa":10115},{"a":7852,"t":"code","b":[32,240,40],"m":"jsr","o":"pick_up_item","oa":10480},{"a":7855,"t":"code","b":[198,76],"m":"dec","o":"activity_phase","oa":76},{"a":7857,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7859,"t":"code","b":[168],"m":"tay"},{"a":7860,"t":"code","b":[170],"m":"tax"},{"a":7861,"l":"stove_patch","c":"Draws or clears the pot on the stove in the house bitmap: X to $7A48, A to $7A49-$7A4C, Y to $7A51 (cell row 21, column 1, lines 0-4, and line 1 of column 2: the top of the stove at the left of the kitchen), colour $7F (yellow on light grey) to the colour-matrix cells $5F49/$5F4A; next phase.","t":"code","b":[142,72,122],"m":"stx","o":"stove_top_7a48","oa":31304,"x":[7900]},{"a":7864,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":7866,"l":"b_1EBA","t":"code","b":[157,73,122],"m":"sta","o":"stove_top_7a49,x","oa":31305,"x":[7870]},{"a":7869,"t":"code","b":[202],"m":"dex"},{"a":7870,"t":"code","b":[16,250],"m":"bpl","o":"b_1EBA","oa":7866},{"a":7872,"t":"code","b":[140,81,122],"m":"sty","o":"stove_top_7a51","oa":31313},{"a":7875,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":7877,"t":"code","b":[141,73,95],"m":"sta","o":"a_5F49","oa":24393},{"a":7880,"t":"code","b":[141,74,95],"m":"sta","o":"a_5F4A","oa":24394},{"a":7883,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":7886,"l":"put_on_stove","c":"Phase handler (activity 48): puts the carried pot down: $0391 = 0, figure 2 hidden, and the pot drawn on the stove (stove_patch with $14, $55 and $50).","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7888,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":7891,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":7894,"t":"code","b":[169,85],"m":"lda","o":"#$55"},{"a":7896,"t":"code","b":[160,80],"m":"ldy","o":"#$50"},{"a":7898,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":7900,"t":"code","b":[208,215],"m":"bne","o":"stove_patch","oa":7861},{"a":7902,"l":"pose_19","c":"Phase handler (activities 48 and 49): the person takes pose $19 (facing out of the screen, arms out); next phase.","t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":7904,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":7906,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":7909,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":7912,"l":"wait_8_passes","c":"Phase handler (activities 48 and 49): counts wait8_count and moves to the next phase once every eight passes.","t":"code","b":[238,90,30],"m":"inc","o":"wait8_count","oa":7770},{"a":7915,"t":"code","b":[173,90,30],"m":"lda","o":"wait8_count","oa":7770},{"a":7918,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":7920,"t":"code","b":[208,3],"m":"bne","o":"r_1EF5","oa":7925},{"a":7922,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":7925,"l":"r_1EF5","t":"code","b":[96],"m":"rts","x":[7920]},{"a":7926,"l":"stove_on","c":"Phase handler (activity 48): $357A = 1 (one of the sound flags $355C-$357B that $3713 clears; no reader of this one was found) and $2B52 = 1, the burner lit: $2CD9 then sets line 6 of the stove cell to $EA and flickers its colour RAM ($DB49) through yellow, blue, orange and white; next phase.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":7928,"t":"code","b":[141,122,53],"m":"sta","o":"snd_req_26","oa":13690},{"a":7931,"t":"code","b":[141,82,43],"m":"sta","o":"stove_burning","oa":11090},{"a":7934,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":7937,"l":"stove_off","c":"Phase handler (activity 49): $357B = $FF (another of the sound flags, no reader found) and $2B52 = 0, the burner off (line 6 of the stove cell back to $2A); next phase.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":7939,"t":"code","b":[141,123,53],"m":"sta","o":"snd_req_27","oa":13691},{"a":7942,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7944,"t":"code","b":[141,82,43],"m":"sta","o":"stove_burning","oa":11090},{"a":7947,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":7950,"l":"shower_ticks","c":"Pass counter of the shower (activities 84 and 102), counted every pass by shower_run: every eighth pass counts shower_time down, and its low bits time the water frames ($20ED) and the steps.","t":"byte","b":[0],"x":[8109,8115,8179,8243,8272,8429,8467,8480]},{"a":7951,"l":"shower_time","c":"How long the water runs: at the start (shower_start) the last random byte with bit 6 set ($40-$7F or $C0-$FF), counted down every eighth pass; at 0 the water stops ($20E4) and the steps head for shower_finish ($20A9).","t":"byte","b":[0],"x":[8063,8122,8127,8130,8279,8361,8420]},{"a":7952,"l":"shower_save_depth","c":"The person's depth ($03B3) before the shower, put back at $2008.","t":"byte","b":[0],"x":[7975,8200]},{"a":7953,"l":"shower_save_x","c":"The person's X low byte ($03A7) before the shower, put back at $2002.","t":"byte","b":[0],"x":[7969,8194]},{"a":7954,"l":"shower_save_clip","c":"The person's clip value ($0381) before the shower, put back into $0381 and $0385 at $200E.","t":"byte","b":[0],"x":[7981,8206]},{"a":7955,"l":"shower_water_frame","c":"Frame of the falling water, 0-2; figure 2 shows pose $0B + frame ($20F4-$2108).","t":"byte","b":[0],"x":[8068,8436,8439,8450]},{"a":7956,"l":"shower_start","c":"Activities 84 and 102 (identical phase tables at $ABA4 and $AC54), phase 0: the shower. Saves the person's X, depth and clip, puts him at X $E4 (low byte; the high bit stays), depth 13, clip 0, facing right, pose $40 (in the bathtub), both halves hidden for now ($03C4 = 3, $03C8 = 2), and sets figure 2 as the water: X $EA with his X high bit and his Y, depth 13, multicolour, colour 3 (cyan), pose $0B, shown ($03C6 = $83). shower_time from the random byte, water frame 0, shower_step 0, and $3564 = $FF (one of the flags $3476 scans and $3713 clears along with the SID); next phase.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":7958,"t":"code","b":[141,100,53],"m":"sta","o":"snd_req_4","oa":13668},{"a":7961,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":7963,"t":"code","b":[141,148,31],"m":"sta","o":"shower_step","oa":8084},{"a":7966,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":7969,"t":"code","b":[141,17,31],"m":"sta","o":"shower_save_x","oa":7953},{"a":7972,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":7975,"t":"code","b":[141,16,31],"m":"sta","o":"shower_save_depth","oa":7952},{"a":7978,"t":"code","b":[173,129,3],"m":"lda","o":"fig_clip","oa":897},{"a":7981,"t":"code","b":[141,18,31],"m":"sta","o":"shower_save_clip","oa":7954},{"a":7984,"t":"code","b":[173,171,3],"m":"lda","o":"fig_x_hi","oa":939},{"a":7987,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":7990,"t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":7992,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":7995,"t":"code","b":[169,228],"m":"lda","o":"#$E4"},{"a":7997,"t":"code","b":[141,167,3],"m":"sta","o":"fig_x","oa":935},{"a":8000,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":8002,"t":"code","b":[142,179,3],"m":"stx","o":"fig_depth","oa":947},{"a":8005,"t":"code","b":[142,181,3],"m":"stx","o":"fig_depth_prop_a","oa":949},{"a":8008,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":8010,"t":"code","b":[141,129,3],"m":"sta","o":"fig_clip","oa":897},{"a":8013,"t":"code","b":[141,131,3],"m":"sta","o":"fig_clip_prop_a","oa":899},{"a":8016,"t":"code","b":[141,133,3],"m":"sta","o":"fig_clip_head","oa":901},{"a":8019,"t":"code","b":[141,156,3],"m":"sta","o":"fig_mirror_prop_a","oa":924},{"a":8022,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":8025,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":8027,"t":"code","b":[141,148,3],"m":"sta","o":"prop_multicolour","oa":916},{"a":8030,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":8032,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":8035,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":8037,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":8039,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":8042,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":8044,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":8047,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":8050,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":8053,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":8055,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":8058,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":8061,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":8063,"t":"code","b":[141,15,31],"m":"sta","o":"shower_time","oa":7951},{"a":8066,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":8068,"t":"code","b":[141,19,31],"m":"sta","o":"shower_water_frame","oa":7955},{"a":8071,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":8073,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":8076,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":8078,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":8081,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":8084,"l":"shower_step","c":"Index into shower_steps for shower_run: 0 show the person, 1-5 the bathing poses $40-$44, 6 finish, 7 next phase. Bit 7 (set at $2063) is dropped by the ASL in the dispatch; $203A counts back down while it is set.","t":"byte","b":[0],"x":[7963,8137,8175,8232,8250,8258,8293,8352,8381]},{"a":8085,"l":"shower_end","c":"Phase 2 of activities 84 and 102: shows both halves of the person again ($03C4 = $03C8 = $80); next phase.","t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":8087,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":8090,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":8093,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":8096,"l":"unused_handler_1fa0","c":"Unreferenced code in the shape of a phase handler: stores A in $03C6, $FF in the flag $3568 (one of those $3476 scans), and goes to the next phase. No table, pointer (no $1F9F or $1FA0 word in RAM), jump or branch leads here. Its last byte, the RTS at $1FAC, is used: shower_finish branches to it.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":8098,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":8101,"t":"code","b":[202],"m":"dex"},{"a":8102,"t":"code","b":[142,104,53],"m":"stx","o":"snd_req_stop4","oa":13672},{"a":8105,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":8108,"l":"r_1FAC","t":"code","b":[96],"m":"rts","x":[8184]},{"a":8109,"l":"shower_run","c":"Phase 1 of activities 84 and 102, every pass: counts shower_ticks, animates the water ($20E4), counts shower_time down every eighth pass (the AND #$07 test at $1FC2 changes nothing, both ways go on) and dispatches on shower_step through shower_steps with PHA/PHA/RTS.","t":"code","b":[238,14,31],"m":"inc","o":"shower_ticks","oa":7950},{"a":8112,"t":"code","b":[32,228,32],"m":"jsr","o":"shower_water_tick","oa":8420},{"a":8115,"t":"code","b":[173,14,31],"m":"lda","o":"shower_ticks","oa":7950},{"a":8118,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8120,"t":"code","b":[208,15],"m":"bne","o":"b_1FC9","oa":8137},{"a":8122,"t":"code","b":[173,15,31],"m":"lda","o":"shower_time","oa":7951},{"a":8125,"t":"code","b":[240,10],"m":"beq","o":"b_1FC9","oa":8137},{"a":8127,"t":"code","b":[206,15,31],"m":"dec","o":"shower_time","oa":7951},{"a":8130,"t":"code","b":[173,15,31],"m":"lda","o":"shower_time","oa":7951},{"a":8133,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8135,"t":"code","b":[208,0],"m":"bne","o":"b_1FC9","oa":8137},{"a":8137,"l":"b_1FC9","t":"code","b":[173,148,31],"m":"lda","o":"shower_step","oa":8084,"x":[8120,8125,8135]},{"a":8140,"t":"code","b":[10],"m":"asl","o":"a"},{"a":8141,"t":"code","b":[168],"m":"tay"},{"a":8142,"t":"code","b":[185,216,31],"m":"lda","o":"shower_steps_hi,y","oa":8152},{"a":8145,"t":"code","b":[72],"m":"pha"},{"a":8146,"t":"code","b":[185,215,31],"m":"lda","o":"shower_steps,y","oa":8151},{"a":8149,"t":"code","b":[72],"m":"pha"},{"a":8150,"t":"code","b":[96],"m":"rts"},{"a":8151,"l":"shower_steps","c":"PHA/PHA/RTS table for shower_run, eight words, each a handler address minus one: 0 $1FE7 shower_show, 1 $2099 (pose $40), 2 $20A4, 3 $202C (pose $41), 4 $2046 (pose $42), 5 $204B (poses $43, $44), 6 $1FF3 shower_finish, 7 $8F0B (next phase).","t":"word","b":[230],"d":[],"x":[8146]},{"a":8152,"l":"shower_steps_hi","c":"High bytes of the shower_steps words, read as $1FD8,Y and pushed first.","t":"word","b":[31,152,32,163,32,43,32,69],"d":[38943,41760,11040,17696],"x":[8142]},{"a":8160,"t":"word","b":[32,74,32,242,31,10,143],"d":[18976,61984,2591]},{"a":8167,"l":"shower_show","c":"Shower step 0: makes both halves of the person visible ($03C4 = $03C8 = $80); next step.","t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":8169,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":8172,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":8175,"t":"code","b":[238,148,31],"m":"inc","o":"shower_step","oa":8084},{"a":8178,"t":"code","b":[96],"m":"rts"},{"a":8179,"l":"shower_finish","c":"Shower step 6, on a pass where shower_ticks is a multiple of 8: silences all sound ($3713), hides the water (figure 2), puts back the person's X, depth and clip, pose 8, hides both halves until shower_end ($03C4 = 3, $03C8 = 2) and goes to step 7. The STA $03C6 at $1FFF runs on into $2000: the code from $2002 to $202B belongs to the next range and was not traced from here.","t":"code","b":[173,14,31],"m":"lda","o":"shower_ticks","oa":7950},{"a":8182,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8184,"t":"code","b":[208,178],"m":"bne","o":"r_1FAC","oa":8108},{"a":8186,"t":"code","b":[32,19,55],"m":"jsr","o":"sound_reset","oa":14099},{"a":8189,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":8191,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":8194,"l":"shower_finish_restore","c":"Second half of shower_finish (shower step 6, which starts at $1FF3 in the previous range; its STA $03C6 at $1FFF ends at $2001): puts the person back where he stood before the shower, fig_x $03A7 from shower_save_x $1F11, fig_depth $03B3 from shower_save_depth $1F10, fig_clip $0381 and fig_clip_head $0385 from shower_save_clip $1F12; body pose $08 (standing, side view) through figure_set_pose; fig_flags $03C4 = 3 and fig_flags_head $03C8 = 2 (bit 7 clear, so both halves stay hidden until shower_end $1F95); then shower_step 7, the next phase.","t":"code","b":[173,17,31],"m":"lda","o":"shower_save_x","oa":7953},{"a":8197,"t":"code","b":[141,167,3],"m":"sta","o":"fig_x","oa":935},{"a":8200,"t":"code","b":[173,16,31],"m":"lda","o":"shower_save_depth","oa":7952},{"a":8203,"t":"code","b":[141,179,3],"m":"sta","o":"fig_depth","oa":947},{"a":8206,"t":"code","b":[173,18,31],"m":"lda","o":"shower_save_clip","oa":7954},{"a":8209,"t":"code","b":[141,129,3],"m":"sta","o":"fig_clip","oa":897},{"a":8212,"t":"code","b":[141,133,3],"m":"sta","o":"fig_clip_head","oa":901},{"a":8215,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":8217,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":8219,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":8222,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":8224,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":8227,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":8229,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":8232,"t":"code","b":[238,148,31],"m":"inc","o":"shower_step","oa":8084},{"a":8235,"t":"code","b":[96],"m":"rts"},{"a":8236,"l":"shower_pose_41","c":"Shower step 3 (entry 3 of shower_steps $1FD7, dispatched on shower_step $1F94 by shower_run $1FAD): body pose $41 through $1ADF (in the bathtub, a limb raised at the right). On every 8th tick of shower_ticks $1F0E it moves shower_step up to 4, or, while bit 7 of shower_step is set (on the way back, $83), down to $82. $202E is the shared tail that sets pose A for the person (X = 0) and steps shower_step.","t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":8238,"l":"b_202E","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[8264]},{"a":8240,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":8243,"t":"code","b":[173,14,31],"m":"lda","o":"shower_ticks","oa":7950},{"a":8246,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8248,"t":"code","b":[208,11],"m":"bne","o":"r_2045","oa":8261},{"a":8250,"t":"code","b":[174,148,31],"m":"ldx","o":"shower_step","oa":8084},{"a":8253,"t":"code","b":[232],"m":"inx"},{"a":8254,"t":"code","b":[16,2],"m":"bpl","o":"b_2042","oa":8258},{"a":8256,"t":"code","b":[202],"m":"dex"},{"a":8257,"t":"code","b":[202],"m":"dex"},{"a":8258,"l":"b_2042","t":"code","b":[142,148,31],"m":"stx","o":"shower_step","oa":8084,"x":[8254]},{"a":8261,"l":"r_2045","t":"code","b":[96],"m":"rts","x":[8248]},{"a":8262,"l":"shower_pose_42","c":"Shower step 4: body pose $42 (the limb raised higher) through the tail $202E of step 3, which moves shower_step up to 5 on every 8th tick of shower_ticks $1F0E.","t":"code","b":[169,66],"m":"lda","o":"#$42"},{"a":8264,"t":"code","b":[208,228],"m":"bne","o":"b_202E","oa":8238},{"a":8266,"l":"r_204A","t":"code","b":[96],"m":"rts","x":[8277]},{"a":8267,"l":"shower_pose_43_44","c":"Shower step 5: if an activity request is pending ($8F86), or on an 8th tick of shower_ticks $1F0E shower_time $1F0F is 0: shows pose $43, then sets shower_step to $83 so that steps 3 and 2 bring him back to pose $40 and step 2 finishes the shower. Otherwise, on every 8th tick, alternates poses $43 and $44 (a limb raised at the left); and when the 1-in-16 draw of $2120 hits, a draw weighted by trait_byte $0369 (mask from $20DC) either sends him back ($83) or keeps alternating.","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":8270,"t":"code","b":[208,12],"m":"bne","o":"b_205C","oa":8284},{"a":8272,"t":"code","b":[173,14,31],"m":"lda","o":"shower_ticks","oa":7950},{"a":8275,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8277,"t":"code","b":[208,243],"m":"bne","o":"r_204A","oa":8266},{"a":8279,"t":"code","b":[173,15,31],"m":"lda","o":"shower_time","oa":7951},{"a":8282,"t":"code","b":[208,13],"m":"bne","o":"b_2069","oa":8297},{"a":8284,"l":"b_205C","t":"code","b":[162,67],"m":"ldx","o":"#$43","x":[8270]},{"a":8286,"t":"code","b":[236,139,3],"m":"cpx","o":"fig_frame","oa":907},{"a":8289,"t":"code","b":[208,48],"m":"bne","o":"b_2093","oa":8339},{"a":8291,"l":"b_2063","t":"code","b":[169,131],"m":"lda","o":"#$83","x":[8323,8326]},{"a":8293,"t":"code","b":[141,148,31],"m":"sta","o":"shower_step","oa":8084},{"a":8296,"t":"code","b":[96],"m":"rts"},{"a":8297,"l":"b_2069","t":"code","b":[32,32,33],"m":"jsr","o":"shower_rare_chance","oa":8480,"x":[8282]},{"a":8300,"t":"code","b":[208,26],"m":"bne","o":"b_2088","oa":8328},{"a":8302,"t":"code","b":[173,105,3],"m":"lda","o":"trait_byte","oa":873},{"a":8305,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8307,"t":"code","b":[168],"m":"tay"},{"a":8308,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":8311,"t":"code","b":[57,220,32],"m":"and","o":"shower_trait_masks,y","oa":8412},{"a":8314,"t":"code","b":[8],"m":"php"},{"a":8315,"t":"code","b":[173,105,3],"m":"lda","o":"trait_byte","oa":873},{"a":8318,"t":"code","b":[48,5],"m":"bmi","o":"b_2085","oa":8325},{"a":8320,"t":"code","b":[40],"m":"plp"},{"a":8321,"t":"code","b":[208,5],"m":"bne","o":"b_2088","oa":8328},{"a":8323,"t":"code","b":[240,222],"m":"beq","o":"b_2063","oa":8291},{"a":8325,"l":"b_2085","t":"code","b":[40],"m":"plp","x":[8318]},{"a":8326,"t":"code","b":[208,219],"m":"bne","o":"b_2063","oa":8291},{"a":8328,"l":"b_2088","t":"code","b":[162,67],"m":"ldx","o":"#$43","x":[8300,8321]},{"a":8330,"t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907},{"a":8333,"t":"code","b":[201,68],"m":"cmp","o":"#$44"},{"a":8335,"t":"code","b":[240,2],"m":"beq","o":"b_2093","oa":8339},{"a":8337,"t":"code","b":[162,68],"m":"ldx","o":"#$44"},{"a":8339,"l":"b_2093","t":"code","b":[138],"m":"txa","x":[8289,8335]},{"a":8340,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":8342,"t":"code","b":[76,223,26],"m":"jmp","o":"figure_set_pose","oa":6879},{"a":8345,"l":"shower_pose_40","c":"Shower step 1: body pose $40 (low in the bathtub), then shower_step 2.","t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":8347,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":8349,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":8352,"l":"b_20A0","t":"code","b":[238,148,31],"m":"inc","o":"shower_step","oa":8084,"x":[8405,8409]},{"a":8355,"t":"code","b":[96],"m":"rts"},{"a":8356,"l":"shower_wait","c":"Shower step 2 (also step $82 on the way back): if an activity request is pending ($8F86) or shower_time $1F0F is 0, sets shower_step 6 (shower_finish $1FF3). Otherwise keeps pose $40 and, when the 1-in-128 chance of $2120 hits, makes a draw weighted by trait_byte $0369 (masks at $20DC): if it passes, shower_step goes up by one (2 to 3; $82 to $83). For a trait with bit 7 clear the draw passes when (random AND mask) is non-zero, for bit 7 set when it is zero.","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":8359,"t":"code","b":[208,18],"m":"bne","o":"b_20BB","oa":8379},{"a":8361,"t":"code","b":[173,15,31],"m":"lda","o":"shower_time","oa":7951},{"a":8364,"t":"code","b":[240,13],"m":"beq","o":"b_20BB","oa":8379},{"a":8366,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":8368,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":8370,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":8373,"t":"code","b":[32,32,33],"m":"jsr","o":"shower_rare_chance","oa":8480},{"a":8376,"t":"code","b":[240,8],"m":"beq","o":"shower_wait_draw","oa":8386},{"a":8378,"t":"code","b":[96],"m":"rts"},{"a":8379,"l":"b_20BB","t":"code","b":[169,6],"m":"lda","o":"#$06","x":[8359,8364]},{"a":8381,"t":"code","b":[141,148,31],"m":"sta","o":"shower_step","oa":8084},{"a":8384,"t":"code","b":[96],"m":"rts"},{"a":8385,"t":"gap","n":1},{"a":8386,"l":"shower_wait_draw","c":"Tail of shower_wait ($20A4), after the unreachable RTS byte at $20C1: the personality draw. X = trait_byte $0369 AND 7 selects a mask from shower_trait_masks $20DC; the random value AND the mask is tested, and shower_step $1F94 goes up by one when it is non-zero (trait bit 7 clear) or zero (trait bit 7 set).","t":"code","b":[173,105,3],"m":"lda","o":"trait_byte","oa":873,"x":[8376]},{"a":8389,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8391,"t":"code","b":[170],"m":"tax"},{"a":8392,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":8395,"t":"code","b":[61,220,32],"m":"and","o":"shower_trait_masks,x","oa":8412},{"a":8398,"t":"code","b":[8],"m":"php"},{"a":8399,"t":"code","b":[173,105,3],"m":"lda","o":"trait_byte","oa":873},{"a":8402,"t":"code","b":[48,4],"m":"bmi","o":"b_20D8","oa":8408},{"a":8404,"t":"code","b":[40],"m":"plp"},{"a":8405,"t":"code","b":[208,201],"m":"bne","o":"b_20A0","oa":8352},{"a":8407,"t":"code","b":[96],"m":"rts"},{"a":8408,"l":"b_20D8","t":"code","b":[40],"m":"plp","x":[8402]},{"a":8409,"t":"code","b":[240,197],"m":"beq","o":"b_20A0","oa":8352},{"a":8411,"t":"code","b":[96],"m":"rts"},{"a":8412,"l":"shower_trait_masks","c":"Eight AND masks for the shower steps' personality draws, indexed by trait_byte $0369 AND 7: $01 $03 $07 $0F $1F $3F $FF $FF. The same kind of table at $96C5 has $7F as its seventh entry.","t":"byte","b":[1,3,7,15,31,63,255,255],"x":[8311,8395]},{"a":8420,"l":"shower_water_tick","c":"Called on every pass by shower_run ($1FB0) before its step dispatch. If shower_time $1F0F is 0 it hides the water (figure 2, $03C6 = 0). Otherwise, on every 4th tick of shower_ticks $1F0E, it steps shower_water_frame $1F13 through 0, 1, 2 and shows figure 2 as image $0B + frame (three frames of falling drops), setting its redraw bit (bit 1 of $03C6). The STA $3564 at $211C is dead code: it needs $1F0E AND $0F = $0E inside a branch taken only when $1F0E AND 3 = 0, and $1F0E is only ever incremented (at $1FAD).","t":"code","b":[173,15,31],"m":"lda","o":"shower_time","oa":7951,"x":[8112]},{"a":8423,"t":"code","b":[208,4],"m":"bne","o":"b_20ED","oa":8429},{"a":8425,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":8428,"t":"code","b":[96],"m":"rts"},{"a":8429,"l":"b_20ED","t":"code","b":[173,14,31],"m":"lda","o":"shower_ticks","oa":7950,"x":[8423]},{"a":8432,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":8434,"t":"code","b":[208,43],"m":"bne","o":"r_211F","oa":8479},{"a":8436,"t":"code","b":[238,19,31],"m":"inc","o":"shower_water_frame","oa":7955},{"a":8439,"t":"code","b":[173,19,31],"m":"lda","o":"shower_water_frame","oa":7955},{"a":8442,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":8444,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":8446,"t":"code","b":[208,2],"m":"bne","o":"b_2102","oa":8450},{"a":8448,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":8450,"l":"b_2102","t":"code","b":[141,19,31],"m":"sta","o":"shower_water_frame","oa":7955,"x":[8446]},{"a":8453,"t":"code","b":[24],"m":"clc"},{"a":8454,"t":"code","b":[105,11],"m":"adc","o":"#$0B"},{"a":8456,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":8459,"t":"code","b":[173,198,3],"m":"lda","o":"fig_flags_prop_a","oa":966},{"a":8462,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":8464,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":8467,"t":"code","b":[173,14,31],"m":"lda","o":"shower_ticks","oa":7950},{"a":8470,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":8472,"t":"code","b":[201,14],"m":"cmp","o":"#$0E"},{"a":8474,"t":"code","b":[208,3],"m":"bne","o":"r_211F","oa":8479},{"a":8476,"t":"code","b":[141,100,53],"m":"sta","o":"snd_req_4","oa":13668},{"a":8479,"l":"r_211F","t":"code","b":[96],"m":"rts","x":[8434,8474]},{"a":8480,"l":"shower_rare_chance","c":"Chance test for shower steps 2 and 5: returns with Z set only on a tick of shower_ticks $1F0E that is a multiple of 8 and when a random nibble ($195E AND $0F) equals 7, so about 1 call in 128; otherwise returns Z clear.","t":"code","b":[173,14,31],"m":"lda","o":"shower_ticks","oa":7950,"x":[8297,8373]},{"a":8483,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8485,"t":"code","b":[208,7],"m":"bne","o":"r_212E","oa":8494},{"a":8487,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":8490,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":8492,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":8494,"l":"r_212E","t":"code","b":[96],"m":"rts","x":[8485]},{"a":8495,"l":"face_away_count","c":"Countdown for face_away_idle ($2156): set to a random $40-$7F by $2136 when the person has turned his back, decremented once every 8 passes; the idle ends when it reaches 0.","t":"byte","b":[0],"x":[8522,8549,8567]},{"a":8496,"l":"face_away_tick","c":"Pass counter of face_away_idle ($2156): incremented on every call; the idle acts only when its low three bits are 0.","t":"byte","b":[0],"x":[8534,8537]},{"a":8497,"l":"face_away_sound","c":"Activity handler (entries of the switch tables at $37EA, $9125 and $A974): raises sound request $3564 (sound $0F), then continues into face_away_turn.","t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":8499,"t":"code","b":[141,100,53],"m":"sta","o":"snd_req_4","oa":13668},{"a":8502,"l":"face_away_turn","c":"Activity handler (entered here from the tables at $1E5B and $AA5C, or from $2131): turns the person to the back view, pose $21, keeping his facing $039A, one step per call of turn_to_pose ($255B). When the turn is complete it sets face_away_count $212F to a random $40-$7F and advances the phase (next_phase).","t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":8504,"t":"code","b":[174,154,3],"m":"ldx","o":"fig_mirror","oa":922},{"a":8507,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":8510,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":8513,"t":"code","b":[208,13],"m":"bne","o":"r_2150","oa":8528},{"a":8515,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":8518,"t":"code","b":[41,63],"m":"and","o":"#$3F"},{"a":8520,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":8522,"t":"code","b":[141,47,33],"m":"sta","o":"face_away_count","oa":8495},{"a":8525,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":8528,"l":"r_2150","t":"code","b":[96],"m":"rts","x":[8513,8542]},{"a":8529,"l":"b_2151","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[8559,8608,8615,8619]},{"a":8531,"t":"code","b":[76,223,26],"m":"jmp","o":"figure_set_pose","oa":6879},{"a":8534,"l":"face_away_idle","c":"Activity handler (tables at $1E5B, $37EA, $9125, $A974 and $AA5C), run while he stands with his back to the viewer: on every 8th pass it may flip his facing at random (redraw bit 1 of $03C4) and switches to a back-view pose $3D, $3E or $3F chosen at random, always a different one; counts face_away_count $212F down. When the count is 0 or an activity request is pending ($8F86) it returns him to pose $21, then raises sound request $3568 (stop all sounds) and advances the phase.","t":"code","b":[238,48,33],"m":"inc","o":"face_away_tick","oa":8496},{"a":8537,"t":"code","b":[173,48,33],"m":"lda","o":"face_away_tick","oa":8496},{"a":8540,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8542,"t":"code","b":[208,240],"m":"bne","o":"r_2150","oa":8528},{"a":8544,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":8547,"t":"code","b":[208,5],"m":"bne","o":"b_216A","oa":8554},{"a":8549,"t":"code","b":[173,47,33],"m":"lda","o":"face_away_count","oa":8495},{"a":8552,"t":"code","b":[208,13],"m":"bne","o":"b_2177","oa":8567},{"a":8554,"l":"b_216A","t":"code","b":[169,33],"m":"lda","o":"#$21","x":[8547]},{"a":8556,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":8559,"t":"code","b":[208,224],"m":"bne","o":"b_2151","oa":8529},{"a":8561,"t":"code","b":[141,104,53],"m":"sta","o":"snd_req_stop4","oa":13672},{"a":8564,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":8567,"l":"b_2177","t":"code","b":[206,47,33],"m":"dec","o":"face_away_count","oa":8495,"x":[8552]},{"a":8570,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":8573,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":8575,"t":"code","b":[205,154,3],"m":"cmp","o":"fig_mirror","oa":922},{"a":8578,"t":"code","b":[240,11],"m":"beq","o":"b_218F","oa":8591},{"a":8580,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":8583,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":8586,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":8588,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":8591,"l":"b_218F","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[8578]},{"a":8594,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":8596,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":8598,"t":"code","b":[208,2],"m":"bne","o":"b_219A","oa":8602},{"a":8600,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":8602,"l":"b_219A","t":"code","b":[24],"m":"clc","x":[8598]},{"a":8603,"t":"code","b":[105,61],"m":"adc","o":"#$3D"},{"a":8605,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":8608,"t":"code","b":[208,175],"m":"bne","o":"b_2151","oa":8529},{"a":8610,"t":"code","b":[24],"m":"clc"},{"a":8611,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":8613,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":8615,"t":"code","b":[144,168],"m":"bcc","o":"b_2151","oa":8529},{"a":8617,"t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":8619,"t":"code","b":[76,81,33],"m":"jmp","o":"b_2151","oa":8529},{"a":8622,"l":"clear_subphase_next","c":"Activity handler (entry 6 of activity 5's table at $9081): clears activity_subphase $68 and advances the phase, so that chair_sit_machine ($21B5) starts from its first entry on the next pass.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":8624,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":8626,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":8629,"l":"chair_sit_machine","c":"Sub-machine switched on activity_subphase $68, entry 7 of activity 5's table at $9081 (activity 5 is running in play-02, with the person in the attic chair and the TV on). Entries: $21C4 walk to place 3, $95ED wait for the walk, $21D3 choose a sitting time and turn, $21EE sit, $8F0B, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":8632,"t":"gap","n":12},{"a":8644,"l":"chair_walk","c":"chair_sit_machine entry 0: starts a walk to place 3 (the attic armchair, the spot where play-02 shows him sitting) with walk_to_place $8EF9, saving and restoring activity_phase $4C around the call because $8EF9 advances it, then advances the sub-phase.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":8646,"t":"code","b":[165,76],"m":"lda","o":"activity_phase","oa":76},{"a":8648,"t":"code","b":[72],"m":"pha"},{"a":8649,"t":"code","b":[32,249,142],"m":"jsr","o":"walk_to_location","oa":36601},{"a":8652,"t":"code","b":[104],"m":"pla"},{"a":8653,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":8655,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":8658,"l":"r_21D2","t":"code","b":[96],"m":"rts","x":[8677,8694]},{"a":8659,"l":"chair_turn","c":"chair_sit_machine entry 2: sets chair_sit_time $21ED to a random value with its low nibble forced to $0F (15-255), turns the person to pose $2E (side view, facing 8) with turn_to_pose ($255B); when the turn is complete it clears the tick counter $02EA and advances the sub-phase.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":8662,"t":"code","b":[9,15],"m":"ora","o":"#$0F"},{"a":8664,"t":"code","b":[141,237,33],"m":"sta","o":"chair_sit_time","oa":8685},{"a":8667,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":8669,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":8671,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":8674,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":8677,"t":"code","b":[208,235],"m":"bne","o":"r_21D2","oa":8658},{"a":8679,"t":"code","b":[141,234,2],"m":"sta","o":"act_anim_count","oa":746},{"a":8682,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":8685,"l":"chair_sit_time","c":"Sitting time left for chair_sit ($21EE), counted down once every 8 ticks of act_anim_count $02EA; set to (random OR $0F) by chair_turn ($21D3).","t":"byte","b":[108],"x":[8664,8696]},{"a":8686,"l":"chair_sit","c":"chair_sit_machine entry 3, once every 8 ticks of $02EA: counts chair_sit_time $21ED down and at 0 ends the sitting (next sub-phase). A pending request ($8F86) for activity $34 (52, the greeting reply) suspends this activity at once through interrupt_for_request $8FC1, while any other request, or a non-zero sound request $3567, ends the sitting instead. Otherwise from pose $2E it moves him 4 pixels right ($03A7, and $1DA3 = the new X / 2), sets bit 0 of $03C4 and seats him (pose $2F); from pose $2F it leans him back (pose $30) on a 1-in-16 draw, and from any other pose it sets $2F again.","t":"code","b":[238,234,2],"m":"inc","o":"act_anim_count","oa":746},{"a":8689,"t":"code","b":[173,234,2],"m":"lda","o":"act_anim_count","oa":746},{"a":8692,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":8694,"t":"code","b":[208,218],"m":"bne","o":"r_21D2","oa":8658},{"a":8696,"t":"code","b":[206,237,33],"m":"dec","o":"chair_sit_time","oa":8685},{"a":8699,"t":"code","b":[240,20],"m":"beq","o":"b_2211","oa":8721},{"a":8701,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":8704,"t":"code","b":[240,10],"m":"beq","o":"b_220C","oa":8716},{"a":8706,"t":"code","b":[173,158,141],"m":"lda","o":"request_activity","oa":36254},{"a":8709,"t":"code","b":[201,52],"m":"cmp","o":"#$34"},{"a":8711,"t":"code","b":[208,8],"m":"bne","o":"b_2211","oa":8721},{"a":8713,"t":"code","b":[76,193,143],"m":"jmp","o":"interrupt_for_request","oa":36801},{"a":8716,"l":"b_220C","t":"code","b":[173,103,53],"m":"lda","o":"snd_req_piece_end","oa":13671,"x":[8704]},{"a":8719,"t":"code","b":[240,8],"m":"beq","o":"b_2219","oa":8729},{"a":8721,"l":"b_2211","t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320,"x":[8699,8711]},{"a":8724,"l":"b_2214","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[8759,8766,8780]},{"a":8726,"t":"code","b":[76,223,26],"m":"jmp","o":"figure_set_pose","oa":6879},{"a":8729,"l":"b_2219","t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907,"x":[8719]},{"a":8732,"t":"code","b":[201,46],"m":"cmp","o":"#$2E"},{"a":8734,"t":"code","b":[208,25],"m":"bne","o":"b_2239","oa":8761},{"a":8736,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":8739,"t":"code","b":[24],"m":"clc"},{"a":8740,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":8742,"t":"code","b":[141,167,3],"m":"sta","o":"fig_x","oa":935},{"a":8745,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":8746,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":8749,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":8752,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":8754,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":8757,"t":"code","b":[169,47],"m":"lda","o":"#$2F"},{"a":8759,"t":"code","b":[208,219],"m":"bne","o":"b_2214","oa":8724},{"a":8761,"l":"b_2239","t":"code","b":[169,47],"m":"lda","o":"#$2F","x":[8734]},{"a":8763,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":8766,"t":"code","b":[208,212],"m":"bne","o":"b_2214","oa":8724},{"a":8768,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":8771,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":8773,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":8775,"t":"code","b":[240,1],"m":"beq","o":"b_224A","oa":8778},{"a":8777,"t":"code","b":[96],"m":"rts"},{"a":8778,"l":"b_224A","t":"code","b":[169,48],"m":"lda","o":"#$30","x":[8775]},{"a":8780,"t":"code","b":[76,20,34],"m":"jmp","o":"b_2214","oa":8724},{"a":8783,"l":"act52_greet_reply","c":"Activity 52 (index $34 of activity_table $8DC9; the activity of event flag $BEF4, which no absolute store in the image sets; the lead saw typing \"hello\" start it). Switch on activity_phase $4C: $225F turn towards the front, $2287 choose a time, $226D turn to the 3/4-front pose, $2292 hold, $2511 release the head, $8F0E next activity.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":8786,"t":"gap","n":12},{"a":8798,"l":"greet_wait_rts","c":"RTS shared by greet_turn_front ($225F): it returns here while activity_subphase $68 is still 0.","t":"code","b":[96],"m":"rts","x":[8808]},{"a":8799,"l":"greet_turn_front","c":"Activity 52 phase 0: clears activity_subphase $68 and calls turn_toward_front_step ($248D), which turns the body toward the front and then sets the head to pose 8; once that routine has bumped $68 the phase advances.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":8801,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":8803,"t":"code","b":[32,141,36],"m":"jsr","o":"turn_toward_front_step","oa":9357},{"a":8806,"t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104},{"a":8808,"t":"code","b":[240,244],"m":"beq","o":"greet_wait_rts","oa":8798},{"a":8810,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":8813,"l":"greet_turn_3q","c":"Activity 52 phase 2: while the person's pose is a walking pose ($00-$07 or $09-$17) turns him to the 3/4-front pose $5C, keeping his facing, with turn_to_pose ($255B); with pose $08 or $18 and above it advances the phase.","t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907},{"a":8816,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":8818,"t":"code","b":[176,16],"m":"bcs","o":"b_2284","oa":8836},{"a":8820,"t":"code","b":[201,9],"m":"cmp","o":"#$09"},{"a":8822,"t":"code","b":[176,4],"m":"bcs","o":"b_227C","oa":8828},{"a":8824,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":8826,"t":"code","b":[240,8],"m":"beq","o":"b_2284","oa":8836},{"a":8828,"l":"b_227C","t":"code","b":[169,92],"m":"lda","o":"#$5C","x":[8822]},{"a":8830,"t":"code","b":[174,154,3],"m":"ldx","o":"fig_mirror","oa":922},{"a":8833,"t":"code","b":[76,91,37],"m":"jmp","o":"turn_to_pose","oa":9563},{"a":8836,"l":"b_2284","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[8818,8826,8853]},{"a":8839,"l":"greet_set_time","c":"Activity 52 phase 1: sets greet_time $229B to a random value OR $3F (63-255 passes) and advances.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":8842,"t":"code","b":[9,63],"m":"ora","o":"#$3F"},{"a":8844,"t":"code","b":[141,155,34],"m":"sta","o":"greet_time","oa":8859},{"a":8847,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":8850,"l":"greet_hold","c":"Activity 52 phase 3: counts greet_time $229B down by one per pass and advances when it is 0.","t":"code","b":[173,155,34],"m":"lda","o":"greet_time","oa":8859},{"a":8853,"t":"code","b":[240,237],"m":"beq","o":"b_2284","oa":8836},{"a":8855,"t":"code","b":[206,155,34],"m":"dec","o":"greet_time","oa":8859},{"a":8858,"t":"code","b":[96],"m":"rts"},{"a":8859,"l":"greet_time","c":"Passes left for activity 52 to hold the 3/4-front pose: set by greet_set_time, counted by greet_hold. The next byte, $229C, is an RTS that nothing reaches.","t":"byte","b":[0,96],"x":[8844,8850,8855]},{"a":8861,"l":"act35_head_faces","c":"Activity 35 (activity_table index $23): switch on activity_subphase $68 through $248D turn toward the front, then head poses 8, $18, $1B and 8 (head held under activity control), each followed by an 8-tick wait ($2623), then $2516 release the head, $23D3 end, $8F0E next activity.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":8864,"t":"gap","n":24},{"a":8888,"l":"act36_pose_52_53","c":"Activity 36: switch on $68: $2535 turn to the front view, $26ED set a count of 2-9, then body poses $52 and $53 alternately with 8-tick waits ($26B0, $26B4), looped by $26FB until the count runs out (3 to 10 cycles), then $2535 face front again, $2516, $23D3, $8F0E. Pose $52 has one arm raised, pose $53 the hand at the face.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":8891,"t":"gap","n":26},{"a":8917,"l":"act37_dance_steps","c":"Activity 37, also phase 7 of activity 53 ($E003), which the lead saw start on \"please dance\": switch on $68: face front ($2535), a count of 2-9 ($26ED), then poses $50 (arms out), $51 (one knee raised), a facing flip with $50 ($26C0) and $51 again, with 8-tick waits, looped by $270B until the count runs out; then face front, $2516, $23D3, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":8920,"t":"gap","n":34},{"a":8954,"l":"act38_pose_54_55","c":"Activity 38: switch on $68: face front ($2535), a count of 2-9 ($26ED), then body poses $54 and $55 (front view, one arm held out) alternately with 8-tick waits, looped by $26FB until the count runs out; then face front, $2516, $23D3, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":8957,"t":"gap","n":26},{"a":8983,"l":"act39_pose_56_57","c":"Activity 39: switch on $68: face front ($2535), wait, turn toward the front and set the head ($248D), then body poses $56, $57, $56 once with 8-tick waits (both arms held out, then bent), face front again, $2516, $23D3, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":8986,"t":"gap","n":30},{"a":9016,"l":"act40_pose_58_59","c":"Activity 40 (the lead saw it run for about four seconds in play): switch on $68: face front ($2535), a count of 2-9 ($26ED), then body poses $58 and $59 alternately with 8-tick waits, pose $59 raising sound request $3561 (sound $12), looped by $26FB until the count runs out; then face front, $2516, $23D3, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":9019,"t":"gap","n":26},{"a":9045,"l":"act42_overhead_lines","c":"Activity 42: switch on $68: face front, wait, $248D, then figure 2 is put on the person with images $16, $17, $18, $17, $16 (one, three and five short vertical lines) while his body takes poses $4E, $4F, $4F, $4F, $4E ($2652, $2697, $26A5), with 8-tick waits; then face front, $2516, $23BC hide figure 2, $23D3, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":9048,"t":"gap","n":38},{"a":9086,"l":"act41_talk","c":"Activity 41, also run by talk_or_wait ($2759) inside other activities: switch on $68: $248D turn toward the front, $24C8 change the mouth, $2481 wait, $2469 loop back while act_timer_running $0432 is set, $2516 release the head, $23D3 end, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140,"x":[10080]},{"a":9089,"t":"gap","n":14},{"a":9103,"l":"act46_head_expressions","c":"Activity 46: switch on $68: $2407 start (turn toward the front), $242E step the head through the table at $244E, $23D9 repeat or finish, $2516, $23D3, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":9106,"t":"gap","n":12},{"a":9118,"l":"act45_look_side_to_side","c":"Activity 45: switch on $68: $2407 start, $2445 step the head through the table at $2457 (turning to one side, to the front and to the other side), $23D9 repeat or finish, $2516, $23D3, $8F0E.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":9121,"t":"gap","n":12},{"a":9133,"l":"head_1e_machine","c":"A switch on $68 with entries $248D (turn toward the front), $23C4 (head pose $1E), $23D3, $8F0E. It follows activity 45's table directly; no activity table entry, switch entry, JSR, JMP or address word pointing at it was found.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":9136,"t":"gap","n":8},{"a":9144,"l":"anim_tick","c":"Tick counter shared by the 8-tick gate $2616, head_seq_tick ($2415) and turn_to_pose ($255B, which counts it down and acts on every 4th value); head_1e_start ($23C4) reloads it with a random $20-$3F.","t":"byte","b":[116],"x":[9163,9242,9245,9577,9580,9750,9753]},{"a":9145,"l":"pose_loop_count","c":"Repeat counter of the pose loops of activities 36, 37, 38 and 40: set to 2-9 by $26ED, counted down by $26FB and $270B, which loop back while it stays at 0 or above.","t":"byte","b":[255],"x":[9973,9979,9995]},{"a":9146,"l":"head_seq_step","c":"Step index into the head sequences at $244E and $2457: cleared by $2407 and $23D9, incremented by head_seq_tick ($2415) every 8 ticks.","t":"byte","b":[0],"x":[9195,9225,9252,9255]},{"a":9147,"l":"talk_skip","c":"Set to 1 by maybe_talk ($2728) when no talking is chosen, 0 by talk_start_timer ($2749); talk_or_wait ($2759) runs the talking sub-machine $237E when bit 0 is clear, and otherwise only waits for act_timer_running $0432 to clear.","t":"byte","b":[0],"x":[10045,10062,10073,10104]},{"a":9148,"l":"hide_item_next","c":"Sub-machine handler (entry 16 of activity 42's table): hides figure 2 ($03C6 = 0) and advances activity_subphase $68.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":9150,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":9153,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9156,"l":"head_1e_start","c":"Entry 1 of the unreferenced switch at $23AD: reloads anim_tick $23B8 with a random $20-$3F (rng_value $0414), then sets head pose $1E with a head redraw ($24FB) and advances the sub-phase.","t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":9159,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":9161,"t":"code","b":[41,63],"m":"and","o":"#$3F"},{"a":9163,"t":"code","b":[141,184,35],"m":"sta","o":"anim_tick","oa":9144},{"a":9166,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":9168,"t":"code","b":[76,251,36],"m":"jmp","o":"j_24FB","oa":9467},{"a":9171,"l":"end_submachine","c":"Last working entry of the $68 sub-machines (activities 35-42, 45, 46 and $23AD): advances both activity_subphase $68 and activity_phase $4C, so a sub-machine run as a phase of another activity hands back to it; run as an activity of its own, the next pass reaches its final $8F0E entry.","t":"code","b":[32,176,149],"m":"jsr","o":"next_subphase","oa":38320},{"a":9174,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":9177,"l":"head_seq_repeat","c":"Entry 2 of activities 45 and 46: with probability 6 in 16 (random nibble below 6) steps activity_subphase $68 back by one and clears head_seq_step $23BA, so the head sequence plays again; otherwise sets head pose 8 ($038F) and head target 8 ($03F4), sets $03C8 to $82 (head redraw) and advances.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":9180,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":9182,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":9184,"t":"code","b":[176,13],"m":"bcs","o":"b_23EF","oa":9199},{"a":9186,"t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104},{"a":9188,"t":"code","b":[56],"m":"sec"},{"a":9189,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":9191,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":9193,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":9195,"t":"code","b":[141,186,35],"m":"sta","o":"head_seq_step","oa":9146},{"a":9198,"t":"code","b":[96],"m":"rts"},{"a":9199,"l":"b_23EF","t":"code","b":[169,8],"m":"lda","o":"#$08","x":[9184]},{"a":9201,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":9204,"t":"code","b":[141,244,3],"m":"sta","o":"head_target","oa":1012},{"a":9207,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":9209,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":9212,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9215,"l":"pop_return","c":"PLA, PLA, RTS: drops the caller's return address and returns to the switch's caller, ending the handler for this pass; used by head_seq_tick ($2415).","t":"code","b":[104],"m":"pla","x":[9240,9250]},{"a":9216,"t":"code","b":[104],"m":"pla"},{"a":9217,"t":"code","b":[96],"m":"rts"},{"a":9218,"l":"pop_next_subphase","c":"PLA, PLA, JMP $95B0: drops a return address and advances activity_subphase $68. No JSR, JMP, branch, switch entry or address word pointing at $2402 was found.","t":"code","b":[104],"m":"pla"},{"a":9219,"t":"code","b":[104],"m":"pla"},{"a":9220,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9223,"l":"head_seq_start","c":"Entry 0 of activities 45 and 46: clears head_seq_step $23BA and continues into turn_toward_front_step ($248D).","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":9225,"t":"code","b":[141,186,35],"m":"sta","o":"head_seq_step","oa":9146},{"a":9228,"t":"code","b":[76,141,36],"m":"jmp","o":"turn_toward_front_step","oa":9357},{"a":9231,"l":"head_busy","c":"Returns A = $03C8 AND 6, the head figure's (figure 4) pending image-update bits: Z set when the head has no image change waiting.","t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968,"x":[9237,9345,9769,9791,9800]},{"a":9234,"t":"code","b":[41,6],"m":"and","o":"#$06"},{"a":9236,"t":"code","b":[96],"m":"rts"},{"a":9237,"l":"head_seq_tick","c":"Step clock for the head sequences: if the head is busy ($240F) or anim_tick $23B8 (incremented here) is not a multiple of 8, it ends the calling handler for this pass (pop_return $23FF); otherwise it increments head_seq_step $23BA, returns it in X and sets the head redraw bit through head_redraw ($2504).","t":"code","b":[32,15,36],"m":"jsr","o":"head_busy","oa":9231,"x":[9262,9285]},{"a":9240,"t":"code","b":[208,229],"m":"bne","o":"pop_return","oa":9215},{"a":9242,"t":"code","b":[238,184,35],"m":"inc","o":"anim_tick","oa":9144},{"a":9245,"t":"code","b":[173,184,35],"m":"lda","o":"anim_tick","oa":9144},{"a":9248,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":9250,"t":"code","b":[208,219],"m":"bne","o":"pop_return","oa":9215},{"a":9252,"t":"code","b":[238,186,35],"m":"inc","o":"head_seq_step","oa":9146},{"a":9255,"t":"code","b":[173,186,35],"m":"lda","o":"head_seq_step","oa":9146},{"a":9258,"t":"code","b":[170],"m":"tax"},{"a":9259,"t":"code","b":[76,4,37],"m":"jmp","o":"head_redraw","oa":9476},{"a":9262,"l":"head_seq_expressions","c":"Entry 1 of activity 46: every 8 ticks sets the head pose $038F from head_seq_expr_table $244E and the head facing $039E from head_seq_facing_table $2460 at step X; at the $FF end marker advances the sub-phase instead. $2434 is the shared tail with $2445.","t":"code","b":[32,21,36],"m":"jsr","o":"head_seq_tick","oa":9237},{"a":9265,"t":"code","b":[189,78,36],"m":"lda","o":"head_seq_expr_table,x","oa":9294},{"a":9268,"l":"j_2434","t":"code","b":[188,96,36],"m":"ldy","o":"head_seq_facing_table,x","oa":9312,"x":[9291]},{"a":9271,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":9273,"t":"code","b":[240,7],"m":"beq","o":"b_2442","oa":9282},{"a":9275,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":9278,"t":"code","b":[140,158,3],"m":"sty","o":"fig_mirror_head","oa":926},{"a":9281,"t":"code","b":[96],"m":"rts"},{"a":9282,"l":"b_2442","t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320,"x":[9273]},{"a":9285,"l":"head_seq_look_around","c":"Entry 1 of activity 45: as head_seq_expressions, with the head poses from head_seq_look_table $2457.","t":"code","b":[32,21,36],"m":"jsr","o":"head_seq_tick","oa":9237},{"a":9288,"t":"code","b":[189,87,36],"m":"lda","o":"head_seq_look_table,x","oa":9303},{"a":9291,"t":"code","b":[76,52,36],"m":"jmp","o":"j_2434","oa":9268},{"a":9294,"l":"head_seq_expr_table","c":"Head poses for activity 46 by step (step 0 unused): $08 then $10 $08 $00 $08 $10 $08 $00, $FF end. All have head direction 0 (front) and differ only in bits 3-4 of the head pose; the decoded images differ in the mouth.","t":"byte","b":[8,16,8,0,8,16,8,0],"x":[9265]},{"a":9302,"t":"byte","b":[255]},{"a":9303,"l":"head_seq_look_table","c":"Head poses for activity 45 by step (step 0 unused): $08 then $09 $0A $09 $08 $0F $0E $0F, $FF end: head directions 1, 2, 1, 0, 7, 6, 7 of expression set 1, i.e. turned to one side, to the front, then to the other side.","t":"byte","b":[8,9,10,9,8,15,14,15],"x":[9288]},{"a":9311,"t":"byte","b":[255]},{"a":9312,"l":"head_seq_facing_table","c":"Head facing ($039E) for each step of the two head sequences: 0 for steps 0-4, 8 for steps 5-8.","t":"byte","b":[0,0,0,0,0,8,8,8],"x":[9268]},{"a":9320,"t":"byte","b":[8]},{"a":9321,"l":"talk_until_timer","c":"Entry 3 of activity 41 ($237E): when act_timer_running $0432 is clear, advances; when a request is pending ($8F86), calls the stub $2E71 and advances; otherwise steps activity_subphase $68 back by 2 so that talk_mouth ($24C8) picks another mouth shape.","t":"code","b":[173,50,4],"m":"lda","o":"act_timer_running","oa":1074},{"a":9324,"t":"code","b":[240,27],"m":"beq","o":"b_2489","oa":9353},{"a":9326,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":9329,"t":"code","b":[208,8],"m":"bne","o":"b_247B","oa":9339},{"a":9331,"t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104},{"a":9333,"t":"code","b":[56],"m":"sec"},{"a":9334,"t":"code","b":[233,2],"m":"sbc","o":"#$02"},{"a":9336,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":9338,"l":"r_247A","t":"code","b":[96],"m":"rts","x":[9348]},{"a":9339,"l":"b_247B","t":"code","b":[32,113,46],"m":"jsr","o":"stub_clc","oa":11889,"x":[9329]},{"a":9342,"t":"code","b":[76,137,36],"m":"jmp","o":"b_2489","oa":9353},{"a":9345,"l":"talk_wait","c":"Entry 2 of activity 41: waits until the head has no image change pending and an 8-tick gate ($2616) passes, then advances the sub-phase.","t":"code","b":[32,15,36],"m":"jsr","o":"head_busy","oa":9231},{"a":9348,"t":"code","b":[208,244],"m":"bne","o":"r_247A","oa":9338},{"a":9350,"t":"code","b":[32,22,38],"m":"jsr","o":"every_8th_tick","oa":9750},{"a":9353,"l":"b_2489","t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320,"x":[9324,9342,9395,9413]},{"a":9356,"t":"gap","n":1},{"a":9357,"l":"turn_toward_front_step","c":"Called every 8 ticks (gate $2616; it ends the handler on other ticks). When the body's view class ($AE8D by pose $038B) is 3 or 4 (3/4-back or back view) it sets the canonical pose of that class (view_class_poses $2541), or, if already there, that of the next class toward the front. Otherwise it clears the head countdown $037C; if the head pose $038F is $18 or above it advances activity_subphase $68 at once, else it sets $037C = 1, $ACF1 = 1 (head held) and head target $03F4 = 8 and advances once the head pose is 8.","t":"code","b":[32,22,38],"m":"jsr","o":"every_8th_tick","oa":9750,"x":[8803,9228]},{"a":9360,"t":"code","b":[172,139,3],"m":"ldy","o":"fig_frame","oa":907},{"a":9363,"t":"code","b":[190,141,174],"m":"ldx","o":"pose_view_class,y","oa":44685},{"a":9366,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":9368,"t":"code","b":[144,15],"m":"bcc","o":"b_24A9","oa":9385},{"a":9370,"t":"code","b":[189,65,37],"m":"lda","o":"view_class_poses,x","oa":9537},{"a":9373,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":9376,"t":"code","b":[208,1],"m":"bne","o":"b_24A3","oa":9379},{"a":9378,"t":"code","b":[202],"m":"dex"},{"a":9379,"l":"b_24A3","t":"code","b":[189,65,37],"m":"lda","o":"view_class_poses,x","oa":9537,"x":[9376]},{"a":9382,"t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731},{"a":9385,"l":"b_24A9","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[9368]},{"a":9387,"t":"code","b":[141,124,3],"m":"sta","o":"head_turn_timer","oa":892},{"a":9390,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":9393,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":9395,"t":"code","b":[176,212],"m":"bcs","o":"b_2489","oa":9353},{"a":9397,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":9399,"t":"code","b":[142,124,3],"m":"stx","o":"head_turn_timer","oa":892},{"a":9402,"t":"code","b":[142,241,172],"m":"stx","o":"pose_change_busy","oa":44273},{"a":9405,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":9407,"t":"code","b":[141,244,3],"m":"sta","o":"head_target","oa":1012},{"a":9410,"t":"code","b":[205,143,3],"m":"cmp","o":"fig_frame_head","oa":911},{"a":9413,"t":"code","b":[240,194],"m":"beq","o":"b_2489","oa":9353},{"a":9415,"t":"code","b":[96],"m":"rts"},{"a":9416,"l":"talk_mouth","c":"Entry 1 of activity 41: picks a random mouth shape from talk_mouth_poses $250D different from the current head pose. Pose $1C (the widest mouth) is used only while sound request $3572 is clear, and then raises it (sound $15); otherwise a $1C pick becomes $08, or $1D when the head is already $08. Sets the head pose $038F, the head redraw bit, and advances.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":9419,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":9421,"t":"code","b":[170],"m":"tax"},{"a":9422,"t":"code","b":[189,13,37],"m":"lda","o":"talk_mouth_poses,x","oa":9485},{"a":9425,"t":"code","b":[205,143,3],"m":"cmp","o":"fig_frame_head","oa":911},{"a":9428,"t":"code","b":[208,5],"m":"bne","o":"b_24DB","oa":9435},{"a":9430,"t":"code","b":[232],"m":"inx"},{"a":9431,"t":"code","b":[138],"m":"txa"},{"a":9432,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":9434,"t":"code","b":[170],"m":"tax"},{"a":9435,"l":"b_24DB","t":"code","b":[169,28],"m":"lda","o":"#$1C","x":[9428]},{"a":9437,"t":"code","b":[221,13,37],"m":"cmp","o":"talk_mouth_poses,x","oa":9485},{"a":9440,"t":"code","b":[208,22],"m":"bne","o":"b_24F8","oa":9464},{"a":9442,"t":"code","b":[172,114,53],"m":"ldy","o":"snd_req_talk","oa":13682},{"a":9445,"t":"code","b":[208,6],"m":"bne","o":"b_24ED","oa":9453},{"a":9447,"t":"code","b":[136],"m":"dey"},{"a":9448,"t":"code","b":[140,114,53],"m":"sty","o":"snd_req_talk","oa":13682},{"a":9451,"t":"code","b":[208,11],"m":"bne","o":"b_24F8","oa":9464},{"a":9453,"l":"b_24ED","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[9445]},{"a":9455,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":9458,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":9460,"t":"code","b":[208,2],"m":"bne","o":"b_24F8","oa":9464},{"a":9462,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":9464,"l":"b_24F8","t":"code","b":[189,13,37],"m":"lda","o":"talk_mouth_poses,x","oa":9485,"x":[9440,9451,9460]},{"a":9467,"l":"j_24FB","t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911,"x":[9168]},{"a":9470,"t":"code","b":[32,4,37],"m":"jsr","o":"head_redraw","oa":9476},{"a":9473,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9476,"l":"head_redraw","c":"Sets bit 1 of $03C8 so that the head (figure 4) gets a new image on the next figure update.","t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968,"x":[9259,9470,9784,9898]},{"a":9479,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":9481,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":9484,"t":"code","b":[96],"m":"rts"},{"a":9485,"l":"talk_mouth_poses","c":"The four head poses talk_mouth ($24C8) chooses from: $08, $1C, $1D, $1C (front-facing heads with different mouths).","t":"byte","b":[8,28,29,28],"x":[9422,9437,9464]},{"a":9489,"l":"phase_done_head_reset","c":"Entry 4 of activity 52's table: advances activity_phase $4C, then (shared tail $2518) clears $ACF1 so that the head routine may glance about again, and sets head pose 8.","t":"code","b":[230,76],"m":"inc","o":"activity_phase","oa":76},{"a":9491,"t":"code","b":[76,24,37],"m":"jmp","o":"j_2518","oa":9496},{"a":9494,"l":"subphase_done_head_reset","c":"Penultimate working entry of the $68 sub-machines of activities 35-42, 45 and 46: advances activity_subphase $68, clears $ACF1 (head no longer held) and sets head pose $038F to 8.","t":"code","b":[230,104],"m":"inc","o":"activity_subphase","oa":104},{"a":9496,"l":"j_2518","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[9491]},{"a":9498,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":9501,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":9503,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":9506,"t":"code","b":[96],"m":"rts"},{"a":9507,"l":"random_loop_back_4","c":"With probability 1 in 8 (rng_value $0414 AND 7 = 0) advances activity_subphase $68, otherwise steps it back by 4. No JSR, JMP, switch entry or address word pointing at $2523 was found.","t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":9510,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":9512,"t":"code","b":[208,3],"m":"bne","o":"b_252D","oa":9517},{"a":9514,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9517,"l":"b_252D","t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104,"x":[9512]},{"a":9519,"t":"code","b":[56],"m":"sec"},{"a":9520,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":9522,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":9524,"l":"r_2534","t":"code","b":[96],"m":"rts","x":[9531,9585]},{"a":9525,"l":"turn_front_then_next","c":"Sub-machine entry used by activities 36-40 and 42: turns the person to the front view with turn_to_front ($2557) and advances activity_subphase $68 when the turn is complete (turn_busy $2540 = 0).","t":"code","b":[32,87,37],"m":"jsr","o":"turn_to_front","oa":9559},{"a":9528,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":9531,"t":"code","b":[208,247],"m":"bne","o":"r_2534","oa":9524},{"a":9533,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9536,"l":"turn_busy","c":"Set to $FF by turn_to_pose ($255B) on every call and cleared when the target pose and facing are reached; handlers test it to know when a turn is complete.","t":"byte","b":[0],"x":[8510,8674,9528,9571,9636,11812,13305,21278,23368,43133,43561,44906,57587,58419]},{"a":9537,"l":"view_class_poses","c":"The canonical body pose for each view class 0-4 (the class of a pose is in the table at $AE8D): $22 front, $5C 3/4 front, $08 side, $5B 3/4 back, $21 back. turn_to_pose steps through these.","t":"byte","b":[34,92,8,91,33],"x":[9370,9379,9663,9743]},{"a":9542,"l":"turn_goal_class","c":"The view class turn_to_pose is heading for on this step: the target pose's class, or 0 or 4 (front or back) while the facing has to change.","t":"byte","b":[2],"x":[9598,9607,9681,9709,9720,9735]},{"a":9543,"l":"turn_target_pose","c":"Target body pose of the turn in progress (A on entry to turn_to_pose $255B).","t":"byte","b":[46],"x":[9563,9592,9620,9714]},{"a":9544,"l":"turn_target_facing","c":"Target facing of the turn in progress, 0 or 8 (X on entry to turn_to_pose $255B).","t":"byte","b":[8],"x":[9566,9615,9640,9674,9723]},{"a":9545,"l":"turn_to_back_unused","c":"Entry that turns the person to the back view: A = $21, X = 0, into turn_to_pose. No reference to it was found.","t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":9547,"t":"code","b":[208,12],"m":"bne","o":"b_2559","oa":9561},{"a":9549,"l":"turn_to_side_f0_unused","c":"Entry that turns the person to the side view pose $08 with facing 0, into turn_to_pose. No reference to it was found.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":9551,"t":"code","b":[208,8],"m":"bne","o":"b_2559","oa":9561},{"a":9553,"l":"turn_to_side_f8_unused","c":"Entry that turns the person to the side view pose $08 with facing 8, into turn_to_pose. No reference to it was found.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":9555,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":9557,"t":"code","b":[208,4],"m":"bne","o":"turn_to_pose","oa":9563},{"a":9559,"l":"turn_to_front","c":"Turns the person toward the front view: A = pose $22, X = facing 0, into turn_to_pose.","t":"code","b":[169,34],"m":"lda","o":"#$22","x":[9525]},{"a":9561,"l":"b_2559","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[9547,9551]},{"a":9563,"l":"turn_to_pose","c":"Animated turn of the person to body pose A with facing X (0 or 8), one step on every 4th count of anim_tick $23B8 (counted down here). Every call sets turn_busy $2540 and $ACF1 to $FF; each acting call sets $037C = 1. Each step compares the view classes ($AE8D) of the current and target poses: it first normalises to the class's canonical pose (view_class_poses $2541), then moves one class at a time toward the target; a change of facing is made only at the front or back view (class 0 or 4): through the front when the target is a front view or the current class is 1, otherwise through the back. At the target pose and facing it clears turn_busy and $ACF1. Called at $213B, $21DF, $2281, $2E21 and from outside at $33F6, $531B, $5B45, $A87A, $AA26, $AF67, $E0F0 and $E430; turn_to_front and the unused entries $2549-$2551 fall into it.","t":"code","b":[141,71,37],"m":"sta","o":"turn_target_pose","oa":9543,"x":[8507,8671,8833,9557,11809,13302,21275,23365,43130,43558,44903,57584,58416]},{"a":9566,"t":"code","b":[142,72,37],"m":"stx","o":"turn_target_facing","oa":9544},{"a":9569,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":9571,"t":"code","b":[141,64,37],"m":"sta","o":"turn_busy","oa":9536},{"a":9574,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":9577,"t":"code","b":[206,184,35],"m":"dec","o":"anim_tick","oa":9144},{"a":9580,"t":"code","b":[173,184,35],"m":"lda","o":"anim_tick","oa":9144},{"a":9583,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":9585,"t":"code","b":[208,193],"m":"bne","o":"r_2534","oa":9524},{"a":9587,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":9589,"t":"code","b":[141,124,3],"m":"sta","o":"head_turn_timer","oa":892},{"a":9592,"t":"code","b":[172,71,37],"m":"ldy","o":"turn_target_pose","oa":9543},{"a":9595,"t":"code","b":[190,141,174],"m":"ldx","o":"pose_view_class,y","oa":44685},{"a":9598,"t":"code","b":[142,70,37],"m":"stx","o":"turn_goal_class","oa":9542},{"a":9601,"t":"code","b":[172,139,3],"m":"ldy","o":"fig_frame","oa":907},{"a":9604,"t":"code","b":[190,141,174],"m":"ldx","o":"pose_view_class,y","oa":44685},{"a":9607,"t":"code","b":[236,70,37],"m":"cpx","o":"turn_goal_class","oa":9542},{"a":9610,"t":"code","b":[208,45],"m":"bne","o":"b_25B9","oa":9657},{"a":9612,"t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":9615,"t":"code","b":[77,72,37],"m":"eor","o":"turn_target_facing","oa":9544},{"a":9618,"t":"code","b":[208,29],"m":"bne","o":"b_25B1","oa":9649},{"a":9620,"l":"j_2594","t":"code","b":[173,71,37],"m":"lda","o":"turn_target_pose","oa":9543,"x":[9646]},{"a":9623,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":9626,"t":"code","b":[240,3],"m":"beq","o":"b_259F","oa":9631},{"a":9628,"l":"b_259C","t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731,"x":[9669,9746]},{"a":9631,"l":"b_259F","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[9626]},{"a":9633,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":9636,"t":"code","b":[141,64,37],"m":"sta","o":"turn_busy","oa":9536},{"a":9639,"t":"code","b":[96],"m":"rts"},{"a":9640,"l":"b_25A8","t":"code","b":[173,72,37],"m":"lda","o":"turn_target_facing","oa":9544,"x":[9651,9655]},{"a":9643,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":9646,"t":"code","b":[76,148,37],"m":"jmp","o":"j_2594","oa":9620},{"a":9649,"l":"b_25B1","t":"code","b":[224,0],"m":"cpx","o":"#$00","x":[9618]},{"a":9651,"t":"code","b":[240,243],"m":"beq","o":"b_25A8","oa":9640},{"a":9653,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":9655,"t":"code","b":[240,239],"m":"beq","o":"b_25A8","oa":9640},{"a":9657,"l":"b_25B9","t":"code","b":[172,139,3],"m":"ldy","o":"fig_frame","oa":907,"x":[9610]},{"a":9660,"t":"code","b":[190,141,174],"m":"ldx","o":"pose_view_class,y","oa":44685},{"a":9663,"t":"code","b":[189,65,37],"m":"lda","o":"view_class_poses,x","oa":9537},{"a":9666,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":9669,"t":"code","b":[208,213],"m":"bne","o":"b_259C","oa":9628},{"a":9671,"t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":9674,"t":"code","b":[77,72,37],"m":"eor","o":"turn_target_facing","oa":9544},{"a":9677,"t":"code","b":[240,50],"m":"beq","o":"b_2601","oa":9729},{"a":9679,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":9681,"t":"code","b":[236,70,37],"m":"cpx","o":"turn_goal_class","oa":9542},{"a":9684,"t":"code","b":[240,19],"m":"beq","o":"b_25E9","oa":9705},{"a":9686,"t":"code","b":[172,139,3],"m":"ldy","o":"fig_frame","oa":907},{"a":9689,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":9691,"t":"code","b":[170],"m":"tax"},{"a":9692,"t":"code","b":[56],"m":"sec"},{"a":9693,"t":"code","b":[249,141,174],"m":"sbc","o":"pose_view_class,y","oa":44685},{"a":9696,"t":"code","b":[217,141,174],"m":"cmp","o":"pose_view_class,y","oa":44685},{"a":9699,"t":"code","b":[240,4],"m":"beq","o":"b_25E9","oa":9705},{"a":9701,"t":"code","b":[144,2],"m":"bcc","o":"b_25E9","oa":9705},{"a":9703,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":9705,"l":"b_25E9","t":"code","b":[138],"m":"txa","x":[9684,9699,9701]},{"a":9706,"t":"code","b":[217,141,174],"m":"cmp","o":"pose_view_class,y","oa":44685},{"a":9709,"t":"code","b":[141,70,37],"m":"sta","o":"turn_goal_class","oa":9542},{"a":9712,"t":"code","b":[208,15],"m":"bne","o":"b_2601","oa":9729},{"a":9714,"t":"code","b":[172,71,37],"m":"ldy","o":"turn_target_pose","oa":9543},{"a":9717,"t":"code","b":[190,141,174],"m":"ldx","o":"pose_view_class,y","oa":44685},{"a":9720,"t":"code","b":[142,70,37],"m":"stx","o":"turn_goal_class","oa":9542},{"a":9723,"t":"code","b":[173,72,37],"m":"lda","o":"turn_target_facing","oa":9544},{"a":9726,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":9729,"l":"b_2601","t":"code","b":[172,139,3],"m":"ldy","o":"fig_frame","oa":907,"x":[9677,9712]},{"a":9732,"t":"code","b":[190,141,174],"m":"ldx","o":"pose_view_class,y","oa":44685},{"a":9735,"t":"code","b":[236,70,37],"m":"cpx","o":"turn_goal_class","oa":9542},{"a":9738,"t":"code","b":[232],"m":"inx"},{"a":9739,"t":"code","b":[144,2],"m":"bcc","o":"b_260F","oa":9743},{"a":9741,"t":"code","b":[202],"m":"dex"},{"a":9742,"t":"code","b":[202],"m":"dex"},{"a":9743,"l":"b_260F","t":"code","b":[189,65,37],"m":"lda","o":"view_class_poses,x","oa":9537,"x":[9739]},{"a":9746,"t":"code","b":[76,156,37],"m":"jmp","o":"b_259C","oa":9628},{"a":9749,"l":"r_2615","t":"code","b":[96],"m":"rts","x":[9758]},{"a":9750,"l":"every_8th_tick","c":"8-tick gate: increments anim_tick $23B8; returns normally when its low 3 bits are 0, otherwise pulls the caller's return address so that the calling handler ends for this pass.","t":"code","b":[238,184,35],"m":"inc","o":"anim_tick","oa":9144,"x":[9350,9357,9763]},{"a":9753,"t":"code","b":[173,184,35],"m":"lda","o":"anim_tick","oa":9144},{"a":9756,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":9758,"t":"code","b":[240,245],"m":"beq","o":"r_2615","oa":9749},{"a":9760,"t":"code","b":[104],"m":"pla"},{"a":9761,"t":"code","b":[104],"m":"pla"},{"a":9762,"t":"code","b":[96],"m":"rts"},{"a":9763,"l":"wait_8_ticks","c":"Sub-machine entry: advances activity_subphase $68 after an 8-tick gate (every_8th_tick).","t":"code","b":[32,22,38],"m":"jsr","o":"every_8th_tick","oa":9750},{"a":9766,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9769,"l":"head_pose_8_held","c":"Sub-machine entry (activity 35): once the head is idle ($240F), sets $ACF1 = $FF (head held by the activity), head pose $08 with a redraw, and advances. $2635 is the shared tail: store the head pose A, redraw, advance.","t":"code","b":[32,15,36],"m":"jsr","o":"head_busy","oa":9231},{"a":9772,"t":"code","b":[208,16],"m":"bne","o":"r_263E","oa":9790},{"a":9774,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":9776,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":9779,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":9781,"l":"b_2635","t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911,"x":[9798,9807]},{"a":9784,"t":"code","b":[32,4,37],"m":"jsr","o":"head_redraw","oa":9476},{"a":9787,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9790,"l":"r_263E","t":"code","b":[96],"m":"rts","x":[9772,9794,9803]},{"a":9791,"l":"head_pose_18","c":"Sub-machine entry (activity 35): once the head is idle, sets head pose $18 and advances.","t":"code","b":[32,15,36],"m":"jsr","o":"head_busy","oa":9231},{"a":9794,"t":"code","b":[208,250],"m":"bne","o":"r_263E","oa":9790},{"a":9796,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":9798,"t":"code","b":[208,237],"m":"bne","o":"b_2635","oa":9781},{"a":9800,"l":"head_pose_1b","c":"Sub-machine entry (activity 35): once the head is idle, sets head pose $1B and advances.","t":"code","b":[32,15,36],"m":"jsr","o":"head_busy","oa":9231},{"a":9803,"t":"code","b":[208,241],"m":"bne","o":"r_263E","oa":9790},{"a":9805,"t":"code","b":[169,27],"m":"lda","o":"#$1B"},{"a":9807,"t":"code","b":[76,53,38],"m":"jmp","o":"b_2635","oa":9781},{"a":9810,"l":"overhead_item_16","c":"Activity 42 entry: places figure 2 on the person (facing $039C, X $03A9, X bit 8 $03AD, $03B1 = $03AF + 1, $03B5 = $03B3 - 1), colour $1394 = 1, $0392 = $FF, $0396 = 0, image $16 (one vertical line), visible ($03C6 = $83), then body pose $4E and advances. $2691 is the shared tail: set body pose A, advance.","t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":9813,"t":"code","b":[141,156,3],"m":"sta","o":"fig_mirror_prop_a","oa":924},{"a":9816,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":9819,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":9822,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":9825,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":9828,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":9831,"t":"code","b":[141,181,3],"m":"sta","o":"fig_depth_prop_a","oa":949},{"a":9834,"t":"code","b":[173,171,3],"m":"lda","o":"fig_x_hi","oa":939},{"a":9837,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":9840,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":9842,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":9845,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":9847,"t":"code","b":[141,146,3],"m":"sta","o":"unused_0392","oa":914},{"a":9850,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":9852,"t":"code","b":[141,150,3],"m":"sta","o":"fig_behind_bg","oa":918},{"a":9855,"t":"code","b":[206,181,3],"m":"dec","o":"fig_depth_prop_a","oa":949},{"a":9858,"t":"code","b":[238,177,3],"m":"inc","o":"fig_floor_y_prop_a","oa":945},{"a":9861,"t":"code","b":[169,22],"m":"lda","o":"#$16"},{"a":9863,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":9866,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":9868,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":9871,"t":"code","b":[169,78],"m":"lda","o":"#$4E"},{"a":9873,"l":"b_2691","t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731,"x":[9891,9906,9910,9914,9918,9930,9934,9939,9944,9949,9954,9962]},{"a":9876,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9879,"l":"overhead_item_17","c":"Activity 42 entry: figure 2 image $17 (three vertical lines), visible, body pose $4F, advance.","t":"code","b":[169,23],"m":"lda","o":"#$17"},{"a":9881,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":9884,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":9886,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":9889,"t":"code","b":[169,79],"m":"lda","o":"#$4F"},{"a":9891,"t":"code","b":[208,236],"m":"bne","o":"b_2691","oa":9873},{"a":9893,"l":"overhead_item_18","c":"Activity 42 entry: stores figure 2 image $18 (five vertical lines) in $038D and advances, but it sets the head's redraw bit (head_redraw, $03C8) rather than figure 2's (bit 1 of $03C6), so the new image may never be unpacked and shown.","t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":9895,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":9898,"t":"code","b":[32,4,37],"m":"jsr","o":"head_redraw","oa":9476},{"a":9901,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9904,"l":"pose_52_next","c":"Activity 36 entry: body pose $52, advance.","t":"code","b":[169,82],"m":"lda","o":"#$52"},{"a":9906,"t":"code","b":[208,221],"m":"bne","o":"b_2691","oa":9873},{"a":9908,"l":"pose_53_next","c":"Activity 36 entry: body pose $53, advance.","t":"code","b":[169,83],"m":"lda","o":"#$53"},{"a":9910,"t":"code","b":[208,217],"m":"bne","o":"b_2691","oa":9873},{"a":9912,"l":"pose_50_next","c":"Activity 37 entry: body pose $50, advance.","t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":9914,"t":"code","b":[208,213],"m":"bne","o":"b_2691","oa":9873},{"a":9916,"l":"pose_51_next","c":"Activity 37 entry: body pose $51, advance.","t":"code","b":[169,81],"m":"lda","o":"#$51"},{"a":9918,"t":"code","b":[208,209],"m":"bne","o":"b_2691","oa":9873},{"a":9920,"l":"flip_pose_50_next","c":"Activity 37 entry: flips the person's facing $039A (EOR 8), then body pose $50, advance.","t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":9923,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":9925,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":9928,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":9930,"t":"code","b":[208,197],"m":"bne","o":"b_2691","oa":9873},{"a":9932,"l":"pose_54_next","c":"Activity 38 entry: body pose $54, advance.","t":"code","b":[169,84],"m":"lda","o":"#$54"},{"a":9934,"t":"code","b":[76,145,38],"m":"jmp","o":"b_2691","oa":9873},{"a":9937,"l":"pose_55_next","c":"Activity 38 entry: body pose $55, advance.","t":"code","b":[169,85],"m":"lda","o":"#$55"},{"a":9939,"t":"code","b":[76,145,38],"m":"jmp","o":"b_2691","oa":9873},{"a":9942,"l":"pose_56_next","c":"Activity 39 entry: body pose $56, advance.","t":"code","b":[169,86],"m":"lda","o":"#$56"},{"a":9944,"t":"code","b":[76,145,38],"m":"jmp","o":"b_2691","oa":9873},{"a":9947,"l":"pose_57_next","c":"Activity 39 entry: body pose $57, advance.","t":"code","b":[169,87],"m":"lda","o":"#$57"},{"a":9949,"t":"code","b":[76,145,38],"m":"jmp","o":"b_2691","oa":9873},{"a":9952,"l":"pose_58_next","c":"Activity 40 entry: body pose $58, advance.","t":"code","b":[169,88],"m":"lda","o":"#$58"},{"a":9954,"t":"code","b":[76,145,38],"m":"jmp","o":"b_2691","oa":9873},{"a":9957,"l":"pose_59_sound_next","c":"Activity 40 entry: raises sound request $3561 (sound $12), body pose $59, advance.","t":"code","b":[169,89],"m":"lda","o":"#$59"},{"a":9959,"t":"code","b":[141,97,53],"m":"sta","o":"snd_req_1","oa":13665},{"a":9962,"t":"code","b":[76,145,38],"m":"jmp","o":"b_2691","oa":9873},{"a":9965,"l":"pose_loop_set","c":"Sub-machine entry (activities 36, 37, 38, 40): pose_loop_count $23B9 = 2 + (random AND 7), advance.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":9968,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":9970,"t":"code","b":[24],"m":"clc"},{"a":9971,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":9973,"t":"code","b":[141,185,35],"m":"sta","o":"pose_loop_count","oa":9145},{"a":9976,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9979,"l":"pose_loop_back_4","c":"Sub-machine entry: decrements pose_loop_count $23B9; while it is still 0 or more steps activity_subphase $68 back by 4 (to the first pose of the loop), otherwise advances.","t":"code","b":[206,185,35],"m":"dec","o":"pose_loop_count","oa":9145},{"a":9982,"t":"code","b":[16,3],"m":"bpl","o":"b_2703","oa":9987},{"a":9984,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":9987,"l":"b_2703","t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104,"x":[9982]},{"a":9989,"t":"code","b":[56],"m":"sec"},{"a":9990,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":9992,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":9994,"t":"code","b":[96],"m":"rts"},{"a":9995,"l":"pose_loop_back_8","c":"As pose_loop_back_4, stepping activity_subphase $68 back by 8 (activity 37's four-pose loop).","t":"code","b":[206,185,35],"m":"dec","o":"pose_loop_count","oa":9145},{"a":9998,"t":"code","b":[16,3],"m":"bpl","o":"b_2713","oa":10003},{"a":10000,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":10003,"l":"b_2713","t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104,"x":[9998]},{"a":10005,"t":"code","b":[56],"m":"sec"},{"a":10006,"t":"code","b":[233,8],"m":"sbc","o":"#$08"},{"a":10008,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":10010,"t":"code","b":[96],"m":"rts"},{"a":10011,"l":"abort_if_request","c":"When a request is pending ($8F86), drops the caller's return address and adds 2 to activity_phase $4C ($AB5D), skipping the two talk phases; otherwise returns.","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742,"x":[10024,10057]},{"a":10014,"t":"code","b":[208,1],"m":"bne","o":"b_2721","oa":10017},{"a":10016,"t":"code","b":[96],"m":"rts"},{"a":10017,"l":"b_2721","t":"code","b":[104],"m":"pla","x":[10014]},{"a":10018,"t":"code","b":[104],"m":"pla"},{"a":10019,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":10021,"t":"code","b":[76,93,171],"m":"jmp","o":"activity_skip_phases","oa":43869},{"a":10024,"l":"maybe_talk","c":"Activity phase used by activities 5, 6, 7 (twice), 8, 10 and 11 before talk_or_wait: after abort_if_request, clears activity_subphase $68 and draws a random byte: bit 7 set calls $2E73 and sets talk_skip $23BB = 1; bit 7 and bit 0 clear goes to talk_start_timer ($2749); otherwise calls the stub $2E71 and sets talk_skip = 1. So about one time in four he talks.","t":"code","b":[32,27,39],"m":"jsr","o":"abort_if_request","oa":10011},{"a":10027,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10029,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":10031,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":10034,"t":"code","b":[48,15],"m":"bmi","o":"b_2743","oa":10051},{"a":10036,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":10038,"t":"code","b":[240,17],"m":"beq","o":"talk_start_timer","oa":10057},{"a":10040,"t":"code","b":[32,113,46],"m":"jsr","o":"stub_clc","oa":11889},{"a":10043,"l":"j_273B","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[10054]},{"a":10045,"t":"code","b":[141,187,35],"m":"sta","o":"talk_skip","oa":9147},{"a":10048,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10051,"l":"b_2743","t":"code","b":[32,115,46],"m":"jsr","o":"act_timer_tick","oa":11891,"x":[10034]},{"a":10054,"t":"code","b":[76,59,39],"m":"jmp","o":"j_273B","oa":10043},{"a":10057,"l":"talk_start_timer","c":"Activity phase (entry 8 of the phone activity 25, and the talking branch of maybe_talk): after abort_if_request, clears talk_skip $23BB and activity_subphase $68, starts the act timer ($2E87: act_timer_running = 1, act_timer_count = $68) and advances.","t":"code","b":[32,27,39],"m":"jsr","o":"abort_if_request","oa":10011,"x":[10038]},{"a":10060,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10062,"t":"code","b":[141,187,35],"m":"sta","o":"talk_skip","oa":9147},{"a":10065,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":10067,"t":"code","b":[32,135,46],"m":"jsr","o":"act_timer_start","oa":11911},{"a":10070,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10073,"l":"talk_or_wait","c":"Activity phase after maybe_talk or talk_start_timer: with talk_skip bit 0 clear it runs the talking sub-machine act41_talk ($237E) for this pass. Otherwise it waits until act_timer_running $0432 is clear, or ends early when a request is pending (calling the stub $2E71 if the timer was running), then clears talk_skip and advances.","t":"code","b":[173,187,35],"m":"lda","o":"talk_skip","oa":9147},{"a":10076,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":10078,"t":"code","b":[208,3],"m":"bne","o":"b_2763","oa":10083},{"a":10080,"t":"code","b":[76,126,35],"m":"jmp","o":"act41_talk","oa":9086},{"a":10083,"l":"b_2763","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742,"x":[10078]},{"a":10086,"t":"code","b":[208,6],"m":"bne","o":"b_276E","oa":10094},{"a":10088,"t":"code","b":[173,50,4],"m":"lda","o":"act_timer_running","oa":1074},{"a":10091,"t":"code","b":[240,9],"m":"beq","o":"b_2776","oa":10102},{"a":10093,"t":"code","b":[96],"m":"rts"},{"a":10094,"l":"b_276E","t":"code","b":[173,50,4],"m":"lda","o":"act_timer_running","oa":1074,"x":[10086]},{"a":10097,"t":"code","b":[240,3],"m":"beq","o":"b_2776","oa":10102},{"a":10099,"t":"code","b":[32,113,46],"m":"jsr","o":"stub_clc","oa":11889},{"a":10102,"l":"b_2776","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[10091,10097]},{"a":10104,"t":"code","b":[141,187,35],"m":"sta","o":"talk_skip","oa":9147},{"a":10107,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10110,"l":"carry_last_facing","c":"Last person facing seen by carry_walk ($293D); $277E-$2782 are its cache for detecting movement, reset to $FF (invalid) by $29F6.","t":"byte","b":[255],"x":[10565,10621,10746]},{"a":10111,"l":"carry_last_pose","c":"Last body pose $038B seen by carry_walk.","t":"byte","b":[255],"x":[10610,10645]},{"a":10112,"l":"carry_last_x","c":"Last person X ($03A7) seen by carry_walk.","t":"byte","b":[255],"x":[10586,10627]},{"a":10113,"l":"carry_last_floor","c":"Last person floor coordinate ($03AF) seen by carry_walk.","t":"byte","b":[255],"x":[10594,10633]},{"a":10114,"l":"carry_last_depth","c":"Last person depth coordinate ($03B3) seen by carry_walk.","t":"byte","b":[255],"x":[10602,10639]},{"a":10115,"l":"carried_item","c":"Item the person carries as figure 2, index 0-7: 0 book (CTRL B), 1 record (CTRL R), 2 food (CTRL F, set at $302A; also $AA32), 3 (set at $1EA9), 4 (set at $AA36), 5 (set at $532A), 6 dog food (CTRL D, and $288D), 7 (only from the unreferenced $278E). Indexes item_images $2A4A, item_colours $2A5A, item_places $2A52 and item_phases $28D5.","t":"byte","b":[0],"x":[7849,10132,10383,10469,10480,10531,10540,12330,21292,43576]},{"a":10116,"l":"carry_x_offset","c":"Signed X offset of the carried item from the person, from carry_x_offsets $2A1A and negated when he faces 8; used for the X bit 8 of figure 2. The next byte, $2785, is an RTS that nothing reaches.","t":"byte","b":[0,96],"x":[10698,10721]},{"a":10118,"l":"act51_book_delivery","c":"Activity 51 (event $BEF8, raised by CTRL B): carried_item = 0 (book), then the delivery switch at $2797.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10120,"t":"code","b":[240,10],"m":"beq","o":"delivery_set_item","oa":10132},{"a":10122,"l":"act33_dogfood_delivery","c":"Activity 33 (event $BEF3, raised by CTRL D): carried_item = 6 (dog food), then the delivery switch.","t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":10124,"t":"code","b":[208,6],"m":"bne","o":"delivery_set_item","oa":10132},{"a":10126,"l":"item7_delivery_unused","c":"Entry that starts the delivery switch with carried_item = 7. No activity table entry, switch entry, JSR, JMP or address word pointing at $278E was found.","t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":10128,"t":"code","b":[208,2],"m":"bne","o":"delivery_set_item","oa":10132},{"a":10130,"l":"act50_record_delivery","c":"Activity 50 (event $BEF9, raised by CTRL R): carried_item = 1 (record), then the delivery switch.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":10132,"l":"delivery_set_item","c":"Shared tail of the four delivery entries: stores A in carried_item $2783 and falls into delivery_machine.","t":"code","b":[141,131,39],"m":"sta","o":"carried_item","oa":10115,"x":[10120,10124,10128]},{"a":10135,"l":"delivery_machine","c":"Delivery switch on activity_phase $4C (activity 26 enters here directly), 56 entries to $2809. Phases 0-10 are common: walk to the front door (place $2E, $AF7E), wait ($8FA7), object 0 ($943D, $94CC), walk 9 units beyond the door ($AF99), wait, pick_up_item $28F0, a turn ($AF58), walk_item_home $2923, carry_walk $293D, goto_item_phases $28E5. Then by item: 11-14 (record, items 1-5) drop_item, $AF58, add_record $2EE1, end; 15-21 (book) $9692, $94CC, drop_item, $AF58, $9403, $94CC, end; 22-40 (dog food) fill the bowl if empty and store the rest (see act34 handlers $2863-$28B3); 41-55 (item 7) dog_stay, walk to place $15, carry, drop, and objects via $9461-$9506.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":10138,"t":"gap","n":112},{"a":10250,"l":"act34_feed_dog","c":"Activity 34: the person feeds the dog. Switch on activity_phase $4C, 31 entries: walk to place $21 at the left end of the kitchen ($2895) and wait; turn to the back view ($5316); if the dog's bowl is not empty end ($286F); walk to the dog-food store picked by $284C/$284B ($289D), wait, open it ($28AA, $94CC), turn ($AF58), close it ($28B3, $94CC); take the dog food ($288D, $28F0), carry it to place $21 ($2895, $293D), put it down ($2A04), turn, fill the bowl ($2A63); toggle the store choice ($284D) and, when it is now 1, take the food again and carry it to the other store (phases 20-29); $8F0E.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":10253,"t":"gap","n":62},{"a":10315,"l":"dogfood_store_alt","c":"Low bit of the dog-food store index used by dogfood_store_index ($28C4): toggled by $284D after each filling in activity 34, set to 1 by $285B in the dog-food delivery, and to 0 only by the unreferenced $285F. Tested by $2883.","t":"byte","b":[0],"x":[10317,10320,10325,10371,10440]},{"a":10316,"l":"dogfood_store_mode","c":"High half of the dog-food store index (x2 in dogfood_store_index): 1 while a CTRL D delivery is being stored ($2863), 0 otherwise ($286B).","t":"byte","b":[0],"x":[10341,10436]},{"a":10317,"l":"dogfood_toggle_store","c":"Activity 34 phase 18: toggles dogfood_store_alt $284B between 0 and 1 and advances. $2855 is the shared tail of $285B and $285F: store A in $284B and advance.","t":"code","b":[238,75,40],"m":"inc","o":"dogfood_store_alt","oa":10315},{"a":10320,"t":"code","b":[173,75,40],"m":"lda","o":"dogfood_store_alt","oa":10315},{"a":10323,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":10325,"l":"b_2855","t":"code","b":[141,75,40],"m":"sta","o":"dogfood_store_alt","oa":10315,"x":[10333,10337]},{"a":10328,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10331,"l":"dogfood_store_alt_1","c":"Delivery phase 27 (dog food): dogfood_store_alt $284B = 1, advance.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":10333,"t":"code","b":[208,246],"m":"bne","o":"b_2855","oa":10325},{"a":10335,"l":"dogfood_store_alt_0","c":"Sets dogfood_store_alt $284B = 0 and advances. It is decoded only because it follows $285B; no table entry, jump or branch to $285F was found.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10337,"t":"code","b":[240,242],"m":"beq","o":"b_2855","oa":10325},{"a":10339,"l":"dogfood_mode_1","c":"Delivery phase 22, the first of the dog-food sequence: dogfood_store_mode $284C = 1, advance. $2865 is the shared tail with $286B.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":10341,"l":"b_2865","t":"code","b":[141,76,40],"m":"sta","o":"dogfood_store_mode","oa":10316,"x":[10349]},{"a":10344,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10347,"l":"dogfood_mode_0","c":"Delivery phases 28 and 39: dogfood_store_mode $284C = 0, advance.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10349,"t":"code","b":[240,246],"m":"beq","o":"b_2865","oa":10341},{"a":10351,"l":"feed_dog_if_empty","c":"Activity 34 phase 3: when dog_bowl_level $2A62 is not 0 there is nothing to do, so it sets activity_phase $4C to 30 (the final $8F0E); otherwise advances.","t":"code","b":[173,98,42],"m":"lda","o":"dog_bowl_level","oa":10850},{"a":10354,"t":"code","b":[240,30],"m":"beq","o":"b_2892","oa":10386},{"a":10356,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":10358,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":10360,"t":"code","b":[96],"m":"rts"},{"a":10361,"l":"dogfood_store_if_bowl_full","c":"Delivery phase 23 (dog food): when dog_bowl_level $2A62 is not 0 it jumps to phase 31 (carry the food straight to the store); otherwise advances to pour it into the bowl.","t":"code","b":[173,98,42],"m":"lda","o":"dog_bowl_level","oa":10850},{"a":10364,"t":"code","b":[240,20],"m":"beq","o":"b_2892","oa":10386},{"a":10366,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":10368,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":10370,"t":"code","b":[96],"m":"rts"},{"a":10371,"l":"feed_dog_second_trip","c":"Activity 34 phase 19: when dogfood_store_alt $284B is 0 after the toggle it jumps to phase 30 (end); otherwise advances to take the food to the other store.","t":"code","b":[173,75,40],"m":"lda","o":"dogfood_store_alt","oa":10315},{"a":10374,"t":"code","b":[208,10],"m":"bne","o":"b_2892","oa":10386},{"a":10376,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":10378,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":10380,"t":"code","b":[96],"m":"rts"},{"a":10381,"l":"carry_dog_food","c":"Activity 34 phases 11 and 20, delivery phase 29: carried_item $2783 = 6 (dog food), advance. $2892 is a shared JMP next_phase.","t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":10383,"t":"code","b":[141,131,39],"m":"sta","o":"carried_item","oa":10115},{"a":10386,"l":"b_2892","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[10354,10364,10374]},{"a":10389,"l":"walk_to_dog_bowl","c":"Activity 34 phases 0 and 13: walk_to_place with X = $21, a spot at the left end of the kitchen near where the dog's bowl is drawn (walk_to_place advances the phase). $28A3 is the shared JMP $8EF9.","t":"code","b":[162,33],"m":"ldx","o":"#$21"},{"a":10391,"t":"code","b":[208,10],"m":"bne","o":"b_28A3","oa":10403},{"a":10393,"l":"walk_to_place_15","c":"Delivery phase 42 (item 7 only): walk_to_place with X = $15, a spot on the middle floor.","t":"code","b":[162,21],"m":"ldx","o":"#$15"},{"a":10395,"t":"code","b":[208,6],"m":"bne","o":"b_28A3","oa":10403},{"a":10397,"l":"walk_to_dogfood_store","c":"Activity 34 phases 4 and 22, delivery phase 31: walk_to_place with the place from dogfood_store_places $28A6 at dogfood_store_index.","t":"code","b":[32,196,40],"m":"jsr","o":"dogfood_store_index","oa":10436},{"a":10400,"t":"code","b":[190,166,40],"m":"ldx","o":"dogfood_store_places,y","oa":10406},{"a":10403,"l":"b_28A3","t":"code","b":[76,249,142],"m":"jmp","o":"walk_to_location","oa":36601,"x":[10391,10395]},{"a":10406,"l":"dogfood_store_places","c":"Place numbers of the dog-food store by dogfood_store_index (2 x $284C + $284B): $25, $23, $25, $25; both are on the ground floor at the kitchen's left side, by the refrigerator.","t":"byte","b":[37,35,37,37],"x":[10400]},{"a":10410,"l":"open_dogfood_store","c":"Activity 34 phases 6 and 25, delivery phase 34: opens house object dogfood_store_open_objects $28BC[index] through $946F, which starts the object sequence $94CC at sub-phase 0 (its first half) or skips it when the object's state in $96CD is 2.","t":"code","b":[32,196,40],"m":"jsr","o":"dogfood_store_index","oa":10436},{"a":10413,"t":"code","b":[190,188,40],"m":"ldx","o":"dogfood_store_open_objects,y","oa":10428},{"a":10416,"t":"code","b":[76,111,148],"m":"jmp","o":"obj_open","oa":37999},{"a":10419,"l":"close_dogfood_store","c":"Activity 34 phases 9 and 28, delivery phase 37: closes house object dogfood_store_close_objects $28C0[index] through $9485, which starts the object sequence $94CC at sub-phase 7 (its second half) or skips it when the object's state in $96CD is 0.","t":"code","b":[32,196,40],"m":"jsr","o":"dogfood_store_index","oa":10436},{"a":10422,"t":"code","b":[190,192,40],"m":"ldx","o":"dogfood_store_close_objects,y","oa":10432},{"a":10425,"t":"code","b":[76,133,148],"m":"jmp","o":"obj_close","oa":38021},{"a":10428,"l":"dogfood_store_open_objects","c":"House object to open for each dogfood_store_index: $0C, $02, $0C, $0C.","t":"byte","b":[12,2,12,12],"x":[10413]},{"a":10432,"l":"dogfood_store_close_objects","c":"House object to close for each dogfood_store_index: $0C, $02, $0C, $0C (the same as the open list).","t":"byte","b":[12,2,12,12],"x":[10422]},{"a":10436,"l":"dogfood_store_index","c":"Returns Y = 2 x dogfood_store_mode $284C + dogfood_store_alt $284B, the index into $28A6, $28BC and $28C0.","t":"code","b":[173,76,40],"m":"lda","o":"dogfood_store_mode","oa":10316,"x":[10397,10410,10419]},{"a":10439,"t":"code","b":[10],"m":"asl","o":"a"},{"a":10440,"t":"code","b":[13,75,40],"m":"ora","o":"dogfood_store_alt","oa":10315},{"a":10443,"t":"code","b":[168],"m":"tay"},{"a":10444,"t":"code","b":[96],"m":"rts"},{"a":10445,"l":"dog_stay","c":"Delivery phases 41, 44, 49 and 54 (item 7): sets $1700, the dog's idle countdown (the $16FF,x countdown for figure 1, which picks a new destination at $1797 when it runs out), to $FF so the dog stays put, and advances.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":10447,"t":"code","b":[141,0,23],"m":"sta","o":"dog_wander_wait","oa":5888},{"a":10450,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10453,"l":"item_phases","c":"Phase of delivery_machine at which each carried item's own sequence starts, at even offsets (read with carried_item x 2; the odd bytes are 0 and unread): book $0F (15), items 1-5 $0B (11), dog food $16 (22), item 7 $29 (41).","t":"byte","b":[15,0,11,0,11,0,11,0],"x":[10474]},{"a":10461,"t":"byte","b":[11,0,11,0,22,0,41,0]},{"a":10469,"l":"goto_item_phases","c":"Delivery phase 10: sets activity_phase $4C to item_phases[2 x carried_item], branching to the item's own sequence in the delivery table.","t":"code","b":[173,131,39],"m":"lda","o":"carried_item","oa":10115},{"a":10472,"t":"code","b":[10],"m":"asl","o":"a"},{"a":10473,"t":"code","b":[170],"m":"tax"},{"a":10474,"t":"code","b":[189,213,40],"m":"lda","o":"item_phases,x","oa":10453},{"a":10477,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":10479,"t":"code","b":[96],"m":"rts"},{"a":10480,"l":"pick_up_item","c":"Gives the person carried_item $2783 to carry: figure 2 image $038D = item_images[item], colour $1394 = item_colours[item], hidden for now ($03C6 = 0), $0398 = 0, placed on the person ($5BD3 with X = 2), multicolour ($0394 = $FF); sets the carrying flag $0391 = $FF (carrying poses) and the person's redraw bit, then resets the carry cache and advances (via $29F6). Delivery phases 6 and 30, activity 34 phases 12 and 21; also JSR $1EAC, JMP $532F and $AA3B.","t":"code","b":[174,131,39],"m":"ldx","o":"carried_item","oa":10115,"x":[7852,21295,43579]},{"a":10483,"t":"code","b":[189,74,42],"m":"lda","o":"item_images,x","oa":10826},{"a":10486,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":10489,"t":"code","b":[189,90,42],"m":"lda","o":"item_colours,x","oa":10842},{"a":10492,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":10495,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10497,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":10500,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10502,"t":"code","b":[141,152,3],"m":"sta","o":"prop_behind_bg","oa":920},{"a":10505,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":10507,"t":"code","b":[32,211,91],"m":"jsr","o":"copy_position","oa":23507},{"a":10510,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":10512,"t":"code","b":[141,148,3],"m":"sta","o":"prop_multicolour","oa":916},{"a":10515,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":10517,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":10520,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":10523,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":10525,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":10528,"t":"code","b":[76,246,41],"m":"jmp","o":"j_29F6","oa":10742},{"a":10531,"l":"walk_item_home","c":"Delivery phase 8: walks to item_places[carried_item] with walk_to_place (which advances the phase); for the book and the record (items 0 and 1) moves the walk target $1DA3 a further 8 units to the right.","t":"code","b":[172,131,39],"m":"ldy","o":"carried_item","oa":10115},{"a":10534,"t":"code","b":[190,82,42],"m":"ldx","o":"item_places,y","oa":10834},{"a":10537,"t":"code","b":[32,249,142],"m":"jsr","o":"walk_to_location","oa":36601},{"a":10540,"t":"code","b":[172,131,39],"m":"ldy","o":"carried_item","oa":10115},{"a":10543,"t":"code","b":[192,2],"m":"cpy","o":"#$02"},{"a":10545,"t":"code","b":[176,9],"m":"bcs","o":"r_293C","oa":10556},{"a":10547,"t":"code","b":[173,163,29],"m":"lda","o":"location_x_custom","oa":7587},{"a":10550,"t":"code","b":[24],"m":"clc"},{"a":10551,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":10553,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":10556,"l":"r_293C","t":"code","b":[96],"m":"rts","x":[10545]},{"a":10557,"l":"carry_walk","c":"Keeps the carried item (figure 2) at the person's hand while he walks; an activity phase used by the delivery and dog-feeding tables and by activities 7, 44 and others (the tables at $1E6E, $1E85, $302D, $37EA, $52DB, $A96B, $A99B, $A9C1, $A9FB and $AEEA; JMP from $3818). When figure 2 is hidden or the facing changed it copies the facing and makes figure 2 visible; when facing, X, floor, depth and pose equal the cache $277E-$2782 nothing is recomputed. Otherwise: for poses $0D-$10 (back views) it hides the item; else, with index = pose (or pose AND 7 for $18 and above), it sets $03B1 = floor - carry_y_offsets, $03B5 = depth, and X = person X + carry_x_offsets (negated when facing 8), with the X bit 8 in $03AD. It stays in this phase while the walk goes on ($03BC not 0), then resets the cache and advances.","t":"code","b":[173,198,3],"m":"lda","o":"fig_flags_prop_a","oa":966,"x":[14360]},{"a":10560,"t":"code","b":[16,8],"m":"bpl","o":"b_294A","oa":10570},{"a":10562,"t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":10565,"t":"code","b":[205,126,39],"m":"cmp","o":"carry_last_facing","oa":10110},{"a":10568,"t":"code","b":[240,13],"m":"beq","o":"b_2957","oa":10583},{"a":10570,"l":"b_294A","t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922,"x":[10560]},{"a":10573,"t":"code","b":[141,156,3],"m":"sta","o":"fig_mirror_prop_a","oa":924},{"a":10576,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":10578,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":10581,"t":"code","b":[208,35],"m":"bne","o":"b_297A","oa":10618},{"a":10583,"l":"b_2957","t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935,"x":[10568]},{"a":10586,"t":"code","b":[205,128,39],"m":"cmp","o":"carry_last_x","oa":10112},{"a":10589,"t":"code","b":[208,27],"m":"bne","o":"b_297A","oa":10618},{"a":10591,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":10594,"t":"code","b":[205,129,39],"m":"cmp","o":"carry_last_floor","oa":10113},{"a":10597,"t":"code","b":[208,19],"m":"bne","o":"b_297A","oa":10618},{"a":10599,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":10602,"t":"code","b":[205,130,39],"m":"cmp","o":"carry_last_depth","oa":10114},{"a":10605,"t":"code","b":[208,11],"m":"bne","o":"b_297A","oa":10618},{"a":10607,"t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907},{"a":10610,"t":"code","b":[205,127,39],"m":"cmp","o":"carry_last_pose","oa":10111},{"a":10613,"t":"code","b":[208,3],"m":"bne","o":"b_297A","oa":10618},{"a":10615,"t":"code","b":[76,241,41],"m":"jmp","o":"j_29F1","oa":10737},{"a":10618,"l":"b_297A","t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922,"x":[10581,10589,10597,10605,10613]},{"a":10621,"t":"code","b":[141,126,39],"m":"sta","o":"carry_last_facing","oa":10110},{"a":10624,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":10627,"t":"code","b":[141,128,39],"m":"sta","o":"carry_last_x","oa":10112},{"a":10630,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":10633,"t":"code","b":[141,129,39],"m":"sta","o":"carry_last_floor","oa":10113},{"a":10636,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":10639,"t":"code","b":[141,130,39],"m":"sta","o":"carry_last_depth","oa":10114},{"a":10642,"t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907},{"a":10645,"t":"code","b":[141,127,39],"m":"sta","o":"carry_last_pose","oa":10111},{"a":10648,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":10650,"t":"code","b":[144,16],"m":"bcc","o":"b_29AC","oa":10668},{"a":10652,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":10654,"t":"code","b":[176,10],"m":"bcs","o":"b_29AA","oa":10666},{"a":10656,"t":"code","b":[201,17],"m":"cmp","o":"#$11"},{"a":10658,"t":"code","b":[176,8],"m":"bcs","o":"b_29AC","oa":10668},{"a":10660,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10662,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":10665,"t":"code","b":[96],"m":"rts"},{"a":10666,"l":"b_29AA","t":"code","b":[41,7],"m":"and","o":"#$07","x":[10654]},{"a":10668,"l":"b_29AC","t":"code","b":[170],"m":"tax","x":[10650,10658]},{"a":10669,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":10672,"t":"code","b":[56],"m":"sec"},{"a":10673,"t":"code","b":[253,50,42],"m":"sbc","o":"carry_y_offsets,x","oa":10802},{"a":10676,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":10679,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":10682,"t":"code","b":[141,181,3],"m":"sta","o":"fig_depth_prop_a","oa":949},{"a":10685,"t":"code","b":[189,26,42],"m":"lda","o":"carry_x_offsets,x","oa":10778},{"a":10688,"t":"code","b":[172,154,3],"m":"ldy","o":"fig_mirror","oa":922},{"a":10691,"t":"code","b":[240,5],"m":"beq","o":"b_29CA","oa":10698},{"a":10693,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":10695,"t":"code","b":[24],"m":"clc"},{"a":10696,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":10698,"l":"b_29CA","t":"code","b":[141,132,39],"m":"sta","o":"carry_x_offset","oa":10116,"x":[10691]},{"a":10701,"t":"code","b":[24],"m":"clc"},{"a":10702,"t":"code","b":[109,167,3],"m":"adc","o":"fig_x","oa":935},{"a":10705,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":10708,"t":"code","b":[106],"m":"ror","o":"a"},{"a":10709,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":10712,"t":"code","b":[173,171,3],"m":"lda","o":"fig_x_hi","oa":939},{"a":10715,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":10717,"t":"code","b":[106],"m":"ror","o":"a"},{"a":10718,"t":"code","b":[77,173,3],"m":"eor","o":"fig_x_hi_prop_a","oa":941},{"a":10721,"t":"code","b":[77,132,39],"m":"eor","o":"carry_x_offset","oa":10116},{"a":10724,"t":"code","b":[41,128],"m":"and","o":"#$80"},{"a":10726,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":10729,"t":"code","b":[173,198,3],"m":"lda","o":"fig_flags_prop_a","oa":966},{"a":10732,"t":"code","b":[9,129],"m":"ora","o":"#$81"},{"a":10734,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":10737,"l":"j_29F1","t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956,"x":[10615]},{"a":10740,"t":"code","b":[208,13],"m":"bne","o":"r_2A03","oa":10755},{"a":10742,"l":"j_29F6","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[10528]},{"a":10744,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":10746,"l":"b_29FA","t":"code","b":[157,126,39],"m":"sta","o":"carry_last_facing,x","oa":10110,"x":[10750]},{"a":10749,"t":"code","b":[202],"m":"dex"},{"a":10750,"t":"code","b":[16,250],"m":"bpl","o":"b_29FA","oa":10746},{"a":10752,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10755,"l":"r_2A03","t":"code","b":[96],"m":"rts","x":[10740]},{"a":10756,"l":"drop_item","c":"Puts the carried item away: clears the carrying flag $0391, hides figure 2 ($03C6 = 0), clears $03A5 (figure 2's X in 2-pixel units, as set by $5BD3), sets the person's redraw bit and advances.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10758,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":10761,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":10764,"t":"code","b":[141,165,3],"m":"sta","o":"fig_x_half_prop_a","oa":933},{"a":10767,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":10770,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":10772,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":10775,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10778,"l":"carry_x_offsets","c":"X offset in pixels of the carried item from the person, by carry pose index (24 entries): $11 for poses $00-$0C, 0 for $0D-$10 (item hidden), $0F for $11-$14, 7 for $15, 5 for $16-$17.","t":"byte","b":[17,17,17,17,17,17,17,17],"x":[10685]},{"a":10786,"t":"byte","b":[17,17,17,17,17,0,0,0]},{"a":10794,"t":"byte","b":[0,15,15,15,15,7,5,5]},{"a":10802,"l":"carry_y_offsets","c":"Height of the carried item above the person's floor coordinate, by carry pose index (24 entries): $0C $0B $0C $0D repeating for the walking poses $00-$0C, $50 for $0D-$10 (unused, item hidden), 9 for $11-$17.","t":"byte","b":[12,11,12,13,12,11,12,13],"x":[10673]},{"a":10810,"t":"byte","b":[12,11,12,13,12,80,80,80]},{"a":10818,"t":"byte","b":[80,9,9,9,9,9,9,9]},{"a":10826,"l":"item_images","c":"Figure 2 image for each carried item 0-7: $07, $0A, $14, $12, $13, $07, $08, $09.","t":"byte","b":[7,10,20,18,19,7,8,9],"x":[10483]},{"a":10834,"l":"item_places","c":"Destination place (walk_to_place index) for each carried item 0-7: $1B, $01, $22, $00, $00, $3C, $21, $15. $3C for item 5 lies beyond the 55 entries ($00-$36) of the place tables at $1D36.","t":"byte","b":[27,1,34,0,0,60,33,21],"x":[10534]},{"a":10842,"l":"item_colours","c":"Sprite colour of figure 2 ($1394, the colour source patched in at $0FA8) for each carried item 0-7: 4, 1, 7, 7, 3, 7, 9, 11.","t":"byte","b":[4,1,7,7,3,7,9,11],"x":[10489]},{"a":10850,"l":"dog_bowl_level","c":"Food in the dog's bowl, 0-6: fill_dog_bowl sets 6; the dog code decrements it at $1768 when the dog eats; $1821 draws the bowl (bitmap $7CCB-$7CCC, lines 3-4 of row 23, column 1). Read by $286F, $2879 and the dog code at $1763 and $17E9.","t":"byte","b":[0],"x":[5987,5992,6121,6177,10351,10361,10853]},{"a":10851,"l":"fill_dog_bowl","c":"Activity 34 phase 17, delivery phase 26: dog_bowl_level $2A62 = 6, redraws the bowl ($1821), advances.","t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":10853,"t":"code","b":[141,98,42],"m":"sta","o":"dog_bowl_level","oa":10850},{"a":10856,"t":"code","b":[32,33,24],"m":"jsr","o":"draw_bowl","oa":6177},{"a":10859,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":10862,"l":"house_events_call","c":"Called by activity_dispatch ($8DB9) on every pass before the activity runs: calls house_events ($2B54) and returns.","t":"code","b":[32,84,43],"m":"jsr","o":"house_events","oa":11092,"x":[36281]},{"a":10865,"t":"code","b":[96],"m":"rts"},{"a":10866,"l":"b_2A72","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[10886]},{"a":10868,"t":"code","b":[141,117,53],"m":"sta","o":"snd_req_alarm_off","oa":13685},{"a":10871,"t":"code","b":[208,20],"m":"bne","o":"b_2A8D","oa":10893},{"a":10873,"l":"alarm_ring_step","c":"One step of the alarm clock ringing: counts alarm_ring_timer $2B4F down; when it reaches 0 sets alarm_rang $2B50 = $FF and counts alarm_rings_left $2B4E down, raising sound request $3575 (stop the ring sound) at the last ring, else restarting the timer at $FF. On every 4th step it redraws lines 1-7 of bitmap cells row 13, columns 7-8 ($7079, $7081: the alarm clock on the bedroom nightstand) from alarm_clock_left/right, shifted by one line every 4 steps so that the clock shakes.","t":"code","b":[206,79,43],"m":"dec","o":"alarm_ring_timer","oa":11087,"x":[11246]},{"a":10876,"t":"code","b":[208,15],"m":"bne","o":"b_2A8D","oa":10893},{"a":10878,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":10880,"t":"code","b":[141,80,43],"m":"sta","o":"alarm_rang","oa":11088},{"a":10883,"t":"code","b":[206,78,43],"m":"dec","o":"alarm_rings_left","oa":11086},{"a":10886,"t":"code","b":[240,234],"m":"beq","o":"b_2A72","oa":10866},{"a":10888,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":10890,"t":"code","b":[141,79,43],"m":"sta","o":"alarm_ring_timer","oa":11087},{"a":10893,"l":"b_2A8D","t":"code","b":[173,79,43],"m":"lda","o":"alarm_ring_timer","oa":11087,"x":[10871,10876]},{"a":10896,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":10898,"t":"code","b":[208,28],"m":"bne","o":"r_2AB0","oa":10928},{"a":10900,"t":"code","b":[173,79,43],"m":"lda","o":"alarm_ring_timer","oa":11087},{"a":10903,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":10905,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":10906,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":10907,"t":"code","b":[170],"m":"tax"},{"a":10908,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":10910,"l":"b_2A9E","t":"code","b":[189,177,42],"m":"lda","o":"alarm_clock_left,x","oa":10929,"x":[10926]},{"a":10913,"t":"code","b":[153,121,112],"m":"sta","o":"alarm_bell_l,y","oa":28793},{"a":10916,"t":"code","b":[189,185,42],"m":"lda","o":"alarm_clock_right,x","oa":10937},{"a":10919,"t":"code","b":[153,129,112],"m":"sta","o":"alarm_bell_r,y","oa":28801},{"a":10922,"t":"code","b":[232],"m":"inx"},{"a":10923,"t":"code","b":[200],"m":"iny"},{"a":10924,"t":"code","b":[192,7],"m":"cpy","o":"#$07"},{"a":10926,"t":"code","b":[208,238],"m":"bne","o":"b_2A9E","oa":10910},{"a":10928,"l":"r_2AB0","t":"code","b":[96],"m":"rts","x":[10898,11014]},{"a":10929,"l":"alarm_clock_left","c":"Left cell of the alarm clock picture, 8 bytes; alarm_ring_step copies seven of them starting at offset 0 or 1.","t":"byte","b":[0,21,85,81,85,21,64,0],"x":[10910]},{"a":10937,"l":"alarm_clock_right","c":"Right cell of the alarm clock picture, 8 bytes, copied like alarm_clock_left.","t":"byte","b":[0,0,64,64,64,0,64,0],"x":[10916]},{"a":10945,"l":"phone_handset_taken","c":"Part of phone_ring_step, reached when figure 2 shows the handset (image 4 or 5) in the person's hand: clears lines 4-6 of bitmap cells row 21, columns 24-25 ($7B04-$7B06, $7B0C-$7B0E), so the telephone is drawn without its handset, and ends the ringing (phone_ringing $2B4C = 0).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[10981,10985]},{"a":10947,"t":"code","b":[141,4,123],"m":"sta","o":"phone_handset_l4","oa":31492},{"a":10950,"t":"code","b":[141,5,123],"m":"sta","o":"phone_handset_l5","oa":31493},{"a":10953,"t":"code","b":[141,6,123],"m":"sta","o":"phone_handset_l6","oa":31494},{"a":10956,"t":"code","b":[141,12,123],"m":"sta","o":"phone_handset_r4","oa":31500},{"a":10959,"t":"code","b":[141,13,123],"m":"sta","o":"phone_handset_r5","oa":31501},{"a":10962,"t":"code","b":[141,14,123],"m":"sta","o":"phone_handset_r6","oa":31502},{"a":10965,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":10967,"t":"code","b":[141,76,43],"m":"sta","o":"phone_ringing","oa":11084},{"a":10970,"t":"code","b":[96],"m":"rts"},{"a":10971,"l":"phone_ring_step","c":"One step of the telephone ringing, called on every pass while phone_ringing $2B4C is set. If the handset is in the person's hand (figure 2 visible with image 4 or 5) it erases the handset from the phone (lines 4-6 of bitmap cells row 21, columns 24-25, $7B04-$7B0E) and stops the ringing ($2B4C = 0). Otherwise it counts phone_ring_timer $2B4D down: at the wrap to $FF it raises sound request $3566 (sound $0D, the ring); from $FF to $80 the handset alternates every 4 steps between its rest drawing and one line higher; from $7F to 0 it rests and the sound request is cleared.","t":"code","b":[173,198,3],"m":"lda","o":"fig_flags_prop_a","oa":966,"x":[11296]},{"a":10974,"t":"code","b":[16,11],"m":"bpl","o":"b_2AEB","oa":10987},{"a":10976,"t":"code","b":[173,141,3],"m":"lda","o":"fig_frame_prop_a","oa":909},{"a":10979,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":10981,"t":"code","b":[240,218],"m":"beq","o":"phone_handset_taken","oa":10945},{"a":10983,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":10985,"t":"code","b":[240,214],"m":"beq","o":"phone_handset_taken","oa":10945},{"a":10987,"l":"b_2AEB","t":"code","b":[206,77,43],"m":"dec","o":"phone_ring_timer","oa":11085,"x":[10974]},{"a":10990,"t":"code","b":[173,77,43],"m":"lda","o":"phone_ring_timer","oa":11085},{"a":10993,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":10995,"t":"code","b":[208,3],"m":"bne","o":"b_2AF8","oa":11000},{"a":10997,"t":"code","b":[141,102,53],"m":"sta","o":"snd_req_phone_ring","oa":13670},{"a":11000,"l":"b_2AF8","t":"code","b":[201,128],"m":"cmp","o":"#$80","x":[10995]},{"a":11002,"t":"code","b":[176,8],"m":"bcs","o":"b_2B04","oa":11012},{"a":11004,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11006,"t":"code","b":[141,102,53],"m":"sta","o":"snd_req_phone_ring","oa":13670},{"a":11009,"t":"code","b":[76,42,43],"m":"jmp","o":"phone_handset_rest","oa":11050},{"a":11012,"l":"b_2B04","t":"code","b":[41,3],"m":"and","o":"#$03","x":[11002]},{"a":11014,"t":"code","b":[208,168],"m":"bne","o":"r_2AB0","oa":10928},{"a":11016,"t":"code","b":[173,77,43],"m":"lda","o":"phone_ring_timer","oa":11085},{"a":11019,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":11021,"t":"code","b":[240,27],"m":"beq","o":"phone_handset_rest","oa":11050},{"a":11023,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":11025,"t":"code","b":[141,4,123],"m":"sta","o":"phone_handset_l4","oa":31492},{"a":11028,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":11030,"t":"code","b":[141,13,123],"m":"sta","o":"phone_handset_r5","oa":31501},{"a":11033,"t":"code","b":[141,5,123],"m":"sta","o":"phone_handset_l5","oa":31493},{"a":11036,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11038,"t":"code","b":[141,6,123],"m":"sta","o":"phone_handset_l6","oa":31494},{"a":11041,"t":"code","b":[141,14,123],"m":"sta","o":"phone_handset_r6","oa":31502},{"a":11044,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":11046,"t":"code","b":[141,12,123],"m":"sta","o":"phone_handset_r4","oa":31500},{"a":11049,"t":"code","b":[96],"m":"rts"},{"a":11050,"l":"phone_handset_rest","c":"Draws the telephone's handset in its rest position (lines 4-6 of cells row 21, columns 24-25).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[11009,11021]},{"a":11052,"t":"code","b":[141,4,123],"m":"sta","o":"phone_handset_l4","oa":31492},{"a":11055,"t":"code","b":[141,12,123],"m":"sta","o":"phone_handset_r4","oa":31500},{"a":11058,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":11060,"t":"code","b":[141,5,123],"m":"sta","o":"phone_handset_l5","oa":31493},{"a":11063,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":11065,"t":"code","b":[141,13,123],"m":"sta","o":"phone_handset_r5","oa":31501},{"a":11068,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":11070,"t":"code","b":[141,6,123],"m":"sta","o":"phone_handset_l6","oa":31494},{"a":11073,"t":"code","b":[141,14,123],"m":"sta","o":"phone_handset_r6","oa":31502},{"a":11076,"t":"code","b":[96],"m":"rts"},{"a":11077,"l":"turntable_on","c":"Non-zero while a record plays on the stereo: set to $FF by $925B (with the music start $800F) and cleared by $9279; while set, house_events steps the turntable picture ($2DBB). Read also at $9242, $924D, $E1A0 and $E3E4.","t":"byte","b":[0],"x":[11473,37442,37453,37467,37497,57760,58340]},{"a":11078,"l":"pet_phase","c":"Phase of the petting animation run by $9762 (house objects $0E and $0F through $96ED): 0 idle, then 3, 2, 1 as pet_count runs out. CTRL P at the easy chair starts it at 3, adds $20 in phase 2, and restarts phase 3 from phase 1.","t":"byte","b":[0],"x":[11324,11375,11383,11465,38764,38789,38806,38832,38881]},{"a":11079,"l":"pet_count","c":"Countdown of the current petting phase, decremented by $9762 each pass; loaded with $18 or $20.","t":"byte","b":[0],"x":[11337,11343,11365,11370,11388,38754,38757,38771,38778,38801,38825,38837,38843,38854,38874,38886]},{"a":11080,"l":"fire_unit_timer","c":"Countdown of the fire's current fuel unit, decremented once every 64 passes (main_passes $09DB AND $3F = 0) and reloaded with a random $80-$FF; set to 0 or $80 by $AF90 when fuel is added.","t":"byte","b":[0],"x":[11441,11451,11459,44944]},{"a":11081,"l":"fire_units","c":"Fuel units of the fire in the fireplace: incremented by $AF93 in activity 7 (the lead saw \"please light a fire\" start it). While non-zero house_events flickers the fire ($9739, house object 7) and uses a unit each time fire_unit_timer runs out; at 0 the fire is set to its final frame ($9757).","t":"byte","b":[0],"x":[11426,11454,44947]},{"a":11082,"l":"tv_on","c":"TV on (1) or off (0): set to 1 at $A945 (which also raises the TV sound request $356E) and to 0 at $A952 (which raises $356F and sets the screen colour through $2D6B). While on, house_events calls tv_flicker. 0 in the unpacked image, 1 in play-02. Read also at $909A and $90A2.","t":"byte","b":[1],"x":[11418,37018,37026,43335,43346]},{"a":11083,"l":"lamp_colour","c":"Colour-matrix value for the living-room floor lamp's shade (cells $5F16-$5F17, row 19, columns 30-31): $75 (set by $A932) or $11 (set by $A92E); activity_dispatch writes it to the screen through $A93A whenever it differs from $A944.","t":"byte","b":[117],"x":[36270,37387,37402,43316]},{"a":11084,"l":"phone_ringing","c":"Non-zero while the telephone rings: set by CTRL C in house_events and by the timed call at $0B36-$0B39 (phone_countdown $09EA), each time together with event $BEF5; cleared by phone_ring_step when the handset is picked up.","t":"byte","b":[0],"x":[2873,10967,11278,11286]},{"a":11085,"l":"phone_ring_timer","c":"Ring cycle counter of phone_ring_step, counted down on every pass: from $FF to $80 the handset jiggles, from $7F to 0 it is still; CTRL C clears it so a call starts with the ring sound.","t":"byte","b":[0],"x":[10987,10990,11016,11283]},{"a":11086,"l":"alarm_rings_left","c":"Rings left for the alarm clock: set to 1 by CTRL A and by the automatic alarm at $0BDB; alarm_ring_step counts it down, one ring per 255 steps.","t":"byte","b":[0],"x":[3035,10883,11217,11222,11233]},{"a":11087,"l":"alarm_ring_timer","c":"Steps left in the current ring of the alarm clock, from $FF; the clock picture shifts every 4 steps.","t":"byte","b":[0],"x":[10873,10890,10893,10900,11227]},{"a":11088,"l":"alarm_rang","c":"Set to $FF by alarm_ring_step when a ring ends and to 1 by the automatic alarm ($0BDE); the automatic alarm at $0BD1 fires only while it is 0; cleared at $E2D7.","t":"byte","b":[0],"x":[3025,3038,3041,10880,58071]},{"a":11089,"l":"water_level","c":"Water in the tank, 0-11 lines: CTRL W adds one up to 11, $A91F takes one away, each time with sound request $3560; draw_water_tank shows it. 5 in the unpacked image. Read also at $33A1, $389E, $55D5 and $E1CF.","t":"byte","b":[5],"x":[11399,11412,11533,13217,14494,21973,43295,43303,57807]},{"a":11090,"l":"stove_burning","c":"Stove burner on (1) or off (0): set at $1EFB (handler $1EF6, entry 8 of activity 48's table at $1E6E) and cleared at $1F08 (handler $1F01); while on, house_events flickers the burner.","t":"byte","b":[0],"x":[7931,7944,11481]},{"a":11091,"l":"stove_flame_index","c":"Last index used in stove_flame_colours $2D08, so that the same entry is never picked twice running.","t":"byte","b":[0],"x":[11512,11524]},{"a":11092,"l":"house_events","c":"Run on every pass through $2A6E. Reads key_new $30 for CTRL keys and clears each one it takes: CTRL F ($06) is dropped when the four food slots are full ($30B4 = $0F), else raises sound request $356B (sound $14) and event $BEF6 (activity 44, food); CTRL D ($04) $356B and event $BEF3 (activity 33, dog food); CTRL B ($02) $356B and $BEF8 (activity 51, book); CTRL R ($12) only while text_band_bottom $0711 is 0 (else the key stays in $30), $356B and $BEF9 (activity 50, record); CTRL A ($01) is ignored while record_playing $801E is set, else copies $3563 to $3567 and, unless alarm_rings_left is already set, sets it to 1, alarm_ring_timer = $FF, alarm_pressed $0BB1 = $FF; CTRL C ($03), unless figure 2 shows the handset (image 4 or 5), raises $BEF5 (activity 25, phone) and starts the ringing; CTRL P ($10) with the person not walking ($03BC = 0) and at place $2B (the easy chair) sets mood $035F = 0 and starts or extends pet_phase, otherwise raises $BEF7 (activity 6); CTRL W ($17) adds one to water_level up to 11 with sound $3560 and redraws the tank. Event flags are set to $FF only when 0. Then it animates the alarm clock, phone, TV, fire, petting, turntable and stove burner.","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[10862]},{"a":11094,"t":"code","b":[73,6],"m":"eor","o":"#$06"},{"a":11096,"t":"code","b":[208,24],"m":"bne","o":"b_2B72","oa":11122},{"a":11098,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":11100,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":11103,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":11105,"t":"code","b":[240,15],"m":"beq","o":"b_2B72","oa":11122},{"a":11107,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11109,"t":"code","b":[141,107,53],"m":"sta","o":"snd_req_ctrl_chime","oa":13675},{"a":11112,"t":"code","b":[173,246,190],"m":"lda","o":"request_flag_food","oa":48886},{"a":11115,"t":"code","b":[208,5],"m":"bne","o":"b_2B72","oa":11122},{"a":11117,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11119,"t":"code","b":[141,246,190],"m":"sta","o":"request_flag_food","oa":48886},{"a":11122,"l":"b_2B72","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[11096,11105,11115]},{"a":11124,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":11126,"t":"code","b":[208,17],"m":"bne","o":"b_2B89","oa":11145},{"a":11128,"t":"code","b":[141,107,53],"m":"sta","o":"snd_req_ctrl_chime","oa":13675},{"a":11131,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11133,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":11135,"t":"code","b":[173,243,190],"m":"lda","o":"request_flags","oa":48883},{"a":11138,"t":"code","b":[208,5],"m":"bne","o":"b_2B89","oa":11145},{"a":11140,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11142,"t":"code","b":[141,243,190],"m":"sta","o":"request_flags","oa":48883},{"a":11145,"l":"b_2B89","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[11126,11138]},{"a":11147,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":11149,"t":"code","b":[208,17],"m":"bne","o":"b_2BA0","oa":11168},{"a":11151,"t":"code","b":[141,107,53],"m":"sta","o":"snd_req_ctrl_chime","oa":13675},{"a":11154,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11156,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":11158,"t":"code","b":[173,248,190],"m":"lda","o":"request_flag_book","oa":48888},{"a":11161,"t":"code","b":[208,5],"m":"bne","o":"b_2BA0","oa":11168},{"a":11163,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11165,"t":"code","b":[141,248,190],"m":"sta","o":"request_flag_book","oa":48888},{"a":11168,"l":"b_2BA0","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[11149,11161]},{"a":11170,"t":"code","b":[201,18],"m":"cmp","o":"#$12"},{"a":11172,"t":"code","b":[208,24],"m":"bne","o":"b_2BBE","oa":11198},{"a":11174,"t":"code","b":[173,17,7],"m":"lda","o":"text_band_bottom","oa":1809},{"a":11177,"t":"code","b":[208,19],"m":"bne","o":"b_2BBE","oa":11198},{"a":11179,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11181,"t":"code","b":[141,107,53],"m":"sta","o":"snd_req_ctrl_chime","oa":13675},{"a":11184,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11186,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":11188,"t":"code","b":[173,249,190],"m":"lda","o":"request_flag_record","oa":48889},{"a":11191,"t":"code","b":[208,5],"m":"bne","o":"b_2BBE","oa":11198},{"a":11193,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11195,"t":"code","b":[141,249,190],"m":"sta","o":"request_flag_record","oa":48889},{"a":11198,"l":"b_2BBE","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[11172,11177,11191]},{"a":11200,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":11202,"t":"code","b":[208,29],"m":"bne","o":"b_2BE1","oa":11233},{"a":11204,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":11206,"t":"code","b":[173,30,128],"m":"lda","o":"music_playing","oa":32798},{"a":11209,"t":"code","b":[208,22],"m":"bne","o":"b_2BE1","oa":11233},{"a":11211,"t":"code","b":[173,99,53],"m":"lda","o":"snd_req_piece","oa":13667},{"a":11214,"t":"code","b":[141,103,53],"m":"sta","o":"snd_req_piece_end","oa":13671},{"a":11217,"t":"code","b":[174,78,43],"m":"ldx","o":"alarm_rings_left","oa":11086},{"a":11220,"t":"code","b":[208,11],"m":"bne","o":"b_2BE1","oa":11233},{"a":11222,"t":"code","b":[238,78,43],"m":"inc","o":"alarm_rings_left","oa":11086},{"a":11225,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11227,"t":"code","b":[141,79,43],"m":"sta","o":"alarm_ring_timer","oa":11087},{"a":11230,"t":"code","b":[141,177,11],"m":"sta","o":"alarm_pressed","oa":2993},{"a":11233,"l":"b_2BE1","t":"code","b":[174,78,43],"m":"ldx","o":"alarm_rings_left","oa":11086,"x":[11202,11209,11220]},{"a":11236,"t":"code","b":[240,11],"m":"beq","o":"b_2BF1","oa":11249},{"a":11238,"t":"code","b":[173,99,53],"m":"lda","o":"snd_req_piece","oa":13667},{"a":11241,"t":"code","b":[208,6],"m":"bne","o":"b_2BF1","oa":11249},{"a":11243,"t":"code","b":[142,116,53],"m":"stx","o":"snd_req_alarm","oa":13684},{"a":11246,"t":"code","b":[32,121,42],"m":"jsr","o":"alarm_ring_step","oa":10873},{"a":11249,"l":"b_2BF1","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[11236,11241]},{"a":11251,"t":"code","b":[73,3],"m":"eor","o":"#$03"},{"a":11253,"t":"code","b":[208,31],"m":"bne","o":"b_2C16","oa":11286},{"a":11255,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":11257,"t":"code","b":[173,245,190],"m":"lda","o":"request_flag_phone","oa":48885},{"a":11260,"t":"code","b":[208,24],"m":"bne","o":"b_2C16","oa":11286},{"a":11262,"t":"code","b":[173,141,3],"m":"lda","o":"fig_frame_prop_a","oa":909},{"a":11265,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":11267,"t":"code","b":[240,17],"m":"beq","o":"b_2C16","oa":11286},{"a":11269,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":11271,"t":"code","b":[240,13],"m":"beq","o":"b_2C16","oa":11286},{"a":11273,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11275,"t":"code","b":[141,245,190],"m":"sta","o":"request_flag_phone","oa":48885},{"a":11278,"t":"code","b":[141,76,43],"m":"sta","o":"phone_ringing","oa":11084},{"a":11281,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11283,"t":"code","b":[141,77,43],"m":"sta","o":"phone_ring_timer","oa":11085},{"a":11286,"l":"b_2C16","t":"code","b":[173,76,43],"m":"lda","o":"phone_ringing","oa":11084,"x":[11253,11260,11267,11271]},{"a":11289,"t":"code","b":[208,5],"m":"bne","o":"b_2C20","oa":11296},{"a":11291,"t":"code","b":[141,102,53],"m":"sta","o":"snd_req_phone_ring","oa":13670},{"a":11294,"t":"code","b":[240,3],"m":"beq","o":"b_2C23","oa":11299},{"a":11296,"l":"b_2C20","t":"code","b":[32,219,42],"m":"jsr","o":"phone_ring_step","oa":10971,"x":[11289]},{"a":11299,"l":"b_2C23","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[11294]},{"a":11301,"t":"code","b":[73,16],"m":"eor","o":"#$10"},{"a":11303,"t":"code","b":[208,86],"m":"bne","o":"b_2C7F","oa":11391},{"a":11305,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":11307,"t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956},{"a":11310,"t":"code","b":[208,37],"m":"bne","o":"b_2C55","oa":11349},{"a":11312,"t":"code","b":[162,43],"m":"ldx","o":"#$2B"},{"a":11314,"t":"code","b":[32,228,45],"m":"jsr","o":"at_place","oa":11748},{"a":11317,"t":"code","b":[208,30],"m":"bne","o":"b_2C55","oa":11349},{"a":11319,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11321,"t":"code","b":[141,95,3],"m":"sta","o":"mood","oa":863},{"a":11324,"t":"code","b":[173,70,43],"m":"lda","o":"pet_phase","oa":11078},{"a":11327,"t":"code","b":[240,52],"m":"beq","o":"b_2C75","oa":11381},{"a":11329,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":11331,"t":"code","b":[240,58],"m":"beq","o":"b_2C7F","oa":11391},{"a":11333,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":11335,"t":"code","b":[208,25],"m":"bne","o":"b_2C62","oa":11362},{"a":11337,"t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079},{"a":11340,"t":"code","b":[24],"m":"clc"},{"a":11341,"t":"code","b":[105,32],"m":"adc","o":"#$20"},{"a":11343,"t":"code","b":[141,71,43],"m":"sta","o":"pet_count","oa":11079},{"a":11346,"t":"code","b":[76,127,44],"m":"jmp","o":"b_2C7F","oa":11391},{"a":11349,"l":"b_2C55","t":"code","b":[173,247,190],"m":"lda","o":"request_flag_chair","oa":48887,"x":[11310,11317]},{"a":11352,"t":"code","b":[208,37],"m":"bne","o":"b_2C7F","oa":11391},{"a":11354,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11356,"t":"code","b":[141,247,190],"m":"sta","o":"request_flag_chair","oa":48887},{"a":11359,"t":"code","b":[76,127,44],"m":"jmp","o":"b_2C7F","oa":11391},{"a":11362,"l":"b_2C62","t":"code","b":[169,24],"m":"lda","o":"#$18","x":[11335]},{"a":11364,"t":"code","b":[56],"m":"sec"},{"a":11365,"t":"code","b":[237,71,43],"m":"sbc","o":"pet_count","oa":11079},{"a":11368,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":11370,"t":"code","b":[141,71,43],"m":"sta","o":"pet_count","oa":11079},{"a":11373,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":11375,"t":"code","b":[141,70,43],"m":"sta","o":"pet_phase","oa":11078},{"a":11378,"t":"code","b":[76,127,44],"m":"jmp","o":"b_2C7F","oa":11391},{"a":11381,"l":"b_2C75","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[11327]},{"a":11383,"t":"code","b":[141,70,43],"m":"sta","o":"pet_phase","oa":11078},{"a":11386,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":11388,"t":"code","b":[141,71,43],"m":"sta","o":"pet_count","oa":11079},{"a":11391,"l":"b_2C7F","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[11303,11331,11346,11352,11359,11378]},{"a":11393,"t":"code","b":[73,23],"m":"eor","o":"#$17"},{"a":11395,"t":"code","b":[208,21],"m":"bne","o":"b_2C9A","oa":11418},{"a":11397,"t":"code","b":[133,48],"m":"sta","o":"key_new","oa":48},{"a":11399,"t":"code","b":[174,81,43],"m":"ldx","o":"water_level","oa":11089},{"a":11402,"t":"code","b":[224,11],"m":"cpx","o":"#$0B"},{"a":11404,"t":"code","b":[176,12],"m":"bcs","o":"b_2C9A","oa":11418},{"a":11406,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":11408,"t":"code","b":[141,96,53],"m":"sta","o":"snd_req_water","oa":13664},{"a":11411,"t":"code","b":[232],"m":"inx"},{"a":11412,"t":"code","b":[142,81,43],"m":"stx","o":"water_level","oa":11089},{"a":11415,"t":"code","b":[32,13,45],"m":"jsr","o":"draw_water_tank","oa":11533},{"a":11418,"l":"b_2C9A","t":"code","b":[173,74,43],"m":"lda","o":"tv_on","oa":11082,"x":[11395,11404]},{"a":11421,"t":"code","b":[240,3],"m":"beq","o":"b_2CA2","oa":11426},{"a":11423,"t":"code","b":[32,89,45],"m":"jsr","o":"tv_flicker","oa":11609},{"a":11426,"l":"b_2CA2","t":"code","b":[173,73,43],"m":"lda","o":"fire_units","oa":11081,"x":[11421]},{"a":11429,"t":"code","b":[240,34],"m":"beq","o":"b_2CC9","oa":11465},{"a":11431,"t":"code","b":[32,57,151],"m":"jsr","o":"fire_flicker","oa":38713},{"a":11434,"t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523},{"a":11437,"t":"code","b":[41,63],"m":"and","o":"#$3F"},{"a":11439,"t":"code","b":[208,24],"m":"bne","o":"b_2CC9","oa":11465},{"a":11441,"t":"code","b":[206,72,43],"m":"dec","o":"fire_unit_timer","oa":11080},{"a":11444,"t":"code","b":[208,19],"m":"bne","o":"b_2CC9","oa":11465},{"a":11446,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":11449,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":11451,"t":"code","b":[141,72,43],"m":"sta","o":"fire_unit_timer","oa":11080},{"a":11454,"t":"code","b":[206,73,43],"m":"dec","o":"fire_units","oa":11081},{"a":11457,"t":"code","b":[208,6],"m":"bne","o":"b_2CC9","oa":11465},{"a":11459,"t":"code","b":[141,72,43],"m":"sta","o":"fire_unit_timer","oa":11080},{"a":11462,"t":"code","b":[32,87,151],"m":"jsr","o":"fire_out","oa":38743},{"a":11465,"l":"b_2CC9","t":"code","b":[173,70,43],"m":"lda","o":"pet_phase","oa":11078,"x":[11429,11439,11444,11457]},{"a":11468,"t":"code","b":[240,3],"m":"beq","o":"b_2CD1","oa":11473},{"a":11470,"t":"code","b":[32,98,151],"m":"jsr","o":"petting_anim","oa":38754},{"a":11473,"l":"b_2CD1","t":"code","b":[173,69,43],"m":"lda","o":"turntable_on","oa":11077,"x":[11468]},{"a":11476,"t":"code","b":[240,3],"m":"beq","o":"b_2CD9","oa":11481},{"a":11478,"t":"code","b":[32,187,45],"m":"jsr","o":"turntable_step","oa":11707},{"a":11481,"l":"b_2CD9","t":"code","b":[173,82,43],"m":"lda","o":"stove_burning","oa":11090,"x":[11476]},{"a":11484,"t":"code","b":[208,8],"m":"bne","o":"b_2CE6","oa":11494},{"a":11486,"t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":11488,"t":"code","b":[141,78,122],"m":"sta","o":"stove_burner","oa":31310},{"a":11491,"t":"code","b":[76,7,45],"m":"jmp","o":"r_2D07","oa":11527},{"a":11494,"l":"b_2CE6","t":"code","b":[169,234],"m":"lda","o":"#$EA","x":[11484]},{"a":11496,"t":"code","b":[141,78,122],"m":"sta","o":"stove_burner","oa":31310},{"a":11499,"t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523},{"a":11502,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":11504,"t":"code","b":[240,21],"m":"beq","o":"r_2D07","oa":11527},{"a":11506,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":11509,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":11511,"t":"code","b":[170],"m":"tax"},{"a":11512,"t":"code","b":[236,83,43],"m":"cpx","o":"stove_flame_index","oa":11091},{"a":11515,"t":"code","b":[208,1],"m":"bne","o":"b_2CFE","oa":11518},{"a":11517,"t":"code","b":[232],"m":"inx"},{"a":11518,"l":"b_2CFE","t":"code","b":[189,8,45],"m":"lda","o":"stove_flame_colours,x","oa":11528,"x":[11515]},{"a":11521,"t":"code","b":[141,73,219],"m":"sta","o":"$DB49"},{"a":11524,"t":"code","b":[142,83,43],"m":"stx","o":"stove_flame_index","oa":11091},{"a":11527,"l":"r_2D07","t":"code","b":[96],"m":"rts","x":[11491,11504]},{"a":11528,"l":"stove_flame_colours","c":"Colour-RAM values for the stove burner cell ($DB49, row 21, column 1): 7, 6, 8, 6, 1; one is picked at random every other pass while stove_burning is set.","t":"byte","b":[7,6,8,6,1],"x":[11518]},{"a":11533,"l":"draw_water_tank","c":"Draws the water tank at water_level $2B51 into 12 bitmap lines: lines 4-7 of cells row 20, columns 18-19 ($7994, $799C) and lines 0-7 of row 21, columns 18-19 ($7AD0, $7AD8). The bottom water_level lines get pattern $AA and the rest $55, each ANDed with the outline masks $2D41 and $2D4D. Called after CTRL W and by $A92A.","t":"code","b":[174,81,43],"m":"ldx","o":"water_level","oa":11089,"x":[11415,43306]},{"a":11536,"t":"code","b":[134,75],"m":"stx","o":"sort_temp","oa":75},{"a":11538,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":11540,"l":"b_2D14","t":"code","b":[169,170],"m":"lda","o":"#$AA","x":[11582]},{"a":11542,"t":"code","b":[198,75],"m":"dec","o":"sort_temp","oa":75},{"a":11544,"t":"code","b":[16,1],"m":"bpl","o":"b_2D1B","oa":11547},{"a":11546,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":11547,"l":"b_2D1B","t":"code","b":[72],"m":"pha","x":[11544]},{"a":11548,"t":"code","b":[61,65,45],"m":"and","o":"water_tank_mask_left,x","oa":11585},{"a":11551,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":11553,"t":"code","b":[144,6],"m":"bcc","o":"b_2D29","oa":11561},{"a":11555,"t":"code","b":[157,204,122],"m":"sta","o":"cooler_water_base,x","oa":31436},{"a":11558,"t":"code","b":[76,44,45],"m":"jmp","o":"j_2D2C","oa":11564},{"a":11561,"l":"b_2D29","t":"code","b":[157,148,121],"m":"sta","o":"cooler_water_top,x","oa":31124,"x":[11553]},{"a":11564,"l":"j_2D2C","t":"code","b":[104],"m":"pla","x":[11558]},{"a":11565,"t":"code","b":[61,77,45],"m":"and","o":"water_tank_mask_right,x","oa":11597},{"a":11568,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":11570,"t":"code","b":[144,6],"m":"bcc","o":"b_2D3A","oa":11578},{"a":11572,"t":"code","b":[157,212,122],"m":"sta","o":"cooler_water_base_r,x","oa":31444},{"a":11575,"t":"code","b":[76,61,45],"m":"jmp","o":"j_2D3D","oa":11581},{"a":11578,"l":"b_2D3A","t":"code","b":[157,156,121],"m":"sta","o":"cooler_water_top_r,x","oa":31132,"x":[11570]},{"a":11581,"l":"j_2D3D","t":"code","b":[202],"m":"dex","x":[11575]},{"a":11582,"t":"code","b":[16,212],"m":"bpl","o":"b_2D14","oa":11540},{"a":11584,"t":"code","b":[96],"m":"rts"},{"a":11585,"l":"water_tank_mask_left","c":"AND masks for the left cell of each water-tank line, top first: $0F, then eleven $3F.","t":"byte","b":[15,63,63,63,63,63,63,63],"x":[11548]},{"a":11593,"t":"byte","b":[63,63,63,63]},{"a":11597,"l":"water_tank_mask_right","c":"AND masks for the right cell of each water-tank line, top first: $FC, then eleven $FF.","t":"byte","b":[252,255,255,255,255,255,255,255],"x":[11565]},{"a":11605,"t":"byte","b":[255,255,255,255]},{"a":11609,"l":"tv_flicker","c":"Called while tv_on: on every 4th pass (main_passes $09DB AND 3 = 0) sets the TV screen's colour-RAM cells $D8F5 and $D91D (rows 6 and 7, column 5 of the attic) to rng_value $0414 AND $0F, using 1 instead of 4.","t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523,"x":[11423]},{"a":11612,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":11614,"t":"code","b":[208,17],"m":"bne","o":"r_2D71","oa":11633},{"a":11616,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":11619,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":11621,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":11623,"t":"code","b":[208,2],"m":"bne","o":"tv_screen_colour","oa":11627},{"a":11625,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":11627,"l":"tv_screen_colour","c":"Entry that sets both TV screen colour-RAM cells to A; $A95C calls it with A = 1 when the TV is turned off.","t":"code","b":[141,245,216],"m":"sta","o":"$D8F5","x":[11623,43356]},{"a":11630,"t":"code","b":[141,29,217],"m":"sta","o":"$D91D"},{"a":11633,"l":"r_2D71","t":"code","b":[96],"m":"rts","x":[11614]},{"a":11634,"l":"turntable_frames","c":"Four 16-byte frames of the turntable on the attic stereo (bitmap cells row 5, columns 9-10, eight lines each); they differ only in line 2 of each cell.","t":"byte","b":[64,68,170,85,85,0,85,0],"x":[11735]},{"a":11642,"t":"byte","b":[0,0,80,128,128,128,170,32]},{"a":11650,"t":"byte","b":[64,68,170,85,85,0,85,0]},{"a":11658,"t":"byte","b":[0,0,16,128,128,128,170,32]},{"a":11666,"t":"byte","b":[64,68,162,85,85,0,85,0]},{"a":11674,"t":"byte","b":[0,0,80,128,128,128,170,32]},{"a":11682,"t":"byte","b":[64,68,138,85,85,0,85,0]},{"a":11690,"t":"byte","b":[0,0,80,128,128,128,170,32]},{"a":11698,"l":"turntable_reset","c":"Shows turntable frame 0 ($96DD = 0); called by $9283 when the record stops.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[37507]},{"a":11700,"t":"code","b":[141,221,150],"m":"sta","o":"obj_timer","oa":38621},{"a":11703,"t":"code","b":[76,212,45],"m":"jmp","o":"j_2DD4","oa":11732},{"a":11706,"l":"r_2DBA","t":"code","b":[96],"m":"rts","x":[11715]},{"a":11707,"l":"turntable_step","c":"Called while turntable_on: every 8th pass (main_passes + 1, AND 7 = 0) advances the frame number $96DD (0-3) and copies that frame from turntable_frames into $6688-$6697.","t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523,"x":[11478]},{"a":11710,"t":"code","b":[24],"m":"clc"},{"a":11711,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":11713,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":11715,"t":"code","b":[208,245],"m":"bne","o":"r_2DBA","oa":11706},{"a":11717,"t":"code","b":[238,221,150],"m":"inc","o":"obj_timer","oa":38621},{"a":11720,"t":"code","b":[173,221,150],"m":"lda","o":"obj_timer","oa":38621},{"a":11723,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":11725,"t":"code","b":[141,221,150],"m":"sta","o":"obj_timer","oa":38621},{"a":11728,"t":"code","b":[10],"m":"asl","o":"a"},{"a":11729,"t":"code","b":[10],"m":"asl","o":"a"},{"a":11730,"t":"code","b":[10],"m":"asl","o":"a"},{"a":11731,"t":"code","b":[10],"m":"asl","o":"a"},{"a":11732,"l":"j_2DD4","t":"code","b":[170],"m":"tax","x":[11703]},{"a":11733,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":11735,"l":"b_2DD7","t":"code","b":[189,114,45],"m":"lda","o":"turntable_frames,x","oa":11634,"x":[11745]},{"a":11738,"t":"code","b":[153,136,102],"m":"sta","o":"turntable_cells,y","oa":26248},{"a":11741,"t":"code","b":[232],"m":"inx"},{"a":11742,"t":"code","b":[200],"m":"iny"},{"a":11743,"t":"code","b":[192,16],"m":"cpy","o":"#$10"},{"a":11745,"t":"code","b":[208,244],"m":"bne","o":"b_2DD7","oa":11735},{"a":11747,"t":"code","b":[96],"m":"rts"},{"a":11748,"l":"at_place","c":"Returns Z set when the person stands at place X: $03AF, $03A3 and $03B3 equal $1D36,X, $1D6D,X and $1DA4,X. Used by house_events for CTRL P with X = $2B.","t":"code","b":[189,54,29],"m":"lda","o":"location_y,x","oa":7478,"x":[11314]},{"a":11751,"t":"code","b":[205,175,3],"m":"cmp","o":"fig_floor_y","oa":943},{"a":11754,"t":"code","b":[208,14],"m":"bne","o":"r_2DFA","oa":11770},{"a":11756,"t":"code","b":[189,109,29],"m":"lda","o":"location_x,x","oa":7533},{"a":11759,"t":"code","b":[205,163,3],"m":"cmp","o":"fig_x_half","oa":931},{"a":11762,"t":"code","b":[208,6],"m":"bne","o":"r_2DFA","oa":11770},{"a":11764,"t":"code","b":[189,164,29],"m":"lda","o":"location_depth,x","oa":7588},{"a":11767,"t":"code","b":[205,179,3],"m":"cmp","o":"fig_depth","oa":947},{"a":11770,"l":"r_2DFA","t":"code","b":[96],"m":"rts","x":[11754,11762]},{"a":11771,"l":"exercise_tick","c":"Pass counter of exercise_move ($2E2D), which acts only when its low three bits are 0.","t":"byte","b":[0],"x":[11821,11824]},{"a":11772,"l":"exercise_moves","c":"Exercise moves left: set to random OR $40 (64-255) by exercise_start, counted down by exercise_move.","t":"byte","b":[0],"x":[11797,11837,11862]},{"a":11773,"l":"exercise_step","c":"Step 0-3 of the exercise cycle, the index into exercise_poses $2E6B; cleared by exercise_start.","t":"byte","b":[0],"x":[11802,11849,11865,11873]},{"a":11774,"l":"act27_exercise","c":"Activity 27 (activity_table index $1B): switch on activity_phase $4C: $2E0B walk to place $1F, $8FA7 wait for the walk, $2E10 face the front and choose the number of moves, $2E2D exercise, $8F0E.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":11777,"t":"gap","n":10},{"a":11787,"l":"exercise_walk","c":"Activity 27 phase 0: walk_to_place with X = $1F, a place on the middle floor.","t":"code","b":[162,31],"m":"ldx","o":"#$1F"},{"a":11789,"t":"code","b":[76,249,142],"m":"jmp","o":"walk_to_location","oa":36601},{"a":11792,"l":"exercise_start","c":"Activity 27 phase 2: sets exercise_moves $2DFC to random OR $40, clears exercise_step $2DFD and turns the person to the front view (pose $22, facing 0) with turn_to_pose; advances when the turn is complete.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":11795,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":11797,"t":"code","b":[141,252,45],"m":"sta","o":"exercise_moves","oa":11772},{"a":11800,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11802,"t":"code","b":[141,253,45],"m":"sta","o":"exercise_step","oa":11773},{"a":11805,"t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":11807,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":11809,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":11812,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":11815,"t":"code","b":[240,1],"m":"beq","o":"b_2E2A","oa":11818},{"a":11817,"t":"code","b":[96],"m":"rts"},{"a":11818,"l":"b_2E2A","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[11815,11847]},{"a":11821,"l":"exercise_move","c":"Activity 27 phase 3, acting every 8th pass: while exercise_moves is non-zero and no request is pending ($8F86), counts it down and sets the next body pose of the 4-step cycle in exercise_poses. To stop, it carries on until exercise_step is 0, then sets the front pose $22, and once he is in it advances to the end of the activity.","t":"code","b":[238,251,45],"m":"inc","o":"exercise_tick","oa":11771},{"a":11824,"t":"code","b":[173,251,45],"m":"lda","o":"exercise_tick","oa":11771},{"a":11827,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":11829,"t":"code","b":[240,1],"m":"beq","o":"b_2E38","oa":11832},{"a":11831,"t":"code","b":[96],"m":"rts"},{"a":11832,"l":"b_2E38","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742,"x":[11829]},{"a":11835,"t":"code","b":[208,5],"m":"bne","o":"b_2E42","oa":11842},{"a":11837,"t":"code","b":[173,252,45],"m":"lda","o":"exercise_moves","oa":11772},{"a":11840,"t":"code","b":[208,20],"m":"bne","o":"b_2E56","oa":11862},{"a":11842,"l":"b_2E42","t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907,"x":[11835]},{"a":11845,"t":"code","b":[201,34],"m":"cmp","o":"#$22"},{"a":11847,"t":"code","b":[240,225],"m":"beq","o":"b_2E2A","oa":11818},{"a":11849,"t":"code","b":[173,253,45],"m":"lda","o":"exercise_step","oa":11773},{"a":11852,"t":"code","b":[208,11],"m":"bne","o":"b_2E59","oa":11865},{"a":11854,"t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":11856,"l":"j_2E50","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[11880]},{"a":11858,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":11861,"t":"code","b":[96],"m":"rts"},{"a":11862,"l":"b_2E56","t":"code","b":[206,252,45],"m":"dec","o":"exercise_moves","oa":11772,"x":[11840]},{"a":11865,"l":"b_2E59","t":"code","b":[173,253,45],"m":"lda","o":"exercise_step","oa":11773,"x":[11852]},{"a":11868,"t":"code","b":[24],"m":"clc"},{"a":11869,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":11871,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":11873,"t":"code","b":[141,253,45],"m":"sta","o":"exercise_step","oa":11773},{"a":11876,"t":"code","b":[170],"m":"tax"},{"a":11877,"t":"code","b":[189,107,46],"m":"lda","o":"exercise_poses,x","oa":11883},{"a":11880,"t":"code","b":[76,80,46],"m":"jmp","o":"j_2E50","oa":11856},{"a":11883,"l":"exercise_poses","c":"Body poses of the exercise cycle by exercise_step: $3A (knees bent), $3C (standing), $3B (arms up, legs apart), $3C; played in the order 1, 2, 3, 0.","t":"byte","b":[58,60,59,60],"x":[11877]},{"a":11887,"l":"stub_main_clc","c":"CLC, RTS. Called on every pass from main_loop stage 5 ($095F), which ignores the carry: the whole stage does nothing. Whether the crack emptied it is not known.","t":"code","b":[24],"m":"clc","x":[2399]},{"a":11888,"t":"code","b":[96],"m":"rts"},{"a":11889,"l":"stub_clc","c":"CLC, RTS. Called by talk_until_timer ($247B) and talk_or_wait ($2773) when a request cuts the talking short, by maybe_talk ($2738), and at $33D7 while act_timer_running is set; none of them tests the carry, and the timer is left running.","t":"code","b":[24],"m":"clc","x":[9339,10040,10099,13271]},{"a":11890,"t":"code","b":[96],"m":"rts"},{"a":11891,"l":"act_timer_tick","c":"Counts the act timer: called on every pass from main_loop stage 7 ($096C) and by maybe_talk. When frame_count $2B AND 3 is 0 and act_timer_count $0433 is not 0 it decrements $0433, and when that reaches 0 it decrements act_timer_running $0432 (1 to 0).","t":"code","b":[165,43],"m":"lda","o":"frame_count","oa":43,"x":[2412,10051]},{"a":11893,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":11895,"t":"code","b":[208,13],"m":"bne","o":"r_2E86","oa":11910},{"a":11897,"t":"code","b":[173,51,4],"m":"lda","o":"act_timer_count","oa":1075},{"a":11900,"t":"code","b":[240,8],"m":"beq","o":"r_2E86","oa":11910},{"a":11902,"t":"code","b":[206,51,4],"m":"dec","o":"act_timer_count","oa":1075},{"a":11905,"t":"code","b":[208,3],"m":"bne","o":"r_2E86","oa":11910},{"a":11907,"t":"code","b":[206,50,4],"m":"dec","o":"act_timer_running","oa":1074},{"a":11910,"l":"r_2E86","t":"code","b":[96],"m":"rts","x":[11895,11900,11905]},{"a":11911,"l":"act_timer_start","c":"Starts the act timer used for talking: act_timer_running $0432 = 1, act_timer_count $0433 = $68 (104 counts of act_timer_tick). Called by talk_start_timer ($2753).","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[10067]},{"a":11913,"t":"code","b":[141,50,4],"m":"sta","o":"act_timer_running","oa":1074},{"a":11916,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":11918,"t":"code","b":[141,51,4],"m":"sta","o":"act_timer_count","oa":1075},{"a":11921,"t":"code","b":[96],"m":"rts"},{"a":11922,"t":"gap","n":1},{"a":11923,"l":"clock_divider","c":"Frame divider of clock_tick: decremented once per frame; when it goes below 0 it is reloaded with $31 and one second is added, so a second lasts 50 frames. The byte before it, $2E92, is an RTS that nothing reaches.","t":"byte","b":[14],"x":[11924,11931]},{"a":11924,"l":"clock_tick","c":"The time of day, called once per frame by the raster interrupt at $074B (the handler never rewrites $D012, so it runs once a frame). Every 50 calls, one second on the PAL machine the snapshots come from, it adds one second in BCD: clock_seconds $0426 (0-59; the wrap sets clock_redraw $09E9 = $FF for the wall clock), carrying into clock_minutes $0427 (0-59) and clock_hours $0428 (1-12, 12 wraps to 1), and increments clock_pm $0429 when the hour turns from 11 to 12. clock_pm is only ever incremented, so after midnight it reads 2; no absolute read of $0429 was found.","t":"code","b":[206,147,46],"m":"dec","o":"clock_divider","oa":11923,"x":[1867]},{"a":11927,"t":"code","b":[16,71],"m":"bpl","o":"r_2EE0","oa":12000},{"a":11929,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":11931,"t":"code","b":[141,147,46],"m":"sta","o":"clock_divider","oa":11923},{"a":11934,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":11936,"t":"code","b":[24],"m":"clc"},{"a":11937,"t":"code","b":[248],"m":"sed"},{"a":11938,"t":"code","b":[109,38,4],"m":"adc","o":"clock_seconds","oa":1062},{"a":11941,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":11943,"t":"code","b":[144,7],"m":"bcc","o":"b_2EB0","oa":11952},{"a":11945,"t":"code","b":[162,255],"m":"ldx","o":"#$FF"},{"a":11947,"t":"code","b":[142,233,9],"m":"stx","o":"clock_redraw","oa":2537},{"a":11950,"t":"code","b":[233,96],"m":"sbc","o":"#$60"},{"a":11952,"l":"b_2EB0","t":"code","b":[141,38,4],"m":"sta","o":"clock_seconds","oa":1062,"x":[11943]},{"a":11955,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11957,"t":"code","b":[248],"m":"sed"},{"a":11958,"t":"code","b":[109,39,4],"m":"adc","o":"clock_minutes","oa":1063},{"a":11961,"t":"code","b":[201,96],"m":"cmp","o":"#$60"},{"a":11963,"t":"code","b":[144,2],"m":"bcc","o":"b_2EBF","oa":11967},{"a":11965,"t":"code","b":[233,96],"m":"sbc","o":"#$60"},{"a":11967,"l":"b_2EBF","t":"code","b":[141,39,4],"m":"sta","o":"clock_minutes","oa":1063,"x":[11963]},{"a":11970,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":11972,"t":"code","b":[174,40,4],"m":"ldx","o":"clock_hours","oa":1064},{"a":11975,"t":"code","b":[248],"m":"sed"},{"a":11976,"t":"code","b":[109,40,4],"m":"adc","o":"clock_hours","oa":1064},{"a":11979,"t":"code","b":[201,19],"m":"cmp","o":"#$13"},{"a":11981,"t":"code","b":[144,2],"m":"bcc","o":"b_2ED1","oa":11985},{"a":11983,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":11985,"l":"b_2ED1","t":"code","b":[141,40,4],"m":"sta","o":"clock_hours","oa":1064,"x":[11981]},{"a":11988,"t":"code","b":[224,18],"m":"cpx","o":"#$12"},{"a":11990,"t":"code","b":[240,7],"m":"beq","o":"b_2EDF","oa":11999},{"a":11992,"t":"code","b":[201,18],"m":"cmp","o":"#$12"},{"a":11994,"t":"code","b":[208,3],"m":"bne","o":"b_2EDF","oa":11999},{"a":11996,"t":"code","b":[238,41,4],"m":"inc","o":"clock_pm","oa":1065},{"a":11999,"l":"b_2EDF","t":"code","b":[216],"m":"cld","x":[11990,11994]},{"a":12000,"l":"r_2EE0","t":"code","b":[96],"m":"rts","x":[11927]},{"a":12001,"l":"add_record","c":"Delivery phase 13, reached for carried items 1-5 (in practice the record of activity 50): unless all eight bits of act_2ee1_bits $042C are set, sets one of its clear bits at random (masks from bit_masks $08DC; when the chosen bit is set it tries the next one); then increments act_2ee1_count $042B, which stops at 255, and advances. In the unpacked image the two start as $59 (four bits) and 4. No other absolute read of $042B or $042C was found.","t":"code","b":[174,44,4],"m":"ldx","o":"act_2ee1_bits","oa":1068},{"a":12004,"t":"code","b":[232],"m":"inx"},{"a":12005,"t":"code","b":[240,24],"m":"beq","o":"b_2EFF","oa":12031},{"a":12007,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":12010,"l":"b_2EEA","t":"code","b":[41,7],"m":"and","o":"#$07","x":[12023]},{"a":12012,"t":"code","b":[170],"m":"tax"},{"a":12013,"t":"code","b":[189,220,8],"m":"lda","o":"bit_masks,x","oa":2268},{"a":12016,"t":"code","b":[44,44,4],"m":"bit","o":"act_2ee1_bits","oa":1068},{"a":12019,"t":"code","b":[240,4],"m":"beq","o":"b_2EF9","oa":12025},{"a":12021,"t":"code","b":[232],"m":"inx"},{"a":12022,"t":"code","b":[138],"m":"txa"},{"a":12023,"t":"code","b":[208,241],"m":"bne","o":"b_2EEA","oa":12010},{"a":12025,"l":"b_2EF9","t":"code","b":[13,44,4],"m":"ora","o":"act_2ee1_bits","oa":1068,"x":[12019]},{"a":12028,"t":"code","b":[141,44,4],"m":"sta","o":"act_2ee1_bits","oa":1068},{"a":12031,"l":"b_2EFF","t":"code","b":[238,43,4],"m":"inc","o":"act_2ee1_count","oa":1067,"x":[12005]},{"a":12034,"t":"code","b":[208,3],"m":"bne","o":"b_2F07","oa":12039},{"a":12036,"t":"code","b":[206,43,4],"m":"dec","o":"act_2ee1_count","oa":1067},{"a":12039,"l":"b_2F07","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[12034]},{"a":12042,"l":"drop_wait_walk","c":"Activity handler (entry 3 of activity 22's table at $54E3): clears the carrying flag $0391 and advances once the walk has ended ($03BC = 0).","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12044,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":12047,"t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956},{"a":12050,"t":"code","b":[208,3],"m":"bne","o":"r_2F17","oa":12055},{"a":12052,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":12055,"l":"r_2F17","t":"code","b":[96],"m":"rts","x":[12050]},{"a":12056,"l":"act25_phone_call","c":"Activity 25 (event $BEF5, raised by CTRL C and by the timed call at $0B36): the telephone call. Switch on activity_phase $4C, 16 entries: walk to the easy chair ($2FE6) and wait; sit facing front ($2FCB); pause ($2FB5); lift the handset off the telephone ($2FFF); hold it out ($2F3B); pause; hold it to his ear ($2F74); talk ($2749, $2759); hold it out; pause; put it back ($3010); sit; pause; $8F0E.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":12059,"t":"gap","n":32},{"a":12091,"l":"phone_hold_out","c":"Phone phases 5 and 10: figure 2 becomes the handset held out (image $04) at the person's X - 10, his floor coordinate and depth - 5, colour 1, multicolour, visible ($03C6 = $83); body pose $38 (seated, arm out); act_wait_steps $02EB = 1; advances through $2FC4.","t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":12093,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":12096,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":12099,"t":"code","b":[56],"m":"sec"},{"a":12100,"t":"code","b":[233,10],"m":"sbc","o":"#$0A"},{"a":12102,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":12105,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":12108,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":12111,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":12114,"t":"code","b":[56],"m":"sec"},{"a":12115,"t":"code","b":[233,5],"m":"sbc","o":"#$05"},{"a":12117,"t":"code","b":[141,181,3],"m":"sta","o":"fig_depth_prop_a","oa":949},{"a":12120,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":12122,"t":"code","b":[141,148,3],"m":"sta","o":"prop_multicolour","oa":916},{"a":12125,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":12127,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":12130,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":12132,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":12135,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":12137,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":12140,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":12142,"t":"code","b":[141,235,2],"m":"sta","o":"act_wait_steps","oa":747},{"a":12145,"t":"code","b":[76,196,47],"m":"jmp","o":"j_2FC4","oa":12228},{"a":12148,"l":"phone_to_ear","c":"Phone phase 7: figure 2 image $05 (handset at the ear) at X - 9 (X bit 8 copied from $03AB), floor - 3, depth - 3, colour 1, visible; body pose $39; sets act_wait_steps $02EB to random OR $40, which no pause phase uses before phone_hold_out sets it to 1; advances.","t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":12150,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":12153,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":12156,"t":"code","b":[56],"m":"sec"},{"a":12157,"t":"code","b":[233,9],"m":"sbc","o":"#$09"},{"a":12159,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":12162,"t":"code","b":[173,171,3],"m":"lda","o":"fig_x_hi","oa":939},{"a":12165,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":12168,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":12171,"t":"code","b":[56],"m":"sec"},{"a":12172,"t":"code","b":[233,3],"m":"sbc","o":"#$03"},{"a":12174,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":12177,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":12180,"t":"code","b":[56],"m":"sec"},{"a":12181,"t":"code","b":[233,3],"m":"sbc","o":"#$03"},{"a":12183,"t":"code","b":[141,181,3],"m":"sta","o":"fig_depth_prop_a","oa":949},{"a":12186,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":12188,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":12191,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":12193,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":12196,"t":"code","b":[169,57],"m":"lda","o":"#$39"},{"a":12198,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":12201,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":12204,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":12206,"t":"code","b":[141,235,2],"m":"sta","o":"act_wait_steps","oa":747},{"a":12209,"t":"code","b":[76,196,47],"m":"jmp","o":"j_2FC4","oa":12228},{"a":12212,"l":"r_2FB4","t":"code","b":[96],"m":"rts","x":[12221]},{"a":12213,"l":"phone_pause","c":"Phone phases 3, 6, 11 and 14: acts every 4th pass of act_wait_pass $02EC, counting act_wait_steps $02EB down and advancing (INC $4C at $2FC4) when it is 0.","t":"code","b":[238,236,2],"m":"inc","o":"act_wait_pass","oa":748},{"a":12216,"t":"code","b":[173,236,2],"m":"lda","o":"act_wait_pass","oa":748},{"a":12219,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":12221,"t":"code","b":[208,245],"m":"bne","o":"r_2FB4","oa":12212},{"a":12223,"t":"code","b":[173,235,2],"m":"lda","o":"act_wait_steps","oa":747},{"a":12226,"t":"code","b":[208,3],"m":"bne","o":"b_2FC7","oa":12231},{"a":12228,"l":"j_2FC4","t":"code","b":[230,76],"m":"inc","o":"activity_phase","oa":76,"x":[12145,12209,12259,12277,12284,12301,12325]},{"a":12230,"t":"code","b":[96],"m":"rts"},{"a":12231,"l":"b_2FC7","t":"code","b":[206,235,2],"m":"dec","o":"act_wait_steps","oa":747,"x":[12226]},{"a":12234,"t":"code","b":[96],"m":"rts"},{"a":12235,"l":"phone_sit","c":"Phone phases 2 and 13: hides figure 2 ($03C6 = 0, image 0), sets facing 0 for the person and figure 2, body pose $23 (seated, front view), act_wait_steps $02EB = 4, advances.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12237,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":12240,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":12243,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":12246,"t":"code","b":[141,156,3],"m":"sta","o":"fig_mirror_prop_a","oa":924},{"a":12249,"t":"code","b":[169,35],"m":"lda","o":"#$23"},{"a":12251,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":12254,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":12256,"t":"code","b":[141,235,2],"m":"sta","o":"act_wait_steps","oa":747},{"a":12259,"t":"code","b":[76,196,47],"m":"jmp","o":"j_2FC4","oa":12228},{"a":12262,"l":"phone_walk_to_chair","c":"Phone phase 0: sets the walk target to place $2B (the easy chair next to the telephone table) through $16AE and $03C0 = $36, and starts walking ($03BC = 2) unless $1E11 finds him already there; advances.","t":"code","b":[162,43],"m":"ldx","o":"#$2B"},{"a":12264,"t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806},{"a":12267,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":12269,"t":"code","b":[141,192,3],"m":"sta","o":"move_target","oa":960},{"a":12272,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":12274,"t":"code","b":[32,17,30],"m":"jsr","o":"at_target","oa":7697},{"a":12277,"t":"code","b":[240,205],"m":"beq","o":"j_2FC4","oa":12228},{"a":12279,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":12281,"t":"code","b":[141,188,3],"m":"sta","o":"move_state","oa":956},{"a":12284,"t":"code","b":[76,196,47],"m":"jmp","o":"j_2FC4","oa":12228},{"a":12287,"l":"phone_lift_handset","c":"Phone phase 4: clears lines 5-6 of bitmap cells row 21, columns 24-25 ($7B05, $7B06, $7B0D, $7B0E), where the resting handset is drawn, and advances. The phone's next handler, $3010, lies outside this range.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12289,"t":"code","b":[141,5,123],"m":"sta","o":"phone_handset_l5","oa":31493},{"a":12292,"t":"code","b":[141,6,123],"m":"sta","o":"phone_handset_l6","oa":31494},{"a":12295,"t":"code","b":[141,13,123],"m":"sta","o":"phone_handset_r5","oa":31501},{"a":12298,"t":"code","b":[141,14,123],"m":"sta","o":"phone_handset_r6","oa":31502},{"a":12301,"t":"code","b":[76,196,47],"m":"jmp","o":"j_2FC4","oa":12228},{"a":12304,"l":"phone_hang_up","c":"Activity 25 (answering the telephone: CTRL C sets event flag $BEF5, whose activity in the event table $BEE9 is 25), phase 12, entered through the table at $2F1B. Redraws the handset on the telephone table (bitmap bytes $7B05/$7B06 = $15/$10 and $7B0D/$7B0E = $50/$10, the image the ringing routine draws at $2B2A), requests sound slot 2 (snd_req_hang_up = $50, sound $13 once) and advances the phase ($2FC4). Phase 4 ($2FFF, just before this) zeroes the same four bytes when he lifts the handset.","t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":12306,"t":"code","b":[141,5,123],"m":"sta","o":"phone_handset_l5","oa":31493},{"a":12309,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":12311,"t":"code","b":[141,14,123],"m":"sta","o":"phone_handset_r6","oa":31502},{"a":12314,"t":"code","b":[141,6,123],"m":"sta","o":"phone_handset_l6","oa":31494},{"a":12317,"t":"code","b":[169,80],"m":"lda","o":"#$50"},{"a":12319,"t":"code","b":[141,13,123],"m":"sta","o":"phone_handset_r5","oa":31501},{"a":12322,"t":"code","b":[141,98,53],"m":"sta","o":"snd_req_hang_up","oa":13666},{"a":12325,"t":"code","b":[76,196,47],"m":"jmp","o":"j_2FC4","oa":12228},{"a":12328,"l":"act44_put_away_food","c":"Activity 44, entered from the activity switch at $8DC6 (entry 44). CTRL F queues it (event flag $BEF6, activity 44 in the event table $BEE9), and the CTRL handler at $2B5C sets that flag only while cupboard_food is not $0F. Sets $2783 = 2, the item kind the door-fetch handlers use (the book, record and dog-food activities set 0, 1 and 6 at $2786-$2792), then switches on the phase $4C through act44_phase_table: fetch the delivered food at the front door, then fill the empty places of the kitchen cupboard one at a time until all four hold food.","t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":12330,"t":"code","b":[142,131,39],"m":"stx","o":"carried_item","oa":10115},{"a":12333,"t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":12336,"l":"act44_phase_table","c":"Activity 44's phase table: 26 words, each a handler address minus one, chosen by $4C through switch_4c. 0 act_walk_front_door ($AF7E), 1 wait_or_request ($8FA7), 2 open_stubs object 0 ($943D), 3 object_op ($94CC), 4 act_walk_door_right ($AF99), 5 wait_or_request, 6 show_food_item, 7 act_item_raise ($AF2C), 8 act_pose_seq ($AF58), 9 act44_carry, 10 act44_pick_empty_place, 11 walk_to_cupboard, 12 carry_walk ($293D), 13 act44_pick_empty_place, 14 act44_last_item_check, 15 pose_0d_next, 16 act44_stow, 17 cupboard_wait16, 18 cupboard_face_or_quit, 19 cupboard_wait16, 20 act44_store_item, 21 pose_0d_next, 22 cupboard_wait16, 23 act44_loop_until_full, 24 act44_hide_item, 25 $8F0E (end).","t":"word","b":[125,175,166,143,60,148,203,148],"d":[44925,36774,37948,38091]},{"a":12344,"t":"word","b":[152,175,166,143,48,49,43,175],"d":[44952,36774,12592,44843]},{"a":12352,"t":"word","b":[87,175,196,48,104,49,204,48],"d":[44887,12484,12648,12492]},{"a":12360,"t":"word","b":[60,41,104,49,139,48,25,49],"d":[10556,12648,12427,12569]},{"a":12368,"t":"word","b":[189,48,35,49,226,48,35,49],"d":[12477,12579,12514,12579]},{"a":12376,"t":"word","b":[128,49,25,49,35,49,124,48],"d":[12672,12569,12579,12412]},{"a":12384,"t":"word","b":[180,48,13,143],"d":[12468,36621]},{"a":12388,"l":"act43_take_food","c":"Activity 43, entered from the activity switch (entry 43); the activity lists at $AA6B, $AA88 and $AAB2 (activities 75, 76 and 1) include it. Switches on $4C through act43_phase_table: choose at random a place of the kitchen cupboard that holds food, walk there and take the item (its cupboard_food bit cleared and the shelf redrawn). When the cupboard is empty, or the idle counter $2D has reached 10, it becomes activity 39 instead (cupboard_face_or_quit).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":12391,"l":"act43_phase_table","c":"Activity 43's phase table: 11 words (handler minus one) chosen by $4C through switch_4c. 0 act43_pick_full_place, 1 walk_to_cupboard, 2 $8FA7, 3 pose_0d_next, 4 cupboard_wait16, 5 cupboard_face_or_quit, 6 cupboard_wait16, 7 act43_take_item, 8 pose_0d_next, 9 cupboard_wait16, 10 $8F0E (end).","t":"word","b":[56,49,204,48,166,143,25,49],"d":[12600,12492,36774,12569]},{"a":12399,"t":"word","b":[35,49,226,48,35,49,86,49],"d":[12579,12514,12579,12630]},{"a":12407,"t":"word","b":[25,49,35,49,13,143],"d":[12569,12579,36621]},{"a":12413,"l":"act44_loop_until_full","c":"Activity 44 phase 23: while cupboard_food is not $0F sets the phase $4C back to 13 (choose the next empty place); once all four places are full, advances ($8F0B).","t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":12416,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":12418,"t":"code","b":[240,5],"m":"beq","o":"b_3089","oa":12425},{"a":12420,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":12422,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":12424,"t":"code","b":[96],"m":"rts"},{"a":12425,"l":"b_3089","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[12418]},{"a":12428,"l":"act44_last_item_check","c":"Activity 44 phase 14: when the item about to be stored would fill the cupboard (cupboard_food OR the bit of cupboard_slot = $0F) and the need counter $0371 is 2 or more, switches to activity 32 (act44_switch_to_act32) without storing it; otherwise advances. Activity 32's handler at $543D is the one that zeroes $0371.","t":"code","b":[174,178,48],"m":"ldx","o":"cupboard_slot","oa":12466},{"a":12431,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":12434,"t":"code","b":[29,207,49],"m":"ora","o":"cupboard_bit,x","oa":12751},{"a":12437,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":12439,"t":"code","b":[208,11],"m":"bne","o":"b_30A4","oa":12452},{"a":12441,"t":"code","b":[173,113,3],"m":"lda","o":"food_need","oa":881},{"a":12444,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":12446,"t":"code","b":[144,4],"m":"bcc","o":"b_30A4","oa":12452},{"a":12448,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":12450,"t":"code","b":[208,7],"m":"bne","o":"act44_switch_to_act32","oa":12459},{"a":12452,"l":"b_30A4","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[12439,12446]},{"a":12455,"l":"unused_30A7","c":"Four bytes ($20 $AD $A7 $30) that no code or table reaches: $30A4 jumps away and act44_switch_to_act32 is entered only by the branch at $30A2. Decoded from $30A8 they would read LDA $30A7 (loading $20, the activity number $30A0 uses) and fall into $30AB.","t":"byte","b":[32,173,167,48]},{"a":12459,"l":"act44_switch_to_act32","c":"Tail of act44_last_item_check: stores A ($20, activity 32) as the current activity $8D9B and resets both phase counters ($AB56). Unlike cupboard_face_or_quit it leaves the queued activity list ($0423) alone.","t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251,"x":[12450]},{"a":12462,"t":"code","b":[32,86,171],"m":"jsr","o":"activity_reset_phase","oa":43862},{"a":12465,"t":"code","b":[96],"m":"rts"},{"a":12466,"l":"cupboard_slot","c":"Kitchen cupboard place chosen by activities 43 and 44, 0-3: 0 and 1 the upper shelf (bitmap $77F0, $77F8), 2 and 3 the lower ($7930, $7938); odd places are the right-hand column, so walk_to_cupboard moves 4 further right and cupboard_face_or_quit mirrors him ($039A = 8). Written at $3151, read at $308C, $30D2, $310B, $3157 and $3186.","t":"byte","b":[0],"x":[12428,12498,12555,12625,12631,12678]},{"a":12467,"l":"cupboard_wait","c":"Pass counter of cupboard_wait16: incremented every pass; the phase advances when its low four bits come round to 0.","t":"byte","b":[0],"x":[12580,12583]},{"a":12468,"l":"cupboard_food","c":"Food in the kitchen cupboard, one bit per place: bit 3 place 0 (upper left), bit 2 place 1 (upper right), bit 1 place 2 (lower left), bit 0 place 3 (lower right). $0F (full) at start. Activity 44 sets bits (act44_store_item), activity 43 clears one (act43_take_item), draw_cupboard shows it; the CTRL key handler at $2B5C ignores CTRL F while it is $0F.","t":"byte","b":[15],"x":[11100,12413,12431,12528,12611,12634,12640,12659,12681,12687,12698,21968,57851]},{"a":12469,"l":"act44_hide_item","c":"Activity 44 phase 24: show_food_item (set_carried_item puts figure 2 back by the front door and advances the phase), then hides figure 2 ($03C6 = 0).","t":"code","b":[32,49,49],"m":"jsr","o":"show_food_item","oa":12593},{"a":12472,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12474,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":12477,"t":"code","b":[96],"m":"rts"},{"a":12478,"l":"act44_stow","c":"Activity 44 phase 16: hides figure 2, the carried food ($03C6 = 0), clears carrying ($0391) and advances.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12480,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":12483,"t":"code","b":[240,2],"m":"beq","o":"b_30C7","oa":12487},{"a":12485,"l":"act44_carry","c":"Activity 44 phase 9, inside act44_stow: carrying ($0391) = $FF, so the person is drawn with his arms forward (the frame set $5D on, $0E48), and advances.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":12487,"l":"b_30C7","t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913,"x":[12483]},{"a":12490,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":12493,"l":"walk_to_cupboard","c":"Phase handler: walk_to_location ($8EF9) with location $25, in front of the kitchen cupboard (copied into the scratch location, made the destination, next phase); when cupboard_slot is odd (right-hand column) the destination moves 4 further right ($1DA3 + 4). First phase of activities 32, 47 and 48 as well ($52DB, $1E5B, $1E6E), phase 1 of 43 and phase 11 of 44.","t":"code","b":[162,37],"m":"ldx","o":"#$25"},{"a":12495,"t":"code","b":[32,249,142],"m":"jsr","o":"walk_to_location","oa":36601},{"a":12498,"t":"code","b":[173,178,48],"m":"lda","o":"cupboard_slot","oa":12466},{"a":12501,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":12503,"t":"code","b":[240,9],"m":"beq","o":"r_30E2","oa":12514},{"a":12505,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":12507,"t":"code","b":[24],"m":"clc"},{"a":12508,"t":"code","b":[109,163,29],"m":"adc","o":"location_x_custom","oa":7587},{"a":12511,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":12514,"l":"r_30E2","t":"code","b":[96],"m":"rts","x":[12503,12588]},{"a":12515,"l":"cupboard_face_or_quit","c":"Activities 43 (phase 5) and 44 (phase 18). In activity 43 ($8D9B = $2B), if the idle counter $2D (top byte of the frame count $2B-$2D, which the keyboard scan clears whenever a key is down, $05F5) is 10 or more, or cupboard_food is 0, switches to activity 39 with both phase counters cleared and the queued list emptied ($0423/$0424 = $8D99, which holds 0). Otherwise ($310B): facing $039A = 8 (mirrored) for the right-hand column, 0 otherwise, pose $5A and next phase.","t":"code","b":[173,155,141],"m":"lda","o":"activity","oa":36251},{"a":12518,"t":"code","b":[201,43],"m":"cmp","o":"#$2B"},{"a":12520,"t":"code","b":[208,33],"m":"bne","o":"b_310B","oa":12555},{"a":12522,"t":"code","b":[165,45],"m":"lda","o":"idle_count_hi","oa":45},{"a":12524,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":12526,"t":"code","b":[176,5],"m":"bcs","o":"b_30F5","oa":12533},{"a":12528,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":12531,"t":"code","b":[208,22],"m":"bne","o":"b_310B","oa":12555},{"a":12533,"l":"b_30F5","t":"code","b":[169,39],"m":"lda","o":"#$27","x":[12526]},{"a":12535,"t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251},{"a":12538,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12540,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":12542,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":12544,"t":"code","b":[169,153],"m":"lda","o":"#$99"},{"a":12546,"t":"code","b":[162,141],"m":"ldx","o":"#$8D"},{"a":12548,"t":"code","b":[141,35,4],"m":"sta","o":"script_ptr","oa":1059},{"a":12551,"t":"code","b":[142,36,4],"m":"stx","o":"script_ptr_hi","oa":1060},{"a":12554,"t":"code","b":[96],"m":"rts"},{"a":12555,"l":"b_310B","t":"code","b":[173,178,48],"m":"lda","o":"cupboard_slot","oa":12466,"x":[12520,12531]},{"a":12558,"t":"code","b":[10],"m":"asl","o":"a"},{"a":12559,"t":"code","b":[10],"m":"asl","o":"a"},{"a":12560,"t":"code","b":[10],"m":"asl","o":"a"},{"a":12561,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":12563,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":12566,"t":"code","b":[169,90],"m":"lda","o":"#$5A"},{"a":12568,"t":"code","b":[208,2],"m":"bne","o":"b_311C","oa":12572},{"a":12570,"l":"pose_0d_next","c":"Activities 43 and 44: pose $0D for the person ($1ADF with X = 0) and next phase; cupboard_face_or_quit shares the tail with pose $5A.","t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":12572,"l":"b_311C","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[12568]},{"a":12574,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":12577,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":12580,"l":"cupboard_wait16","c":"Activities 43 and 44: waits 16 passes (cupboard_wait) and then advances the phase.","t":"code","b":[238,179,48],"m":"inc","o":"cupboard_wait","oa":12467},{"a":12583,"t":"code","b":[173,179,48],"m":"lda","o":"cupboard_wait","oa":12467},{"a":12586,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":12588,"t":"code","b":[208,180],"m":"bne","o":"r_30E2","oa":12514},{"a":12590,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":12593,"l":"show_food_item","c":"Shows the delivered food by the front door: set_carried_item ($AFB8) with frame 8 and colour 7 places figure 2, the item sprite, at location $2E ($1D64, $1D9B), makes it visible ($03C6 = $83) and advances the phase. Activity 44 phases 6 and 24.","t":"code","b":[169,8],"m":"lda","o":"#$08","x":[12469]},{"a":12595,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":12597,"t":"code","b":[76,184,175],"m":"jmp","o":"set_carried_item","oa":44984},{"a":12600,"l":"cupboard_bits_tmp","c":"Working copy of cupboard_food for draw_cupboard, shifted right one bit per place.","t":"byte","b":[0],"x":[12701,12716]},{"a":12601,"l":"act43_pick_full_place","c":"Activity 43 phase 0: from a random start (random routine $195E) tries the four places in turn for one whose cupboard_food bit is set, stores it in cupboard_slot (0 when none is) and advances.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":12604,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":12606,"t":"code","b":[170],"m":"tax"},{"a":12607,"l":"b_313F","t":"code","b":[138],"m":"txa","x":[12621]},{"a":12608,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":12610,"t":"code","b":[170],"m":"tax"},{"a":12611,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":12614,"t":"code","b":[61,207,49],"m":"and","o":"cupboard_bit,x","oa":12751},{"a":12617,"t":"code","b":[208,6],"m":"bne","o":"b_3151","oa":12625},{"a":12619,"t":"code","b":[232],"m":"inx"},{"a":12620,"t":"code","b":[136],"m":"dey"},{"a":12621,"t":"code","b":[16,240],"m":"bpl","o":"b_313F","oa":12607},{"a":12623,"l":"b_314F","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[12671]},{"a":12625,"l":"b_3151","t":"code","b":[142,178,48],"m":"stx","o":"cupboard_slot","oa":12466,"x":[12617,12665]},{"a":12628,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":12631,"l":"act43_take_item","c":"Activity 43 phase 7: flips the bit of cupboard_slot in cupboard_food (clearing it: the place was chosen full), redraws the cupboard and advances.","t":"code","b":[174,178,48],"m":"ldx","o":"cupboard_slot","oa":12466},{"a":12634,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":12637,"t":"code","b":[93,207,49],"m":"eor","o":"cupboard_bit,x","oa":12751},{"a":12640,"t":"code","b":[141,180,48],"m":"sta","o":"cupboard_food","oa":12468},{"a":12643,"t":"code","b":[32,152,49],"m":"jsr","o":"draw_cupboard","oa":12696},{"a":12646,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":12649,"l":"act44_pick_empty_place","c":"Activity 44 phases 10 and 13: like act43_pick_full_place, but finds a place whose bit is clear (0 when none is), stores it in cupboard_slot and advances.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":12652,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":12654,"t":"code","b":[170],"m":"tax"},{"a":12655,"l":"b_316F","t":"code","b":[138],"m":"txa","x":[12669]},{"a":12656,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":12658,"t":"code","b":[170],"m":"tax"},{"a":12659,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":12662,"t":"code","b":[61,207,49],"m":"and","o":"cupboard_bit,x","oa":12751},{"a":12665,"t":"code","b":[240,214],"m":"beq","o":"b_3151","oa":12625},{"a":12667,"t":"code","b":[232],"m":"inx"},{"a":12668,"t":"code","b":[136],"m":"dey"},{"a":12669,"t":"code","b":[16,240],"m":"bpl","o":"b_316F","oa":12655},{"a":12671,"t":"code","b":[48,206],"m":"bmi","o":"b_314F","oa":12623},{"a":12673,"l":"act44_store_item","c":"Activity 44 phase 20: clears $0391, sets the bit of cupboard_slot in cupboard_food, redraws the cupboard and advances.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12675,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":12678,"t":"code","b":[174,178,48],"m":"ldx","o":"cupboard_slot","oa":12466},{"a":12681,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":12684,"t":"code","b":[29,207,49],"m":"ora","o":"cupboard_bit,x","oa":12751},{"a":12687,"t":"code","b":[141,180,48],"m":"sta","o":"cupboard_food","oa":12468},{"a":12690,"t":"code","b":[32,152,49],"m":"jsr","o":"draw_cupboard","oa":12696},{"a":12693,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":12696,"l":"draw_cupboard","c":"Draws the food on the kitchen cupboard shelves from cupboard_food: for each place (X from 3 down, bit 0 first) writes five bitmap bytes at the address from cupboard_addr_lo/hi, which it patches into the STA at $31B8: cupboard_item_gfx when the bit is set, zeros when not. The places are char cells (6,19), (7,19), (6,20) and (7,20), the open shelves right of the fridge.","t":"code","b":[162,3],"m":"ldx","o":"#$03","x":[12643,12690]},{"a":12698,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":12701,"t":"code","b":[141,56,49],"m":"sta","o":"cupboard_bits_tmp","oa":12600},{"a":12704,"l":"b_31A0","t":"code","b":[189,194,49],"m":"lda","o":"cupboard_addr_lo,x","oa":12738,"x":[12735]},{"a":12707,"t":"code","b":[141,185,49],"m":"sta","o":"cupboard_store_lo","oa":12729},{"a":12710,"t":"code","b":[189,198,49],"m":"lda","o":"cupboard_addr_hi,x","oa":12742},{"a":12713,"t":"code","b":[141,186,49],"m":"sta","o":"cupboard_store_hi","oa":12730},{"a":12716,"t":"code","b":[78,56,49],"m":"lsr","o":"cupboard_bits_tmp","oa":12600},{"a":12719,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":12721,"l":"b_31B1","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[12732]},{"a":12723,"t":"code","b":[144,3],"m":"bcc","o":"b_31B8","oa":12728},{"a":12725,"t":"code","b":[185,202,49],"m":"lda","o":"cupboard_item_gfx,y","oa":12746},{"a":12728,"l":"b_31B8","t":"code","b":[153,0,96],"m":"sta","o":"house_bitmap,y","oa":24576,"x":[12723]},{"a":12729,"t":"note","l":"cupboard_store_lo","c":"Low byte of the STA $6000,Y operand at $31B8, rewritten by draw_cupboard for each place.","note":"inside the item at $31B8","x":[12707]},{"a":12730,"t":"note","l":"cupboard_store_hi","c":"High byte of that STA operand; draw_cupboard's inner and outer loop ends follow.","note":"inside the item at $31B8","x":[12713]},{"a":12731,"t":"code","b":[136],"m":"dey"},{"a":12732,"t":"code","b":[16,243],"m":"bpl","o":"b_31B1","oa":12721},{"a":12734,"t":"code","b":[202],"m":"dex"},{"a":12735,"t":"code","b":[16,223],"m":"bpl","o":"b_31A0","oa":12704},{"a":12737,"t":"code","b":[96],"m":"rts"},{"a":12738,"l":"cupboard_addr_lo","c":"Bitmap address, low bytes, of the four cupboard places: $F0, $F8, $30, $38.","t":"byte","b":[240,248,48,56],"x":[12704]},{"a":12742,"l":"cupboard_addr_hi","c":"High bytes of those addresses: $77, $77, $79, $79 ($77F0, $77F8, $7930, $7938).","t":"byte","b":[119,119,121,121],"x":[12710]},{"a":12746,"l":"cupboard_item_gfx","c":"The food item's five bitmap rows, top first: $15 $00 $15 $15 $15 (multicolour pixels of colour 01, one blank row).","t":"byte","b":[21,0,21,21,21],"x":[12725]},{"a":12751,"l":"cupboard_bit","c":"Bit of each cupboard place in cupboard_food: $08, $04, $02, $01.","t":"byte","b":[8,4,2,1],"x":[12434,12614,12637,12662,12684]},{"a":12755,"l":"set_doorway_c","c":"Activity 81 phase 3: $68 = $10 (doorway_script sequence C) and next phase.","t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":12757,"t":"code","b":[208,10],"m":"bne","o":"b_31E1","oa":12769},{"a":12759,"l":"set_doorway_d","c":"Activity 86 phase 0: $68 = $19 (doorway_script sequence D) and next phase.","t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":12761,"t":"code","b":[208,6],"m":"bne","o":"b_31E1","oa":12769},{"a":12763,"l":"set_doorway_a","c":"Activity 7 phase 4 and activity 97 phase 0: $68 = 0 (doorway_script sequence A) and next phase.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12765,"t":"code","b":[240,2],"m":"beq","o":"b_31E1","oa":12769},{"a":12767,"l":"set_doorway_b","c":"Activity 7 phase 14 and activity 100 phase 0: $68 = 9 (doorway_script sequence B); the four set_doorway entries share this STA $68 and JMP $8F0B.","t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":12769,"l":"b_31E1","t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104,"x":[12757,12761,12765]},{"a":12771,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":12774,"l":"doorway_script","c":"One step of a walk through a doorway, in which the person vanishes or reappears a column at a time: switch_68 through doorway_table. Sequence A ($68 = 0): a small step, then he walks 12 half-X units (24 pixels) right while his image is clipped from the right one more column per unit (fig_clip $0381 and the head's $0385, 1 to 12), and a pause of about 64 passes; B (9): he walks 12 back left while the clip shrinks to 0, then steps back. C ($10) and D ($19) do the same leftwards, clipping from the left (bit 7). The handlers step $68 themselves; the $8F0B that ends a sequence advances the calling activity's phase. Used by activities 7 (the fire, parser rules $C98A and $C99A: A, later B), 81 (C), 86 (D), 97 (A) and 100 (B).","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":12777,"l":"doorway_table","c":"doorway_script's 32 words (handler minus one), four sequences each ending with $8F0B. A from 0: dw_step_a, walk_sub_take_requests ($95ED), dw_clip_right, dw_walk, dw_clip_grow, dw_pause_start, dw_pause_wait, dw_nop. B from 9: dw_show, dw_walk, dw_clip_shrink, dw_clip_off, dw_step_a, $95ED. C from $10: dw_step_c, $95ED, dw_clip_left, dw_walk, dw_clip_grow, dw_pause_start, dw_pause_wait, dw_nop. D from $19: dw_show, dw_walk_right, dw_clip_shrink, dw_clip_off, dw_step_c, $95ED.","t":"word","b":[93,50,236,149,227,50,136,50],"d":[12893,38380,13027,12936]},{"a":12785,"t":"word","b":[60,51,174,50,184,50,211,50],"d":[13116,12974,12984,13011]},{"a":12793,"t":"word","b":[10,143,214,50,136,50,251,50],"d":[36618,13014,12936,13051]},{"a":12801,"t":"word","b":[238,50,93,50,236,149,10,143],"d":[13038,12893,38380,36618]},{"a":12809,"t":"word","b":[51,50,236,149,40,50,136,50],"d":[12851,38380,12840,12936]},{"a":12817,"t":"word","b":[60,51,174,50,184,50,211,50],"d":[13116,12974,12984,13011]},{"a":12825,"t":"word","b":[10,143,214,50,77,50,251,50],"d":[36618,13014,12877,13051]},{"a":12833,"t":"word","b":[238,50,51,50,236,149,10,143],"d":[13038,12851,38380,36618]},{"a":12841,"l":"dw_clip_left","c":"Sequence C: fig_clip $0381 and the head's $0385 = $81, one column clipped from the left; next step.","t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":12843,"t":"code","b":[141,129,3],"m":"sta","o":"fig_clip","oa":897},{"a":12846,"t":"code","b":[141,133,3],"m":"sta","o":"fig_clip_head","oa":901},{"a":12849,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":12852,"l":"dw_step_c","c":"Sequences C and D: destination floor line = the person's ($03AF to $1D6C) and dw_last_x = 0; at step $10 the same X/2 with depth + 3, otherwise X/2 + 3 with depth - 3 (fig_depth $03B3); then the shared tail of dw_step_a makes it his destination.","t":"code","b":[164,104],"m":"ldy","o":"activity_subphase","oa":104},{"a":12854,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":12857,"t":"code","b":[141,108,29],"m":"sta","o":"location_y_custom","oa":7532},{"a":12860,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":12862,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":12864,"t":"code","b":[141,250,50],"m":"sta","o":"dw_last_x","oa":13050},{"a":12867,"t":"code","b":[192,16],"m":"cpy","o":"#$10"},{"a":12869,"t":"code","b":[240,43],"m":"beq","o":"b_3272","oa":12914},{"a":12871,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":12873,"t":"code","b":[162,253],"m":"ldx","o":"#$FD"},{"a":12875,"t":"code","b":[76,114,50],"m":"jmp","o":"b_3272","oa":12914},{"a":12878,"l":"dw_walk_right","c":"Sequence D: dw_walk with $68 forced to 3, so the destination is X/2 + 12 rather than - 12; restores $68 and goes to the next step.","t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104},{"a":12880,"t":"code","b":[72],"m":"pha"},{"a":12881,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":12883,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":12885,"t":"code","b":[32,137,50],"m":"jsr","o":"dw_walk","oa":12937},{"a":12888,"t":"code","b":[104],"m":"pla"},{"a":12889,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":12891,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":12894,"l":"dw_step_a","c":"Sequences A and B: destination = the person's place ($03AF, $03A3, $03B3 into the scratch location $1D6C, $1DA3, $1DDA) with X/2 and depth + 3 at step 0 and - 3 otherwise; destination $36 through set_person_destination ($AB63) and next step. $3272 onwards is shared with dw_step_c, and $3286 (INC $68) is every handler's 'next step'.","t":"code","b":[174,175,3],"m":"ldx","o":"fig_floor_y","oa":943},{"a":12897,"t":"code","b":[142,108,29],"m":"stx","o":"location_y_custom","oa":7532},{"a":12900,"t":"code","b":[164,104],"m":"ldy","o":"activity_subphase","oa":104},{"a":12902,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":12904,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":12906,"t":"code","b":[164,104],"m":"ldy","o":"activity_subphase","oa":104},{"a":12908,"t":"code","b":[240,4],"m":"beq","o":"b_3272","oa":12914},{"a":12910,"t":"code","b":[169,253],"m":"lda","o":"#$FD"},{"a":12912,"t":"code","b":[162,253],"m":"ldx","o":"#$FD"},{"a":12914,"l":"b_3272","t":"code","b":[24],"m":"clc","x":[12869,12875,12908]},{"a":12915,"t":"code","b":[109,163,3],"m":"adc","o":"fig_x_half","oa":931},{"a":12918,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":12921,"t":"code","b":[138],"m":"txa"},{"a":12922,"t":"code","b":[24],"m":"clc"},{"a":12923,"t":"code","b":[109,179,3],"m":"adc","o":"fig_depth","oa":947},{"a":12926,"t":"code","b":[141,218,29],"m":"sta","o":"location_depth_custom","oa":7642},{"a":12929,"l":"j_3281","t":"code","b":[169,54],"m":"lda","o":"#$36","x":[12972]},{"a":12931,"t":"code","b":[32,99,171],"m":"jsr","o":"set_person_destination","oa":43875},{"a":12934,"l":"j_3286","t":"code","b":[230,104],"m":"inc","o":"activity_subphase","oa":104,"x":[12849,12891,12980,12990,13009,13012,13025,13036,13047,13114]},{"a":12936,"t":"code","b":[96],"m":"rts"},{"a":12937,"l":"dw_walk","c":"Sequences A-D: destination at the person's floor line and depth, X/2 + 12 when $68 is 3 and - 12 otherwise; remembers the starting X/2 in dw_last_x, sets destination $36 (the scratch location) and next step.","t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943,"x":[12885]},{"a":12940,"t":"code","b":[141,108,29],"m":"sta","o":"location_y_custom","oa":7532},{"a":12943,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":12946,"t":"code","b":[141,218,29],"m":"sta","o":"location_depth_custom","oa":7642},{"a":12949,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":12951,"t":"code","b":[164,104],"m":"ldy","o":"activity_subphase","oa":104},{"a":12953,"t":"code","b":[192,3],"m":"cpy","o":"#$03"},{"a":12955,"t":"code","b":[240,2],"m":"beq","o":"b_329F","oa":12959},{"a":12957,"t":"code","b":[169,244],"m":"lda","o":"#$F4"},{"a":12959,"l":"b_329F","t":"code","b":[24],"m":"clc","x":[12955]},{"a":12960,"t":"code","b":[109,163,3],"m":"adc","o":"fig_x_half","oa":931},{"a":12963,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":12966,"t":"code","b":[173,163,3],"m":"lda","o":"fig_x_half","oa":931},{"a":12969,"t":"code","b":[141,250,50],"m":"sta","o":"dw_last_x","oa":13050},{"a":12972,"t":"code","b":[76,129,50],"m":"jmp","o":"j_3281","oa":12929},{"a":12975,"l":"dw_pause_start","c":"Sequences A and C: dw_pause = 8, next step.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":12977,"t":"code","b":[141,184,50],"m":"sta","o":"dw_pause","oa":12984},{"a":12980,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":12983,"l":"dw_pause_tick","c":"Pass counter of dw_pause_wait: the pause counts down once every 8 passes.","t":"byte","b":[64],"x":[12993,12996]},{"a":12984,"l":"dw_pause","c":"Pause left in dw_pause_wait, in units of 8 passes (8 at the start, so 64 passes).","t":"byte","b":[0],"x":[12977,13004]},{"a":12985,"l":"dw_pause_wait","c":"Sequences A and C: waits dw_pause x 8 passes, or goes on at once when a request is pending (request_pending $8F86 non-zero).","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":12988,"t":"code","b":[240,3],"m":"beq","o":"b_32C1","oa":12993},{"a":12990,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":12993,"l":"b_32C1","t":"code","b":[238,183,50],"m":"inc","o":"dw_pause_tick","oa":12983,"x":[12988]},{"a":12996,"t":"code","b":[173,183,50],"m":"lda","o":"dw_pause_tick","oa":12983},{"a":12999,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":13001,"t":"code","b":[240,1],"m":"beq","o":"b_32CC","oa":13004},{"a":13003,"l":"r_32CB","t":"code","b":[96],"m":"rts","x":[13007]},{"a":13004,"l":"b_32CC","t":"code","b":[206,184,50],"m":"dec","o":"dw_pause","oa":12984,"x":[13001]},{"a":13007,"t":"code","b":[208,250],"m":"bne","o":"r_32CB","oa":13003},{"a":13009,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":13012,"l":"dw_nop","c":"Sequences A and C: a step that only moves on to the next.","t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":13015,"l":"dw_show","c":"Sequences B and D, first step: fig_flags of the body $83 and of the head $82 ($03C4, $03C8: visible, image to be rebuilt), next step.","t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":13017,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":13020,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":13022,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":13025,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":13028,"l":"dw_clip_right","c":"Sequence A: fig_clip $0381 and $0385 = 1, one column clipped from the right; next step.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":13030,"t":"code","b":[141,129,3],"m":"sta","o":"fig_clip","oa":897},{"a":13033,"t":"code","b":[141,133,3],"m":"sta","o":"fig_clip_head","oa":901},{"a":13036,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":13039,"l":"dw_clip_off","c":"Sequences B and D: fig_clip $0381 and $0385 = 0, no clipping; next step.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13041,"t":"code","b":[141,129,3],"m":"sta","o":"fig_clip","oa":897},{"a":13044,"t":"code","b":[141,133,3],"m":"sta","o":"fig_clip_head","oa":901},{"a":13047,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":13050,"l":"dw_last_x","c":"The person's X/2 ($03A3) when the clip last changed; the clip changes once per unit he moves. $32FB after it is not referenced.","t":"byte","b":[0,0],"x":[12864,12969,13055,13060,13120,13125]},{"a":13052,"l":"dw_clip_shrink","c":"Sequences B and D: each pass on which the person's X/2 differs from dw_last_x, one column less is clipped (fig_clip $0381, bit 7 kept; $0385 the same) and bit 1 of fig_flags $03C4 and $03C8 asks for both images to be rebuilt; when X/2 has not changed, or the clip is already 0, and he is not moving ($03BC = 0), next step.","t":"code","b":[173,163,3],"m":"lda","o":"fig_x_half","oa":931},{"a":13055,"t":"code","b":[205,250,50],"m":"cmp","o":"dw_last_x","oa":13050},{"a":13058,"t":"code","b":[240,49],"m":"beq","o":"b_3335","oa":13109},{"a":13060,"t":"code","b":[141,250,50],"m":"sta","o":"dw_last_x","oa":13050},{"a":13063,"t":"code","b":[173,129,3],"m":"lda","o":"fig_clip","oa":897},{"a":13066,"t":"code","b":[141,133,3],"m":"sta","o":"fig_clip_head","oa":901},{"a":13069,"t":"code","b":[168],"m":"tay"},{"a":13070,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":13072,"t":"code","b":[240,35],"m":"beq","o":"b_3335","oa":13109},{"a":13074,"t":"code","b":[56],"m":"sec"},{"a":13075,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":13077,"l":"j_3315","t":"code","b":[141,129,3],"m":"sta","o":"fig_clip","oa":897,"x":[13140]},{"a":13080,"t":"code","b":[152],"m":"tya"},{"a":13081,"t":"code","b":[41,128],"m":"and","o":"#$80"},{"a":13083,"t":"code","b":[13,129,3],"m":"ora","o":"fig_clip","oa":897},{"a":13086,"t":"code","b":[141,129,3],"m":"sta","o":"fig_clip","oa":897},{"a":13089,"t":"code","b":[141,133,3],"m":"sta","o":"fig_clip_head","oa":901},{"a":13092,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":13095,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":13097,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":13100,"t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968},{"a":13103,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":13105,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":13108,"l":"r_3334","t":"code","b":[96],"m":"rts","x":[13112,13137]},{"a":13109,"l":"b_3335","t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956,"x":[13058,13072,13123]},{"a":13112,"t":"code","b":[208,250],"m":"bne","o":"r_3334","oa":13108},{"a":13114,"t":"code","b":[76,134,50],"m":"jmp","o":"j_3286","oa":12934},{"a":13117,"l":"dw_clip_grow","c":"Sequences A and C: as dw_clip_shrink but clipping one column more per unit, stopping at 12 (the whole image); next step when X/2 no longer changes and $03BC is 0.","t":"code","b":[173,163,3],"m":"lda","o":"fig_x_half","oa":931},{"a":13120,"t":"code","b":[205,250,50],"m":"cmp","o":"dw_last_x","oa":13050},{"a":13123,"t":"code","b":[240,240],"m":"beq","o":"b_3335","oa":13109},{"a":13125,"t":"code","b":[141,250,50],"m":"sta","o":"dw_last_x","oa":13050},{"a":13128,"t":"code","b":[172,129,3],"m":"ldy","o":"fig_clip","oa":897},{"a":13131,"t":"code","b":[200],"m":"iny"},{"a":13132,"t":"code","b":[152],"m":"tya"},{"a":13133,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":13135,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":13137,"t":"code","b":[240,225],"m":"beq","o":"r_3334","oa":13108},{"a":13139,"t":"code","b":[152],"m":"tya"},{"a":13140,"t":"code","b":[76,21,51],"m":"jmp","o":"j_3315","oa":13077},{"a":13143,"l":"act81_target","c":"Activity 81 phase 0: the scratch location moved 9 right ($1DA3 + 9) with depth $0C, destination $36 (set_person_destination) and next phase.","t":"code","b":[173,163,29],"m":"lda","o":"location_x_custom","oa":7587},{"a":13146,"t":"code","b":[24],"m":"clc"},{"a":13147,"t":"code","b":[105,9],"m":"adc","o":"#$09"},{"a":13149,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":13152,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":13154,"t":"code","b":[141,218,29],"m":"sta","o":"location_depth_custom","oa":7642},{"a":13157,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":13159,"t":"code","b":[32,99,171],"m":"jsr","o":"set_person_destination","oa":43875},{"a":13162,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":13165,"l":"unused_336D","c":"Code that nothing reaches (no JSR, JMP, branch or table word points here; the JMP $8F0B before it ends act81_target): LDA #0, STA $68, JMP $8F0B.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13167,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":13169,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":13172,"l":"bed_tick","c":"Pass counter of every_8th_pass, shared by activities 30 and 31.","t":"byte","b":[1],"x":[13401,13404]},{"a":13173,"l":"act30_to_bed","c":"Activity 30, which the activity chooser starts at $E243 when $0368 is 0 and either schedule_step ($035D) is 0 (the night: from the evening until the alarm) or the illness level $0365 is 3 or more. Switches on $68, not $4C, through act30_phase_table: walk to location $12 (the bed, middle floor left), divert to a drink or to activity 4 if one is due, turn, then four timed moves with poses $2E, $31, $32, $33 (17 pixels left in all) and $0368 = $FF. While $0368 is set the chooser ($E389) runs activity 31 before any other activity except 46.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":13176,"l":"act30_phase_table","c":"Activity 30's steps, chosen by $68 through switch_68 (10 words, handler minus one): act30_walk_to_bed, act30_check_needs, act30_turn, bed_move_0, bed_move_1, bed_move_2, bed_move_3, act30_set_state, act_bed_finish, $8F0E.","t":"word","b":[228,51,158,51,241,51,254,51],"d":[13284,13214,13297,13310]},{"a":13184,"t":"word","b":[22,52,42,52,62,52,220,51],"d":[13334,13354,13374,13276]},{"a":13192,"t":"word","b":[199,51,13,143],"d":[13255,36621]},{"a":13196,"l":"act31_get_up","c":"Activity 31, started by the activity chooser at $E255 (a request pending, or schedule_step non-zero, daytime, with the illness level below 3) and put first by $E391 while $0368 is set. Switches on $68 through act31_phase_table: the four moves of activity 30 in reverse (17 pixels right), a pause, $0368 = 0.","t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":13199,"l":"act31_phase_table","c":"Activity 31's steps (8 words, handler minus one): bed_move_3, bed_move_2, bed_move_1, bed_move_0, act31_wait_step, act31_clear_state, act_bed_finish, $8F0E.","t":"word","b":[62,52,42,52,22,52,254,51],"d":[13374,13354,13334,13310]},{"a":13207,"t":"word","b":[82,52,204,51,199,51,13,143],"d":[13394,13260,13255,36621]},{"a":13215,"l":"act30_check_needs","c":"Activity 30 step 1: if there is water (water_level $2B51 non-zero) and water_need $036E is 2 or more, switches to activity 29 (a drink); otherwise, if act4_request $0374 is set, to activity 4 (script $9076). Either switch clears the phase counters and empties the queued list ($0423/$0424 = $8D99). With neither, carries on through walk_sub_take_requests ($95ED).","t":"code","b":[162,29],"m":"ldx","o":"#$1D"},{"a":13217,"t":"code","b":[173,81,43],"m":"lda","o":"water_level","oa":11089},{"a":13220,"t":"code","b":[240,7],"m":"beq","o":"b_33AD","oa":13229},{"a":13222,"t":"code","b":[173,110,3],"m":"lda","o":"water_need","oa":878},{"a":13225,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":13227,"t":"code","b":[176,10],"m":"bcs","o":"b_33B7","oa":13239},{"a":13229,"l":"b_33AD","t":"code","b":[162,4],"m":"ldx","o":"#$04","x":[13220]},{"a":13231,"t":"code","b":[173,116,3],"m":"lda","o":"act4_request","oa":884},{"a":13234,"t":"code","b":[208,3],"m":"bne","o":"b_33B7","oa":13239},{"a":13236,"t":"code","b":[76,237,149],"m":"jmp","o":"walk_sub_take_requests","oa":38381},{"a":13239,"l":"b_33B7","t":"code","b":[142,155,141],"m":"stx","o":"activity","oa":36251,"x":[13227,13234]},{"a":13242,"t":"code","b":[32,86,171],"m":"jsr","o":"activity_reset_phase","oa":43862},{"a":13245,"t":"code","b":[169,153],"m":"lda","o":"#$99"},{"a":13247,"t":"code","b":[162,141],"m":"ldx","o":"#$8D"},{"a":13249,"t":"code","b":[141,35,4],"m":"sta","o":"script_ptr","oa":1059},{"a":13252,"t":"code","b":[142,36,4],"m":"stx","o":"script_ptr_hi","oa":1060},{"a":13255,"t":"code","b":[96],"m":"rts"},{"a":13256,"l":"act_bed_finish","c":"Last step of activities 30 and 31: increments $4C as well as $68.","t":"code","b":[230,76],"m":"inc","o":"activity_phase","oa":76},{"a":13258,"t":"code","b":[76,239,51],"m":"jmp","o":"j_33EF","oa":13295},{"a":13261,"l":"act31_clear_state","c":"Activity 31 step 5: $0368 = 0; when $0432 is non-zero calls $2E71, a CLC/RTS stub; next step.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13263,"t":"code","b":[141,104,3],"m":"sta","o":"act_flag_0368","oa":872},{"a":13266,"t":"code","b":[173,50,4],"m":"lda","o":"act_timer_running","oa":1074},{"a":13269,"t":"code","b":[240,3],"m":"beq","o":"b_33DA","oa":13274},{"a":13271,"t":"code","b":[32,113,46],"m":"jsr","o":"stub_clc","oa":11889},{"a":13274,"l":"b_33DA","t":"code","b":[76,239,51],"m":"jmp","o":"j_33EF","oa":13295,"x":[13269]},{"a":13277,"l":"act30_set_state","c":"Activity 30 step 7: $0368 = $FF, next step.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":13279,"t":"code","b":[141,104,3],"m":"sta","o":"act_flag_0368","oa":872},{"a":13282,"t":"code","b":[76,239,51],"m":"jmp","o":"j_33EF","oa":13295},{"a":13285,"l":"act30_walk_to_bed","c":"Activity 30 step 0: set_custom_location ($16AE) with location $12 (floor line $A5, X/2 $22: beside the bed), destination $36 through set_person_destination, next step. $33EF (INC $68) is the 'next step' of activities 30 and 31.","t":"code","b":[162,18],"m":"ldx","o":"#$12"},{"a":13287,"t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806},{"a":13290,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":13292,"t":"code","b":[32,99,171],"m":"jsr","o":"set_person_destination","oa":43875},{"a":13295,"l":"j_33EF","t":"code","b":[230,104],"m":"inc","o":"activity_subphase","oa":104,"x":[13258,13274,13282,13308,13331,13398]},{"a":13297,"t":"code","b":[96],"m":"rts"},{"a":13298,"l":"act30_turn","c":"Activity 30 step 2: turn_to_pose ($255B) to pose 8 with facing 0, each pass; next step once turn_busy ($2540) is 0.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":13300,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":13302,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":13305,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":13308,"t":"code","b":[240,241],"m":"beq","o":"j_33EF","oa":13295},{"a":13310,"t":"code","b":[96],"m":"rts"},{"a":13311,"l":"bed_move_0","c":"Activity 30 step 3 and activity 31 step 3: every eighth pass moves the person's x by 0 (or +10 while $0368 is set, getting up), pose $2E, next step. The RTS at $3416 after it is never reached.","t":"code","b":[32,89,52],"m":"jsr","o":"every_8th_pass","oa":13401},{"a":13314,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13316,"t":"code","b":[174,104,3],"m":"ldx","o":"act_flag_0368","oa":872},{"a":13319,"t":"code","b":[240,2],"m":"beq","o":"b_340B","oa":13323},{"a":13321,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":13323,"l":"b_340B","t":"code","b":[32,102,52],"m":"jsr","o":"nudge_person_x","oa":13414,"x":[13319]},{"a":13326,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":13328,"l":"j_3410","t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731,"x":[13352,13372,13392]},{"a":13331,"t":"code","b":[76,239,51],"m":"jmp","o":"j_33EF","oa":13295},{"a":13334,"t":"code","b":[96],"m":"rts"},{"a":13335,"l":"bed_move_1","c":"Activity 30 step 4 and 31 step 2: every eighth pass x - 10 (getting up +8), pose $31, next step.","t":"code","b":[32,89,52],"m":"jsr","o":"every_8th_pass","oa":13401},{"a":13338,"t":"code","b":[169,246],"m":"lda","o":"#$F6"},{"a":13340,"t":"code","b":[174,104,3],"m":"ldx","o":"act_flag_0368","oa":872},{"a":13343,"t":"code","b":[240,2],"m":"beq","o":"b_3423","oa":13347},{"a":13345,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":13347,"l":"b_3423","t":"code","b":[32,102,52],"m":"jsr","o":"nudge_person_x","oa":13414,"x":[13343]},{"a":13350,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":13352,"t":"code","b":[76,16,52],"m":"jmp","o":"j_3410","oa":13328},{"a":13355,"l":"bed_move_2","c":"Activity 30 step 5 and 31 step 1: every eighth pass x - 8 (getting up - 1), pose $32, next step.","t":"code","b":[32,89,52],"m":"jsr","o":"every_8th_pass","oa":13401},{"a":13358,"t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":13360,"t":"code","b":[174,104,3],"m":"ldx","o":"act_flag_0368","oa":872},{"a":13363,"t":"code","b":[240,2],"m":"beq","o":"b_3437","oa":13367},{"a":13365,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":13367,"l":"b_3437","t":"code","b":[32,102,52],"m":"jsr","o":"nudge_person_x","oa":13414,"x":[13363]},{"a":13370,"t":"code","b":[169,50],"m":"lda","o":"#$32"},{"a":13372,"t":"code","b":[76,16,52],"m":"jmp","o":"j_3410","oa":13328},{"a":13375,"l":"bed_move_3","c":"Activity 30 step 6 and 31 step 0: every eighth pass x + 1 (getting up 0), pose $33, next step.","t":"code","b":[32,89,52],"m":"jsr","o":"every_8th_pass","oa":13401},{"a":13378,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":13380,"t":"code","b":[174,104,3],"m":"ldx","o":"act_flag_0368","oa":872},{"a":13383,"t":"code","b":[240,2],"m":"beq","o":"b_344B","oa":13387},{"a":13385,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13387,"l":"b_344B","t":"code","b":[32,102,52],"m":"jsr","o":"nudge_person_x","oa":13414,"x":[13383]},{"a":13390,"t":"code","b":[169,51],"m":"lda","o":"#$33"},{"a":13392,"t":"code","b":[76,16,52],"m":"jmp","o":"j_3410","oa":13328},{"a":13395,"l":"act31_wait_step","c":"Activity 31 step 4: waits for the next eighth pass, then next step.","t":"code","b":[32,89,52],"m":"jsr","o":"every_8th_pass","oa":13401},{"a":13398,"t":"code","b":[76,239,51],"m":"jmp","o":"j_33EF","oa":13295},{"a":13401,"l":"every_8th_pass","c":"Returns normally only when bed_tick, incremented here, is a multiple of 8; otherwise pulls its return address and so returns from the calling handler too, leaving the step for another pass.","t":"code","b":[238,116,51],"m":"inc","o":"bed_tick","oa":13172,"x":[13311,13335,13355,13375,13395]},{"a":13404,"t":"code","b":[173,116,51],"m":"lda","o":"bed_tick","oa":13172},{"a":13407,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":13409,"t":"code","b":[240,2],"m":"beq","o":"r_3465","oa":13413},{"a":13411,"t":"code","b":[104],"m":"pla"},{"a":13412,"t":"code","b":[104],"m":"pla"},{"a":13413,"l":"r_3465","t":"code","b":[96],"m":"rts","x":[13409]},{"a":13414,"l":"nudge_person_x","c":"Adds A to fig_x of the person ($03A7, in sprite units, twice fig_x_half) and sets bit 0 of fig_flags $03C4.","t":"code","b":[24],"m":"clc","x":[13323,13347,13367,13387]},{"a":13415,"t":"code","b":[109,167,3],"m":"adc","o":"fig_x","oa":935},{"a":13418,"t":"code","b":[141,167,3],"m":"sta","o":"fig_x","oa":935},{"a":13421,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":13424,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":13426,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":13429,"t":"code","b":[96],"m":"rts"},{"a":13430,"l":"sound_requests","c":"Main-loop sound scheduler, called once per pass from $0974. If $801F is set (a tune ended, tune_end, or stereo_off at $9280) it first resets all sound (sound_reset), stops the CIA music timers ($8012) and clears $801F and the music flag $801E. Then it serves the highest-numbered request slot that is non-zero (snd_req_water $3560 to snd_req_alarm_off $3575, 22 slots) by patching its handler from snd_slot_handlers into the JMP at $34A2 (X = slot) and returns from there. With no slot requested it goes on to play_oneshots and footsteps. The sounds are started through the sound driver's jump table at $B000: sound_start_a ($B009, set A) and sound_start_b ($B006, set B).","t":"code","b":[173,31,128],"m":"lda","o":"music_stop_req","oa":32799,"x":[2420]},{"a":13433,"t":"code","b":[240,14],"m":"beq","o":"b_3489","oa":13449},{"a":13435,"t":"code","b":[32,19,55],"m":"jsr","o":"sound_reset","oa":14099},{"a":13438,"t":"code","b":[32,18,128],"m":"jsr","o":"music_stop_jmp","oa":32786},{"a":13441,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13443,"t":"code","b":[141,31,128],"m":"sta","o":"music_stop_req","oa":32799},{"a":13446,"t":"code","b":[141,30,128],"m":"sta","o":"music_playing","oa":32798},{"a":13449,"l":"b_3489","t":"code","b":[162,22],"m":"ldx","o":"#$16","x":[13433]},{"a":13451,"l":"b_348B","t":"code","b":[202],"m":"dex","x":[13457,13895]},{"a":13452,"t":"code","b":[48,23],"m":"bmi","o":"play_oneshots","oa":13477},{"a":13454,"t":"code","b":[189,96,53],"m":"lda","o":"snd_req_water,x","oa":13664},{"a":13457,"t":"code","b":[240,248],"m":"beq","o":"b_348B","oa":13451},{"a":13459,"t":"code","b":[138],"m":"txa"},{"a":13460,"t":"code","b":[10],"m":"asl","o":"a"},{"a":13461,"t":"code","b":[168],"m":"tay"},{"a":13462,"t":"code","b":[185,124,53],"m":"lda","o":"snd_slot_handlers,y","oa":13692},{"a":13465,"t":"code","b":[141,163,52],"m":"sta","o":"snd_handler_lo","oa":13475},{"a":13468,"t":"code","b":[185,125,53],"m":"lda","o":"snd_slot_handlers_hi,y","oa":13693},{"a":13471,"t":"code","b":[141,164,52],"m":"sta","o":"snd_handler_hi","oa":13476},{"a":13474,"t":"code","b":[76,228,53],"m":"jmp","o":"play_to_end","oa":13796},{"a":13475,"t":"note","l":"snd_handler_lo","c":"Low byte of the JMP operand at $34A2, rewritten from snd_slot_handlers for the slot being served.","note":"inside the item at $34A2","x":[13465]},{"a":13476,"t":"note","l":"snd_handler_hi","c":"High byte of that JMP operand.","note":"inside the item at $34A2","x":[13471]},{"a":13477,"l":"play_oneshots","c":"Reached when no slot is requested: for each of the four one-shot triggers (snd_oneshot_0b to snd_oneshot_02) that is set, starts its sound from snd_oneshot_sound on set A (sound_start_a, $B009) and clears the trigger; then falls into footsteps.","t":"code","b":[162,4],"m":"ldx","o":"#$04","x":[13452]},{"a":13479,"l":"b_34A7","t":"code","b":[202],"m":"dex","x":[13485,13498]},{"a":13480,"t":"code","b":[48,18],"m":"bmi","o":"footsteps","oa":13500},{"a":13482,"t":"code","b":[189,92,53],"m":"lda","o":"snd_oneshot_0b,x","oa":13660},{"a":13485,"t":"code","b":[240,248],"m":"beq","o":"b_34A7","oa":13479},{"a":13487,"t":"code","b":[189,10,55],"m":"lda","o":"snd_oneshot_sound,x","oa":14090},{"a":13490,"t":"code","b":[32,9,176],"m":"jsr","o":"sound_start_a_jmp","oa":45065},{"a":13493,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13495,"t":"code","b":[157,92,53],"m":"sta","o":"snd_oneshot_0b,x","oa":13660},{"a":13498,"t":"code","b":[240,235],"m":"beq","o":"b_34A7","oa":13479},{"a":13500,"l":"footsteps","c":"Footstep sounds for the person (Y = 0) and the dog (Y = 1). When a figure's pose ($038B,Y) is below 5 and equals the pose expected next (step_next,Y: 0 or 4), step_next flips through step_next_table and a sound is chosen by floor and x: none at y $65 (the attic floor); at y $A5 (middle floor) only for x $54-$83, step_mid_l/step_mid_r; at any other y (the ground floor, or on the stairs between floors) only for x below $5C, step_low_l/step_low_r; the pose (0 or 4) picks the l or r sound. Those x ranges are the tiled bathroom and kitchen floors of the picture (screen x about 2 x - 24). For the person, poses 9, 13 and 17 (the first of three runs of four, step_run_start/step_run_end) also play step_stair_sound, once per visit (step_stair_count).","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[13480]},{"a":13502,"l":"b_34BE","t":"code","b":[185,139,3],"m":"lda","o":"fig_frame,y","oa":907,"x":[13579]},{"a":13505,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":13507,"t":"code","b":[144,54],"m":"bcc","o":"b_34FB","oa":13563},{"a":13509,"t":"code","b":[192,0],"m":"cpy","o":"#$00"},{"a":13511,"t":"code","b":[208,65],"m":"bne","o":"b_350A","oa":13578},{"a":13513,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":13515,"l":"b_34CB","t":"code","b":[202],"m":"dex","x":[13521]},{"a":13516,"t":"code","b":[48,60],"m":"bmi","o":"b_350A","oa":13578},{"a":13518,"t":"code","b":[221,14,55],"m":"cmp","o":"step_run_end,x","oa":14094},{"a":13521,"t":"code","b":[176,248],"m":"bcs","o":"b_34CB","oa":13515},{"a":13523,"t":"code","b":[56],"m":"sec"},{"a":13524,"t":"code","b":[253,15,55],"m":"sbc","o":"step_run_start,x","oa":14095},{"a":13527,"t":"code","b":[48,49],"m":"bmi","o":"b_350A","oa":13578},{"a":13529,"t":"code","b":[208,21],"m":"bne","o":"b_34F0","oa":13552},{"a":13531,"t":"code","b":[173,90,53],"m":"lda","o":"step_stair_count","oa":13658},{"a":13534,"t":"code","b":[48,42],"m":"bmi","o":"b_350A","oa":13578},{"a":13536,"t":"code","b":[24],"m":"clc"},{"a":13537,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":13539,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":13541,"t":"code","b":[141,90,53],"m":"sta","o":"step_stair_count","oa":13658},{"a":13544,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":13546,"t":"code","b":[170],"m":"tax"},{"a":13547,"t":"code","b":[189,88,53],"m":"lda","o":"step_stair_sound,x","oa":13656},{"a":13550,"t":"code","b":[208,59],"m":"bne","o":"b_352B","oa":13611},{"a":13552,"l":"b_34F0","t":"code","b":[173,90,53],"m":"lda","o":"step_stair_count","oa":13658,"x":[13529]},{"a":13555,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":13557,"t":"code","b":[141,90,53],"m":"sta","o":"step_stair_count","oa":13658},{"a":13560,"t":"code","b":[76,10,53],"m":"jmp","o":"b_350A","oa":13578},{"a":13563,"l":"b_34FB","t":"code","b":[217,78,53],"m":"cmp","o":"step_next,y","oa":13646,"x":[13507]},{"a":13566,"t":"code","b":[208,10],"m":"bne","o":"b_350A","oa":13578},{"a":13568,"t":"code","b":[170],"m":"tax"},{"a":13569,"t":"code","b":[189,73,53],"m":"lda","o":"step_next_table,x","oa":13641},{"a":13572,"t":"code","b":[153,78,53],"m":"sta","o":"step_next,y","oa":13646},{"a":13575,"t":"code","b":[76,14,53],"m":"jmp","o":"j_350E","oa":13582},{"a":13578,"l":"b_350A","t":"code","b":[136],"m":"dey","x":[13511,13516,13527,13534,13560,13566,13587,13598,13614,13622,13626]},{"a":13579,"t":"code","b":[16,177],"m":"bpl","o":"b_34BE","oa":13502},{"a":13581,"t":"code","b":[96],"m":"rts"},{"a":13582,"l":"j_350E","t":"code","b":[185,175,3],"m":"lda","o":"fig_floor_y,y","oa":943,"x":[13575]},{"a":13585,"t":"code","b":[201,101],"m":"cmp","o":"#$65"},{"a":13587,"t":"code","b":[240,245],"m":"beq","o":"b_350A","oa":13578},{"a":13589,"t":"code","b":[201,165],"m":"cmp","o":"#$A5"},{"a":13591,"t":"code","b":[240,24],"m":"beq","o":"b_3531","oa":13617},{"a":13593,"t":"code","b":[185,163,3],"m":"lda","o":"fig_x_half,y","oa":931},{"a":13596,"t":"code","b":[201,92],"m":"cmp","o":"#$5C"},{"a":13598,"t":"code","b":[176,234],"m":"bcs","o":"b_350A","oa":13578},{"a":13600,"t":"code","b":[138],"m":"txa"},{"a":13601,"t":"code","b":[208,5],"m":"bne","o":"b_3528","oa":13608},{"a":13603,"t":"code","b":[185,84,53],"m":"lda","o":"step_low_l,y","oa":13652},{"a":13606,"t":"code","b":[208,3],"m":"bne","o":"b_352B","oa":13611},{"a":13608,"l":"b_3528","t":"code","b":[185,86,53],"m":"lda","o":"step_low_r,y","oa":13654,"x":[13601]},{"a":13611,"l":"b_352B","t":"code","b":[32,9,176],"m":"jsr","o":"sound_start_a_jmp","oa":45065,"x":[13550,13606,13634,13639]},{"a":13614,"t":"code","b":[76,10,53],"m":"jmp","o":"b_350A","oa":13578},{"a":13617,"l":"b_3531","t":"code","b":[185,163,3],"m":"lda","o":"fig_x_half,y","oa":931,"x":[13591]},{"a":13620,"t":"code","b":[201,84],"m":"cmp","o":"#$54"},{"a":13622,"t":"code","b":[144,210],"m":"bcc","o":"b_350A","oa":13578},{"a":13624,"t":"code","b":[201,132],"m":"cmp","o":"#$84"},{"a":13626,"t":"code","b":[176,206],"m":"bcs","o":"b_350A","oa":13578},{"a":13628,"t":"code","b":[138],"m":"txa"},{"a":13629,"t":"code","b":[208,5],"m":"bne","o":"b_3544","oa":13636},{"a":13631,"t":"code","b":[185,80,53],"m":"lda","o":"step_mid_l,y","oa":13648},{"a":13634,"t":"code","b":[208,231],"m":"bne","o":"b_352B","oa":13611},{"a":13636,"l":"b_3544","t":"code","b":[185,82,53],"m":"lda","o":"step_mid_r,y","oa":13650,"x":[13629]},{"a":13639,"t":"code","b":[208,226],"m":"bne","o":"b_352B","oa":13611},{"a":13641,"l":"step_next_table","c":"Pose expected next after a step on pose 0-4: $04 $04 $04 $04 $00, so the steps alternate between poses 0 and 4.","t":"byte","b":[4,4,4,4,0],"x":[13569]},{"a":13646,"l":"step_next","c":"Pose that makes the next footstep sound: $354E the person, $354F the dog (0 or 4).","t":"byte","b":[4,0],"x":[13563,13572]},{"a":13648,"l":"step_mid_l","c":"Middle-floor step sound on pose 0: person 4, dog 9.","t":"byte","b":[4,9],"x":[13631]},{"a":13650,"l":"step_mid_r","c":"Middle-floor step sound on pose 4: person 7, dog 9.","t":"byte","b":[7,9],"x":[13636]},{"a":13652,"l":"step_low_l","c":"Ground-floor step sound on pose 0: person 3, dog 9.","t":"byte","b":[3,9],"x":[13603]},{"a":13654,"l":"step_low_r","c":"Ground-floor step sound on pose 4: person 6, dog 9.","t":"byte","b":[6,9],"x":[13608]},{"a":13656,"l":"step_stair_sound","c":"Sounds for the person's poses 9, 13 and 17: 5 and 8, taken alternately by bit 0 of step_stair_count.","t":"byte","b":[5,8],"x":[13547]},{"a":13658,"l":"step_stair_count","c":"Counter behind step_stair_sound: bit 0 picks the sound; bit 7 is set once the sound has played for the current run and cleared on its other poses. $355B after it is not referenced.","t":"byte","b":[157,0],"x":[13531,13541,13552,13557]},{"a":13660,"l":"snd_oneshot_0b","c":"One-shot trigger for sound $0B, set by $5743; the first of the four triggers play_oneshots reads and the first of the 32 bytes sound_reset clears ($355C-$357B: triggers, 22 request slots and six spare bytes).","t":"byte","b":[0],"x":[13482,13495,14103,22339]},{"a":13661,"l":"snd_key_click","c":"One-shot trigger for sound $0A: set by each key the player types (type_key at $375F) and by the typing at $572F and $58D4.","t":"byte","b":[0],"x":[14175,22319,22740]},{"a":13662,"l":"snd_oneshot_01","c":"One-shot trigger for sound $01, set at $962F by the code that redraws the house's changing pictures ($96ED).","t":"byte","b":[0],"x":[38447]},{"a":13663,"l":"snd_oneshot_02","c":"One-shot trigger for sound $02, set at $9672 by the same picture code. stop_slot_below also writes through this address (STA $355F,X) to clear the request of the slot below.","t":"byte","b":[0],"x":[13832,38514]},{"a":13664,"l":"snd_req_water","c":"Request slot 0, the first of 22 (a slot is requested by writing any non-zero value): sound $11 played once (play_once). Set by CTRL W at $2C90 when water_level $2B51 is below 11 (the level then rises by one), and by water_drink_glass at $A924 when he drinks (the level falls by one).","t":"byte","b":[0],"x":[11408,13454,13787,13823,13869,13881,13892,43300]},{"a":13665,"l":"snd_req_1","c":"Request slot 1: sound $12 played once, set at $26E7 by the pose-$59 handler of activity 39 (phase 5 of its table at $233B).","t":"byte","b":[0],"x":[9959]},{"a":13666,"l":"snd_req_hang_up","c":"Request slot 2: sound $13 played once, set by phone_hang_up.","t":"byte","b":[0],"x":[12322]},{"a":13667,"l":"snd_req_piece","c":"Request slot 3: the piano piece, sound $0C on set B (slot3_piece). Set to $FF by activity 79 (act79_start_piece, $E3F6) and by stereo_on ($925E); cleared by piece_done. $2BCB, $2BE6, $926E and $E400 read it as 'a piece is playing' (CTRL A leaves the alarm alone then). While the stereo plays, the raster interrupt runs sound_dispatch instead of sound_frame, so set B does not advance.","t":"byte","b":[0],"x":[11211,11238,14018,14027,37470,37486,58358,58368]},{"a":13668,"l":"snd_req_4","c":"Request slot 4: sound $0F, started once and held until slot 8 stops it; set at $1F14, $211C and by face_away_sound ($2133, activity 29 phase 15, when he stands with his back to the viewer at the sink).","t":"byte","b":[0],"x":[7958,8476,8499,13863]},{"a":13669,"l":"snd_req_5","c":"Request slot 5: sound $0E, held until slot 9; set at $5B5D.","t":"byte","b":[0],"x":[13853,23389]},{"a":13670,"l":"snd_req_phone_ring","c":"Request slot 6: the telephone ring, sound $0D restarted every fourth pass while set (phone_ring_repeat). Set and cleared by the ringing routine ($2AF5, $2AFE) and cleared at $2C1B when the ringing is over.","t":"byte","b":[0],"x":[10997,11006,11291]},{"a":13671,"l":"snd_req_piece_end","c":"Request slot 7 (stop_piece): ends the slot-3 piece if it is still requested. piece_done also stores snd_piece_ended ($B012) here, and activity 79 waits for it ($E441) as 'the piece has finished'; written by $2BCE, $9268, $9271, $E3FA and $E403, read at $220C.","t":"byte","b":[0],"x":[8716,11214,14004,37480,37489,58362,58371,58433]},{"a":13672,"l":"snd_req_stop4","c":"Request slot 8 (stop_slot4): stops slot 4 and then everything; set at $1FA6 and $2171.","t":"byte","b":[0],"x":[8102,8561]},{"a":13673,"l":"snd_req_stop5","c":"Request slot 9 (stop_slot5): stops slot 5 and then everything; set at $5B96.","t":"byte","b":[0],"x":[23446]},{"a":13674,"l":"snd_req_10","c":"Request slot 10: no code writes it and its handler (slot10_nop) is a bare RTS.","t":"byte","b":[0]},{"a":13675,"l":"snd_req_ctrl_chime","c":"Request slot 11: sound $14 once, then 40 passes of hold-off (chime_with_holdoff). Set by the CTRL key handler for CTRL F ($2B65, only while the cupboard has room), CTRL D ($2B78), CTRL B ($2B8F) and CTRL R ($2BAD).","t":"byte","b":[0],"x":[11109,11128,11151,11181,14084]},{"a":13676,"l":"snd_req_fire","c":"Request slot 12: sound $18, held until slot 13; set by activity 7 (the fire) at $AFEE.","t":"byte","b":[0],"x":[45038]},{"a":13677,"l":"snd_req_stop12","c":"Request slot 13 (stop_slot_below): stops slot 12 and everything; set by activity 7 at $AFF6.","t":"byte","b":[0],"x":[45046]},{"a":13678,"l":"snd_req_14","c":"Request slot 14: sound $1A played until the sound driver sets snd_piece_ended ($B012) (play_to_end); set at $A94A.","t":"byte","b":[0],"x":[43338]},{"a":13679,"l":"snd_req_stop14","c":"Request slot 15: stops slot 14 and everything; set at $A957.","t":"byte","b":[0],"x":[43351]},{"a":13680,"l":"snd_req_16","c":"Request slot 16: sound $19, held until slot 17; set at $5AE1.","t":"byte","b":[0],"x":[23265]},{"a":13681,"l":"snd_req_stop16","c":"Request slot 17: stops slot 16 and everything; set at $5899 and $5ADC.","t":"byte","b":[0],"x":[22681,23260]},{"a":13682,"l":"snd_req_talk","c":"Request slot 18: the talking sound, $15, played to its end (play_to_end). Raised at $24E8 by talk_mouth ($24C8), the mouth step of the talking sub-machine act41_talk ($237E), which talk_or_wait ($2759) also runs inside activities 5, 6, 7, 8, 10, 11 and the telephone call (25): when it picks the widest mouth (head pose $1C) and this slot is free. So every burst of his speech plays sound $15 once on set A. Cleared at $8EDF (activity 114).","t":"byte","b":[0],"x":[9442,9448,36575]},{"a":13683,"l":"snd_req_19","c":"Request slot 19: sound $16 played to its end; set by activity 114 at $8ED7 from $0374.","t":"byte","b":[0],"x":[36567]},{"a":13684,"l":"snd_req_alarm","c":"Request slot 20: the alarm clock, sound $17 held until slot 21; set by CTRL A ($2BEB) and at $0BD8.","t":"byte","b":[0],"x":[3032,11243]},{"a":13685,"l":"snd_req_alarm_off","c":"Request slot 21, the last one served: stops slot 20 and everything; set at $2A74 when the alarm's count runs out.","t":"byte","b":[0],"x":[10868]},{"a":13686,"l":"snd_req_22","c":"A request byte beyond the 22 slots: set at $97D2 but never read (sound_requests starts its scan at slot 21); only sound_reset clears it.","t":"byte","b":[0],"x":[38866]},{"a":13687,"l":"snd_req_23","c":"Another request byte beyond the slots: set at $97CD, never read.","t":"byte","b":[0],"x":[38861]},{"a":13688,"l":"snd_req_24","c":"Another: set at $543F by activity 32's handler, never read.","t":"byte","b":[0],"x":[21567]},{"a":13689,"l":"snd_req_25","c":"Another: set at $53D9, never read.","t":"byte","b":[0],"x":[21465]},{"a":13690,"l":"snd_req_26","c":"Another: set at $1EF8, never read.","t":"byte","b":[0],"x":[7928]},{"a":13691,"l":"snd_req_27","c":"The last of the six: set at $1F03, never read; the last byte sound_reset clears.","t":"byte","b":[0],"x":[7939]},{"a":13692,"l":"snd_slot_handlers","c":"Handler of each request slot, 22 addresses, copied into the JMP at $34A2 by sound_requests: slots 0-2 play_once, 3 slot3_piece, 4, 5, 12, 16 and 20 start_and_hold, 6 phone_ring_repeat, 7 stop_piece, 8 stop_slot4, 9 stop_slot5, 10 slot10_nop, 11 chime_with_holdoff, 13, 15, 17 and 21 stop_slot_below, 14, 18 and 19 play_to_end.","t":"byte","b":[217],"x":[13462]},{"a":13693,"l":"snd_slot_handlers_hi","c":"The same table read one byte on for the high bytes (LDA $357D,Y at $349C); it runs to $35A7.","t":"addr","b":[53,217],"oa":55605,"o":"$D935","x":[13468]},{"a":13695,"t":"addr","b":[53,217],"oa":55605,"o":"$D935"},{"a":13697,"t":"addr","b":[53,74],"oa":18997,"o":"$4A35"},{"a":13699,"t":"addr","b":[54,13],"oa":3382,"o":"$0D36"},{"a":13701,"t":"addr","b":[54,13],"oa":3382,"o":"$0D36"},{"a":13703,"t":"addr","b":[54,213],"oa":54582,"o":"$D536"},{"a":13705,"t":"addr","b":[54,203],"oa":52022,"o":"$CB36"},{"a":13707,"t":"addr","b":[54,34],"oa":8758,"o":"$2236"},{"a":13709,"t":"addr","b":[54,24],"oa":6198,"o":"bowl_line3"},{"a":13711,"t":"addr","b":[54,67],"oa":17206,"o":"$4336"},{"a":13713,"t":"addr","b":[54,237],"oa":60726,"o":"$ED36"},{"a":13715,"t":"addr","b":[54,13],"oa":3382,"o":"$0D36"},{"a":13717,"t":"addr","b":[54,3],"oa":822,"o":"$0336"},{"a":13719,"t":"addr","b":[54,228],"oa":58422,"o":"$E436"},{"a":13721,"t":"addr","b":[53,3],"oa":821,"o":"$0335"},{"a":13723,"t":"addr","b":[54,13],"oa":3382,"o":"$0D36"},{"a":13725,"t":"addr","b":[54,3],"oa":822,"o":"$0336"},{"a":13727,"t":"addr","b":[54,228],"oa":58422,"o":"$E436"},{"a":13729,"t":"addr","b":[53,228],"oa":58421,"o":"$E435"},{"a":13731,"t":"addr","b":[53,13],"oa":3381,"o":"$0D35"},{"a":13733,"t":"addr","b":[54,3],"oa":822,"o":"$0336"},{"a":13735,"t":"byte","b":[54]},{"a":13736,"l":"snd_slot_sound","c":"Sound number of each request slot for the sound driver: $11 $12 $13 $0C $0F $0E $0D $10 $10 $10 $10 $14 $18 $10 $1A $10 $19 $10 $15 $16 $17 $10 (slots 0-21). $10, which the stop handlers start, is also what sound_init starts on set B ($B217).","t":"byte","b":[17,18,19,12,15,14,13,16],"x":[13790,13807,13843]},{"a":13744,"t":"byte","b":[16,16,16,20,24,16,26,16]},{"a":13752,"t":"byte","b":[25,16,21,22,23]},{"a":13757,"l":"snd_slot_sound_21","c":"Last entry of snd_slot_sound (slot 21, $10). stop_slot_below writes through this address (STA $35BD,X) to clear the state of the slot below.","t":"byte","b":[16],"x":[13829]},{"a":13758,"l":"snd_slot_state","c":"State of each request slot, 22 bytes: 0 not started, otherwise the sound number once started (start_slot_sound) or the handler's own value.","t":"byte","b":[0,0,0],"x":[13796,13820,13837,13866,13884,13898,13905,13911,14012,14037,14110]},{"a":13761,"l":"slot3_state","c":"State of slot 3: $0C while the piece is running; cleared by piece_done.","t":"byte","b":[0],"x":[14009]},{"a":13762,"l":"slot4_state","c":"State of slot 4, cleared by stop_slot4.","t":"byte","b":[0],"x":[13860]},{"a":13763,"l":"slot5_state","c":"State of slot 5, cleared by stop_slot5; the states of slots 6-21 follow up to $35D3.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[13850]},{"a":13771,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":13779,"t":"byte","b":[0]},{"a":13780,"l":"slot3_saved_x","c":"X (the slot number) kept by slot3_follow_flags while it loops over the four flags.","t":"byte","b":[3],"x":[13920,14000]},{"a":13781,"l":"slot3_flag_delay","c":"Delay counters for flags 0 and 1 in slot3_follow_flags: 3 when the flag drops, counted down before $40 is stored. $35D7-$35D8 after them are not referenced.","t":"byte","b":[69,69,0,0],"x":[13961,13979]},{"a":13785,"l":"play_once","c":"Handler for slots 0-2: clears the request and starts snd_slot_sound,X on set A (sound_start_a, $B009).","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13787,"t":"code","b":[157,96,53],"m":"sta","o":"snd_req_water,x","oa":13664},{"a":13790,"t":"code","b":[189,168,53],"m":"lda","o":"snd_slot_sound,x","oa":13736},{"a":13793,"t":"code","b":[76,9,176],"m":"jmp","o":"sound_start_a_jmp","oa":45065},{"a":13796,"l":"play_to_end","c":"Handler for slots 14, 18 and 19: the first pass starts the slot's sound (start_slot_sound); later passes wait for snd_piece_ended ($B012), then start sound $10 on set A and clear the slot's state and request.","t":"code","b":[189,190,53],"m":"lda","o":"snd_slot_state,x","oa":13758,"x":[13474]},{"a":13799,"t":"code","b":[240,6],"m":"beq","o":"b_35EF","oa":13807},{"a":13801,"t":"code","b":[173,18,176],"m":"lda","o":"snd_piece_ended","oa":45074},{"a":13804,"t":"code","b":[208,7],"m":"bne","o":"b_35F5","oa":13813},{"a":13806,"t":"code","b":[96],"m":"rts"},{"a":13807,"l":"b_35EF","t":"code","b":[189,168,53],"m":"lda","o":"snd_slot_sound,x","oa":13736,"x":[13799]},{"a":13810,"t":"code","b":[76,87,54],"m":"jmp","o":"start_slot_sound","oa":13911},{"a":13813,"l":"b_35F5","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[13804]},{"a":13815,"t":"code","b":[32,9,176],"m":"jsr","o":"sound_start_a_jmp","oa":45065},{"a":13818,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13820,"t":"code","b":[157,190,53],"m":"sta","o":"snd_slot_state,x","oa":13758},{"a":13823,"t":"code","b":[157,96,53],"m":"sta","o":"snd_req_water,x","oa":13664},{"a":13826,"t":"code","b":[96],"m":"rts"},{"a":13827,"l":"stop_slot_below","c":"Handler for slots 13, 15, 17 and 21: clears the state and request of the slot below (12, 14, 16 or 20), then stop_all.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13829,"t":"code","b":[157,189,53],"m":"sta","o":"snd_slot_sound_21,x","oa":13757},{"a":13832,"t":"code","b":[157,95,53],"m":"sta","o":"snd_oneshot_02,x","oa":13663},{"a":13835,"t":"code","b":[240,29],"m":"beq","o":"stop_all","oa":13866},{"a":13837,"l":"start_and_hold","c":"Handler for slots 4, 5, 12, 16 and 20: starts the slot's sound on the first pass and then does nothing while the request stays set; the matching stop slot ends it.","t":"code","b":[189,190,53],"m":"lda","o":"snd_slot_state,x","oa":13758},{"a":13840,"t":"code","b":[240,1],"m":"beq","o":"b_3613","oa":13843},{"a":13842,"t":"code","b":[96],"m":"rts"},{"a":13843,"l":"b_3613","t":"code","b":[189,168,53],"m":"lda","o":"snd_slot_sound,x","oa":13736,"x":[13840]},{"a":13846,"t":"code","b":[208,63],"m":"bne","o":"start_slot_sound","oa":13911},{"a":13848,"l":"stop_slot5","c":"Handler for slot 9: clears slot 5's state and request, then stop_all.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13850,"t":"code","b":[141,195,53],"m":"sta","o":"slot5_state","oa":13763},{"a":13853,"t":"code","b":[141,101,53],"m":"sta","o":"snd_req_5","oa":13669},{"a":13856,"t":"code","b":[240,8],"m":"beq","o":"stop_all","oa":13866},{"a":13858,"l":"stop_slot4","c":"Handler for slot 8: clears slot 4's state and request, then stop_all.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13860,"t":"code","b":[141,194,53],"m":"sta","o":"slot4_state","oa":13762},{"a":13863,"t":"code","b":[141,100,53],"m":"sta","o":"snd_req_4","oa":13668},{"a":13866,"l":"stop_all","c":"Shared end of the stop handlers: clears the served slot, starts sound $10 on set A and clears all 22 requests and states.","t":"code","b":[157,190,53],"m":"sta","o":"snd_slot_state,x","oa":13758,"x":[13835,13856]},{"a":13869,"t":"code","b":[157,96,53],"m":"sta","o":"snd_req_water,x","oa":13664},{"a":13872,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":13874,"t":"code","b":[32,9,176],"m":"jsr","o":"sound_start_a_jmp","oa":45065},{"a":13877,"t":"code","b":[162,21],"m":"ldx","o":"#$15"},{"a":13879,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13881,"l":"b_3639","t":"code","b":[157,96,53],"m":"sta","o":"snd_req_water,x","oa":13664,"x":[13888]},{"a":13884,"t":"code","b":[157,190,53],"m":"sta","o":"snd_slot_state,x","oa":13758},{"a":13887,"t":"code","b":[202],"m":"dex"},{"a":13888,"t":"code","b":[16,247],"m":"bpl","o":"b_3639","oa":13881},{"a":13890,"t":"code","b":[96],"m":"rts"},{"a":13891,"l":"slot10_nop","c":"Handler for slot 10: RTS.","t":"code","b":[96],"m":"rts"},{"a":13892,"l":"unused_3644","c":"Code that nothing reaches (after the RTS of slot10_nop; no address points here): STA $3560,X and JMP $348B, which would re-request the slot and carry on scanning.","t":"code","b":[157,96,53],"m":"sta","o":"snd_req_water,x","oa":13664},{"a":13895,"t":"code","b":[76,139,52],"m":"jmp","o":"b_348B","oa":13451},{"a":13898,"l":"slot3_piece","c":"Handler for slot 3: on the first pass stores state $0C and starts sound $0C, the piano piece, on set B (sound_start_b, $B006); afterwards slot3_follow_flags.","t":"code","b":[189,190,53],"m":"lda","o":"snd_slot_state,x","oa":13758},{"a":13901,"t":"code","b":[208,14],"m":"bne","o":"slot3_follow_flags","oa":13917},{"a":13903,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":13905,"t":"code","b":[157,190,53],"m":"sta","o":"snd_slot_state,x","oa":13758},{"a":13908,"t":"code","b":[76,6,176],"m":"jmp","o":"sound_start_b_jmp","oa":45062},{"a":13911,"l":"start_slot_sound","c":"Shared tail: stores A as the slot's state (snd_slot_state,X) and starts sound A on set A (sound_start_a, $B009).","t":"code","b":[157,190,53],"m":"sta","o":"snd_slot_state,x","oa":13758,"x":[13810,13846,14047,14073]},{"a":13914,"t":"code","b":[76,9,176],"m":"jmp","o":"sound_start_a_jmp","oa":45065},{"a":13917,"l":"slot3_follow_flags","c":"Slot 3 while the piece plays: once snd_piece_ended ($B012) is set, piece_done. Otherwise copies set B's channel 3 and 4 key-down bits ($B013, $B014) and their toggles ($B015, $B016) into piano_part_offsets ($E41D-$E420), the image offsets of the four quarters of the person at the piano: a key-down bit gives $00 while set and, once clear, $80 for three passes (slot3_flag_delay) and then $40; a toggle gives $40 while set and $00 while clear. Any change is also stored in piano_parts_changed ($E421), which activity 79 checks at $E446 before rebuilding his image (compose_from_parts, $1585).","t":"code","b":[173,18,176],"m":"lda","o":"snd_piece_ended","oa":45074,"x":[13901]},{"a":13920,"t":"code","b":[142,212,53],"m":"stx","o":"slot3_saved_x","oa":13780},{"a":13923,"t":"code","b":[208,79],"m":"bne","o":"piece_done","oa":14004},{"a":13925,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":13927,"l":"b_3667","t":"code","b":[202],"m":"dex","x":[13945,13964,13974,13991,13996]},{"a":13928,"t":"code","b":[48,70],"m":"bmi","o":"b_36B0","oa":14000},{"a":13930,"t":"code","b":[189,19,176],"m":"lda","o":"snd_gate_ch3,x","oa":45075},{"a":13933,"t":"code","b":[8],"m":"php"},{"a":13934,"t":"code","b":[189,29,228],"m":"lda","o":"piano_part_offsets,x","oa":58397},{"a":13937,"t":"code","b":[40],"m":"plp"},{"a":13938,"t":"code","b":[240,14],"m":"beq","o":"b_3682","oa":13954},{"a":13940,"t":"code","b":[224,2],"m":"cpx","o":"#$02"},{"a":13942,"t":"code","b":[176,42],"m":"bcs","o":"b_36A2","oa":13986},{"a":13944,"t":"code","b":[168],"m":"tay"},{"a":13945,"t":"code","b":[240,236],"m":"beq","o":"b_3667","oa":13927},{"a":13947,"l":"b_367B","t":"code","b":[141,33,228],"m":"sta","o":"piano_parts_changed","oa":58401,"x":[13998]},{"a":13950,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":13952,"t":"code","b":[240,17],"m":"beq","o":"b_3693","oa":13971},{"a":13954,"l":"b_3682","t":"code","b":[224,2],"m":"cpx","o":"#$02","x":[13938]},{"a":13956,"t":"code","b":[176,37],"m":"bcs","o":"b_36AB","oa":13995},{"a":13958,"t":"code","b":[168],"m":"tay"},{"a":13959,"t":"code","b":[240,16],"m":"beq","o":"b_3699","oa":13977},{"a":13961,"t":"code","b":[222,213,53],"m":"dec","o":"slot3_flag_delay,x","oa":13781},{"a":13964,"t":"code","b":[208,217],"m":"bne","o":"b_3667","oa":13927},{"a":13966,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":13968,"l":"b_3690","t":"code","b":[141,33,228],"m":"sta","o":"piano_parts_changed","oa":58401,"x":[13984,13993]},{"a":13971,"l":"b_3693","t":"code","b":[157,29,228],"m":"sta","o":"piano_part_offsets,x","oa":58397,"x":[13952]},{"a":13974,"t":"code","b":[76,103,54],"m":"jmp","o":"b_3667","oa":13927},{"a":13977,"l":"b_3699","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[13959]},{"a":13979,"t":"code","b":[157,213,53],"m":"sta","o":"slot3_flag_delay,x","oa":13781},{"a":13982,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":13984,"t":"code","b":[208,238],"m":"bne","o":"b_3690","oa":13968},{"a":13986,"l":"b_36A2","t":"code","b":[169,64],"m":"lda","o":"#$40","x":[13942]},{"a":13988,"t":"code","b":[221,29,228],"m":"cmp","o":"piano_part_offsets,x","oa":58397},{"a":13991,"t":"code","b":[240,190],"m":"beq","o":"b_3667","oa":13927},{"a":13993,"t":"code","b":[208,229],"m":"bne","o":"b_3690","oa":13968},{"a":13995,"l":"b_36AB","t":"code","b":[168],"m":"tay","x":[13956]},{"a":13996,"t":"code","b":[240,185],"m":"beq","o":"b_3667","oa":13927},{"a":13998,"t":"code","b":[208,203],"m":"bne","o":"b_367B","oa":13947},{"a":14000,"l":"b_36B0","t":"code","b":[174,212,53],"m":"ldx","o":"slot3_saved_x","oa":13780,"x":[13928]},{"a":14003,"t":"code","b":[96],"m":"rts"},{"a":14004,"l":"piece_done","c":"Ends slot 3: A (snd_piece_ended, or 0 from stop_piece) goes to snd_req_piece_end; clears slot 3's state and request, the served slot's state and $B012, and starts sound $10 on set B (sound_start_b, $B006).","t":"code","b":[141,103,53],"m":"sta","o":"snd_req_piece_end","oa":13671,"x":[13923,14035]},{"a":14007,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14009,"t":"code","b":[141,193,53],"m":"sta","o":"slot3_state","oa":13761},{"a":14012,"t":"code","b":[157,190,53],"m":"sta","o":"snd_slot_state,x","oa":13758},{"a":14015,"t":"code","b":[141,18,176],"m":"sta","o":"snd_piece_ended","oa":45074},{"a":14018,"t":"code","b":[141,99,53],"m":"sta","o":"snd_req_piece","oa":13667},{"a":14021,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":14023,"t":"code","b":[76,6,176],"m":"jmp","o":"sound_start_b_jmp","oa":45062},{"a":14026,"l":"unused_36CA","c":"A lone RTS after piece_done's JMP; nothing points here.","t":"code","b":[96],"m":"rts"},{"a":14027,"l":"stop_piece","c":"Handler for slot 7: when slot 3 is still requested, piece_done with A = 0 (which clears slot 7 too); otherwise just returns, leaving slot 7 requested.","t":"code","b":[173,99,53],"m":"lda","o":"snd_req_piece","oa":13667},{"a":14030,"t":"code","b":[208,1],"m":"bne","o":"b_36D1","oa":14033},{"a":14032,"t":"code","b":[96],"m":"rts"},{"a":14033,"l":"b_36D1","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[14030]},{"a":14035,"t":"code","b":[240,223],"m":"beq","o":"piece_done","oa":14004},{"a":14037,"l":"phone_ring_repeat","c":"Handler for slot 6: on the first pass ring_tick = 0 and sound $0D starts (start_slot_sound); then every fourth pass (ring_tick) starts it again, for as long as the request is set.","t":"code","b":[189,190,53],"m":"lda","o":"snd_slot_state,x","oa":13758},{"a":14040,"t":"code","b":[208,8],"m":"bne","o":"b_36E2","oa":14050},{"a":14042,"t":"code","b":[141,9,55],"m":"sta","o":"ring_tick","oa":14089},{"a":14045,"l":"b_36DD","t":"code","b":[169,13],"m":"lda","o":"#$0D","x":[14058]},{"a":14047,"t":"code","b":[76,87,54],"m":"jmp","o":"start_slot_sound","oa":13911},{"a":14050,"l":"b_36E2","t":"code","b":[238,9,55],"m":"inc","o":"ring_tick","oa":14089,"x":[14040]},{"a":14053,"t":"code","b":[173,9,55],"m":"lda","o":"ring_tick","oa":14089},{"a":14056,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":14058,"t":"code","b":[240,241],"m":"beq","o":"b_36DD","oa":14045},{"a":14060,"t":"code","b":[96],"m":"rts"},{"a":14061,"l":"chime_with_holdoff","c":"Handler for slot 11: when chime_holdoff is 0, sets it to 40 and starts sound $14; on later passes counts it down and clears the request when it reaches 0, so for 40 passes the chime cannot restart and lower slots wait.","t":"code","b":[173,8,55],"m":"lda","o":"chime_holdoff","oa":14088},{"a":14064,"t":"code","b":[208,10],"m":"bne","o":"b_36FC","oa":14076},{"a":14066,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":14068,"t":"code","b":[141,8,55],"m":"sta","o":"chime_holdoff","oa":14088},{"a":14071,"t":"code","b":[169,20],"m":"lda","o":"#$14"},{"a":14073,"t":"code","b":[76,87,54],"m":"jmp","o":"start_slot_sound","oa":13911},{"a":14076,"l":"b_36FC","t":"code","b":[206,8,55],"m":"dec","o":"chime_holdoff","oa":14088,"x":[14064]},{"a":14079,"t":"code","b":[240,1],"m":"beq","o":"b_3702","oa":14082},{"a":14081,"t":"code","b":[96],"m":"rts"},{"a":14082,"l":"b_3702","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[14079]},{"a":14084,"t":"code","b":[141,107,53],"m":"sta","o":"snd_req_ctrl_chime","oa":13675},{"a":14087,"t":"code","b":[96],"m":"rts"},{"a":14088,"l":"chime_holdoff","c":"Passes left before slot 11's request is cleared (40 after each chime).","t":"byte","b":[0],"x":[14061,14068,14076]},{"a":14089,"l":"ring_tick","c":"Pass counter of phone_ring_repeat: the ring restarts when its low two bits are 0.","t":"byte","b":[0],"x":[14042,14050,14053]},{"a":14090,"l":"snd_oneshot_sound","c":"Sounds of the four one-shot triggers: $0B, $0A, $01, $02.","t":"byte","b":[11,10,1,2],"x":[13487]},{"a":14094,"l":"step_run_end","c":"End (exclusive) of each run of the person's poses that footsteps checks, searched from the last: $15, $11, $0D, $09.","t":"byte","b":[21],"x":[13518]},{"a":14095,"l":"step_run_start","c":"First pose of each run (the same bytes one on, read as $370F,X): $11, $0D, $09, $09; the sound plays when the pose equals it, and poses 5-8 fall in no run.","t":"byte","b":[17,13,9,9],"x":[13524]},{"a":14099,"l":"sound_reset","c":"Silences everything: clears the 32 bytes from snd_oneshot_0b ($355C-$357B) and the 22 slot states, zeroes SID registers $D400-$D414, and restarts the sound driver (JMP $B000, sound_init). Called at cold start ($04C8), by sound_requests when $801F is set, by stereo_off ($9286), by act79_start_piece ($E3F1) and at $1FFA.","t":"code","b":[162,31],"m":"ldx","o":"#$1F","x":[1224,8186,13435,37510,58353]},{"a":14101,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14103,"l":"b_3717","t":"code","b":[157,92,53],"m":"sta","o":"snd_oneshot_0b,x","oa":13660,"x":[14114]},{"a":14106,"t":"code","b":[224,22],"m":"cpx","o":"#$16"},{"a":14108,"t":"code","b":[176,3],"m":"bcs","o":"b_3721","oa":14113},{"a":14110,"t":"code","b":[157,190,53],"m":"sta","o":"snd_slot_state,x","oa":13758},{"a":14113,"l":"b_3721","t":"code","b":[202],"m":"dex","x":[14108]},{"a":14114,"t":"code","b":[16,243],"m":"bpl","o":"b_3717","oa":14103},{"a":14116,"t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":14118,"l":"b_3726","t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x","x":[14122]},{"a":14121,"t":"code","b":[202],"m":"dex"},{"a":14122,"t":"code","b":[16,250],"m":"bpl","o":"b_3726","oa":14118},{"a":14124,"t":"code","b":[76,0,176],"m":"jmp","o":"sound_jumps","oa":45056},{"a":14127,"l":"typed_key","c":"The last key type_key took (DEL included); nothing else reads it.","t":"byte","b":[109],"x":[14181]},{"a":14128,"l":"typed_count","c":"Characters typed on the current line: typed_advance counts it up, typed_back down, DEL is refused at 0; RETURN sets it to $FF and the advance after it makes it 0.","t":"byte","b":[8],"x":[14188,14224,14239,14248]},{"a":14129,"l":"type_key","c":"Takes a key from $30 into the typed line; called from the main loop ($097C) and at start-up ($052D). Nothing happens while $0711 or $54DF is set. Takes RETURN, DEL and printable keys (codes below $20 are left for the CTRL key handler); printable keys only while $8D, the high byte of the text cursor's x ($8C/$8D, placed by the interrupt at $0769), is 0, which limits the line's length. The first key while the text band is idle ($0710 = 0) calls $BA3A (print position reset, $0710 = 3). Each key goes to type_digit, requests the key click (snd_key_click), is taken ($30 = 0), stored at $0224 + $0222 and echoed through queue_char. DEL steps back (typed_back) and echoes the removed character with $BA38 = 1; RETURN ends the line (typed_count $FF, then typed_advance).","t":"code","b":[173,17,7],"m":"lda","o":"text_band_bottom","oa":1809,"x":[1325,2428]},{"a":14132,"t":"code","b":[208,104],"m":"bne","o":"r_379E","oa":14238},{"a":14134,"t":"code","b":[173,223,84],"m":"lda","o":"letter_typing","oa":21727},{"a":14137,"t":"code","b":[208,99],"m":"bne","o":"r_379E","oa":14238},{"a":14139,"t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48},{"a":14141,"t":"code","b":[240,95],"m":"beq","o":"r_379E","oa":14238},{"a":14143,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":14145,"t":"code","b":[240,13],"m":"beq","o":"b_3750","oa":14160},{"a":14147,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":14149,"t":"code","b":[240,9],"m":"beq","o":"b_3750","oa":14160},{"a":14151,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":14153,"t":"code","b":[144,83],"m":"bcc","o":"r_379E","oa":14238},{"a":14155,"t":"code","b":[174,141,0],"m":"ldx","o":"text_cursor_x_hi","oa":141},{"a":14158,"t":"code","b":[208,78],"m":"bne","o":"r_379E","oa":14238},{"a":14160,"l":"b_3750","t":"code","b":[174,16,7],"m":"ldx","o":"text_band_timer","oa":1808,"x":[14145,14149]},{"a":14163,"t":"code","b":[208,3],"m":"bne","o":"b_3758","oa":14168},{"a":14165,"t":"code","b":[32,58,186],"m":"jsr","o":"text_band_open","oa":47674},{"a":14168,"l":"b_3758","t":"code","b":[32,185,55],"m":"jsr","o":"type_digit","oa":14265,"x":[14163]},{"a":14171,"t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48},{"a":14173,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":14175,"t":"code","b":[142,93,53],"m":"stx","o":"snd_key_click","oa":13661},{"a":14178,"t":"code","b":[202],"m":"dex"},{"a":14179,"t":"code","b":[134,48],"m":"stx","o":"key_new","oa":48},{"a":14181,"t":"code","b":[141,47,55],"m":"sta","o":"typed_key","oa":14127},{"a":14184,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":14186,"t":"code","b":[208,19],"m":"bne","o":"b_377F","oa":14207},{"a":14188,"t":"code","b":[173,48,55],"m":"lda","o":"typed_count","oa":14128},{"a":14191,"t":"code","b":[240,45],"m":"beq","o":"r_379E","oa":14238},{"a":14193,"t":"code","b":[32,159,55],"m":"jsr","o":"typed_back","oa":14239},{"a":14196,"t":"code","b":[174,34,2],"m":"ldx","o":"line_index","oa":546},{"a":14199,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":14201,"t":"code","b":[141,56,186],"m":"sta","o":"text_erase_mode","oa":47672},{"a":14204,"t":"code","b":[189,36,2],"m":"lda","o":"line_ring,x","oa":548},{"a":14207,"l":"b_377F","t":"code","b":[174,34,2],"m":"ldx","o":"line_index","oa":546,"x":[14186]},{"a":14210,"t":"code","b":[157,36,2],"m":"sta","o":"line_ring,x","oa":548},{"a":14213,"t":"code","b":[72],"m":"pha"},{"a":14214,"t":"code","b":[32,80,186],"m":"jsr","o":"queue_char","oa":47696},{"a":14217,"t":"code","b":[104],"m":"pla"},{"a":14218,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":14220,"t":"code","b":[208,8],"m":"bne","o":"b_3796","oa":14230},{"a":14222,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":14224,"t":"code","b":[141,48,55],"m":"sta","o":"typed_count","oa":14128},{"a":14227,"t":"code","b":[76,168,55],"m":"jmp","o":"typed_advance","oa":14248},{"a":14230,"l":"b_3796","t":"code","b":[173,56,186],"m":"lda","o":"text_erase_mode","oa":47672,"x":[14220]},{"a":14233,"t":"code","b":[208,3],"m":"bne","o":"r_379E","oa":14238},{"a":14235,"t":"code","b":[32,168,55],"m":"jsr","o":"typed_advance","oa":14248},{"a":14238,"l":"r_379E","t":"code","b":[96],"m":"rts","x":[14132,14137,14141,14153,14158,14191,14233]},{"a":14239,"l":"typed_back","c":"One character back: typed_count - 1 and $0222 - 1 (kept to 0-127).","t":"code","b":[206,48,55],"m":"dec","o":"typed_count","oa":14128,"x":[14193]},{"a":14242,"t":"code","b":[206,34,2],"m":"dec","o":"line_index","oa":546},{"a":14245,"t":"code","b":[76,174,55],"m":"jmp","o":"j_37AE","oa":14254},{"a":14248,"l":"typed_advance","c":"One character on: typed_count + 1 and $0222 + 1 (kept to 0-127).","t":"code","b":[238,48,55],"m":"inc","o":"typed_count","oa":14128,"x":[14227,14235]},{"a":14251,"t":"code","b":[238,34,2],"m":"inc","o":"line_index","oa":546},{"a":14254,"l":"j_37AE","t":"code","b":[173,34,2],"m":"lda","o":"line_index","oa":546,"x":[14245]},{"a":14257,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":14259,"t":"code","b":[141,34,2],"m":"sta","o":"line_index","oa":546},{"a":14262,"t":"code","b":[96],"m":"rts"},{"a":14263,"l":"typed_bcd_lo","c":"Low byte (last two digits) of the four-digit BCD number type_digit collects; $00 in the snapshot, typed as 10:00.","t":"byte","b":[0],"x":[14276,14296,14305,14310]},{"a":14264,"l":"typed_bcd_hi","c":"High byte (first two digits) of that number; $10 in the snapshot.","t":"byte","b":[16],"x":[14273,14299]},{"a":14265,"l":"type_digit","c":"Collects the typed digits as a four-digit BCD number in typed_bcd_hi/lo: a digit shifts it four bits left and adds itself, DEL shifts it four bits right. No reader of the number was found.","t":"code","b":[165,48],"m":"lda","o":"key_new","oa":48,"x":[14168]},{"a":14267,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":14269,"t":"code","b":[208,11],"m":"bne","o":"b_37CA","oa":14282},{"a":14271,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":14273,"l":"b_37C1","t":"code","b":[78,184,55],"m":"lsr","o":"typed_bcd_hi","oa":14264,"x":[14280]},{"a":14276,"t":"code","b":[110,183,55],"m":"ror","o":"typed_bcd_lo","oa":14263},{"a":14279,"t":"code","b":[202],"m":"dex"},{"a":14280,"t":"code","b":[16,247],"m":"bpl","o":"b_37C1","oa":14273},{"a":14282,"l":"b_37CA","t":"code","b":[201,48],"m":"cmp","o":"#$30","x":[14269]},{"a":14284,"t":"code","b":[144,27],"m":"bcc","o":"r_37E9","oa":14313},{"a":14286,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":14288,"t":"code","b":[176,23],"m":"bcs","o":"r_37E9","oa":14313},{"a":14290,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":14292,"t":"code","b":[133,75],"m":"sta","o":"sort_temp","oa":75},{"a":14294,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":14296,"l":"b_37D8","t":"code","b":[14,183,55],"m":"asl","o":"typed_bcd_lo","oa":14263,"x":[14303]},{"a":14299,"t":"code","b":[46,184,55],"m":"rol","o":"typed_bcd_hi","oa":14264},{"a":14302,"t":"code","b":[202],"m":"dex"},{"a":14303,"t":"code","b":[16,247],"m":"bpl","o":"b_37D8","oa":14296},{"a":14305,"t":"code","b":[173,183,55],"m":"lda","o":"typed_bcd_lo","oa":14263},{"a":14308,"t":"code","b":[5,75],"m":"ora","o":"sort_temp","oa":75},{"a":14310,"t":"code","b":[141,183,55],"m":"sta","o":"typed_bcd_lo","oa":14263},{"a":14313,"l":"r_37E9","t":"code","b":[96],"m":"rts","x":[14284,14288]},{"a":14314,"l":"act29_drink_water","c":"Activity 29, a drink of water: the parser rules at $CA5A (DRINK + WATER) and $CA6A (LOOK + GLASS/COOLER) choose it, act30_check_needs switches to it, and the list at $AAB2 includes it. Switches on $4C through act29_phase_table: he goes to location $25 (the kitchen cupboard), then carries an item (figure 2, frame $13) to location $29 by the water cooler, fills and drinks while the tank (water_level $2B51) has water, sometimes again, takes the item to location $24 at the sink, then face_away_sound and face_away_idle (sound $0F while he stands with his back to the viewer). Figure 3 (frame $15) is shown from phase 2 (meal_show_fig3) to phase 17 (meal_hide_fig3).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":14317,"l":"act29_phase_table","c":"Activity 29's phase table, 19 words (handler minus one) chosen by $4C: 0 act29_start, 1 wait_or_request ($8FA7), 2 meal_show_fig3 ($5388), 3 act29_take_glass, 4 act29_check_interrupt, 5 act29_at_cooler, 6 act29_wait_step, 7 act29_fill_glass, 8 act29_wait_step, 9 act29_drink, 10 act29_wait_step, 11 act29_maybe_again, 12 act29_return_glass, 13 carry_walk ($293D), 14 act29_glass_away, 15 face_away_sound ($2131), 16 face_away_idle ($2156), 17 meal_hide_fig3 ($5380), 18 $8F0E (end).","t":"word","b":[48,56,166,143,135,83,56,56],"d":[14384,36774,21383,14392]},{"a":14325,"t":"word","b":[18,56,143,56,225,56,157,56],"d":[14354,14479,14561,14493]},{"a":14333,"t":"word","b":[225,56,183,56,225,56,234,56],"d":[14561,14519,14561,14570]},{"a":14341,"t":"word","b":[5,57,60,41,32,56,48,33],"d":[14597,10556,14368,8496]},{"a":14349,"t":"word","b":[85,33,127,83,13,143],"d":[8533,21375,36621]},{"a":14355,"l":"act29_check_interrupt","c":"Activity 29 phase 4: when a request is pending (request_pending $8F86 non-zero) jumps to phase 12 (take the item back); otherwise continues with carry_walk ($293D).","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":14358,"t":"code","b":[208,3],"m":"bne","o":"b_381B","oa":14363},{"a":14360,"t":"code","b":[76,61,41],"m":"jmp","o":"carry_walk","oa":10557},{"a":14363,"l":"b_381B","t":"code","b":[169,12],"m":"lda","o":"#$0C","x":[14358]},{"a":14365,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":14367,"t":"code","b":[96],"m":"rts"},{"a":14368,"l":"act29_wait","c":"Pass countdown for act29_wait_step: 8 or 60 passes.","t":"byte","b":[0],"x":[14553,14562,14567]},{"a":14369,"l":"act29_glass_away","c":"Activity 29 phase 14: clears carrying ($0391) and hides figure 2 ($03C6 = 0), gaze mode $ACF2 = 2, advances.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14371,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":14374,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":14377,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":14379,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":14382,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":14385,"l":"act29_start","c":"Activity 29 phase 0: destination location $25, in front of the kitchen cupboard (set_person_destination, $AB63), advances.","t":"code","b":[169,37],"m":"lda","o":"#$25"},{"a":14387,"t":"code","b":[32,99,171],"m":"jsr","o":"set_person_destination","oa":43875},{"a":14390,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":14393,"l":"act29_take_glass","c":"Activity 29 phase 3: shows figure 2, the item sprite, with frame $13 ($038D) and colour 3 ($1394), visible ($03C6 = $83), in front ($0398 = 0), facing as the person ($039C = $039A), on a floor line 12 above his ($03B1 = $03AF - 12), 17 units ahead of him ($03A9 = $03A7 plus or minus $11 by his facing) at his X bit 8 and depth, multicolour and carried ($0394 = $0391 = $FF), bit 1 of $03C4; then heads for location $29 beside the water cooler through the tail at $390D (set_custom_location, $03C6 = $83, destination $36, at_target).","t":"code","b":[169,19],"m":"lda","o":"#$13"},{"a":14395,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":14398,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":14400,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":14403,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":14405,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":14408,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14410,"t":"code","b":[141,152,3],"m":"sta","o":"prop_behind_bg","oa":920},{"a":14413,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":14416,"t":"code","b":[56],"m":"sec"},{"a":14417,"t":"code","b":[233,12],"m":"sbc","o":"#$0C"},{"a":14419,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":14422,"t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":14425,"t":"code","b":[141,156,3],"m":"sta","o":"fig_mirror_prop_a","oa":924},{"a":14428,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":14430,"t":"code","b":[172,154,3],"m":"ldy","o":"fig_mirror","oa":922},{"a":14433,"t":"code","b":[240,5],"m":"beq","o":"b_3868","oa":14440},{"a":14435,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":14437,"t":"code","b":[24],"m":"clc"},{"a":14438,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":14440,"l":"b_3868","t":"code","b":[24],"m":"clc","x":[14433]},{"a":14441,"t":"code","b":[109,167,3],"m":"adc","o":"fig_x","oa":935},{"a":14444,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":14447,"t":"code","b":[173,171,3],"m":"lda","o":"fig_x_hi","oa":939},{"a":14450,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":14453,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":14456,"t":"code","b":[141,181,3],"m":"sta","o":"fig_depth_prop_a","oa":949},{"a":14459,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":14461,"t":"code","b":[141,148,3],"m":"sta","o":"prop_multicolour","oa":916},{"a":14464,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":14467,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":14470,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":14472,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":14475,"t":"code","b":[162,41],"m":"ldx","o":"#$29"},{"a":14477,"t":"code","b":[76,13,57],"m":"jmp","o":"j_390D","oa":14605},{"a":14480,"l":"act29_at_cooler","c":"Activity 29 phase 5: gaze mode $ACF2 = $C1, hides figure 2 ($03C6 = 0), pose $0D with an 8-pass wait.","t":"code","b":[169,193],"m":"lda","o":"#$C1"},{"a":14482,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":14485,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14487,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":14490,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":14492,"t":"code","b":[208,57],"m":"bne","o":"b_38D7","oa":14551},{"a":14494,"l":"act29_fill_glass","c":"Activity 29 phase 7: with the tank empty (water_level $2B51 = 0) sets the phase to 12 (no drink); otherwise clears carrying ($0391), gaze mode $A1, pose $1E with a 60-pass wait.","t":"code","b":[173,81,43],"m":"lda","o":"water_level","oa":11089},{"a":14497,"t":"code","b":[208,5],"m":"bne","o":"b_38A8","oa":14504},{"a":14499,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":14501,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":14503,"t":"code","b":[96],"m":"rts"},{"a":14504,"l":"b_38A8","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[14497]},{"a":14506,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":14509,"t":"code","b":[169,161],"m":"lda","o":"#$A1"},{"a":14511,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":14514,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":14516,"t":"code","b":[162,60],"m":"ldx","o":"#$3C"},{"a":14518,"t":"code","b":[208,33],"m":"bne","o":"b_38D9","oa":14553},{"a":14520,"l":"act29_drink","c":"Activity 29 phase 9: gaze mode $C1; water_drink_glass ($A91F) takes one unit of water (water_level - 1, request slot 0); clears letter_done ($54E2) and water_need ($036E), restarts water_timer from water_period ($0370 = $036F), calls needs_check; pose $46 with a 60-pass wait. $38D7-$38DF, shared with phases 5 and 7, stores the wait count and sets the pose (set_pose, $9363).","t":"code","b":[169,193],"m":"lda","o":"#$C1"},{"a":14522,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":14525,"t":"code","b":[32,31,169],"m":"jsr","o":"water_drink_glass","oa":43295},{"a":14528,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14530,"t":"code","b":[141,226,84],"m":"sta","o":"letter_done","oa":21730},{"a":14533,"t":"code","b":[141,110,3],"m":"sta","o":"water_need","oa":878},{"a":14536,"t":"code","b":[173,111,3],"m":"lda","o":"water_period","oa":879},{"a":14539,"t":"code","b":[141,112,3],"m":"sta","o":"water_timer","oa":880},{"a":14542,"t":"code","b":[32,47,57],"m":"jsr","o":"needs_check","oa":14639},{"a":14545,"t":"code","b":[169,70],"m":"lda","o":"#$46"},{"a":14547,"t":"code","b":[162,60],"m":"ldx","o":"#$3C"},{"a":14549,"t":"code","b":[208,2],"m":"bne","o":"b_38D9","oa":14553},{"a":14551,"l":"b_38D7","t":"code","b":[162,8],"m":"ldx","o":"#$08","x":[14492]},{"a":14553,"l":"b_38D9","t":"code","b":[142,32,56],"m":"stx","o":"act29_wait","oa":14368,"x":[14518,14549]},{"a":14556,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":14559,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":14562,"l":"act29_wait_step","c":"Activity 29 phases 6, 8 and 10: counts act29_wait down by one per pass, advancing at 0.","t":"code","b":[173,32,56],"m":"lda","o":"act29_wait","oa":14368},{"a":14565,"t":"code","b":[240,28],"m":"beq","o":"b_3903","oa":14595},{"a":14567,"t":"code","b":[206,32,56],"m":"dec","o":"act29_wait","oa":14368},{"a":14570,"t":"code","b":[96],"m":"rts"},{"a":14571,"l":"act29_maybe_again","c":"Activity 29 phase 11: gaze mode 2; unless a request is pending, one time in four (random $195E: low four bits below 4) goes back to phase 7 for another drink; otherwise advances.","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":14573,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":14576,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":14579,"t":"code","b":[208,14],"m":"bne","o":"b_3903","oa":14595},{"a":14581,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":14584,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":14586,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":14588,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":14590,"t":"code","b":[176,3],"m":"bcs","o":"b_3903","oa":14595},{"a":14592,"t":"code","b":[134,76],"m":"stx","o":"activity_phase","oa":76},{"a":14594,"t":"code","b":[96],"m":"rts"},{"a":14595,"l":"b_3903","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[14565,14579,14590]},{"a":14598,"l":"act29_return_glass","c":"Activity 29 phase 12: carrying ($0391) = $FF and heads for location $24 (the sink, ground floor, X/2 $30) with figure 2 shown again, through the tail at $390D.","t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":14600,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":14602,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":14605,"l":"j_390D","t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806,"x":[14477]},{"a":14608,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":14610,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":14613,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":14615,"t":"code","b":[141,192,3],"m":"sta","o":"move_target","oa":960},{"a":14618,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":14620,"t":"code","b":[32,17,30],"m":"jsr","o":"at_target","oa":7697},{"a":14623,"t":"code","b":[240,5],"m":"beq","o":"b_3926","oa":14630},{"a":14625,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":14627,"t":"code","b":[141,188,3],"m":"sta","o":"move_state","oa":956},{"a":14630,"l":"b_3926","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[14623]},{"a":14633,"l":"unused_3929","c":"Code that nothing reaches (after act29_return_glass's JMP $8F0B; no address points here): LDA #0, STA $8D9B, RTS, which would set activity 0.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14635,"t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251},{"a":14638,"t":"code","b":[96],"m":"rts"},{"a":14639,"l":"needs_check","c":"Called after a drink (act29_drink) and by activity 32's handler at $5450: loads act4_countdown ($0376) from act4_delay ($0375, 7) when it is 0; then, when both food_need ($0371) and water_need ($036E) are below 3, clears illness_worsening ($0367), so that the illness level falls back and the green face goes.","t":"code","b":[173,118,3],"m":"lda","o":"act4_countdown","oa":886,"x":[14542,21584]},{"a":14642,"t":"code","b":[208,6],"m":"bne","o":"b_393A","oa":14650},{"a":14644,"t":"code","b":[173,117,3],"m":"lda","o":"act4_delay","oa":885},{"a":14647,"t":"code","b":[141,118,3],"m":"sta","o":"act4_countdown","oa":886},{"a":14650,"l":"b_393A","t":"code","b":[173,113,3],"m":"lda","o":"food_need","oa":881,"x":[14642]},{"a":14653,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":14655,"t":"code","b":[176,12],"m":"bcs","o":"r_394D","oa":14669},{"a":14657,"t":"code","b":[173,110,3],"m":"lda","o":"water_need","oa":878},{"a":14660,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":14662,"t":"code","b":[176,5],"m":"bcs","o":"r_394D","oa":14669},{"a":14664,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":14666,"t":"code","b":[141,103,3],"m":"sta","o":"illness_worsening","oa":871},{"a":14669,"l":"r_394D","t":"code","b":[96],"m":"rts","x":[14655,14662]},{"a":14670,"l":"music_driver_start","c":"Starts the stereo: reached through driver_jumps $800F, whose only caller is stereo_on ($9256), the phase of activity 120 that also sets turntable_on ($2B45, the turntable picture). Clears the sound-job mask $478D and $02ED, then JMP music_start ($4424), which sets up the music driver and starts tune music_tune ($478C) with CIA1 timer A as the note clock and timer B for the effects. Activity 9 (parser rule $C9BA: HEAR, LISTEN, PUT, START or SPIN with STEREO, MUSIC, RECORD...) runs the script $AAEC: 121 (stereo off), 119 ($AB0F picks the tune at random), 118, 120 (stereo on); the DANCE rule ($CAAA) runs activity 9 and then activity 53, the dance, so he dances to these same tunes.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[32783]},{"a":14672,"t":"code","b":[141,141,71],"m":"sta","o":"sound_job_bits","oa":18317},{"a":14675,"t":"code","b":[141,237,2],"m":"sta","o":"snd_unused_02ed","oa":749},{"a":14678,"t":"code","b":[76,36,68],"m":"jmp","o":"music_start","oa":17444},{"a":14681,"l":"timer_irq","c":"CIA1 interrupt, reached through driver_jumps $8018 from the IRQ handler ($072C) when the source is not the raster. Reads $DC0D (acknowledging it): timer A goes to music_timer_a, timer B to music_timer_b, each after CLI so the raster interrupt can still come in; anything else returns.","t":"code","b":[173,13,220],"m":"lda","o":"cia1_interrupt","x":[32792]},{"a":14684,"t":"code","b":[48,1],"m":"bmi","o":"b_395F","oa":14687},{"a":14686,"t":"code","b":[96],"m":"rts"},{"a":14687,"l":"b_395F","t":"code","b":[74],"m":"lsr","o":"a","x":[14684]},{"a":14688,"t":"code","b":[176,4],"m":"bcs","o":"b_3966","oa":14694},{"a":14690,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":14691,"t":"code","b":[176,5],"m":"bcs","o":"b_396A","oa":14698},{"a":14693,"t":"code","b":[96],"m":"rts"},{"a":14694,"l":"b_3966","t":"code","b":[88],"m":"cli","x":[14688]},{"a":14695,"t":"code","b":[76,59,63],"m":"jmp","o":"music_timer_a","oa":16187},{"a":14698,"l":"b_396A","t":"code","b":[88],"m":"cli","x":[14691]},{"a":14699,"t":"code","b":[76,191,63],"m":"jmp","o":"music_timer_b","oa":16319},{"a":14702,"l":"sound_dispatch","c":"Called by the raster interrupt ($0812, through driver_jumps $800C) instead of sound_frame ($B003) while the music flag $801E is set: for each set bit of the job mask $478D (bit 0 first; $02EE the bit number, $02EF the bits left) calls the routine from sound_jobs through jmp_sound_job. music_start clears $478D and no tune sets it, so with the four tunes it calls nothing; only unused code ($39C1, $39F4, $39FA, $456F) sets bits.","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[32780]},{"a":14704,"t":"code","b":[141,238,2],"m":"sta","o":"snd_job_index","oa":750},{"a":14707,"t":"code","b":[173,141,71],"m":"lda","o":"sound_job_bits","oa":18317},{"a":14710,"t":"code","b":[141,239,2],"m":"sta","o":"snd_job_mask","oa":751},{"a":14713,"l":"b_3979","t":"code","b":[238,238,2],"m":"inc","o":"snd_job_index","oa":750,"x":[14740]},{"a":14716,"t":"code","b":[78,239,2],"m":"lsr","o":"snd_job_mask","oa":751},{"a":14719,"t":"code","b":[144,16],"m":"bcc","o":"b_3991","oa":14737},{"a":14721,"t":"code","b":[174,238,2],"m":"ldx","o":"snd_job_index","oa":750},{"a":14724,"t":"code","b":[189,156,57],"m":"lda","o":"sound_jobs,x","oa":14748},{"a":14727,"t":"code","b":[133,77],"m":"sta","o":"snd_job_vec","oa":77},{"a":14729,"t":"code","b":[189,164,57],"m":"lda","o":"sound_jobs_hi,x","oa":14756},{"a":14732,"t":"code","b":[133,78],"m":"sta","o":"snd_job_vec_hi","oa":78},{"a":14734,"t":"code","b":[32,153,57],"m":"jsr","o":"jmp_sound_job","oa":14745},{"a":14737,"l":"b_3991","t":"code","b":[173,239,2],"m":"lda","o":"snd_job_mask","oa":751,"x":[14719]},{"a":14740,"t":"code","b":[208,227],"m":"bne","o":"b_3979","oa":14713},{"a":14742,"t":"code","b":[76,172,57],"m":"jmp","o":"sound_dispatch_end","oa":14764},{"a":14745,"l":"jmp_sound_job","c":"JMP ($004D): calls the sound job whose address sound_dispatch put in $4D/$4E.","t":"code","b":[108,77,0],"m":"jmp","o":"(snd_job_vec)","oa":77,"x":[14734]},{"a":14748,"l":"sound_jobs","c":"Split address table, low bytes first, high bytes from $39A4: the eight jobs of sound_dispatch, one per bit of $478D. 0 $4574 filter cutoff from voice 3's envelope ($D41C); 1 $4586 and 2 $4599 add $D41C to voice 2's frequency; 3 $45B2 slides the three voices down; 4 $45EF moves voice 1 by $D41B - $80; 5 $4610 slides voice 3 down; 6 $4625 and 7 $4677 per-voice sweeps from tables at $4794-$479F and $478E.","t":"byte","b":[116,134,153,178,239,16,37,119],"d":["job_filter_env3","job_v2_env3_raw","job_v2_env3","job_all_fall","job_v1_osc3","job_v3_fall","job_trill","job_slots_fall"],"note":"split table: 8 lo/hi pointers","x":[14724]},{"a":14756,"l":"sound_jobs_hi","c":"High-byte half of sound_jobs ($45 and $46), read as $39A4,X by sound_dispatch at $3989.","t":"byte","b":[69,69,69,69,69,70,70,70],"x":[14729]},{"a":14764,"l":"sound_dispatch_end","c":"The RTS sound_dispatch jumps to when done ($3996).","t":"code","b":[96],"m":"rts","x":[14742]},{"a":14765,"l":"tune_end","c":"Native routine the tunes call when voice 1's stream is over ($C1 $AD $39 near the end of each tune*_voice1): $801F = $FF, which makes sound_requests reset the sound and clear the music flag on its next pass, then falls into stop_music_timers.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":14767,"t":"code","b":[141,31,128],"m":"sta","o":"music_stop_req","oa":32799},{"a":14770,"l":"stop_music_timers","c":"Disables all CIA1 interrupts ($DC0D = $7F) and stops timers A and B ($DC0E = $DC0F = $08: stopped, one-shot). Reached through driver_jumps $8012 from sound_requests and by falling in from tune_end.","t":"code","b":[169,127],"m":"lda","o":"#$7F","x":[32786]},{"a":14772,"t":"code","b":[141,13,220],"m":"sta","o":"cia1_interrupt"},{"a":14775,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":14777,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":14780,"t":"code","b":[141,15,220],"m":"sta","o":"cia1_control_b"},{"a":14783,"t":"code","b":[96],"m":"rts"},{"a":14784,"l":"unused_39C0","c":"A lone RTS after stop_music_timers; nothing points here.","t":"code","b":[96],"m":"rts"},{"a":14785,"l":"unused_jobs_1","c":"Music-driver helper that no tune calls (no stream holds $C1 $C1 $39 and no code points here): $478D = 1, sound job 0.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":14787,"t":"code","b":[141,141,71],"m":"sta","o":"sound_job_bits","oa":18317},{"a":14790,"t":"code","b":[96],"m":"rts"},{"a":14791,"l":"unused_regs_39C7","c":"SID setting lists that nothing references, in the format of music_regs_all: register and value pairs, ended by a byte of $80 or more. $39C7: 4 $80, 5 $09, 6 $0A, 8 $F8, 9 $F6, 10 $6E. $39D4: 4 $20, 5 $09, 9 $A3. $39DB: 5 $06. $39DE: 2 $B0, 3 $10, 4 $40, 5 $0A, 6 $09. $39E9: 2 $0F, 3 $0A, 4 $40, 5 $0A, 6 $09.","t":"byte","b":[4,128,5,9,6,10,8,248]},{"a":14799,"t":"byte","b":[9,246,10,110,255,4,32,5]},{"a":14807,"t":"byte","b":[9,9,163,255,5,6,255,2]},{"a":14815,"t":"byte","b":[176,3,16,4,64,5,10,6]},{"a":14823,"t":"byte","b":[9,255,2,15,3,10,4,64]},{"a":14831,"t":"byte","b":[5,10,6,9,255]},{"a":14836,"l":"unused_jobs_3","c":"Helper no tune calls: $478D = 3, sound jobs 0 and 1.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":14838,"t":"code","b":[141,141,71],"m":"sta","o":"sound_job_bits","oa":18317},{"a":14841,"t":"code","b":[96],"m":"rts"},{"a":14842,"l":"unused_jobs_5","c":"Helper no tune calls: $478D = 5, sound jobs 0 and 2.","t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":14844,"t":"code","b":[141,141,71],"m":"sta","o":"sound_job_bits","oa":18317},{"a":14847,"t":"code","b":[96],"m":"rts"},{"a":14848,"l":"unused_regs_3A00","c":"One more setting list nothing references: register 4 = $10 (triangle), end.","t":"byte","b":[4,16,255]},{"a":14851,"l":"tune_streams","c":"The stereo's four tunes: for each, the start of the stream of SID voices 1, 2 and 3 (music_voice_init at $44A9 takes entry voice + 3 x music_tune; activity 119 picks the tune at random). Tune 0: $3A1B, $3AD5, $3AF5; 1: $3A2D, $3ADB, $3AF9; 2: $3A43, $3AE5, $3B01; 3: $3A60, $3AEF, $3B0B. The streams, read by music_run_voice ($4022): a byte below $80 is a note, high nibble its length (1-5 given, 6 the previous length, 7 length in the next byte, 0 no wait), low nibble the pitch step from the note before: 0-12 is -6 to +6 semitones (so in the text 'a'-'l' are -5 to +6 at the previous length, 'f' repeats the pitch), 13 ties ('m'), 14 is a rest ('n'), 15 takes the step from the next byte ('o', then e.g. '4' $34 = -12, '9' $39 = -7, $0C = +12: six bits signed, bit 6 set for full length). A length unit is 8 ticks of CIA timer A, whose period is the tempo x 256 cycles. A byte of $80 or more is a command, low three bits the group and bits 4-6 a parameter: $80 n push, $90/$A0/$B0 n set/AND/OR the voice flags, $C0 n and $D0 repeat, $81 end of voice, $A1 return, $C1 lo hi call 6502 code, $E1/$F1 n skip on/back; $82+p push and $83+p pull register p, $84+p n set it (p 0 pitch, 1 length, 2 articulation, 3 tempo); $86+p jumps and $C6/$D6/$E6/$F6 calls (1-byte relative, 2-byte relative or absolute), $87+p the same when the count on the stack, decremented, is not 0. Voice flags: bit 7 playing, 6 release before the end, 5 invert every step, 3 run the voice's effect routine, 1 glide (bit 2 its direction), 0 vibrato.","t":"addr","b":[27,58],"oa":14875,"o":"tune0_voice1","x":[17592,17598]},{"a":14853,"t":"addr","b":[213,58],"oa":15061,"o":"tune0_voice2"},{"a":14855,"t":"addr","b":[245,58],"oa":15093,"o":"tune0_voice3"},{"a":14857,"t":"addr","b":[45,58],"oa":14893,"o":"tune1_voice1"},{"a":14859,"t":"addr","b":[219,58],"oa":15067,"o":"tune1_voice2"},{"a":14861,"t":"addr","b":[249,58],"oa":15097,"o":"tune1_voice3"},{"a":14863,"t":"addr","b":[67,58],"oa":14915,"o":"tune2_voice1"},{"a":14865,"t":"addr","b":[229,58],"oa":15077,"o":"tune2_voice2"},{"a":14867,"t":"addr","b":[1,59],"oa":15105,"o":"tune2_voice3"},{"a":14869,"t":"addr","b":[96,58],"oa":14944,"o":"tune3_voice1"},{"a":14871,"t":"addr","b":[239,58],"oa":15087,"o":"tune3_voice2"},{"a":14873,"t":"addr","b":[11,59],"oa":15115,"o":"tune3_voice3"},{"a":14875,"l":"tune0_voice1","c":"Tune 0, voice 1: flags OR $08 (effect routine, which is left at the do-nothing $44A8), sid_list_voice music_regs_all, tempo $36, pitch $48, calls part_a1, then tune_end and end of voice. 294 length units, about 33 seconds on a PAL machine.","t":"byte","b":[176,8,193,254,67,184,58,180],"x":[14851]},{"a":14883,"t":"byte","b":[54,132,72,246,113,61,193,173]},{"a":14891,"t":"byte","b":[57,129]},{"a":14893,"l":"tune1_voice1","c":"Tune 1, voice 1: flags OR $08, music_regs_all, saves the tempo, vibrato on, pitch $34, calls part_b1 (tempo $5A, later $50), vibrato off, restores the tempo, tune_end, end. 134 length units.","t":"byte","b":[176,8,193,254,67,184,58,178],"x":[14857]},{"a":14901,"t":"byte","b":[176,1,132,52,246,17,59,160]},{"a":14909,"t":"byte","b":[254,179,193,173,57,129]},{"a":14915,"l":"tune2_voice1","c":"Tune 2, voice 1: music_regs_all, flags OR $09, tempo $36, music_regs_t2, flags OR $20 (every step inverted), articulation 2, pitch $3C, calls part_a1 upside down, flag $20 off, tune_end, end.","t":"byte","b":[193,254,67,184,58,176,9,180],"x":[14863]},{"a":14923,"t":"byte","b":[54,193,254,67,166,58,176,32]},{"a":14931,"t":"byte","b":[164,2,132,60,246,113,61,160]},{"a":14939,"t":"byte","b":[223,193,173,57,129]},{"a":14944,"l":"tune3_voice1","c":"Tune 3, voice 1: music_regs_all and then music_regs_t3, pitch $48, part_a1, tune_end, end. No tempo is set, so tune 3 is tune 0 at the starting tempo $3B (about 36 seconds) with another sound on voice 1.","t":"byte","b":[193,254,67,184,58,193,254,67],"x":[14869]},{"a":14952,"t":"byte","b":[175,58,132,72,246,113,61,193]},{"a":14960,"t":"byte","b":[173,57,129]},{"a":14963,"l":"unused_set_effect","c":"Native helper no tune calls: points voice 1's effect hook (music_hook, $7FF4/$7FF5) at effect_nop. The NOP at $3A7F after it is padding.","t":"code","b":[169,150],"m":"lda","o":"#$96"},{"a":14965,"t":"code","b":[141,244,127],"m":"sta","o":"music_hook","oa":32756},{"a":14968,"t":"code","b":[169,58],"m":"lda","o":"#$3A"},{"a":14970,"t":"code","b":[141,245,127],"m":"sta","o":"music_hook_hi","oa":32757},{"a":14973,"t":"code","b":[234],"m":"nop"},{"a":14974,"t":"code","b":[96],"m":"rts"},{"a":14975,"t":"code","b":[234],"m":"nop"},{"a":14976,"l":"unused_filter_setup","c":"Native helper no tune calls: filter resonance and routing $47 (sid_shadow_resonance and $D417), band-pass mode with the volume kept (sid_shadow_volume and $D418).","t":"code","b":[169,71],"m":"lda","o":"#$47"},{"a":14978,"t":"code","b":[141,228,127],"m":"sta","o":"sid_shadow_resonance","oa":32740},{"a":14981,"t":"code","b":[141,23,212],"m":"sta","o":"sid_filter_resonance"},{"a":14984,"t":"code","b":[173,229,127],"m":"lda","o":"sid_shadow_volume","oa":32741},{"a":14987,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":14989,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":14991,"t":"code","b":[141,229,127],"m":"sta","o":"sid_shadow_volume","oa":32741},{"a":14994,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":14997,"t":"code","b":[96],"m":"rts"},{"a":14998,"l":"effect_nop","c":"NOP, RTS: the effect routine unused_set_effect would install. The NOP at $3A98 pads the next helper.","t":"code","b":[234],"m":"nop"},{"a":14999,"t":"code","b":[96],"m":"rts"},{"a":15000,"t":"code","b":[234],"m":"nop"},{"a":15001,"l":"unused_filter_sweep","c":"Native helper no tune calls: increments $02F2 and writes it as the filter cutoff (sid_shadow_cutoff and $D416).","t":"code","b":[238,242,2],"m":"inc","o":"filter_sweep","oa":754},{"a":15004,"t":"code","b":[173,242,2],"m":"lda","o":"filter_sweep","oa":754},{"a":15007,"t":"code","b":[141,227,127],"m":"sta","o":"sid_shadow_cutoff","oa":32739},{"a":15010,"t":"code","b":[141,22,212],"m":"sta","o":"sid_filter_cutoff_hi"},{"a":15013,"t":"code","b":[96],"m":"rts"},{"a":15014,"l":"music_regs_t2","c":"SID settings for tune 2's voice 1, read by sid_list_voice (register relative to the voice, value; ended by a byte of $80 or more): control $10 (triangle), attack/decay $36, sustain/release $22, register $17 = 0, end.","t":"byte","b":[4,16,5,54,6,34,23,0]},{"a":15022,"t":"byte","b":[255]},{"a":15023,"l":"music_regs_t3","c":"SID settings for tune 3's voice 1: pulse width high $01, control $10 (triangle), attack/decay $36, sustain/release $22, end.","t":"byte","b":[3,1,4,16,5,54,6,34]},{"a":15031,"t":"byte","b":[255]},{"a":15032,"l":"music_regs_all","c":"SID settings every tune's voice 1 loads first; at voice offset 0 they reach all three voices: attack/decay $A8 x 3, sustain/release $A9, $A9, $79, pulse width low $08 (voices 1, 2) and high $08 (voice 3), control $40 (pulse) x 3, filter routing 0, mode/volume $5C, end.","t":"byte","b":[5,168,12,168,19,168,6,169]},{"a":15040,"t":"byte","b":[13,169,20,121,2,8,9,8]},{"a":15048,"t":"byte","b":[17,8,4,64,11,64,18,64]},{"a":15056,"t":"byte","b":[23,0,24,92,255]},{"a":15061,"l":"tune0_voice2","c":"Tune 0, voice 2: pitch $29, calls part_a2, end of voice.","t":"byte","b":[132,41,246,0,60,129],"x":[14853]},{"a":15067,"l":"tune1_voice2","c":"Tune 1, voice 2: vibrato on, pitch $3C, part_b2, vibrato off, end.","t":"byte","b":[176,1,132,60,246,103,59,160],"x":[14859]},{"a":15075,"t":"byte","b":[254,129]},{"a":15077,"l":"tune2_voice2","c":"Tune 2, voice 2: inverted, pitch $48, part_a1, inversion off, end.","t":"byte","b":[176,32,132,72,246,113,61,160],"x":[14865]},{"a":15085,"t":"byte","b":[223,129]},{"a":15087,"l":"tune3_voice2","c":"Tune 3, voice 2: pitch $29, part_a2, end (as tune 0).","t":"byte","b":[132,41,246,0,60,129],"x":[14871]},{"a":15093,"l":"tune0_voice3","c":"Tune 0, voice 3: calls part_a3, end of voice. Tune 3's voice 3 jumps back here.","t":"byte","b":[246,231,60,129],"x":[14855]},{"a":15097,"l":"tune1_voice3","c":"Tune 1, voice 3: vibrato on, part_b3, vibrato off, end.","t":"byte","b":[176,1,246,232,59,160,254,129],"x":[14861]},{"a":15105,"l":"tune2_voice3","c":"Tune 2, voice 3: inverted, pitch $30, part_a1, then clears all its flags ($A0 $00) and ends.","t":"byte","b":[176,32,132,48,246,113,61,160],"x":[14867]},{"a":15113,"t":"byte","b":[0,129]},{"a":15115,"l":"tune3_voice3","c":"Tune 3, voice 3: part_a3, then jumps back ($96 $1B) to tune0_voice3 to play it again. The second pass would start as voice 1 ends, and tune_end stops the timers then, so it is not heard; the end byte at $3B10 is never reached.","t":"byte","b":[246,231,60,150,27,129],"x":[14873]},{"a":15121,"l":"part_b1","c":"Piece B (tune 1), top part: tempo $5A, the phrase at $3B1C twice (the pitch saved and restored around it), then the passage at $3B30, which changes the tempo to $50 at $3B39; return.","t":"byte","b":[180,90,130,198,6,131,198,3]},{"a":15129,"t":"byte","b":[198,21,161,46,102,107,105,101]},{"a":15137,"t":"byte","b":[111,57,111,7,105,100,99,105]},{"a":15145,"t":"byte","b":[106,104,98,100,111,56,161,47]},{"a":15153,"t":"byte","b":[7,100,106,105,107,97,99,98]},{"a":15161,"t":"byte","b":[180,80,30,103,105,105,105,99]},{"a":15169,"t":"byte","b":[99,99,30,103,105,105,105,99]},{"a":15177,"t":"byte","b":[99,99,30,103,106,105,107,97]},{"a":15185,"t":"byte","b":[99,98,111,7,98,99,97,107]},{"a":15193,"t":"byte","b":[97,98,99,33,106,105,105,104]},{"a":15201,"t":"byte","b":[106,105,105,120,6,161]},{"a":15207,"l":"part_b2","c":"Piece B, middle part: the phrase at $3B70 twice, then $3B92 (with octave leaps written 'o4' and 'o' $0C), return.","t":"byte","b":[130,198,6,131,198,3,198,35]},{"a":15215,"t":"byte","b":[161,22,104,100,106,98,101,103]},{"a":15223,"t":"byte","b":[111,56,106,105,105,104,106,105]},{"a":15231,"t":"byte","b":[105,104,98,99,97,107,97,107]},{"a":15239,"t":"byte","b":[97,98,104,106,105,107,104,100]},{"a":15247,"t":"byte","b":[99,99,161,23,97,99,105,99]},{"a":15255,"t":"byte","b":[105,99,98,106,98,97,107,102]},{"a":15263,"t":"byte","b":[106,105,107,103,111,52,111,12]},{"a":15271,"t":"byte","b":[111,52,111,12,111,52,111,12]},{"a":15279,"t":"byte","b":[111,52,111,13,111,52,111,12]},{"a":15287,"t":"byte","b":[111,52,111,12,111,52,111,12]},{"a":15295,"t":"byte","b":[111,52,111,13,97,99,98,111]},{"a":15303,"t":"byte","b":[7,99,98,97,111,57,105,106]},{"a":15311,"t":"byte","b":[107,105,106,107,105,104,99,99]},{"a":15319,"t":"byte","b":[98,111,7,99,98,100,108,98]},{"a":15327,"t":"byte","b":[100,99,107,100,99,99,114,6]},{"a":15335,"t":"byte","b":[161]},{"a":15336,"l":"part_b3","c":"Piece B, bass: pitch $21 and sixteen notes, most of them long (lengths 4, 8, 16 and 22 units), return.","t":"byte","b":[132,33,118,8,101,101,65,104]},{"a":15344,"t":"byte","b":[123,8,101,101,65,104,123,16]},{"a":15352,"t":"byte","b":[119,8,103,103,102,113,22,161]},{"a":15360,"l":"part_a2","c":"Piece A (tunes 0 and 3), middle part: sections at $3C19, $3C53, $3C6C twice, $3C86, $3CA4 twice (an octave figure repeated eight times with $80 $08 ... $97 $06), $3C19 again and $3CAF; return.","t":"byte","b":[130,198,22,198,78,130,198,100]},{"a":15368,"t":"byte","b":[131,198,97,198,121,130,198,148]},{"a":15376,"t":"byte","b":[131,198,145,131,198,3,198,151]},{"a":15384,"t":"byte","b":[161,126,8,22,105,106,107,111]},{"a":15392,"t":"byte","b":[55,106,107,106,103,97,99,105]},{"a":15400,"t":"byte","b":[99,105,99,98,111,57,105,106]},{"a":15408,"t":"byte","b":[111,57,105,106,107,106,103,97]},{"a":15416,"t":"byte","b":[99,105,99,105,99,98,99,105]},{"a":15424,"t":"byte","b":[106,107,97,107,105,106,120,6]},{"a":15432,"t":"byte","b":[19,105,99,105,99,108,102,99]},{"a":15440,"t":"byte","b":[99,98,161,20,99,100,97,107]},{"a":15448,"t":"byte","b":[105,106,107,105,99,98,99,100]},{"a":15456,"t":"byte","b":[106,105,107,104,100,101,100,100]},{"a":15464,"t":"byte","b":[100,101,100,161,31,14,97,111]},{"a":15472,"t":"byte","b":[57,111,7,107,98,111,56,111]},{"a":15480,"t":"byte","b":[8,106,97,111,57,111,7,107]},{"a":15488,"t":"byte","b":[98,111,56,111,8,161,31,56]},{"a":15496,"t":"byte","b":[107,105,99,105,99,97,98,104]},{"a":15504,"t":"byte","b":[105,106,105,106,98,97,99,100]},{"a":15512,"t":"byte","b":[99,99,98,98,106,107,105,104]},{"a":15520,"t":"byte","b":[104,106,105,161,11,128,8,31]},{"a":15528,"t":"byte","b":[12,111,52,151,6,227,161,31]},{"a":15536,"t":"byte","b":[50,99,100,97,107,105,106,107]},{"a":15544,"t":"byte","b":[105,99,98,99,100,106,105,107]},{"a":15552,"t":"byte","b":[102,106,98,99,105,99,97,107]},{"a":15560,"t":"byte","b":[97,107,97,98,106,98,99,105]},{"a":15568,"t":"byte","b":[106,111,52,111,12,111,52,111]},{"a":15576,"t":"byte","b":[12,111,52,111,12,111,52,102]},{"a":15584,"t":"byte","b":[98,106,107,127,6,12,161]},{"a":15591,"l":"part_a3","c":"Piece A, bass part: pitch $24; sections at $3D02, $3D19, $3D2D twice, $3D35, $3D4C twice, $3D02 again and $3D54; return.","t":"byte","b":[132,36,130,198,22,198,43,130]},{"a":15599,"t":"byte","b":[198,60,131,198,57,198,63,130]},{"a":15607,"t":"byte","b":[198,83,131,198,80,131,198,3]},{"a":15615,"t":"byte","b":[198,83,161,118,8,107,111,57]},{"a":15623,"t":"byte","b":[107,111,57,67,111,12,111,57]},{"a":15631,"t":"byte","b":[35,111,12,100,108,111,48,111]},{"a":15639,"t":"byte","b":[7,161,79,57,43,111,12,111]},{"a":15647,"t":"byte","b":[57,111,52,100,111,12,111,54]},{"a":15655,"t":"byte","b":[111,12,105,111,52,161,37,70]},{"a":15663,"t":"byte","b":[38,111,12,70,38,161,79,57]},{"a":15671,"t":"byte","b":[47,12,111,52,111,57,111,12]},{"a":15679,"t":"byte","b":[100,111,52,106,111,12,98,111]},{"a":15687,"t":"byte","b":[52,106,111,12,161,47,57,70]},{"a":15695,"t":"byte","b":[38,97,70,38,161,68,47,12]},{"a":15703,"t":"byte","b":[111,52,111,57,111,12,100,111]},{"a":15711,"t":"byte","b":[52,115,8,38,111,12,97,98]},{"a":15719,"t":"byte","b":[74,111,12,43,111,52,127,6]},{"a":15727,"t":"byte","b":[52,161]},{"a":15729,"l":"part_a1","c":"Piece A, top part (voice 1 of tunes 0, 2 and 3, and voices 2 and 3 of tune 2): a rest, $3D8C (itself two calls of $3DAF and more notes), $3DBA, $3DCD twice, $3DE2, $3DF3 twice, $3D8C again and $3E10; return.","t":"byte","b":[130,46,198,23,198,67,130,198]},{"a":15737,"t":"byte","b":[83,131,198,80,198,99,130,198]},{"a":15745,"t":"byte","b":[113,131,198,110,43,131,198,3]},{"a":15753,"t":"byte","b":[198,133,161,198,33,198,31,22]},{"a":15761,"t":"byte","b":[104,104,100,104,98,99,105,99]},{"a":15769,"t":"byte","b":[100,101,103,101,100,36,22,104]},{"a":15777,"t":"byte","b":[104,111,9,98,106,96,108,98]},{"a":15785,"t":"byte","b":[100,99,105,99,99,161,22,101]},{"a":15793,"t":"byte","b":[39,97,103,19,101,39,106,103]},{"a":15801,"t":"byte","b":[161,34,31,17,101,39,97,103]},{"a":15809,"t":"byte","b":[99,104,98,24,104,100,100,101]},{"a":15817,"t":"byte","b":[103,101,100,161,21,98,100,104]},{"a":15825,"t":"byte","b":[107,97,100,104,111,7,111,57]},{"a":15833,"t":"byte","b":[100,104,111,8,111,56,100,104]},{"a":15841,"t":"byte","b":[161,43,31,12,101,39,97,103]},{"a":15849,"t":"byte","b":[99,104,98,104,99,103,99,104]},{"a":15857,"t":"byte","b":[99,161,23,97,111,7,111,57]},{"a":15865,"t":"byte","b":[111,8,111,56,107,97,111,7]},{"a":15873,"t":"byte","b":[111,57,111,8,111,56,111,10]},{"a":15881,"t":"byte","b":[111,54,111,7,111,57,161,34]},{"a":15889,"t":"byte","b":[31,17,101,39,97,103,99,104]},{"a":15897,"t":"byte","b":[98,19,111,15,99,97,107,97]},{"a":15905,"t":"byte","b":[98,106,98,106,98,99,105,99]},{"a":15913,"t":"byte","b":[97,107,104,103,104,104,100,100]},{"a":15921,"t":"byte","b":[101,107,107,97,98,106,127,6]},{"a":15929,"t":"byte","b":[57,161]},{"a":15931,"l":"unused_scale","c":"A stream subroutine nothing calls: eight notes of length 2 stepping 0, +2, +2, +1, +2, +2, +2, +1 (a major scale) and a return.","t":"byte","b":[38,40,40,39,40,40,40,39]},{"a":15939,"t":"byte","b":[161]},{"a":15940,"l":"unused_random","c":"Pseudo-random routine nothing calls: shifts the 16-bit value $02F0/$02F1 left one bit, feeding in bit 2 of $02F0 XOR bit 7 of $02F1, and returns the new low byte. The game's own random routine is $195E.","t":"code","b":[173,240,2],"m":"lda","o":"shift_rng_seed","oa":752},{"a":15943,"t":"code","b":[10],"m":"asl","o":"a"},{"a":15944,"t":"code","b":[10],"m":"asl","o":"a"},{"a":15945,"t":"code","b":[10],"m":"asl","o":"a"},{"a":15946,"t":"code","b":[10],"m":"asl","o":"a"},{"a":15947,"t":"code","b":[10],"m":"asl","o":"a"},{"a":15948,"t":"code","b":[77,241,2],"m":"eor","o":"shift_rng_seed_hi","oa":753},{"a":15951,"t":"code","b":[10],"m":"asl","o":"a"},{"a":15952,"t":"code","b":[46,240,2],"m":"rol","o":"shift_rng_seed","oa":752},{"a":15955,"t":"code","b":[46,241,2],"m":"rol","o":"shift_rng_seed_hi","oa":753},{"a":15958,"t":"code","b":[173,240,2],"m":"lda","o":"shift_rng_seed","oa":752},{"a":15961,"t":"code","b":[96],"m":"rts"},{"a":15962,"l":"unused_multiply","c":"Shift-and-add multiply nothing calls: adds $02F3 x ($1A/$1B) into $18/$19, using up $02F3 and doubling $1A/$1B as it goes.","t":"code","b":[173,243,2],"m":"lda","o":"mul_count","oa":755,"x":[15989]},{"a":15965,"t":"code","b":[240,25],"m":"beq","o":"r_3E78","oa":15992},{"a":15967,"t":"code","b":[78,243,2],"m":"lsr","o":"mul_count","oa":755},{"a":15970,"t":"code","b":[144,13],"m":"bcc","o":"b_3E71","oa":15985},{"a":15972,"t":"code","b":[165,24],"m":"lda","o":"tmp_ptr_a","oa":24},{"a":15974,"t":"code","b":[24],"m":"clc"},{"a":15975,"t":"code","b":[101,26],"m":"adc","o":"tmp_ptr_b","oa":26},{"a":15977,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":15979,"t":"code","b":[165,25],"m":"lda","o":"tmp_ptr_a_hi","oa":25},{"a":15981,"t":"code","b":[101,27],"m":"adc","o":"tmp_ptr_b_hi","oa":27},{"a":15983,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":15985,"l":"b_3E71","t":"code","b":[6,26],"m":"asl","o":"tmp_ptr_b","oa":26,"x":[15970]},{"a":15987,"t":"code","b":[38,27],"m":"rol","o":"tmp_ptr_b_hi","oa":27},{"a":15989,"t":"code","b":[76,90,62],"m":"jmp","o":"unused_multiply","oa":15962},{"a":15992,"l":"r_3E78","t":"code","b":[96],"m":"rts","x":[15965]},{"a":15993,"l":"copy_image_row","c":"Copies one character row of a stored image to the screen: $02FC bytes of bitmap from ($1C) to ($1E), and $02FE bytes each of colour-matrix values from ($1A) and colour RAM values from ($18) to the addresses in the patched STA operands (row_matrix_dest, row_colour_dest). Returns with A, Y and X from $02FD, $02FE and $02FF.","t":"code","b":[172,252,2],"m":"ldy","o":"blit_row_bytes","oa":764,"x":[16054]},{"a":15996,"t":"code","b":[136],"m":"dey"},{"a":15997,"l":"b_3E7D","t":"code","b":[177,28],"m":"lda","o":"(tmp_ptr_c),y","oa":28,"x":[16002]},{"a":15999,"t":"code","b":[145,30],"m":"sta","o":"(tmp_ptr_d),y","oa":30},{"a":16001,"t":"code","b":[136],"m":"dey"},{"a":16002,"t":"code","b":[16,249],"m":"bpl","o":"b_3E7D","oa":15997},{"a":16004,"t":"code","b":[172,254,2],"m":"ldy","o":"blit_width","oa":766},{"a":16007,"t":"code","b":[136],"m":"dey"},{"a":16008,"l":"b_3E88","t":"code","b":[177,26],"m":"lda","o":"(tmp_ptr_b),y","oa":26,"x":[16014]},{"a":16010,"t":"code","b":[153,86,93],"m":"sta","o":"f_5D56,y","oa":23894},{"a":16011,"t":"note","l":"row_matrix_dest_lo","c":"Low byte of the colour-matrix destination (operand of the STA at $3E8A, $5C00-based): set at $96F0 from $97F0,X, then 40 on per row.","note":"inside the item at $3E8A","x":[16074,16077,38640]},{"a":16012,"t":"note","l":"row_matrix_dest_hi","c":"High byte of that destination, set at $96F6 from $9800,X; the colour RAM loop follows.","note":"inside the item at $3E8A","x":[16082,38646]},{"a":16013,"t":"code","b":[136],"m":"dey"},{"a":16014,"t":"code","b":[16,248],"m":"bpl","o":"b_3E88","oa":16008},{"a":16016,"t":"code","b":[172,254,2],"m":"ldy","o":"blit_width","oa":766},{"a":16019,"t":"code","b":[136],"m":"dey"},{"a":16020,"l":"b_3E94","t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24,"x":[16026]},{"a":16022,"t":"code","b":[153,86,217],"m":"sta","o":"$D956,y"},{"a":16023,"t":"note","l":"row_colour_dest_lo","c":"Low byte of the colour RAM destination (operand of the STA at $3E96, $D800-based): set at $96FC from $9810,X, then 40 on per row.","note":"inside the item at $3E96","x":[16060,16063,38652]},{"a":16024,"t":"note","l":"row_colour_dest_hi","c":"High byte of that destination, set at $9702 from $9820,X; the routine's end follows.","note":"inside the item at $3E96","x":[16068,38658]},{"a":16025,"t":"code","b":[136],"m":"dey"},{"a":16026,"t":"code","b":[16,248],"m":"bpl","o":"b_3E94","oa":16020},{"a":16028,"t":"code","b":[173,253,2],"m":"lda","o":"blit_saved_a","oa":765},{"a":16031,"t":"code","b":[172,254,2],"m":"ldy","o":"blit_width","oa":766},{"a":16034,"t":"code","b":[174,255,2],"m":"ldx","o":"blit_saved_x","oa":767},{"a":16037,"t":"code","b":[96],"m":"rts"},{"a":16038,"l":"draw_image_row","c":"Draws one character row of an image and moves everything on to the next row: keeps A, X, Y (width Y cells) in $02FD, $02FF, $02FE, sets $02FC = 8 x Y, calls copy_image_row, then advances the destinations (matrix and colour RAM by 40, bitmap $1E/$1F by 320) and the sources ($1C/$1D by 8 x Y, $1A/$1B and $18/$19 by Y). Called once per row by the loop at $99CB, after $96ED has chosen picture X's destination and image.","t":"code","b":[141,253,2],"m":"sta","o":"blit_saved_a","oa":765,"x":[39371]},{"a":16041,"t":"code","b":[142,255,2],"m":"stx","o":"blit_saved_x","oa":767},{"a":16044,"t":"code","b":[140,254,2],"m":"sty","o":"blit_width","oa":766},{"a":16047,"t":"code","b":[152],"m":"tya"},{"a":16048,"t":"code","b":[10],"m":"asl","o":"a"},{"a":16049,"t":"code","b":[10],"m":"asl","o":"a"},{"a":16050,"t":"code","b":[10],"m":"asl","o":"a"},{"a":16051,"t":"code","b":[141,252,2],"m":"sta","o":"blit_row_bytes","oa":764},{"a":16054,"t":"code","b":[32,121,62],"m":"jsr","o":"copy_image_row","oa":15993},{"a":16057,"t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":16059,"t":"code","b":[24],"m":"clc"},{"a":16060,"t":"code","b":[109,151,62],"m":"adc","o":"row_colour_dest_lo","oa":16023},{"a":16063,"t":"code","b":[141,151,62],"m":"sta","o":"row_colour_dest_lo","oa":16023},{"a":16066,"t":"code","b":[144,3],"m":"bcc","o":"b_3EC7","oa":16071},{"a":16068,"t":"code","b":[238,152,62],"m":"inc","o":"row_colour_dest_hi","oa":16024},{"a":16071,"l":"b_3EC7","t":"code","b":[169,40],"m":"lda","o":"#$28","x":[16066]},{"a":16073,"t":"code","b":[24],"m":"clc"},{"a":16074,"t":"code","b":[109,139,62],"m":"adc","o":"row_matrix_dest_lo","oa":16011},{"a":16077,"t":"code","b":[141,139,62],"m":"sta","o":"row_matrix_dest_lo","oa":16011},{"a":16080,"t":"code","b":[144,3],"m":"bcc","o":"b_3ED5","oa":16085},{"a":16082,"t":"code","b":[238,140,62],"m":"inc","o":"row_matrix_dest_hi","oa":16012},{"a":16085,"l":"b_3ED5","t":"code","b":[169,64],"m":"lda","o":"#$40","x":[16080]},{"a":16087,"t":"code","b":[24],"m":"clc"},{"a":16088,"t":"code","b":[101,30],"m":"adc","o":"tmp_ptr_d","oa":30},{"a":16090,"t":"code","b":[133,30],"m":"sta","o":"tmp_ptr_d","oa":30},{"a":16092,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":16094,"t":"code","b":[101,31],"m":"adc","o":"tmp_ptr_d_hi","oa":31},{"a":16096,"t":"code","b":[133,31],"m":"sta","o":"tmp_ptr_d_hi","oa":31},{"a":16098,"t":"code","b":[173,252,2],"m":"lda","o":"blit_row_bytes","oa":764},{"a":16101,"t":"code","b":[24],"m":"clc"},{"a":16102,"t":"code","b":[101,28],"m":"adc","o":"tmp_ptr_c","oa":28},{"a":16104,"t":"code","b":[133,28],"m":"sta","o":"tmp_ptr_c","oa":28},{"a":16106,"t":"code","b":[144,2],"m":"bcc","o":"b_3EEE","oa":16110},{"a":16108,"t":"code","b":[230,29],"m":"inc","o":"tmp_ptr_c_hi","oa":29},{"a":16110,"l":"b_3EEE","t":"code","b":[152],"m":"tya","x":[16106]},{"a":16111,"t":"code","b":[24],"m":"clc"},{"a":16112,"t":"code","b":[101,26],"m":"adc","o":"tmp_ptr_b","oa":26},{"a":16114,"t":"code","b":[133,26],"m":"sta","o":"tmp_ptr_b","oa":26},{"a":16116,"t":"code","b":[144,2],"m":"bcc","o":"b_3EF8","oa":16120},{"a":16118,"t":"code","b":[230,27],"m":"inc","o":"tmp_ptr_b_hi","oa":27},{"a":16120,"l":"b_3EF8","t":"code","b":[152],"m":"tya","x":[16116]},{"a":16121,"t":"code","b":[24],"m":"clc"},{"a":16122,"t":"code","b":[101,24],"m":"adc","o":"tmp_ptr_a","oa":24},{"a":16124,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":16126,"t":"code","b":[144,2],"m":"bcc","o":"b_3F02","oa":16130},{"a":16128,"t":"code","b":[230,25],"m":"inc","o":"tmp_ptr_a_hi","oa":25},{"a":16130,"l":"b_3F02","t":"code","b":[172,254,2],"m":"ldy","o":"blit_width","oa":766,"x":[16126]},{"a":16133,"t":"code","b":[174,255,2],"m":"ldx","o":"blit_saved_x","oa":767},{"a":16136,"t":"code","b":[173,253,2],"m":"lda","o":"blit_saved_a","oa":765},{"a":16139,"t":"code","b":[96],"m":"rts"},{"a":16140,"l":"switch_68","c":"The switch on $68: LDA $68 and on to switch_a. Used with JSR, the table of handler addresses minus one following the call (16 call sites, among them act30_to_bed, act31_get_up and doorway_script).","t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104,"x":[8629,8861,8888,8917,8954,8983,9016,9045,9086,9103,9118,9133,12774,13173,13196,38095]},{"a":16142,"t":"code","b":[76,19,63],"m":"jmp","o":"switch_a","oa":16147},{"a":16145,"l":"switch_4c","c":"The switch on the activity phase $4C (84 call sites): LDA $4C and falls into switch_a.","t":"code","b":[165,76],"m":"lda","o":"activity_phase","oa":76,"x":[7771,7790,7813,8783,10135,10250,11774,12056,12333,12388,14314,21211,21731,22565,23339,36553,36935,36993,37042,37080,37089,37111,37128,37157,37293,37339,37412,37538,37767,43362,43371,43380,43389,43396,43403,43410,43419,43428,43439,43448,43457,43466,43477,43486,43497,43506,43515,43524,43531,43612,43768,43891,43904,43919,43928,43937,43948,43955,43964,43973,43986,43995,44004,44015,44028,44037,44046,44055,44068,44077,44086,44095,44104,44113,44124,44131,44150,44173,44196,44209,44778,48895,57347,58314]},{"a":16147,"l":"switch_a","c":"On n go to, n in A: pulls the return address (the JSR's last byte) into $28/$29, adds 2n + 1 to reach word n of the table after the JSR, pushes that word (a handler address minus one) and returns into the handler. Control never comes back to the call site, and n is not checked against the table's length. Called directly at $16EE and by the activity switch at $8DC6.","t":"code","b":[141,58,63],"m":"sta","o":"switch_index","oa":16186,"x":[5870,16142,36294]},{"a":16150,"t":"code","b":[104],"m":"pla"},{"a":16151,"t":"code","b":[133,40],"m":"sta","o":"switch_ptr","oa":40},{"a":16153,"t":"code","b":[104],"m":"pla"},{"a":16154,"t":"code","b":[133,41],"m":"sta","o":"switch_ptr_hi","oa":41},{"a":16156,"t":"code","b":[173,58,63],"m":"lda","o":"switch_index","oa":16186},{"a":16159,"t":"code","b":[56],"m":"sec"},{"a":16160,"t":"code","b":[101,40],"m":"adc","o":"switch_ptr","oa":40},{"a":16162,"t":"code","b":[144,2],"m":"bcc","o":"b_3F26","oa":16166},{"a":16164,"t":"code","b":[230,41],"m":"inc","o":"switch_ptr_hi","oa":41},{"a":16166,"l":"b_3F26","t":"code","b":[24],"m":"clc","x":[16162]},{"a":16167,"t":"code","b":[109,58,63],"m":"adc","o":"switch_index","oa":16186},{"a":16170,"t":"code","b":[133,40],"m":"sta","o":"switch_ptr","oa":40},{"a":16172,"t":"code","b":[144,2],"m":"bcc","o":"b_3F30","oa":16176},{"a":16174,"t":"code","b":[230,41],"m":"inc","o":"switch_ptr_hi","oa":41},{"a":16176,"l":"b_3F30","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[16172]},{"a":16178,"t":"code","b":[177,40],"m":"lda","o":"(switch_ptr),y","oa":40},{"a":16180,"t":"code","b":[72],"m":"pha"},{"a":16181,"t":"code","b":[136],"m":"dey"},{"a":16182,"t":"code","b":[177,40],"m":"lda","o":"(switch_ptr),y","oa":40},{"a":16184,"t":"code","b":[72],"m":"pha"},{"a":16185,"t":"code","b":[96],"m":"rts"},{"a":16186,"l":"switch_index","c":"n, kept here while switch_a works.","t":"byte","b":[3],"x":[16147,16156,16167]},{"a":16187,"l":"music_timer_a","c":"Timer A interrupt (from timer_irq): the note clock, one tick per timer period (the tempo x 256 cycles). Stops both timers (timers_stop), then for each voice (rec_cur_voice $7FE7 = 0-2, SID offset from music_sid_offset in rec_cur_sid_ofs, record offset from music_voice_offset in $7FE9) whose flags (byte 12 of its record, $7F52) have bit 7 set: counts its length counter (byte 9, $7F4F) down; at 0 copies the 13-byte state from rec_voice1 + offset into $53-$5F (stack pointer $60/$61 = record + 13), runs music_run_voice ($4022) and copies the state back; otherwise, with flag bit 6 set and the counter at the release point (byte 10, $7F50), clears the gate bit of the voice (sid_shadow_ctrl and $D404 + offset). Restarts the timers at the end ($400F).","t":"code","b":[32,252,63],"m":"jsr","o":"timers_stop","oa":16380,"x":[14695]},{"a":16190,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":16192,"l":"b_3F40","t":"code","b":[142,231,127],"m":"stx","o":"music_cur_voice","oa":32743,"x":[16307]},{"a":16195,"t":"code","b":[188,188,63],"m":"ldy","o":"music_voice_offset,x","oa":16316},{"a":16198,"t":"code","b":[140,233,127],"m":"sty","o":"music_cur_block_ofs","oa":32745},{"a":16201,"t":"code","b":[185,82,127],"m":"lda","o":"music_v_status,y","oa":32594},{"a":16204,"t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95},{"a":16206,"t":"code","b":[16,93],"m":"bpl","o":"b_3FAD","oa":16301},{"a":16208,"t":"code","b":[189,185,63],"m":"lda","o":"music_sid_offset,x","oa":16313},{"a":16211,"t":"code","b":[141,232,127],"m":"sta","o":"music_cur_sid_ofs","oa":32744},{"a":16214,"t":"code","b":[174,233,127],"m":"ldx","o":"music_cur_block_ofs","oa":32745},{"a":16217,"t":"code","b":[222,79,127],"m":"dec","o":"music_v_countdown,x","oa":32591},{"a":16220,"t":"code","b":[240,29],"m":"beq","o":"b_3F7B","oa":16251},{"a":16222,"t":"code","b":[36,95],"m":"bit","o":"tune_flags","oa":95},{"a":16224,"t":"code","b":[80,75],"m":"bvc","o":"b_3FAD","oa":16301},{"a":16226,"t":"code","b":[189,79,127],"m":"lda","o":"music_v_countdown,x","oa":32591},{"a":16229,"t":"code","b":[221,80,127],"m":"cmp","o":"music_v_release,x","oa":32592},{"a":16232,"t":"code","b":[208,67],"m":"bne","o":"b_3FAD","oa":16301},{"a":16234,"t":"code","b":[174,232,127],"m":"ldx","o":"music_cur_sid_ofs","oa":32744},{"a":16237,"t":"code","b":[189,209,127],"m":"lda","o":"sid_shadow_ctrl,x","oa":32721},{"a":16240,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":16242,"t":"code","b":[157,209,127],"m":"sta","o":"sid_shadow_ctrl,x","oa":32721},{"a":16245,"t":"code","b":[157,4,212],"m":"sta","o":"sid_v1_control,x"},{"a":16248,"t":"code","b":[76,173,63],"m":"jmp","o":"b_3FAD","oa":16301},{"a":16251,"l":"b_3F7B","t":"code","b":[169,70],"m":"lda","o":"#$46","x":[16220]},{"a":16253,"t":"code","b":[24],"m":"clc"},{"a":16254,"t":"code","b":[109,233,127],"m":"adc","o":"music_cur_block_ofs","oa":32745},{"a":16257,"t":"code","b":[133,98],"m":"sta","o":"tune_record_ptr","oa":98},{"a":16259,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":16261,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":16263,"t":"code","b":[133,99],"m":"sta","o":"tune_record_ptr_hi","oa":99},{"a":16265,"t":"code","b":[165,98],"m":"lda","o":"tune_record_ptr","oa":98},{"a":16267,"t":"code","b":[24],"m":"clc"},{"a":16268,"t":"code","b":[105,13],"m":"adc","o":"#$0D"},{"a":16270,"t":"code","b":[133,96],"m":"sta","o":"tune_stack_ptr","oa":96},{"a":16272,"t":"code","b":[165,99],"m":"lda","o":"tune_record_ptr_hi","oa":99},{"a":16274,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":16276,"t":"code","b":[133,97],"m":"sta","o":"tune_stack_ptr_hi","oa":97},{"a":16278,"t":"code","b":[160,12],"m":"ldy","o":"#$0C"},{"a":16280,"l":"b_3F98","t":"code","b":[177,98],"m":"lda","o":"(tune_record_ptr),y","oa":98,"x":[16286]},{"a":16282,"t":"code","b":[153,83,0],"m":"sta","o":"tune_voice_rec,y","oa":83},{"a":16285,"t":"code","b":[136],"m":"dey"},{"a":16286,"t":"code","b":[16,248],"m":"bpl","o":"b_3F98","oa":16280},{"a":16288,"t":"code","b":[32,34,64],"m":"jsr","o":"music_run_voice","oa":16418},{"a":16291,"t":"code","b":[160,12],"m":"ldy","o":"#$0C"},{"a":16293,"l":"b_3FA5","t":"code","b":[185,83,0],"m":"lda","o":"tune_voice_rec,y","oa":83,"x":[16299]},{"a":16296,"t":"code","b":[145,98],"m":"sta","o":"(tune_record_ptr),y","oa":98},{"a":16298,"t":"code","b":[136],"m":"dey"},{"a":16299,"t":"code","b":[16,248],"m":"bpl","o":"b_3FA5","oa":16293},{"a":16301,"l":"b_3FAD","t":"code","b":[174,231,127],"m":"ldx","o":"music_cur_voice","oa":32743,"x":[16206,16224,16232,16248]},{"a":16304,"t":"code","b":[232],"m":"inx"},{"a":16305,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":16307,"t":"code","b":[208,139],"m":"bne","o":"b_3F40","oa":16192},{"a":16309,"t":"code","b":[32,15,64],"m":"jsr","o":"timers_start","oa":16399},{"a":16312,"t":"code","b":[96],"m":"rts"},{"a":16313,"l":"music_sid_offset","c":"SID register offset of each voice: 0, 7, 14.","t":"byte","b":[0,7,14],"x":[16208,16353]},{"a":16316,"l":"music_voice_offset","c":"Offset of each voice's 45-byte record from rec_voice1 ($7F46): 0, $2D, $5A (13 bytes of state, 32 of stack); also read by music_voice_init at $44C3.","t":"byte","b":[0,45,90],"x":[16195,16340,17603]},{"a":16319,"l":"music_timer_b","c":"Timer B interrupt (from timer_irq; period $4295 cycles, set by music_start): stops the timers; when any voice's flags have one of bits 0-3 set, calls music_effects ($4303) for each playing voice with A = $0F: bit 0 vibrato, bit 1 glide, bit 3 the voice's effect routine through $7FF4. Restarts the timers.","t":"code","b":[32,252,63],"m":"jsr","o":"timers_stop","oa":16380,"x":[14699]},{"a":16322,"t":"code","b":[173,82,127],"m":"lda","o":"music_v_status","oa":32594},{"a":16325,"t":"code","b":[13,127,127],"m":"ora","o":"music_v2_status","oa":32639},{"a":16328,"t":"code","b":[13,172,127],"m":"ora","o":"music_v3_status","oa":32684},{"a":16331,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":16333,"t":"code","b":[240,41],"m":"beq","o":"b_3FF8","oa":16376},{"a":16335,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":16337,"l":"b_3FD1","t":"code","b":[142,231,127],"m":"stx","o":"music_cur_voice","oa":32743,"x":[16374]},{"a":16340,"t":"code","b":[188,188,63],"m":"ldy","o":"music_voice_offset,x","oa":16316},{"a":16343,"t":"code","b":[140,233,127],"m":"sty","o":"music_cur_block_ofs","oa":32745},{"a":16346,"t":"code","b":[185,82,127],"m":"lda","o":"music_v_status,y","oa":32594},{"a":16349,"t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95},{"a":16351,"t":"code","b":[16,15],"m":"bpl","o":"b_3FF0","oa":16368},{"a":16353,"t":"code","b":[189,185,63],"m":"lda","o":"music_sid_offset,x","oa":16313},{"a":16356,"t":"code","b":[141,232,127],"m":"sta","o":"music_cur_sid_ofs","oa":32744},{"a":16359,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":16361,"t":"code","b":[36,95],"m":"bit","o":"tune_flags","oa":95},{"a":16363,"t":"code","b":[240,3],"m":"beq","o":"b_3FF0","oa":16368},{"a":16365,"t":"code","b":[32,3,67],"m":"jsr","o":"music_effects","oa":17155},{"a":16368,"l":"b_3FF0","t":"code","b":[174,231,127],"m":"ldx","o":"music_cur_voice","oa":32743,"x":[16351,16363]},{"a":16371,"t":"code","b":[232],"m":"inx"},{"a":16372,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":16374,"t":"code","b":[208,217],"m":"bne","o":"b_3FD1","oa":16337},{"a":16376,"l":"b_3FF8","t":"code","b":[32,15,64],"m":"jsr","o":"timers_start","oa":16399,"x":[16333]},{"a":16379,"t":"code","b":[96],"m":"rts"},{"a":16380,"l":"timers_stop","c":"Stops CIA1 timers A and B (clears bit 0 of $DC0E and $DC0F), keeping A. Used by music_timer_a, music_timer_b and music_start ($4424); the matching restart is at $400F.","t":"code","b":[72],"m":"pha","x":[16187,16319,17444]},{"a":16381,"t":"code","b":[173,14,220],"m":"lda","o":"cia1_control_a"},{"a":16384,"l":"timers_stop_tail","c":"Second half of the routine at $3FFC, which starts just below this range (PHA, LDA $DC0E): clears the start bit of CIA1 timer A ($DC0E) and of timer B ($DC0F), pausing both music interrupts, then restores A. The timer A handler ($3F3B) and the timer B handler ($3FBF) call $3FFC on entry and timers_start on the way out, so the timers stand still while either handler works.","t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":16386,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":16389,"t":"code","b":[173,15,220],"m":"lda","o":"cia1_control_b"},{"a":16392,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":16394,"t":"code","b":[141,15,220],"m":"sta","o":"cia1_control_b"},{"a":16397,"t":"code","b":[104],"m":"pla"},{"a":16398,"t":"code","b":[96],"m":"rts"},{"a":16399,"l":"timers_start","c":"Sets the start bit of CIA1 timer A ($DC0E) and timer B ($DC0F) again, resuming both music interrupts after $3FFC paused them; A is preserved. Called at the end of the timer A handler ($3FB5) and the timer B handler ($3FF8).","t":"code","b":[72],"m":"pha","x":[16309,16376]},{"a":16400,"t":"code","b":[173,14,220],"m":"lda","o":"cia1_control_a"},{"a":16403,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":16405,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":16408,"t":"code","b":[173,15,220],"m":"lda","o":"cia1_control_b"},{"a":16411,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":16413,"t":"code","b":[141,15,220],"m":"sta","o":"cia1_control_b"},{"a":16416,"t":"code","b":[104],"m":"pla"},{"a":16417,"t":"code","b":[96],"m":"rts"},{"a":16418,"l":"music_run_voice","c":"The music interpreter: runs one voice's byte code until something makes it wait. Called by the timer A handler ($3FA0) when the voice's tick countdown r7 runs out, with the voice's 13 bytes of state copied from its block ($7F46 + $2D * voice) to $53-$5F: $53/$54 the byte-code pointer; $55-$5C registers r0-r7 (r0 the current note number, r1 the last length, r2 the release fraction, r3 the tempo, r7 the tick countdown; r4-r6 are free for the byte code); $5D the tick at which the gate is released; $5E the stack index and $5F the flags; $60/$61 point at the voice's 32-byte stack. Bytes are read with music_fetch (offset in $7F40). A byte below $80 is a note (music_note); a byte of $80 or more is a command: its low three bits pick a handler in music_ops and its bits 4-6 go to $7F41 as n. Carry set from a handler means carry on; carry clear ends the pass, and music_commit then moves the pointer past the bytes read.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[16288]},{"a":16420,"t":"code","b":[140,64,127],"m":"sty","o":"music_read_ofs","oa":32576},{"a":16423,"l":"b_4027","t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940,"x":[16431,16464]},{"a":16426,"t":"code","b":[48,7],"m":"bmi","o":"b_4033","oa":16435},{"a":16428,"t":"code","b":[32,67,66],"m":"jsr","o":"music_note","oa":16963},{"a":16431,"t":"code","b":[176,246],"m":"bcs","o":"b_4027","oa":16423},{"a":16433,"t":"code","b":[144,31],"m":"bcc","o":"b_4052","oa":16466},{"a":16435,"l":"b_4033","t":"code","b":[72],"m":"pha","x":[16426]},{"a":16436,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":16437,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":16438,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":16439,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":16440,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":16442,"t":"code","b":[141,65,127],"m":"sta","o":"music_op_param","oa":32577},{"a":16445,"t":"code","b":[104],"m":"pla"},{"a":16446,"t":"code","b":[10],"m":"asl","o":"a"},{"a":16447,"t":"code","b":[41,14],"m":"and","o":"#$0E"},{"a":16449,"t":"code","b":[170],"m":"tax"},{"a":16450,"t":"code","b":[189,114,64],"m":"lda","o":"music_ops,x","oa":16498},{"a":16453,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16455,"t":"code","b":[232],"m":"inx"},{"a":16456,"t":"code","b":[189,114,64],"m":"lda","o":"music_ops,x","oa":16498},{"a":16459,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16461,"t":"code","b":[32,89,64],"m":"jsr","o":"jmp_via_4f","oa":16473},{"a":16464,"t":"code","b":[176,213],"m":"bcs","o":"b_4027","oa":16423},{"a":16466,"l":"b_4052","t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476,"x":[16433]},{"a":16469,"t":"code","b":[234],"m":"nop"},{"a":16470,"t":"code","b":[234],"m":"nop"},{"a":16471,"t":"code","b":[234],"m":"nop"},{"a":16472,"t":"code","b":[96],"m":"rts"},{"a":16473,"l":"jmp_via_4f","c":"JMP ($004F): the indirect call of the music code. music_run_voice calls its command handlers through it ($404D), op_flow its native-code calls, and fx_hook the per-voice hook ($434F). Callers JSR here, so the code at ($4F) returns to them.","t":"code","b":[108,79,0],"m":"jmp","o":"(tune_tmp)","oa":79,"x":[16461,16537,16671,17231]},{"a":16476,"l":"music_commit","c":"Adds the bytes fetched so far ($7F40) to the byte-code pointer $53/$54 and clears $7F40, so the pointer then addresses the next unread byte; A is preserved. Called before every command that reads or changes the pointer (jumps, calls, returns, loops, native calls) and at the end of each pass ($4052).","t":"code","b":[72],"m":"pha","x":[16466,16568,16668,16679,16699,16720,16809,16858,16896]},{"a":16477,"t":"code","b":[24],"m":"clc"},{"a":16478,"t":"code","b":[165,83],"m":"lda","o":"tune_voice_rec","oa":83},{"a":16480,"t":"code","b":[109,64,127],"m":"adc","o":"music_read_ofs","oa":32576},{"a":16483,"t":"code","b":[133,83],"m":"sta","o":"tune_voice_rec","oa":83},{"a":16485,"t":"code","b":[165,84],"m":"lda","o":"tune_voice_pos_hi","oa":84},{"a":16487,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":16489,"t":"code","b":[133,84],"m":"sta","o":"tune_voice_pos_hi","oa":84},{"a":16491,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":16493,"t":"code","b":[141,64,127],"m":"sta","o":"music_read_ofs","oa":32576},{"a":16496,"t":"code","b":[104],"m":"pla"},{"a":16497,"t":"code","b":[96],"m":"rts"},{"a":16498,"l":"music_ops","c":"The eight command handlers of the music byte code, as exact addresses for JMP ($004F) (not minus one), picked by the low three bits of a command byte $80-$FF: 0 op_misc, 1 op_flow, 2 op_push_reg, 3 op_pop_reg, 4 op_load_reg, 5 op_nop, 6 op_jump, 7 op_djnz. n, bits 4-6 of the command, is passed in $7F41; bit 3 is ignored.","t":"addr","b":[130,64],"oa":16514,"o":"op_misc","x":[16450,16456]},{"a":16500,"t":"addr","b":[235,64],"oa":16619,"o":"op_flow"},{"a":16502,"t":"addr","b":[95,65],"oa":16735,"o":"op_push_reg"},{"a":16504,"t":"addr","b":[105,65],"oa":16745,"o":"op_pop_reg"},{"a":16506,"t":"addr","b":[118,65],"oa":16758,"o":"op_load_reg"},{"a":16508,"t":"addr","b":[153,65],"oa":16793,"o":"op_nop"},{"a":16510,"t":"addr","b":[155,65],"oa":16795,"o":"op_jump"},{"a":16512,"t":"addr","b":[14,66],"oa":16910,"o":"op_djnz"},{"a":16514,"l":"op_misc","c":"Music command op 0 ($80, $90 ... $F0): a second dispatch on n ($7F41) through op_misc_ops; for n = 0 to 4 it first fetches the operand byte into A. n = 0 push the byte, 1 set the flags $5F, 2 AND the flags, 3 OR the flags, 4 start a loop, 5 end of loop, 6 nothing, 7 drop the top of the stack. Returns carry set.","t":"code","b":[173,65,127],"m":"lda","o":"music_op_param","oa":32577,"x":[16498]},{"a":16517,"t":"code","b":[10],"m":"asl","o":"a"},{"a":16518,"t":"code","b":[170],"m":"tax"},{"a":16519,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":16521,"t":"code","b":[176,3],"m":"bcs","o":"b_408E","oa":16526},{"a":16523,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":16526,"l":"b_408E","t":"code","b":[188,219,64],"m":"ldy","o":"op_misc_ops,x","oa":16603,"x":[16521]},{"a":16529,"t":"code","b":[132,79],"m":"sty","o":"tune_tmp","oa":79},{"a":16531,"t":"code","b":[232],"m":"inx"},{"a":16532,"t":"code","b":[188,219,64],"m":"ldy","o":"op_misc_ops,x","oa":16603},{"a":16535,"t":"code","b":[132,80],"m":"sty","o":"tune_tmp_hi","oa":80},{"a":16537,"t":"code","b":[32,89,64],"m":"jsr","o":"jmp_via_4f","oa":16473},{"a":16540,"t":"code","b":[56],"m":"sec"},{"a":16541,"t":"code","b":[96],"m":"rts"},{"a":16542,"l":"op_push_imm","c":"op_misc n = 0 (command $80): pushes the operand byte onto the voice's stack with music_push.","t":"code","b":[32,53,66],"m":"jsr","o":"music_push","oa":16949,"x":[16603]},{"a":16545,"t":"code","b":[96],"m":"rts"},{"a":16546,"l":"op_flags_set","c":"op_misc n = 1 ($90): sets the voice flags $5F to the operand. Bit 7 voice playing, bit 6 release the gate early (set by every note), bit 5 invert note steps, bit 3 run fx_hook, bit 2 slide up rather than down, bit 1 fx_slide, bit 0 fx_vibrato.","t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95,"x":[16605]},{"a":16548,"t":"code","b":[96],"m":"rts"},{"a":16549,"l":"op_flags_and","c":"op_misc n = 2 ($A0): ANDs the operand into the voice flags $5F. The four tunes use $FE (vibrato off), $DF (inversion off) and $00.","t":"code","b":[37,95],"m":"and","o":"tune_flags","oa":95,"x":[16607]},{"a":16551,"t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95},{"a":16553,"t":"code","b":[96],"m":"rts"},{"a":16554,"l":"op_flags_or","c":"op_misc n = 3 ($B0): ORs the operand into the voice flags $5F. The four tunes use $01 (vibrato), $08 (hook), $09 and $20 (invert the note steps: the phrase is played upside down).","t":"code","b":[5,95],"m":"ora","o":"tune_flags","oa":95,"x":[16609]},{"a":16556,"t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95},{"a":16558,"t":"code","b":[96],"m":"rts"},{"a":16559,"l":"op_loop","c":"op_misc n = 4 ($C0): start of a loop. Pushes the byte-code pointer (music_push_pc, the address after the operand), then the operand, the number of passes; op_next jumps back to that address.","t":"code","b":[72],"m":"pha","x":[16611]},{"a":16560,"t":"code","b":[32,0,66],"m":"jsr","o":"music_push_pc","oa":16896},{"a":16563,"t":"code","b":[104],"m":"pla"},{"a":16564,"t":"code","b":[32,53,66],"m":"jsr","o":"music_push","oa":16949},{"a":16567,"t":"code","b":[96],"m":"rts"},{"a":16568,"l":"op_next","c":"op_misc n = 5 ($D0): end of a loop. Pops the pass count and decrements it; if passes remain it pushes the count back and sets the pointer to the address saved beneath it (the byte after op_loop's operand); when it was 1 it drops the saved address and carries on after this byte.","t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476,"x":[16613]},{"a":16571,"t":"code","b":[32,60,66],"m":"jsr","o":"music_pop","oa":16956},{"a":16574,"t":"code","b":[56],"m":"sec"},{"a":16575,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":16577,"t":"code","b":[240,14],"m":"beq","o":"b_40D1","oa":16593},{"a":16579,"t":"code","b":[32,53,66],"m":"jsr","o":"music_push","oa":16949},{"a":16582,"t":"code","b":[136],"m":"dey"},{"a":16583,"t":"code","b":[177,96],"m":"lda","o":"(tune_stack_ptr),y","oa":96},{"a":16585,"t":"code","b":[133,84],"m":"sta","o":"tune_voice_pos_hi","oa":84},{"a":16587,"t":"code","b":[136],"m":"dey"},{"a":16588,"t":"code","b":[177,96],"m":"lda","o":"(tune_stack_ptr),y","oa":96},{"a":16590,"t":"code","b":[133,83],"m":"sta","o":"tune_voice_rec","oa":83},{"a":16592,"t":"code","b":[96],"m":"rts"},{"a":16593,"l":"b_40D1","t":"code","b":[198,94],"m":"dec","o":"tune_sp","oa":94,"x":[16577]},{"a":16595,"t":"code","b":[198,94],"m":"dec","o":"tune_sp","oa":94},{"a":16597,"t":"code","b":[96],"m":"rts"},{"a":16598,"l":"op_misc_nop","c":"op_misc n = 6 ($E0): does nothing (an RTS; the caller returns carry set).","t":"code","b":[96],"m":"rts","x":[16615]},{"a":16599,"l":"op_drop","c":"op_misc n = 7 ($F0): pops the top byte of the voice's stack and discards it.","t":"code","b":[32,60,66],"m":"jsr","o":"music_pop","oa":16956,"x":[16617]},{"a":16602,"t":"code","b":[96],"m":"rts"},{"a":16603,"l":"op_misc_ops","c":"op_misc's eight handler addresses, exact, indexed by n: op_push_imm $409E, op_flags_set $40A2, op_flags_and $40A5, op_flags_or $40AA, op_loop $40AF, op_next $40B8, op_misc_nop $40D6, op_drop $40D7.","t":"addr","b":[158,64],"oa":16542,"o":"op_push_imm","x":[16526,16532]},{"a":16605,"t":"addr","b":[162,64],"oa":16546,"o":"op_flags_set"},{"a":16607,"t":"addr","b":[165,64],"oa":16549,"o":"op_flags_and"},{"a":16609,"t":"addr","b":[170,64],"oa":16554,"o":"op_flags_or"},{"a":16611,"t":"addr","b":[175,64],"oa":16559,"o":"op_loop"},{"a":16613,"t":"addr","b":[184,64],"oa":16568,"o":"op_next"},{"a":16615,"t":"addr","b":[214,64],"oa":16598,"o":"op_misc_nop"},{"a":16617,"t":"addr","b":[215,64],"oa":16599,"o":"op_drop"},{"a":16619,"l":"op_flow","c":"Music command op 1 ($81 ... $F1), by n: 0, 1 and 3 end the voice: clear flag bit 7 and the gate bit of its control register (shadow $7FD1+voice and SID $D404+voice) and return carry clear. 2 returns from a byte-code call (pops the pointer, high byte first). 4 and 5 call machine code at the address in the next two bytes; 6 and 7 call machine code at the pointer (after the operand) plus or minus the next byte. The pointer is committed first, so the machine code can take further inline bytes with music_fetch (sid_list_voice does). The four tunes use n = 4 to call sid_list_voice ($43FE) and, at their end, $39AD (sets record_stop_req, turns the CIA1 interrupts off and stops both timers).","t":"code","b":[173,65,127],"m":"lda","o":"music_op_param","oa":32577,"x":[16500]},{"a":16622,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":16624,"t":"code","b":[176,26],"m":"bcs","o":"b_410C","oa":16652},{"a":16626,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":16628,"t":"code","b":[240,90],"m":"beq","o":"b_4150","oa":16720},{"a":16630,"t":"code","b":[165,95],"m":"lda","o":"tune_flags","oa":95},{"a":16632,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":16634,"t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95},{"a":16636,"t":"code","b":[172,232,127],"m":"ldy","o":"music_cur_sid_ofs","oa":32744},{"a":16639,"t":"code","b":[185,209,127],"m":"lda","o":"sid_shadow_ctrl,y","oa":32721},{"a":16642,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":16644,"t":"code","b":[153,209,127],"m":"sta","o":"sid_shadow_ctrl,y","oa":32721},{"a":16647,"t":"code","b":[153,4,212],"m":"sta","o":"sid_v1_control,y"},{"a":16650,"t":"code","b":[24],"m":"clc"},{"a":16651,"t":"code","b":[96],"m":"rts"},{"a":16652,"l":"b_410C","t":"code","b":[201,6],"m":"cmp","o":"#$06","x":[16624]},{"a":16654,"t":"code","b":[240,20],"m":"beq","o":"b_4124","oa":16676},{"a":16656,"t":"code","b":[176,38],"m":"bcs","o":"b_4138","oa":16696},{"a":16658,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":16661,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16663,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":16666,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16668,"t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476},{"a":16671,"l":"j_411F","t":"code","b":[32,89,64],"m":"jsr","o":"jmp_via_4f","oa":16473,"x":[16693,16717]},{"a":16674,"t":"code","b":[56],"m":"sec"},{"a":16675,"t":"code","b":[96],"m":"rts"},{"a":16676,"l":"b_4124","t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940,"x":[16654]},{"a":16679,"t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476},{"a":16682,"t":"code","b":[24],"m":"clc"},{"a":16683,"t":"code","b":[101,83],"m":"adc","o":"tune_voice_rec","oa":83},{"a":16685,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16687,"t":"code","b":[165,84],"m":"lda","o":"tune_voice_pos_hi","oa":84},{"a":16689,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":16691,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16693,"t":"code","b":[76,31,65],"m":"jmp","o":"j_411F","oa":16671},{"a":16696,"l":"b_4138","t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940,"x":[16656]},{"a":16699,"t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476},{"a":16702,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16704,"t":"code","b":[56],"m":"sec"},{"a":16705,"t":"code","b":[165,83],"m":"lda","o":"tune_voice_rec","oa":83},{"a":16707,"t":"code","b":[229,79],"m":"sbc","o":"tune_tmp","oa":79},{"a":16709,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16711,"t":"code","b":[165,84],"m":"lda","o":"tune_voice_pos_hi","oa":84},{"a":16713,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":16715,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16717,"t":"code","b":[76,31,65],"m":"jmp","o":"j_411F","oa":16671},{"a":16720,"l":"b_4150","t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476,"x":[16628]},{"a":16723,"t":"code","b":[32,60,66],"m":"jsr","o":"music_pop","oa":16956},{"a":16726,"t":"code","b":[133,84],"m":"sta","o":"tune_voice_pos_hi","oa":84},{"a":16728,"t":"code","b":[32,60,66],"m":"jsr","o":"music_pop","oa":16956},{"a":16731,"t":"code","b":[133,83],"m":"sta","o":"tune_voice_rec","oa":83},{"a":16733,"t":"code","b":[56],"m":"sec"},{"a":16734,"t":"code","b":[96],"m":"rts"},{"a":16735,"l":"op_push_reg","c":"Music command op 2 ($82 ... $F2): pushes register n ($55+n) onto the voice's stack. The tunes use it to save r0, the current note, around a phrase.","t":"code","b":[174,65,127],"m":"ldx","o":"music_op_param","oa":32577,"x":[16502]},{"a":16738,"t":"code","b":[181,85],"m":"lda","o":"tune_note,x","oa":85},{"a":16740,"t":"code","b":[32,53,66],"m":"jsr","o":"music_push","oa":16949},{"a":16743,"t":"code","b":[56],"m":"sec"},{"a":16744,"t":"code","b":[96],"m":"rts"},{"a":16745,"l":"op_pop_reg","c":"Music command op 3 ($83 ... $F3): pops the top of the voice's stack into register n ($55+n); for n = 3 it also sets the tempo (music_set_tempo).","t":"code","b":[32,60,66],"m":"jsr","o":"music_pop","oa":16956,"x":[16504]},{"a":16748,"t":"code","b":[174,65,127],"m":"ldx","o":"music_op_param","oa":32577},{"a":16751,"t":"code","b":[149,85],"m":"sta","o":"tune_note,x","oa":85},{"a":16753,"t":"code","b":[32,131,65],"m":"jsr","o":"music_set_tempo","oa":16771},{"a":16756,"t":"code","b":[56],"m":"sec"},{"a":16757,"t":"code","b":[96],"m":"rts"},{"a":16758,"l":"op_load_reg","c":"Music command op 4 ($84 ... $F4): loads register n ($55+n) with the next byte; for n = 3 it also sets the tempo (music_set_tempo). The tunes load r0 (the starting note), r2 (the release fraction) and r3 (the tempo).","t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940,"x":[16506]},{"a":16761,"t":"code","b":[174,65,127],"m":"ldx","o":"music_op_param","oa":32577},{"a":16764,"t":"code","b":[149,85],"m":"sta","o":"tune_note,x","oa":85},{"a":16766,"t":"code","b":[32,131,65],"m":"jsr","o":"music_set_tempo","oa":16771},{"a":16769,"t":"code","b":[56],"m":"sec"},{"a":16770,"t":"code","b":[96],"m":"rts"},{"a":16771,"l":"music_set_tempo","c":"When X = 3 (register r3), copies A to r3 of all three voices ($7F4B, $7F78, $7FA5) and into CIA1 timer A as its high byte ($DC05; low byte $DC04 = 0): the tick rate, which all three voices share. For any other X it does nothing.","t":"code","b":[224,3],"m":"cpx","o":"#$03","x":[16753,16766]},{"a":16773,"t":"code","b":[208,17],"m":"bne","o":"r_4198","oa":16792},{"a":16775,"t":"code","b":[141,75,127],"m":"sta","o":"music_v1_tempo","oa":32587},{"a":16778,"t":"code","b":[141,120,127],"m":"sta","o":"music_v2_tempo","oa":32632},{"a":16781,"t":"code","b":[141,165,127],"m":"sta","o":"music_v3_tempo","oa":32677},{"a":16784,"t":"code","b":[141,5,220],"m":"sta","o":"cia1_timer_a_hi"},{"a":16787,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":16789,"t":"code","b":[141,4,220],"m":"sta","o":"cia1_timer_a_lo"},{"a":16792,"l":"r_4198","t":"code","b":[96],"m":"rts","x":[16773]},{"a":16793,"l":"op_nop","c":"Music command op 5 ($85 ... $F5): does nothing and carries on (carry set).","t":"code","b":[56],"m":"sec","x":[16508]},{"a":16794,"t":"code","b":[96],"m":"rts"},{"a":16795,"l":"op_jump","c":"Music command op 6 ($86 ... $F6), also op_djnz's taken branch: sets the byte-code pointer by n AND 3: 0 forward by the next byte, 1 back by the next byte (both counted from the byte after the operand), 2 forward by the next two bytes, 3 to the absolute address in the next two bytes. With n bit 2 set it is a call: the address after the operand is pushed first (music_push_pc) for op_flow's return. The tunes use $C6 (call forward), $F6 (call absolute) and $96 (jump back).","t":"code","b":[173,65,127],"m":"lda","o":"music_op_param","oa":32577,"x":[16510,16922]},{"a":16798,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":16800,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":16802,"t":"code","b":[176,42],"m":"bcs","o":"b_41CE","oa":16846},{"a":16804,"t":"code","b":[106],"m":"ror","o":"a"},{"a":16805,"t":"code","b":[8],"m":"php"},{"a":16806,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":16809,"t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476},{"a":16812,"t":"code","b":[40],"m":"plp"},{"a":16813,"t":"code","b":[176,14],"m":"bcs","o":"b_41BD","oa":16829},{"a":16815,"t":"code","b":[24],"m":"clc"},{"a":16816,"t":"code","b":[101,83],"m":"adc","o":"tune_voice_rec","oa":83},{"a":16818,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16820,"t":"code","b":[165,84],"m":"lda","o":"tune_voice_pos_hi","oa":84},{"a":16822,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":16824,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16826,"t":"code","b":[76,236,65],"m":"jmp","o":"j_41EC","oa":16876},{"a":16829,"l":"b_41BD","t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79,"x":[16813]},{"a":16831,"t":"code","b":[165,83],"m":"lda","o":"tune_voice_rec","oa":83},{"a":16833,"t":"code","b":[229,79],"m":"sbc","o":"tune_tmp","oa":79},{"a":16835,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16837,"t":"code","b":[165,84],"m":"lda","o":"tune_voice_pos_hi","oa":84},{"a":16839,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":16841,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16843,"t":"code","b":[76,236,65],"m":"jmp","o":"j_41EC","oa":16876},{"a":16846,"l":"b_41CE","t":"code","b":[106],"m":"ror","o":"a","x":[16802]},{"a":16847,"t":"code","b":[8],"m":"php"},{"a":16848,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":16851,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16853,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":16856,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16858,"t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476},{"a":16861,"t":"code","b":[40],"m":"plp"},{"a":16862,"t":"code","b":[176,12],"m":"bcs","o":"j_41EC","oa":16876},{"a":16864,"t":"code","b":[165,83],"m":"lda","o":"tune_voice_rec","oa":83},{"a":16866,"t":"code","b":[101,79],"m":"adc","o":"tune_tmp","oa":79},{"a":16868,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":16870,"t":"code","b":[165,84],"m":"lda","o":"tune_voice_pos_hi","oa":84},{"a":16872,"t":"code","b":[101,80],"m":"adc","o":"tune_tmp_hi","oa":80},{"a":16874,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16876,"l":"j_41EC","t":"code","b":[173,65,127],"m":"lda","o":"music_op_param","oa":32577,"x":[16826,16843,16862]},{"a":16879,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":16881,"t":"code","b":[240,3],"m":"beq","o":"b_41F6","oa":16886},{"a":16883,"t":"code","b":[32,0,66],"m":"jsr","o":"music_push_pc","oa":16896},{"a":16886,"l":"b_41F6","t":"code","b":[165,79],"m":"lda","o":"tune_tmp","oa":79,"x":[16881]},{"a":16888,"t":"code","b":[133,83],"m":"sta","o":"tune_voice_rec","oa":83},{"a":16890,"t":"code","b":[165,80],"m":"lda","o":"tune_tmp_hi","oa":80},{"a":16892,"t":"code","b":[133,84],"m":"sta","o":"tune_voice_pos_hi","oa":84},{"a":16894,"t":"code","b":[56],"m":"sec"},{"a":16895,"t":"code","b":[96],"m":"rts"},{"a":16896,"l":"music_push_pc","c":"Commits the pointer (music_commit) and pushes it onto the voice's stack, low byte then high byte: the return address for op_jump's calls and the loop start for op_loop.","t":"code","b":[32,92,64],"m":"jsr","o":"music_commit","oa":16476,"x":[16560,16883]},{"a":16899,"t":"code","b":[165,83],"m":"lda","o":"tune_voice_rec","oa":83},{"a":16901,"t":"code","b":[32,53,66],"m":"jsr","o":"music_push","oa":16949},{"a":16904,"t":"code","b":[165,84],"m":"lda","o":"tune_voice_pos_hi","oa":84},{"a":16906,"t":"code","b":[32,53,66],"m":"jsr","o":"music_push","oa":16949},{"a":16909,"t":"code","b":[96],"m":"rts"},{"a":16910,"l":"op_djnz","c":"Music command op 7 ($87 ... $F7): decrements the byte on top of the voice's stack in place (it is not popped); if the result is not zero it jumps as op_jump does, and if it is zero it skips the jump's operand (one byte, two when n bit 1 is set) and carries on.","t":"code","b":[164,94],"m":"ldy","o":"tune_sp","oa":94,"x":[16512]},{"a":16912,"t":"code","b":[136],"m":"dey"},{"a":16913,"t":"code","b":[177,96],"m":"lda","o":"(tune_stack_ptr),y","oa":96},{"a":16915,"t":"code","b":[56],"m":"sec"},{"a":16916,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":16918,"t":"code","b":[145,96],"m":"sta","o":"(tune_stack_ptr),y","oa":96},{"a":16920,"t":"code","b":[240,3],"m":"beq","o":"b_421D","oa":16925},{"a":16922,"t":"code","b":[76,155,65],"m":"jmp","o":"op_jump","oa":16795},{"a":16925,"l":"b_421D","t":"code","b":[173,65,127],"m":"lda","o":"music_op_param","oa":32577,"x":[16920]},{"a":16928,"t":"code","b":[41,2],"m":"and","o":"#$02"},{"a":16930,"t":"code","b":[240,3],"m":"beq","o":"b_4227","oa":16935},{"a":16932,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":16935,"l":"b_4227","t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940,"x":[16930]},{"a":16938,"t":"code","b":[56],"m":"sec"},{"a":16939,"t":"code","b":[96],"m":"rts"},{"a":16940,"l":"music_fetch","c":"Returns in A the next byte-code byte, ($53) indexed by $7F40, and advances $7F40.","t":"code","b":[172,64,127],"m":"ldy","o":"music_read_ofs","oa":32576,"x":[16423,16523,16658,16663,16676,16696,16758,16806,16848,16853,16932,16935,16996,17061,17411,17416]},{"a":16943,"t":"code","b":[238,64,127],"m":"inc","o":"music_read_ofs","oa":32576},{"a":16946,"t":"code","b":[177,83],"m":"lda","o":"(tune_voice_rec),y","oa":83},{"a":16948,"t":"code","b":[96],"m":"rts"},{"a":16949,"l":"music_push","c":"Pushes A onto the voice's stack: stores it at ($60) indexed by $5E and increments $5E; Y is left at the slot written. Nothing checks the 32-byte size of the stack.","t":"code","b":[164,94],"m":"ldy","o":"tune_sp","oa":94,"x":[16542,16564,16579,16740,16901,16906]},{"a":16951,"t":"code","b":[145,96],"m":"sta","o":"(tune_stack_ptr),y","oa":96},{"a":16953,"t":"code","b":[230,94],"m":"inc","o":"tune_sp","oa":94},{"a":16955,"t":"code","b":[96],"m":"rts"},{"a":16956,"l":"music_pop","c":"Pops the top byte of the voice's stack into A: decrements $5E and reads ($60) indexed by it.","t":"code","b":[198,94],"m":"dec","o":"tune_sp","oa":94,"x":[16571,16599,16723,16728,16745]},{"a":16958,"t":"code","b":[164,94],"m":"ldy","o":"tune_sp","oa":94},{"a":16960,"t":"code","b":[177,96],"m":"lda","o":"(tune_stack_ptr),y","oa":96},{"a":16962,"t":"code","b":[96],"m":"rts"},{"a":16963,"l":"music_note","c":"A byte-code byte below $80: a note. Bits 4-6 give the length: 0 no wait (only the pitch changes), 1-5 that many units, 6 the previous length (r1), 7 the next byte; r1 keeps it and the countdown r7 gets 8 ticks a unit (more than 31 units wraps). Bits 0-3 give the pitch: 0-12 step the note number r0 by -6 to +6 semitones; 13 hold (no new pitch, no new attack); 14 rest (gate off); 15 take the step from the next byte (-32 to +31 in its low six bits; its bit 6 cancels the early release for this note). Flag bit 5 inverts the step. The pitch comes from freq_table at r0 * 2 into the SID ($D400/$D401 + voice) and the shadow ($7FCD/$7FCE + voice), and the gate bit is set. When r2 is not 0 the gate is released at countdown r1 * r2 (mul8), r2 eighths of the note before its end; $5D keeps that tick. Also sets flag bit 6 and counts the note in $7FEA+voice and note_count. Returns carry clear to wait, carry set when the length is 0.","t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79,"x":[16428]},{"a":16965,"t":"code","b":[174,231,127],"m":"ldx","o":"music_cur_voice","oa":32743},{"a":16968,"t":"code","b":[254,234,127],"m":"inc","o":"music_voice_notes,x","oa":32746},{"a":16971,"t":"code","b":[254,137,71],"m":"inc","o":"note_count,x","oa":18313},{"a":16974,"t":"code","b":[165,95],"m":"lda","o":"tune_flags","oa":95},{"a":16976,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":16978,"t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95},{"a":16980,"t":"code","b":[165,79],"m":"lda","o":"tune_tmp","oa":79},{"a":16982,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":16983,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":16984,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":16985,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":16986,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":16988,"t":"code","b":[240,16],"m":"beq","o":"b_426E","oa":17006},{"a":16990,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":16992,"t":"code","b":[144,8],"m":"bcc","o":"b_426A","oa":17002},{"a":16994,"t":"code","b":[240,8],"m":"beq","o":"b_426C","oa":17004},{"a":16996,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":16999,"t":"code","b":[76,106,66],"m":"jmp","o":"b_426A","oa":17002},{"a":17002,"l":"b_426A","t":"code","b":[133,86],"m":"sta","o":"tune_length","oa":86,"x":[16992,16999]},{"a":17004,"l":"b_426C","t":"code","b":[165,86],"m":"lda","o":"tune_length","oa":86,"x":[16994]},{"a":17006,"l":"b_426E","t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80,"x":[16988]},{"a":17008,"t":"code","b":[10],"m":"asl","o":"a"},{"a":17009,"t":"code","b":[10],"m":"asl","o":"a"},{"a":17010,"t":"code","b":[10],"m":"asl","o":"a"},{"a":17011,"t":"code","b":[133,92],"m":"sta","o":"tune_countdown","oa":92},{"a":17013,"t":"code","b":[165,87],"m":"lda","o":"tune_release_mult","oa":87},{"a":17015,"t":"code","b":[240,11],"m":"beq","o":"b_4284","oa":17028},{"a":17017,"t":"code","b":[141,161,71],"m":"sta","o":"mul_b","oa":18337},{"a":17020,"t":"code","b":[165,86],"m":"lda","o":"tune_length","oa":86},{"a":17022,"t":"code","b":[141,160,71],"m":"sta","o":"mul_a","oa":18336},{"a":17025,"t":"code","b":[32,169,70],"m":"jsr","o":"mul8","oa":18089},{"a":17028,"l":"b_4284","t":"code","b":[133,93],"m":"sta","o":"tune_release_at","oa":93,"x":[17015]},{"a":17030,"t":"code","b":[165,79],"m":"lda","o":"tune_tmp","oa":79},{"a":17032,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":17034,"t":"code","b":[201,13],"m":"cmp","o":"#$0D"},{"a":17036,"t":"code","b":[144,47],"m":"bcc","o":"b_42BD","oa":17085},{"a":17038,"t":"code","b":[240,108],"m":"beq","o":"b_42FC","oa":17148},{"a":17040,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":17042,"t":"code","b":[240,17],"m":"beq","o":"b_42A5","oa":17061},{"a":17044,"t":"code","b":[172,232,127],"m":"ldy","o":"music_cur_sid_ofs","oa":32744},{"a":17047,"t":"code","b":[185,209,127],"m":"lda","o":"sid_shadow_ctrl,y","oa":32721},{"a":17050,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":17052,"t":"code","b":[153,209,127],"m":"sta","o":"sid_shadow_ctrl,y","oa":32721},{"a":17055,"t":"code","b":[153,4,212],"m":"sta","o":"sid_v1_control,y"},{"a":17058,"t":"code","b":[76,252,66],"m":"jmp","o":"b_42FC","oa":17148},{"a":17061,"l":"b_42A5","t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940,"x":[17042]},{"a":17064,"t":"code","b":[72],"m":"pha"},{"a":17065,"t":"code","b":[41,64],"m":"and","o":"#$40"},{"a":17067,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":17069,"t":"code","b":[37,95],"m":"and","o":"tune_flags","oa":95},{"a":17071,"t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95},{"a":17073,"t":"code","b":[104],"m":"pla"},{"a":17074,"t":"code","b":[41,63],"m":"and","o":"#$3F"},{"a":17076,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":17078,"t":"code","b":[144,2],"m":"bcc","o":"b_42BA","oa":17082},{"a":17080,"t":"code","b":[9,192],"m":"ora","o":"#$C0"},{"a":17082,"l":"b_42BA","t":"code","b":[76,192,66],"m":"jmp","o":"j_42C0","oa":17088,"x":[17078]},{"a":17085,"l":"b_42BD","t":"code","b":[56],"m":"sec","x":[17036]},{"a":17086,"t":"code","b":[233,6],"m":"sbc","o":"#$06"},{"a":17088,"l":"j_42C0","t":"code","b":[164,95],"m":"ldy","o":"tune_flags","oa":95,"x":[17082]},{"a":17090,"t":"code","b":[132,79],"m":"sty","o":"tune_tmp","oa":79},{"a":17092,"t":"code","b":[6,79],"m":"asl","o":"tune_tmp","oa":79},{"a":17094,"t":"code","b":[6,79],"m":"asl","o":"tune_tmp","oa":79},{"a":17096,"t":"code","b":[16,5],"m":"bpl","o":"b_42CF","oa":17103},{"a":17098,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":17100,"t":"code","b":[24],"m":"clc"},{"a":17101,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":17103,"l":"b_42CF","t":"code","b":[24],"m":"clc","x":[17096]},{"a":17104,"t":"code","b":[101,85],"m":"adc","o":"tune_note","oa":85},{"a":17106,"t":"code","b":[133,85],"m":"sta","o":"tune_note","oa":85},{"a":17108,"t":"code","b":[10],"m":"asl","o":"a"},{"a":17109,"t":"code","b":[170],"m":"tax"},{"a":17110,"t":"code","b":[189,201,70],"m":"lda","o":"freq_table,x","oa":18121},{"a":17113,"t":"code","b":[172,232,127],"m":"ldy","o":"music_cur_sid_ofs","oa":32744},{"a":17116,"t":"code","b":[153,205,127],"m":"sta","o":"sid_shadow,y","oa":32717},{"a":17119,"t":"code","b":[153,0,212],"m":"sta","o":"sid_v1_freq_lo,y"},{"a":17122,"t":"code","b":[232],"m":"inx"},{"a":17123,"t":"code","b":[189,201,70],"m":"lda","o":"freq_table,x","oa":18121},{"a":17126,"t":"code","b":[153,206,127],"m":"sta","o":"sid_shadow_freq_hi,y","oa":32718},{"a":17129,"t":"code","b":[153,1,212],"m":"sta","o":"sid_v1_freq_hi,y"},{"a":17132,"t":"code","b":[56],"m":"sec"},{"a":17133,"t":"code","b":[165,80],"m":"lda","o":"tune_tmp_hi","oa":80},{"a":17135,"t":"code","b":[240,17],"m":"beq","o":"r_4302","oa":17154},{"a":17137,"t":"code","b":[185,209,127],"m":"lda","o":"sid_shadow_ctrl,y","oa":32721},{"a":17140,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":17142,"t":"code","b":[153,209,127],"m":"sta","o":"sid_shadow_ctrl,y","oa":32721},{"a":17145,"t":"code","b":[153,4,212],"m":"sta","o":"sid_v1_control,y"},{"a":17148,"l":"b_42FC","t":"code","b":[24],"m":"clc","x":[17038,17058]},{"a":17149,"t":"code","b":[165,80],"m":"lda","o":"tune_tmp_hi","oa":80},{"a":17151,"t":"code","b":[208,1],"m":"bne","o":"r_4302","oa":17154},{"a":17153,"t":"code","b":[56],"m":"sec"},{"a":17154,"l":"r_4302","t":"code","b":[96],"m":"rts","x":[17135,17151]},{"a":17155,"l":"music_effects","c":"The per-voice effects, called by the timer B handler ($3FED) with A = $0F for each playing voice whose flags have any of bits 0-3 set: ANDs A with the flags $5F, then bit 0 runs fx_vibrato, bit 1 fx_slide (bit 2 giving its direction) and bit 3 fx_hook.","t":"code","b":[37,95],"m":"and","o":"tune_flags","oa":95,"x":[16365]},{"a":17157,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":17158,"t":"code","b":[144,5],"m":"bcc","o":"b_430D","oa":17165},{"a":17160,"t":"code","b":[72],"m":"pha"},{"a":17161,"t":"code","b":[32,87,67],"m":"jsr","o":"fx_vibrato","oa":17239},{"a":17164,"t":"code","b":[104],"m":"pla"},{"a":17165,"l":"b_430D","t":"code","b":[74],"m":"lsr","o":"a","x":[17158]},{"a":17166,"t":"code","b":[144,5],"m":"bcc","o":"b_4315","oa":17173},{"a":17168,"t":"code","b":[72],"m":"pha"},{"a":17169,"t":"code","b":[32,29,67],"m":"jsr","o":"fx_slide","oa":17181},{"a":17172,"t":"code","b":[104],"m":"pla"},{"a":17173,"l":"b_4315","t":"code","b":[74],"m":"lsr","o":"a","x":[17166]},{"a":17174,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":17175,"t":"code","b":[144,3],"m":"bcc","o":"r_431C","oa":17180},{"a":17177,"t":"code","b":[32,63,67],"m":"jsr","o":"fx_hook","oa":17215},{"a":17180,"l":"r_431C","t":"code","b":[96],"m":"rts","x":[17175]},{"a":17181,"l":"fx_slide","c":"Flag bit 1: a pitch slide. Adds (flag bit 2 set) or subtracts (clear) frequency * rate / 2048 to or from the shadow frequency, the rate being $7FF1+voice (7 after music_start), writes the result to the SID and keeps it in the shadow, so each call moves the pitch by the same musical interval. None of the four tunes sets bit 1.","t":"code","b":[41,1],"m":"and","o":"#$01","x":[17169]},{"a":17183,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":17185,"t":"code","b":[8],"m":"php"},{"a":17186,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":17188,"t":"code","b":[32,129,67],"m":"jsr","o":"freq_shift","oa":17281},{"a":17191,"t":"code","b":[172,231,127],"m":"ldy","o":"music_cur_voice","oa":32743},{"a":17194,"t":"code","b":[185,241,127],"m":"lda","o":"music_slide_mul,y","oa":32753},{"a":17197,"t":"code","b":[32,164,67],"m":"jsr","o":"freq_scale","oa":17316},{"a":17200,"t":"code","b":[40],"m":"plp"},{"a":17201,"t":"code","b":[32,202,67],"m":"jsr","o":"freq_apply","oa":17354},{"a":17204,"t":"code","b":[165,79],"m":"lda","o":"tune_tmp","oa":79},{"a":17206,"t":"code","b":[157,205,127],"m":"sta","o":"sid_shadow,x","oa":32717,"x":[13711]},{"a":17209,"t":"code","b":[165,80],"m":"lda","o":"tune_tmp_hi","oa":80},{"a":17211,"t":"code","b":[157,206,127],"m":"sta","o":"sid_shadow_freq_hi,x","oa":32718},{"a":17214,"t":"code","b":[96],"m":"rts"},{"a":17215,"l":"fx_hook","c":"Flag bit 3: calls the machine code whose address is in $7FF4/$7FF5 + 2 * voice. music_start points all three at $44A8, the RTS that ends music_start, so it does nothing in this build, although tunes 0, 1 and 2 set bit 3.","t":"code","b":[173,231,127],"m":"lda","o":"music_cur_voice","oa":32743,"x":[17177]},{"a":17218,"t":"code","b":[10],"m":"asl","o":"a"},{"a":17219,"t":"code","b":[170],"m":"tax"},{"a":17220,"t":"code","b":[189,244,127],"m":"lda","o":"music_hook,x","oa":32756},{"a":17223,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":17225,"t":"code","b":[232],"m":"inx"},{"a":17226,"t":"code","b":[189,244,127],"m":"lda","o":"music_hook,x","oa":32756},{"a":17229,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":17231,"t":"code","b":[32,89,64],"m":"jsr","o":"jmp_via_4f","oa":16473},{"a":17234,"t":"code","b":[96],"m":"rts"},{"a":17235,"l":"vibrato_shape","c":"Four vibrato depths, 0, 1, 3, 1, reached through $64/$65, which music_start sets to $4353 ($443D-$4443, immediate operands, so nothing names this address). fx_vibrato takes one per tick, times the frequency / 256, added for four ticks and subtracted for the next four.","t":"byte","b":[0,1,3,1]},{"a":17239,"l":"fx_vibrato","c":"Flag bit 0: vibrato. Counts ticks in $7FED+voice; the count AND ($7FF0 - 1) (0-3, $7FF0 being 4) picks a depth from the table at ($64), vibrato_shape. Depth * frequency / 256 is added to the shadow frequency when the count AND $7FF0 is 0 and subtracted otherwise, and written to the SID only: the shadow keeps the true pitch. A depth of 0 writes the plain frequency.","t":"code","b":[174,231,127],"m":"ldx","o":"music_cur_voice","oa":32743,"x":[17161]},{"a":17242,"t":"code","b":[254,237,127],"m":"inc","o":"music_vib_step,x","oa":32749},{"a":17245,"t":"code","b":[172,240,127],"m":"ldy","o":"music_vib_len","oa":32752},{"a":17248,"t":"code","b":[136],"m":"dey"},{"a":17249,"t":"code","b":[152],"m":"tya"},{"a":17250,"t":"code","b":[61,237,127],"m":"and","o":"music_vib_step,x","oa":32749},{"a":17253,"t":"code","b":[72],"m":"pha"},{"a":17254,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17256,"t":"code","b":[32,129,67],"m":"jsr","o":"freq_shift","oa":17281},{"a":17259,"t":"code","b":[104],"m":"pla"},{"a":17260,"t":"code","b":[168],"m":"tay"},{"a":17261,"t":"code","b":[177,100],"m":"lda","o":"(tune_vibrato_ptr),y","oa":100},{"a":17263,"t":"code","b":[240,113],"m":"beq","o":"b_43E2","oa":17378},{"a":17265,"t":"code","b":[32,164,67],"m":"jsr","o":"freq_scale","oa":17316},{"a":17268,"t":"code","b":[173,240,127],"m":"lda","o":"music_vib_len","oa":32752},{"a":17271,"t":"code","b":[172,231,127],"m":"ldy","o":"music_cur_voice","oa":32743},{"a":17274,"t":"code","b":[57,237,127],"m":"and","o":"music_vib_step,y","oa":32749},{"a":17277,"t":"code","b":[32,202,67],"m":"jsr","o":"freq_apply","oa":17354},{"a":17280,"t":"code","b":[96],"m":"rts"},{"a":17281,"l":"freq_shift","c":"Loads the voice's shadow frequency ($7FCD/$7FCE + $7FE8) shifted right Y times into $7F43 (high) and $7F44 (low), and clears $7F42 and the product $4F/$50: the set-up for freq_scale. fx_slide uses Y = 3, fx_vibrato Y = 0.","t":"code","b":[174,232,127],"m":"ldx","o":"music_cur_sid_ofs","oa":32744,"x":[17188,17256]},{"a":17284,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17286,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":17288,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":17290,"t":"code","b":[141,66,127],"m":"sta","o":"music_mul_hi","oa":32578},{"a":17293,"t":"code","b":[189,206,127],"m":"lda","o":"sid_shadow_freq_hi,x","oa":32718},{"a":17296,"t":"code","b":[141,67,127],"m":"sta","o":"music_mul_mid","oa":32579},{"a":17299,"t":"code","b":[189,205,127],"m":"lda","o":"sid_shadow,x","oa":32717},{"a":17302,"l":"j_4396","t":"code","b":[136],"m":"dey","x":[17309]},{"a":17303,"t":"code","b":[48,7],"m":"bmi","o":"b_43A0","oa":17312},{"a":17305,"t":"code","b":[78,67,127],"m":"lsr","o":"music_mul_mid","oa":32579},{"a":17308,"t":"code","b":[106],"m":"ror","o":"a"},{"a":17309,"t":"code","b":[76,150,67],"m":"jmp","o":"j_4396","oa":17302},{"a":17312,"l":"b_43A0","t":"code","b":[141,68,127],"m":"sta","o":"music_mul_lo","oa":32580,"x":[17303]},{"a":17315,"t":"code","b":[96],"m":"rts"},{"a":17316,"l":"freq_scale","c":"Multiplies the 24-bit $7F42/$7F43/$7F44 by A (kept in $7F45, shift and add) and adds the product's upper 16 bits to $50/$4F: $4F/$50 = shifted frequency * A / 256.","t":"code","b":[141,69,127],"m":"sta","o":"music_mul_factor","oa":32581,"x":[17197,17265]},{"a":17319,"l":"b_43A7","t":"code","b":[78,69,127],"m":"lsr","o":"music_mul_factor","oa":32581,"x":[17351]},{"a":17322,"t":"code","b":[144,15],"m":"bcc","o":"b_43BB","oa":17339},{"a":17324,"t":"code","b":[24],"m":"clc"},{"a":17325,"t":"code","b":[165,79],"m":"lda","o":"tune_tmp","oa":79},{"a":17327,"t":"code","b":[109,67,127],"m":"adc","o":"music_mul_mid","oa":32579},{"a":17330,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":17332,"t":"code","b":[165,80],"m":"lda","o":"tune_tmp_hi","oa":80},{"a":17334,"t":"code","b":[109,66,127],"m":"adc","o":"music_mul_hi","oa":32578},{"a":17337,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":17339,"l":"b_43BB","t":"code","b":[14,68,127],"m":"asl","o":"music_mul_lo","oa":32580,"x":[17322]},{"a":17342,"t":"code","b":[46,67,127],"m":"rol","o":"music_mul_mid","oa":32579},{"a":17345,"t":"code","b":[46,66,127],"m":"rol","o":"music_mul_hi","oa":32578},{"a":17348,"t":"code","b":[173,69,127],"m":"lda","o":"music_mul_factor","oa":32581},{"a":17351,"t":"code","b":[208,222],"m":"bne","o":"b_43A7","oa":17319},{"a":17353,"t":"code","b":[96],"m":"rts"},{"a":17354,"l":"freq_apply","c":"With Z clear, writes the shadow frequency of the voice at register offset X minus $4F/$50 to the SID ($D400/$D401,X); entered with Z set (or at $43E2), writes it plus $4F/$50. The result is also left in $4F/$50; the shadow is not changed here.","t":"code","b":[240,22],"m":"beq","o":"b_43E2","oa":17378,"x":[17201,17277]},{"a":17356,"t":"code","b":[56],"m":"sec"},{"a":17357,"t":"code","b":[189,205,127],"m":"lda","o":"sid_shadow,x","oa":32717},{"a":17360,"t":"code","b":[229,79],"m":"sbc","o":"tune_tmp","oa":79},{"a":17362,"t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x"},{"a":17365,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":17367,"t":"code","b":[189,206,127],"m":"lda","o":"sid_shadow_freq_hi,x","oa":32718},{"a":17370,"t":"code","b":[229,80],"m":"sbc","o":"tune_tmp_hi","oa":80},{"a":17372,"t":"code","b":[157,1,212],"m":"sta","o":"sid_v1_freq_hi,x"},{"a":17375,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":17377,"t":"code","b":[96],"m":"rts"},{"a":17378,"l":"b_43E2","t":"code","b":[24],"m":"clc","x":[17263,17354]},{"a":17379,"t":"code","b":[189,205,127],"m":"lda","o":"sid_shadow,x","oa":32717},{"a":17382,"t":"code","b":[101,79],"m":"adc","o":"tune_tmp","oa":79},{"a":17384,"t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x"},{"a":17387,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":17389,"t":"code","b":[189,206,127],"m":"lda","o":"sid_shadow_freq_hi,x","oa":32718},{"a":17392,"t":"code","b":[101,80],"m":"adc","o":"tune_tmp_hi","oa":80},{"a":17394,"t":"code","b":[157,1,212],"m":"sta","o":"sid_v1_freq_hi,x"},{"a":17397,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":17399,"t":"code","b":[96],"m":"rts"},{"a":17400,"l":"sid_list_abs","c":"Native routine for the byte code, twin of sid_list_voice with absolute register numbers ($51 = 0): takes a pointer from the next two byte-code bytes and writes the (register, value) pairs there to the SID and the shadow, up to a register byte with bit 7 set. Nothing refers to $43F8: no instruction, no table and no byte-code call (searched for $F8 $43 in all 64 KB).","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17402,"t":"code","b":[133,81],"m":"sta","o":"tune_sid_offset","oa":81},{"a":17404,"t":"code","b":[240,5],"m":"beq","o":"b_4403","oa":17411},{"a":17406,"l":"sid_list_voice","c":"Native routine called from the byte code (bytes $C1 $FE $43, then a two-byte pointer): writes the (register, value) pairs at the pointer to the SID ($D400+) and the shadow ($7FCD+), register numbers counted from the current voice's registers ($7FE8), until a register byte with bit 7 set. The four tunes call it six times, from voice 1, to set waveforms, envelopes, pulse widths, the filter and the volume.","t":"code","b":[173,232,127],"m":"lda","o":"music_cur_sid_ofs","oa":32744},{"a":17409,"t":"code","b":[133,81],"m":"sta","o":"tune_sid_offset","oa":81},{"a":17411,"l":"b_4403","t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940,"x":[17404]},{"a":17414,"t":"code","b":[133,79],"m":"sta","o":"tune_tmp","oa":79},{"a":17416,"t":"code","b":[32,44,66],"m":"jsr","o":"music_fetch","oa":16940},{"a":17419,"t":"code","b":[133,80],"m":"sta","o":"tune_tmp_hi","oa":80},{"a":17421,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17423,"l":"b_440F","t":"code","b":[177,79],"m":"lda","o":"(tune_tmp),y","oa":79,"x":[17441]},{"a":17425,"t":"code","b":[48,16],"m":"bmi","o":"r_4423","oa":17443},{"a":17427,"t":"code","b":[200],"m":"iny"},{"a":17428,"t":"code","b":[24],"m":"clc"},{"a":17429,"t":"code","b":[101,81],"m":"adc","o":"tune_sid_offset","oa":81},{"a":17431,"t":"code","b":[170],"m":"tax"},{"a":17432,"t":"code","b":[177,79],"m":"lda","o":"(tune_tmp),y","oa":79},{"a":17434,"t":"code","b":[157,205,127],"m":"sta","o":"sid_shadow,x","oa":32717},{"a":17437,"t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x"},{"a":17440,"t":"code","b":[200],"m":"iny"},{"a":17441,"t":"code","b":[208,236],"m":"bne","o":"b_440F","oa":17423},{"a":17443,"l":"r_4423","t":"code","b":[96],"m":"rts","x":[17425]},{"a":17444,"l":"music_start","c":"Starts the record player's music, tune music_tune (0-3), from scratch; reached by JMP from $3956 (rec_drv_start $800F leads to $394E, which first clears $478D and $02ED). Pauses the timers ($3FFC), disables and acknowledges the CIA1 interrupts, clears sound_job_bits, clears zero page $4F-$65, $7F40-$7FF9 and $46C9-$478B (music_clear), programs every SID register (sid_init), builds freq_table, points the vibrato at vibrato_shape with four phases ($7FF0), sets the three hook vectors to $44A8 (an RTS) and the slide rates to 7, sets up the three voices (music_voice_init), sets the tempo to $3B (timer A every $3B00 cycles, about 65 ticks a second on PAL, 68 on NTSC), starts timer A and timer B (every $4295 cycles, the effects, about 58 a second on PAL, 60 on NTSC) and enables their interrupts ($DC0D = $83).","t":"code","b":[32,252,63],"m":"jsr","o":"timers_stop","oa":16380,"x":[14678]},{"a":17447,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":17449,"t":"code","b":[141,13,220],"m":"sta","o":"cia1_interrupt"},{"a":17452,"t":"code","b":[173,13,220],"m":"lda","o":"cia1_interrupt"},{"a":17455,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17457,"t":"code","b":[141,141,71],"m":"sta","o":"sound_job_bits","oa":18317},{"a":17460,"t":"code","b":[32,232,68],"m":"jsr","o":"music_clear","oa":17640},{"a":17463,"t":"code","b":[32,71,69],"m":"jsr","o":"sid_init","oa":17735},{"a":17466,"t":"code","b":[32,8,69],"m":"jsr","o":"freq_table_build","oa":17672},{"a":17469,"t":"code","b":[169,83],"m":"lda","o":"#$53"},{"a":17471,"t":"code","b":[133,100],"m":"sta","o":"tune_vibrato_ptr","oa":100},{"a":17473,"t":"code","b":[169,67],"m":"lda","o":"#$43"},{"a":17475,"t":"code","b":[133,101],"m":"sta","o":"tune_vibrato_ptr_hi","oa":101},{"a":17477,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":17479,"t":"code","b":[141,240,127],"m":"sta","o":"music_vib_len","oa":32752},{"a":17482,"t":"code","b":[169,168],"m":"lda","o":"#$A8"},{"a":17484,"t":"code","b":[141,244,127],"m":"sta","o":"music_hook","oa":32756},{"a":17487,"t":"code","b":[141,246,127],"m":"sta","o":"music_hook_v2","oa":32758},{"a":17490,"t":"code","b":[141,248,127],"m":"sta","o":"music_hook_v3","oa":32760},{"a":17493,"t":"code","b":[169,68],"m":"lda","o":"#$44"},{"a":17495,"t":"code","b":[141,245,127],"m":"sta","o":"music_hook_hi","oa":32757},{"a":17498,"t":"code","b":[141,247,127],"m":"sta","o":"music_hook_v2_hi","oa":32759},{"a":17501,"t":"code","b":[141,249,127],"m":"sta","o":"music_hook_v3_hi","oa":32761},{"a":17504,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":17506,"t":"code","b":[141,241,127],"m":"sta","o":"music_slide_mul","oa":32753},{"a":17509,"t":"code","b":[141,242,127],"m":"sta","o":"music_slide_mul_v2","oa":32754},{"a":17512,"t":"code","b":[141,243,127],"m":"sta","o":"music_slide_mul_v3","oa":32755},{"a":17515,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17517,"t":"code","b":[32,169,68],"m":"jsr","o":"music_voice_init","oa":17577},{"a":17520,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":17522,"t":"code","b":[32,169,68],"m":"jsr","o":"music_voice_init","oa":17577},{"a":17525,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":17527,"t":"code","b":[32,169,68],"m":"jsr","o":"music_voice_init","oa":17577},{"a":17530,"t":"code","b":[169,59],"m":"lda","o":"#$3B"},{"a":17532,"t":"code","b":[133,88],"m":"sta","o":"tune_tempo","oa":88},{"a":17534,"t":"code","b":[141,75,127],"m":"sta","o":"music_v1_tempo","oa":32587},{"a":17537,"t":"code","b":[141,120,127],"m":"sta","o":"music_v2_tempo","oa":32632},{"a":17540,"t":"code","b":[141,165,127],"m":"sta","o":"music_v3_tempo","oa":32677},{"a":17543,"t":"code","b":[141,5,220],"m":"sta","o":"cia1_timer_a_hi"},{"a":17546,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17548,"t":"code","b":[141,4,220],"m":"sta","o":"cia1_timer_a_lo"},{"a":17551,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":17553,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":17556,"t":"code","b":[169,149],"m":"lda","o":"#$95"},{"a":17558,"t":"code","b":[141,6,220],"m":"sta","o":"cia1_timer_b_lo"},{"a":17561,"t":"code","b":[169,66],"m":"lda","o":"#$42"},{"a":17563,"t":"code","b":[141,7,220],"m":"sta","o":"cia1_timer_b_hi"},{"a":17566,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":17568,"t":"code","b":[141,15,220],"m":"sta","o":"cia1_control_b"},{"a":17571,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":17573,"t":"code","b":[141,13,220],"m":"sta","o":"cia1_interrupt"},{"a":17576,"t":"code","b":[96],"m":"rts"},{"a":17577,"l":"music_voice_init","c":"Sets up voice X (0-2) for music_start: the byte-code pointer from the tune table at $3A03 (entry 3 * music_tune + X), flags $C0 (playing, early release), countdown r7 = 1 (so the first tick starts it), release fraction r2 = 2 (the gate goes off a quarter of each note before its end), everything else zero; then copies the 13 bytes $53-$5F into the voice's block at $7F46 + $2D * X.","t":"code","b":[138],"m":"txa","x":[17517,17522,17527]},{"a":17578,"t":"code","b":[24],"m":"clc"},{"a":17579,"t":"code","b":[109,140,71],"m":"adc","o":"music_tune","oa":18316},{"a":17582,"t":"code","b":[24],"m":"clc"},{"a":17583,"t":"code","b":[109,140,71],"m":"adc","o":"music_tune","oa":18316},{"a":17586,"t":"code","b":[24],"m":"clc"},{"a":17587,"t":"code","b":[109,140,71],"m":"adc","o":"music_tune","oa":18316},{"a":17590,"t":"code","b":[10],"m":"asl","o":"a"},{"a":17591,"t":"code","b":[168],"m":"tay"},{"a":17592,"t":"code","b":[185,3,58],"m":"lda","o":"tune_streams,y","oa":14851},{"a":17595,"t":"code","b":[133,83],"m":"sta","o":"tune_voice_rec","oa":83},{"a":17597,"t":"code","b":[200],"m":"iny"},{"a":17598,"t":"code","b":[185,3,58],"m":"lda","o":"tune_streams,y","oa":14851},{"a":17601,"t":"code","b":[133,84],"m":"sta","o":"tune_voice_pos_hi","oa":84},{"a":17603,"t":"code","b":[189,188,63],"m":"lda","o":"music_voice_offset,x","oa":16316},{"a":17606,"t":"code","b":[24],"m":"clc"},{"a":17607,"t":"code","b":[105,70],"m":"adc","o":"#$46"},{"a":17609,"t":"code","b":[133,98],"m":"sta","o":"tune_record_ptr","oa":98},{"a":17611,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17613,"t":"code","b":[105,127],"m":"adc","o":"#$7F"},{"a":17615,"t":"code","b":[133,99],"m":"sta","o":"tune_record_ptr_hi","oa":99},{"a":17617,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":17619,"t":"code","b":[133,95],"m":"sta","o":"tune_flags","oa":95},{"a":17621,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":17623,"t":"code","b":[133,92],"m":"sta","o":"tune_countdown","oa":92},{"a":17625,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":17627,"t":"code","b":[133,87],"m":"sta","o":"tune_release_mult","oa":87},{"a":17629,"t":"code","b":[160,12],"m":"ldy","o":"#$0C"},{"a":17631,"l":"b_44DF","t":"code","b":[185,83,0],"m":"lda","o":"tune_voice_rec,y","oa":83,"x":[17637]},{"a":17634,"t":"code","b":[145,98],"m":"sta","o":"(tune_record_ptr),y","oa":98},{"a":17636,"t":"code","b":[136],"m":"dey"},{"a":17637,"t":"code","b":[16,248],"m":"bpl","o":"b_44DF","oa":17631},{"a":17639,"t":"code","b":[96],"m":"rts"},{"a":17640,"l":"music_clear","c":"Clears zero page $4F-$65 (the interpreter's work area), $7F40-$7FF9 (the three voice blocks and stacks, the SID shadow and the effect variables) and $46C9-$478B (freq_table and note_count).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[17460]},{"a":17642,"t":"code","b":[160,79],"m":"ldy","o":"#$4F"},{"a":17644,"l":"b_44EC","t":"code","b":[153,0,0],"m":"sta","o":"cpu_ddr,y","oa":0,"x":[17650]},{"a":17647,"t":"code","b":[200],"m":"iny"},{"a":17648,"t":"code","b":[192,102],"m":"cpy","o":"#$66"},{"a":17650,"t":"code","b":[208,248],"m":"bne","o":"b_44EC","oa":17644},{"a":17652,"t":"code","b":[168],"m":"tay"},{"a":17653,"l":"b_44F5","t":"code","b":[153,64,127],"m":"sta","o":"music_read_ofs,y","oa":32576,"x":[17659]},{"a":17656,"t":"code","b":[200],"m":"iny"},{"a":17657,"t":"code","b":[192,186],"m":"cpy","o":"#$BA"},{"a":17659,"t":"code","b":[208,248],"m":"bne","o":"b_44F5","oa":17653},{"a":17661,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17663,"l":"b_44FF","t":"code","b":[153,201,70],"m":"sta","o":"freq_table,y","oa":18121,"x":[17669]},{"a":17666,"t":"code","b":[200],"m":"iny"},{"a":17667,"t":"code","b":[192,195],"m":"cpy","o":"#$C3"},{"a":17669,"t":"code","b":[208,248],"m":"bne","o":"b_44FF","oa":17663},{"a":17671,"t":"code","b":[96],"m":"rts"},{"a":17672,"l":"freq_table_build","c":"Builds freq_table (96 words, notes 0-95): copies freq_top_octave into its last 12 entries, then makes each lower entry the one 12 above halved (LSR high byte, ROR low byte), down to entry 0.","t":"code","b":[162,191],"m":"ldx","o":"#$BF","x":[17466]},{"a":17674,"t":"code","b":[160,23],"m":"ldy","o":"#$17"},{"a":17676,"l":"b_450C","t":"code","b":[185,47,69],"m":"lda","o":"freq_top_octave,y","oa":17711,"x":[17684]},{"a":17679,"t":"code","b":[157,201,70],"m":"sta","o":"freq_table,x","oa":18121},{"a":17682,"t":"code","b":[202],"m":"dex"},{"a":17683,"t":"code","b":[136],"m":"dey"},{"a":17684,"t":"code","b":[16,246],"m":"bpl","o":"b_450C","oa":17676},{"a":17686,"t":"code","b":[160,191],"m":"ldy","o":"#$BF"},{"a":17688,"l":"b_4518","t":"code","b":[185,201,70],"m":"lda","o":"freq_table,y","oa":18121,"x":[17708]},{"a":17691,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":17692,"t":"code","b":[157,201,70],"m":"sta","o":"freq_table,x","oa":18121},{"a":17695,"t":"code","b":[136],"m":"dey"},{"a":17696,"t":"code","b":[202],"m":"dex"},{"a":17697,"t":"code","b":[185,201,70],"m":"lda","o":"freq_table,y","oa":18121},{"a":17700,"t":"code","b":[106],"m":"ror","o":"a"},{"a":17701,"t":"code","b":[157,201,70],"m":"sta","o":"freq_table,x","oa":18121},{"a":17704,"t":"code","b":[136],"m":"dey"},{"a":17705,"t":"code","b":[202],"m":"dex"},{"a":17706,"t":"code","b":[224,255],"m":"cpx","o":"#$FF"},{"a":17708,"t":"code","b":[208,234],"m":"bne","o":"b_4518","oa":17688},{"a":17710,"t":"code","b":[96],"m":"rts"},{"a":17711,"l":"freq_top_octave","c":"SID frequency values (low, high) of notes 84-95, the top octave, C to B, copied into freq_table: $861E, $8E18, $968B ... $FD2E. $861E gives 2093 Hz, C7, on an NTSC C64 (1.0227 MHz): the music is tuned for NTSC, and a PAL machine (0.9852 MHz) plays it about 3.7% flat, two-thirds of a semitone.","t":"word","b":[30,134,24,142,139,150,126,159],"d":[34334,36376,38539,40830],"x":[17676]},{"a":17719,"t":"word","b":[250,168,6,179,172,189,243,200],"d":[43258,45830,48556,51443]},{"a":17727,"t":"word","b":[230,212,143,225,248,238,46,253],"d":[54502,57743,61176,64814]},{"a":17735,"l":"sid_init","c":"Copies the 25 bytes of sid_init_values to the SID registers $D400-$D418 and to the shadow $7FCD-$7FE5.","t":"code","b":[162,24],"m":"ldx","o":"#$18","x":[17463]},{"a":17737,"l":"b_4549","t":"code","b":[189,86,69],"m":"lda","o":"sid_init_values,x","oa":17750,"x":[17747]},{"a":17740,"t":"code","b":[157,205,127],"m":"sta","o":"sid_shadow,x","oa":32717},{"a":17743,"t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x"},{"a":17746,"t":"code","b":[202],"m":"dex"},{"a":17747,"t":"code","b":[16,244],"m":"bpl","o":"b_4549","oa":17737},{"a":17749,"t":"code","b":[96],"m":"rts"},{"a":17750,"l":"sid_init_values","c":"The SID set-up of music_start (sid_init), register by register from $D400: voice 1 frequency $10C3, pulse width $0800, control $40 (pulse, gate off), attack/decay $09, sustain/release $00; voice 2 $1660, $0800, $10 (triangle), $09, $00; voice 3 $1C30, $0A00, $40 (pulse), $09, $29; filter cutoff $07/$80, resonance and routing $80, mode and volume $1D (low-pass, volume 13).","t":"byte","b":[195,16,0,8,64,9,0,96],"x":[17737]},{"a":17758,"t":"byte","b":[22,0,8,16,9,0,48,28]},{"a":17766,"t":"byte","b":[0,10,64,9,41,7,128,128]},{"a":17774,"t":"byte","b":[29]},{"a":17775,"l":"job_filter_start","c":"Sets sound job bit 0 ($478D = 1) and falls into job_filter_env3, so that job also runs once straight away. Nothing refers to $456F (no JSR, JMP, table entry or byte-code call; searched for $6F $45 in all 64 KB); $39C1 sets the same bit without the immediate run.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":17777,"t":"code","b":[141,141,71],"m":"sta","o":"sound_job_bits","oa":18317},{"a":17780,"l":"job_filter_env3","c":"Sound job 0 (bit 0 of $478D): copies voice 3's envelope output ($D41C) to the filter cutoff, whole to $D416 and AND 7 to $D415. Both shadow stores go to $7FE2 ($D415's), so $7FE3 is never updated.","t":"code","b":[173,28,212],"m":"lda","o":"sid_v3_envelope","x":[14748]},{"a":17783,"t":"code","b":[141,22,212],"m":"sta","o":"sid_filter_cutoff_hi"},{"a":17786,"t":"code","b":[141,226,127],"m":"sta","o":"sid_shadow_filter_lo","oa":32738},{"a":17789,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":17791,"t":"code","b":[141,21,212],"m":"sta","o":"sid_filter_cutoff_lo"},{"a":17794,"t":"code","b":[141,226,127],"m":"sta","o":"sid_shadow_filter_lo","oa":32738},{"a":17797,"t":"code","b":[96],"m":"rts"},{"a":17798,"l":"job_v2_env3_raw","c":"Sound job 1: adds voice 3's envelope output ($D41C) to voice 2's frequency by reading $D407/$D408 back, but those SID registers are write-only, so the value read is not the frequency. Job 2 (job_v2_env3) does the same through the shadow.","t":"code","b":[173,7,212],"m":"lda","o":"sid_v2_freq_lo","x":[14749]},{"a":17801,"t":"code","b":[24],"m":"clc"},{"a":17802,"t":"code","b":[109,28,212],"m":"adc","o":"sid_v3_envelope"},{"a":17805,"t":"code","b":[141,7,212],"m":"sta","o":"sid_v2_freq_lo"},{"a":17808,"t":"code","b":[173,8,212],"m":"lda","o":"sid_v2_freq_hi"},{"a":17811,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":17813,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":17816,"t":"code","b":[96],"m":"rts"},{"a":17817,"l":"job_v2_env3","c":"Sound job 2: adds voice 3's envelope output ($D41C) to voice 2's frequency (shadow $7FD4/$7FD5, SID $D407/$D408): a pitch that climbs with the envelope.","t":"code","b":[173,212,127],"m":"lda","o":"sid_shadow_v2_freq","oa":32724,"x":[14750]},{"a":17820,"t":"code","b":[24],"m":"clc"},{"a":17821,"t":"code","b":[109,28,212],"m":"adc","o":"sid_v3_envelope"},{"a":17824,"t":"code","b":[141,212,127],"m":"sta","o":"sid_shadow_v2_freq","oa":32724},{"a":17827,"t":"code","b":[141,7,212],"m":"sta","o":"sid_v2_freq_lo"},{"a":17830,"t":"code","b":[173,213,127],"m":"lda","o":"sid_shadow_v2_freq_hi","oa":32725},{"a":17833,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":17835,"t":"code","b":[141,213,127],"m":"sta","o":"sid_shadow_v2_freq_hi","oa":32725},{"a":17838,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":17841,"t":"code","b":[96],"m":"rts"},{"a":17842,"l":"job_all_fall","c":"Sound job 3: lowers the frequencies of all three voices, by 5, 10 and 15 a call, in the shadow. Several stores look mistyped: voice 1's borrow DECs $D400 instead of $D401, voice 2's new low byte goes to $D400 instead of $D407, and voice 3's borrow DECs $7FDB and $D40E instead of $7FDC and $D40F.","t":"code","b":[173,205,127],"m":"lda","o":"sid_shadow","oa":32717,"x":[14751]},{"a":17845,"t":"code","b":[56],"m":"sec"},{"a":17846,"t":"code","b":[233,5],"m":"sbc","o":"#$05"},{"a":17848,"t":"code","b":[141,205,127],"m":"sta","o":"sid_shadow","oa":32717},{"a":17851,"t":"code","b":[141,0,212],"m":"sta","o":"sid_v1_freq_lo"},{"a":17854,"t":"code","b":[176,6],"m":"bcs","o":"b_45C6","oa":17862},{"a":17856,"t":"code","b":[206,206,127],"m":"dec","o":"sid_shadow_freq_hi","oa":32718},{"a":17859,"t":"code","b":[206,0,212],"m":"dec","o":"sid_v1_freq_lo"},{"a":17862,"l":"b_45C6","t":"code","b":[173,212,127],"m":"lda","o":"sid_shadow_v2_freq","oa":32724,"x":[17854]},{"a":17865,"t":"code","b":[56],"m":"sec"},{"a":17866,"t":"code","b":[233,10],"m":"sbc","o":"#$0A"},{"a":17868,"t":"code","b":[141,212,127],"m":"sta","o":"sid_shadow_v2_freq","oa":32724},{"a":17871,"t":"code","b":[141,0,212],"m":"sta","o":"sid_v1_freq_lo"},{"a":17874,"t":"code","b":[176,6],"m":"bcs","o":"b_45DA","oa":17882},{"a":17876,"t":"code","b":[206,213,127],"m":"dec","o":"sid_shadow_v2_freq_hi","oa":32725},{"a":17879,"t":"code","b":[206,8,212],"m":"dec","o":"sid_v2_freq_hi"},{"a":17882,"l":"b_45DA","t":"code","b":[173,219,127],"m":"lda","o":"sid_shadow_v3_freq","oa":32731,"x":[17874]},{"a":17885,"t":"code","b":[56],"m":"sec"},{"a":17886,"t":"code","b":[233,15],"m":"sbc","o":"#$0F"},{"a":17888,"t":"code","b":[141,219,127],"m":"sta","o":"sid_shadow_v3_freq","oa":32731},{"a":17891,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":17894,"t":"code","b":[176,6],"m":"bcs","o":"r_45EE","oa":17902},{"a":17896,"t":"code","b":[206,219,127],"m":"dec","o":"sid_shadow_v3_freq","oa":32731},{"a":17899,"t":"code","b":[206,14,212],"m":"dec","o":"sid_v3_freq_lo"},{"a":17902,"l":"r_45EE","t":"code","b":[96],"m":"rts","x":[17894]},{"a":17903,"l":"job_v1_osc3","c":"Sound job 4: moves voice 1's frequency (shadow $7FCD/$7FCE, SID $D400) by voice 3's oscillator output ($D41B) minus $80, a random wobble when voice 3 plays noise. Its carries INC or DEC $D401 directly, a write-only register, so the high byte on the chip is not the shadow's.","t":"code","b":[173,205,127],"m":"lda","o":"sid_shadow","oa":32717,"x":[14752]},{"a":17906,"t":"code","b":[56],"m":"sec"},{"a":17907,"t":"code","b":[233,128],"m":"sbc","o":"#$80"},{"a":17909,"t":"code","b":[176,7],"m":"bcs","o":"b_45FE","oa":17918},{"a":17911,"t":"code","b":[206,206,127],"m":"dec","o":"sid_shadow_freq_hi","oa":32718},{"a":17914,"t":"code","b":[206,1,212],"m":"dec","o":"sid_v1_freq_hi"},{"a":17917,"t":"code","b":[24],"m":"clc"},{"a":17918,"l":"b_45FE","t":"code","b":[109,27,212],"m":"adc","o":"sid_v3_oscillator","x":[17909]},{"a":17921,"t":"code","b":[141,205,127],"m":"sta","o":"sid_shadow","oa":32717},{"a":17924,"t":"code","b":[141,0,212],"m":"sta","o":"sid_v1_freq_lo"},{"a":17927,"t":"code","b":[144,6],"m":"bcc","o":"r_460F","oa":17935},{"a":17929,"t":"code","b":[238,206,127],"m":"inc","o":"sid_shadow_freq_hi","oa":32718},{"a":17932,"t":"code","b":[238,1,212],"m":"inc","o":"sid_v1_freq_hi"},{"a":17935,"l":"r_460F","t":"code","b":[96],"m":"rts","x":[17927]},{"a":17936,"l":"job_v3_fall","c":"Sound job 5: lowers voice 3's frequency by $14 a call (shadow $7FDB/$7FDC, SID $D40E); the borrow DECs $D40F directly, a write-only register.","t":"code","b":[173,219,127],"m":"lda","o":"sid_shadow_v3_freq","oa":32731,"x":[14753]},{"a":17939,"t":"code","b":[56],"m":"sec"},{"a":17940,"t":"code","b":[233,20],"m":"sbc","o":"#$14"},{"a":17942,"t":"code","b":[141,219,127],"m":"sta","o":"sid_shadow_v3_freq","oa":32731},{"a":17945,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":17948,"t":"code","b":[176,6],"m":"bcs","o":"r_4624","oa":17956},{"a":17950,"t":"code","b":[206,220,127],"m":"dec","o":"sid_shadow_v3_freq_hi","oa":32732},{"a":17953,"t":"code","b":[206,15,212],"m":"dec","o":"sid_v3_freq_hi"},{"a":17956,"l":"r_4624","t":"code","b":[96],"m":"rts","x":[17948]},{"a":17957,"l":"job_trill","c":"Sound job 6: for each of three slots (X = 2 to 0) whose trill_targets entry is not zero, that entry minus one being the SID register offset of a frequency: flips bit 7 of trill_phase+X, then adds trill_up+X to the shadow frequency (bit clear) or subtracts trill_down+X (bit set), writing the low byte to the SID; the high byte changes only in the shadow.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[14754]},{"a":17959,"l":"b_4627","t":"code","b":[189,151,71],"m":"lda","o":"trill_targets,x","oa":18327,"x":[18036]},{"a":17962,"t":"code","b":[240,71],"m":"beq","o":"b_4673","oa":18035},{"a":17964,"t":"code","b":[188,151,71],"m":"ldy","o":"trill_targets,x","oa":18327},{"a":17967,"t":"code","b":[136],"m":"dey"},{"a":17968,"t":"code","b":[189,148,71],"m":"lda","o":"trill_phase,x","oa":18324},{"a":17971,"t":"code","b":[73,128],"m":"eor","o":"#$80"},{"a":17973,"t":"code","b":[157,148,71],"m":"sta","o":"trill_phase,x","oa":18324},{"a":17976,"t":"code","b":[48,27],"m":"bmi","o":"b_4655","oa":18005},{"a":17978,"t":"code","b":[24],"m":"clc"},{"a":17979,"t":"code","b":[185,205,127],"m":"lda","o":"sid_shadow,y","oa":32717},{"a":17982,"t":"code","b":[125,154,71],"m":"adc","o":"trill_up,x","oa":18330},{"a":17985,"t":"code","b":[144,42],"m":"bcc","o":"b_466D","oa":18029},{"a":17987,"t":"code","b":[142,146,71],"m":"stx","o":"job_slot_index","oa":18322},{"a":17990,"t":"code","b":[140,145,71],"m":"sty","o":"job_reg_offset","oa":18321},{"a":17993,"t":"code","b":[174,145,71],"m":"ldx","o":"job_reg_offset","oa":18321},{"a":17996,"t":"code","b":[254,206,127],"m":"inc","o":"sid_shadow_freq_hi,x","oa":32718},{"a":17999,"t":"code","b":[174,146,71],"m":"ldx","o":"job_slot_index","oa":18322},{"a":18002,"t":"code","b":[76,109,70],"m":"jmp","o":"b_466D","oa":18029},{"a":18005,"l":"b_4655","t":"code","b":[56],"m":"sec","x":[17976]},{"a":18006,"t":"code","b":[185,205,127],"m":"lda","o":"sid_shadow,y","oa":32717},{"a":18009,"t":"code","b":[253,157,71],"m":"sbc","o":"trill_down,x","oa":18333},{"a":18012,"t":"code","b":[176,15],"m":"bcs","o":"b_466D","oa":18029},{"a":18014,"t":"code","b":[142,146,71],"m":"stx","o":"job_slot_index","oa":18322},{"a":18017,"t":"code","b":[140,145,71],"m":"sty","o":"job_reg_offset","oa":18321},{"a":18020,"t":"code","b":[174,145,71],"m":"ldx","o":"job_reg_offset","oa":18321},{"a":18023,"t":"code","b":[222,206,127],"m":"dec","o":"sid_shadow_freq_hi,x","oa":32718},{"a":18026,"t":"code","b":[174,146,71],"m":"ldx","o":"job_slot_index","oa":18322},{"a":18029,"l":"b_466D","t":"code","b":[153,0,212],"m":"sta","o":"sid_v1_freq_lo,y","x":[17985,18002,18012]},{"a":18032,"t":"code","b":[153,205,127],"m":"sta","o":"sid_shadow,y","oa":32717},{"a":18035,"l":"b_4673","t":"code","b":[202],"m":"dex","x":[17962]},{"a":18036,"t":"code","b":[16,177],"m":"bpl","o":"b_4627","oa":17959},{"a":18038,"t":"code","b":[96],"m":"rts"},{"a":18039,"l":"job_slots_fall","c":"Sound job 7: for each of three slots (X = 2 to 0) whose slide_targets entry is not zero, lowers the frequency at SID register offset entry - 1 by $B0 a call, low and high bytes, in the SID and the shadow.","t":"code","b":[162,2],"m":"ldx","o":"#$02","x":[14755]},{"a":18041,"l":"b_4679","t":"code","b":[189,142,71],"m":"lda","o":"slide_targets,x","oa":18318,"x":[18086]},{"a":18044,"t":"code","b":[240,39],"m":"beq","o":"b_46A5","oa":18085},{"a":18046,"t":"code","b":[168],"m":"tay"},{"a":18047,"t":"code","b":[136],"m":"dey"},{"a":18048,"t":"code","b":[185,205,127],"m":"lda","o":"sid_shadow,y","oa":32717},{"a":18051,"t":"code","b":[56],"m":"sec"},{"a":18052,"t":"code","b":[233,176],"m":"sbc","o":"#$B0"},{"a":18054,"t":"code","b":[176,23],"m":"bcs","o":"b_469F","oa":18079},{"a":18056,"t":"code","b":[140,145,71],"m":"sty","o":"job_reg_offset","oa":18321},{"a":18059,"t":"code","b":[142,146,71],"m":"stx","o":"job_slot_index","oa":18322},{"a":18062,"t":"code","b":[174,145,71],"m":"ldx","o":"job_reg_offset","oa":18321},{"a":18065,"t":"code","b":[222,206,127],"m":"dec","o":"sid_shadow_freq_hi,x","oa":32718},{"a":18068,"t":"code","b":[72],"m":"pha"},{"a":18069,"t":"code","b":[189,206,127],"m":"lda","o":"sid_shadow_freq_hi,x","oa":32718},{"a":18072,"t":"code","b":[157,1,212],"m":"sta","o":"sid_v1_freq_hi,x"},{"a":18075,"t":"code","b":[174,146,71],"m":"ldx","o":"job_slot_index","oa":18322},{"a":18078,"t":"code","b":[104],"m":"pla"},{"a":18079,"l":"b_469F","t":"code","b":[153,205,127],"m":"sta","o":"sid_shadow,y","oa":32717,"x":[18054]},{"a":18082,"t":"code","b":[153,0,212],"m":"sta","o":"sid_v1_freq_lo,y"},{"a":18085,"l":"b_46A5","t":"code","b":[202],"m":"dex","x":[18044]},{"a":18086,"t":"code","b":[16,209],"m":"bpl","o":"b_4679","oa":18041},{"a":18088,"t":"code","b":[96],"m":"rts"},{"a":18089,"l":"mul8","c":"A = $47A0 * $47A1, 8 bits (shift and add; both operands are used up). music_note uses it for the release tick r1 * r2.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[17025]},{"a":18091,"l":"b_46AB","t":"code","b":[78,161,71],"m":"lsr","o":"mul_b","oa":18337,"x":[18106]},{"a":18094,"t":"code","b":[144,4],"m":"bcc","o":"b_46B4","oa":18100},{"a":18096,"t":"code","b":[24],"m":"clc"},{"a":18097,"t":"code","b":[109,160,71],"m":"adc","o":"mul_a","oa":18336},{"a":18100,"l":"b_46B4","t":"code","b":[14,160,71],"m":"asl","o":"mul_a","oa":18336,"x":[18094]},{"a":18103,"t":"code","b":[174,161,71],"m":"ldx","o":"mul_b","oa":18337},{"a":18106,"t":"code","b":[208,239],"m":"bne","o":"b_46AB","oa":18091},{"a":18108,"t":"code","b":[96],"m":"rts"},{"a":18109,"l":"hw_vectors","c":"The six bytes the cold start copies to the hardware vectors $FFFA-$FFFF (at $043A): NMI $0833 (nmi_shim), RESET $0340 (reset_jumps), IRQ $082B (irq_shim).","t":"addr","b":[51,8],"oa":2099,"o":"nmi_shim","x":[1082]},{"a":18111,"t":"addr","b":[64,3],"oa":832,"o":"reset_jumps"},{"a":18113,"t":"addr","b":[43,8],"oa":2091,"o":"irq_shim"},{"a":18115,"t":"gap","n":6},{"a":18115,"t":"note","c":"Six bytes $FF $00 $FF $00 $FF $00 after hw_vectors, the same in the load image; the cold start copies only the six before them. No reference found (searched all 64 KB for $C3-$C8 $46); not known to be used.","note":"outside the tracked image"},{"a":18121,"l":"freq_table","c":"SID frequency values (low, high) for notes 0-95, C0 to B7 by semitones (NTSC tuning: see freq_top_octave), built at each music_start by freq_table_build; zero in the load image. music_note reads entry r0; entry 0 is $010C. Nothing keeps r0 below 96: notes 96-127 would read note_count and the bytes after it, and 128 or more wrap round to the low entries.","t":"word","b":[12,1,28,1,45,1,62,1],"d":[268,284,301,318],"x":[17110,17123,17663,17679,17688,17692,17697,17701]},{"a":18129,"t":"word","b":[81,1,102,1,123,1,145,1],"d":[337,358,379,401]},{"a":18137,"t":"word","b":[169,1,195,1,221,1,250,1],"d":[425,451,477,506]},{"a":18145,"t":"word","b":[24,2,56,2,90,2,125,2],"d":[536,568,602,637]},{"a":18153,"t":"word","b":[163,2,204,2,246,2,35,3],"d":[675,716,758,803]},{"a":18161,"t":"word","b":[83,3,134,3,187,3,244,3],"d":[851,902,955,1012]},{"a":18169,"t":"word","b":[48,4,112,4,180,4,251,4],"d":[1072,1136,1204,1275]},{"a":18177,"t":"word","b":[71,5,152,5,237,5,71,6],"d":[1351,1432,1517,1607]},{"a":18185,"t":"gap","n":128},{"a":18313,"l":"note_count","c":"Three note counters, one per voice, incremented by music_note ($424B) at every note and cleared by music_clear. No reader found, and none for the similar counters at $7FEA-$7FEC either.","t":"byte","b":[81,129,16],"x":[16971]},{"a":18316,"l":"music_tune","c":"The tune music_start plays, 0-3: music_voice_init reads the three byte-code pointers of tune n at $3A03 + 6n. Written only by activity 119 ($77, entry $AB0F): a random number ($195E) AND 3, then script_next.","t":"byte","b":[1],"x":[17579,17583,17587,43796]},{"a":18317,"l":"sound_job_bits","c":"Sound jobs to run: sound_dispatch ($396E, called from the raster IRQ at $0812 while record_playing is set) runs job n of sound_jobs ($399C) for each bit n that is set. Cleared at $3950 and by music_start. Set only by $39C1 (1), $39F4 (3), $39FA (5) and job_filter_start (1), and no caller of any of them was found (no JSR, JMP, table entry or byte-code call); it is 0 in every snapshot, so in this build the eight jobs look unused.","t":"byte","b":[0],"x":[14672,14707,14787,14838,14844,17457,17777]},{"a":18318,"l":"slide_targets","c":"job_slots_fall's three slots: the SID register offset + 1 of a frequency to lower, 0 for an empty slot. No writer found: they stay 0 after music_clear.","t":"byte","b":[0,0,0],"x":[18041]},{"a":18321,"l":"job_reg_offset","c":"Scratch for job_trill and job_slots_fall: the slot's SID register offset, stored from Y so that it can be loaded into X for INC/DEC abs,X.","t":"byte","b":[0],"x":[17990,17993,18017,18020,18056,18062]},{"a":18322,"l":"job_slot_index","c":"Scratch for job_trill and job_slots_fall: saves the slot index X while X holds the register offset. $4793 after it is unused.","t":"byte","b":[0,0],"x":[17987,17999,18014,18026,18059,18075]},{"a":18324,"l":"trill_phase","c":"job_trill's three toggles: bit 7 flips at every call; after the flip, clear means add trill_up, set means subtract trill_down.","t":"byte","b":[0,0,0],"x":[17968,17973]},{"a":18327,"l":"trill_targets","c":"job_trill's three slots: the SID register offset + 1 of a frequency low byte to wobble, 0 for an empty slot. No writer found.","t":"byte","b":[0,0,0],"x":[17959,17964]},{"a":18330,"l":"trill_up","c":"job_trill: per slot, the amount added to the frequency on the up call.","t":"byte","b":[0,0,0],"x":[17982]},{"a":18333,"l":"trill_down","c":"job_trill: per slot, the amount subtracted from the frequency on the down call.","t":"byte","b":[0,0,0],"x":[18009]},{"a":18336,"l":"mul_a","c":"mul8's first operand, doubled as mul8 runs: music_note stores r1, the note length in units, here.","t":"byte","b":[24],"x":[17022,18097,18100]},{"a":18337,"l":"mul_b","c":"mul8's second operand, halved as mul8 runs: music_note stores r2, the release fraction, here. $47A2-$47A9 after it are zero and unreferenced.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[17017,18091,18103]},{"a":18345,"t":"byte","b":[0]},{"a":18346,"l":"count_9593","c":"A counter kept here for code in another range, the handlers at $9593-$9683 (a phase machine switched on $68): set to 10 at $959A and counted down at $95A6, which sets body frame 8 ($9363) when it reaches 0; also incremented at $967B, whose callers test its low three bits.","t":"byte","b":[16],"x":[38298,38310,38523,38526]},{"a":18347,"l":"count_9324","c":"A count for the handlers at $9303-$9368 (another range): set at $9324 from the table at $932F, indexed by $0369 AND 7 (plus 8 when $0369 is negative), or 2 when $037B is set, and to 1 at $AB09. Every 32 passes (count_933f) $935E takes one off and sets body frame $20; at 0 the phase ends ($9327).","t":"byte","b":[0],"x":[37668,37721,37726,43785]},{"a":18348,"l":"count_933f","c":"A pass counter for the handler at $933F (another range): incremented on every pass; the handler does nothing unless its low three bits are 0, and counts count_9324 down only when its low five bits are 0.","t":"byte","b":[64,0],"x":[37696,37699,37714]},{"a":18350,"l":"pose_a8c4","c":"State for the handlers at $A88F-$A918 (another range): bits 0-1 select body frame $23 + n (set through $9363 at $A8DA), bit 7 the direction in which $A8C4 steps them; cleared at $A899.","t":"byte","b":[0],"x":[43161,43195,43204,43208,43215,43218,43234,43245,43263]},{"a":18351,"l":"time_a894","c":"A countdown for the handlers at $A88F-$A918: set to a random 64-255 at $A894, decremented at $A8F3 when the handler acts, cleared at $A8AE when $8F86 reports a pending request.","t":"byte","b":[0],"x":[43156,43182,43229,43251]},{"a":18352,"l":"pass_a8b1","c":"A pass counter for the handler at $A8A7-$A918: incremented at $A8B1 on every pass; the handler acts only when its low three bits are 0. $47B1-$47BF after it are zero and unreferenced.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[43164,43185,43188]},{"a":18360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18368,"l":"sprite_shape_1f","c":"Sprite shape $1F (VIC bank 1: $4000 + $1F * 64), authored, the same in the load image: 63 bytes, empty except rows 15-19, a small dotted wedge that widens downwards (2, 4, 6, 10 and 12 dots): the text cursor. The only store of $1F to a sprite pointer found in the traced code is at $0786, where the raster interrupt borrows a hardware sprite for the cursor (cursor_sprite_save, $0836): while $0710 or $0711 is set it shows this shape hires, dark grey ($0B), at Y = $35 and X = text_cursor_x + 13, the print position in the text band.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18408,"t":"byte","b":[0,0,0,0,0,0,65,0]},{"a":18416,"t":"byte","b":[1,65,64,5,65,80,21,85]},{"a":18424,"t":"byte","b":[84,85,85,85,0,0,0,0]},{"a":18432,"l":"sprite_buffers","c":"Sixteen 64-byte sprite shape buffers, VIC pointers $20-$2F ($4800-$4BFF), filled at run time by unpack_figure_sprite ($0E41), which unpacks a figure's frame into block $0D68,X after flipping that block number with EOR #$08 ($0EA3; also $1587), so the figures are double-buffered between $20-$27 and $28-$2F; $1396 turns a block number n into $4000 + 64 * n in $1A/$1B. The crack screen's code sits here in the load image, and the cold start zeroes $4800-$4FFF ($04A2-$04B5). In play-02 the pointers ($5FF8) are $21 $2A $2B $20 $24 $26 $25 $27.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18448,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18472,"t":"byte","b":[0,0,160,0,0,160,0,0]},{"a":18480,"t":"byte","b":[160,0,0,160,0,0,160,0]},{"a":18488,"t":"byte","b":[0,160,0,0,0,0,0,0]},{"a":18496,"t":"byte","b":[170,128,0,128,128,0,0,0]},{"a":18504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18584,"t":"byte","b":[0,0,0,2,138,0,2,8]},{"a":18592,"t":"byte","b":[0,0,160,32,2,40,8,10]},{"a":18600,"t":"byte","b":[168,8,32,170,160,34,170,168]},{"a":18608,"t":"byte","b":[10,170,168,0,170,168,0,40]},{"a":18616,"t":"byte","b":[160,0,8,128,0,0,0,0]},{"a":18624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18648,"t":"byte","b":[3,207,0,7,255,128,7,255]},{"a":18656,"t":"byte","b":[48,3,252,124,15,254,62,63]},{"a":18664,"t":"byte","b":[255,254,127,255,252,127,255,254]},{"a":18672,"t":"byte","b":[63,255,254,15,255,254,0,255]},{"a":18680,"t":"byte","b":[252,0,63,240,0,12,192,0]},{"a":18688,"t":"byte","b":[0,3,96,0,1,96,0,2]},{"a":18696,"t":"byte","b":[96,0,2,160,0,234,160,3]},{"a":18704,"t":"byte","b":[234,160,7,0,0,4,0,0]},{"a":18712,"t":"byte","b":[4,0,0,4,0,0,37,0]},{"a":18720,"t":"byte","b":[0,169,0,0,1,0,0,9]},{"a":18728,"t":"byte","b":[0,0,42,0,0,0,0,0]},{"a":18736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18752,"t":"byte","b":[0,7,248,0,7,248,0,7]},{"a":18760,"c":"Byte 8 of sprite shape buffer $25 ($4940-$497F). The only reference is ROL $4948,X at $AA6F, which is script data decoded as code (the bytes after $AA6B are a list of activity numbers), not a real access.","t":"byte","b":[248,0,255,248,3,255,248,15]},{"a":18768,"t":"byte","b":[255,248,31,255,240,31,0,0]},{"a":18776,"t":"byte","b":[30,0,0,63,0,0,255,128]},{"a":18784,"t":"byte","b":[0,255,128,0,255,128,0,63]},{"a":18792,"t":"byte","b":[128,0,127,128,0,63,0,0]},{"a":18800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18824,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18832,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18840,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18848,"t":"byte","b":[0,0,168,0,3,250,0,3]},{"a":18856,"t":"byte","b":[250,0,3,254,0,0,206,0]},{"a":18864,"t":"byte","b":[3,255,0,3,255,0,2,175]},{"a":18872,"t":"byte","b":[0,3,15,0,0,252,0,0]},{"a":18880,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18888,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18904,"t":"byte","b":[0,0,0,0,0,0,0,252]},{"a":18912,"t":"byte","b":[0,3,255,0,7,255,128,7]},{"a":18920,"t":"byte","b":[255,128,7,255,128,3,255,128]},{"a":18928,"t":"byte","b":[7,255,128,7,255,128,7,255]},{"a":18936,"t":"byte","b":[128,7,255,128,3,255,0,0]},{"a":18944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19008,"t":"byte","b":[0,40,0,0,32,0,0,48]},{"a":19016,"t":"byte","b":[0,0,48,0,0,32,0,0]},{"a":19024,"t":"byte","b":[40,0,0,128,0,8,0,0]},{"a":19032,"t":"byte","b":[128,0,0,0,0,0,0,0]},{"a":19040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19048,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19096,"t":"byte","b":[0,0,0,10,40,0,2,32]},{"a":19104,"t":"byte","b":[32,2,160,8,8,136,8,42]},{"a":19112,"t":"byte","b":[170,8,40,10,160,42,42,168]},{"a":19120,"t":"byte","b":[10,170,168,0,170,168,0,136]},{"a":19128,"t":"byte","b":[136,0,136,136,0,0,0,0]},{"a":19136,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19144,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19152,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19160,"t":"byte","b":[15,60,0,31,254,48,15,252]},{"a":19168,"t":"byte","b":[124,15,252,62,63,255,30,127]},{"a":19176,"t":"byte","b":[255,254,127,255,252,127,255,254]},{"a":19184,"t":"byte","b":[63,255,254,15,255,254,1,255]},{"a":19192,"t":"byte","b":[254,1,255,254,0,204,204,0]},{"a":19200,"t":"byte","b":[0,3,96,0,1,96,0,2]},{"a":19208,"t":"byte","b":[96,0,2,160,0,234,160,3]},{"a":19216,"t":"byte","b":[234,160,7,0,0,4,0,0]},{"a":19224,"t":"byte","b":[16,0,0,144,0,0,161,0]},{"a":19232,"t":"byte","b":[0,1,0,0,1,0,0,9]},{"a":19240,"t":"byte","b":[0,0,42,0,0,0,0,0]},{"a":19248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19264,"t":"byte","b":[0,7,248,0,7,248,0,7]},{"a":19272,"t":"byte","b":[248,0,255,248,3,255,248,15]},{"a":19280,"t":"byte","b":[255,248,31,255,240,63,0,0]},{"a":19288,"t":"byte","b":[252,0,0,251,0,0,255,128]},{"a":19296,"t":"byte","b":[0,247,128,0,15,128,0,63]},{"a":19304,"t":"byte","b":[128,0,127,128,0,63,0,0]},{"a":19312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19360,"t":"byte","b":[0,0,232,0,3,234,0,3]},{"a":19368,"t":"byte","b":[234,0,3,250,0,3,58,0]},{"a":19376,"t":"byte","b":[15,255,0,15,255,0,2,191]},{"a":19384,"t":"byte","b":[0,0,60,0,3,252,0,0]},{"a":19392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19408,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":19416,"t":"byte","b":[0,0,0,0,0,0,0,252]},{"a":19424,"t":"byte","b":[0,3,255,0,7,255,128,7]},{"a":19432,"t":"byte","b":[255,128,7,255,128,15,255,128]},{"a":19440,"t":"byte","b":[31,255,128,31,255,128,15,255]},{"a":19448,"t":"byte","b":[128,3,255,0,7,254,0,0]},{"a":19456,"t":"gap","n":1024},{"a":19456,"t":"note","c":"Unused as far as found: the cold start zeroes $4800-$4FFF ($04A2-$04B5) and $4C00-$4FFF stays zero in time-prompt, play-01 and play-02 (it held the crack screen's data before). No instruction names it; as sprite blocks $30-$3F it would need pointers the figures never use ($0D68 flips within $20-$2F).","note":"outside the tracked image"},{"a":20480,"l":"font_ascii","c":"The font for all on-screen text: 91 glyphs of 8 bytes for ASCII $20-$7A (space to 'z') in order, $5000-$52D7. The next byte, $52D8, is code (the entry of activity 32), so $7B-$7F have no glyph: printing one would draw code bytes. Byte 0 of a glyph is its metrics: low nibble = width in pixels, the advance (3 for space, 2 for 'i', 8 for 'M'); high nibble = rows to drop the glyph (1 for , ; Q j and 2 for g p q y, the descenders). Bytes 1-7 are its seven pixel rows, left-aligned. print_char's glyph fetch ($BB29) copies the 8 bytes at base + (char - $20) * 8 to $92-$99, the width to $90 and the drop plus $8E to $91; the base is the first entry of the table at $BDC0/$BDC2 ($5000). The second base, $5800, used for characters with bit 7 set, points at code in this build (letter and computer code).","t":"byte","b":[3,0,0,0,0,0,0,0]},{"a":20488,"t":"byte","b":[2,0,128,128,128,128,0,128]},{"a":20496,"t":"byte","b":[5,0,144,144,144,0,0,0]},{"a":20504,"t":"byte","b":[8,0,18,127,36,254,72,0]},{"a":20512,"t":"byte","b":[6,0,32,248,224,56,248,32]},{"a":20520,"t":"byte","b":[7,0,196,200,16,32,76,140]},{"a":20528,"t":"byte","b":[7,0,96,144,64,168,144,228]},{"a":20536,"t":"byte","b":[3,0,128,128,128,0,0,0]},{"a":20544,"t":"byte","b":[3,0,64,128,128,128,128,64]},{"a":20552,"t":"byte","b":[3,0,128,64,64,64,64,128]},{"a":20560,"t":"byte","b":[8,0,68,40,254,40,68,0]},{"a":20568,"t":"byte","b":[6,0,32,32,248,32,32,0]},{"a":20576,"t":"byte","b":[19,0,0,0,0,64,64,128]},{"a":20584,"t":"byte","b":[4,0,0,0,0,224,0,0]},{"a":20592,"t":"byte","b":[3,0,0,0,0,0,0,192]},{"a":20600,"t":"byte","b":[4,0,32,32,64,64,128,128]},{"a":20608,"t":"byte","b":[5,0,96,144,144,144,144,96]},{"a":20616,"t":"byte","b":[4,0,64,192,64,64,64,224]},{"a":20624,"t":"byte","b":[5,0,96,144,16,64,128,240]},{"a":20632,"t":"byte","b":[5,0,96,144,32,16,144,96]},{"a":20640,"t":"byte","b":[6,0,48,80,144,248,16,16]},{"a":20648,"t":"byte","b":[5,0,240,128,224,16,144,96]},{"a":20656,"t":"byte","b":[5,0,96,144,128,224,144,96]},{"a":20664,"t":"byte","b":[5,0,240,144,16,32,64,64]},{"a":20672,"t":"byte","b":[5,0,96,144,96,144,144,96]},{"a":20680,"t":"byte","b":[5,0,96,144,112,16,144,96]},{"a":20688,"t":"byte","b":[2,0,0,128,0,128,0,0]},{"a":20696,"t":"byte","b":[19,0,0,64,0,64,64,128]},{"a":20704,"t":"byte","b":[4,0,0,32,64,128,64,32]},{"a":20712,"t":"byte","b":[4,0,0,0,224,0,224,0]},{"a":20720,"t":"byte","b":[4,0,0,128,64,32,64,128]},{"a":20728,"t":"byte","b":[6,0,112,136,16,32,0,32]},{"a":20736,"t":"byte","b":[6,0,112,136,184,184,128,112]},{"a":20744,"t":"byte","b":[6,0,112,136,136,248,136,136]},{"a":20752,"t":"byte","b":[6,0,240,136,176,136,136,240]},{"a":20760,"t":"byte","b":[6,0,112,136,128,128,136,112]},{"a":20768,"t":"byte","b":[6,0,240,152,136,136,152,240]},{"a":20776,"t":"byte","b":[6,0,248,128,224,128,128,248]},{"a":20784,"t":"byte","b":[6,0,248,128,224,128,128,128]},{"a":20792,"t":"byte","b":[6,0,112,136,128,184,136,120]},{"a":20800,"t":"byte","b":[6,0,136,136,248,136,136,136]},{"a":20808,"t":"byte","b":[4,0,224,64,64,64,64,224]},{"a":20816,"t":"byte","b":[6,0,248,16,16,144,144,96]},{"a":20824,"t":"byte","b":[6,0,136,144,224,144,136,136]},{"a":20832,"t":"byte","b":[5,0,128,128,128,128,128,240]},{"a":20840,"t":"byte","b":[8,0,198,170,146,130,130,130]},{"a":20848,"t":"byte","b":[6,0,136,200,232,184,152,136]},{"a":20856,"t":"byte","b":[6,0,112,136,136,136,136,112]},{"a":20864,"t":"byte","b":[6,0,240,136,136,240,128,128]},{"a":20872,"t":"byte","b":[22,112,136,136,136,136,112,12]},{"a":20880,"t":"byte","b":[6,0,240,136,136,240,144,136]},{"a":20888,"t":"byte","b":[6,0,112,136,64,16,136,112]},{"a":20896,"t":"byte","b":[6,0,248,32,32,32,32,32]},{"a":20904,"t":"byte","b":[6,0,136,136,136,136,136,112]},{"a":20912,"t":"byte","b":[6,0,136,136,136,136,80,32]},{"a":20920,"t":"byte","b":[8,0,130,130,130,146,146,108]},{"a":20928,"t":"byte","b":[7,0,132,72,48,48,72,132]},{"a":20936,"t":"byte","b":[6,0,136,136,112,32,32,32]},{"a":20944,"t":"byte","b":[7,0,252,8,16,32,64,252]},{"a":20952,"t":"byte","b":[4,0,224,128,128,128,128,224]},{"a":20960,"t":"byte","b":[4,0,128,128,64,64,32,32]},{"a":20968,"t":"byte","b":[4,0,224,32,32,32,32,224]},{"a":20976,"t":"byte","b":[6,0,32,80,136,0,0,0]},{"a":20984,"t":"byte","b":[8,0,0,0,255,0,0,0]},{"a":20992,"t":"byte","b":[15,0,0,0,0,0,0,0]},{"a":21000,"t":"byte","b":[5,0,0,0,112,240,144,240]},{"a":21008,"t":"byte","b":[5,0,128,128,240,144,144,240]},{"a":21016,"t":"byte","b":[5,0,0,0,240,128,128,240]},{"a":21024,"t":"byte","b":[5,0,16,16,240,144,144,240]},{"a":21032,"t":"byte","b":[5,0,0,0,240,240,128,240]},{"a":21040,"t":"byte","b":[4,0,112,64,224,64,64,64]},{"a":21048,"t":"byte","b":[37,0,240,144,144,240,16,240]},{"a":21056,"t":"byte","b":[5,0,128,128,240,144,144,144]},{"a":21064,"t":"byte","b":[2,0,128,0,128,128,128,128]},{"a":21072,"t":"byte","b":[19,64,0,64,64,64,64,192]},{"a":21080,"t":"byte","b":[5,0,128,128,144,160,224,144]},{"a":21088,"t":"byte","b":[2,0,128,128,128,128,128,128]},{"a":21096,"t":"byte","b":[8,0,0,0,254,146,146,146]},{"a":21104,"t":"byte","b":[5,0,0,0,240,144,144,144]},{"a":21112,"t":"byte","b":[5,0,0,0,240,144,144,240]},{"a":21120,"t":"byte","b":[37,0,240,144,144,240,128,128]},{"a":21128,"t":"byte","b":[37,0,240,144,144,240,16,24]},{"a":21136,"t":"byte","b":[4,0,0,0,224,128,128,128]},{"a":21144,"t":"byte","b":[4,0,0,0,224,128,32,224]},{"a":21152,"t":"byte","b":[4,0,0,64,224,64,64,64]},{"a":21160,"t":"byte","b":[5,0,0,0,144,144,144,240]},{"a":21168,"t":"byte","b":[5,0,0,0,144,144,240,96]},{"a":21176,"t":"byte","b":[8,0,0,0,130,146,186,198]},{"a":21184,"t":"byte","b":[5,0,0,0,144,96,96,144]},{"a":21192,"t":"byte","b":[37,0,144,144,144,240,16,240]},{"a":21200,"t":"byte","b":[6,0,0,0,248,16,64,248]},{"a":21208,"l":"act32_meal","c":"Activity 32 ($20), its entry in activity_table ($8E09): the eating part of a meal. It is the third activity of the script at $AA56 ($3C, $2B, $20, $37, $3B) that activity $4A sets up, and the handler at $308C switches to it ($30A0) when food_need is 2 or more and the food store $30B4 is full. Each pass increments meal_ticks, then switches on activity_phase through act32_phases: walk to place $25 ($30CD: 4 further right when bit 0 of the food slot $30B2 is set); show figure 3 (frame $15) on the ground floor; carry figure 2 (frame $07) by places $26, $27 and $28; body frame $22; then rounds of eating (meal_rounds): bites with body frames $48/$47 and the head's frames $18, then $08, $19, $08, $1A, figure 2 raised to him and back; every bite resets food_need. Then back by places $27, $26 and $24 carrying figure 2, body frame $21, figures 2 and 3 hidden, script_next. A pending request (request_pending) ends the eating early.","t":"code","b":[238,40,83],"m":"inc","o":"meal_ticks","oa":21288},{"a":21211,"t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":21214,"l":"act32_phases","c":"Activity 32's switch table (JSR $3F11 at $52DB, on activity_phase): 28 handler addresses minus one. Phase 0 $30CD (walk to place $25), 1 meal_wait_arrival, 2 meal_show_fig3, 3 meal_walk_26, 4 $293D (carry until he stops), 5 meal_walk_27, 6 $293D, 7 meal_walk_28, 8 $293D, 9 meal_at_place_28, 10 meal_begin_eating, 11 meal_hide_fig3, 12 meal_bite, 13 meal_bite_wait, 14 meal_chew, 15 meal_check, 16 meal_show_fig3, 17 meal_at_place_28, 18 meal_walk_27, 19 $293D, 20 meal_walk_26, 21 $293D, 22 meal_walk_24, 23 $293D, 24 meal_stand, 25 meal_hide_fig3, 26 meal_done, 27 script_next.","t":"word","b":[204,48,93,83,135,83,117,83],"d":[12492,21341,21383,21365]},{"a":21222,"t":"word","b":[60,41,109,83,60,41,113,83],"d":[10556,21357,10556,21361]},{"a":21230,"t":"word","b":[60,41,49,83,131,84,127,83],"d":[10556,21297,21635,21375]},{"a":21238,"t":"word","b":[60,84,122,84,227,83,180,83],"d":[21564,21626,21475,21428]},{"a":21246,"t":"word","b":[135,83,49,83,109,83,60,41],"d":[21383,21297,21357,10556]},{"a":21254,"t":"word","b":[117,83,60,41,105,83,60,41],"d":[21365,10556,21353,10556]},{"a":21262,"t":"word","b":[21,83,127,83,81,83,13,143],"d":[21269,21375,21329,36621]},{"a":21270,"l":"meal_stand","c":"Activity 32 phase 24, also activity 34's phase 2 (the dog's food, table at $280A): calls $255B (another range) with A = $21 and X = the person's facing ($039A), which moves the body to frame $21 over several passes and holds $2540 non-zero meanwhile; next phase once $2540 is 0.","t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":21272,"t":"code","b":[174,154,3],"m":"ldx","o":"fig_mirror","oa":922},{"a":21275,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":21278,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":21281,"t":"code","b":[208,3],"m":"bne","o":"r_5326","oa":21286},{"a":21283,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21286,"l":"r_5326","t":"code","b":[96],"m":"rts","x":[21281]},{"a":21287,"l":"meal_rounds","c":"Activity 32's rounds of eating left: set to a random 4-31 ($195E AND $1F, OR 4, so bit 2 is always set) by meal_begin_eating; meal_check takes one off every 16 passes and ends the eating at 0.","t":"byte","b":[0],"x":[21441,21446,21651]},{"a":21288,"l":"meal_ticks","c":"Activity 32's pass counter: incremented on every pass of the activity ($52D8) and never reset; its low bits pace meal_at_place_28 (every 8), meal_chew (a head frame every 8, bits 3-4 choosing it) and meal_check (every 16).","t":"byte","b":[0],"x":[21208,21320,21429,21507,21514,21542]},{"a":21289,"l":"meal_delay","c":"Activity 32's pause after a bite: set to 10 by meal_bite and counted down one a pass by meal_bite_wait.","t":"byte","b":[0],"x":[21589,21627]},{"a":21290,"l":"meal_carry","c":"Common tail of the meal's walk handlers: $2783 = 5, then on to $28F0 (another range), which gives figure 2 frame $07 (entry 5 of $2A4A) and $1394 = 7 (entry 5 of $2A5A), copies the person's place to it (copy_position), sets $0391 (the body's carrying frames) and moves to the next phase; the $293D phase that follows keeps figure 2 with him until he stops.","t":"code","b":[169,5],"m":"lda","o":"#$05","x":[21373]},{"a":21292,"t":"code","b":[141,131,39],"m":"sta","o":"carried_item","oa":10115},{"a":21295,"t":"code","b":[76,240,40],"m":"jmp","o":"pick_up_item","oa":10480},{"a":21298,"l":"meal_at_place_28","c":"Activity 32 phases 9 and 17, at place $28: body frame $22 (set through $1ADF); figure 2 gets frame $13 and is hidden ($03C6 = 0) unless it already has that frame; then waits until meal_ticks AND 7 is 0 before the next phase.","t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":21300,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":21302,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":21305,"t":"code","b":[169,19],"m":"lda","o":"#$13"},{"a":21307,"t":"code","b":[205,141,3],"m":"cmp","o":"fig_frame_prop_a","oa":909},{"a":21310,"t":"code","b":[240,8],"m":"beq","o":"b_5348","oa":21320},{"a":21312,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":21315,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21317,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":21320,"l":"b_5348","t":"code","b":[173,40,83],"m":"lda","o":"meal_ticks","oa":21288,"x":[21310]},{"a":21323,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":21325,"t":"code","b":[208,14],"m":"bne","o":"r_535D","oa":21341},{"a":21327,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21330,"l":"meal_done","c":"Activity 32 phase 26: hides figure 2 ($03C6 = 0) and clears $0391 (no more carrying frames); next phase, which is script_next.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21332,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":21335,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":21338,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21341,"l":"r_535D","t":"code","b":[96],"m":"rts","x":[21325,21345]},{"a":21342,"l":"meal_wait_arrival","c":"Activity 32 phase 1: waits until the person has stopped at place $25 ($03BC = 0), then next phase.","t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956},{"a":21345,"t":"code","b":[208,250],"m":"bne","o":"r_535D","oa":21341},{"a":21347,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21350,"l":"meal_walk_22","c":"Walk to place $22 carrying figure 2, built like the four handlers after it. Nothing refers to $5366: act32_phases does not list it and no other table, jump or branch to it was found (searched for $65 $53 and $66 $53).","t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":21352,"t":"code","b":[208,14],"m":"bne","o":"b_5378","oa":21368},{"a":21354,"l":"meal_walk_24","c":"Activity 32 phase 22: walk to place $24 (ground floor, X 48) carrying figure 2 (X = $24, then the shared code at $5378).","t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":21356,"t":"code","b":[208,10],"m":"bne","o":"b_5378","oa":21368},{"a":21358,"l":"meal_walk_27","c":"Activity 32 phases 5 and 18: walk to place $27 (ground floor, X 60) carrying figure 2.","t":"code","b":[162,39],"m":"ldx","o":"#$27"},{"a":21360,"t":"code","b":[208,6],"m":"bne","o":"b_5378","oa":21368},{"a":21362,"l":"meal_walk_28","c":"Activity 32 phase 7: walk to place $28 (ground floor, X 67), where he eats, carrying figure 2.","t":"code","b":[162,40],"m":"ldx","o":"#$28"},{"a":21364,"t":"code","b":[208,2],"m":"bne","o":"b_5378","oa":21368},{"a":21366,"l":"meal_walk_26","c":"Activity 32 phases 3 and 20: walk to place $26 (ground floor, X 54) carrying figure 2. $5378, shared by the five walk handlers, calls walk_to_place with the place in X, takes back its phase advance (DEC activity_phase) and goes on to meal_carry.","t":"code","b":[162,38],"m":"ldx","o":"#$26"},{"a":21368,"l":"b_5378","t":"code","b":[32,249,142],"m":"jsr","o":"walk_to_location","oa":36601,"x":[21352,21356,21360,21364]},{"a":21371,"t":"code","b":[198,76],"m":"dec","o":"activity_phase","oa":76},{"a":21373,"t":"code","b":[76,42,83],"m":"jmp","o":"meal_carry","oa":21290},{"a":21376,"l":"meal_hide_fig3","c":"Activity 32 phases 11 and 25, also activity 29's phase 17 (the drink of water, table at $37EA): hides figure 3 ($03C7 = 0), next phase.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21378,"t":"code","b":[141,199,3],"m":"sta","o":"fig_flags_prop_b","oa":967},{"a":21381,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21384,"l":"meal_show_fig3","c":"Activity 32 phases 2 and 16, also activity 29's phase 2 (the drink of water, table at $37EA): shows figure 3 with frame $15 ($038E) at X $80 ($03AA, high bit $03AE = 0), floor Y $E5 (the ground floor, $03B2), depth 9 ($03B6), facing 0 ($039D), flags $83 ($03C7); also $1395 = 1 and $0395 = $FF; next phase.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":21386,"t":"code","b":[141,149,19],"m":"sta","o":"colour_figure3","oa":5013},{"a":21389,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":21391,"t":"code","b":[141,170,3],"m":"sta","o":"fig_x_prop_b","oa":938},{"a":21394,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":21396,"t":"code","b":[142,174,3],"m":"stx","o":"fig_x_hi_prop_b","oa":942},{"a":21399,"t":"code","b":[142,157,3],"m":"stx","o":"fig_mirror_prop_b","oa":925},{"a":21402,"t":"code","b":[202],"m":"dex"},{"a":21403,"t":"code","b":[142,149,3],"m":"stx","o":"prop_b_multicolour","oa":917},{"a":21406,"t":"code","b":[169,229],"m":"lda","o":"#$E5"},{"a":21408,"t":"code","b":[141,178,3],"m":"sta","o":"fig_floor_y_prop_b","oa":946},{"a":21411,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":21413,"t":"code","b":[141,182,3],"m":"sta","o":"fig_depth_prop_b","oa":950},{"a":21416,"t":"code","b":[169,21],"m":"lda","o":"#$15"},{"a":21418,"t":"code","b":[141,142,3],"m":"sta","o":"fig_frame_prop_b","oa":910},{"a":21421,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":21423,"t":"code","b":[141,199,3],"m":"sta","o":"fig_flags_prop_b","oa":967},{"a":21426,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21429,"l":"meal_check","c":"Activity 32 phase 15, acting every 16 passes (meal_ticks AND 15 = 0): when a request is pending (request_pending) or meal_rounds is 0, sets $3579 = $FF, lets the head move again ($ACF1 = 0) and moves on to the walk back; otherwise takes one off meal_rounds and, when a random number AND 15 is below 7, goes back to phase 12 (meal_bite) for another bite, else waits another 16 passes.","t":"code","b":[173,40,83],"m":"lda","o":"meal_ticks","oa":21288},{"a":21432,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":21434,"t":"code","b":[208,26],"m":"bne","o":"r_53D6","oa":21462},{"a":21436,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":21439,"t":"code","b":[208,22],"m":"bne","o":"b_53D7","oa":21463},{"a":21441,"t":"code","b":[173,39,83],"m":"lda","o":"meal_rounds","oa":21287},{"a":21444,"t":"code","b":[240,17],"m":"beq","o":"b_53D7","oa":21463},{"a":21446,"t":"code","b":[206,39,83],"m":"dec","o":"meal_rounds","oa":21287},{"a":21449,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":21452,"t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":21454,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":21456,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":21458,"t":"code","b":[176,2],"m":"bcs","o":"r_53D6","oa":21462},{"a":21460,"t":"code","b":[134,76],"m":"stx","o":"activity_phase","oa":76},{"a":21462,"l":"r_53D6","t":"code","b":[96],"m":"rts","x":[21434,21458,21512]},{"a":21463,"l":"b_53D7","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[21439,21444]},{"a":21465,"t":"code","b":[141,121,53],"m":"sta","o":"snd_req_25","oa":13689},{"a":21468,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21470,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":21473,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21476,"l":"meal_chew","c":"Activity 32 phase 14, after a bite: puts figure 2 back at the person's floor Y (flags $81 when it moves) and the body back to frame $47 (flags $82); every 8 passes gives the head the frame from meal_head_frames chosen by bits 3-4 of meal_ticks. At the start of each 32-pass cycle it moves on to meal_check with a chance of 2 in 8 (always when meal_ticks is 0); otherwise it keeps chewing.","t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":21479,"t":"code","b":[205,177,3],"m":"cmp","o":"fig_floor_y_prop_a","oa":945},{"a":21482,"t":"code","b":[240,8],"m":"beq","o":"b_53F4","oa":21492},{"a":21484,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":21487,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":21489,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":21492,"l":"b_53F4","t":"code","b":[169,71],"m":"lda","o":"#$47","x":[21482]},{"a":21494,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":21497,"t":"code","b":[240,8],"m":"beq","o":"b_5403","oa":21507},{"a":21499,"t":"code","b":[141,139,3],"m":"sta","o":"fig_frame","oa":907},{"a":21502,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":21504,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":21507,"l":"b_5403","t":"code","b":[173,40,83],"m":"lda","o":"meal_ticks","oa":21288,"x":[21497]},{"a":21510,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":21512,"t":"code","b":[208,204],"m":"bne","o":"r_53D6","oa":21462},{"a":21514,"t":"code","b":[173,40,83],"m":"lda","o":"meal_ticks","oa":21288},{"a":21517,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":21518,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":21519,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":21520,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":21522,"t":"code","b":[170],"m":"tax"},{"a":21523,"t":"code","b":[189,57,84],"m":"lda","o":"meal_head_frames,x","oa":21561},{"a":21526,"t":"code","b":[205,143,3],"m":"cmp","o":"fig_frame_head","oa":911},{"a":21529,"t":"code","b":[240,8],"m":"beq","o":"b_5423","oa":21539},{"a":21531,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":21534,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":21536,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":21539,"l":"b_5423","t":"code","b":[138],"m":"txa","x":[21529]},{"a":21540,"t":"code","b":[208,18],"m":"bne","o":"r_5438","oa":21560},{"a":21542,"t":"code","b":[173,40,83],"m":"lda","o":"meal_ticks","oa":21288},{"a":21545,"t":"code","b":[240,10],"m":"beq","o":"b_5435","oa":21557},{"a":21547,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":21550,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":21552,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":21554,"t":"code","b":[176,1],"m":"bcs","o":"b_5435","oa":21557},{"a":21556,"t":"code","b":[96],"m":"rts"},{"a":21557,"l":"b_5435","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[21545,21554]},{"a":21560,"l":"r_5438","t":"code","b":[96],"m":"rts","x":[21540]},{"a":21561,"l":"meal_head_frames","c":"The head's frames while chewing, indexed by bits 3-4 of meal_ticks (meal_chew): $08, $19, $08, $1A.","t":"byte","b":[8,25,8,26],"x":[21523]},{"a":21565,"l":"meal_bite","c":"Activity 32 phase 12, a bite: sets $3578 = $FF, clears letter_done ($54E2) and food_need ($0371), reloads food_timer from food_period, calls $392F (reloads act4_countdown if it is 0; clears illness_worsening when both needs are below 3), sets meal_delay to 10, body frame $48 and head frame $18 (flags $82), raises figure 2 to four lines above the person's floor Y (flags $81), next phase.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":21567,"t":"code","b":[141,120,53],"m":"sta","o":"snd_req_24","oa":13688},{"a":21570,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21572,"t":"code","b":[141,226,84],"m":"sta","o":"letter_done","oa":21730},{"a":21575,"t":"code","b":[141,113,3],"m":"sta","o":"food_need","oa":881},{"a":21578,"t":"code","b":[173,114,3],"m":"lda","o":"food_period","oa":882},{"a":21581,"t":"code","b":[141,115,3],"m":"sta","o":"food_timer","oa":883},{"a":21584,"t":"code","b":[32,47,57],"m":"jsr","o":"needs_check","oa":14639},{"a":21587,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":21589,"t":"code","b":[141,41,83],"m":"sta","o":"meal_delay","oa":21289},{"a":21592,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":21594,"t":"code","b":[141,139,3],"m":"sta","o":"fig_frame","oa":907},{"a":21597,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":21599,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":21602,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":21604,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":21607,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":21610,"t":"code","b":[169,129],"m":"lda","o":"#$81"},{"a":21612,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":21615,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":21618,"t":"code","b":[56],"m":"sec"},{"a":21619,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":21621,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":21624,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21627,"l":"meal_bite_wait","c":"Activity 32 phase 13: counts meal_delay down, one a pass, and moves on when it reaches 0.","t":"code","b":[206,41,83],"m":"dec","o":"meal_delay","oa":21289},{"a":21630,"t":"code","b":[208,3],"m":"bne","o":"r_5483","oa":21635},{"a":21632,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21635,"l":"r_5483","t":"code","b":[96],"m":"rts","x":[21630]},{"a":21636,"l":"meal_begin_eating","c":"Activity 32 phase 10, the eating begins: facing from bit 7 of person_facing_bit ($034A into $039A), meal_rounds = random 4-31, $03AD, $0398 and $037C cleared, $0394 and $ACF1 = $FF (the head's turning off), body frame $47, head frame $08, figure 2 frame $14 put on the person (his X and floor Y, depth one less), flags $83 for figure 2 and the body and $82 for the head, $1394 = 7; next phase.","t":"code","b":[173,74,3],"m":"lda","o":"person_facing_bit","oa":842},{"a":21639,"t":"code","b":[41,128],"m":"and","o":"#$80"},{"a":21641,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":21644,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":21647,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":21649,"t":"code","b":[9,4],"m":"ora","o":"#$04"},{"a":21651,"t":"code","b":[141,39,83],"m":"sta","o":"meal_rounds","oa":21287},{"a":21654,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":21656,"t":"code","b":[142,173,3],"m":"stx","o":"fig_x_hi_prop_a","oa":941},{"a":21659,"t":"code","b":[142,152,3],"m":"stx","o":"prop_behind_bg","oa":920},{"a":21662,"t":"code","b":[142,124,3],"m":"stx","o":"head_turn_timer","oa":892},{"a":21665,"t":"code","b":[202],"m":"dex"},{"a":21666,"t":"code","b":[142,148,3],"m":"stx","o":"prop_multicolour","oa":916},{"a":21669,"t":"code","b":[142,241,172],"m":"stx","o":"pose_change_busy","oa":44273},{"a":21672,"t":"code","b":[169,71],"m":"lda","o":"#$47"},{"a":21674,"t":"code","b":[141,139,3],"m":"sta","o":"fig_frame","oa":907},{"a":21677,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":21679,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":21682,"t":"code","b":[169,20],"m":"lda","o":"#$14"},{"a":21684,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":21687,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":21689,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":21692,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":21695,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":21697,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":21700,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":21703,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":21706,"t":"code","b":[174,179,3],"m":"ldx","o":"fig_depth","oa":947},{"a":21709,"t":"code","b":[202],"m":"dex"},{"a":21710,"t":"code","b":[142,181,3],"m":"stx","o":"fig_depth_prop_a","oa":949},{"a":21713,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":21716,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":21719,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":21721,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":21724,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21727,"l":"letter_typing","c":"Non-zero while the person types a letter: set to $FF by letter_type ($5728) for each character, cleared when the text band is cleared ($BAD6). While it is set, print_queued ends the line at the next space or '-' once the print position is past 255 (text_cursor_x_hi set), printing a new line instead of that character and calling letter_wrap ($BAA6); and the line editor ($3736) ignores the player's keys.","t":"byte","b":[0],"x":[14134,22312,47760,47777,47830]},{"a":21728,"l":"letter_lines","c":"Lines of the letter typed so far, 1-8: 1 at letter_begin, raised by letter_count_line (at most 8); draw_typewriter shows that many pixel rows of paper above the typewriter.","t":"byte","b":[0],"x":[21939,22342,22345,22354,22414]},{"a":21729,"l":"carriage_pos","c":"The typewriter carriage position draw_typewriter last drew, 0-8 (text_cursor_x / 32, at most 8); it redraws only when this changes.","t":"byte","b":[85],"x":[22375,22378]},{"a":21730,"l":"letter_done","c":"1 once a letter has been begun (letter_begin, $55B6); while it is set, activity 22 ends at once (letter_check), so he types no second letter. Cleared by every bite of a meal (meal_bite, $5444) and by the drink at $38C2: after eating or drinking he can write again.","t":"byte","b":[0],"x":[14530,21572,21794,21942]},{"a":21731,"l":"act22_letter","c":"Activity 22 ($16), its entry in activity_table: the person types a letter to the player, as asked with \"type a letter\" (the parser rules at $CA1A and $CA2A give action $16). Switches on activity_phase through act22_phases: stops at once if letter_done; if a record is playing, walks to it (place 1) and stops it ($924D-$926E); walks to the typewriter on the top floor (places 7 and 8), puts figure 2 (frame $11) beside it at X $E2, goes to place $0A, moves figure 2 to X $E7, goes to place 9 at the typewriter with his sprites behind the picture; then letter_begin, letter_compose and letter_type type the letter into the text band while the paper rises out of the typewriter; then clears the paper and goes back the same way, hiding figure 2, and script_next. A request pending as he arrives skips the typing.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":21734,"l":"act22_phases","c":"Activity 22's switch table (JSR $3F11 at $54E3, on activity_phase): 30 handler addresses minus one. 0 letter_check, 1 $924D (to phase 7 when no record plays), 2 set_target_1, 3 $2F0A, 4 $928D, 5 $9297, 6 $926E (record off), 7 letter_walk_07, 8 wait_or_request, 9 letter_walk_08, 10 wait_or_request, 11 letter_fig2_e2, 12 letter_walk_0a, 13 letter_wait_sit, 14 letter_fig2_e7, 15 letter_walk_09, 16 letter_wait_sit, 17 letter_begin, 18 letter_compose, 19 letter_type, 20 letter_clear_paper, 21 letter_walk_0a, 22 letter_wait, 23 letter_fig2_e2, 24 letter_walk_08, 25 letter_wait, 26 letter_hide_fig2, 27 letter_walk_07, 28 letter_wait, 29 script_next.","t":"word","b":[33,85,76,146,233,142,9,47],"d":[21793,37452,36585,12041]},{"a":21742,"t":"word","b":[140,146,150,146,109,146,51,85],"d":[37516,37526,37485,21811]},{"a":21750,"t":"word","b":[166,143,56,85,166,143,94,85],"d":[36774,21816,36774,21854]},{"a":21758,"t":"word","b":[42,85,65,85,90,85,83,85],"d":[21802,21825,21850,21843]},{"a":21766,"t":"word","b":[65,85,163,85,195,85,226,86],"d":[21825,21923,21955,22242]},{"a":21774,"t":"word","b":[25,88,42,85,75,85,94,85],"d":[22553,21802,21835,21854]},{"a":21782,"t":"word","b":[56,85,75,85,141,85,51,85],"d":[21816,21835,21901,21811]},{"a":21790,"t":"word","b":[75,85,13,143],"d":[21835,36621]},{"a":21794,"l":"letter_check","c":"Activity 22 phase 0: if letter_done is set, jumps to the last phase (activity_phase = $1D, script_next), so no second letter is typed; otherwise next phase.","t":"code","b":[173,226,84],"m":"lda","o":"letter_done","oa":21730},{"a":21797,"t":"code","b":[240,42],"m":"beq","o":"b_5551","oa":21841},{"a":21799,"t":"code","b":[169,29],"m":"lda","o":"#$1D"},{"a":21801,"t":"code","b":[208,30],"m":"bne","o":"b_5549","oa":21833},{"a":21803,"l":"letter_walk_0a","c":"Activity 22 phases 12 and 21: $ACF2 = 2 (steers the head, read at $ADDB), then walk to place $0A (top floor, X 113).","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":21805,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":21808,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":21810,"t":"code","b":[208,2],"m":"bne","o":"b_5536","oa":21814},{"a":21812,"l":"letter_walk_07","c":"Activity 22 phases 7 and 27: walk to place 7 (top floor, X 96), near the typewriter. Its JMP walk_to_place at $5536 is shared by the other walk handlers here and by computer_walk.","t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":21814,"l":"b_5536","t":"code","b":[76,249,142],"m":"jmp","o":"walk_to_location","oa":36601,"x":[21810,21824,21849,22580]},{"a":21817,"l":"letter_walk_08","c":"Activity 22 phases 9 and 24: $0396 = 0 (the person's sprites in front of the picture again), then walk to place 8 (top floor, X 106).","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":21819,"t":"code","b":[142,150,3],"m":"stx","o":"fig_behind_bg","oa":918},{"a":21822,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":21824,"t":"code","b":[208,244],"m":"bne","o":"b_5536","oa":21814},{"a":21826,"l":"letter_wait_sit","c":"Activity 22 phases 13 and 16: when a request is pending (request_pending) jumps to phase 20 (clear the paper and leave, no letter); otherwise waits until the person stops ($03BC = 0) and moves on.","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":21829,"t":"code","b":[240,5],"m":"beq","o":"letter_wait","oa":21836},{"a":21831,"t":"code","b":[169,20],"m":"lda","o":"#$14"},{"a":21833,"l":"b_5549","t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76,"x":[21801]},{"a":21835,"l":"r_554B","t":"code","b":[96],"m":"rts","x":[21839]},{"a":21836,"l":"letter_wait","c":"Activity 22 phases 22, 25 and 28: waits until the person stops ($03BC = 0), then next phase.","t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956,"x":[21829]},{"a":21839,"t":"code","b":[208,250],"m":"bne","o":"r_554B","oa":21835},{"a":21841,"l":"b_5551","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[21797]},{"a":21844,"l":"letter_walk_09","c":"Activity 22 phase 15: $0396 = 9, which puts the person's sprites behind the picture (read at $11E3 into the priority shadow $0D5D), then walk to place 9 (top floor, X 118), at the typewriter.","t":"code","b":[162,9],"m":"ldx","o":"#$09"},{"a":21846,"t":"code","b":[142,150,3],"m":"stx","o":"fig_behind_bg","oa":918},{"a":21849,"t":"code","b":[208,219],"m":"bne","o":"b_5536","oa":21814},{"a":21851,"l":"letter_fig2_e7","c":"Activity 22 phase 14: moves figure 2 to X $E7 (letter_fig2_e2's code with that X).","t":"code","b":[169,231],"m":"lda","o":"#$E7"},{"a":21853,"t":"code","b":[208,2],"m":"bne","o":"b_5561","oa":21857},{"a":21855,"l":"letter_fig2_e2","c":"Activity 22 phases 11 and 23: puts figure 2 at X $E2 ($03A9), floor Y $63 (the top floor, $03B1), depth 8 ($03B5), frame $11, facing 0 ($039C), $03AD = 0, $0398 = $63, $1394 = $0F, flags $83 and $0394 = $83: an object by the typewriter (not identified), which phase 14 moves to X $E7.","t":"code","b":[169,226],"m":"lda","o":"#$E2"},{"a":21857,"l":"b_5561","t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937,"x":[21853]},{"a":21860,"t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":21862,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":21865,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21867,"t":"code","b":[141,156,3],"m":"sta","o":"fig_mirror_prop_a","oa":924},{"a":21870,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":21873,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":21875,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":21878,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":21880,"t":"code","b":[141,181,3],"m":"sta","o":"fig_depth_prop_a","oa":949},{"a":21883,"t":"code","b":[169,99],"m":"lda","o":"#$63"},{"a":21885,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":21888,"t":"code","b":[141,152,3],"m":"sta","o":"prop_behind_bg","oa":920},{"a":21891,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":21893,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":21896,"t":"code","b":[141,148,3],"m":"sta","o":"prop_multicolour","oa":916},{"a":21899,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21902,"l":"letter_hide_fig2","c":"Activity 22 phase 26, also activity 91's phase 2 (table at $ABE4): hides figure 2 ($03C6 = 0, $0398 = 0), next phase.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21904,"t":"code","b":[141,152,3],"m":"sta","o":"prop_behind_bg","oa":920},{"a":21907,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":21910,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21913,"l":"letter_next_char","c":"Returns in A the next character of the letter, at letter_ptr ($66/$67), and advances letter_ptr.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[22291]},{"a":21915,"t":"code","b":[177,102],"m":"lda","o":"(letter_ptr),y","oa":102},{"a":21917,"t":"code","b":[230,102],"m":"inc","o":"letter_ptr","oa":102},{"a":21919,"t":"code","b":[208,2],"m":"bne","o":"r_55A3","oa":21923},{"a":21921,"t":"code","b":[230,103],"m":"inc","o":"letter_ptr_hi","oa":103},{"a":21923,"l":"r_55A3","t":"code","b":[96],"m":"rts","x":[21919]},{"a":21924,"l":"letter_begin","c":"Activity 22 phase 17: $ACF2 = $A2 (the head's turn), letter_ptr = $7F40 (the letter buffer), letter_lines = 1, letter_done = 1, opens the text band ($BA3A), body frame $2D (set_person_frame), next phase.","t":"code","b":[169,162],"m":"lda","o":"#$A2"},{"a":21926,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":21929,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":21931,"t":"code","b":[133,102],"m":"sta","o":"letter_ptr","oa":102},{"a":21933,"t":"code","b":[169,127],"m":"lda","o":"#$7F"},{"a":21935,"t":"code","b":[133,103],"m":"sta","o":"letter_ptr_hi","oa":103},{"a":21937,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":21939,"t":"code","b":[141,224,84],"m":"sta","o":"letter_lines","oa":21728},{"a":21942,"t":"code","b":[141,226,84],"m":"sta","o":"letter_done","oa":21730},{"a":21945,"t":"code","b":[32,58,186],"m":"jsr","o":"text_band_open","oa":47674},{"a":21948,"t":"code","b":[169,45],"m":"lda","o":"#$2D"},{"a":21950,"t":"code","b":[32,32,88],"m":"jsr","o":"set_person_frame","oa":22560},{"a":21953,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21956,"l":"letter_compose","c":"Activity 22 phase 18: builds the letter in the buffer at $7F40 (the record driver's work area, free once the record is off): txt_letter_dear; then txt_letter_thanks when both $30B4 (the food store, four bits; CTRL F asks for a delivery unless it is full, $2B54) and $2B51 (the water tank; CTRL W adds one, up to 11, $2C87) are non-zero, otherwise txt_letter_complaint; then txt_letter_signoff and $FF. The complaint letter is 158 characters and runs over sid_shadow ($7FCD-$7FDE), which music_start rewrites before the next record.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":21958,"t":"code","b":[141,236,85],"m":"sta","o":"letter_write_index","oa":21996},{"a":21961,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":21963,"t":"code","b":[32,237,85],"m":"jsr","o":"letter_copy_piece","oa":21997},{"a":21966,"t":"code","b":[162,118],"m":"ldx","o":"#$76"},{"a":21968,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":21971,"t":"code","b":[240,7],"m":"beq","o":"b_55DC","oa":21980},{"a":21973,"t":"code","b":[173,81,43],"m":"lda","o":"water_level","oa":11089},{"a":21976,"t":"code","b":[240,2],"m":"beq","o":"b_55DC","oa":21980},{"a":21978,"t":"code","b":[162,58],"m":"ldx","o":"#$3A"},{"a":21980,"l":"b_55DC","t":"code","b":[32,237,85],"m":"jsr","o":"letter_copy_piece","oa":21997,"x":[21971,21976]},{"a":21983,"t":"code","b":[162,16],"m":"ldx","o":"#$10"},{"a":21985,"t":"code","b":[32,237,85],"m":"jsr","o":"letter_copy_piece","oa":21997},{"a":21988,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":21990,"t":"code","b":[153,64,127],"m":"sta","o":"music_read_ofs,y","oa":32576},{"a":21993,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":21996,"l":"letter_write_index","c":"letter_compose's write index into the buffer at $7F40: 0 at the start, advanced by letter_copy_piece.","t":"byte","b":[0],"x":[21958,21997,22012]},{"a":21997,"l":"letter_copy_piece","c":"Copies the letter piece at $5600 + X, up to its byte with bit 7 set, to $7F40 + letter_write_index, and advances the index.","t":"code","b":[172,236,85],"m":"ldy","o":"letter_write_index","oa":21996,"x":[21963,21980,21985]},{"a":22000,"l":"b_55F0","t":"code","b":[189,0,86],"m":"lda","o":"txt_letter_dear,x","oa":22016,"x":[22010]},{"a":22003,"t":"code","b":[48,7],"m":"bmi","o":"b_55FC","oa":22012},{"a":22005,"t":"code","b":[153,64,127],"m":"sta","o":"music_read_ofs,y","oa":32576},{"a":22008,"t":"code","b":[232],"m":"inx"},{"a":22009,"t":"code","b":[200],"m":"iny"},{"a":22010,"t":"code","b":[208,244],"m":"bne","o":"b_55F0","oa":22000},{"a":22012,"l":"b_55FC","t":"code","b":[140,236,85],"m":"sty","o":"letter_write_index","oa":21996,"x":[22003]},{"a":22015,"t":"code","b":[96],"m":"rts"},{"a":22016,"l":"txt_letter_dear","c":"Letter text, ASCII, $0D for a new line, $FF at the end: \"Dear Friend,\", return, two spaces","t":"byte","b":[68,101,97,114,32,70,114,105],"x":[22000]},{"a":22024,"t":"byte","b":[101,110,100,44,13,32,32,255]},{"a":22032,"l":"txt_letter_signoff","c":"Letter text, ASCII, $0D for a new line, $FF at the end: \"Thank You,\" and \"Your Friend\", each indented eight spaces","t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":22040,"t":"byte","b":[84,104,97,110,107,32,89,111]},{"a":22048,"t":"byte","b":[117,44,13,32,32,32,32,32]},{"a":22056,"t":"byte","b":[32,32,32,89,111,117,114,32]},{"a":22064,"t":"byte","b":[70,114,105,101,110,100,32,32]},{"a":22072,"t":"byte","b":[32,255]},{"a":22074,"l":"txt_letter_thanks","c":"Letter text, ASCII, $0D for a new line, $FF at the end: \"Thank you for keeping me well stocked with food and water.\"","t":"byte","b":[84,104,97,110,107,32,121,111]},{"a":22082,"t":"byte","b":[117,32,102,111,114,32,107,101]},{"a":22090,"t":"byte","b":[101,112,105,110,103,32,109,101]},{"a":22098,"t":"byte","b":[32,119,101,108,108,32,115,116]},{"a":22106,"t":"byte","b":[111,99,107,101,100,32,119,105]},{"a":22114,"t":"byte","b":[116,104,32,102,111,111,100,32]},{"a":22122,"t":"byte","b":[97,110,100,32,119,97,116,101]},{"a":22130,"t":"byte","b":[114,46,13,255]},{"a":22134,"l":"txt_letter_complaint","c":"Letter text, ASCII, $0D for a new line, $FF at the end: \"Please notice that my supplies are running low.  I can't stay happy and healthy without your support.\"","t":"byte","b":[80,108,101,97,115,101,32,110]},{"a":22142,"t":"byte","b":[111,116,105,99,101,32,116,104]},{"a":22150,"t":"byte","b":[97,116,32,109,121,32,115,117]},{"a":22158,"t":"byte","b":[112,112,108,105,101,115,32,97]},{"a":22166,"t":"byte","b":[114,101,32,114,117,110,110,105]},{"a":22174,"t":"byte","b":[110,103,32,108,111,119,46,32]},{"a":22182,"t":"byte","b":[32,73,32,99,97,110,39,116]},{"a":22190,"t":"byte","b":[32,115,116,97,121,32,104,97]},{"a":22198,"t":"byte","b":[112,112,121,32,97,110,100,32]},{"a":22206,"t":"byte","b":[104,101,97,108,116,104,121,32]},{"a":22214,"t":"byte","b":[119,105,116,104,111,117,116,32]},{"a":22222,"t":"byte","b":[121,111,117,114,32,115,117,112]},{"a":22230,"t":"byte","b":[112,111,114,116,46,13,255]},{"a":22237,"l":"letter_key_delay","c":"Passes to wait before the next character of the letter: 2 or 3 at random after each one ($573D), counted down by letter_type; it also indexes letter_type_frames.","t":"byte","b":[3],"x":[22255,22280,22285,22333]},{"a":22238,"l":"letter_last_frame","c":"The body frame letter_type set last, so that it calls set_person_frame only when the frame changes ($55 in the load image).","t":"byte","b":[85],"x":[22261,22264]},{"a":22239,"l":"letter_type_frames","c":"The body frames while typing, by letter_key_delay: 0 $2B (the pass a key is struck), 1 $2C, 2 $2D, 3 $2C.","t":"byte","b":[43,44,45,44],"x":[22258]},{"a":22243,"l":"letter_type","c":"Activity 22 phase 19, once a pass: draw_typewriter; returns while $BA36 or $BA37 is non-zero (text-band work print_queued still has to do, see $BAC8); sets the body frame from letter_type_frames and, when it changes, $039A to bit 3 of rng_value; counts letter_key_delay down; at 0 takes the next character (letter_next_char): $FF ends the phase; $0D also counts a line (letter_count_line); the character goes to the output queue (queue_char) with letter_typing set, a printable one also setting $355D (one-shot sound $0A, the one the line editor uses for keys); letter_key_delay is then 2 or 3.","t":"code","b":[32,86,87],"m":"jsr","o":"draw_typewriter","oa":22358},{"a":22246,"t":"code","b":[173,55,186],"m":"lda","o":"text_return_left","oa":47671},{"a":22249,"t":"code","b":[13,54,186],"m":"ora","o":"text_scroll_left","oa":47670},{"a":22252,"t":"code","b":[240,1],"m":"beq","o":"b_56EF","oa":22255},{"a":22254,"t":"code","b":[96],"m":"rts"},{"a":22255,"l":"b_56EF","t":"code","b":[174,221,86],"m":"ldx","o":"letter_key_delay","oa":22237,"x":[22252]},{"a":22258,"t":"code","b":[189,223,86],"m":"lda","o":"letter_type_frames,x","oa":22239},{"a":22261,"t":"code","b":[205,222,86],"m":"cmp","o":"letter_last_frame","oa":22238},{"a":22264,"t":"code","b":[141,222,86],"m":"sta","o":"letter_last_frame","oa":22238},{"a":22267,"t":"code","b":[240,11],"m":"beq","o":"b_5708","oa":22280},{"a":22269,"t":"code","b":[32,32,88],"m":"jsr","o":"set_person_frame","oa":22560},{"a":22272,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":22275,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":22277,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":22280,"l":"b_5708","t":"code","b":[173,221,86],"m":"lda","o":"letter_key_delay","oa":22237,"x":[22267]},{"a":22283,"t":"code","b":[240,6],"m":"beq","o":"b_5713","oa":22291},{"a":22285,"t":"code","b":[206,221,86],"m":"dec","o":"letter_key_delay","oa":22237},{"a":22288,"t":"code","b":[76,64,87],"m":"jmp","o":"r_5740","oa":22336},{"a":22291,"l":"b_5713","t":"code","b":[32,153,85],"m":"jsr","o":"letter_next_char","oa":21913,"x":[22283]},{"a":22294,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":22296,"t":"code","b":[16,3],"m":"bpl","o":"b_571D","oa":22301},{"a":22298,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":22301,"l":"b_571D","t":"code","b":[201,13],"m":"cmp","o":"#$0D","x":[22296]},{"a":22303,"t":"code","b":[208,5],"m":"bne","o":"b_5726","oa":22310},{"a":22305,"t":"code","b":[32,70,87],"m":"jsr","o":"letter_count_line","oa":22342},{"a":22308,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":22310,"l":"b_5726","t":"code","b":[160,255],"m":"ldy","o":"#$FF","x":[22303]},{"a":22312,"t":"code","b":[140,223,84],"m":"sty","o":"letter_typing","oa":21727},{"a":22315,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":22317,"t":"code","b":[144,3],"m":"bcc","o":"b_5732","oa":22322},{"a":22319,"t":"code","b":[140,93,53],"m":"sty","o":"snd_key_click","oa":13661},{"a":22322,"l":"b_5732","t":"code","b":[32,80,186],"m":"jsr","o":"queue_char","oa":47696,"x":[22317]},{"a":22325,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":22328,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":22330,"t":"code","b":[24],"m":"clc"},{"a":22331,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":22333,"t":"code","b":[141,221,86],"m":"sta","o":"letter_key_delay","oa":22237},{"a":22336,"l":"r_5740","t":"code","b":[96],"m":"rts","x":[22288]},{"a":22337,"l":"letter_wrap","c":"Called by print_queued ($BAA6) when it breaks a line of the letter: sets $355C (one-shot sound $0B) and falls into letter_count_line.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[47782]},{"a":22339,"t":"code","b":[141,92,53],"m":"sta","o":"snd_oneshot_0b","oa":13660},{"a":22342,"l":"letter_count_line","c":"Adds one to letter_lines, at most 8. Called for each $0D in the letter text and through letter_wrap.","t":"code","b":[238,224,84],"m":"inc","o":"letter_lines","oa":21728,"x":[22305]},{"a":22345,"t":"code","b":[173,224,84],"m":"lda","o":"letter_lines","oa":21728},{"a":22348,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":22350,"t":"code","b":[144,5],"m":"bcc","o":"r_5755","oa":22357},{"a":22352,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":22354,"t":"code","b":[141,224,84],"m":"sta","o":"letter_lines","oa":21728},{"a":22357,"l":"r_5755","t":"code","b":[96],"m":"rts","x":[22350]},{"a":22358,"l":"draw_typewriter","c":"Draws the typewriter's moving parts into the house bitmap. The carriage position is text_cursor_x / 32 (at most 8); when it differs from carriage_pos it redraws the top two pixel rows of bitmap row 6, columns 26-29 ($6850-$686F, the carriage) from carriage_cell26-29, and row 5, columns 26-29 ($6710-$672F, the paper) from paper_cell26-29, with only the bottom letter_lines pixel rows filled.","t":"code","b":[165,141],"m":"lda","o":"text_cursor_x_hi","oa":141,"x":[22243]},{"a":22360,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":22361,"t":"code","b":[165,140],"m":"lda","o":"text_cursor_x","oa":140},{"a":22363,"t":"code","b":[106],"m":"ror","o":"a"},{"a":22364,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":22365,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":22366,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":22367,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":22368,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":22370,"t":"code","b":[144,2],"m":"bcc","o":"b_5766","oa":22374},{"a":22372,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":22374,"l":"b_5766","t":"code","b":[170],"m":"tax","x":[22370]},{"a":22375,"t":"code","b":[205,225,84],"m":"cmp","o":"carriage_pos","oa":21729},{"a":22378,"t":"code","b":[141,225,84],"m":"sta","o":"carriage_pos","oa":21729},{"a":22381,"t":"code","b":[240,83],"m":"beq","o":"r_57C2","oa":22466},{"a":22383,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":22385,"l":"b_5771","t":"code","b":[189,215,87],"m":"lda","o":"carriage_cell26,x","oa":22487,"x":[22410]},{"a":22388,"t":"code","b":[153,80,104],"m":"sta","o":"paper_row6_c26,y","oa":26704},{"a":22391,"t":"code","b":[189,219,87],"m":"lda","o":"carriage_cell27,x","oa":22491},{"a":22394,"t":"code","b":[153,88,104],"m":"sta","o":"paper_row6_c27,y","oa":26712},{"a":22397,"t":"code","b":[189,223,87],"m":"lda","o":"carriage_cell28,x","oa":22495},{"a":22400,"t":"code","b":[153,96,104],"m":"sta","o":"paper_row6_c28,y","oa":26720},{"a":22403,"t":"code","b":[189,227,87],"m":"lda","o":"carriage_cell29,x","oa":22499},{"a":22406,"t":"code","b":[153,104,104],"m":"sta","o":"paper_row6_c29,y","oa":26728},{"a":22409,"t":"code","b":[136],"m":"dey"},{"a":22410,"t":"code","b":[16,229],"m":"bpl","o":"b_5771","oa":22385},{"a":22412,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":22414,"t":"code","b":[173,224,84],"m":"lda","o":"letter_lines","oa":21728},{"a":22417,"t":"code","b":[133,52],"m":"sta","o":"temp_34","oa":52},{"a":22419,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":22421,"t":"code","b":[133,53],"m":"sta","o":"temp_35","oa":53},{"a":22423,"l":"b_5797","t":"code","b":[198,52],"m":"dec","o":"temp_34","oa":52,"x":[22464]},{"a":22425,"t":"code","b":[16,4],"m":"bpl","o":"b_579F","oa":22431},{"a":22427,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":22429,"t":"code","b":[133,53],"m":"sta","o":"temp_35","oa":53},{"a":22431,"l":"b_579F","t":"code","b":[189,195,87],"m":"lda","o":"paper_cell26,x","oa":22467,"x":[22425]},{"a":22434,"t":"code","b":[37,53],"m":"and","o":"temp_35","oa":53},{"a":22436,"t":"code","b":[153,16,103],"m":"sta","o":"paper_row5_c26,y","oa":26384},{"a":22439,"t":"code","b":[189,199,87],"m":"lda","o":"paper_cell27,x","oa":22471},{"a":22442,"t":"code","b":[37,53],"m":"and","o":"temp_35","oa":53},{"a":22444,"t":"code","b":[153,24,103],"m":"sta","o":"paper_row5_c27,y","oa":26392},{"a":22447,"t":"code","b":[189,203,87],"m":"lda","o":"paper_cell28,x","oa":22475},{"a":22450,"t":"code","b":[37,53],"m":"and","o":"temp_35","oa":53},{"a":22452,"t":"code","b":[153,32,103],"m":"sta","o":"paper_row5_c28,y","oa":26400},{"a":22455,"t":"code","b":[189,207,87],"m":"lda","o":"paper_cell29,x","oa":22479},{"a":22458,"t":"code","b":[37,53],"m":"and","o":"temp_35","oa":53},{"a":22460,"t":"code","b":[153,40,103],"m":"sta","o":"paper_row5_c29,y","oa":26408},{"a":22463,"t":"code","b":[136],"m":"dey"},{"a":22464,"t":"code","b":[16,213],"m":"bpl","o":"b_5797","oa":22423},{"a":22466,"l":"r_57C2","t":"code","b":[96],"m":"rts","x":[22381]},{"a":22467,"l":"paper_cell26","c":"Paper pixels for bitmap row 5, column 26, indexed by the carriage position 0-8. The four paper_cell tables are 4 bytes apart in one 20-byte strip, $57C3-$57D6 = 00 00 00 00 00 00 03 0F 3F FF FF FF FC F0 C0 00 00 00 00 00, so each cell shows the strip 4 bytes (one cell) further on and the sheet slides left as the carriage position grows.","t":"byte","b":[0,0,0,0],"x":[22431]},{"a":22471,"l":"paper_cell27","c":"Paper pixels for bitmap row 5, column 27: the paper strip from its fifth byte, indexed by the carriage position (see paper_cell26).","t":"byte","b":[0,0,3,15],"x":[22439]},{"a":22475,"l":"paper_cell28","c":"Paper pixels for bitmap row 5, column 28: the paper strip from its ninth byte, indexed by the carriage position.","t":"byte","b":[63,255,255,255],"x":[22447]},{"a":22479,"l":"paper_cell29","c":"Paper pixels for bitmap row 5, column 29: the paper strip from its thirteenth byte, indexed by the carriage position.","t":"byte","b":[252,240,192,0,0,0,0,0],"x":[22455]},{"a":22487,"l":"carriage_cell26","c":"Carriage pixels for the top two pixel rows of bitmap row 6, column 26, indexed by the carriage position 0-8. The four carriage_cell tables are 4 bytes apart in one 20-byte strip, $57D7-$57EA = 00 00 00 00 00 03 0F 3F FF FF FF FF FF FC F0 C0 00 00 00 00: a solid bar with soft ends that slides left as the carriage position grows.","t":"byte","b":[0,0,0,0],"x":[22385]},{"a":22491,"l":"carriage_cell27","c":"Carriage pixels for bitmap row 6, column 27: the carriage strip from its fifth byte, indexed by the carriage position (see carriage_cell26).","t":"byte","b":[0,3,15,63],"x":[22391]},{"a":22495,"l":"carriage_cell28","c":"Carriage pixels for bitmap row 6, column 28: the carriage strip from its ninth byte, indexed by the carriage position.","t":"byte","b":[255,255,255,255],"x":[22397]},{"a":22499,"l":"carriage_cell29","c":"Carriage pixels for bitmap row 6, column 29: the carriage strip from its thirteenth byte, indexed by the carriage position.","t":"byte","b":[255,252,240,192,0,0,0,0],"x":[22403]},{"a":22507,"l":"clear_typewriter","c":"Puts the typewriter back as the picture has it: clears all eight pixel rows of bitmap row 5, columns 25-29 ($6708-$672F, the paper) and redraws the top two pixel rows of row 6, columns 25-29: $FF at columns 27-28 (the carriage at rest), 0 elsewhere. Called by letter_clear_paper and when the text band is cleared ($BAFE).","t":"code","b":[162,7],"m":"ldx","o":"#$07","x":[22554,47870]},{"a":22509,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":22511,"l":"b_57EF","t":"code","b":[157,40,103],"m":"sta","o":"paper_row5_c29,x","oa":26408,"x":[22527]},{"a":22514,"t":"code","b":[157,32,103],"m":"sta","o":"paper_row5_c28,x","oa":26400},{"a":22517,"t":"code","b":[157,24,103],"m":"sta","o":"paper_row5_c27,x","oa":26392},{"a":22520,"t":"code","b":[157,16,103],"m":"sta","o":"paper_row5_c26,x","oa":26384},{"a":22523,"t":"code","b":[157,8,103],"m":"sta","o":"typewriter_paper,x","oa":26376},{"a":22526,"t":"code","b":[202],"m":"dex"},{"a":22527,"t":"code","b":[16,238],"m":"bpl","o":"b_57EF","oa":22511},{"a":22529,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":22531,"l":"b_5803","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[22551]},{"a":22533,"t":"code","b":[157,72,104],"m":"sta","o":"paper_row6_c25,x","oa":26696},{"a":22536,"t":"code","b":[157,80,104],"m":"sta","o":"paper_row6_c26,x","oa":26704},{"a":22539,"t":"code","b":[157,104,104],"m":"sta","o":"paper_row6_c29,x","oa":26728},{"a":22542,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":22544,"t":"code","b":[157,88,104],"m":"sta","o":"paper_row6_c27,x","oa":26712},{"a":22547,"t":"code","b":[157,96,104],"m":"sta","o":"paper_row6_c28,x","oa":26720},{"a":22550,"t":"code","b":[202],"m":"dex"},{"a":22551,"t":"code","b":[16,234],"m":"bpl","o":"b_5803","oa":22531},{"a":22553,"t":"code","b":[96],"m":"rts"},{"a":22554,"l":"letter_clear_paper","c":"Activity 22 phase 20: clear_typewriter, next phase.","t":"code","b":[32,235,87],"m":"jsr","o":"clear_typewriter","oa":22507},{"a":22557,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":22560,"l":"set_person_frame","c":"Sets the person's body frame to A: X = 0, then JMP $1ADF. Used by the letter ($55BE, $56FD) and computer ($584E, $58D8) handlers.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[21950,22269,22606,22744]},{"a":22562,"t":"code","b":[76,223,26],"m":"jmp","o":"figure_set_pose","oa":6879},{"a":22565,"l":"act20_computer","c":"Activity 20 ($14), its entry in activity_table: the person uses the computer, as asked with \"computer\" (the parser rule at $CAFA gives action $14). Switches on activity_phase through act20_phases: walk to place $1E (middle floor, X 144, the desk with the computer drawn at bitmap rows 12-13, columns 36-38), wait_or_request, computer_sit, computer_run until his time is up or a request comes, script_next. The monitor shows one of two programs, chosen at random: lines of dots that scroll up as he types, or a drawing (bar chart, wandering dot or scribble) on a 7 x 9 grid of multicolour pixels.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":22568,"l":"act20_phases","c":"Activity 20's switch table (JSR $3F11 at $5825), handler addresses minus one: 0 computer_walk, 1 wait_or_request, 2 computer_sit, 3 computer_run, 4 script_next.","t":"word","b":[49,88,166,143,57,88,99,88],"d":[22577,36774,22585,22627]},{"a":22576,"t":"word","b":[13,143],"d":[36621]},{"a":22578,"l":"computer_walk","c":"Activity 20 phase 0: walk to place $1E (middle floor, X 144), the computer desk (X = $1E, then JMP $5536, walk_to_place).","t":"code","b":[162,30],"m":"ldx","o":"#$1E"},{"a":22580,"t":"code","b":[76,54,85],"m":"jmp","o":"b_5536","oa":21814},{"a":22583,"l":"computer_ticks","c":"computer_run's pass counter, incremented every pass; computer_run acts only on the passes where it AND computer_pace is 0.","t":"byte","b":[0],"x":[22633,22636]},{"a":22584,"l":"computer_time","c":"How long he stays at the computer: a random $20-$FF from computer_sit, counted down on computer_run's acting passes; at 0 he stops. Zeroed when a request is pending.","t":"byte","b":[191],"x":[22601,22654,22671,22690]},{"a":22585,"l":"computer_pause","c":"Acting passes to sit still: 20 at the start (computer_sit), then a random 0-15 after each body frame $1D; while it counts down computer_run does nothing else.","t":"byte","b":[0],"x":[22593,22657,22662,22717]},{"a":22586,"l":"computer_sit","c":"Activity 20 phase 2: $ACF2 = $4A (the head's turn), computer_pause = 20, computer_time = random $20-$FF, body frame $1D, computer_program (picks a program and blanks the screen), computer_pace = random 3 or 7, next phase.","t":"code","b":[169,74],"m":"lda","o":"#$4A"},{"a":22588,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":22591,"t":"code","b":[169,20],"m":"lda","o":"#$14"},{"a":22593,"t":"code","b":[141,57,88],"m":"sta","o":"computer_pause","oa":22585},{"a":22596,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":22599,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":22601,"t":"code","b":[141,56,88],"m":"sta","o":"computer_time","oa":22584},{"a":22604,"t":"code","b":[169,29],"m":"lda","o":"#$1D"},{"a":22606,"t":"code","b":[32,32,88],"m":"jsr","o":"set_person_frame","oa":22560},{"a":22609,"t":"code","b":[32,208,90],"m":"jsr","o":"computer_program","oa":23248},{"a":22612,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":22615,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":22617,"t":"code","b":[9,3],"m":"ora","o":"#$03"},{"a":22619,"t":"code","b":[141,97,88],"m":"sta","o":"computer_pace","oa":22625},{"a":22622,"l":"j_585E","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[22687]},{"a":22625,"l":"computer_pace","c":"computer_run's pace mask, a random 3 or 7 (random AND 7, OR 3): it acts on one pass in 4 or one in 8.","t":"byte","b":[3],"x":[22619,22639]},{"a":22626,"l":"computer_key_1a","c":"$1A on a pass where computer_run gave the body frame $1A, 0 on every other pass; with computer_key_1d it tells the text program to put the next dot of the line on the screen.","t":"byte","b":[0],"x":[22630,22730,22771]},{"a":22627,"l":"computer_key_1d","c":"$1D from the acting pass where computer_run gives the body frame $1D (a pause) until the first acting pass after the pause, which clears it. While it is set, computer_text_step adds a dot on every pass, so lines pour out and scroll while he sits back.","t":"byte","b":[0],"x":[22668,22709,22774]},{"a":22628,"l":"computer_run","c":"Activity 20 phase 3, every pass. On acting passes (computer_ticks AND computer_pace = 0): a pending request zeroes computer_time; computer_pause counts down first; when computer_time is 0 it blanks the screen (computer_blank), sets $3571 = 2 and $ACF2 = 2 and moves on; otherwise it takes one off computer_time and moves the body: from frame $1B to $1A (random facing, $039A = bit 3) or, 1 time in 8, to $1D with a pause of 0-15; from any other frame to $1B, with the key sound ($355D) in the text program. Then the screen: computer_draw in the drawing program, computer_text_step in the text program.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":22630,"t":"code","b":[141,98,88],"m":"sta","o":"computer_key_1a","oa":22626},{"a":22633,"t":"code","b":[238,55,88],"m":"inc","o":"computer_ticks","oa":22583},{"a":22636,"t":"code","b":[173,55,88],"m":"lda","o":"computer_ticks","oa":22583},{"a":22639,"t":"code","b":[45,97,88],"m":"and","o":"computer_pace","oa":22625},{"a":22642,"t":"code","b":[240,3],"m":"beq","o":"b_5877","oa":22647},{"a":22644,"t":"code","b":[76,219,88],"m":"jmp","o":"j_58DB","oa":22747},{"a":22647,"l":"b_5877","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742,"x":[22642]},{"a":22650,"t":"code","b":[240,5],"m":"beq","o":"b_5881","oa":22657},{"a":22652,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":22654,"t":"code","b":[141,56,88],"m":"sta","o":"computer_time","oa":22584},{"a":22657,"l":"b_5881","t":"code","b":[173,57,88],"m":"lda","o":"computer_pause","oa":22585,"x":[22650]},{"a":22660,"t":"code","b":[240,6],"m":"beq","o":"b_588C","oa":22668},{"a":22662,"t":"code","b":[206,57,88],"m":"dec","o":"computer_pause","oa":22585},{"a":22665,"t":"code","b":[76,219,88],"m":"jmp","o":"j_58DB","oa":22747},{"a":22668,"l":"b_588C","t":"code","b":[141,99,88],"m":"sta","o":"computer_key_1d","oa":22627,"x":[22660]},{"a":22671,"t":"code","b":[173,56,88],"m":"lda","o":"computer_time","oa":22584},{"a":22674,"t":"code","b":[208,14],"m":"bne","o":"b_58A2","oa":22690},{"a":22676,"t":"code","b":[32,255,90],"m":"jsr","o":"computer_blank","oa":23295},{"a":22679,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":22681,"t":"code","b":[141,113,53],"m":"sta","o":"snd_req_stop16","oa":13681},{"a":22684,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":22687,"t":"code","b":[76,94,88],"m":"jmp","o":"j_585E","oa":22622},{"a":22690,"l":"b_58A2","t":"code","b":[206,56,88],"m":"dec","o":"computer_time","oa":22584,"x":[22674]},{"a":22693,"t":"code","b":[160,27],"m":"ldy","o":"#$1B"},{"a":22695,"t":"code","b":[204,139,3],"m":"cpy","o":"fig_frame","oa":907},{"a":22698,"t":"code","b":[208,35],"m":"bne","o":"b_58CF","oa":22735},{"a":22700,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":22703,"t":"code","b":[160,29],"m":"ldy","o":"#$1D"},{"a":22705,"t":"code","b":[41,78],"m":"and","o":"#$4E"},{"a":22707,"t":"code","b":[208,14],"m":"bne","o":"b_58C3","oa":22723},{"a":22709,"t":"code","b":[140,99,88],"m":"sty","o":"computer_key_1d","oa":22627},{"a":22712,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":22715,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":22717,"t":"code","b":[141,57,88],"m":"sta","o":"computer_pause","oa":22585},{"a":22720,"t":"code","b":[76,215,88],"m":"jmp","o":"j_58D7","oa":22743},{"a":22723,"l":"b_58C3","t":"code","b":[41,8],"m":"and","o":"#$08","x":[22707]},{"a":22725,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":22728,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":22730,"t":"code","b":[140,98,88],"m":"sty","o":"computer_key_1a","oa":22626},{"a":22733,"t":"code","b":[208,8],"m":"bne","o":"j_58D7","oa":22743},{"a":22735,"l":"b_58CF","t":"code","b":[173,176,89],"m":"lda","o":"computer_mode","oa":22960,"x":[22698]},{"a":22738,"t":"code","b":[208,3],"m":"bne","o":"j_58D7","oa":22743},{"a":22740,"t":"code","b":[140,93,53],"m":"sty","o":"snd_key_click","oa":13661},{"a":22743,"l":"j_58D7","t":"code","b":[152],"m":"tya","x":[22720,22733,22738]},{"a":22744,"t":"code","b":[32,32,88],"m":"jsr","o":"set_person_frame","oa":22560},{"a":22747,"l":"j_58DB","t":"code","b":[173,176,89],"m":"lda","o":"computer_mode","oa":22960,"x":[22644,22665]},{"a":22750,"t":"code","b":[240,19],"m":"beq","o":"computer_text_step","oa":22771},{"a":22752,"t":"code","b":[76,182,89],"m":"jmp","o":"computer_draw","oa":22966},{"a":22755,"l":"computer_maybe_switch","c":"Common exit of the screen work: when main_passes ($09DB) is 0 and a random number is below $0F, calls computer_program to switch programs at random.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[22777,22801,22916,23085]},{"a":22758,"t":"code","b":[201,15],"m":"cmp","o":"#$0F"},{"a":22760,"t":"code","b":[176,8],"m":"bcs","o":"r_58F2","oa":22770},{"a":22762,"t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523},{"a":22765,"t":"code","b":[208,3],"m":"bne","o":"r_58F2","oa":22770},{"a":22767,"t":"code","b":[32,208,90],"m":"jsr","o":"computer_program","oa":23248},{"a":22770,"l":"r_58F2","t":"code","b":[96],"m":"rts","x":[22760,22765,23053]},{"a":22771,"l":"computer_text_step","c":"The text program's step: when computer_key_1a or computer_key_1d is set, adds the next dot to the bottom line of the monitor, writing screen_char_pixels at $7160 + screen_char_offsets for dot plot_y of plot_x; when the line is full (plot_y = plot_x) it scrolls instead (computer_scroll) and starts a new line.","t":"code","b":[173,98,88],"m":"lda","o":"computer_key_1a","oa":22626,"x":[22750]},{"a":22774,"t":"code","b":[13,99,88],"m":"ora","o":"computer_key_1d","oa":22627},{"a":22777,"t":"code","b":[240,232],"m":"beq","o":"computer_maybe_switch","oa":22755},{"a":22779,"t":"code","b":[173,178,89],"m":"lda","o":"plot_y","oa":22962},{"a":22782,"t":"code","b":[205,177,89],"m":"cmp","o":"plot_x","oa":22961},{"a":22785,"t":"code","b":[240,30],"m":"beq","o":"computer_scroll","oa":22817},{"a":22787,"t":"code","b":[170],"m":"tax"},{"a":22788,"t":"code","b":[189,19,89],"m":"lda","o":"screen_char_offsets,x","oa":22803},{"a":22791,"t":"code","b":[168],"m":"tay"},{"a":22792,"t":"code","b":[189,26,89],"m":"lda","o":"screen_char_pixels,x","oa":22810},{"a":22795,"t":"code","b":[153,96,113],"m":"sta","o":"comp_scr2_c36,y","oa":29024},{"a":22798,"t":"code","b":[238,178,89],"m":"inc","o":"plot_y","oa":22962},{"a":22801,"t":"code","b":[208,208],"m":"bne","o":"computer_maybe_switch","oa":22755},{"a":22803,"l":"screen_char_offsets","c":"The text program's seven dots, the byte each one changes, as offsets from $7160 (bitmap row 13, column 36): 3, $0B, $0B, $0B, $0B, $13, $13, i.e. pixel row 3 of columns 36, 37 (four times) and 38.","t":"byte","b":[3,11,11,11,11,19,19],"x":[22788]},{"a":22810,"l":"screen_char_pixels","c":"The value computer_text_step writes for each of the seven dots: $12, $80, $A0, $A8, $AA, $81, $A1: one more multicolour pixel of colour 2 each time, left to right along the bottom line inside the monitor's frame.","t":"byte","b":[18,128,160,168,170,129,161],"x":[22792]},{"a":22817,"l":"computer_scroll","c":"The text program's line feed: scrolls the picture inside the monitor up one pixel row (pixel rows 3-7 of bitmap row 12 and 0-3 of row 13, columns 36-38), redraws the empty bottom line ($10, $00, $01: just the frame's edges), and starts a new line of random length 0-7 (plot_x) with plot_y = 0. Brackets its writes with the empty hooks $5B2A and $5B29.","t":"code","b":[32,42,91],"m":"jsr","o":"hook_before_draw","oa":23338,"x":[22785]},{"a":22820,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":22822,"l":"b_5926","t":"code","b":[189,33,112],"m":"lda","o":"comp_scr_c36_l1,x","oa":28705,"x":[22843]},{"a":22825,"t":"code","b":[157,32,112],"m":"sta","o":"comp_scr_c36,x","oa":28704},{"a":22828,"t":"code","b":[189,41,112],"m":"lda","o":"comp_scr_c37_l1,x","oa":28713},{"a":22831,"t":"code","b":[157,40,112],"m":"sta","o":"comp_scr_c37,x","oa":28712},{"a":22834,"t":"code","b":[189,49,112],"m":"lda","o":"comp_scr_c38_l1,x","oa":28721},{"a":22837,"t":"code","b":[157,48,112],"m":"sta","o":"comp_scr_c38,x","oa":28720},{"a":22840,"t":"code","b":[232],"m":"inx"},{"a":22841,"t":"code","b":[224,7],"m":"cpx","o":"#$07"},{"a":22843,"t":"code","b":[208,233],"m":"bne","o":"b_5926","oa":22822},{"a":22845,"t":"code","b":[173,96,113],"m":"lda","o":"comp_scr2_c36","oa":29024},{"a":22848,"t":"code","b":[141,39,112],"m":"sta","o":"comp_scr_c36_l7","oa":28711},{"a":22851,"t":"code","b":[173,104,113],"m":"lda","o":"comp_scr2_c37","oa":29032},{"a":22854,"t":"code","b":[141,47,112],"m":"sta","o":"comp_scr_c37_l7","oa":28719},{"a":22857,"t":"code","b":[173,112,113],"m":"lda","o":"comp_scr2_c38","oa":29040},{"a":22860,"t":"code","b":[141,55,112],"m":"sta","o":"comp_scr_c38_l7","oa":28727},{"a":22863,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":22865,"l":"b_5951","t":"code","b":[189,97,113],"m":"lda","o":"comp_scr2_c36_l1,x","oa":29025,"x":[22886]},{"a":22868,"t":"code","b":[157,96,113],"m":"sta","o":"comp_scr2_c36,x","oa":29024},{"a":22871,"t":"code","b":[189,105,113],"m":"lda","o":"comp_scr2_c37_l1,x","oa":29033},{"a":22874,"t":"code","b":[157,104,113],"m":"sta","o":"comp_scr2_c37,x","oa":29032},{"a":22877,"t":"code","b":[189,113,113],"m":"lda","o":"comp_scr2_c38_l1,x","oa":29041},{"a":22880,"t":"code","b":[157,112,113],"m":"sta","o":"comp_scr2_c38,x","oa":29040},{"a":22883,"t":"code","b":[232],"m":"inx"},{"a":22884,"t":"code","b":[224,3],"m":"cpx","o":"#$03"},{"a":22886,"t":"code","b":[208,233],"m":"bne","o":"b_5951","oa":22865},{"a":22888,"t":"code","b":[32,41,91],"m":"jsr","o":"hook_after_draw","oa":23337},{"a":22891,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":22893,"t":"code","b":[141,99,113],"m":"sta","o":"comp_scr2_c36_l3","oa":29027},{"a":22896,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":22898,"t":"code","b":[142,107,113],"m":"stx","o":"comp_scr2_c37_l3","oa":29035},{"a":22901,"t":"code","b":[142,178,89],"m":"stx","o":"plot_y","oa":22962},{"a":22904,"t":"code","b":[232],"m":"inx"},{"a":22905,"t":"code","b":[142,115,113],"m":"stx","o":"comp_scr2_c38_l3","oa":29043},{"a":22908,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":22911,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":22913,"t":"code","b":[141,177,89],"m":"sta","o":"plot_x","oa":22961},{"a":22916,"t":"code","b":[76,227,88],"m":"jmp","o":"computer_maybe_switch","oa":22755},{"a":22919,"l":"screen_x_masks","c":"The drawing canvas's x (0-6) to an AND mask clearing that multicolour pixel: $FC, $3F, $CF, $F3, $FC, $3F, $CF (the last pixel of column 36, all four of column 37, the first two of column 38).","t":"byte","b":[252,63,207,243,252,63,207],"x":[23185]},{"a":22926,"l":"screen_x_cells","c":"Canvas x (0-6) to its cell's byte offset: 0, 8, 8, 8, 8, $10, $10 (bitmap columns 36, 37 and 38).","t":"byte","b":[0,8,8,8,8,16,16],"x":[23213]},{"a":22933,"l":"screen_y_rows","c":"Canvas y (0-8, bottom up) to its pixel row: $83, $82, $81, $80 (rows 3-0 of bitmap row 13; bit 7 selects the $7160 base), then 7, 6, 5, 4, 3 (rows of bitmap row 12, base $7020).","t":"byte","b":[131,130,129,128,7,6,5,4],"x":[23209]},{"a":22941,"t":"byte","b":[3]},{"a":22942,"l":"screen_colours","c":"The four multicolour values filling a whole byte: $00, $55, $AA, $FF; plot_pixel keeps the bits of the one pixel being painted.","t":"byte","b":[0,85,170,255],"x":[23194]},{"a":22946,"l":"pen_dx","c":"The x step of each of the drawing pen's eight directions: 0, 1, 1, 1, 0, -1, -1, -1 ($59A2 + d).","t":"byte","b":[0,1],"x":[23120]},{"a":22948,"l":"pen_dy","c":"The y step of each of the eight directions: 1, 1, 0, -1, -1, -1, 0, 1 ($59A4 + d; it overlaps pen_dx by six bytes).","t":"byte","b":[1,1,0,255,255,255,0,1],"x":[23144]},{"a":22956,"l":"pen_x","c":"The drawing pen's x on the canvas, 0-6.","t":"byte","b":[0],"x":[22988,23025,23028,23035,23056,23090,23116,23134,23286]},{"a":22957,"l":"pen_y","c":"The drawing pen's y on the canvas, 0-8 (0 at the bottom).","t":"byte","b":[0],"x":[22994,23009,23012,23022,23096,23140,23158,23289]},{"a":22958,"l":"pen_colour","c":"The colour (0-3, an index into screen_colours) that plot_pixel paints with.","t":"byte","b":[0],"x":[23003,23104,23173,23191]},{"a":22959,"l":"pixel_bits","c":"plot_pixel's scratch: the colour's bits for the pixel being painted.","t":"byte","b":[0],"x":[23197,23223,23239]},{"a":22960,"l":"computer_mode","c":"The computer's program: 0 the text program, 1 the drawing program; chosen at random by computer_program.","t":"byte","b":[0],"x":[22735,22747,23253]},{"a":22961,"l":"plot_x","c":"plot_pixel's x (0-6); in the text program the length of the current line of dots (0-7, 3 after computer_blank).","t":"byte","b":[3],"x":[22782,22913,22991,23093,23137,23182,23203,23297]},{"a":22962,"l":"plot_y","c":"plot_pixel's y (0-8); in the text program the number of dots already on the line.","t":"byte","b":[0],"x":[22779,22798,22901,22997,23099,23161,23200,23292]},{"a":22963,"l":"draw_style","c":"The drawing program's style, from computer_program: 0 a bar chart; otherwise a random value AND $87, OR 1, where bit 7 set is a scribble that keeps its trail and bit 7 clear a single wandering dot, and the low bits (ANDed with main_passes) pace it.","t":"byte","b":[128],"x":[22969,22976,23281]},{"a":22964,"l":"bar_colour","c":"The bar chart's current colour, 1-3, chosen at random at every second column.","t":"byte","b":[1],"x":[23000,23071]},{"a":22965,"l":"bar_height","c":"The bar chart's current bar height, 2-9 at random, at which the pen moves to the next column; 1 once the seventh bar is done.","t":"byte","b":[4],"x":[23015,23040,23082]},{"a":22966,"l":"computer_draw","c":"The drawing program, from computer_run when computer_mode is 1; acts only when main_passes AND draw_style AND $7F is 0. Style 0, the bar chart: one pixel every 16 passes, filling columns bottom-up to bar_height in bar_colour; after the seventh column it may switch program (1 time in 16). Other styles: the pen takes one step in a random direction (pen_dx, pen_dy, kept on the canvas) and paints a random colour 1-3; with bit 7 of draw_style clear the old position is erased first, so it is a wandering dot, with it set a scribble.","t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523,"x":[22752]},{"a":22969,"t":"code","b":[45,179,89],"m":"and","o":"draw_style","oa":22963},{"a":22972,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":22974,"t":"code","b":[208,109],"m":"bne","o":"b_5A2D","oa":23085},{"a":22976,"t":"code","b":[173,179,89],"m":"lda","o":"draw_style","oa":22963},{"a":22979,"t":"code","b":[208,107],"m":"bne","o":"b_5A30","oa":23088},{"a":22981,"t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523},{"a":22984,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":22986,"t":"code","b":[208,97],"m":"bne","o":"b_5A2D","oa":23085},{"a":22988,"t":"code","b":[173,172,89],"m":"lda","o":"pen_x","oa":22956},{"a":22991,"t":"code","b":[141,177,89],"m":"sta","o":"plot_x","oa":22961},{"a":22994,"t":"code","b":[173,173,89],"m":"lda","o":"pen_y","oa":22957},{"a":22997,"t":"code","b":[141,178,89],"m":"sta","o":"plot_y","oa":22962},{"a":23000,"t":"code","b":[173,180,89],"m":"lda","o":"bar_colour","oa":22964},{"a":23003,"t":"code","b":[141,174,89],"m":"sta","o":"pen_colour","oa":22958},{"a":23006,"t":"code","b":[32,142,90],"m":"jsr","o":"plot_pixel","oa":23182},{"a":23009,"t":"code","b":[238,173,89],"m":"inc","o":"pen_y","oa":22957},{"a":23012,"t":"code","b":[173,173,89],"m":"lda","o":"pen_y","oa":22957},{"a":23015,"t":"code","b":[205,181,89],"m":"cmp","o":"bar_height","oa":22965},{"a":23018,"t":"code","b":[208,65],"m":"bne","o":"b_5A2D","oa":23085},{"a":23020,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23022,"t":"code","b":[141,173,89],"m":"sta","o":"pen_y","oa":22957},{"a":23025,"t":"code","b":[238,172,89],"m":"inc","o":"pen_x","oa":22956},{"a":23028,"t":"code","b":[173,172,89],"m":"lda","o":"pen_x","oa":22956},{"a":23031,"t":"code","b":[201,7],"m":"cmp","o":"#$07"},{"a":23033,"t":"code","b":[144,21],"m":"bcc","o":"b_5A10","oa":23056},{"a":23035,"t":"code","b":[206,172,89],"m":"dec","o":"pen_x","oa":22956},{"a":23038,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":23040,"t":"code","b":[141,181,89],"m":"sta","o":"bar_height","oa":22965},{"a":23043,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":23046,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":23048,"t":"code","b":[176,3],"m":"bcs","o":"b_5A0D","oa":23053},{"a":23050,"t":"code","b":[32,208,90],"m":"jsr","o":"computer_program","oa":23248},{"a":23053,"l":"b_5A0D","t":"code","b":[76,242,88],"m":"jmp","o":"r_58F2","oa":22770,"x":[23048]},{"a":23056,"l":"b_5A10","t":"code","b":[173,172,89],"m":"lda","o":"pen_x","oa":22956,"x":[23033]},{"a":23059,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":23060,"t":"code","b":[176,12],"m":"bcs","o":"b_5A22","oa":23074},{"a":23062,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":23065,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":23067,"t":"code","b":[208,2],"m":"bne","o":"b_5A1F","oa":23071},{"a":23069,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":23071,"l":"b_5A1F","t":"code","b":[141,180,89],"m":"sta","o":"bar_colour","oa":22964,"x":[23067]},{"a":23074,"l":"b_5A22","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[23060]},{"a":23077,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":23079,"t":"code","b":[24],"m":"clc"},{"a":23080,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":23082,"t":"code","b":[141,181,89],"m":"sta","o":"bar_height","oa":22965},{"a":23085,"l":"b_5A2D","t":"code","b":[76,227,88],"m":"jmp","o":"computer_maybe_switch","oa":22755,"x":[22974,22986,23018,23179]},{"a":23088,"l":"b_5A30","t":"code","b":[48,20],"m":"bmi","o":"b_5A46","oa":23110,"x":[22979]},{"a":23090,"t":"code","b":[173,172,89],"m":"lda","o":"pen_x","oa":22956},{"a":23093,"t":"code","b":[141,177,89],"m":"sta","o":"plot_x","oa":22961},{"a":23096,"t":"code","b":[173,173,89],"m":"lda","o":"pen_y","oa":22957},{"a":23099,"t":"code","b":[141,178,89],"m":"sta","o":"plot_y","oa":22962},{"a":23102,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23104,"t":"code","b":[141,174,89],"m":"sta","o":"pen_colour","oa":22958},{"a":23107,"t":"code","b":[32,142,90],"m":"jsr","o":"plot_pixel","oa":23182},{"a":23110,"l":"b_5A46","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[23088]},{"a":23113,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":23115,"t":"code","b":[170],"m":"tax"},{"a":23116,"t":"code","b":[173,172,89],"m":"lda","o":"pen_x","oa":22956},{"a":23119,"t":"code","b":[24],"m":"clc"},{"a":23120,"t":"code","b":[125,162,89],"m":"adc","o":"pen_dx,x","oa":22946},{"a":23123,"t":"code","b":[168],"m":"tay"},{"a":23124,"t":"code","b":[16,2],"m":"bpl","o":"b_5A58","oa":23128},{"a":23126,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23128,"l":"b_5A58","t":"code","b":[201,7],"m":"cmp","o":"#$07","x":[23124]},{"a":23130,"t":"code","b":[144,2],"m":"bcc","o":"b_5A5E","oa":23134},{"a":23132,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":23134,"l":"b_5A5E","t":"code","b":[141,172,89],"m":"sta","o":"pen_x","oa":22956,"x":[23130]},{"a":23137,"t":"code","b":[141,177,89],"m":"sta","o":"plot_x","oa":22961},{"a":23140,"t":"code","b":[173,173,89],"m":"lda","o":"pen_y","oa":22957},{"a":23143,"t":"code","b":[24],"m":"clc"},{"a":23144,"t":"code","b":[125,164,89],"m":"adc","o":"pen_dy,x","oa":22948},{"a":23147,"t":"code","b":[168],"m":"tay"},{"a":23148,"t":"code","b":[16,2],"m":"bpl","o":"b_5A70","oa":23152},{"a":23150,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23152,"l":"b_5A70","t":"code","b":[201,9],"m":"cmp","o":"#$09","x":[23148]},{"a":23154,"t":"code","b":[144,2],"m":"bcc","o":"b_5A76","oa":23158},{"a":23156,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":23158,"l":"b_5A76","t":"code","b":[141,173,89],"m":"sta","o":"pen_y","oa":22957,"x":[23154]},{"a":23161,"t":"code","b":[141,178,89],"m":"sta","o":"plot_y","oa":22962},{"a":23164,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":23167,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":23169,"t":"code","b":[208,2],"m":"bne","o":"b_5A85","oa":23173},{"a":23171,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":23173,"l":"b_5A85","t":"code","b":[141,174,89],"m":"sta","o":"pen_colour","oa":22958,"x":[23169]},{"a":23176,"t":"code","b":[32,142,90],"m":"jsr","o":"plot_pixel","oa":23182},{"a":23179,"t":"code","b":[76,45,90],"m":"jmp","o":"b_5A2D","oa":23085},{"a":23182,"l":"plot_pixel","c":"Paints canvas pixel (plot_x, plot_y) in pen_colour: the byte is at screen_x_cells + the row from screen_y_rows, from $7020 or, when bit 7 is set, $7160; the pixel's bits (screen_x_masks) are replaced with the colour's (screen_colours). Brackets the write with the empty hooks $5B2A and $5B29.","t":"code","b":[174,177,89],"m":"ldx","o":"plot_x","oa":22961,"x":[23006,23107,23176]},{"a":23185,"t":"code","b":[189,135,89],"m":"lda","o":"screen_x_masks,x","oa":22919},{"a":23188,"t":"code","b":[72],"m":"pha"},{"a":23189,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":23191,"t":"code","b":[172,174,89],"m":"ldy","o":"pen_colour","oa":22958},{"a":23194,"t":"code","b":[57,158,89],"m":"and","o":"screen_colours,y","oa":22942},{"a":23197,"t":"code","b":[141,175,89],"m":"sta","o":"pixel_bits","oa":22959},{"a":23200,"t":"code","b":[172,178,89],"m":"ldy","o":"plot_y","oa":22962},{"a":23203,"t":"code","b":[174,177,89],"m":"ldx","o":"plot_x","oa":22961},{"a":23206,"t":"code","b":[32,42,91],"m":"jsr","o":"hook_before_draw","oa":23338},{"a":23209,"t":"code","b":[185,149,89],"m":"lda","o":"screen_y_rows,y","oa":22933},{"a":23212,"t":"code","b":[24],"m":"clc"},{"a":23213,"t":"code","b":[125,142,89],"m":"adc","o":"screen_x_cells,x","oa":22926},{"a":23216,"t":"code","b":[170],"m":"tax"},{"a":23217,"t":"code","b":[48,13],"m":"bmi","o":"b_5AC0","oa":23232},{"a":23219,"t":"code","b":[104],"m":"pla"},{"a":23220,"t":"code","b":[61,32,112],"m":"and","o":"comp_scr_c36,x","oa":28704},{"a":23223,"t":"code","b":[13,175,89],"m":"ora","o":"pixel_bits","oa":22959},{"a":23226,"t":"code","b":[157,32,112],"m":"sta","o":"comp_scr_c36,x","oa":28704},{"a":23229,"t":"code","b":[76,205,90],"m":"jmp","o":"j_5ACD","oa":23245},{"a":23232,"l":"b_5AC0","t":"code","b":[41,127],"m":"and","o":"#$7F","x":[23217]},{"a":23234,"t":"code","b":[170],"m":"tax"},{"a":23235,"t":"code","b":[104],"m":"pla"},{"a":23236,"t":"code","b":[61,96,113],"m":"and","o":"comp_scr2_c36,x","oa":29024},{"a":23239,"t":"code","b":[13,175,89],"m":"ora","o":"pixel_bits","oa":22959},{"a":23242,"t":"code","b":[157,96,113],"m":"sta","o":"comp_scr2_c36,x","oa":29024},{"a":23245,"l":"j_5ACD","t":"code","b":[76,41,91],"m":"jmp","o":"hook_after_draw","oa":23337,"x":[23229]},{"a":23248,"l":"computer_program","c":"Picks the computer's program at random: computer_mode = a random bit. Text program: sound flag $3571 = 1. Drawing program: sound flag $3570 = 1 and draw_style = 0 or, half the time, a random style. Then pen and plot positions to 0 and computer_blank.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[22609,22767,23050]},{"a":23251,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":23253,"t":"code","b":[141,176,89],"m":"sta","o":"computer_mode","oa":22960},{"a":23256,"t":"code","b":[208,7],"m":"bne","o":"b_5AE1","oa":23265},{"a":23258,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":23260,"t":"code","b":[141,113,53],"m":"sta","o":"snd_req_stop16","oa":13681},{"a":23263,"t":"code","b":[208,19],"m":"bne","o":"b_5AF4","oa":23284},{"a":23265,"l":"b_5AE1","t":"code","b":[141,112,53],"m":"sta","o":"snd_req_16","oa":13680,"x":[23256]},{"a":23268,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":23271,"t":"code","b":[170],"m":"tax"},{"a":23272,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":23274,"t":"code","b":[240,5],"m":"beq","o":"b_5AF1","oa":23281},{"a":23276,"t":"code","b":[138],"m":"txa"},{"a":23277,"t":"code","b":[41,135],"m":"and","o":"#$87"},{"a":23279,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":23281,"l":"b_5AF1","t":"code","b":[141,179,89],"m":"sta","o":"draw_style","oa":22963,"x":[23274]},{"a":23284,"l":"b_5AF4","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[23263]},{"a":23286,"t":"code","b":[141,172,89],"m":"sta","o":"pen_x","oa":22956},{"a":23289,"t":"code","b":[141,173,89],"m":"sta","o":"pen_y","oa":22957},{"a":23292,"t":"code","b":[141,178,89],"m":"sta","o":"plot_y","oa":22962},{"a":23295,"l":"computer_blank","c":"Blanks the monitor: plot_x = 3 and pixel rows 3-7 of bitmap row 12 and 0-3 of row 13, columns 36-38, set to $10, $00 and $01, the empty screen with its side edges.","t":"code","b":[162,3],"m":"ldx","o":"#$03","x":[22676]},{"a":23297,"t":"code","b":[142,177,89],"m":"stx","o":"plot_x","oa":22961},{"a":23300,"l":"b_5B04","t":"code","b":[169,16],"m":"lda","o":"#$10","x":[23334]},{"a":23302,"t":"code","b":[157,96,113],"m":"sta","o":"comp_scr2_c36,x","oa":29024},{"a":23305,"t":"code","b":[157,35,112],"m":"sta","o":"comp_scr_c36_l3,x","oa":28707},{"a":23308,"t":"code","b":[157,36,112],"m":"sta","o":"comp_scr_c36_l4,x","oa":28708},{"a":23311,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23313,"t":"code","b":[157,104,113],"m":"sta","o":"comp_scr2_c37,x","oa":29032},{"a":23316,"t":"code","b":[157,43,112],"m":"sta","o":"comp_scr_c37_l3,x","oa":28715},{"a":23319,"t":"code","b":[157,44,112],"m":"sta","o":"comp_scr_c37_l4,x","oa":28716},{"a":23322,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":23324,"t":"code","b":[157,112,113],"m":"sta","o":"comp_scr2_c38,x","oa":29040},{"a":23327,"t":"code","b":[157,51,112],"m":"sta","o":"comp_scr_c38_l3,x","oa":28723},{"a":23330,"t":"code","b":[157,52,112],"m":"sta","o":"comp_scr_c38_l4,x","oa":28724},{"a":23333,"t":"code","b":[202],"m":"dex"},{"a":23334,"t":"code","b":[16,220],"m":"bpl","o":"b_5B04","oa":23300},{"a":23336,"t":"code","b":[96],"m":"rts"},{"a":23337,"l":"hook_after_draw","c":"An RTS: an empty hook called after bitmap writes, at $0CE5 (draw_clock_hand), $5968 (computer_scroll) and $5ACD (plot_pixel). Why it is there is not known.","t":"code","b":[96],"m":"rts","x":[3301,22888,23245]},{"a":23338,"l":"hook_before_draw","c":"An RTS: an empty hook called before bitmap writes, at $0CC7 (draw_clock_hand), $5921 (computer_scroll) and $5AA6 (plot_pixel). Why it is there is not known.","t":"code","b":[96],"m":"rts","x":[3271,22817,23206]},{"a":23339,"l":"act113","c":"Activity 113 ($71), its entry in activity_table ($8EAB): walk to place $16 (middle floor, X 90), wait_or_request, body frame $45, then figure 2 is put on the person and stepped through frames $0E, $0F, $10, $0F every fourth pass for a random 64-255 steps, with the sound flag $3565 set and the head held still; then figure 2 is hidden, body frame $5C, sound flag $3569, script_next. What it shows is not known, and nothing that starts it was found: no parser rule, activity script or store of $71 to activity names it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":23342,"l":"act113_phases","c":"Activity 113's switch table (JSR $3F11 at $5B2B), handler addresses minus one: 0 walk_to_place_16, 1 wait_or_request, 2 act113_turn, 3 act113_start, 4 act113_animate, 5 act113_end, 6 script_next.","t":"word","b":[238,142,166,143,60,91,79,91],"d":[36590,36774,23356,23375]},{"a":23350,"t":"word","b":[158,91,134,91,13,143],"d":[23454,23430,36621]},{"a":23356,"l":"act113_busy","c":"RTS: the exit act113_turn takes while $255B is still changing the body frame ($2540 non-zero).","t":"code","b":[96],"m":"rts","x":[23371]},{"a":23357,"l":"act113_turn","c":"Activity 113 phase 2: $ACF1 = $FF (head held still), then $255B with A = $45 and X = 0 moves the body to frame $45; next phase once $2540 is 0.","t":"code","b":[162,255],"m":"ldx","o":"#$FF"},{"a":23359,"t":"code","b":[142,241,172],"m":"stx","o":"pose_change_busy","oa":44273},{"a":23362,"t":"code","b":[232],"m":"inx"},{"a":23363,"t":"code","b":[169,69],"m":"lda","o":"#$45"},{"a":23365,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":23368,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":23371,"t":"code","b":[208,239],"m":"bne","o":"act113_busy","oa":23356},{"a":23373,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":23376,"l":"act113_start","c":"Activity 113 phase 3: copy_position to figure 2, one less in $03B5 (its depth), $ACF1 = $FF, sound flag $3565 = $FF, $0394 = $FF, $1394 = 1, $03F4 = $0F (the head's direction), frame $0F for figure 2 (flags $83) and for the head (flags $82), act113_time = random $40-$FF, next phase.","t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":23378,"t":"code","b":[32,211,91],"m":"jsr","o":"copy_position","oa":23507},{"a":23381,"t":"code","b":[206,181,3],"m":"dec","o":"fig_depth_prop_a","oa":949},{"a":23384,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":23386,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":23389,"t":"code","b":[141,101,53],"m":"sta","o":"snd_req_5","oa":13669},{"a":23392,"t":"code","b":[141,148,3],"m":"sta","o":"prop_multicolour","oa":916},{"a":23395,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":23397,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":23400,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":23402,"t":"code","b":[141,244,3],"m":"sta","o":"head_target","oa":1012},{"a":23405,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":23408,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":23411,"t":"code","b":[162,131],"m":"ldx","o":"#$83"},{"a":23413,"t":"code","b":[142,198,3],"m":"stx","o":"fig_flags_prop_a","oa":966},{"a":23416,"t":"code","b":[202],"m":"dex"},{"a":23417,"t":"code","b":[142,200,3],"m":"stx","o":"fig_flags_head","oa":968},{"a":23420,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":23423,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":23425,"t":"code","b":[141,157,91],"m":"sta","o":"act113_time","oa":23453},{"a":23428,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":23431,"l":"act113_end","c":"Activity 113 phase 5: $ACF1 = 0 (the head free again), figure 2 hidden ($03C6 = 0), body frame $5C (through $9363), sound flag $3569 = $FF, next phase.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":23433,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":23436,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":23439,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":23441,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":23444,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":23446,"t":"code","b":[141,105,53],"m":"sta","o":"snd_req_stop5","oa":13673},{"a":23449,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":23452,"l":"r_5B9C","t":"code","b":[96],"m":"rts","x":[23460,23467]},{"a":23453,"l":"act113_time","c":"Activity 113's length: a random $40-$FF from act113_start, counted down on act113_animate's acting passes.","t":"byte","b":[255],"x":[23425,23474]},{"a":23454,"l":"act113_step","c":"act113_animate's step counter; its low two bits pick the frame from act113_frames.","t":"byte","b":[0],"x":[23482,23485]},{"a":23455,"l":"act113_animate","c":"Activity 113 phase 4: waits until figure 2's last frame is drawn ($03C6 AND 3 = 0) and acts every fourth pass (main_passes AND 3 = 0): moves on when a request is pending or act113_time runs out; otherwise steps act113_step and gives figure 2 the next frame from act113_frames (flags $82).","t":"code","b":[173,198,3],"m":"lda","o":"fig_flags_prop_a","oa":966},{"a":23458,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":23460,"t":"code","b":[208,246],"m":"bne","o":"r_5B9C","oa":23452},{"a":23462,"t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523},{"a":23465,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":23467,"t":"code","b":[208,239],"m":"bne","o":"r_5B9C","oa":23452},{"a":23469,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":23472,"t":"code","b":[208,5],"m":"bne","o":"b_5BB7","oa":23479},{"a":23474,"t":"code","b":[206,157,91],"m":"dec","o":"act113_time","oa":23453},{"a":23477,"t":"code","b":[208,3],"m":"bne","o":"b_5BBA","oa":23482},{"a":23479,"l":"b_5BB7","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[23472]},{"a":23482,"l":"b_5BBA","t":"code","b":[238,158,91],"m":"inc","o":"act113_step","oa":23454,"x":[23477]},{"a":23485,"t":"code","b":[173,158,91],"m":"lda","o":"act113_step","oa":23454},{"a":23488,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":23490,"t":"code","b":[170],"m":"tax"},{"a":23491,"t":"code","b":[189,207,91],"m":"lda","o":"act113_frames,x","oa":23503},{"a":23494,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":23497,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":23499,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":23502,"t":"code","b":[96],"m":"rts"},{"a":23503,"l":"act113_frames","c":"Figure 2's frames in act113_animate, a cycle of four: $0E, $0F, $10, $0F.","t":"byte","b":[14,15,16,15],"x":[23491]},{"a":23507,"l":"copy_position","c":"Copies the person's (figure 0's) position to figure X: X high bit $03AB, X $03A7, half X $03A3 (rebuilt from those two), floor Y $03AF, depth $03B3 and facing $039A. Called with X = 2 at $290B (carrying) and by act113_start.","t":"code","b":[173,171,3],"m":"lda","o":"fig_x_hi","oa":939,"x":[10507,23378]},{"a":23510,"t":"code","b":[157,171,3],"m":"sta","o":"fig_x_hi,x","oa":939},{"a":23513,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":23515,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":23518,"t":"code","b":[157,167,3],"m":"sta","o":"fig_x,x","oa":935},{"a":23521,"t":"code","b":[106],"m":"ror","o":"a"},{"a":23522,"t":"code","b":[157,163,3],"m":"sta","o":"fig_x_half,x","oa":931},{"a":23525,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":23528,"t":"code","b":[157,175,3],"m":"sta","o":"fig_floor_y,x","oa":943},{"a":23531,"t":"code","b":[173,179,3],"m":"lda","o":"fig_depth","oa":947},{"a":23534,"t":"code","b":[157,179,3],"m":"sta","o":"fig_depth,x","oa":947},{"a":23537,"t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":23540,"t":"code","b":[157,154,3],"m":"sta","o":"fig_mirror,x","oa":922},{"a":23543,"t":"code","b":[96],"m":"rts"},{"a":23544,"t":"gap","n":1032},{"a":23544,"t":"note","c":"Eight bytes $00 $FF $00 $FF $00 $FF $00 $FF after copy_position, the same in the load image; no reference found. Not known to be used.","note":"outside the tracked image"},{"a":24576,"l":"house_bitmap","c":"The house picture: a multicolour bitmap of 25 character rows by 40 columns, 320 bytes a row (8 bytes a cell, top line first), $6000-$7F3F, shown through VIC bank 1 with its colours in the matrix at $5C00 and in colour RAM. It is authored data loaded with the program: between crack-screen.vsf and play-02.vsf only three bytes of the clock's hands ($6D95, $6D96, $6D9F) differ. Rows 0-2 are the text band above the roof, rows 2-7 the roof and the attic, rows 8-16 the middle storey (bedroom, stairs, bathroom, study) and rows 16-24 the ground floor (kitchen, stairs, living room). Besides the spots described at their own labels, draw_object ($96ED) redraws 16 house objects (doors, drawers, cupboards, the fire, the player's petting arm and hand) at the positions in obj_bmp_lo/hi ($9873/$9883); the row labels name them by object number. This first row: every byte is $55, so while no text is shown the band is solid colour 6, blue ($62 in the colour matrix). $BAD4 refills rows 0-1 with $55 when the band's timer $0710 runs out; $BDA2 clears rows 0-2 to 0 (colours $0C) before text is printed, and the raster IRQ then turns multicolour off above the band's bottom ($0711) so the text shows in hi-res. The label is also the base of the store at $31B8, which is rewritten at run time to address the kitchen cupboard (rows 19-20).","t":"byte","b":[85,85,85,85,85,85,85,85],"x":[12728,47837,48560]},{"a":24584,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24592,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24600,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24608,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24616,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24624,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24632,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24640,"l":"house_row00_c08","c":"Row 0, columns 8-31 of the text band: $55 fill while idle; print_char ($BB08, address from $BBEE) draws the typed line and the letters here in hi-res.","t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24648,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24656,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24664,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24672,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24680,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24688,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24696,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24704,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24712,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24720,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24728,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24736,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24744,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24752,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24760,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24768,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24776,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24784,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24792,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24800,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24808,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24816,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24824,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24832,"l":"band_fill_6100","c":"Row 0, columns 32-39 ($6100-$613F): end of the band's first row, $55. $6100 is the second page of the 256-byte loops in $BAD4 ($BAE0: $55) and $BDA2 ($BDB3: 0), which clear $6000-$63BF a page at a time.","t":"byte","b":[85,85,85,85,85,85,85,85],"x":[47840,48563]},{"a":24840,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24848,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24856,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24864,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24872,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24880,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24888,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24896,"l":"house_row01","c":"Row 1, columns 0-15: the band's second row, $55 in every byte (blue) while no text is shown; a text line when the band is in use.","t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24904,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24912,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24920,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24928,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24936,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24944,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24952,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24960,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24968,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24976,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24984,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":24992,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25000,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25008,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25016,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25024,"l":"band_fill_61c0","c":"Row 1, columns 16-23 ($61C0-$61FF), $55. $61C0 is the base of $BAD4's third store ($BAE3), which fills $61C0-$62BF with $55: the rest of row 1 and columns 0-7 of row 2.","t":"byte","b":[85,85,85,85,85,85,85,85],"x":[47843]},{"a":25032,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25040,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25048,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25056,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25064,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25072,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25080,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25088,"l":"band_fill_6200","c":"Row 1, columns 24-31 ($6200-$623F), $55. $6200 is the base of $BDA2's third store ($BDB6), which zeroes $6200-$62FF.","t":"byte","b":[85,85,85,85,85,85,85,85],"x":[48566]},{"a":25096,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25104,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25112,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25120,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25128,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25136,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25144,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25152,"l":"house_row01_c32","c":"Row 1, columns 32-39: the right end of the band's second row, $55 fill (blue sky beside the roof).","t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25160,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25168,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25176,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25184,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25192,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25200,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25208,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25216,"l":"house_row02","c":"Row 2, columns 0-7: sky left of the roof ($55), cleared with the rest of the band.","t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25224,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25232,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25240,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25248,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25256,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25264,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25272,"t":"byte","b":[85,85,85,85,85,85,85]},{"a":25279,"l":"band_fill_62bf","c":"Last byte of row 2, column 7 (sky, $55). $62BF is the base of $BDA2's last store ($BDB9), which zeroes $62BF-$63BE: the rest of row 2, where the roof ridge is.","t":"byte","b":[85],"x":[48569]},{"a":25280,"l":"roof_ridge","c":"Row 2, columns 8-15 ($62C0-$62FF): the start of the roof's top row, the left slope rising to the flat ridge. $62C0-$63BF (columns 8-39 of row 2) is identical to the 256 bytes at $BDD0, which $BAD4 ($BAE6-$BAE9) copies back here after text has blanked the band.","t":"byte","b":[85,85,85,85,85,85,86,90],"x":[47849]},{"a":25288,"t":"byte","b":[85,85,86,90,106,168,160,128]},{"a":25296,"t":"byte","b":[106,170,160,128,0,0,0,0]},{"a":25304,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25312,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25320,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25328,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25336,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25344,"l":"house_row02_c16","c":"Row 2, columns 16-39: the roof ridge (a brown line to about column 29), the right slope starting down (columns 30-31), black attic below and blue sky right of it; from $BDD0+$40 when $BAD4 restores it.","t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25352,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25360,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25368,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25376,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25384,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25392,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25400,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25408,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25416,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25424,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25432,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25440,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":25448,"t":"byte","b":[169,170,10,2,0,0,0,0]},{"a":25456,"t":"byte","b":[85,85,149,165,169,42,10,2]},{"a":25464,"t":"byte","b":[85,85,85,85,85,85,149,165]},{"a":25472,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25480,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25488,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25496,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25504,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25512,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25520,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25528,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25536,"l":"house_row03","c":"Row 3: under the roof: the two roof slopes (brown diagonals, about columns 7-8 and 31-32) with blue sky outside them, the black attic between, and the top of the upstairs closet's white door (columns 22-24; object 5, rows 3-7, which draw_object ($96ED) redraws as it opens and closes).","t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25544,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25552,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25560,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25568,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25576,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25584,"t":"byte","b":[85,85,85,85,85,85,86,90]},{"a":25592,"t":"byte","b":[85,85,86,90,106,168,160,128]},{"a":25600,"t":"byte","b":[106,168,160,128,0,0,0,0]},{"a":25608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25712,"t":"byte","b":[0,0,0,21,21,26,25,25]},{"a":25720,"t":"byte","b":[0,0,0,85,85,154,89,89]},{"a":25728,"t":"byte","b":[0,0,0,80,80,144,80,80]},{"a":25736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25784,"t":"byte","b":[86,21,5,1,0,0,0,0]},{"a":25792,"t":"byte","b":[85,85,149,165,169,42,10,2]},{"a":25800,"t":"byte","b":[85,85,85,85,85,85,149,165]},{"a":25808,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25816,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25824,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25832,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25840,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25848,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25856,"l":"house_row04","c":"Row 4: the roof slopes further out (about columns 5-6 and 33-34), sky outside, the upstairs closet door (columns 22-24, object 5).","t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25864,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25872,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25880,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":25888,"t":"byte","b":[85,85,85,85,85,85,86,90]},{"a":25896,"t":"byte","b":[85,85,86,90,106,168,160,128]},{"a":25904,"t":"byte","b":[106,168,160,128,0,0,0,0]},{"a":25912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25936,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":25992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26008,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26032,"t":"byte","b":[25,21,26,25,25,25,25,25]},{"a":26040,"t":"byte","b":[89,85,154,89,89,89,89,89]},{"a":26048,"t":"byte","b":[80,80,144,80,80,80,80,80]},{"a":26056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26112,"t":"byte","b":[0,0,0,0,0,0,0,5]},{"a":26120,"t":"byte","b":[86,21,5,1,0,0,0,255]},{"a":26128,"t":"byte","b":[85,85,149,165,169,42,10,194]},{"a":26136,"t":"byte","b":[85,85,85,85,85,85,149,165]},{"a":26144,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26152,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26160,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26168,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26176,"l":"house_row05","c":"Row 5, columns 0-8: the left roof slope and the television's aerial (columns 4-6), then the left side of the stereo cabinet (columns 7-8).","t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26184,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26192,"t":"byte","b":[85,85,85,85,85,85,86,90]},{"a":26200,"t":"byte","b":[85,85,86,90,106,168,160,128]},{"a":26208,"t":"byte","b":[106,168,160,128,48,12,3,0]},{"a":26216,"t":"byte","b":[0,0,0,0,1,4,16,128]},{"a":26224,"t":"byte","b":[0,0,16,64,0,0,0,0]},{"a":26232,"t":"byte","b":[0,0,0,0,0,0,85,65]},{"a":26240,"t":"byte","b":[85,64,66,85,85,64,85,0]},{"a":26248,"l":"turntable_cells","c":"Row 5, columns 9-10 ($6688-$6697): the record on the stereo's turntable. While turntable_on ($2B45) is set, $2DBB copies one of four 16-byte frames from $2D72 here every eighth main-loop pass ($96DD counts 0-3), moving a gap along the record's edge so it seems to turn; $2DB2 puts frame 0 back when stereo_off stops the music.","t":"byte","b":[64,68,170,85,85,0,85,0],"x":[11738]},{"a":26256,"t":"byte","b":[0,0,80,128,128,128,170,32]},{"a":26264,"l":"house_row05_c11","c":"Row 5, columns 11-24: the right side of the stereo, the top of the purple armchair's back (about column 14), the green piano (columns 17-20) and the upstairs closet door (columns 22-24, object 5).","t":"byte","b":[0,0,0,0,0,0,64,64]},{"a":26272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26280,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26288,"t":"byte","b":[0,0,0,0,0,0,0,20]},{"a":26296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26312,"t":"byte","b":[0,21,21,21,21,21,21,34]},{"a":26320,"t":"byte","b":[0,85,106,170,170,170,170,34]},{"a":26328,"t":"byte","b":[0,85,106,170,170,170,170,34]},{"a":26336,"t":"byte","b":[0,85,85,149,149,149,149,34]},{"a":26344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26352,"t":"byte","b":[25,21,21,21,26,25,25,25]},{"a":26360,"t":"byte","b":[89,85,85,85,154,89,89,89]},{"a":26368,"t":"byte","b":[80,80,144,80,144,80,80,80]},{"a":26376,"l":"typewriter_paper","c":"Row 5, column 25 ($6708-$670F): left edge of the space above the typewriter where the sheet of paper appears while he types a letter. $57EB clears it (and the rest of the paper area) to 0; the paper drawing at $5760 only writes columns 26-29.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[22523]},{"a":26384,"l":"paper_row5_c26","c":"Row 5, column 26: part of the typewriter's sheet of paper. $5760 draws the sheet, eight lines of the patterns at $57C3-$57CF picked by the carriage position ($5756: from the print cursor $8C/$8D, 0-8), showing only the bottom $54E0 lines (one more per typed line, up to 8); $57EB blanks it.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[22436,22520]},{"a":26392,"l":"paper_row5_c27","c":"Row 5, column 27: the sheet of paper in the typewriter, second column (pattern table $57C7).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[22444,22517]},{"a":26400,"l":"paper_row5_c28","c":"Row 5, column 28: the sheet of paper in the typewriter, third column (pattern table $57CB).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[22452,22514]},{"a":26408,"l":"paper_row5_c29","c":"Row 5, column 29: the sheet of paper in the typewriter, fourth column (pattern table $57CF).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[22460,22511]},{"a":26416,"l":"house_row05_c30","c":"Row 5, columns 30-39: black attic right of the paper, the green filing cabinet (columns 32-34) and the right roof slope with sky outside.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26432,"t":"byte","b":[5,5,5,5,5,5,5,4]},{"a":26440,"t":"byte","b":[85,69,85,85,85,85,85,0]},{"a":26448,"t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":26456,"t":"byte","b":[86,21,5,1,0,0,0,0]},{"a":26464,"t":"byte","b":[85,85,149,165,169,42,10,2]},{"a":26472,"t":"byte","b":[85,85,85,85,85,85,149,165]},{"a":26480,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26488,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26496,"l":"house_row06","c":"Row 6, columns 0-24: the attic's furniture at floor level: the television set (columns 4-5; while tv_on ($2B4A) is set, $2D59 gives its screen cells a random colour in colour RAM at $D8F5/$D91D every fourth pass), the stereo cabinet with its speaker grille (columns 7-11), the purple armchair (columns 12-14), the green piano with its stool (columns 17-21) and the upstairs closet door (columns 22-24, object 5).","t":"byte","b":[85,85,85,85,85,85,86,90]},{"a":26504,"t":"byte","b":[85,85,86,90,106,168,160,128]},{"a":26512,"t":"byte","b":[106,168,160,128,0,0,0,0]},{"a":26520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26528,"t":"byte","b":[1,42,42,42,170,170,170,170]},{"a":26536,"t":"byte","b":[80,170,175,175,175,175,175,175]},{"a":26544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26552,"t":"byte","b":[65,65,65,65,65,65,65,85]},{"a":26560,"t":"byte","b":[17,17,17,17,17,17,17,0]},{"a":26568,"t":"byte","b":[17,17,17,17,17,17,17,0]},{"a":26576,"t":"byte","b":[16,16,16,16,16,16,16,21]},{"a":26584,"t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":26592,"t":"byte","b":[0,0,0,0,0,0,21,85]},{"a":26600,"t":"byte","b":[0,0,1,1,1,1,85,85]},{"a":26608,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26632,"t":"byte","b":[21,106,106,106,106,26,26,26]},{"a":26640,"t":"byte","b":[85,170,170,170,170,165,169,170]},{"a":26648,"t":"byte","b":[85,170,170,170,170,86,90,106]},{"a":26656,"t":"byte","b":[85,170,170,170,170,169,169,169]},{"a":26664,"t":"byte","b":[0,64,64,64,64,0,0,0]},{"a":26672,"t":"byte","b":[25,25,25,25,25,25,21,21]},{"a":26680,"t":"byte","b":[89,89,89,89,89,89,85,85]},{"a":26688,"t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":26696,"l":"paper_row6_c25","c":"Row 6, column 25, lines 0-1 ($6848-$6849): the typewriter below the paper; $57EB sets them to 0. Lines 2-7 are the typewriter and desk, never changed.","t":"byte","b":[0,0,0,0,0,1,5,21],"x":[22533]},{"a":26704,"l":"paper_row6_c26","c":"Row 6, column 26, lines 0-1: the left end of the typewriter's purple carriage. $5760 redraws lines 0-1 of columns 26-29 from $57D7, $57DB, $57DF and $57E3 at the carriage position, so the carriage slides as he types; $57EB puts back the resting typewriter (this cell 0).","t":"byte","b":[0,0,3,23,87,87,87,85],"x":[22388,22536]},{"a":26712,"l":"paper_row6_c27","c":"Row 6, column 27, lines 0-1: the typewriter's carriage (from $57DB; $FF, solid, in the resting state set by $57EB).","t":"byte","b":[255,255,255,255,255,255,85,85],"x":[22394,22544]},{"a":26720,"l":"paper_row6_c28","c":"Row 6, column 28, lines 0-1: the typewriter's carriage (from $57DF; $FF at rest).","t":"byte","b":[255,255,255,255,255,255,85,85],"x":[22400,22547]},{"a":26728,"l":"paper_row6_c29","c":"Row 6, column 29, lines 0-1: the right end of the typewriter's carriage (from $57E3; 0 at rest).","t":"byte","b":[0,0,192,213,213,213,213,85],"x":[22406,22539]},{"a":26736,"l":"house_row06_c30","c":"Row 6, columns 30-39: the right end of the typing desk (to column 31), the filing cabinet's drawer (columns 32-34, rows 6-7: object 11, drawn closed, half open or open by draw_object ($96ED)) and the right roof slope.","t":"byte","b":[0,0,0,84,85,85,85,85]},{"a":26744,"t":"byte","b":[0,0,0,0,0,64,80,84]},{"a":26752,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":26760,"t":"byte","b":[85,85,69,85,85,85,85,85]},{"a":26768,"t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":26776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":26792,"t":"byte","b":[86,21,5,1,0,0,0,0]},{"a":26800,"t":"byte","b":[85,85,149,165,169,42,10,2]},{"a":26808,"t":"byte","b":[85,85,85,85,85,85,149,165]},{"a":26816,"l":"house_row07","c":"Row 7: the attic floor: grey rugs, the yellow rug under the stereo (columns 7-10), the foot of the closet door (object 5), the legs of the typing desk (columns 25-31), the lower part of the filing-cabinet drawer (object 11) and the lower ends of the roof at both sides.","t":"byte","b":[106,170,170,170,170,170,170,170]},{"a":26824,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26832,"t":"byte","b":[85,85,85,85,85,90,86,170]},{"a":26840,"t":"byte","b":[85,90,86,170,106,170,170,170]},{"a":26848,"t":"byte","b":[85,85,149,149,149,128,138,138]},{"a":26856,"t":"byte","b":[95,95,85,68,85,0,168,168]},{"a":26864,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26872,"t":"byte","b":[85,85,90,106,106,106,90,85]},{"a":26880,"t":"byte","b":[85,170,170,170,170,170,170,170]},{"a":26888,"t":"byte","b":[85,170,170,170,170,170,170,170]},{"a":26896,"t":"byte","b":[85,149,169,170,170,170,169,149]},{"a":26904,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":26912,"t":"byte","b":[85,149,160,165,165,165,165,170]},{"a":26920,"t":"byte","b":[85,85,85,85,85,106,106,170]},{"a":26928,"t":"byte","b":[85,85,85,85,85,149,149,170]},{"a":26936,"t":"byte","b":[85,165,149,170,169,170,170,170]},{"a":26944,"t":"byte","b":[85,85,85,85,85,165,149,170]},{"a":26952,"t":"byte","b":[101,149,85,85,85,85,85,85]},{"a":26960,"t":"byte","b":[85,85,85,86,85,85,85,85]},{"a":26968,"t":"byte","b":[106,106,106,154,170,170,170,170]},{"a":26976,"t":"byte","b":[86,85,85,85,85,85,85,85]},{"a":26984,"t":"byte","b":[85,149,85,85,85,85,85,85]},{"a":26992,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27000,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27008,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27016,"t":"byte","b":[170,149,149,149,149,149,154,154]},{"a":27024,"t":"byte","b":[170,85,85,85,85,85,170,170]},{"a":27032,"t":"byte","b":[170,85,85,85,85,85,170,170]},{"a":27040,"t":"byte","b":[170,85,85,85,85,85,170,170]},{"a":27048,"t":"byte","b":[170,85,85,85,85,85,170,170]},{"a":27056,"t":"byte","b":[170,85,85,85,85,85,170,170]},{"a":27064,"t":"byte","b":[170,86,86,86,86,86,166,166]},{"a":27072,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27080,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27088,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27096,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27104,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27112,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27120,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27128,"t":"byte","b":[86,85,85,85,85,85,85,85]},{"a":27136,"l":"house_row08","c":"Row 8: the thick floor between the attic and the storey below: the lower edge of the attic's grey rug along the top (columns 0-18) and brown below.","t":"byte","b":[85,85,85,85,85,90,85,85]},{"a":27144,"t":"byte","b":[85,90,86,170,106,170,85,85]},{"a":27152,"t":"byte","b":[106,170,170,170,170,170,85,85]},{"a":27160,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27168,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27176,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27184,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27192,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27200,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27208,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27216,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27224,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27232,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27240,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27248,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27256,"t":"byte","b":[85,85,85,85,85,85,170,170]},{"a":27264,"t":"byte","b":[86,85,85,85,85,85,170,170]},{"a":27272,"t":"byte","b":[85,165,149,170,169,170,85,85]},{"a":27280,"t":"byte","b":[85,85,85,85,85,165,85,85]},{"a":27288,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27296,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27304,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27312,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27320,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27328,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27336,"t":"byte","b":[154,154,170,170,170,170,170,170]},{"a":27344,"t":"byte","b":[170,170,170,170,170,170,170,170]},{"a":27352,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27360,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27368,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27376,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27384,"t":"byte","b":[89,89,85,85,85,85,85,85]},{"a":27392,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27400,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27408,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27416,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27424,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27432,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27440,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27448,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":27456,"l":"house_row09","c":"Row 9: the top of the upper storey: black walls, the side walls (columns 0 and 39), the wall between bathroom and study (column 30) and the top of the stairs to the attic (columns 20-22).","t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":27464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27472,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27480,"t":"byte","b":[0,0,0,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,0,0,0]},{"a":27536,"t":"byte","b":[0,0,0,0,0,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":[16,16,16,16,16,16,16,16]},{"a":27592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27600,"t":"byte","b":[0,0,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,21]},{"a":27632,"t":"byte","b":[1,1,1,169,85,64,64,64]},{"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,0,0,0,0,0,0]},{"a":27664,"t":"byte","b":[0,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":[64,64,64,64,64,64,64,64]},{"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,0]},{"a":27720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27728,"t":"byte","b":[0,0,0,0,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":[5,5,5,5,5,5,5,5]},{"a":27776,"l":"house_row10","c":"Row 10, columns 0-33: the stairs to the attic (about columns 19-22) and the upper rim of the wall clock in the study (column 33).","t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":27784,"t":"byte","b":[0,0,0,0,0,0,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,0]},{"a":27840,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27848,"t":"byte","b":[0,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":[16,16,16,16,16,16,16,16]},{"a":27912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":27928,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":27936,"t":"byte","b":[0,0,0,5,10,8,8,88]},{"a":27944,"t":"byte","b":[21,16,16,144,80,0,0,0]},{"a":27952,"t":"byte","b":[64,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,0,0,0]},{"a":27984,"t":"byte","b":[0,0,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":[64,64,64,64,64,64,64,64]},{"a":28024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28032,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28040,"t":"byte","b":[0,0,0,1,2,1,1,2]},{"a":28048,"l":"clock_centre_top","c":"Row 10, columns 34-35 ($6D90-$6D9F): the upper middle of the study's wall clock. draw_wall_clock ($0AAC) copies a clean face here from clock_face_top ($0D1A), then draw_clock_hand ($0C5A) clears pixels (AND at $0CCE-$0CD3) along each hand, so these are the only bitmap bytes that differ between the crack-screen and play-02 snapshots.","t":"byte","b":[6,149,84,84,84,68,80,84],"x":[2742,3278,3283]},{"a":28056,"t":"byte","b":[64,88,84,85,86,85,85,86]},{"a":28064,"l":"house_row10_c36","c":"Row 10, columns 36-39: the clock's right rim and the wall above the computer.","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":[5,5,5,5,5,5,5,5]},{"a":28096,"l":"house_row11","c":"Row 11, columns 0-33: the tops of the bedroom closet's white door (columns 9-11, object 4, rows 11-15) and the dresser's mirror (columns 12-15), the stairs (columns 16-22), the mirror cabinet over the bathroom sink (columns 21-22, object 6, rows 11-13), the bathroom door (columns 23-25, object 3, rows 11-15), the shower pipe (columns 26-29), the bookcase (columns 30-32) and the clock's left rim. The three objects are redrawn by draw_object ($96ED) when they open.","t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":28104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28120,"t":"byte","b":[0,0,0,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,0]},{"a":28160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28168,"t":"byte","b":[0,0,0,21,21,26,25,25]},{"a":28176,"t":"byte","b":[0,0,0,85,85,154,89,89]},{"a":28184,"t":"byte","b":[0,0,0,80,80,144,80,80]},{"a":28192,"t":"byte","b":[0,0,0,1,2,2,2,2]},{"a":28200,"t":"byte","b":[0,1,21,85,170,170,170,170]},{"a":28208,"t":"byte","b":[64,80,85,85,170,170,170,170]},{"a":28216,"t":"byte","b":[0,0,0,80,160,160,160,160]},{"a":28224,"t":"byte","b":[16,16,16,16,16,16,16,26]},{"a":28232,"t":"byte","b":[0,0,0,0,0,0,0,85]},{"a":28240,"t":"byte","b":[0,0,0,0,0,0,0,85]},{"a":28248,"t":"byte","b":[1,1,1,169,85,64,64,64]},{"a":28256,"t":"byte","b":[84,0,0,2,2,2,2,2]},{"a":28264,"t":"byte","b":[0,0,0,85,170,170,170,170]},{"a":28272,"t":"byte","b":[0,0,0,85,169,169,169,169]},{"a":28280,"t":"byte","b":[0,0,0,5,5,5,5,5]},{"a":28288,"t":"byte","b":[0,0,0,85,85,85,85,81]},{"a":28296,"t":"byte","b":[0,0,0,80,80,80,80,80]},{"a":28304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28312,"t":"byte","b":[5,20,16,84,0,0,0,0]},{"a":28320,"t":"byte","b":[85,0,0,0,0,0,0,0]},{"a":28328,"t":"byte","b":[64,80,16,16,16,16,16,16]},{"a":28336,"t":"byte","b":[64,64,64,106,96,96,97,97]},{"a":28344,"t":"byte","b":[0,0,0,85,0,0,128,128]},{"a":28352,"t":"byte","b":[0,0,0,85,1,1,1,1]},{"a":28360,"t":"byte","b":[1,1,2,1,0,0,0,0]},{"a":28368,"l":"clock_centre_bottom","c":"Row 11, columns 34-35 ($6ED0-$6EDF): the lower middle of the wall clock, copied from clock_face_bottom ($0D2A) by draw_wall_clock before draw_clock_hand clears the pixels of hands pointing below the centre ($0CDD-$0CE2).","t":"byte","b":[85,85,85,85,85,149,6,0],"x":[2748,3293,3298]},{"a":28376,"t":"byte","b":[85,85,86,85,84,88,64,0]},{"a":28384,"l":"house_row11_c36","c":"Row 11, columns 36-39: the clock's lower rim and the top of the computer's monitor (columns 36-38).","t":"byte","b":[0,0,0,0,0,0,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":[5,5,5,5,5,5,5,5]},{"a":28416,"l":"house_row12","c":"Row 12, columns 0-35: the bed's green headboard (columns 1-6), the bedroom closet door (object 4), the dresser's mirror, the stair banister, the mirror cabinet (object 6), the bathroom door (object 3), the shower, the bookcase and the top of the computer desk.","t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":28424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28432,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28440,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":28448,"t":"byte","b":[0,0,0,0,0,0,0,64]},{"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":[25,21,26,25,25,25,25,25]},{"a":28496,"t":"byte","b":[89,85,154,89,89,89,89,89]},{"a":28504,"t":"byte","b":[80,80,144,80,80,80,80,80]},{"a":28512,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":28520,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":28528,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":28536,"t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":28544,"t":"byte","b":[16,17,17,26,16,17,17,26]},{"a":28552,"t":"byte","b":[0,85,85,170,0,85,85,170]},{"a":28560,"t":"byte","b":[0,84,84,170,0,84,84,170]},{"a":28568,"t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":28576,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":28584,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":28592,"t":"byte","b":[86,86,86,86,86,86,86,86]},{"a":28600,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":28608,"t":"byte","b":[69,69,81,85,85,85,85,85]},{"a":28616,"t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":28624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28648,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":28656,"t":"byte","b":[97,97,97,97,97,106,96,96]},{"a":28664,"t":"byte","b":[64,64,64,64,64,170,0,0]},{"a":28672,"t":"byte","b":[82,82,82,82,82,170,2,2]},{"a":28680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28704,"l":"comp_scr_c36","c":"Row 12, column 36 ($7020-$7027): the left third of the computer's screen. With rows 12-13 of columns 36-38 it forms a 9-line display (lines 3-7 here, 0-3 in row 13) that activity 20 (the computer, $5825-$5B28) fills with dots: $5A8E plots them (AND/ORA at $5AB4/$5ABA) and $5921-$5984 scrolls the display up a line. Also the base for column 36 in the plot.","t":"byte","b":[0],"x":[22825,23220,23226]},{"a":28705,"l":"comp_scr_c36_l1","c":"Row 12, column 36, line 1: source of the screen scroll's copy loop ($5926 reads $7021+X, X = 3-6, into $7020+X), i.e. lines 4-7 move up to 3-6.","t":"byte","b":[21,20],"x":[22822]},{"a":28707,"l":"comp_scr_c36_l3","c":"Row 12, column 36, line 3: top line of the computer screen's display area; $5AFF blanks it with $10 (the screen's left edge).","t":"byte","b":[16],"x":[23305]},{"a":28708,"l":"comp_scr_c36_l4","c":"Row 12, column 36, line 4: second line of the computer display; $5AFF also writes $10 here (it stores to $7024+X as well as $7023+X).","t":"byte","b":[16,16,16],"x":[23308]},{"a":28711,"l":"comp_scr_c36_l7","c":"Row 12, column 36, line 7: the screen scroll copies row 13's line 0 ($7160) up into this line ($5940).","t":"byte","b":[16],"x":[22848]},{"a":28712,"l":"comp_scr_c37","c":"Row 12, column 37 ($7028-$702F): the middle third of the computer screen (scroll loop destination at $592F).","t":"byte","b":[0],"x":[22831]},{"a":28713,"l":"comp_scr_c37_l1","c":"Row 12, column 37, line 1: source of the middle column's scroll copy ($592C).","t":"byte","b":[85,0],"x":[22828]},{"a":28715,"l":"comp_scr_c37_l3","c":"Row 12, column 37, line 3: top line of the display's middle column, blanked to 0 by $5AFF ($5B14).","t":"byte","b":[0],"x":[23316]},{"a":28716,"l":"comp_scr_c37_l4","c":"Row 12, column 37, line 4: blanked to 0 with line 3 by $5AFF ($5B17).","t":"byte","b":[0,0,0],"x":[23319]},{"a":28719,"l":"comp_scr_c37_l7","c":"Row 12, column 37, line 7: receives row 13 column 37's line 0 ($7168) in the scroll ($5946).","t":"byte","b":[0],"x":[22854]},{"a":28720,"l":"comp_scr_c38","c":"Row 12, column 38 ($7030-$7037): the right third of the computer screen (scroll destination at $5935).","t":"byte","b":[0],"x":[22837]},{"a":28721,"l":"comp_scr_c38_l1","c":"Row 12, column 38, line 1: source of the right column's scroll copy ($5932).","t":"byte","b":[85,5],"x":[22834]},{"a":28723,"l":"comp_scr_c38_l3","c":"Row 12, column 38, line 3: top line of the display's right column, set to 1 (the screen's right edge) by $5AFF ($5B1F).","t":"byte","b":[1],"x":[23327]},{"a":28724,"l":"comp_scr_c38_l4","c":"Row 12, column 38, line 4: set to 1 with line 3 by $5AFF ($5B22).","t":"byte","b":[1,1,1],"x":[23330]},{"a":28727,"l":"comp_scr_c38_l7","c":"Row 12, column 38, line 7: receives row 13 column 38's line 0 ($7170) in the scroll ($594C). The next 8 bytes are column 39, the study's right wall.","t":"byte","b":[1,5,5,5,5,5,5,5],"x":[22860]},{"a":28735,"t":"byte","b":[5]},{"a":28736,"l":"house_row13","c":"Row 13, columns 0-6: the bed's green headboard (columns 1-6) against the wall.","t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":28744,"t":"byte","b":[1,0,1,1,1,1,1,1]},{"a":28752,"t":"byte","b":[0,0,1,5,85,85,85,85]},{"a":28760,"t":"byte","b":[5,21,85,85,85,85,85,85]},{"a":28768,"t":"byte","b":[80,84,85,85,85,85,85,85]},{"a":28776,"t":"byte","b":[0,0,64,80,85,85,85,85]},{"a":28784,"t":"byte","b":[64,0,64,64,64,64,64,64]},{"a":28792,"t":"byte","b":[0]},{"a":28793,"l":"alarm_bell_l","c":"Row 13, column 7, lines 1-7 ($7079-$707F): the left half of the alarm clock on the bedroom nightstand. While the alarm rings (CTRL A, or the morning alarm of daily_schedule) $2A79 counts $2B4F down and every fourth call ($2A8D) copies seven bytes from $2AB1 here, starting one byte later when bit 2 of $2B4F is set, so the bell jumps a line up and down.","t":"byte","b":[0,21,85,81,85,21,64,0],"x":[10913]},{"a":28801,"l":"alarm_bell_r","c":"Row 13, column 8, lines 1-7 ($7081-$7087): the right half of the alarm clock, from $2AB9 in the same animation.","t":"byte","b":[0,0,64,64,64,0,64],"x":[10919]},{"a":28808,"l":"house_row13_c09","c":"Row 13, columns 9-35: the bedroom closet door (object 4), the dresser, the stairs, the sink under the mirror cabinet (object 6's last row), the bathroom door (object 3), the shower, the bookcase with its cupboard (columns 30-31, rows 13-15, object 13) and the computer keyboard on the desk (about columns 33-35).","t":"byte","b":[25,21,21,21,26,25,25,25]},{"a":28816,"t":"byte","b":[89,85,85,85,154,89,89,89]},{"a":28824,"t":"byte","b":[80,80,144,80,144,80,80,80]},{"a":28832,"t":"byte","b":[1,1,1,1,1,1,1,0]},{"a":28840,"t":"byte","b":[85,85,85,85,85,85,85,0]},{"a":28848,"t":"byte","b":[85,85,85,85,85,85,85,0]},{"a":28856,"t":"byte","b":[80,80,80,80,80,80,80,0]},{"a":28864,"t":"byte","b":[16,17,17,26,16,17,17,26]},{"a":28872,"t":"byte","b":[0,85,85,170,0,85,85,170]},{"a":28880,"t":"byte","b":[0,84,84,170,0,84,84,170]},{"a":28888,"t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":28896,"t":"byte","b":[1,1,0,0,68,16,0,85]},{"a":28904,"t":"byte","b":[85,170,0,0,136,32,0,168]},{"a":28912,"t":"byte","b":[86,170,0,0,0,0,0,0]},{"a":28920,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":28928,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":28936,"t":"byte","b":[80,80,16,80,80,80,80,80]},{"a":28944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":28968,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":28976,"t":"byte","b":[96,96,96,96,96,96,96,106]},{"a":28984,"t":"byte","b":[0,0,20,20,20,20,20,170]},{"a":28992,"t":"byte","b":[82,82,82,82,82,82,82,170]},{"a":29000,"t":"byte","b":[0,0,0,0,1,4,10,10]},{"a":29008,"t":"byte","b":[0,0,0,68,17,68,170,170]},{"a":29016,"t":"byte","b":[0,0,0,64,16,68,168,168]},{"a":29024,"l":"comp_scr2_c36","c":"Row 13, column 36 ($7160-$7167): lower-left part of the computer screen (display lines 5-8 are this cell's lines 0-3). Plot target when the row index's bit 7 is set ($5AC4/$5ACA), scroll destination ($5954); $5B06 blanks it to $10; $590B, indexed from here by $5913 (3, $0B, $13), writes the pattern bytes at $591A into the display's bottom line ($7163, $716B, $7173).","t":"byte","b":[16],"x":[22795,22845,22868,23236,23242,23302]},{"a":29025,"l":"comp_scr2_c36_l1","c":"Row 13, column 36, line 1: source of the lower screen's scroll copy ($5951: lines 1-3 move up to 0-2).","t":"byte","b":[16,16],"x":[22865]},{"a":29027,"l":"comp_scr2_c36_l3","c":"Row 13, column 36, line 3: bottom line of the computer display; after each scroll $596D writes $10 (a blank line with the left edge) here.","t":"byte","b":[16,20,21,20,21],"x":[22893]},{"a":29032,"l":"comp_scr2_c37","c":"Row 13, column 37 ($7168-$716F): lower middle of the computer screen: scroll source for the line above ($5943) and destination ($595A); $5B11 blanks it.","t":"byte","b":[0],"x":[22851,22874,23313]},{"a":29033,"l":"comp_scr2_c37_l1","c":"Row 13, column 37, line 1: source of the middle column's lower scroll copy ($5957).","t":"byte","b":[0,0],"x":[22871]},{"a":29035,"l":"comp_scr2_c37_l3","c":"Row 13, column 37, line 3: bottom line of the display's middle column, zeroed after each scroll ($5972).","t":"byte","b":[0,0,85,68,85],"x":[22898]},{"a":29040,"l":"comp_scr2_c38","c":"Row 13, column 38 ($7170-$7177): lower right of the computer screen: scroll source ($5949) and destination ($5960); $5B1C sets it to 1.","t":"byte","b":[1],"x":[22857,22880,23324]},{"a":29041,"l":"comp_scr2_c38_l1","c":"Row 13, column 38, line 1: source of the right column's lower scroll copy ($595D).","t":"byte","b":[1,1],"x":[22877]},{"a":29043,"l":"comp_scr2_c38_l3","c":"Row 13, column 38, line 3: bottom line of the display's right column, set to 1 (right edge) after each scroll ($5979). Bytes $7174-$717F are the monitor's frame and column 39.","t":"byte","b":[1,5,85,69,85,5,5,5],"x":[22905]},{"a":29051,"t":"byte","b":[5,5,5,5,5]},{"a":29056,"l":"house_row14","c":"Row 14: the lower part of the middle storey's furniture: the bed, the nightstand's drawer (columns 6-8, object 9), the feet of the closet and bathroom doors (objects 4 and 3), the dresser's drawer (columns 12-16, object 10), the foot of the stairs, the sink's stand, the bathtub, the bookcase cupboard (object 13), the computer desk and its chair. The drawers are redrawn by draw_object ($96ED).","t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":29064,"t":"byte","b":[1,1,1,1,1,1,1,2]},{"a":29072,"t":"byte","b":[106,170,170,170,170,170,170,170]},{"a":29080,"t":"byte","b":[86,85,85,85,85,85,85,85]},{"a":29088,"t":"byte","b":[106,170,170,170,170,170,170,170]},{"a":29096,"t":"byte","b":[86,85,85,85,85,85,85,85]},{"a":29104,"t":"byte","b":[65,65,65,65,65,65,65,129]},{"a":29112,"t":"byte","b":[85,21,85,0,85,21,85,0]},{"a":29120,"t":"byte","b":[80,32,80,32,80,32,80,32]},{"a":29128,"t":"byte","b":[25,25,25,25,25,25,21,21]},{"a":29136,"t":"byte","b":[89,89,89,89,89,89,85,85]},{"a":29144,"t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":29152,"t":"byte","b":[5,4,5,8,5,4,5,8]},{"a":29160,"t":"byte","b":[85,85,85,0,85,85,85,0]},{"a":29168,"t":"byte","b":[85,85,85,0,85,85,85,0]},{"a":29176,"t":"byte","b":[84,68,84,4,84,68,84,4]},{"a":29184,"t":"byte","b":[16,17,17,26,16,17,17,21]},{"a":29192,"t":"byte","b":[0,85,85,170,0,85,85,85]},{"a":29200,"t":"byte","b":[0,84,84,170,0,84,84,85]},{"a":29208,"t":"byte","b":[66,66,66,64,64,64,64,64]},{"a":29216,"t":"byte","b":[85,170,170,2,2,2,2,2]},{"a":29224,"t":"byte","b":[86,170,170,0,0,0,0,0]},{"a":29232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":29240,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":29248,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29256,"t":"byte","b":[82,82,80,80,80,80,80,80]},{"a":29264,"t":"byte","b":[85,85,85,85,21,21,5,1]},{"a":29272,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29280,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29288,"t":"byte","b":[80,80,80,80,80,80,80,64]},{"a":29296,"t":"byte","b":[106,106,106,106,106,106,106,106]},{"a":29304,"t":"byte","b":[68,85,85,85,85,85,85,85]},{"a":29312,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29320,"t":"byte","b":[5,4,4,4,4,4,4,4]},{"a":29328,"t":"byte","b":[85,0,0,0,0,85,4,4]},{"a":29336,"t":"byte","b":[85,0,0,0,0,64,0,0]},{"a":29344,"t":"byte","b":[85,0,0,0,0,0,0,0]},{"a":29352,"t":"byte","b":[85,0,0,0,0,0,0,0]},{"a":29360,"t":"byte","b":[85,1,1,1,1,1,1,1]},{"a":29368,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":29376,"l":"house_row15","c":"Row 15: the middle storey's floor: the bed's checked blanket (columns 1-7), the bedroom floor, the bathroom's checked floor (columns 20-29) and the study's green carpet (columns 30-38); the bottom rows of objects 3, 4 and 13 (the two doors and the bookcase cupboard) reach into it.","t":"byte","b":[85,86,85,86,86,86,86,86]},{"a":29384,"t":"byte","b":[91,126,190,235,235,190,190,235]},{"a":29392,"t":"byte","b":[105,150,150,105,105,150,150,105]},{"a":29400,"t":"byte","b":[105,150,150,105,105,150,150,105]},{"a":29408,"t":"byte","b":[105,150,150,105,105,150,150,105]},{"a":29416,"t":"byte","b":[105,150,150,105,105,150,150,105]},{"a":29424,"t":"byte","b":[111,151,150,105,105,150,150,105]},{"a":29432,"t":"byte","b":[85,149,85,149,149,149,149,149]},{"a":29440,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29448,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29456,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29464,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29472,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29480,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29488,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29496,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29504,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29512,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29520,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29528,"t":"byte","b":[107,110,122,110,107,110,122,110]},{"a":29536,"t":"byte","b":[86,222,122,234,87,221,117,221]},{"a":29544,"t":"byte","b":[86,153,229,249,86,153,101,153]},{"a":29552,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":29560,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":29568,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":29576,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":29584,"t":"byte","b":[86,153,103,155,86,153,101,153]},{"a":29592,"t":"byte","b":[85,110,122,110,171,238,186,238]},{"a":29600,"t":"byte","b":[85,185,237,185,254,187,239,187]},{"a":29608,"t":"byte","b":[86,153,229,217,86,153,101,153]},{"a":29616,"t":"byte","b":[106,106,106,106,106,106,106,106]},{"a":29624,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29632,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29640,"t":"byte","b":[89,85,85,85,85,85,85,85]},{"a":29648,"t":"byte","b":[89,89,110,119,85,85,85,85]},{"a":29656,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29664,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29672,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29680,"t":"byte","b":[86,85,85,85,85,85,85,85]},{"a":29688,"t":"byte","b":[90,90,90,90,90,90,90,90]},{"a":29696,"l":"house_row16","c":"Row 16: the front edge of the upper floor, which is also the ground floor's ceiling: the bed's green frame (columns 0-7), the yellow rug (columns 8-15), the bathroom's checks and the study's green carpet, brown elsewhere.","t":"byte","b":[86,86,86,86,85,85,85,85]},{"a":29704,"t":"byte","b":[85,85,170,170,170,170,170,170]},{"a":29712,"t":"byte","b":[85,85,170,170,170,170,170,170]},{"a":29720,"t":"byte","b":[85,85,170,170,170,170,170,170]},{"a":29728,"t":"byte","b":[85,85,170,170,170,170,170,170]},{"a":29736,"t":"byte","b":[85,85,170,170,170,170,170,170]},{"a":29744,"t":"byte","b":[85,85,170,170,170,170,170,170]},{"a":29752,"t":"byte","b":[106,106,106,106,170,170,170,170]},{"a":29760,"t":"byte","b":[86,165,149,169,165,170,169,170]},{"a":29768,"t":"byte","b":[85,149,149,101,101,89,89,170]},{"a":29776,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29784,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29792,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29800,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29808,"t":"byte","b":[101,89,89,86,86,85,85,170]},{"a":29816,"t":"byte","b":[106,170,90,106,86,154,149,170]},{"a":29824,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29832,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29840,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":29848,"t":"byte","b":[107,110,122,110,107,110,122,85]},{"a":29856,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29864,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29872,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29880,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29888,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29896,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29904,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29912,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29920,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29928,"t":"byte","b":[86,153,101,153,86,153,101,255]},{"a":29936,"t":"byte","b":[106,106,106,106,106,106,106,85]},{"a":29944,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29952,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29960,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29968,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29976,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29984,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":29992,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":30000,"t":"byte","b":[85,85,85,85,85,85,85,170]},{"a":30008,"t":"byte","b":[90,90,90,90,90,90,90,170]},{"a":30016,"l":"house_row17","c":"Row 17: the top of the ground floor: the cord of the kitchen's hanging lamp (column 15) and the top of the stairs down (columns 17-19).","t":"byte","b":[80,80,80,80,80,80,80,80]},{"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,0]},{"a":30080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30128,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30136,"t":"byte","b":[0,64,0,64,0,64,0,64]},{"a":30144,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30152,"t":"byte","b":[64,64,64,106,85,1,1,1]},{"a":30160,"t":"byte","b":[0,0,0,0,0,0,0,84]},{"a":30168,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30176,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30184,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30192,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30200,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":30208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30216,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30224,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30272,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":30280,"t":"byte","b":[0,0,0,0,0,0,0,85]},{"a":30288,"t":"byte","b":[0,0,0,0,0,0,0,85]},{"a":30296,"t":"byte","b":[0,0,0,0,0,0,0,80]},{"a":30304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30328,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":30336,"l":"house_row18","c":"Row 18: kitchen and living room, upper walls: a white shelf (columns 0-1), the top of the food cupboard (columns 5-8), the window's awning (columns 9-11), the lamp cord, the stairs (columns 17-19), and the top of the picture on the living-room wall (columns 32-35).","t":"byte","b":[80,80,80,80,80,80,88,90]},{"a":30344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30376,"t":"byte","b":[0,0,0,0,0,1,1,1]},{"a":30384,"t":"byte","b":[0,0,0,0,0,85,0,0]},{"a":30392,"t":"byte","b":[0,0,0,0,0,85,0,0]},{"a":30400,"t":"byte","b":[0,0,0,0,0,80,16,16]},{"a":30408,"t":"byte","b":[0,0,0,0,102,102,102,119]},{"a":30416,"t":"byte","b":[0,0,0,0,102,102,102,119]},{"a":30424,"t":"byte","b":[0,0,0,0,100,100,100,116]},{"a":30432,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30448,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30456,"t":"byte","b":[0,64,0,64,0,64,0,64]},{"a":30464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30472,"t":"byte","b":[1,0,0,0,0,0,0,0]},{"a":30480,"t":"byte","b":[84,4,4,6,5,0,0,0]},{"a":30488,"t":"byte","b":[0,0,0,80,160,32,32,37]},{"a":30496,"t":"byte","b":[0,0,0,0,0,0,0,64]},{"a":30504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30520,"t":"byte","b":[4,4,4,4,4,4,4,4]},{"a":30528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30592,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":30600,"t":"byte","b":[85,85,85,86,90,106,127,115]},{"a":30608,"t":"byte","b":[85,85,149,165,169,170,255,51]},{"a":30616,"t":"byte","b":[96,96,96,96,96,96,96,96]},{"a":30624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30640,"t":"byte","b":[0,0]},{"a":30642,"c":"Row 18, column 38, lines 2-7, and column 39: black wall above the front door and the house's right wall. No instruction addresses $77B2: the symbol comes from the sound-job table at $399C being read as four low/high pairs ($B2, the low byte of job 3 at $45B2, paired with $77, the low byte of job 7 at $4677), where it is eight low bytes followed by eight high bytes.","t":"byte","b":[0,0,0,0,0,0,5,5]},{"a":30650,"t":"byte","b":[5,5,5,5,5,5]},{"a":30656,"l":"house_row19","c":"Row 19: the shelf, the refrigerator's upper door (columns 3-5, rows 19-21, object 1), the food cupboard's upper shelf, the window, the hanging lamp's shade (columns 14-15), the stairs, the shade of the living room's floor lamp (columns 30-31, coloured by $A93A through $5F16/$5F17), the picture and the top of the front door (columns 36-38, rows 19-23, object 0). The store at $31B8 is aimed at $77F0 and $77F8 (columns 6-7, lines 0-4): two of the four food packets in the cupboard, drawn with the $31CA pattern when their bits are set in $30B4 and cleared otherwise ($3198).","t":"byte","b":[90,90,90,90,90,90,80,80]},{"a":30664,"t":"byte","b":[64,80,84,85,85,85,0,0]},{"a":30672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30680,"t":"byte","b":[0,0,0,0,0,85,85,85]},{"a":30688,"t":"byte","b":[0,0,0,0,0,85,85,85]},{"a":30696,"t":"byte","b":[1,1,1,1,1,81,81,81]},{"a":30704,"t":"byte","b":[21,0,21,21,21,170,0,0]},{"a":30712,"t":"byte","b":[21,0,21,21,21,170,0,0]},{"a":30720,"t":"byte","b":[16,16,16,16,16,80,16,16]},{"a":30728,"t":"byte","b":[107,107,107,107,107,85,106,107]},{"a":30736,"t":"byte","b":[111,111,111,111,111,170,239,111]},{"a":30744,"t":"byte","b":[88,88,88,88,88,168,248,88]},{"a":30752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30768,"t":"byte","b":[0,0,0,0,1,5,21,0]},{"a":30776,"t":"byte","b":[0,64,0,128,224,232,250,0]},{"a":30784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30808,"t":"byte","b":[21,0,0,0,0,0,0,0]},{"a":30816,"t":"byte","b":[64,64,64,106,85,1,1,1]},{"a":30824,"t":"byte","b":[0,0,0,0,0,0,0,85]},{"a":30832,"t":"byte","b":[0,0,0,0,0,0,0,85]},{"a":30840,"t":"byte","b":[4,4,4,4,4,4,4,164]},{"a":30848,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30856,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30864,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30880,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30888,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":30896,"t":"byte","b":[0,0,0,1,6,25,102,153]},{"a":30904,"t":"byte","b":[0,0,0,0,64,144,100,153]},{"a":30912,"t":"byte","b":[1,1,1,1,1,1,0,0]},{"a":30920,"t":"byte","b":[98,106,255,255,255,170,0,0]},{"a":30928,"t":"byte","b":[17,21,170,170,170,85,0,0]},{"a":30936,"t":"byte","b":[96,96,224,224,224,160,0,0]},{"a":30944,"t":"byte","b":[0,0,0,1,1,1,1,1]},{"a":30952,"t":"byte","b":[0,0,0,85,85,169,149,149]},{"a":30960,"t":"byte","b":[0,0,0,85,85,169,149,149]},{"a":30968,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":30976,"l":"house_row20","c":"Row 20, columns 0-17: the refrigerator (its upper door, object 1, and the freezer door below, object 2, rows 20-23, both columns 3-5), the food cupboard's lower shelf (the other two food packets at $7930 and $7938, columns 6-7, drawn by $3198) and the window's lower half.","t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":30984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":30992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31000,"t":"byte","b":[85,85,85,85,85,85,85,0]},{"a":31008,"t":"byte","b":[85,85,85,85,85,84,85,0]},{"a":31016,"t":"byte","b":[81,81,81,81,81,17,80,0]},{"a":31024,"t":"byte","b":[21,0,21,21,21,170,0,0]},{"a":31032,"t":"byte","b":[21,0,21,21,21,170,0,0]},{"a":31040,"t":"byte","b":[16,16,16,16,16,80,0,0]},{"a":31048,"t":"byte","b":[107,107,107,107,107,85,0,0]},{"a":31056,"t":"byte","b":[111,111,111,111,111,170,0,0]},{"a":31064,"t":"byte","b":[88,88,88,88,88,168,0,0]},{"a":31072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31120,"t":"byte","b":[0,0,0,0]},{"a":31124,"l":"cooler_water_top","c":"Row 20, column 18, lines 4-7 ($7994-$7997): the top four lines of the water cooler's bottle, left half. $2D0D redraws the bottle's 12 lines from the bottom up: the lowest $2B51 lines (the water: 0-11, one more per CTRL W press, $2C87-$2C97) as $AA, bit pairs %10 (the colour matrix's low-nibble colour), the rest as $55, %01 (its high-nibble colour), masked by $2D41.","t":"byte","b":[5,21,21,21,0,0,0,0],"x":[11561]},{"a":31132,"l":"cooler_water_top_r","c":"Row 20, column 19, lines 4-7 ($799C-$799F): the right half of the water cooler bottle's top four lines (mask $2D4D).","t":"byte","b":[84,85,85,85],"x":[11578]},{"a":31136,"l":"house_row20_c20","c":"Row 20, columns 20-39: the stairs; the player's petting arm (object 14, columns 23-28, reaching right toward the easy chair) and hand (object 15, columns 27-28), which draw_object ($96ED) draws from petting_anim; the pole of the floor lamp (column 30), the top of the fireplace (columns 32-35) and the front door (object 0).","t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":31144,"t":"byte","b":[0,21,21,170,0,21,21,170]},{"a":31152,"t":"byte","b":[0,85,85,170,0,85,85,170]},{"a":31160,"t":"byte","b":[4,68,68,164,4,68,68,164]},{"a":31168,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31176,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31184,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31192,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31216,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":31224,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31232,"t":"byte","b":[0,0,0,0,0,0,42,63]},{"a":31240,"t":"byte","b":[0,0,0,0,0,0,170,255]},{"a":31248,"t":"byte","b":[0,0,0,0,0,0,170,255]},{"a":31256,"t":"byte","b":[0,0,0,0,0,0,170,255]},{"a":31264,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":31272,"t":"byte","b":[106,170,86,106,106,106,106,106]},{"a":31280,"t":"byte","b":[106,170,86,106,106,106,106,106]},{"a":31288,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":31296,"l":"house_row21","c":"Row 21, column 0: the house's left wall and the left edge of the stove, whose burners are at lines 6-7 of columns 1-2.","t":"byte","b":[80,80,80,80,80,80,90,88]},{"a":31304,"l":"stove_top_7a48","c":"Row 21, column 1, line 0: the black space above the stove's burners. The handler at $1EA7 (in the switch tables of activities 48 and 49) stores 0 here, clears $7A49-$7A4C and $7A51 too, and sets the colour matrix of these two cells ($5F49/$5F4A) to $7F.","t":"byte","b":[0],"x":[7861]},{"a":31305,"l":"stove_top_7a49","c":"Row 21, column 1, lines 1-5 ($7A49-$7A4D): the stove top's left cell, lines 1-4 cleared by $1EBA; line 5 unchanged.","t":"byte","b":[0,0,0,0,0],"x":[7866]},{"a":31310,"l":"stove_burner","c":"Row 21, column 1, line 6: the stove's burner. $2CD9, on every pass of the house updates, stores $2A while $2B52 is 0 and $EA while it is set: the left pixel pair then shows colour RAM $DB49, which $2CEB-$2D04 sets on alternate passes to a random entry of $2D08 (7, 6, 8, 6, 1: yellow, blue, orange, blue, white), never the same entry twice running: a flickering flame.","t":"byte","b":[42,68,0],"x":[11488,11496]},{"a":31313,"l":"stove_top_7a51","c":"Row 21, column 2, line 1: the stove top's right cell, cleared by $1EC0 with the others. The rest of column 2 is stove.","t":"byte","b":[0,0,0,0,0,20,68],"x":[7872]},{"a":31320,"l":"house_row21_c03","c":"Row 21, columns 3-16: the refrigerator (objects 1 and 2), the counter with the sink's taps (columns 6-11) and the kitchen cabinet door under it (columns 6-7, rows 21-23, object 12), and a small white object above the kitchen table (columns 14-15).","t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31328,"t":"byte","b":[85,84,85,85,85,85,85,85]},{"a":31336,"t":"byte","b":[80,16,80,82,82,81,81,81]},{"a":31344,"t":"byte","b":[0,0,0,85,85,170,170,170]},{"a":31352,"t":"byte","b":[0,0,0,85,85,170,162,170]},{"a":31360,"t":"byte","b":[0,0,0,85,85,170,170,170]},{"a":31368,"t":"byte","b":[0,17,4,170,170,85,85,85]},{"a":31376,"t":"byte","b":[0,1,0,170,170,85,17,85]},{"a":31384,"t":"byte","b":[0,16,64,170,170,85,85,85]},{"a":31392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31408,"t":"byte","b":[0,0,0,0,0,4,0,4]},{"a":31416,"t":"byte","b":[0,0,0,0,0,4,0,4]},{"a":31424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31432,"t":"byte","b":[0,0,0,0]},{"a":31436,"l":"cooler_water_base","c":"Row 21, column 17, line 4: index base of the water-level drawing ($2D23 stores to $7ACC+X for X = 4-11), so the bytes written are $7AD0-$7AD7, row 21 column 18, the bottle's lower eight lines, left half.","t":"byte","b":[0,0,0,0,21,21,21,21],"x":[11555]},{"a":31444,"l":"cooler_water_base_r","c":"Index base for the right half of the bottle's lower eight lines ($2D34 stores to $7AD4+X, X = 4-11: $7AD8-$7ADF, row 21 column 19).","t":"byte","b":[42,42,42,42,85,85,85,85],"x":[11572]},{"a":31452,"t":"byte","b":[170,170,170,170]},{"a":31456,"l":"house_row21_c20","c":"Row 21, columns 20-23: the stairs and the wall at their foot.","t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":31464,"t":"byte","b":[0,21,21,170,0,21,21,170]},{"a":31472,"t":"byte","b":[0,85,85,170,0,85,85,170]},{"a":31480,"t":"byte","b":[4,68,68,164,4,68,68,164]},{"a":31488,"t":"byte","b":[0,0,0,0]},{"a":31492,"l":"phone_handset_l4","c":"Row 21, column 24, line 4: the telephone's handset on its table in the living room. While the phone rings (CTRL C sets $2B4C) $2ADB counts $2B4D down from $FF: above $80, every fourth count, bit 2 picks the raised or the resting drawing of lines 4-6 of columns 24-25 (the handset jumps) and the ring sound request $3566 is on; below $80 it rests. When he reaches the phone ($03C6 bit 7 set, $038D 4 or 5) $2AC1 blanks all six bytes and stops the ringing; the code at $2FFF-$300A clears lines 5-6 (handset lifted) and $3010-$301F draws it back at rest.","t":"byte","b":[0],"x":[10947,11025,11052]},{"a":31493,"l":"phone_handset_l5","c":"Row 21, column 24, line 5 of the telephone handset (rest $15, raised $10).","t":"byte","b":[21],"x":[10950,11033,11060,12289,12306]},{"a":31494,"l":"phone_handset_l6","c":"Row 21, column 24, line 6 of the telephone handset (rest $10, raised 0).","t":"byte","b":[16,1,0,0,0,0],"x":[10953,11038,11070,12292,12314]},{"a":31500,"l":"phone_handset_r4","c":"Row 21, column 25, line 4 of the telephone handset (rest 0, raised $50).","t":"byte","b":[0],"x":[10956,11046,11055]},{"a":31501,"l":"phone_handset_r5","c":"Row 21, column 25, line 5 of the telephone handset (rest $50, raised $10).","t":"byte","b":[80],"x":[10959,11030,11065,12295,12319]},{"a":31502,"l":"phone_handset_r6","c":"Row 21, column 25, line 6 of the telephone handset (rest $10, raised 0); line 7 is the table.","t":"byte","b":[16,0],"x":[10962,11041,11073,12298,12311]},{"a":31504,"l":"house_row21_c26","c":"Row 21, columns 26-39: the purple easy chair (columns 26-29), the floor lamp, the fireplace (columns 32-35) with the fire (columns 33-34, rows 21-22: object 7, four flame frames or the empty grate, drawn by fire_flicker and fire_out through draw_object ($96ED)) and the front door (object 0).","t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":31512,"t":"byte","b":[0,0,0,5,21,85,85,85]},{"a":31520,"t":"byte","b":[0,0,0,84,85,85,85,85]},{"a":31528,"t":"byte","b":[0,0,0,0,0,64,64,80]},{"a":31536,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":31544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31552,"t":"byte","b":[25,42,21,42,25,42,21,42]},{"a":31560,"t":"byte","b":[89,170,149,170,0,0,0,0]},{"a":31568,"t":"byte","b":[89,170,149,170,0,0,0,0]},{"a":31576,"t":"byte","b":[89,170,149,170,25,42,21,42]},{"a":31584,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":31592,"t":"byte","b":[106,170,106,170,86,106,106,106]},{"a":31600,"t":"byte","b":[106,170,170,170,86,106,106,106]},{"a":31608,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":31616,"l":"house_row22","c":"Row 22: the stove, the freezer door (object 2) and the kitchen cabinet door (object 12), the kitchen table's top (columns 13-17), the water cooler's stand, the foot of the stairs, the drawer of the telephone table (columns 23-26, object 8), the easy chair, the lamp's foot, the fire and grate (object 7) and the front door (object 0).","t":"byte","b":[90,90,90,90,90,90,90,90]},{"a":31624,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31632,"t":"byte","b":[84,84,84,84,84,84,84,84]},{"a":31640,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31648,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31656,"t":"byte","b":[81,81,81,81,81,81,81,81]},{"a":31664,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31672,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31680,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31688,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31696,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31704,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":31712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":31720,"t":"byte","b":[0,0,0,0,5,21,85,85]},{"a":31728,"t":"byte","b":[5,4,5,0,85,85,85,85]},{"a":31736,"t":"byte","b":[84,4,84,0,85,85,85,85]},{"a":31744,"t":"byte","b":[0,0,0,0,84,85,85,85]},{"a":31752,"t":"byte","b":[0,0,0,0,0,0,64,64]},{"a":31760,"t":"byte","b":[5,85,69,5,5,4,4,4]},{"a":31768,"t":"byte","b":[84,84,84,84,84,4,4,4]},{"a":31776,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":31784,"t":"byte","b":[0,21,21,170,0,21,21,85]},{"a":31792,"t":"byte","b":[0,85,85,170,0,85,85,85]},{"a":31800,"t":"byte","b":[4,68,68,164,4,68,68,84]},{"a":31808,"t":"byte","b":[5,21,170,138,170,128,128,128]},{"a":31816,"t":"byte","b":[64,80,168,136,168,8,8,8]},{"a":31824,"t":"byte","b":[1,1,5,21,21,5,1,1]},{"a":31832,"t":"byte","b":[85,85,149,101,101,106,85,85]},{"a":31840,"t":"byte","b":[85,85,85,86,86,170,85,85]},{"a":31848,"t":"byte","b":[80,80,148,85,85,84,80,80]},{"a":31856,"t":"byte","b":[1,1,1,1,1,1,5,21]},{"a":31864,"t":"byte","b":[0,0,0,0,0,0,64,80]},{"a":31872,"t":"byte","b":[25,42,21,42,25,42,21,42]},{"a":31880,"t":"byte","b":[0,0,0,4,0,4,4,17]},{"a":31888,"t":"byte","b":[0,0,0,4,0,4,4,17]},{"a":31896,"t":"byte","b":[25,42,21,42,25,42,21,42]},{"a":31904,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":31912,"t":"byte","b":[106,106,106,106,106,106,170,170]},{"a":31920,"t":"byte","b":[106,106,106,106,106,106,170,170]},{"a":31928,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":31936,"l":"house_row23","c":"Row 23, column 0: the house's left wall and the foot of the stove.","t":"byte","b":[90,90,90,95,95,95,94,94]},{"a":31944,"t":"byte","b":[85,85,85]},{"a":31947,"l":"dog_bowl_food","c":"Row 23, column 1, line 3: the food in the dog's bowl on the kitchen floor (the white bowl is lines 5-7 below it). $1821 writes the pattern $1836+$2A62 here ($AA empty to $BE full; $2A62 is the amount, 6 when filled at $2A63) and colour RAM $DB99 := 0.","t":"byte","b":[170],"x":[6183]},{"a":31948,"l":"dog_bowl_food_2","c":"Row 23, column 1, line 4: second line of the dog's food, pattern $183D+$2A62.","t":"byte","b":[170,85,85,85],"x":[6189]},{"a":31952,"l":"house_row23_c02","c":"Row 23, columns 2-39: the kitchen floor's green checks (to column 19) with the bottoms of the freezer and cabinet doors (objects 2 and 12), the table's legs, and the living room's brown floor with the foot of the easy chair, the fireplace's hearth and the bottom of the front door (object 0).","t":"byte","b":[86,87,86,187,170,170,106,106]},{"a":31960,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":31968,"t":"byte","b":[106,153,166,153,106,170,170,170]},{"a":31976,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":31984,"t":"byte","b":[106,153,166,153,106,170,170,170]},{"a":31992,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":32000,"t":"byte","b":[106,153,166,153,106,170,170,170]},{"a":32008,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":32016,"t":"byte","b":[106,153,166,153,106,170,170,170]},{"a":32024,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":32032,"t":"byte","b":[106,153,166,153,106,170,170,170]},{"a":32040,"t":"byte","b":[106,106,106,106,106,106,106,106]},{"a":32048,"t":"byte","b":[106,101,101,101,101,101,85,85]},{"a":32056,"t":"byte","b":[85,169,169,169,169,169,170,170]},{"a":32064,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32072,"t":"byte","b":[106,106,106,106,106,123,110,123]},{"a":32080,"t":"byte","b":[106,153,166,153,106,170,170,170]},{"a":32088,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":32096,"t":"byte","b":[107,155,167,155,107,171,171,171]},{"a":32104,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32112,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32120,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32128,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32136,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32144,"t":"byte","b":[86,86,86,85,85,85,85,85]},{"a":32152,"t":"byte","b":[85,90,90,170,170,170,170,170]},{"a":32160,"t":"byte","b":[85,169,169,170,170,170,170,170]},{"a":32168,"t":"byte","b":[90,90,90,170,170,170,170,170]},{"a":32176,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32184,"t":"byte","b":[85,85,86,85,85,85,85,85]},{"a":32192,"t":"byte","b":[106,170,170,85,85,85,85,85]},{"a":32200,"t":"byte","b":[85,85,85,170,170,170,170,170]},{"a":32208,"t":"byte","b":[85,85,85,170,170,170,170,170]},{"a":32216,"t":"byte","b":[85,85,85,170,170,170,170,170]},{"a":32224,"t":"byte","b":[85,149,165,85,85,85,85,85]},{"a":32232,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32240,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32248,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32256,"l":"house_row24","c":"Row 24, the last row ($7E00-$7F3F): the front edge of the ground floor, kitchen checks on the left and brown boards on the right.","t":"byte","b":[90,91,94,91,90,90,85,85]},{"a":32264,"t":"byte","b":[85,85,85,85,149,102,255,255]},{"a":32272,"t":"byte","b":[85,102,89,102,149,85,255,255]},{"a":32280,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32288,"t":"byte","b":[106,153,166,153,106,170,255,255]},{"a":32296,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32304,"t":"byte","b":[106,153,166,153,106,170,255,255]},{"a":32312,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32320,"t":"byte","b":[106,153,166,153,106,170,255,255]},{"a":32328,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32336,"t":"byte","b":[106,153,166,153,106,170,255,255]},{"a":32344,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32352,"t":"byte","b":[106,153,166,153,106,170,255,255]},{"a":32360,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32368,"t":"byte","b":[106,153,166,153,106,170,255,255]},{"a":32376,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32384,"t":"byte","b":[106,153,166,153,106,170,255,255]},{"a":32392,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32400,"t":"byte","b":[106,153,166,153,106,170,255,255]},{"a":32408,"t":"byte","b":[106,170,170,170,106,153,255,255]},{"a":32416,"t":"byte","b":[107,155,167,155,107,171,255,255]},{"a":32424,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32432,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32440,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32448,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32456,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32464,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32472,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32480,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32488,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32496,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32504,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32512,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32520,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32528,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32536,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32544,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32552,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32560,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32568,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":32576,"l":"music_read_ofs","c":"Music driver work area, $7F40-$7FF9 (cleared by music_clear, $44E8, when a tune starts). This byte: offset of the next byte to read in the current voice's stream: music_fetch ($422C) reads ($53),Y with Y from here and increments it, music_commit ($405C) adds it to the stream pointer and zeroes it. The same memory is the letter buffer: the letter activity (22) assembles the letter's text here ($55C4-$55FF: 'Dear Friend,', the thank-you or the complaint paragraph, the sign-off, then $FF; at most 159 bytes, to $7FDE) and types it out through the pointer $66/$67 = $7F40 ($5599). It overwrites the voice state and most of sid_shadow, so the letter activity first turns the stereo off if it is playing (phases 1-6, ending with stereo_off).","t":"byte","b":[0],"x":[16420,16480,16493,16940,16943,17653,21990,22005]},{"a":32577,"l":"music_op_param","c":"Music driver: bits 4-6 of the op byte being executed (0-7), set by music_run_voice ($403A); the op handlers ($4082-$421D) use it as a sub-op or as the number of the voice field (zero page $55+n) to push, pop or load.","t":"byte","b":[0],"x":[16442,16514,16619,16735,16748,16761,16795,16876,16925]},{"a":32578,"l":"music_mul_hi","c":"Music driver, vibrato and slide arithmetic: high byte of a 24-bit shift register ($7F42-$7F44). freq_shift ($4381) loads it with the voice's frequency shifted right Y times (this byte 0); freq_scale ($43A4) then shifts the register left once per bit of music_mul_factor, adding its top two bytes ($7F43 low, $7F42 high) into $4F/$50 for each set bit: the frequency change.","t":"byte","b":[0],"x":[17290,17334,17345]},{"a":32579,"l":"music_mul_mid","c":"Middle byte of the vibrato/slide shift register: loaded with the frequency's high byte and shifted right in place with the low byte by freq_shift ($4390-$439C); freq_scale adds it into $4F.","t":"byte","b":[12],"x":[17296,17305,17327,17342]},{"a":32580,"l":"music_mul_lo","c":"Low byte of the vibrato/slide shift register: the frequency's low byte after the shift ($43A0).","t":"byte","b":[142],"x":[17312,17339]},{"a":32581,"l":"music_mul_factor","c":"Multiplier for the vibrato/slide product (freq_scale, $43A4): a depth from vibrato_shape ($4353) or a voice's slide multiplier (music_slide_mul), shifted out a bit at a time.","t":"byte","b":[0],"x":[17316,17319,17348]},{"a":32582,"l":"music_voice1","c":"Voice 1's 13-byte state; voices 2 and 3 have the same layout at $7F73 and $7FA0 (offsets 0, $2D and $5A, from music_voice_offset $3FBC). music_timer_a copies it to zero page $53-$5F to work on the voice and back ($3F96-$3FAB). +0/+1 stream pointer (from tune_streams at start, music_voice_init $44A9); +2 current pitch, an index into freq_table (each note moves it up or down, $42C0-$42D2); +3 duration of the current note value; +4 articulation, the gate is released when the countdown falls to duration times this (2 at start); +5 tempo; +6 to +8 fields the stream can load and push (their use is not known); +9 countdown; +10 release point; +11 stack index; +12 status. Bytes 0-4 here.","t":"byte","b":[67,58,67,6,2]},{"a":32587,"l":"music_v1_tempo","c":"Voice 1's tempo field (+5): the high byte of CIA1 timer A, $3B at start ($447E). music_set_tempo ($4183) stores a new value in all three voices' copies (this, $7F78, $7FA5) and in $DC05 with $DC04 = 0. $7F4C-$7F4E are voice 1's fields +6 to +8.","t":"byte","b":[59,0,0,0],"x":[16775,17534]},{"a":32591,"l":"music_v_countdown","c":"Countdown field (+9) of voice 1; indexed by the voice's block offset (music_cur_block_ofs) it serves all three voices ($7F4F, $7F7C, $7FA9). music_timer_a ($3F59) decrements it; at 0 the voice's next ops are read ($3F7B). A note sets it to eight times its duration ($4273).","t":"byte","b":[0],"x":[16217,16226]},{"a":32592,"l":"music_v_release","c":"Release point field (+10), indexed like music_v_countdown: when the countdown equals it and the gate is on, music_timer_a clears the gate bit ($3F62-$3F75). Set to duration times articulation ($4284). $7F51 is voice 1's stack index (+11).","t":"byte","b":[12,0],"x":[16229]},{"a":32594,"l":"music_v_status","c":"Status field (+12) of voice 1, indexed for all voices: bit 7 the voice is playing ($C0 at start; cleared by the end op at $40F6), bit 6 the gate is on (set at every note, $424E-$4252), and the timer-B effects: bit 0 vibrato (fx_vibrato), bit 1 slide (fx_slide), bit 2 the slide's direction, bit 3 the voice's hook (fx_hook). music_timer_b ($3FC2) ORs the three voices' status bytes to see if any effect is on.","t":"byte","b":[72],"x":[16201,16322,16346]},{"a":32595,"l":"music_voice1_stack","c":"Voice 1's 32-byte stack ($7F53-$7F72), addressed through $60/$61 = block + 13 with the index at +11: return addresses of stream calls, loop counters and pushed fields (music_push $4235, music_pop $423C).","t":"byte","b":[59,60,58,27,59,59,0,0]},{"a":32603,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32611,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32619,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32627,"l":"music_voice2","c":"Voice 2's state block ($7F73-$7F7F, same layout as music_voice1): +0 to +4 here.","t":"byte","b":[229,58,55,6,2]},{"a":32632,"l":"music_v2_tempo","c":"Voice 2's tempo field (+5), $3B at start ($4481), set with the others by music_set_tempo ($418A). $7F79-$7F7E are voice 2's fields +6 to +11.","t":"byte","b":[59,0,0,0,0,12,0],"x":[16778,17537]},{"a":32639,"l":"music_v2_status","c":"Voice 2's status byte (+12); music_timer_b reads it directly ($3FC5) to see whether any voice has an effect enabled.","t":"byte","b":[64],"x":[16325]},{"a":32640,"l":"music_voice2_stack","c":"Voice 2's 32-byte stream stack ($7F80-$7F9F).","t":"byte","b":[226,58,111,59,59,0,0,0]},{"a":32648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32672,"l":"music_voice3","c":"Voice 3's state block ($7FA0-$7FAC, same layout as music_voice1): +0 to +4 here.","t":"byte","b":[1,59,31,22,2]},{"a":32677,"l":"music_v3_tempo","c":"Voice 3's tempo field (+5), $3B at start ($4484), set by music_set_tempo ($418D). $7FA6-$7FAB are voice 3's fields +6 to +11.","t":"byte","b":[59,0,0,0,0,44,0],"x":[16781,17540]},{"a":32684,"l":"music_v3_status","c":"Voice 3's status byte (+12), read directly by music_timer_b ($3FC8).","t":"byte","b":[64],"x":[16328]},{"a":32685,"l":"music_voice3_stack","c":"Voice 3's 32-byte stream stack ($7FAD-$7FCC).","t":"byte","b":[254,58,0,0,0,0,0,0]},{"a":32693,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32701,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32709,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32717,"l":"sid_shadow","c":"Shadow copy of the SID's 25 write-only registers $D400-$D418 ($7FCD-$7FE5), kept by the music driver so it can read values back. sid_init ($4547) loads it and the SID from sid_init_values ($4556) when a tune starts; sid_list_voice ($43FE), which the tunes call (op $C1 $FE $43 and a list address), writes register/value lists into both; notes write the voice's frequency ($42DC) at the voice's register offset (music_cur_sid_ofs); vibrato, slides and the sound jobs read the frequency back from here ($4393, $43CD, $45B2-$4677). This byte is voice 1's frequency low byte ($D400).","t":"byte","b":[60],"x":[17116,17206,17299,17357,17379,17434,17740,17842,17848,17903,17921,17979,18006,18032,18048,18079]},{"a":32718,"l":"sid_shadow_freq_hi","c":"Shadow of $D401, voice 1's frequency high byte; with the register offset 7 or 14 it is voice 2's ($7FD5) or 3's ($7FDC). Written by notes ($42E6), fx_slide ($433B) and the sound jobs ($45C0, $45F7, $4609, $464C, $4667, $4691). $7FCF/$7FD0 shadow $D402/$D403 (voice 1 pulse width).","t":"byte","b":[50,8,8],"x":[17126,17211,17293,17367,17389,17856,17911,17929,17996,18023,18065,18069]},{"a":32721,"l":"sid_shadow_ctrl","c":"Shadow of $D404, voice 1's control register (waveform and gate); with the register offset, voices 2 and 3's ($7FD8, $7FDF). The gate bit is set at a note ($42F1-$42F9) and cleared at the release point ($3F6D-$3F75), by a gate-off note ($4297-$429F) and by the end op ($40FF). $7FD2/$7FD3 shadow $D405/$D406 (voice 1 attack/decay, sustain/release).","t":"byte","b":[64,168,169],"x":[16237,16242,16639,16644,17047,17052,17137,17142]},{"a":32724,"l":"sid_shadow_v2_freq","c":"Shadow of $D407, voice 2's frequency low byte, used by name only in sound jobs 2 (job_v2_env3, $4599-$45AB) and 3 (job_all_fall, $45C6-$45CC). Job 3 writes the value it computes here to $D400, voice 1's register, instead of $D407 ($45CF).","t":"byte","b":[30],"x":[17817,17824,17862,17868]},{"a":32725,"l":"sid_shadow_v2_freq_hi","c":"Shadow of $D408, voice 2's frequency high byte (sound jobs 2 and 3: $45A6-$45AB, $45D4). $7FD6-$7FDA shadow $D409-$D40D (voice 2 pulse width, control, envelope).","t":"byte","b":[25,8,8,64,168,169],"x":[17830,17835,17876]},{"a":32731,"l":"sid_shadow_v3_freq","c":"Shadow of $D40E, voice 3's frequency low byte, swept down by sound jobs 3 (job_all_fall, $45DA-$45E8) and 5 (job_v3_fall, $4610-$4616). On a borrow job 3 decrements this byte and $D40E a second time ($45E8/$45EB) where the high byte would be expected.","t":"byte","b":[71],"x":[17882,17888,17896,17936,17942]},{"a":32732,"l":"sid_shadow_v3_freq_hi","c":"Shadow of $D40F, voice 3's frequency high byte, decremented on a borrow by job_v3_fall ($461E). $7FDD-$7FE1 shadow $D410-$D414 (voice 3 pulse width, control, envelope).","t":"byte","b":[6,0,8,64,168,121],"x":[17950]},{"a":32738,"l":"sid_shadow_filter_lo","c":"Shadow of $D415, the filter cutoff's low bits. job_filter_env3 ($4574) puts voice 3's envelope output ($D41C) into the cutoff: the whole byte into $D416 and its low 3 bits into $D415, and stores both values here (the second store wins), so the shadow of $D416 is not kept up to date by it.","t":"byte","b":[7],"x":[17786,17794]},{"a":32739,"l":"sid_shadow_cutoff","c":"Shadow of $D416, the filter cutoff's high byte, written with $D416 by unused_filter_sweep ($3A99: INC $02F2, then store it). No JSR, JMP or pointer to $3A99 was found; whether a tune's call op reaches it is not known.","t":"byte","b":[128],"x":[15007]},{"a":32740,"l":"sid_shadow_resonance","c":"Shadow of $D417, filter resonance and routing: unused_filter_setup ($3A80) sets it and $D417 to $47; no caller of $3A80 has been found.","t":"byte","b":[0],"x":[14978]},{"a":32741,"l":"sid_shadow_volume","c":"Shadow of $D418, filter mode and volume: unused_filter_setup ($3A88-$3A92) keeps the volume, sets band-pass (bit 5) and writes it here and to $D418. $7FE6 is cleared with the work area and otherwise unused.","t":"byte","b":[92,0],"x":[14984,14991]},{"a":32743,"l":"music_cur_voice","c":"The voice the music driver is working on, 0-2: the loop counter of music_timer_a ($3F40-$3FB3) and music_timer_b ($3FD1-$3FF6), read by music_note ($4245) and the effects ($4327, $433F, $4357, $4377).","t":"byte","b":[2],"x":[16192,16301,16337,16368,16965,17191,17215,17239,17271]},{"a":32744,"l":"music_cur_sid_ofs","c":"The current voice's SID register offset, 0, 7 or 14 (from music_sid_offset, $3FB9): the index into sid_shadow and $D400 for its frequency and control bytes.","t":"byte","b":[14],"x":[16211,16234,16356,16636,17044,17113,17281,17406]},{"a":32745,"l":"music_cur_block_ofs","c":"The current voice's state block offset, 0, $2D or $5A (from music_voice_offset, $3FBC): the index into music_voice1 and the base of the zero-page copy address ($3F7B-$3F94).","t":"byte","b":[90],"x":[16198,16214,16254,16343]},{"a":32746,"l":"music_voice_notes","c":"Three per-voice counters ($7FEA-$7FEC) incremented at every note (music_note, $4248, X = voice) along with note_count ($4789); no traced instruction reads them. play-02 holds $51, $81 and $10.","t":"byte","b":[81,129,16],"x":[16968]},{"a":32749,"l":"music_vib_step","c":"Three per-voice vibrato step counters ($7FED-$7FEF): fx_vibrato ($4357) increments the voice's counter on each timer-B tick; its low bits (AND music_vib_len - 1) index vibrato_shape ($4353: 0, 1, 3, 1) and bit music_vib_len chooses up or down ($4374-$437A).","t":"byte","b":[95,95,95],"x":[17242,17250,17274]},{"a":32752,"l":"music_vib_len","c":"Vibrato table length, 4 (set at $4447): music_vib_step AND (4 - 1) picks the vibrato_shape entry and AND 4 the direction.","t":"byte","b":[4],"x":[17245,17268,17479]},{"a":32753,"l":"music_slide_mul","c":"Voice 1's slide multiplier, 7 at start ($4462); indexed by the voice ($432A) it serves all three ($7FF1-$7FF3). fx_slide scales the frequency change of a slide by it.","t":"byte","b":[7],"x":[17194,17506]},{"a":32754,"l":"music_slide_mul_v2","c":"Voice 2's slide multiplier, 7 at start ($4465).","t":"byte","b":[7],"x":[17509]},{"a":32755,"l":"music_slide_mul_v3","c":"Voice 3's slide multiplier, 7 at start ($4468).","t":"byte","b":[7],"x":[17512]},{"a":32756,"l":"music_hook","c":"Voice 1's effect hook, a pointer (low byte here), $44A8 (an RTS) at start ($444C); indexed by voice times two ($4344-$434A) it serves all three ($7FF4, $7FF6, $7FF8). fx_hook ($433F) calls it through jmp_via_4f when bit 3 of the voice's status is set. unused_set_effect ($3A73), which nothing is known to call, points voice 1's hook at effect_nop ($3A96).","t":"byte","b":[168],"x":[14965,17220,17226,17484]},{"a":32757,"l":"music_hook_hi","c":"High byte of voice 1's effect hook ($44 at start, $4457; $3A when set by unused_set_effect).","t":"byte","b":[68],"x":[14970,17495]},{"a":32758,"l":"music_hook_v2","c":"Low byte of voice 2's effect hook, $A8 at start ($444F).","t":"byte","b":[168],"x":[17487]},{"a":32759,"l":"music_hook_v2_hi","c":"High byte of voice 2's effect hook, $44 at start ($445A).","t":"byte","b":[68],"x":[17498]},{"a":32760,"l":"music_hook_v3","c":"Low byte of voice 3's effect hook, $A8 at start ($4452).","t":"byte","b":[168],"x":[17490]},{"a":32761,"l":"music_hook_v3_hi","c":"High byte of voice 3's effect hook, $44 at start ($445D): the last byte of the music driver's work area.","t":"byte","b":[68],"x":[17501]},{"a":32762,"l":"unused_7ffa","c":"$7FFA-$7FFF: no traced instruction addresses these six bytes, the driver's clear loop stops at $7FF9 ($44F5, Y < $BA), no indexed access found reaches them, and they are 0 in every snapshot.","t":"byte","b":[0,0,0,0,0,0]},{"a":32768,"l":"driver_jumps","c":"Entry points of the stereo's music driver, ten JMP-sized slots of three bytes. Four are live: music_tick_jmp ($800C), music_start_jmp ($800F), music_stop_jmp ($8012) and music_irq_jmp ($8018), each a JMP into the driver at $394E-$39B2 (its note engine is $3F3B-$46BC, its tunes are listed at tune_streams, $3A03, and its work area is $7F40-$7FF9). The other six slots, $8000, $8003, $8006, $8009, $8015 and $801B, hold RTS, NOP, NOP, and nothing in the image calls them. The piano uses the other sound driver, whose jump table is at $B000.","t":"code","b":[96],"m":"rts"},{"a":32769,"t":"code","b":[234],"m":"nop"},{"a":32770,"t":"code","b":[234],"m":"nop"},{"a":32771,"t":"code","b":[96],"m":"rts"},{"a":32772,"t":"code","b":[234],"m":"nop"},{"a":32773,"t":"code","b":[234],"m":"nop"},{"a":32774,"t":"code","b":[96],"m":"rts"},{"a":32775,"t":"code","b":[234],"m":"nop"},{"a":32776,"t":"code","b":[234],"m":"nop"},{"a":32777,"t":"code","b":[96],"m":"rts"},{"a":32778,"t":"code","b":[234],"m":"nop"},{"a":32779,"t":"code","b":[234],"m":"nop"},{"a":32780,"l":"music_tick_jmp","c":"JMP sound_dispatch ($396E). The raster IRQ calls it once a frame ($0812) while music_playing ($801E) is non-zero, in place of the other sound driver's tick at $B003: runs the music driver's per-frame sound jobs, one for each bit set in sound_job_bits ($478D).","t":"code","b":[76,110,57],"m":"jmp","o":"sound_dispatch","oa":14702,"x":[2066]},{"a":32783,"l":"music_start_jmp","c":"JMP music_driver_start ($394E): starts a tune on the stereo. Clears sound_job_bits and $02ED, then music_start ($4424) stops CIA1's timers and interrupts, clears the work area $7F40-$7FF9 (music_clear), loads 25 bytes of initial SID settings into sid_shadow and the SID (sid_init), rebuilds the note table freq_table ($46C9), points the three voices at the streams of tune music_tune ($478C, 0-3, chosen at random by activity 119) listed at tune_streams, and starts CIA1 timer A ($3B00 cycles, the note clock) and timer B ($4295 cycles, vibrato and slides) with interrupts. One caller: stereo_on ($9256), phase 5 of activity 120, in which he walks to the stereo (location 1) and puts a record on; it then sets music_playing.","t":"code","b":[76,78,57],"m":"jmp","o":"music_driver_start","oa":14670,"x":[37462]},{"a":32786,"l":"music_stop_jmp","c":"JMP stop_music_timers ($39B2): CIA1 interrupt control $7F (all off), timer A and B control $08 (stopped). One caller: sound_requests ($347E), run from the main loop ($0974) when music_stop_req ($801F) is set.","t":"code","b":[76,178,57],"m":"jmp","o":"stop_music_timers","oa":14770,"x":[13438]},{"a":32789,"l":"drv_stub_8015","c":"Seventh slot of driver_jumps: RTS, NOP, NOP. No code in the image calls or jumps to $8015.","t":"code","b":[96],"m":"rts"},{"a":32790,"t":"code","b":[234],"m":"nop"},{"a":32791,"t":"code","b":[234],"m":"nop"},{"a":32792,"l":"music_irq_jmp","c":"JMP timer_irq ($3959). The IRQ handler ($072C) calls it for every interrupt that is not the raster one, which in play means CIA1: timer A runs the music driver's notes (music_timer_a, $3F3B), timer B its vibrato and slides (music_timer_b, $3FBF).","t":"code","b":[76,89,57],"m":"jmp","o":"timer_irq","oa":14681,"x":[1836]},{"a":32795,"l":"drv_stub_801b","c":"Tenth and last slot of driver_jumps: RTS, NOP, NOP. Nothing in the image calls $801B.","t":"code","b":[96],"m":"rts"},{"a":32796,"t":"code","b":[234],"m":"nop"},{"a":32797,"t":"code","b":[234],"m":"nop"},{"a":32798,"l":"music_playing","c":"Music playing flag: $FF while the stereo's music driver plays (set with turntable_on and act_music_on by stereo_on, $9264), 0 otherwise (cleared by stereo_off at $927C, in activities 18, 121 and 22, and by sound_requests at $3486 when a tune ends). Read by the raster IRQ ($080D: non-zero runs music_tick_jmp, zero runs the other driver's tick at $B003), by house_events ($2BC6: CTRL A does not start the alarm clock while music plays) and by the activity handlers at $E01A, $E0B7 and $E1A5.","t":"byte","b":[0],"x":[2061,11206,13446,37476,37500,57370,57527,57765]},{"a":32799,"l":"music_stop_req","c":"Request to stop the music driver. Set to $FF by tune_end ($39AD), which every tune's own stream calls at its end (op $C1 $AD $39; it then falls into stop_music_timers), and to 1 by stereo_off ($9280). sound_requests ($3476, from the main loop at $0974) sees it, silences everything (sound_reset), calls music_stop_jmp, and clears it and music_playing.","t":"byte","b":[0],"x":[13430,13443,14767,37504]},{"a":32800,"l":"piano_song1","c":"Piano piece 1 of 4 (the table at $AB4E lists $8020, $838D, $85BA and $8730): Mozart's Sonata in C, K. 545, first movement (melody C5 E5 G5, B4 C5 D5 C5, A5 G5 C6 G5 over an Alberti bass C4 G4 E4 G4). Activity 78 ($AB1A) picks one of the four at random and, with I/O switched out, writes its header address into the driver's sound table as sound 12 (snd_sound_12: $D7AC, with +4 and +8 at $D7AE and $D7B0); the piano activity (79, $E3CA) then sets snd_req_piece ($3563), whose handler slot3_piece ($364A) starts sound 12 on the driver's second set of channels ($B006). Header, 20 bytes: three voice entries of four bytes (instrument number, then $01 lo hi, a jump to the voice's track), the address of the pattern table for pattern numbers $80 and up (here $837D), and three per-voice pattern tables for numbers below $80 (all 0 here). Byte code of the sound driver at $B000, read by its interpreter at $D000: a note is two bytes, the pitch (high nibble 9-F = G, A, B, C, D, E, F; bit 3 raises it a semitone; bits 0-2 the octave; $10 is a rest) and an index into the duration table at $B726. Commands met in these songs: $01 lo hi jump, $20 n m call pattern n plus a random 0..m, $21 return, $22 and $02 count lo hi repeat back, $26 sets the driver's end flag $B012, $27 sets the voice's flag at $B10A, $00 ends the voice.","t":"byte","b":[40,1,233,128,35,1,52,128]},{"a":32808,"t":"byte","b":[35,1,18,130,125,131,0,0]},{"a":32816,"t":"byte","b":[0,0,0,0]},{"a":32820,"l":"piano_s1_v2","c":"Piece 1 (K. 545), voice 2's track: long rests and short repeated notes (C4, B3, G3, E4, G5 ...), organised with $22 and $02 repeats; ends with $26 and $00 at $80E8.","t":"byte","b":[39,16,26,34,6,53,128,16]},{"a":32828,"t":"byte","b":[28,196,10,16,10,196,10,16]},{"a":32836,"t":"byte","b":[10,16,26,196,10,16,10,196]},{"a":32844,"t":"byte","b":[10,16,10,16,26,196,10,16]},{"a":32852,"t":"byte","b":[10,179,10,16,10,16,28,16]},{"a":32860,"t":"byte","b":[26,34,6,91,128,16,28,196]},{"a":32868,"t":"byte","b":[10,16,10,196,10,16,10,16]},{"a":32876,"t":"byte","b":[26,196,10,16,10,196,10,16]},{"a":32884,"t":"byte","b":[10,16,26,147,30,196,10,16]},{"a":32892,"t":"byte","b":[10,179,10,16,10,228,10,16]},{"a":32900,"t":"byte","b":[10,149,30,16,26,2,13,135]},{"a":32908,"t":"byte","b":[128,180,30,16,30,34,0,135]},{"a":32916,"t":"byte","b":[128,16,26,34,7,149,128,16]},{"a":32924,"t":"byte","b":[28,196,10,16,10,196,10,16]},{"a":32932,"t":"byte","b":[10,16,26,196,10,16,10,196]},{"a":32940,"t":"byte","b":[10,16,10,16,26,196,10,16]},{"a":32948,"t":"byte","b":[10,179,10,16,10,16,28,16]},{"a":32956,"t":"byte","b":[26,34,6,187,128,16,28,196]},{"a":32964,"t":"byte","b":[10,16,10,196,10,16,10,16]},{"a":32972,"t":"byte","b":[26,196,10,16,10,196,10,16]},{"a":32980,"t":"byte","b":[10,16,26,147,30,196,10,16]},{"a":32988,"t":"byte","b":[10,179,10,16,10,228,10,16]},{"a":32996,"t":"byte","b":[10,229,30,38,0]},{"a":33001,"l":"piano_s1_v1","c":"Piece 1 (K. 545), voice 1's track: the accompaniment, calling patterns $80-$83 (two broken-chord figures and two short cadences) with a few held notes between; ends $00 at $8110, then a spare $00.","t":"byte","b":[39,32,128,0,32,129,0,32]},{"a":33009,"t":"byte","b":[128,0,32,130,0,32,131,0]},{"a":33017,"t":"byte","b":[16,30,32,131,0,236,30,228]},{"a":33025,"t":"byte","b":[30,212,30,32,128,0,32,129]},{"a":33033,"t":"byte","b":[0,32,128,0,32,130,0,0]},{"a":33041,"t":"byte","b":[0]},{"a":33042,"l":"piano_s1_pat_v1","c":"Piece 1 (K. 545), patterns $80-$83, used by voice 1: $80 and $83 are broken-chord (Alberti) figures, C4 G4 E4 G4 ... and G3 D4 B3 D4 ..., $81 and $82 short cadences; each starts with instrument $28 and ends with $21 (return).","t":"byte","b":[40,196,10,148,10,228,10,148]},{"a":33050,"t":"byte","b":[10,196,10,148,10,228,10,148]},{"a":33058,"t":"byte","b":[10,212,10,148,10,236,10,148]},{"a":33066,"t":"byte","b":[10,196,10,148,10,228,10,148]},{"a":33074,"t":"byte","b":[10,196,10,164,10,236,10,164]},{"a":33082,"t":"byte","b":[10,196,10,148,10,228,10,148]},{"a":33090,"t":"byte","b":[10,179,10,148,10,212,10,148]},{"a":33098,"t":"byte","b":[10,196,10,148,10,228,10,148]},{"a":33106,"t":"byte","b":[10,236,10,16,10,16,26,235]},{"a":33114,"t":"byte","b":[10,16,10,227,10,16,10,16]},{"a":33122,"t":"byte","b":[26,227,10,16,10,33,40,211]},{"a":33130,"t":"byte","b":[10,16,10,16,26,211,10,16]},{"a":33138,"t":"byte","b":[10,147,10,16,10,236,30,228]},{"a":33146,"t":"byte","b":[30,212,30,33,40,211,10,16]},{"a":33154,"t":"byte","b":[10,16,26,211,30,195,10,16]},{"a":33162,"t":"byte","b":[10,147,10,16,10,196,10,16]},{"a":33170,"t":"byte","b":[10,194,30,33,40,147,10,212]},{"a":33178,"t":"byte","b":[10,179,10,212,10,147,10,212]},{"a":33186,"t":"byte","b":[10,179,10,212,10,163,10,212]},{"a":33194,"t":"byte","b":[10,196,10,212,10,211,10,212]},{"a":33202,"t":"byte","b":[10,196,10,212,10,251,10,212]},{"a":33210,"t":"byte","b":[10,196,10,212,10,211,10,212]},{"a":33218,"t":"byte","b":[10,196,10,212,10,147,10,212]},{"a":33226,"t":"byte","b":[10,179,10,212,10,147,10,212]},{"a":33234,"t":"byte","b":[10,179,10,212,10,179,10,148]},{"a":33242,"t":"byte","b":[10,212,10,148,10,196,10,148]},{"a":33250,"t":"byte","b":[10,228,10,148,10,163,10,212]},{"a":33258,"t":"byte","b":[10,196,10,212,10,147,10,212]},{"a":33266,"t":"byte","b":[10,179,10,212,10,147,10,228]},{"a":33274,"t":"byte","b":[10,179,10,228,10,163,10,228]},{"a":33282,"t":"byte","b":[10,196,10,228,10,211,10,196]},{"a":33290,"t":"byte","b":[10,163,10,196,10,147,30,33]},{"a":33298,"l":"piano_s1_v3","c":"Piece 1 (K. 545), voice 3's track: calls the melody patterns $84-$87 with a scale passage between them (A5 F#5 D5 G5 ... C6); ends $00 at $8251, then a spare $00.","t":"byte","b":[39,32,132,0,32,133,0,32]},{"a":33306,"t":"byte","b":[132,0,32,134,0,32,135,0]},{"a":33314,"t":"byte","b":[165,30,253,10,213,10,149,12]},{"a":33322,"t":"byte","b":[213,12,229,12,253,12,149,12]},{"a":33330,"t":"byte","b":[165,12,181,12,198,12,32,135]},{"a":33338,"t":"byte","b":[0,165,30,253,10,213,10,149]},{"a":33346,"t":"byte","b":[30,16,28,32,132,0,32,133]},{"a":33354,"t":"byte","b":[0,32,132,0,32,134,0,0]},{"a":33362,"t":"byte","b":[0]},{"a":33363,"l":"piano_s1_pat_v3","c":"Piece 1 (K. 545), patterns $84-$87, used by voice 3: the right-hand melody (C5 E5 G5, B4 C5 D5 C5, ... and the running scales), instrument $23; then two spare $00 bytes at $837B.","t":"byte","b":[35,197,26,229,30,149,30,180]},{"a":33371,"t":"byte","b":[22,197,12,213,12,197,26,165]},{"a":33379,"t":"byte","b":[26,149,30,198,30,149,30,237]},{"a":33387,"t":"byte","b":[4,149,4,237,4,229,12,237]},{"a":33395,"t":"byte","b":[12,229,26,164,10,180,12,197]},{"a":33403,"t":"byte","b":[12,213,12,229,12,237,12,149]},{"a":33411,"t":"byte","b":[12,165,12,149,12,237,12,229]},{"a":33419,"t":"byte","b":[12,213,12,197,12,180,12,164]},{"a":33427,"t":"byte","b":[12,148,10,164,12,180,12,197]},{"a":33435,"t":"byte","b":[12,213,12,229,12,237,12,149]},{"a":33443,"t":"byte","b":[12,237,12,229,12,213,12,197]},{"a":33451,"t":"byte","b":[12,180,12,164,12,148,12,33]},{"a":33459,"t":"byte","b":[35,252,10,148,12,164,12,180]},{"a":33467,"t":"byte","b":[12,197,12,213,12,229,12,253]},{"a":33475,"t":"byte","b":[12,229,12,213,12,197,12,180]},{"a":33483,"t":"byte","b":[12,164,12,148,12,252,12,148]},{"a":33491,"t":"byte","b":[10,165,12,149,12,165,12,149]},{"a":33499,"t":"byte","b":[12,165,12,149,12,165,12,149]},{"a":33507,"t":"byte","b":[12,165,12,149,12,165,12,149]},{"a":33515,"t":"byte","b":[12,253,12,149,12,33,35,236]},{"a":33523,"t":"byte","b":[10,148,12,164,12,180,12,197]},{"a":33531,"t":"byte","b":[12,213,12,229,12,237,12,229]},{"a":33539,"t":"byte","b":[12,213,12,197,12,180,12,164]},{"a":33547,"t":"byte","b":[12,148,12,236,12,228,10,236]},{"a":33555,"t":"byte","b":[12,148,12,164,12,180,12,197]},{"a":33563,"t":"byte","b":[12,213,12,197,10,16,10,198]},{"a":33571,"t":"byte","b":[30,33,35,214,10,181,10,149]},{"a":33579,"t":"byte","b":[22,165,12,181,12,165,10,149]},{"a":33587,"t":"byte","b":[10,149,4,165,4,149,4,253]},{"a":33595,"t":"byte","b":[10,253,28,198,10,165,10,253]},{"a":33603,"t":"byte","b":[22,149,12,165,12,149,10,253]},{"a":33611,"t":"byte","b":[10,165,4,181,4,165,4,149]},{"a":33619,"t":"byte","b":[10,149,28,214,30,181,10,149]},{"a":33627,"t":"byte","b":[10,229,26,198,30,165,10,253]},{"a":33635,"t":"byte","b":[10,213,26,181,30,149,10,229]},{"a":33643,"t":"byte","b":[10,197,10,213,12,229,12,253]},{"a":33651,"t":"byte","b":[12,149,12,165,12,181,12,33]},{"a":33659,"t":"byte","b":[0,0]},{"a":33661,"l":"piano_s1_patterns","c":"Piece 1 (K. 545), pattern table: eight words, the addresses of patterns $80-$87 ($8112, $8168, $817E, $8196, $8253, $82B3, $82F1, $8325). The header points here (header+12); the driver reads it at $D561-$D575.","t":"byte","b":[18,129,104,129,126,129,150,129]},{"a":33669,"t":"byte","b":[83,130,179,130,241,130,37,131]},{"a":33677,"l":"piano_song2","c":"Piano piece 2 of 4, header (voices at $8416, $83A1 and $846C, instrument $2D for all three; pattern table $8500). Not identified: E-flat, A-flat and B-flat throughout, and the upper voice opens G4 B-flat4 F4 A-flat4 E-flat4 G4 B-flat4 C5. Same layout and byte code as piano_song1.","t":"byte","b":[45,1,22,132,45,1,161,131]},{"a":33685,"t":"byte","b":[45,1,108,132,0,133,0,0]},{"a":33693,"t":"byte","b":[0,0,0,0]},{"a":33697,"l":"piano_s2_v2","c":"Piece 2, voice 2's track: long notes and rests (G3, B-flat4, B-flat5, A-flat3, B-flat4, E-flat5, ...); ends with $26 and $00 at $8415.","t":"byte","b":[39,16,26,16,26,16,26,16]},{"a":33705,"t":"byte","b":[26,16,26,16,30,147,30,16]},{"a":33713,"t":"byte","b":[30,172,30,173,46,16,30,155]},{"a":33721,"t":"byte","b":[26,172,30,221,46,16,30,147]},{"a":33729,"t":"byte","b":[26,213,30,214,28,212,26,196]},{"a":33737,"t":"byte","b":[26,171,50,147,26,172,30,173]},{"a":33745,"t":"byte","b":[46,16,30,155,26,221,30,221]},{"a":33753,"t":"byte","b":[50,16,46,16,30,220,26,155]},{"a":33761,"t":"byte","b":[30,219,30,237,30,149,26,16]},{"a":33769,"t":"byte","b":[28,196,26,149,30,149,46,16]},{"a":33777,"t":"byte","b":[30,220,26,156,50,16,46,147]},{"a":33785,"t":"byte","b":[26,172,30,173,46,16,30,155]},{"a":33793,"t":"byte","b":[26,221,30,173,50,16,46,16]},{"a":33801,"t":"byte","b":[30,220,26,155,30,219,30,237]},{"a":33809,"t":"byte","b":[30,149,30,38,0]},{"a":33814,"l":"piano_s2_v1","c":"Piece 2, voice 1's track: the lowest part, calling patterns $80-$82 (bass figures) with single low notes between; ends $00 at $846A, then a spare $00.","t":"byte","b":[39,32,128,0,34,1,23,132]},{"a":33822,"t":"byte","b":[32,129,0,220,30,148,26,32]},{"a":33830,"t":"byte","b":[128,0,251,30,252,30,252,26]},{"a":33838,"t":"byte","b":[147,30,171,30,211,30,251,30]},{"a":33846,"t":"byte","b":[146,30,147,28,32,128,0,32]},{"a":33854,"t":"byte","b":[129,0,32,130,0,16,10,250]},{"a":33862,"t":"byte","b":[30,212,30,211,30,251,30,146]},{"a":33870,"t":"byte","b":[30,148,30,148,26,162,30,236]},{"a":33878,"t":"byte","b":[30,235,30,163,30,170,30,171]},{"a":33886,"t":"byte","b":[30,16,50,32,128,0,32,129]},{"a":33894,"t":"byte","b":[0,32,130,0,0,0]},{"a":33900,"l":"piano_s2_v3","c":"Piece 2, voice 3's track: the top part, calling patterns $83-$85 with runs of short notes between; ends $00 at $84FE, then a spare $00.","t":"byte","b":[39,16,46,16,28,16,10,32]},{"a":33908,"t":"byte","b":[131,0,32,132,0,149,30,173]},{"a":33916,"t":"byte","b":[22,32,131,0,165,30,165,22]},{"a":33924,"t":"byte","b":[213,10,149,10,172,10,197,10]},{"a":33932,"t":"byte","b":[221,10,213,10,148,10,164,10]},{"a":33940,"t":"byte","b":[172,10,148,10,172,10,164,10]},{"a":33948,"t":"byte","b":[172,10,148,10,172,10,156,10]},{"a":33956,"t":"byte","b":[32,131,0,32,132,0,32,133]},{"a":33964,"t":"byte","b":[0,221,10,213,10,164,10,172]},{"a":33972,"t":"byte","b":[10,197,10,213,10,164,10,172]},{"a":33980,"t":"byte","b":[10,197,10,213,30,173,30,214]},{"a":33988,"t":"byte","b":[22,149,10,237,10,197,10,213]},{"a":33996,"t":"byte","b":[10,221,10,237,10,197,10,213]},{"a":34004,"t":"byte","b":[10,221,10,237,10,149,10,237]},{"a":34012,"t":"byte","b":[10,197,10,221,10,237,10,221]},{"a":34020,"t":"byte","b":[10,172,10,213,10,221,10,213]},{"a":34028,"t":"byte","b":[10,156,10,197,10,213,10,197]},{"a":34036,"t":"byte","b":[10,32,131,0,32,132,0,32]},{"a":34044,"t":"byte","b":[133,0,0,0]},{"a":34048,"l":"piano_s2_patterns","c":"Piece 2, pattern table: six words, patterns $80-$85 at $850C, $8516, $8528, $854C, $8562 and $857C.","t":"byte","b":[12,133,22,133,40,133,76,133]},{"a":34056,"t":"byte","b":[98,133,124,133]},{"a":34060,"l":"piano_s2_pat","c":"Piece 2, patterns $80-$85, each instrument $2D ... $21: $80-$82 are bass figures (E-flat3 B-flat3 B-flat2 B-flat3 ...), $83-$85 melody runs (G4 B-flat4 F4 A-flat4 ...).","t":"byte","b":[45,219,30,171,30,170,30,171]},{"a":34068,"t":"byte","b":[30,33,45,235,30,171,30,212]},{"a":34076,"t":"byte","b":[26,235,30,171,30,170,30,171]},{"a":34084,"t":"byte","b":[30,219,30,33,45,148,30,148]},{"a":34092,"t":"byte","b":[26,147,30,220,30,163,30,236]},{"a":34100,"t":"byte","b":[30,179,30,148,30,196,30,220]},{"a":34108,"t":"byte","b":[30,170,30,171,30,170,30,171]},{"a":34116,"t":"byte","b":[30,219,30,171,30,219,22,33]},{"a":34124,"t":"byte","b":[45,148,10,172,10,236,10,156]},{"a":34132,"t":"byte","b":[10,220,10,148,10,172,10,197]},{"a":34140,"t":"byte","b":[10,221,10,213,30,33,45,237]},{"a":34148,"t":"byte","b":[30,237,22,197,10,221,10,172]},{"a":34156,"t":"byte","b":[10,213,10,156,10,197,10,213]},{"a":34164,"t":"byte","b":[10,237,10,157,10,149,30,33]},{"a":34172,"t":"byte","b":[45,173,30,222,22,172,10,221]},{"a":34180,"t":"byte","b":[10,172,10,205,10,197,10,237]},{"a":34188,"t":"byte","b":[10,197,10,221,10,213,10,149]},{"a":34196,"t":"byte","b":[10,213,10,237,10,213,10,221]},{"a":34204,"t":"byte","b":[10,237,10,149,10,157,10,173]},{"a":34212,"t":"byte","b":[10,149,10,157,10,165,10,173]},{"a":34220,"t":"byte","b":[10,181,10,198,10,214,10,222]},{"a":34228,"t":"byte","b":[30,173,30,222,22,33]},{"a":34234,"l":"piano_song3","c":"Piano piece 3 of 4: Beethoven's Fuer Elise; merged by time its three voices open E5 D#5 E5 D#5 E5 B4 D5 C5 A4 over A2 E3 A3. Header: voices at $862C, $85D4 and $8672, instrument $23, pattern table $85CE. Same layout and byte code as piano_song1.","t":"byte","b":[35,1,44,134,35,1,212,133]},{"a":34242,"t":"byte","b":[35,1,114,134,206,133,0,0]},{"a":34250,"t":"byte","b":[0,0,0,0]},{"a":34254,"l":"piano_s3_patterns","c":"Piece 3 (Fuer Elise), pattern table: three words, patterns $80-$82 at $86CC, $86EE and $870E.","t":"byte","b":[204,134,238,134,14,135]},{"a":34260,"l":"piano_s3_v2","c":"Piece 3 (Fuer Elise), voice 2's track: plays the opening E5 and calls pattern $80, with alternating low and high notes (E3 C5 E3 E5 ...) between; ends with $26 and $00 at $862B.","t":"byte","b":[39,229,22,32,128,0,16,10]},{"a":34268,"t":"byte","b":[227,22,197,22,227,22,229,30]},{"a":34276,"t":"byte","b":[16,10,32,128,0,16,10,227]},{"a":34284,"t":"byte","b":[22,197,30,16,10,227,22,197]},{"a":34292,"t":"byte","b":[30,16,10,147,22,237,30,16]},{"a":34300,"t":"byte","b":[10,147,22,229,30,16,10,227]},{"a":34308,"t":"byte","b":[22,213,30,16,10,227,22,229]},{"a":34316,"t":"byte","b":[30,16,10,229,22,229,30,16]},{"a":34324,"t":"byte","b":[10,221,22,229,30,34,0,228]},{"a":34332,"t":"byte","b":[133,16,10,32,128,0,16,10]},{"a":34340,"t":"byte","b":[227,22,197,30,196,46,38,0]},{"a":34348,"l":"piano_s3_v1","c":"Piece 3 (Fuer Elise), voice 1's track: bass notes (E2, A2, A3 ...) around pattern $81, and the repeated E5 D#5 figure; ends $00 at $8670, then a spare $00.","t":"byte","b":[39,16,30,32,129,0,226,30]},{"a":34356,"t":"byte","b":[16,10,228,22,162,30,163,30]},{"a":34364,"t":"byte","b":[16,30,32,129,0,226,30,16]},{"a":34372,"t":"byte","b":[10,228,22,162,22,180,22,194]},{"a":34380,"t":"byte","b":[22,148,22,146,22,236,22,162]},{"a":34388,"t":"byte","b":[22,228,22,226,22,228,22,229]},{"a":34396,"t":"byte","b":[22,221,22,229,22,221,22,34]},{"a":34404,"t":"byte","b":[0,62,134,32,129,0,226,22]},{"a":34412,"t":"byte","b":[212,22,162,46,0,0]},{"a":34418,"l":"piano_s3_v3","c":"Piece 3 (Fuer Elise), voice 3's track: the D#5 of the opening turn and pattern $82, with the B4 G#3 B4 A4 cadence; ends $00 at $86CA, then a spare $00.","t":"byte","b":[39,16,10,221,30,32,130,0]},{"a":34426,"t":"byte","b":[180,30,155,22,180,10,164,30]},{"a":34434,"t":"byte","b":[16,30,16,10,221,30,32,130]},{"a":34442,"t":"byte","b":[0,180,30,155,22,180,10,164]},{"a":34450,"t":"byte","b":[30,163,22,213,10,229,30,196]},{"a":34458,"t":"byte","b":[22,229,10,213,30,179,22,213]},{"a":34466,"t":"byte","b":[10,197,30,163,22,197,10,180]},{"a":34474,"t":"byte","b":[30,228,22,228,30,16,10,230]},{"a":34482,"t":"byte","b":[22,221,30,16,10,229,22,221]},{"a":34490,"t":"byte","b":[30,34,0,136,134,32,130,0]},{"a":34498,"t":"byte","b":[180,30,155,22,180,10,164,46]},{"a":34506,"t":"byte","b":[0,0]},{"a":34508,"l":"piano_s3_pat","c":"Piece 3 (Fuer Elise), patterns $80-$82 (instrument $23, each ended by $21): fragments of the main theme and its left-hand arpeggios, one pattern for each voice.","t":"byte","b":[35,221,30,180,30,197,10,16]},{"a":34516,"t":"byte","b":[10,227,22,228,22,227,22,156]},{"a":34524,"t":"byte","b":[22,227,22,229,22,221,30,180]},{"a":34532,"t":"byte","b":[30,197,10,16,10,227,22,228]},{"a":34540,"t":"byte","b":[30,33,35,229,30,229,30,213]},{"a":34548,"t":"byte","b":[30,162,22,196,22,226,22,228]},{"a":34556,"t":"byte","b":[22,162,22,228,22,229,30,229]},{"a":34564,"t":"byte","b":[30,213,30,162,30,16,10,196]},{"a":34572,"t":"byte","b":[22,33,35,16,26,16,10,164]},{"a":34580,"t":"byte","b":[30,163,22,164,10,180,30,155]},{"a":34588,"t":"byte","b":[22,180,10,197,30,163,22,221]},{"a":34596,"t":"byte","b":[30,16,26,16,10,164,30,163]},{"a":34604,"t":"byte","b":[22,164,10,33]},{"a":34608,"l":"piano_song4","c":"Piano piece 4 of 4: Bach's Fugue in C minor, BWV 847 (The Well-Tempered Clavier, book 1). Header: voices at $8B96, $895F and $8744, instrument $23, no pattern table (0), so the three tracks are written out in full. Same byte code as piano_song1.","t":"byte","b":[35,1,150,139,35,1,95,137]},{"a":34616,"t":"byte","b":[35,1,68,135,0,0,0,0]},{"a":34624,"t":"byte","b":[0,0,0,0]},{"a":34628,"l":"piano_s4_v3","c":"Piece 4 (C-minor fugue), voice 3's track, the first entry: the subject C5 B4 C5 G4 A-flat4 C5 B4 C5 D5 G4 ..., 268 notes and rests; ends $00 at $895E.","t":"byte","b":[39,16,14,197,16,180,16,197]},{"a":34636,"t":"byte","b":[14,148,14,156,14,197,16,180]},{"a":34644,"t":"byte","b":[16,197,14,213,14,148,14,197]},{"a":34652,"t":"byte","b":[16,180,16,197,14,213,14,236]},{"a":34660,"t":"byte","b":[16,148,16,156,22,148,16,236]},{"a":34668,"t":"byte","b":[16,220,16,197,16,180,16,164]},{"a":34676,"t":"byte","b":[16,148,16,236,16,220,16,212]},{"a":34684,"t":"byte","b":[16,196,14,221,14,213,14,197]},{"a":34692,"t":"byte","b":[14,172,14,164,14,172,14,197]},{"a":34700,"t":"byte","b":[14,252,14,148,14,164,14,252]},{"a":34708,"t":"byte","b":[14,148,22,16,16,196,16,212]},{"a":34716,"t":"byte","b":[16,220,16,236,16,148,16,156]},{"a":34724,"t":"byte","b":[70,212,16,220,16,236,16,148]},{"a":34732,"t":"byte","b":[16,164,16,172,70,220,16,236]},{"a":34740,"t":"byte","b":[16,148,16,156,16,148,16,236]},{"a":34748,"t":"byte","b":[16,220,16,212,14,197,16,180]},{"a":34756,"t":"byte","b":[16,197,22,16,72,237,14,221]},{"a":34764,"t":"byte","b":[14,213,14,16,14,156,14,148]},{"a":34772,"t":"byte","b":[14,236,14,148,14,236,16,220]},{"a":34780,"t":"byte","b":[16,236,14,212,14,148,22,16]},{"a":34788,"t":"byte","b":[14,180,14,197,14,197,16,180]},{"a":34796,"t":"byte","b":[16,197,14,148,14,156,22,16]},{"a":34804,"t":"byte","b":[14,164,14,172,14,172,16,164]},{"a":34812,"t":"byte","b":[16,172,14,236,14,148,22,16]},{"a":34820,"t":"byte","b":[14,148,14,156,14,156,14,148]},{"a":34828,"t":"byte","b":[14,236,14,16,14,155,14,171]},{"a":34836,"t":"byte","b":[14,196,14,16,14,155,16,147]},{"a":34844,"t":"byte","b":[16,155,14,235,14,171,14,196]},{"a":34852,"t":"byte","b":[14,171,14,155,14,171,14,147]},{"a":34860,"t":"byte","b":[14,235,14,219,14,235,14,204]},{"a":34868,"t":"byte","b":[14,196,14,171,14,196,14,155]},{"a":34876,"t":"byte","b":[14,147,14,235,14,147,14,148]},{"a":34884,"t":"byte","b":[16,252,16,148,14,196,14,220]},{"a":34892,"t":"byte","b":[14,148,16,252,16,148,14,164]},{"a":34900,"t":"byte","b":[14,212,14,148,16,252,16,148]},{"a":34908,"t":"byte","b":[14,164,14,196,16,212,16,220]},{"a":34916,"t":"byte","b":[22,212,16,196,16,171,14,16]},{"a":34924,"t":"byte","b":[70,212,16,228,16,252,16,148]},{"a":34932,"t":"byte","b":[16,164,16,172,70,228,16,236]},{"a":34940,"t":"byte","b":[16,148,16,164,16,172,16,197]},{"a":34948,"t":"byte","b":[70,252,16,148,16,164,16,172]},{"a":34956,"t":"byte","b":[14,220,16,212,16,220,14,147]},{"a":34964,"t":"byte","b":[14,155,14,236,16,220,16,235]},{"a":34972,"t":"byte","b":[14,163,14,171,14,148,16,236]},{"a":34980,"t":"byte","b":[16,148,14,179,14,196,16,236]},{"a":34988,"t":"byte","b":[16,220,16,212,16,196,16,171]},{"a":34996,"t":"byte","b":[16,155,16,147,16,235,14,156]},{"a":35004,"t":"byte","b":[14,148,14,236,14,220,14,212]},{"a":35012,"t":"byte","b":[14,220,14,236,14,179,14,196]},{"a":35020,"t":"byte","b":[14,212,14,179,14,196,22,16]},{"a":35028,"t":"byte","b":[14,228,14,236,14,236,16,228]},{"a":35036,"t":"byte","b":[16,236,14,196,14,212,22,16]},{"a":35044,"t":"byte","b":[14,212,14,220,14,220,16,212]},{"a":35052,"t":"byte","b":[16,220,14,171,14,196,28,16]},{"a":35060,"t":"byte","b":[14,212,16,220,16,236,16,220]},{"a":35068,"t":"byte","b":[16,236,16,212,16,179,14,16]},{"a":35076,"t":"byte","b":[22,179,14,196,14,16,22,220]},{"a":35084,"t":"byte","b":[14,212,14,16,22,236,22,16]},{"a":35092,"t":"byte","b":[22,236,14,220,14,156,14,148]},{"a":35100,"t":"byte","b":[14,236,14,220,14,212,14,220]},{"a":35108,"t":"byte","b":[14,236,14,179,14,196,14,212]},{"a":35116,"t":"byte","b":[14,179,22,196,14,16,14,196]},{"a":35124,"t":"byte","b":[14,236,16,212,16,220,16,196]},{"a":35132,"t":"byte","b":[70,179,14,196,22,16,14,228]},{"a":35140,"t":"byte","b":[14,236,22,16,14,236,22,220]},{"a":35148,"t":"byte","b":[16,212,16,220,14,236,14,212]},{"a":35156,"t":"byte","b":[14,16,14,212,14,16,14,196]},{"a":35164,"t":"byte","b":[28,38,0]},{"a":35167,"l":"piano_s4_v2","c":"Piece 4 (C-minor fugue), voice 2's track: rests, then the answer (G5 F#5 G5 C5 E-flat5 G5 F#5 G5 A5 D5 ...), 282 notes and rests; ends $00 at $8B94, then a spare $00.","t":"byte","b":[39,16,50,16,50,16,14,149]},{"a":35175,"t":"byte","b":[16,253,16,149,14,197,14,221]},{"a":35183,"t":"byte","b":[14,149,16,253,16,149,14,165]},{"a":35191,"t":"byte","b":[14,213,14,149,16,253,16,149]},{"a":35199,"t":"byte","b":[14,165,14,197,16,213,16,221]},{"a":35207,"t":"byte","b":[22,213,16,197,16,172,14,221]},{"a":35215,"t":"byte","b":[16,213,16,221,14,148,14,156]},{"a":35223,"t":"byte","b":[14,237,16,221,16,237,14,164]},{"a":35231,"t":"byte","b":[14,172,14,149,16,237,16,149]},{"a":35239,"t":"byte","b":[14,180,14,197,14,213,16,221]},{"a":35247,"t":"byte","b":[16,237,72,221,16,213,16,197]},{"a":35255,"t":"byte","b":[16,172,16,156,16,148,16,236]},{"a":35263,"t":"byte","b":[14,157,14,149,14,237,14,221]},{"a":35271,"t":"byte","b":[14,213,14,221,14,237,14,180]},{"a":35279,"t":"byte","b":[14,197,14,213,14,180,14,197]},{"a":35287,"t":"byte","b":[14,149,16,253,16,149,14,213]},{"a":35295,"t":"byte","b":[14,221,22,16,14,229,14,237]},{"a":35303,"t":"byte","b":[14,237,16,229,16,237,14,197]},{"a":35311,"t":"byte","b":[14,213,22,16,14,213,14,221]},{"a":35319,"t":"byte","b":[14,221,16,213,16,221,14,172]},{"a":35327,"t":"byte","b":[14,197,14,221,16,213,16,221]},{"a":35335,"t":"byte","b":[14,237,14,172,14,221,16,213]},{"a":35343,"t":"byte","b":[16,221,14,237,14,156,16,172]},{"a":35351,"t":"byte","b":[16,197,22,172,16,156,16,148]},{"a":35359,"t":"byte","b":[16,220,16,236,16,148,16,156]},{"a":35367,"t":"byte","b":[16,172,16,197,16,213,16,221]},{"a":35375,"t":"byte","b":[16,213,16,197,16,213,16,221]},{"a":35383,"t":"byte","b":[16,237,16,149,16,165,16,173]},{"a":35391,"t":"byte","b":[16,236,16,148,16,156,16,172]},{"a":35399,"t":"byte","b":[16,197,16,213,16,229,16,237]},{"a":35407,"t":"byte","b":[16,221,16,213,16,221,16,237]},{"a":35415,"t":"byte","b":[16,149,16,165,16,181,16,198]},{"a":35423,"t":"byte","b":[14,181,16,165,16,149,16,237]},{"a":35431,"t":"byte","b":[16,221,16,213,16,197,14,221]},{"a":35439,"t":"byte","b":[14,213,14,197,14,172,14,164]},{"a":35447,"t":"byte","b":[14,172,14,197,14,252,14,148]},{"a":35455,"t":"byte","b":[14,164,14,252,14,148,14,213]},{"a":35463,"t":"byte","b":[16,197,16,213,14,16,22,229]},{"a":35471,"t":"byte","b":[16,213,16,229,14,16,22,253]},{"a":35479,"t":"byte","b":[16,229,16,253,14,16,22,148]},{"a":35487,"t":"byte","b":[16,236,16,148,14,16,14,16]},{"a":35495,"t":"byte","b":[14,164,16,148,16,164,14,16]},{"a":35503,"t":"byte","b":[22,180,16,164,16,180,14,16]},{"a":35511,"t":"byte","b":[14,16,14,197,16,180,16,197]},{"a":35519,"t":"byte","b":[14,148,14,156,14,197,16,180]},{"a":35527,"t":"byte","b":[16,197,14,213,14,148,14,197]},{"a":35535,"t":"byte","b":[16,180,16,197,14,213,14,236]},{"a":35543,"t":"byte","b":[16,148,16,156,22,148,16,236]},{"a":35551,"t":"byte","b":[16,220,14,197,16,180,16,197]},{"a":35559,"t":"byte","b":[14,148,14,156,22,16,14,164]},{"a":35567,"t":"byte","b":[14,172,14,172,16,164,16,172]},{"a":35575,"t":"byte","b":[14,236,14,148,22,16,14,148]},{"a":35583,"t":"byte","b":[22,156,16,172,16,197,16,180]},{"a":35591,"t":"byte","b":[16,197,16,156,16,236,28,16]},{"a":35599,"t":"byte","b":[14,213,16,197,16,213,14,236]},{"a":35607,"t":"byte","b":[14,220,14,221,16,213,16,221]},{"a":35615,"t":"byte","b":[14,148,14,236,14,237,16,221]},{"a":35623,"t":"byte","b":[16,237,14,156,14,148,16,237]},{"a":35631,"t":"byte","b":[16,221,16,213,16,197,16,180]},{"a":35639,"t":"byte","b":[16,164,16,148,16,197,14,237]},{"a":35647,"t":"byte","b":[14,221,14,213,14,16,14,156]},{"a":35655,"t":"byte","b":[14,148,14,236,14,148,14,236]},{"a":35663,"t":"byte","b":[16,220,16,236,14,212,14,156]},{"a":35671,"t":"byte","b":[14,148,14,16,14,164,14,180]},{"a":35679,"t":"byte","b":[14,197,14,236,16,220,16,212]},{"a":35687,"t":"byte","b":[16,196,16,196,14,197,16,180]},{"a":35695,"t":"byte","b":[16,197,14,148,14,156,14,197]},{"a":35703,"t":"byte","b":[16,180,16,197,14,213,14,148]},{"a":35711,"t":"byte","b":[14,197,16,180,16,197,14,213]},{"a":35719,"t":"byte","b":[14,236,16,148,16,156,22,148]},{"a":35727,"t":"byte","b":[16,236,16,228,28,0,0]},{"a":35734,"l":"piano_s4_v1","c":"Piece 4 (C-minor fugue), voice 1's track: long rests, then the subject in the bass (C4 B3 C4 G3 A-flat3 ...), 256 notes and rests; ends $00 at $8D97, then a spare $00 at $8D98.","t":"byte","b":[39,16,50,16,50,16,50,16]},{"a":35742,"t":"byte","b":[50,16,50,16,50,16,14,196]},{"a":35750,"t":"byte","b":[16,179,16,196,14,147,14,155]},{"a":35758,"t":"byte","b":[14,196,16,179,16,196,14,212]},{"a":35766,"t":"byte","b":[14,147,14,196,16,179,16,196]},{"a":35774,"t":"byte","b":[14,212,14,235,16,147,16,155]},{"a":35782,"t":"byte","b":[22,147,16,235,16,219,16,196]},{"a":35790,"t":"byte","b":[16,179,16,163,16,147,16,235]},{"a":35798,"t":"byte","b":[16,219,16,211,16,195,16,211]},{"a":35806,"t":"byte","b":[16,219,16,211,16,195,16,170]},{"a":35814,"t":"byte","b":[16,154,16,146,16,234,16,171]},{"a":35822,"t":"byte","b":[16,155,16,147,16,235,16,219]},{"a":35830,"t":"byte","b":[16,211,16,195,16,170,16,195]},{"a":35838,"t":"byte","b":[16,211,16,195,16,170,16,154]},{"a":35846,"t":"byte","b":[16,146,16,234,16,218,16,155]},{"a":35854,"t":"byte","b":[16,147,16,235,16,219,16,203]},{"a":35862,"t":"byte","b":[16,195,16,170,16,154,14,196]},{"a":35870,"t":"byte","b":[14,171,14,155,14,147,14,235]},{"a":35878,"t":"byte","b":[14,147,14,155,14,211,14,219]},{"a":35886,"t":"byte","b":[14,235,14,211,14,219,14,155]},{"a":35894,"t":"byte","b":[14,147,14,235,14,147,14,219]},{"a":35902,"t":"byte","b":[14,211,14,195,14,211,14,171]},{"a":35910,"t":"byte","b":[14,155,14,147,14,155,14,235]},{"a":35918,"t":"byte","b":[14,219,14,211,14,219,14,16]},{"a":35926,"t":"byte","b":[28,195,14,170,14,162,14,16]},{"a":35934,"t":"byte","b":[14,219,14,211,14,195,14,211]},{"a":35942,"t":"byte","b":[14,195,16,170,16,195,14,211]},{"a":35950,"t":"byte","b":[14,146,14,171,16,163,16,171]},{"a":35958,"t":"byte","b":[14,211,14,219,14,196,16,171]},{"a":35966,"t":"byte","b":[16,196,14,227,14,235,14,212]},{"a":35974,"t":"byte","b":[16,196,16,212,14,251,14,147]},{"a":35982,"t":"byte","b":[22,16,16,146,16,162,16,178]},{"a":35990,"t":"byte","b":[16,195,16,211,16,219,70,162]},{"a":35998,"t":"byte","b":[16,170,16,195,16,211,16,219]},{"a":36006,"t":"byte","b":[16,235,70,178,16,195,16,211]},{"a":36014,"t":"byte","b":[16,219,14,16,22,227,14,235]},{"a":36022,"t":"byte","b":[14,234,14,218,14,210,14,16]},{"a":36030,"t":"byte","b":[14,154,14,146,14,234,14,146]},{"a":36038,"t":"byte","b":[14,234,16,218,16,234,14,146]},{"a":36046,"t":"byte","b":[14,195,16,211,16,219,16,211]},{"a":36054,"t":"byte","b":[16,195,16,170,16,154,16,146]},{"a":36062,"t":"byte","b":[16,234,16,171,16,155,16,147]},{"a":36070,"t":"byte","b":[16,235,16,219,16,211,16,195]},{"a":36078,"t":"byte","b":[16,170,16,195,16,211,16,195]},{"a":36086,"t":"byte","b":[16,170,16,154,16,146,16,234]},{"a":36094,"t":"byte","b":[16,218,16,155,16,147,16,235]},{"a":36102,"t":"byte","b":[16,219,16,211,16,195,16,170]},{"a":36110,"t":"byte","b":[16,154,16,170,16,195,16,170]},{"a":36118,"t":"byte","b":[16,154,16,146,16,234,16,218]},{"a":36126,"t":"byte","b":[16,210,16,147,16,235,16,219]},{"a":36134,"t":"byte","b":[16,211,16,195,16,178,16,162]},{"a":36142,"t":"byte","b":[16,146,22,16,22,16,16,146]},{"a":36150,"t":"byte","b":[16,162,16,178,16,195,16,211]},{"a":36158,"t":"byte","b":[16,219,16,235,16,147,16,235]},{"a":36166,"t":"byte","b":[16,155,16,147,16,235,16,219]},{"a":36174,"t":"byte","b":[16,211,16,195,16,178,14,195]},{"a":36182,"t":"byte","b":[16,178,16,195,14,146,14,154]},{"a":36190,"t":"byte","b":[14,195,16,178,16,195,14,211]},{"a":36198,"t":"byte","b":[14,146,14,195,16,178,16,195]},{"a":36206,"t":"byte","b":[14,211,14,234,16,146,16,154]},{"a":36214,"t":"byte","b":[22,146,16,234,16,218,22,16]},{"a":36222,"t":"byte","b":[14,219,14,211,14,195,14,147]},{"a":36230,"t":"byte","b":[14,146,14,195,50,16,28,179]},{"a":36238,"t":"byte","b":[14,16,14,179,14,16,14,147]},{"a":36246,"t":"byte","b":[28,0,0]},{"a":36249,"l":"script_none","c":"An activity script that is only its $00 terminator. interrupt_for_request ($8FCD) and the code at $3100 and $33BD point the script pointer $0423/$0424 here, so that when the activity then running ends, script_next finds no follow-on activity. (The two bytes before it, $8D97-$8D98, are the end of piano_s4_v1.)","t":"byte","b":[0]},{"a":36250,"l":"act_music_on","c":"Music flag for the activity system: $FF while the stereo plays (set by stereo_on at $9261 with music_playing and turntable_on, cleared by stereo_off at $9276). When it is set, script_next ($8F46) resumes an interrupted activity straight away instead of chaining another pending request, and activity 15 ($916A) skips its request check.","t":"byte","b":[0],"x":[36678,37226,37473,37494]},{"a":36251,"l":"activity","c":"The current activity number, 0-127, the index of the switch at $8DC6 (activity_table). Written by script_next (the next byte of the script at $0423/$0424, or 15 to resume after a request), by interrupt_for_request ($901C, the request's activity), by activity 15 ($919F, restoring saved_activity), by activity 0 ($E395, from the queue of typed-sentence actions) and at $30AB, $30F7 and $33B7. Also read at $17CD and $30E3. 5 in play-02.","t":"byte","b":[5],"x":[6093,12459,12515,12535,13239,14635,36291,36639,36699,36835,36892,37036,37279,58261]},{"a":36252,"l":"act_wait_count","c":"Countdown for one activity's waiting phase: $A85B sets it to a random value with bit 6 forced on (ORA #$40: $40-$7F or $C0-$FF), $A866 decrements it every eighth main-loop pass (when $09DB AND 7 is 0) and moves to the next phase when it reaches 0.","t":"byte","b":[0],"x":[43104,43117]},{"a":36253,"l":"request_running","c":"1 while the activity for a CTRL-key request (the flags at $BEF3) is running, set by interrupt_for_request ($9011) and by activity 15 ($9184); 0 otherwise, cleared by script_next ($8F7F) when the request's script ends and at $904E. activity_dispatch's first call, $BED0, only picks up a new request while it is 0.","t":"byte","b":[0],"x":[36653,36735,36747,36796,36881,36942,37252,38404,48848]},{"a":36254,"l":"request_activity","c":"Activity number of the pending or running request, 0 for none. $BED0 sets it from the table at $BEE9 for the first request flag set at $BEF3-$BEFC; interrupt_for_request switches to it; script_next clears it ($8F82) and the request's flag when the request's activity ends. Also read at $2202 and $95E5-$95FF.","t":"byte","b":[0],"x":[8706,36663,36738,36742,36771,36791,36889,36915,36929,36945,38373,38399,48869,57700,57707]},{"a":36255,"l":"saved_039a","c":"Copy of $039A made by interrupt_for_request ($8FE0) when a request interrupts an activity. Nothing reads it back: activity 15 restores the other saved values but not this one.","t":"byte","b":[0],"x":[36832]},{"a":36256,"l":"saved_038b","c":"Copy of $038B made by interrupt_for_request ($8FDA). Like saved_039a, it is written and never read.","t":"byte","b":[0],"x":[36826]},{"a":36257,"l":"saved_phase","c":"The interrupted activity's phase ($4C), saved by interrupt_for_request ($8FEB) and put back by activity 15 ($91A2).","t":"byte","b":[0],"x":[36843,37282]},{"a":36258,"l":"saved_activity","c":"The interrupted activity's number (activity, $8D9B), saved by interrupt_for_request ($8FE6) and put back by activity 15 ($919C).","t":"byte","b":[0],"x":[36838,37276]},{"a":36259,"l":"saved_target","c":"The person's target location ($03C0) when a request interrupted him, saved at $8FF1 and restored by script_next ($8F5E) when the request's script ends.","t":"byte","b":[0],"x":[36702,36849]},{"a":36260,"l":"saved_loc_x","c":"Saved X of the scratch location 54 ($36): location_x_custom ($1DA3), kept only when saved_target is $36 (interrupt_for_request $8FFB), restored by script_next ($8F68).","t":"byte","b":[0],"x":[36712,36859]},{"a":36261,"l":"saved_loc_depth","c":"Saved depth of the scratch location: location_depth_custom ($1DDA), saved at $9001 and restored at $8F6E, only when saved_target is $36.","t":"byte","b":[0],"x":[36718,36865]},{"a":36262,"l":"saved_loc_y","c":"Saved floor line of the scratch location: location_y_custom ($1D6C), saved at $9007 and restored at $8F74, only when saved_target is $36.","t":"byte","b":[0],"x":[36724,36871]},{"a":36263,"l":"saved_subphase","c":"The interrupted activity's sub-phase ($68), saved at $900C and put back by activity 15 ($91A7).","t":"byte","b":[0],"x":[36876,37287]},{"a":36264,"l":"saved_script_lo","c":"Low byte of the interrupted activity's script pointer ($0423), saved at $8FC4 and put back by activity 15 ($9190).","t":"byte","b":[0],"x":[36804,37264]},{"a":36265,"l":"saved_script_hi","c":"High byte of the interrupted activity's script pointer ($0424), saved at $8FCA and put back by activity 15 ($9196).","t":"byte","b":[0],"x":[36810,37270]},{"a":36266,"l":"dispatch_skip","c":"RTS: activity_dispatch returns here without running the activity while any of the low three bits of $03C4 is set.","t":"code","b":[96],"m":"rts","x":[36289]},{"a":36267,"l":"activity_dispatch","c":"The activity dispatcher, the last stage of the main loop ($09D5). Calls $BED0 (when no request is running, copies the activity of the first CTRL-key request flag set at $BEF3-$BEFC into request_activity), redraws the shade of the living-room floor lamp ($A93A writes lamp_colour to the colour matrix at $5F16/$5F17) when lamp_colour differs from the last value drawn ($A944), and calls house_events_call ($2A6E; house_events $2B54 takes the CTRL keys and animates the alarm clock, telephone, water cooler, television, stereo and stove). Then, only when the low three bits of $03C4 are clear, switches on the current activity: LDA activity, JSR switch_a ($3F13) with the 128-word activity_table after it.","t":"code","b":[32,208,190],"m":"jsr","o":"request_scan","oa":48848,"x":[2517]},{"a":36270,"t":"code","b":[173,75,43],"m":"lda","o":"lamp_colour","oa":11083},{"a":36273,"t":"code","b":[205,68,169],"m":"cmp","o":"lamp_colour_shown","oa":43332},{"a":36276,"t":"code","b":[240,3],"m":"beq","o":"b_8DB9","oa":36281},{"a":36278,"t":"code","b":[32,58,169],"m":"jsr","o":"lamp_colour_apply","oa":43322},{"a":36281,"l":"b_8DB9","t":"code","b":[32,110,42],"m":"jsr","o":"house_events_call","oa":10862,"x":[36276]},{"a":36284,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":36287,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":36289,"t":"code","b":[208,231],"m":"bne","o":"dispatch_skip","oa":36266},{"a":36291,"t":"code","b":[173,155,141],"m":"lda","o":"activity","oa":36251},{"a":36294,"t":"code","b":[32,19,63],"m":"jsr","o":"switch_a","oa":16147},{"a":36297,"l":"activity_table","c":"The activity table: 128 words after the JSR $3F13 at $8DC6, each the address of an activity's handler minus one, indexed by the activity number (activity, $8D9B). Most handlers are themselves a JSR $3F11 switch on the phase $4C. Entries 0, 77 and 123-127 all lead to $E13F (activity 0, the chooser that starts queued actions and scheduled lists); 15 ($916A) resumes an interrupted activity; 78 ($AB1A) picks a piano piece and 79 ($E3CA) plays the piano; 114 is act114 ($8ED2) and 117 act117 ($8EC9). Entry 32 leads to $52D8, the byte after the font's last glyph. Side comments give each row's handler addresses.","s":"activities 0-4: $E13F $AA96 $904C $905A $906F","t":"word","b":[62,225,149,170,75,144,89,144],"d":[57662,43669,36939,36953]},{"a":36305,"t":"word","b":[110,144],"d":[36974]},{"a":36307,"s":"activities 5-9: $9081 $90B2 $AEEA $90D8 $AAE5","t":"word","b":[128,144,177,144,233,174,215,144],"d":[36992,37041,44777,37079]},{"a":36315,"t":"word","b":[228,170],"d":[43748]},{"a":36317,"s":"activities 10-14: $9108 $9125 $9136 $9145 $9154","t":"word","b":[7,145,36,145,53,145,68,145],"d":[37127,37156,37173,37188]},{"a":36325,"t":"word","b":[83,145],"d":[37203]},{"a":36327,"s":"activities 15-19: $916A $91AD $91DB $9224 $92A2","t":"word","b":[105,145,172,145,218,145,35,146],"d":[37225,37292,37338,37411]},{"a":36335,"t":"word","b":[161,146],"d":[37537]},{"a":36337,"s":"activities 20-24: $5825 $AAAB $54E3 $9387 $BEFF","t":"word","b":[36,88,170,170,226,84,134,147],"d":[22564,43690,21730,37766]},{"a":36345,"t":"word","b":[254,190],"d":[48894]},{"a":36347,"s":"activities 25-29: $2F18 $2797 $2DFE $AA9D $37EA","t":"word","b":[23,47,150,39,253,45,156,170],"d":[12055,10134,11773,43676]},{"a":36355,"t":"word","b":[233,55],"d":[14313]},{"a":36357,"s":"activities 30-34: $3375 $338C $52D8 $278A $280A","t":"word","b":[116,51,139,51,215,82,137,39],"d":[13172,13195,21207,10121]},{"a":36365,"t":"word","b":[9,40],"d":[10249]},{"a":36367,"s":"activities 35-39: $229D $22B8 $22D5 $22FA $2317","t":"word","b":[156,34,183,34,212,34,249,34],"d":[8860,8887,8916,8953]},{"a":36375,"t":"word","b":[22,35],"d":[8982]},{"a":36377,"s":"activities 40-44: $2338 $237E $2355 $3064 $3028","t":"word","b":[55,35,125,35,84,35,99,48],"d":[9015,9085,9044,12387]},{"a":36385,"t":"word","b":[39,48],"d":[12327]},{"a":36387,"s":"activities 45-49: $239E $238F $1E5B $1E6E $1E85","t":"word","b":[157,35,142,35,90,30,109,30],"d":[9117,9102,7770,7789]},{"a":36395,"t":"word","b":[132,30],"d":[7812]},{"a":36397,"s":"activities 50-54: $2792 $2786 $224F $E000 $A962","t":"word","b":[145,39,133,39,78,34,255,223],"d":[10129,10117,8782,57343]},{"a":36405,"t":"word","b":[97,169],"d":[43361]},{"a":36407,"s":"activities 55-59: $A96B $A974 $A97D $A984 $A98B","t":"word","b":[106,169,115,169,124,169,131,169],"d":[43370,43379,43388,43395]},{"a":36415,"t":"word","b":[138,169],"d":[43402]},{"a":36417,"s":"activities 60-64: $A992 $A99B $A9A4 $A9AF $A9B8","t":"word","b":[145,169,154,169,163,169,174,169],"d":[43409,43418,43427,43438]},{"a":36425,"t":"word","b":[183,169],"d":[43447]},{"a":36427,"s":"activities 65-69: $A9C1 $A9CA $A9D5 $A9DE $A9E9","t":"word","b":[192,169,201,169,212,169,221,169],"d":[43456,43465,43476,43485]},{"a":36435,"t":"word","b":[232,169],"d":[43496]},{"a":36437,"s":"activities 70-74: $A9F2 $A9FB $AA04 $AA0B $AA49","t":"word","b":[241,169,250,169,3,170,10,170],"d":[43505,43514,43523,43530]},{"a":36445,"t":"word","b":[72,170],"d":[43592]},{"a":36447,"s":"activities 75-79: $AA65 $AA81 $E13F $AB1A $E3CA","t":"word","b":[100,170,128,170,62,225,25,171],"d":[43620,43648,57662,43801]},{"a":36455,"t":"word","b":[201,227],"d":[58313]},{"a":36457,"s":"activities 80-84: $AB73 $AB80 $AB8F $AB98 $ABA1","t":"word","b":[114,171,127,171,142,171,151,171],"d":[43890,43903,43918,43927]},{"a":36465,"t":"word","b":[160,171],"d":[43936]},{"a":36467,"s":"activities 85-89: $ABAC $ABB3 $ABBC $ABC5 $ABD2","t":"word","b":[171,171,178,171,187,171,196,171],"d":[43947,43954,43963,43972]},{"a":36475,"t":"word","b":[209,171],"d":[43985]},{"a":36477,"s":"activities 90-94: $ABDB $ABE4 $ABEF $ABFC $AC05","t":"word","b":[218,171,227,171,238,171,251,171],"d":[43994,44003,44014,44027]},{"a":36485,"t":"word","b":[4,172],"d":[44036]},{"a":36487,"s":"activities 95-99: $AC0E $AC17 $AC24 $AC2D $AC36","t":"word","b":[13,172,22,172,35,172,44,172],"d":[44045,44054,44067,44076]},{"a":36495,"t":"word","b":[53,172],"d":[44085]},{"a":36497,"s":"activities 100-104: $AC3F $AC48 $AC51 $AC5C $AC63","t":"word","b":[62,172,71,172,80,172,91,172],"d":[44094,44103,44112,44123]},{"a":36505,"t":"word","b":[98,172],"d":[44130]},{"a":36507,"s":"activities 105-109: $AC76 $AC8D $ACCE $ACC8 $ACDE","t":"word","b":[117,172,140,172,205,172,199,172],"d":[44149,44172,44237,44231]},{"a":36515,"t":"word","b":[221,172],"d":[44253]},{"a":36517,"s":"activities 110-114: $ACD8 $ACA4 $ACB1 $5B2B $8ED2","t":"word","b":[215,172,163,172,176,172,42,91],"d":[44247,44195,44208,23338]},{"a":36525,"t":"word","b":[209,142],"d":[36561]},{"a":36527,"s":"activities 115-119: $AA5C $AAD2 $8EC9 $AAF8 $AB0F","t":"word","b":[91,170,209,170,200,142,247,170],"d":[43611,43729,36552,43767]},{"a":36535,"t":"word","b":[14,171],"d":[43790]},{"a":36537,"s":"activities 120-124: $90E1 $90F7 $915B $E13F $E13F","t":"word","b":[224,144,246,144,90,145,62,225],"d":[37088,37110,37210,57662]},{"a":36545,"t":"word","b":[62,225],"d":[57662]},{"a":36547,"s":"activities 125-127: $E13F $E13F $E13F","t":"word","b":[62,225,62,225,62,225],"d":[57662,57662,57662]},{"a":36553,"l":"act117","c":"Activity 117 (activity_table entry 117; in the script at $AAB2 used by activity 1): phase 0 is $93FF (X = $0C, then $94AE), phase 1 the shared handler $94CC, phase 2 script_next. The three words after the JSR are its switch table.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":36556,"l":"act117_phases","c":"Switch table of act117 (three words after its JSR $3F11, handlers minus one): phase 0 $93FF, phase 1 $94CC, phase 2 script_next ($8F0E).","t":"word","b":[254,147,203,148,13,143],"d":[37886,38091,36621]},{"a":36562,"l":"act114","c":"Activity 114 (entry 114; in the scripts at $9061 and $9076, which activities 3 and 4 start). When $0374 is non-zero (it is set to 1 at $0A33 when the countdown $0376 runs out), moves it into sound request 19 ($3573) and clears $0374 and request 18 ($3572); then ends the activity through script_next. One pass, no phases.","t":"code","b":[173,116,3],"m":"lda","o":"act4_request","oa":884},{"a":36565,"t":"code","b":[240,11],"m":"beq","o":"b_8EE2","oa":36578},{"a":36567,"t":"code","b":[141,115,53],"m":"sta","o":"snd_req_19","oa":13683},{"a":36570,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":36572,"t":"code","b":[141,116,3],"m":"sta","o":"act4_request","oa":884},{"a":36575,"t":"code","b":[141,114,53],"m":"sta","o":"snd_req_talk","oa":13682},{"a":36578,"l":"b_8EE2","t":"code","b":[76,14,143],"m":"jmp","o":"script_next","oa":36622,"x":[36565]},{"a":36581,"l":"set_target_0","c":"Switch handler (table words at $9086, $91B4, $91C2 and $92E1, in the tables of activities 5 and 16 among others): target location 0 for the person, then next phase (A = 0, set_target_next).","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":36583,"t":"code","b":[76,8,143],"m":"jmp","o":"set_target_next","oa":36616},{"a":36586,"l":"set_target_1","c":"Switch handler used by five tables (activities 22, 120, 121, 18 and 118): target location 1, the stereo, then next phase (A = 1, set_target_next).","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36588,"t":"code","b":[76,8,143],"m":"jmp","o":"set_target_next","oa":36616},{"a":36591,"l":"walk_to_location_16","c":"Switch handler, the first phase of activities 11, 111, 112 and 113: walk to location $16 (X = $16, walk_to_location).","t":"code","b":[162,22],"m":"ldx","o":"#$16"},{"a":36593,"t":"code","b":[76,249,142],"m":"jmp","o":"walk_to_location","oa":36601},{"a":36596,"l":"walk_to_location_24","c":"Switch handler (first phase of the activities at $A962 and $A96B, 54 and 55): walk to location $24 (X = $24, walk_to_location).","t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":36598,"t":"code","b":[76,249,142],"m":"jmp","o":"walk_to_location","oa":36601},{"a":36601,"l":"walk_to_location","c":"Walk to location X: set_custom_location ($16AE) copies location X (location_y, location_x, location_depth) into the scratch location 54 ($36); that becomes the person's target and the activity moves to its next phase (set_target_next). Called or jumped to from twelve places, among them $21C9, $28A3, $2929, $2E0D, $30CF, $5378, $5536, $AF7B, $BFC9 and $E424 (the piano, X = 6).","t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806,"x":[8649,10403,10537,11789,12495,21368,21814,36593,36598,44923,49097,58404]},{"a":36604,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":36606,"t":"code","b":[76,8,143],"m":"jmp","o":"set_target_next","oa":36616},{"a":36609,"l":"set_target_2a","c":"Switch handler (phase 5 of activity 10, word at $9115): target location $2A, then next phase.","t":"code","b":[169,42],"m":"lda","o":"#$2A"},{"a":36611,"t":"code","b":[76,8,143],"m":"jmp","o":"set_target_next","oa":36616},{"a":36614,"l":"set_target_2b","c":"Switch handler (activity 6, phases 0 and 3, and activity 17): target location $2B, the easy chair in the living room (house_events checks for location $2B when CTRL P is pressed, $2C30, and raises the request served by activity 6 when he is not there), then next phase; falls into set_target_next.","t":"code","b":[169,43],"m":"lda","o":"#$2B"},{"a":36616,"l":"set_target_next","c":"Sets the person's target location to A ($AB63: $03C0 = A; when at_target ($1E11) finds him not already there, $03BC = 2), then falls into next_phase. Jumped to by the handlers above and by $A88C.","t":"code","b":[32,99,171],"m":"jsr","o":"set_person_destination","oa":43875,"x":[36583,36588,36606,36611,43148]},{"a":36619,"l":"next_phase","c":"INC $4C, RTS: moves the current activity to its next phase. The usual last instruction of a phase handler: 110 jumps in the traced code end here.","t":"code","b":[230,76],"m":"inc","o":"activity_phase","oa":76,"x":[7844,7883,7909,7922,7934,7947,8081,8093,8105,8525,8564,8626,8810,8836,8847,9174,10048,10070,10107,10328,10344,10386,10450,10752,10775,10859,11818,12039,12052,12425,12452,12490,12577,12590,12628,12646,12693,12771,13162,13169,14382,14390,14559,14595,14630,21283,21327,21338,21347,21381,21426,21473,21557,21624,21632,21724,21841,21899,21910,21953,21993,22298,22557,22622,23373,23428,23449,23479,36925,37031,37333,37379,37394,37409,37436,37447,37458,37483,37513,37676,37711,38013,38146,43088,43107,43122,43138,43172,43292,43319,43341,43359,43549,43566,43590,43788,44146,44849,44860,44869,44936,44950,44977,45033,45041,45049,47600,48962,49008,49045,49064,49072,49092,57411,57424,58350,58365,58374,58387,58424]},{"a":36621,"l":"r_8F0D","t":"code","b":[96],"m":"rts","x":[36647,36656]},{"a":36622,"l":"script_next","c":"End of an activity, the last entry of nearly every activity's switch table (47 tables), also reached from $8EE2 and $AA53. Resets the phase (activity_phase, activity_subphase) and takes the next activity number from the script at script_ptr ($0423/$0424) into activity, advancing the pointer. At the script's $00 (activity 0 then runs next), if a request was running (request_running) it clears that request's flag at $BEF3 (the loop scans eleven entries of the ten-entry table $BEE9, the eleventh being $BEF3 itself) and, unless act_music_on is set, starts the next pending request (start_next_request); otherwise it sets activity 15 (resume), restores the person's target location and the scratch location from saved_target..saved_loc_y, rechecks whether he is there ($AB66), and clears request_running and request_activity.","t":"code","b":[32,86,171],"m":"jsr","o":"activity_reset_phase","oa":43862,"x":[36578,43603,43742,43799,43851]},{"a":36625,"t":"code","b":[173,35,4],"m":"lda","o":"script_ptr","oa":1059},{"a":36628,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":36630,"t":"code","b":[173,36,4],"m":"lda","o":"script_ptr_hi","oa":1060},{"a":36633,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":36635,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":36637,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":36639,"t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251},{"a":36642,"t":"code","b":[240,9],"m":"beq","o":"b_8F2D","oa":36653},{"a":36644,"t":"code","b":[238,35,4],"m":"inc","o":"script_ptr","oa":1059},{"a":36647,"t":"code","b":[208,228],"m":"bne","o":"r_8F0D","oa":36621},{"a":36649,"t":"code","b":[238,36,4],"m":"inc","o":"script_ptr_hi","oa":1060},{"a":36652,"t":"code","b":[96],"m":"rts"},{"a":36653,"l":"b_8F2D","t":"code","b":[173,157,141],"m":"lda","o":"request_running","oa":36253,"x":[36642]},{"a":36656,"t":"code","b":[240,219],"m":"beq","o":"r_8F0D","oa":36621},{"a":36658,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":36660,"l":"b_8F34","t":"code","b":[189,233,190],"m":"lda","o":"request_activities,x","oa":48873,"x":[36669]},{"a":36663,"t":"code","b":[205,158,141],"m":"cmp","o":"request_activity","oa":36254},{"a":36666,"t":"code","b":[240,5],"m":"beq","o":"b_8F41","oa":36673},{"a":36668,"t":"code","b":[202],"m":"dex"},{"a":36669,"t":"code","b":[16,245],"m":"bpl","o":"b_8F34","oa":36660},{"a":36671,"t":"code","b":[48,21],"m":"bmi","o":"b_8F56","oa":36694},{"a":36673,"l":"b_8F41","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[36666]},{"a":36675,"t":"code","b":[157,243,190],"m":"sta","o":"request_flags,x","oa":48883},{"a":36678,"t":"code","b":[173,154,141],"m":"lda","o":"act_music_on","oa":36250},{"a":36681,"t":"code","b":[208,11],"m":"bne","o":"b_8F56","oa":36694},{"a":36683,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":36686,"t":"code","b":[240,6],"m":"beq","o":"b_8F56","oa":36694},{"a":36688,"l":"start_next_request","c":"Starts the next pending request: gets its activity from check_other_request and switches to it ($9041, then $9014: $03BC = 0, activity = request_activity, phase 0). Reached from script_next and from activity 15 ($9187).","t":"code","b":[32,147,143],"m":"jsr","o":"check_other_request","oa":36755,"x":[37255]},{"a":36691,"t":"code","b":[76,65,144],"m":"jmp","o":"start_request_a","oa":36929},{"a":36694,"l":"b_8F56","t":"code","b":[32,86,171],"m":"jsr","o":"activity_reset_phase","oa":43862,"x":[36671,36681,36686]},{"a":36697,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":36699,"t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251},{"a":36702,"t":"code","b":[173,163,141],"m":"lda","o":"saved_target","oa":36259},{"a":36705,"t":"code","b":[141,192,3],"m":"sta","o":"move_target","oa":960},{"a":36708,"t":"code","b":[201,54],"m":"cmp","o":"#$36"},{"a":36710,"t":"code","b":[208,18],"m":"bne","o":"b_8F7A","oa":36730},{"a":36712,"t":"code","b":[173,164,141],"m":"lda","o":"saved_loc_x","oa":36260},{"a":36715,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":36718,"t":"code","b":[173,165,141],"m":"lda","o":"saved_loc_depth","oa":36261},{"a":36721,"t":"code","b":[141,218,29],"m":"sta","o":"location_depth_custom","oa":7642},{"a":36724,"t":"code","b":[173,166,141],"m":"lda","o":"saved_loc_y","oa":36262},{"a":36727,"t":"code","b":[141,108,29],"m":"sta","o":"location_y_custom","oa":7532},{"a":36730,"l":"b_8F7A","t":"code","b":[32,102,171],"m":"jsr","o":"start_walk_if_away","oa":43878,"x":[36710]},{"a":36733,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":36735,"t":"code","b":[141,157,141],"m":"sta","o":"request_running","oa":36253},{"a":36738,"t":"code","b":[141,158,141],"m":"sta","o":"request_activity","oa":36254},{"a":36741,"t":"code","b":[96],"m":"rts"},{"a":36742,"l":"request_pending","c":"Should the current activity give way to a request? Returns Z set (A = 0) when request_activity is 0; A = 1 (Z clear) when a request is waiting and none is running; when one is running, the result of check_other_request. Called by 23 activity handlers ($2160, $21FD, $246E, $271B, $2763, $2E38, $32B9, $3813, $38F0, $53BC, $5542, $5877 ...) to cut short what the person is doing.","t":"code","b":[173,158,141],"m":"lda","o":"request_activity","oa":36254,"x":[8267,8356,8544,8701,9326,10011,10083,11832,12985,14355,14576,21436,21826,22647,23469,36683,37231,37706,43175,49011,49059,57441,57522,57896,58428]},{"a":36745,"t":"code","b":[240,7],"m":"beq","o":"r_8F92","oa":36754},{"a":36747,"t":"code","b":[173,157,141],"m":"lda","o":"request_running","oa":36253},{"a":36750,"t":"code","b":[208,3],"m":"bne","o":"check_other_request","oa":36755},{"a":36752,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36754,"l":"r_8F92","t":"code","b":[96],"m":"rts","x":[36745]},{"a":36755,"l":"check_other_request","c":"Looks for a request flag set at $BEF3-$BEFC (X = 0-9). Returns Z set if none, or if the first one found belongs to the running request (its activity at $BEE9,X equals request_activity); otherwise Z clear with A = that request's activity number.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[36688,36750]},{"a":36757,"l":"b_8F95","t":"code","b":[189,243,190],"m":"lda","o":"request_flags,x","oa":48883,"x":[36765]},{"a":36760,"t":"code","b":[208,6],"m":"bne","o":"b_8FA0","oa":36768},{"a":36762,"t":"code","b":[232],"m":"inx"},{"a":36763,"t":"code","b":[224,10],"m":"cpx","o":"#$0A"},{"a":36765,"t":"code","b":[208,246],"m":"bne","o":"b_8F95","oa":36757},{"a":36767,"t":"code","b":[96],"m":"rts"},{"a":36768,"l":"b_8FA0","t":"code","b":[189,233,190],"m":"lda","o":"request_activities,x","oa":48873,"x":[36760]},{"a":36771,"t":"code","b":[205,158,141],"m":"cmp","o":"request_activity","oa":36254},{"a":36774,"c":"The RTS that ends check_other_request. Its address, $8FA6, is also the word the switch tables hold for the shared handler wait_or_request ($8FA7 minus one).","t":"code","b":[96],"m":"rts"},{"a":36775,"l":"wait_or_request","c":"Shared phase handler, 44 table entries: wait for the person to arrive, letting a request interrupt. Only when $03BC is 0, 3 or 6 does it look at requests: if one is pending (request_activity) and none running, it saves the activity and switches to the request (interrupt_for_request); if one is running and a different request flag is set, it switches to that one ($9022-$9036). Otherwise ($9038) it moves to the next phase when $03BC is 0 and returns to wait while it is not.","t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956},{"a":36778,"t":"code","b":[240,11],"m":"beq","o":"b_8FB7","oa":36791},{"a":36780,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":36782,"t":"code","b":[240,7],"m":"beq","o":"b_8FB7","oa":36791},{"a":36784,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":36786,"t":"code","b":[240,3],"m":"beq","o":"b_8FB7","oa":36791},{"a":36788,"t":"code","b":[76,56,144],"m":"jmp","o":"j_9038","oa":36920},{"a":36791,"l":"b_8FB7","t":"code","b":[173,158,141],"m":"lda","o":"request_activity","oa":36254,"x":[36778,36782,36786]},{"a":36794,"t":"code","b":[240,124],"m":"beq","o":"j_9038","oa":36920},{"a":36796,"t":"code","b":[173,157,141],"m":"lda","o":"request_running","oa":36253},{"a":36799,"t":"code","b":[208,97],"m":"bne","o":"b_9022","oa":36898},{"a":36801,"l":"interrupt_for_request","c":"Interrupts the current activity for the pending request (also entered from $2209 and $9609): saves the script pointer (saved_script_lo/hi), then points the script at script_none; saves $038B, $039A, the activity, the phase, the target location $03C0 (and, for the scratch location, its three values), and the sub-phase into $8D9F-$8DA7; sets request_running = 1; then $9014 sets $03BC = 0, activity = request_activity and phase 0 ($AB56).","t":"code","b":[173,35,4],"m":"lda","o":"script_ptr","oa":1059,"x":[8713,38409]},{"a":36804,"t":"code","b":[141,168,141],"m":"sta","o":"saved_script_lo","oa":36264},{"a":36807,"t":"code","b":[173,36,4],"m":"lda","o":"script_ptr_hi","oa":1060},{"a":36810,"t":"code","b":[141,169,141],"m":"sta","o":"saved_script_hi","oa":36265},{"a":36813,"t":"code","b":[169,153],"m":"lda","o":"#$99"},{"a":36815,"t":"code","b":[141,35,4],"m":"sta","o":"script_ptr","oa":1059},{"a":36818,"t":"code","b":[169,141],"m":"lda","o":"#$8D"},{"a":36820,"t":"code","b":[141,36,4],"m":"sta","o":"script_ptr_hi","oa":1060},{"a":36823,"t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907},{"a":36826,"t":"code","b":[141,160,141],"m":"sta","o":"saved_038b","oa":36256},{"a":36829,"t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":36832,"t":"code","b":[141,159,141],"m":"sta","o":"saved_039a","oa":36255},{"a":36835,"t":"code","b":[173,155,141],"m":"lda","o":"activity","oa":36251},{"a":36838,"t":"code","b":[141,162,141],"m":"sta","o":"saved_activity","oa":36258},{"a":36841,"t":"code","b":[165,76],"m":"lda","o":"activity_phase","oa":76},{"a":36843,"t":"code","b":[141,161,141],"m":"sta","o":"saved_phase","oa":36257},{"a":36846,"t":"code","b":[173,192,3],"m":"lda","o":"move_target","oa":960},{"a":36849,"t":"code","b":[141,163,141],"m":"sta","o":"saved_target","oa":36259},{"a":36852,"t":"code","b":[201,54],"m":"cmp","o":"#$36"},{"a":36854,"t":"code","b":[208,18],"m":"bne","o":"b_900A","oa":36874},{"a":36856,"t":"code","b":[173,163,29],"m":"lda","o":"location_x_custom","oa":7587},{"a":36859,"t":"code","b":[141,164,141],"m":"sta","o":"saved_loc_x","oa":36260},{"a":36862,"t":"code","b":[173,218,29],"m":"lda","o":"location_depth_custom","oa":7642},{"a":36865,"t":"code","b":[141,165,141],"m":"sta","o":"saved_loc_depth","oa":36261},{"a":36868,"t":"code","b":[173,108,29],"m":"lda","o":"location_y_custom","oa":7532},{"a":36871,"t":"code","b":[141,166,141],"m":"sta","o":"saved_loc_y","oa":36262},{"a":36874,"l":"b_900A","t":"code","b":[165,104],"m":"lda","o":"activity_subphase","oa":104,"x":[36854]},{"a":36876,"t":"code","b":[141,167,141],"m":"sta","o":"saved_subphase","oa":36263},{"a":36879,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":36881,"t":"code","b":[141,157,141],"m":"sta","o":"request_running","oa":36253},{"a":36884,"l":"enter_request","c":"Tail of the phase handler at $8FA7 (walk, and take pending requests), whose entry is outside this range. enter_request: stop the walk ($03BC := 0), make the pending request's activity $8D9E the current activity $8D9B and reset phase and sub-phase ($AB56 zeroes $4C and $68). $8FC1-$9011 falls in here after saving the interrupted context in $8D9F-$8DA9 (the sub-phase $68 into $8DA7 at $900A), pointing the script at $8D99 (a lone 0) and setting $8D9D := 1 (an interruption is running). $9022-$9036: when an interruption is already running, find the first set request flag in $BEF3-$BEFC and, if its activity ($BEE9,x) differs from $8D9E, start that one (start_request_a). $9038: otherwise return (stay in this phase) while $03BC is non-zero, and go to the next phase ($8F0B) once he has arrived.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[36932]},{"a":36886,"t":"code","b":[141,188,3],"m":"sta","o":"move_state","oa":956},{"a":36889,"t":"code","b":[173,158,141],"m":"lda","o":"request_activity","oa":36254},{"a":36892,"t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251},{"a":36895,"t":"code","b":[76,86,171],"m":"jmp","o":"activity_reset_phase","oa":43862},{"a":36898,"l":"b_9022","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[36799]},{"a":36900,"l":"b_9024","t":"code","b":[189,243,190],"m":"lda","o":"request_flags,x","oa":48883,"x":[36908]},{"a":36903,"t":"code","b":[208,7],"m":"bne","o":"b_9030","oa":36912},{"a":36905,"t":"code","b":[232],"m":"inx"},{"a":36906,"t":"code","b":[224,10],"m":"cpx","o":"#$0A"},{"a":36908,"t":"code","b":[208,246],"m":"bne","o":"b_9024","oa":36900},{"a":36910,"t":"code","b":[240,8],"m":"beq","o":"j_9038","oa":36920},{"a":36912,"l":"b_9030","t":"code","b":[189,233,190],"m":"lda","o":"request_activities,x","oa":48873,"x":[36903]},{"a":36915,"t":"code","b":[205,158,141],"m":"cmp","o":"request_activity","oa":36254},{"a":36918,"t":"code","b":[208,9],"m":"bne","o":"start_request_a","oa":36929},{"a":36920,"l":"j_9038","t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956,"x":[36788,36794,36910]},{"a":36923,"t":"code","b":[208,3],"m":"bne","o":"r_9040","oa":36928},{"a":36925,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":36928,"l":"r_9040","t":"code","b":[96],"m":"rts","x":[36923]},{"a":36929,"l":"start_request_a","c":"Make A the pending request activity ($8D9E := A) and switch to it through enter_request. Callers: $8F53 (an interruption has ended and another request is waiting), $9036 (a different request flag is set), and walk_sub_take_requests at $95EA.","t":"code","b":[141,158,141],"m":"sta","o":"request_activity","oa":36254,"x":[36691,36918,38378]},{"a":36932,"t":"code","b":[76,20,144],"m":"jmp","o":"enter_request","oa":36884},{"a":36935,"l":"unused_switch_9047","c":"A switch site (JSR $3F11, phase in $4C) whose table holds one word, $8F0D: every phase ends the activity ($8F0E). Nothing reaches it: no word $9046 in the activity table at $8DC9 or anywhere else, no JMP or JSR to $9047, and the instruction before it is a JMP. Probably a leftover empty activity.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":36938,"t":"gap","n":2},{"a":36940,"l":"act02_cancel_request","c":"Activity 2, the answer to request slot 9 ($BEF2 = $BEE9+9 holds 2). Its flag $BEFC is set at $099A when the main loop's parser call ($0986, $C13A) returns Y >= 8; the loop at $099D-$09B3 then queues the activity numbers $C13A returns in the ring at $E12A. Activity 2 clears the interruption state ($8D9D := 0, $8D9E := 0) and $BEFC, then carries on as activity 0's handler $E13F, whose chooser starts the queued activities ($E16E-$E189).","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":36942,"t":"code","b":[141,157,141],"m":"sta","o":"request_running","oa":36253},{"a":36945,"t":"code","b":[141,158,141],"m":"sta","o":"request_activity","oa":36254},{"a":36948,"t":"code","b":[141,252,190],"m":"sta","o":"request_flag_9","oa":48892},{"a":36951,"t":"code","b":[76,63,225],"m":"jmp","o":"activity_chooser","oa":57663},{"a":36954,"l":"act03_start_script","c":"Activity 3: start the activity script script_act03 ($9061) through $AA4D, which stores the script pointer in $0423/$0424 and ends the current activity ($8F0E), so the script's first entry becomes the next activity. Activities 108 and 110 ($ACC8, $ACD8) jump here after $ACE4/$ACE8 have patched the script's entry 7 (script_act03_slot7).","t":"code","b":[169,97],"m":"lda","o":"#$61","x":[44235,44251]},{"a":36956,"t":"code","b":[162,144],"m":"ldx","o":"#$90"},{"a":36958,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":36961,"l":"script_act03","c":"Activity script of activity 3: one activity number per entry, taken by $8F0E each time an activity ends; 0 ends the script. Entries: 105 (go to the dresser, open its drawer, rummage, maybe close it), 80 (walk to the pink bathroom door and open it), 81, 82 (close that door in place), 83 (open it in place), 102, 82, then script_act03_slot7 (85 or 103), 104 (a timed wait: $AC6D counts $AC6C through 256 passes), 114 ($8ED2: passes $0374 to $3573 and clears it), 83, 86, 87 (random close of the bathroom door), 0.","t":"byte","b":[105,80,81,82,83,102,82]},{"a":36968,"l":"script_act03_slot7","c":"Entry 7 of script_act03: activity 85 ($55, handler $B9BE) as loaded. $ACED rewrites it: $ACE4 stores $55 (activity 85) and $ACE8 stores $67 (activity 103, handler $B9F5), each also into entry 4 of the script at $ACBE ($ACC2), before activities 107-110 start one of the two scripts.","t":"byte","b":[85,104,114,83,86,87,0],"x":[44269]},{"a":36975,"l":"act04_start_script","c":"Activity 4: start script_act04 ($9076) through $AA4D. Activity 0's chooser picks activity 4 at $E224 while $0374 is non-zero; entry 114 of the script clears $0374.","t":"code","b":[169,118],"m":"lda","o":"#$76"},{"a":36977,"t":"code","b":[162,144],"m":"ldx","o":"#$90"},{"a":36979,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":36982,"l":"script_act04","c":"Activity script of activity 4: 80 (walk to the pink bathroom door and open it), 81, 82 (close it in place), 104 (timed wait), 114 ($8ED2: $3573 := $0374, then $0374 := 0), 83 (open it in place), 86, 87 (random close of that door), 112 (go to location $16 by the sink and close the mirror cabinet), 11 (activity 11, at the sink), 0.","t":"byte","b":[80,81,82,104,114,83,86,87]},{"a":36990,"t":"byte","b":[112,11,0]},{"a":36993,"l":"act05_watch_tv","c":"Activity 5 state machine (switch on the phase $4C through act05_phases). If the TV is already on ($2B4A set) it jumps straight to phase 6; otherwise he walks to location 0 by the TV (top floor, columns 4-6), $AF58 steps him through poses $21 and $1E, $A945 switches the TV on and getup_step stands him up again. Phases 6 and 7 hand over to $21AE and the sub-phase machine at $21B5. It was the running activity in play-02 ($4C = 7, $68 = 3), with the person seated in the chair by the TV.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":36996,"l":"act05_phases","c":"Phase table of activity 5, one word per phase (handler address minus one): 0 skip_if_tv_on (to 6), 1 $8EE5 (walk target: location 0), 2 $8FA7 (walk, take pending requests), 3 $AF58, 4 $A945 ($2B4A := 1, $356E := 1: TV on), 5 getup_step, 6 $21AE, 7 $21B5 (a $68 machine), 8 $2728, 9 $2759, 10 $8F0E (end of activity).","t":"word","b":[153,144,228,142,166,143,87,175],"d":[37017,36580,36774,44887]},{"a":37004,"t":"word","b":[68,169,5,149,173,33,180,33],"d":[43332,38149,8621,8628]},{"a":37012,"t":"word","b":[39,39,88,39,13,143],"d":[10023,10072,36621]},{"a":37018,"l":"skip_if_tv_on","c":"Phase handler: if $2B4A (TV on; set by $A945, cleared by $A950, and while it is set $2C9F calls $2D59, which flickers the colour-RAM cells $D8F5/$D91D of the TV screen) is non-zero, skip 6 phases (skip6); otherwise go to the next phase ($8F0B).","t":"code","b":[173,74,43],"m":"lda","o":"tv_on","oa":11082},{"a":37021,"t":"code","b":[240,8],"m":"beq","o":"b_90A7","oa":37031},{"a":37023,"l":"b_909F","t":"code","b":[76,21,146],"m":"jmp","o":"skip6","oa":37397,"x":[37029]},{"a":37026,"l":"skip_if_tv_off","c":"Phase handler: if $2B4A is zero (TV off) skip 6 phases (skip6); otherwise next phase. Used by activities 16 and 19 before switching the TV off.","t":"code","b":[173,74,43],"m":"lda","o":"tv_on","oa":11082},{"a":37029,"t":"code","b":[240,248],"m":"beq","o":"b_909F","oa":37023},{"a":37031,"l":"b_90A7","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[37021]},{"a":37034,"l":"set_act16","c":"Unreferenced: make activity 16 ($10) the current activity and reset its phase. No word $90A9 in any table, and no JMP or JSR to $90AA, was found.","t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":37036,"l":"set_activity_a","c":"Store A as the current activity $8D9B and reset phase and sub-phase ($AB56). Reached only from set_act17 and set_act18, which nothing reaches either.","t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251,"x":[37077,37108]},{"a":37039,"t":"code","b":[76,86,171],"m":"jmp","o":"activity_reset_phase","oa":43862},{"a":37042,"l":"act06_go_to_chair","c":"Activity 6, the answer to request slot 4 ($BEF7, which the CTRL P code at $2C23-$2C5C sets when the person is walking or not at location $2B, the easy chair; $BEE9+4 holds 6). He walks to location $2B; if bit 2 of the lamp colour $2B4B is set ($75) he reaches (pose $19) and sets it to $11 ($A92E); then he walks onto the chair (scratch location $36 copied from $2B by $A885), $A88F sets pose $22 and a random timer $47AF, and $A8A7 keeps him there, cycling poses $23-$26, until the timer runs out (a pending request zeroes it).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37045,"l":"act06_phases","c":"Phase table of activity 6: 0 $8F06 (walk target: location $2B, the easy chair), 1 $8FA7 (walk), 2 skip_unless_lamp_75 (to 8), 3 $8F06, 4 $8FA7, 5 reach_pose_start, 6 reach_pose_hold, 7 $A92E ($2B4B := $11), 8 $A885 (target: scratch location $36 from location $2B), 9 $8FA7, 10 $A88F, 11 $A8A7, 12 $2728, 13 $2759, 14 $8F0E (end).","t":"word","b":[5,143,166,143,10,146,5,143],"d":[36613,36774,37386,36613]},{"a":37053,"t":"word","b":[166,143,140,146,150,146,45,169],"d":[36774,37516,37526,43309]},{"a":37061,"t":"word","b":[132,168,166,143,142,168,166,168],"d":[43140,36774,43150,43174]},{"a":37069,"t":"word","b":[39,39,88,39,13,143],"d":[10023,10072,36621]},{"a":37075,"l":"set_act17","c":"Unreferenced: A := $11 (activity 17), then set_activity_a. No table word $90D2, JMP or JSR to $90D3 was found.","t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":37077,"t":"code","b":[76,172,144],"m":"jmp","o":"set_activity_a","oa":37036},{"a":37080,"l":"act08_short","c":"Activity 8 state machine: phase 0 $2728, phase 1 $2759, phase 2 end ($8F0E). Only the shared closing pair that most activities end with ($2728 skips both when a request is pending).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37083,"t":"gap","n":6},{"a":37089,"l":"act120_stereo_on","c":"Activity 120: put the stereo on. Skips to the end if $2B45 (stereo playing) is already set; otherwise walks to location 1, in front of the stereo (top floor, columns 7-11), reaches (reach_pose_start, reach_pose_hold) and stereo_on starts the music. It is the last entry of the script at $AAEC that activity 9 runs: 121 (stereo off), 119 ($AB0F: a random tune number 0-3 into $478C, which the music set-up at $44A9 uses to pick each voice's data), 118 (walk to location 1 and rummage there), 120. Parser rule $C9BA (HEAR/LISTEN/PUT/START/SPIN with STEREO/MUSIC/RECORD) names activity 9.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37092,"l":"act120_phases","c":"Phase table of activity 120: 0 skip_if_stereo_on (to 6), 1 $8EEA (walk target: location 1), 2 $8FA7 (walk), 3 reach_pose_start, 4 reach_pose_hold, 5 stereo_on, 6 $8F0E (end).","t":"word","b":[65,146,233,142,166,143,140,146],"d":[37441,36585,36774,37516]},{"a":37100,"t":"word","b":[150,146,85,146,13,143],"d":[37526,37461,36621]},{"a":37106,"l":"set_act18","c":"Unreferenced: A := $12 (activity 18), then set_activity_a. No table word $90F1, JMP or JSR to $90F2 was found.","t":"code","b":[169,18],"m":"lda","o":"#$12"},{"a":37108,"t":"code","b":[76,172,144],"m":"jmp","o":"set_activity_a","oa":37036},{"a":37111,"l":"act121_stereo_off","c":"Activity 121: switch the stereo off. Skips to the end if $2B45 is clear; otherwise walks to location 1, reaches, and stereo_off stops the music. Activity 0's chooser queues it ($E1AF: $E126 := $79) when $2B45 is still set after the music driver has stopped ($801E = 0) and bit 7 of $0369 is clear, parser rules $CABA and $CACA (TIRED/BORED/APATHETIC or HATE/AWFUL, with STEREO/MUSIC/RECORD) queue activity 38 or 39 and then 121, and it is the first entry of the scripts at $AAEC (activity 9, a new record) and $AAF1 (activity 21, which parser rule $C9EA names for PLAY with PIANO). Live: seen running during play.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37114,"l":"act121_phases","c":"Phase table of activity 121: 0 skip_if_stereo_off (to 6), 1 $8EEA (walk target: location 1, the stereo), 2 $8FA7, 3 reach_pose_start, 4 reach_pose_hold, 5 stereo_off, 6 $8F0E (end).","t":"word","b":[76,146,233,142,166,143,140,146],"d":[37452,36585,36774,37516]},{"a":37122,"t":"word","b":[150,146,109,146,13,143],"d":[37526,37485,36621]},{"a":37128,"l":"act10_phone_table","c":"Activity 10: the drawer of the little table under the telephone (object 8, ground floor). Phase 0 decides at random ($0369 odds, rnd_open_stubs_8) whether he walks over and opens it; phases 2-3 rummage (rummage_start hands over to $AF58 unless he is crouched in pose $20), 4 stands him up, 5-6 walk to location $2A in front of the table, 7-8 the shared $2728/$2759, 9-10 close it at random, 11 stand up.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37131,"l":"act10_phases","c":"Phase table of activity 10: 0 random-open stub $93BA (object 8; to 2 when the odds say no), 1 object_op, 2 rummage_start, 3 rummage, 4 getup_step, 5 $8F01 (walk target: location $2A), 6 $8FA7, 7 $2728, 8 $2759, 9 random-close stub $93EF (object 8), 10 object_op, 11 getup_step, 12 $8F0E (end).","t":"word","b":[185,147,203,148,248,146,63,147],"d":[37817,38091,37624,37695]},{"a":37139,"t":"word","b":[5,149,0,143,166,143,39,39],"d":[38149,36608,36774,10023]},{"a":37147,"t":"word","b":[88,39,238,147,203,148,5,149],"d":[10072,37870,38091,38149]},{"a":37155,"t":"word","b":[13,143],"d":[36621]},{"a":37157,"l":"act11_at_sink","c":"Activity 11: walk to location $16 (middle floor, in front of the bathroom sink and mirror cabinet; $8EEF copies it to the scratch location $36) and run $2131 and $2156 (outside this range), then $2728/$2759. Script_act04 ends with it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37160,"l":"act11_phases","c":"Phase table of activity 11: 0 $8EEF (walk target: scratch location from location $16), 1 $8FA7, 2 $2131, 3 $2156, 4 $2728, 5 $2759, 6 $8F0E (end).","t":"word","b":[238,142,166,143,48,33,85,33],"d":[36590,36774,8496,8533]},{"a":37168,"t":"word","b":[39,39,88,39,13,143],"d":[10023,10072,36621]},{"a":37174,"l":"act12_start_script","c":"Activity 12: start script_act12 ($913D), a visit to the upstairs closet through its white door (object 5). Parser rule $CB0A (WHAT/IN with UPSTAIRS and CLOSET) queues activities 12 and 35.","t":"code","b":[169,61],"m":"lda","o":"#$3D"},{"a":37176,"t":"code","b":[162,145],"m":"ldx","o":"#$91"},{"a":37178,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":37181,"l":"script_act12","c":"Activity script of activity 12: 88 (walk to location 7 and open the upstairs closet door), 81, 89 (close it in place), 104 (timed wait), 90 (open it in place), 86, 91 (random close of that door, then $558E), 0. In play-01 the script pointer $0423 stood at $9141 with activity 104 running and the person out of sight inside the closet.","t":"byte","b":[88,81,89,104,90,86,91,0]},{"a":37189,"l":"act13_start_script","c":"Activity 13: start script_act13 ($914C), the same visit to the bedroom closet (object 4). Parser rule $CB1A (WHAT/IN with BEDROOM and CLOSET) queues activities 13 and 39.","t":"code","b":[169,76],"m":"lda","o":"#$4C"},{"a":37191,"t":"code","b":[162,145],"m":"ldx","o":"#$91"},{"a":37193,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":37196,"l":"script_act13","c":"Activity script of activity 13: 92 (walk to location $14 and open the bedroom closet door), 81, 93 (close it in place), 104 (timed wait), 94 (open it in place), 86, 95 (random close of that door), 0.","t":"byte","b":[92,81,93,104,94,86,95,0]},{"a":37204,"l":"act14_start_script","c":"Activity 14: start script_act14 ($9162): the closet-visit pattern of activities 12 and 13 applied to the front door (object 0).","t":"code","b":[169,98],"m":"lda","o":"#$62"},{"a":37206,"t":"code","b":[162,145],"m":"ldx","o":"#$91"},{"a":37208,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":37211,"l":"act122_come_in","c":"Activity 122: start the script at $9166, the last three entries of script_act14: 99 (open the front door in place), 100, 101 (random close of the front door), i.e. only the second half of activity 14's visit.","t":"code","b":[169,102],"m":"lda","o":"#$66"},{"a":37213,"t":"code","b":[162,145],"m":"ldx","o":"#$91"},{"a":37215,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":37218,"l":"script_act14","c":"Activity script of activity 14: 96 (walk to location $2E and open the front door), 97, 98 (close it in place), 104 (timed wait), 99 (open it in place), 100, 101 (random close of the front door), 0. Activity 122 starts at entry 4 ($9166).","t":"byte","b":[96,97,98,104,99,100,101,0]},{"a":37226,"l":"act15_resume","c":"Activity 15, which $8F56 makes current when a request's activity has ended; $8F5E-$8F7A has sent him back toward the saved target $8DA3. Each pass: unless $8D9A is set, if another request is pending ($8F86) and he is standing ($03BC 0, 3 or 6), mark an interruption ($8D9D := 1) and start it ($8F50). Otherwise wait while $03BC is non-zero, then restore the interrupted activity: script pointer $0423/$0424 from $8DA8/$8DA9, activity $8D9B from $8DA2, phase $4C from $8DA1, sub-phase $68 from $8DA7. The pose and facing saved in $8DA0 and $8D9F at $8FD7-$8FE0 are not restored here, and nothing else reads them.","t":"code","b":[173,154,141],"m":"lda","o":"act_music_on","oa":36250},{"a":37229,"t":"code","b":[208,27],"m":"bne","o":"b_918A","oa":37258},{"a":37231,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":37234,"t":"code","b":[240,22],"m":"beq","o":"b_918A","oa":37258},{"a":37236,"t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956},{"a":37239,"t":"code","b":[240,9],"m":"beq","o":"b_9182","oa":37250},{"a":37241,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":37243,"t":"code","b":[240,5],"m":"beq","o":"b_9182","oa":37250},{"a":37245,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":37247,"t":"code","b":[240,1],"m":"beq","o":"b_9182","oa":37250},{"a":37249,"t":"code","b":[96],"m":"rts"},{"a":37250,"l":"b_9182","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[37239,37243,37247]},{"a":37252,"t":"code","b":[141,157,141],"m":"sta","o":"request_running","oa":36253},{"a":37255,"t":"code","b":[76,80,143],"m":"jmp","o":"start_next_request","oa":36688},{"a":37258,"l":"b_918A","t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956,"x":[37229,37234]},{"a":37261,"t":"code","b":[240,1],"m":"beq","o":"b_9190","oa":37264},{"a":37263,"t":"code","b":[96],"m":"rts"},{"a":37264,"l":"b_9190","t":"code","b":[173,168,141],"m":"lda","o":"saved_script_lo","oa":36264,"x":[37261]},{"a":37267,"t":"code","b":[141,35,4],"m":"sta","o":"script_ptr","oa":1059},{"a":37270,"t":"code","b":[173,169,141],"m":"lda","o":"saved_script_hi","oa":36265},{"a":37273,"t":"code","b":[141,36,4],"m":"sta","o":"script_ptr_hi","oa":1060},{"a":37276,"t":"code","b":[173,162,141],"m":"lda","o":"saved_activity","oa":36258},{"a":37279,"t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251},{"a":37282,"t":"code","b":[173,161,141],"m":"lda","o":"saved_phase","oa":36257},{"a":37285,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":37287,"t":"code","b":[173,167,141],"m":"lda","o":"saved_subphase","oa":36263},{"a":37290,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":37292,"t":"code","b":[96],"m":"rts"},{"a":37293,"l":"act16_toggle_tv","c":"Activity 16: switch the TV on or off, chosen at random. Phase 0 (rnd_branch) takes either the on branch (phases 1-7: skip if $2B4A is already set, walk to location 0, reach, $A945 sets $2B4A) or the off branch (phases 8-14: skip if $2B4A is clear, walk there, reach, $A950 clears it). Live: seen running during play.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37296,"l":"act16_phases","c":"Phase table of activity 16 (15 words; phases 8-14 are reached only through skip8): 0 rnd_branch, 1 skip_if_tv_on, 2 $8EE5 (location 0), 3 $8FA7, 4 reach_pose_start, 5 reach_pose_hold, 6 $A945 (TV on), 7 $8F0E, 8 skip_if_tv_off, 9 $8EE5, 10 $8FA7, 11 reach_pose_start, 12 reach_pose_hold, 13 $A950 ($2B4A := 0, $356F := $FF, TV-screen cells recoloured by $2D6B), 14 $8F0E.","t":"word","b":[205,145,153,144,228,142,166,143],"d":[37325,37017,36580,36774]},{"a":37304,"t":"word","b":[140,146,150,146,68,169,13,143],"d":[37516,37526,43332,36621]},{"a":37312,"t":"word","b":[161,144,228,142,166,143,140,146],"d":[37025,36580,36774,37516]},{"a":37320,"t":"word","b":[150,146,79,169,13,143],"d":[37526,43343,36621]},{"a":37326,"l":"rnd_branch","c":"Phase handler: on a random bit ($195E, bit 0) either go to the next phase or skip 8 phases (skip8), odds 1 in 2 each. Phase 0 of activity 16.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":37329,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":37331,"t":"code","b":[208,3],"m":"bne","o":"b_91D8","oa":37336},{"a":37333,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37336,"l":"b_91D8","t":"code","b":[76,6,146],"m":"jmp","o":"skip8","oa":37382,"x":[37331]},{"a":37339,"l":"act17_toggle_lamp","c":"Activity 17: change the lamp colour $2B4B, branch chosen at random. Branch 1 (phases 1-7) walks to location $2B, reaches and sets $11 if it is $75; branch 2 (phases 8-14) sets $75 if it is $11. $8DB6 copies $2B4B through $A93A into the colour-matrix cells $5F16-$5F17 (row 19, columns 30-31), the shade of the floor lamp beside the easy chair ($75 yellow and green, $11 white).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37342,"l":"act17_phases","c":"Phase table of activity 17 (15 words; phases 8-14 are reached only through skip8): 0 rnd_branch2, 1 skip_unless_lamp_75, 2 $8F06 (location $2B), 3 $8FA7, 4 reach_pose_start, 5 reach_pose_hold, 6 $A92E ($2B4B := $11), 7 $8F0E, 8 skip_if_lamp_75, 9 $8F06, 10 $8FA7, 11 reach_pose_start, 12 reach_pose_hold, 13 $A932 ($2B4B := $75), 14 $8F0E.","t":"word","b":[251,145,10,146,5,143,166,143],"d":[37371,37386,36613,36774]},{"a":37350,"t":"word","b":[140,146,150,146,45,169,13,143],"d":[37516,37526,43309,36621]},{"a":37358,"t":"word","b":[25,146,5,143,166,143,140,146],"d":[37401,36613,36774,37516]},{"a":37366,"t":"word","b":[150,146,49,169,13,143],"d":[37526,43313,36621]},{"a":37372,"l":"rnd_branch2","c":"Phase handler, a second copy of rnd_branch: next phase or skip 8, 1 in 2 each. Phase 0 of activity 17.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":37375,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":37377,"t":"code","b":[208,3],"m":"bne","o":"skip8","oa":37382},{"a":37379,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37382,"l":"skip8","c":"Skip 8 phases: A := 8 and $AB5D adds it to the phase $4C.","t":"code","b":[169,8],"m":"lda","o":"#$08","x":[37336,37377,37439]},{"a":37384,"t":"code","b":[76,93,171],"m":"jmp","o":"activity_skip_phases","oa":43869},{"a":37387,"l":"skip_unless_lamp_75","c":"Phase handler: if bit 2 of the lamp colour $2B4B is clear (colour $11) skip 6 phases (skip6), else next phase.","t":"code","b":[173,75,43],"m":"lda","o":"lamp_colour","oa":11083},{"a":37390,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":37392,"t":"code","b":[240,3],"m":"beq","o":"skip6","oa":37397},{"a":37394,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37397,"l":"skip6","c":"Skip 6 phases: A := 6 and $AB5D adds it to the phase $4C.","t":"code","b":[169,6],"m":"lda","o":"#$06","x":[37023,37392,37407,37450]},{"a":37399,"t":"code","b":[76,93,171],"m":"jmp","o":"activity_skip_phases","oa":43869},{"a":37402,"l":"skip_if_lamp_75","c":"Phase handler: if bit 2 of $2B4B is set (colour $75) skip 6 phases, else next phase. Reached only as phase 8 of activity 17.","t":"code","b":[173,75,43],"m":"lda","o":"lamp_colour","oa":11083},{"a":37405,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":37407,"t":"code","b":[208,244],"m":"bne","o":"skip6","oa":37397},{"a":37409,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37412,"l":"act18_stereo_off","c":"Activity 18: the stereo-off machine again, phase for phase the same as activity 121 (act121_stereo_off).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37415,"l":"act18_phases","c":"Phase table of activity 18, word for word the same handlers as act121_phases: skip_if_stereo_off, $8EEA, $8FA7, reach_pose_start, reach_pose_hold, stereo_off, $8F0E.","t":"word","b":[76,146,233,142,166,143,140,146],"d":[37452,36585,36774,37516]},{"a":37423,"t":"word","b":[150,146,109,146,13,143],"d":[37526,37485,36621]},{"a":37429,"l":"unused_rnd_9235","c":"Unreferenced third copy of rnd_branch (next phase, or skip 8, at random), lying after activity 18's table. No word $9234, JMP or JSR to $9235 was found; activity 18's table has no phase 8 to skip to.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":37432,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":37434,"t":"code","b":[208,3],"m":"bne","o":"b_923F","oa":37439},{"a":37436,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37439,"l":"b_923F","t":"code","b":[76,6,146],"m":"jmp","o":"skip8","oa":37382,"x":[37434]},{"a":37442,"l":"skip_if_stereo_on","c":"Phase handler: if $2B45 (the stereo is playing) is set skip 6 phases, else next phase.","t":"code","b":[173,69,43],"m":"lda","o":"turntable_on","oa":11077},{"a":37445,"t":"code","b":[208,3],"m":"bne","o":"b_924A","oa":37450},{"a":37447,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37450,"l":"b_924A","t":"code","b":[76,21,146],"m":"jmp","o":"skip6","oa":37397,"x":[37445,37456]},{"a":37453,"l":"skip_if_stereo_off","c":"Phase handler: if $2B45 is clear skip 6 phases, else next phase. $9255, the RTS after it, is reached by nothing.","t":"code","b":[173,69,43],"m":"lda","o":"turntable_on","oa":11077},{"a":37456,"t":"code","b":[240,248],"m":"beq","o":"b_924A","oa":37450},{"a":37458,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37461,"t":"code","b":[96],"m":"rts"},{"a":37462,"l":"stereo_on","c":"Phase handler: start the stereo. JSR $800F starts the music driver ($394E: clears the sound-job mask $478D and sets up the timers at $4424); $2B45 := $FF (while set, $2CD6 calls $2DBB, which steps a 4-frame animation into the bitmap cells at $6688, row 5 columns 9-10, the stereo, every 8 main-loop passes); $801E := $FF (the IRQ at $080D then calls sound_dispatch through $800C); $3563 := $FF; $8D9A := $FF (activity 15 and $8F46 then chain no further requests); $3567 := 0. Then next phase.","t":"code","b":[32,15,128],"m":"jsr","o":"music_start_jmp","oa":32783},{"a":37465,"t":"code","b":[162,255],"m":"ldx","o":"#$FF"},{"a":37467,"t":"code","b":[142,69,43],"m":"stx","o":"turntable_on","oa":11077},{"a":37470,"t":"code","b":[142,99,53],"m":"stx","o":"snd_req_piece","oa":13667},{"a":37473,"t":"code","b":[142,154,141],"m":"stx","o":"act_music_on","oa":36250},{"a":37476,"t":"code","b":[142,30,128],"m":"stx","o":"music_playing","oa":32798},{"a":37479,"t":"code","b":[232],"m":"inx"},{"a":37480,"t":"code","b":[142,103,53],"m":"stx","o":"snd_req_piece_end","oa":13671},{"a":37483,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37486,"l":"stereo_off","c":"Phase handler: stop the stereo. $3567 := $3563; clears $8D9A, $2B45 and $801E; $801F := 1 ($3476 then silences the SID and stops the timers through $8012); $2DB2 redraws the stereo's first animation frame; $3713 clears the sound requests $355C-$357B and all SID registers. Then next phase.","t":"code","b":[173,99,53],"m":"lda","o":"snd_req_piece","oa":13667},{"a":37489,"t":"code","b":[141,103,53],"m":"sta","o":"snd_req_piece_end","oa":13671},{"a":37492,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":37494,"t":"code","b":[142,154,141],"m":"stx","o":"act_music_on","oa":36250},{"a":37497,"t":"code","b":[142,69,43],"m":"stx","o":"turntable_on","oa":11077},{"a":37500,"t":"code","b":[142,30,128],"m":"stx","o":"music_playing","oa":32798},{"a":37503,"t":"code","b":[232],"m":"inx"},{"a":37504,"t":"code","b":[142,31,128],"m":"stx","o":"music_stop_req","oa":32799},{"a":37507,"t":"code","b":[32,178,45],"m":"jsr","o":"turntable_reset","oa":11698},{"a":37510,"t":"code","b":[32,19,55],"m":"jsr","o":"sound_reset","oa":14099},{"a":37513,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37516,"l":"reach_timer","c":"Call counter of reach_pose_hold: loaded with 8 by reach_pose_start and counted down once per call (the activity switch at $8DC6 runs only while the low 3 bits of $03C4 are zero).","t":"byte","b":[0],"x":[37519,37527]},{"a":37517,"l":"reach_pose_start","c":"Phase handler: put the person in pose $19 (the pose object_op also uses to open a door) through $A8A1 (set_pose, then next phase) and load reach_timer with 8. Used before he switches the TV, the stereo or the lamp.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":37519,"t":"code","b":[141,140,146],"m":"sta","o":"reach_timer","oa":37516},{"a":37522,"t":"code","b":[169,25],"m":"lda","o":"#$19"},{"a":37524,"t":"code","b":[76,161,168],"m":"jmp","o":"j_A8A1","oa":43169},{"a":37527,"l":"reach_pose_hold","c":"Phase handler: count reach_timer down; at zero set pose $08 and go to the next phase (through $A8A1).","t":"code","b":[206,140,146],"m":"dec","o":"reach_timer","oa":37516},{"a":37530,"t":"code","b":[208,5],"m":"bne","o":"r_92A1","oa":37537},{"a":37532,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":37534,"t":"code","b":[76,161,168],"m":"jmp","o":"j_A8A1","oa":43169},{"a":37537,"l":"r_92A1","t":"code","b":[96],"m":"rts","x":[37530]},{"a":37538,"l":"act19_close_all","c":"Activity 19: tidy up. He goes round the house closing everything that is open, then switches off the TV and the stereo. The close stubs (close_stubs) skip an object's object_op phase when it is already closed: front door 0, phone-table drawer 8, kitchen cabinet 12, filing-cabinet drawer 11, dresser drawer 10, nightstand drawer 9, mirror cabinet 6, bathroom door 3, bookcase cupboard 13, filing cabinet 11 again, upstairs closet 5, bedroom closet 4, nightstand 9 again. The fridge and freezer doors (1, 2) are not on the list. Parser rules $C9CA (bits of CLEAN/TIDY/PICK, UP and SHOULD/OUGHT; last byte $88) and $C9DA (SLOPPY/MESSY/UNTIDY, IS, HOUSE/HOME; last byte $82) name activity 19.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37541,"l":"act19_phases","c":"Phase table of activity 19 (42 words): 0 close 0, 1 object_op, 2 close 8, 3 object_op, 4 getup_step, 5 close 12, 6 object_op, 7 close 11, 8 object_op, 9 close 10, 10 object_op, 11 close 9, 12 object_op, 13 getup_step, 14 close 6, 15 object_op, 16 close 3, 17 object_op, 18 close 13, 19 object_op, 20 close 11, 21 object_op, 22 close 5, 23 object_op, 24 close 4, 25 object_op, 26 close 9, 27 object_op, 28 getup_step, 29 skip_if_tv_off, 30 $8EE5, 31 $8FA7, 32 reach_pose_start, 33 reach_pose_hold, 34 $A950 (TV off), 35 skip_if_stereo_off, 36 $8EEA, 37 $8FA7, 38 reach_pose_start, 39 reach_pose_hold, 40 stereo_off, 41 $8F0E. 'close n' is the close stub for object n.","t":"word","b":[7,148,203,148,35,148,203,148],"d":[37895,38091,37923,38091]},{"a":37549,"t":"word","b":[5,149,51,148,203,148,47,148],"d":[38149,37939,38091,37935]},{"a":37557,"t":"word","b":[203,148,43,148,203,148,39,148],"d":[38091,37931,38091,37927]},{"a":37565,"t":"word","b":[203,148,5,149,31,148,203,148],"d":[38091,38149,37919,38091]},{"a":37573,"t":"word","b":[19,148,203,148,55,148,203,148],"d":[37907,38091,37943,38091]},{"a":37581,"t":"word","b":[47,148,203,148,27,148,203,148],"d":[37935,38091,37915,38091]},{"a":37589,"t":"word","b":[23,148,203,148,39,148,203,148],"d":[37911,38091,37927,38091]},{"a":37597,"t":"word","b":[5,149,161,144,228,142,166,143],"d":[38149,37025,36580,36774]},{"a":37605,"t":"word","b":[140,146,150,146,79,169,76,146],"d":[37516,37526,43343,37452]},{"a":37613,"t":"word","b":[233,142,166,143,140,146,150,146],"d":[36585,36774,37516,37526]},{"a":37621,"t":"word","b":[109,146,13,143],"d":[37485,36621]},{"a":37625,"l":"rummage_start","c":"Phase handler that starts a rummage in an opened drawer. If the person's pose ($038B) is not $20, hand over to $AF58. Otherwise $ACF1 := 0 and $ACF2 := $A2 (then 2 at $9327 in the same pass), and the rummage length $47AB comes from rummage_lengths, indexed by the low 3 bits of $0369 plus 8 when $0369 is negative (2 instead while $037B is non-zero). Then next phase.","t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907},{"a":37628,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":37630,"t":"code","b":[240,3],"m":"beq","o":"b_9303","oa":37635},{"a":37632,"t":"code","b":[76,88,175],"m":"jmp","o":"act_pose_seq","oa":44888},{"a":37635,"l":"b_9303","t":"code","b":[169,162],"m":"lda","o":"#$A2","x":[37630]},{"a":37637,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":37640,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":37642,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":37645,"t":"code","b":[173,105,3],"m":"lda","o":"trait_byte","oa":873},{"a":37648,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":37650,"t":"code","b":[172,105,3],"m":"ldy","o":"trait_byte","oa":873},{"a":37653,"t":"code","b":[16,2],"m":"bpl","o":"b_9319","oa":37657},{"a":37655,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":37657,"l":"b_9319","t":"code","b":[170],"m":"tax","x":[37653]},{"a":37658,"t":"code","b":[189,47,147],"m":"lda","o":"rummage_lengths,x","oa":37679},{"a":37661,"t":"code","b":[174,123,3],"m":"ldx","o":"pending_activity","oa":891},{"a":37664,"t":"code","b":[240,2],"m":"beq","o":"b_9324","oa":37668},{"a":37666,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":37668,"l":"b_9324","t":"code","b":[141,171,71],"m":"sta","o":"count_9324","oa":18347,"x":[37664]},{"a":37671,"l":"b_9327","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[37724]},{"a":37673,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":37676,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37679,"l":"rummage_lengths","c":"Rummage lengths for rummage_start, in units of 32 calls of rummage: $10,$0E,$0C,$0B,$0A,$09,$06,$03 for $0369 positive with low bits 0-7, then $10,$12,$13,$16,$18,$1A,$1C,$1E for $0369 negative. $0369 is $2D in every snapshot from the time prompt on, which picks $09.","t":"byte","b":[16,14,12,11,10,9,6,3],"x":[37658]},{"a":37687,"t":"byte","b":[16,18,19,22,24,26,28,30]},{"a":37695,"l":"rummage_skip","c":"The RTS rummage branches back to on the 7 calls in 8 it does nothing.","t":"code","b":[96],"m":"rts","x":[37704]},{"a":37696,"l":"rummage","c":"Phase handler, acting on every 8th call ($47AC counts calls): if a request is pending ($8F86) go to the next phase. Every 32nd call count $47AB down with pose $20, and when it is already 0 set $ACF2 := 2 and go on. Other calls flip bit 3 of the facing byte $039A at random and set a random pose from rummage_poses.","t":"code","b":[238,172,71],"m":"inc","o":"count_933f","oa":18348},{"a":37699,"t":"code","b":[173,172,71],"m":"lda","o":"count_933f","oa":18348},{"a":37702,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":37704,"t":"code","b":[208,245],"m":"bne","o":"rummage_skip","oa":37695},{"a":37706,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":37709,"t":"code","b":[240,3],"m":"beq","o":"b_9352","oa":37714},{"a":37711,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":37714,"l":"b_9352","t":"code","b":[173,172,71],"m":"lda","o":"count_933f","oa":18348,"x":[37709]},{"a":37717,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":37719,"t":"code","b":[208,15],"m":"bne","o":"b_9368","oa":37736},{"a":37721,"t":"code","b":[173,171,71],"m":"lda","o":"count_9324","oa":18347},{"a":37724,"t":"code","b":[240,201],"m":"beq","o":"b_9327","oa":37671},{"a":37726,"t":"code","b":[206,171,71],"m":"dec","o":"count_9324","oa":18347},{"a":37729,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":37731,"l":"set_pose","c":"Set the person's pose: X := 0 (figure 0, the person) and $1ADF stores A in $038B if it changed. Shared by many handlers inside and outside this range (see its cross-references).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[9382,9628,9873,12137,12198,12251,13328,14556,23441,37756,38143,38177,38221,38259,38285,38293,38317,38490,43169,43226,48954,48995,49084]},{"a":37733,"t":"code","b":[76,223,26],"m":"jmp","o":"figure_set_pose","oa":6879},{"a":37736,"l":"b_9368","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[37719]},{"a":37739,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":37741,"t":"code","b":[77,154,3],"m":"eor","o":"fig_mirror","oa":922},{"a":37744,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":37747,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":37750,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":37752,"t":"code","b":[170],"m":"tax"},{"a":37753,"t":"code","b":[189,131,147],"m":"lda","o":"rummage_poses,x","oa":37763},{"a":37756,"l":"b_937C","t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731,"x":[37761]},{"a":37759,"l":"unused_pose20","c":"Unreferenced: A := $20 and branch to the JMP to set_pose. No JMP, JSR or table word reaches $937F.","t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":37761,"t":"code","b":[208,249],"m":"bne","o":"b_937C","oa":37756},{"a":37763,"l":"rummage_poses","c":"The four poses rummage picks from at random: $2A, $20, $1E, $2A.","t":"byte","b":[42,32,30,42],"x":[37753]},{"a":37767,"l":"act23_filing_cabinet","c":"Activity 23: the filing cabinet on the top floor. Walk to location $0C ($A81A copies it into the scratch location $36), open the drawer (object 11), rummage, close it at random, stand up. Parser rule $CB3A (WHAT/IN with FILING and CABINET) queues it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":37770,"l":"act23_phases","c":"Phase table of activity 23: 0 $A81A (walk target: location $0C), 1 $8FA7, 2 open stub $9465 (object 11; to 4 when it is already open), 3 object_op, 4 rummage_start, 5 rummage, 6 random-close stub $93FB (object 11), 7 object_op, 8 getup_step, 9 $8F0E (end).","t":"word","b":[25,168,166,143,100,148,203,148],"d":[43033,36774,37988,38091]},{"a":37778,"t":"word","b":[248,146,63,147,250,147,203,148],"d":[37624,37695,37882,38091]},{"a":37786,"t":"word","b":[5,149,13,143],"d":[38149,36621]},{"a":37790,"l":"rnd_open_stubs","c":"Random-open stubs for objects 0-6, four bytes each (LDX #object, then a branch to obj_rnd_open through the JMP at $93D0): $939E front door 0, $93A2 fridge 1, $93A6 freezer 2, $93AA bathroom door 3, $93AE bedroom closet 4, $93B2 upstairs closet 5, $93B6 mirror cabinet 6. None of them is reached: no table word $939D-$93B5 exists (the one hit, $994C, is frame-record data).","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":37792,"t":"code","b":[240,46],"m":"beq","o":"b_93D0","oa":37840},{"a":37794,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":37796,"t":"code","b":[208,42],"m":"bne","o":"b_93D0","oa":37840},{"a":37798,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":37800,"t":"code","b":[208,38],"m":"bne","o":"b_93D0","oa":37840},{"a":37802,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":37804,"t":"code","b":[208,34],"m":"bne","o":"b_93D0","oa":37840},{"a":37806,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":37808,"t":"code","b":[208,30],"m":"bne","o":"b_93D0","oa":37840},{"a":37810,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":37812,"t":"code","b":[208,26],"m":"bne","o":"b_93D0","oa":37840},{"a":37814,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":37816,"t":"code","b":[208,22],"m":"bne","o":"b_93D0","oa":37840},{"a":37818,"l":"rnd_open_stubs_8","c":"Random-open stubs for objects 8-13: $93BA phone-table drawer 8 (phase 0 of activity 10), $93BE nightstand 9, $93C2 dresser 10, $93C6 filing cabinet 11, $93CA kitchen cabinet 12, $93CE bookcase cupboard 13; only $93BA is used by a table.","t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":37820,"t":"code","b":[208,18],"m":"bne","o":"b_93D0","oa":37840},{"a":37822,"t":"code","b":[162,9],"m":"ldx","o":"#$09"},{"a":37824,"t":"code","b":[208,14],"m":"bne","o":"b_93D0","oa":37840},{"a":37826,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":37828,"t":"code","b":[208,10],"m":"bne","o":"b_93D0","oa":37840},{"a":37830,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":37832,"t":"code","b":[208,6],"m":"bne","o":"b_93D0","oa":37840},{"a":37834,"t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":37836,"t":"code","b":[208,2],"m":"bne","o":"b_93D0","oa":37840},{"a":37838,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":37840,"l":"b_93D0","t":"code","b":[76,145,148],"m":"jmp","o":"obj_rnd_open","oa":38033,"x":[37792,37796,37800,37804,37808,37812,37816,37820,37824,37828,37832,37836]},{"a":37843,"l":"rnd_close_stubs","c":"Random-close stubs, LDX #object and a branch to obj_rnd_close (JMP at $9405): $93D3 object 0, $93D7 1, $93DB 2, $93DF 3, $93E3 4, $93E7 5, $93EB 6, $93EF 8, $93F3 9, $93F7 10, $93FB 11, $93FF 12, $9403 13. Used by tables: 0 (activities 101 and 7), 3, 4, 5 (87, 95, 91), 8 (10), 9 (106), 10 (105, 26), 11 (23), 12 (117) and 13 (26); 1, 2 and 6 are never used.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":37845,"t":"code","b":[240,46],"m":"beq","o":"b_9405","oa":37893},{"a":37847,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":37849,"t":"code","b":[208,42],"m":"bne","o":"b_9405","oa":37893},{"a":37851,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":37853,"t":"code","b":[208,38],"m":"bne","o":"b_9405","oa":37893},{"a":37855,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":37857,"t":"code","b":[208,34],"m":"bne","o":"b_9405","oa":37893},{"a":37859,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":37861,"t":"code","b":[208,30],"m":"bne","o":"b_9405","oa":37893},{"a":37863,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":37865,"t":"code","b":[208,26],"m":"bne","o":"b_9405","oa":37893},{"a":37867,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":37869,"t":"code","b":[208,22],"m":"bne","o":"b_9405","oa":37893},{"a":37871,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":37873,"t":"code","b":[208,18],"m":"bne","o":"b_9405","oa":37893},{"a":37875,"t":"code","b":[162,9],"m":"ldx","o":"#$09"},{"a":37877,"t":"code","b":[208,14],"m":"bne","o":"b_9405","oa":37893},{"a":37879,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":37881,"t":"code","b":[208,10],"m":"bne","o":"b_9405","oa":37893},{"a":37883,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":37885,"t":"code","b":[208,6],"m":"bne","o":"b_9405","oa":37893},{"a":37887,"t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":37889,"t":"code","b":[208,2],"m":"bne","o":"b_9405","oa":37893},{"a":37891,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":37893,"l":"b_9405","t":"code","b":[76,174,148],"m":"jmp","o":"obj_rnd_close","oa":38062,"x":[37845,37849,37853,37857,37861,37865,37869,37873,37877,37881,37885,37889]},{"a":37896,"l":"close_stubs","c":"Close stubs, LDX #object and a branch to obj_close (JMP at $943A): $9408 object 0, $940C 1, $9410 2, $9414 3, $9418 4, $941C 5, $9420 6, $9424 8, $9428 9, $942C 10, $9430 11, $9434 12, $9438 13. Activity 19 uses all but 1 and 2, which activities 67 and 69 close.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":37898,"t":"code","b":[240,46],"m":"beq","o":"b_943A","oa":37946},{"a":37900,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":37902,"t":"code","b":[208,42],"m":"bne","o":"b_943A","oa":37946},{"a":37904,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":37906,"t":"code","b":[208,38],"m":"bne","o":"b_943A","oa":37946},{"a":37908,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":37910,"t":"code","b":[208,34],"m":"bne","o":"b_943A","oa":37946},{"a":37912,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":37914,"t":"code","b":[208,30],"m":"bne","o":"b_943A","oa":37946},{"a":37916,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":37918,"t":"code","b":[208,26],"m":"bne","o":"b_943A","oa":37946},{"a":37920,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":37922,"t":"code","b":[208,22],"m":"bne","o":"b_943A","oa":37946},{"a":37924,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":37926,"t":"code","b":[208,18],"m":"bne","o":"b_943A","oa":37946},{"a":37928,"t":"code","b":[162,9],"m":"ldx","o":"#$09"},{"a":37930,"t":"code","b":[208,14],"m":"bne","o":"b_943A","oa":37946},{"a":37932,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":37934,"t":"code","b":[208,10],"m":"bne","o":"b_943A","oa":37946},{"a":37936,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":37938,"t":"code","b":[208,6],"m":"bne","o":"b_943A","oa":37946},{"a":37940,"t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":37942,"t":"code","b":[208,2],"m":"bne","o":"b_943A","oa":37946},{"a":37944,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":37946,"l":"b_943A","t":"code","b":[76,133,148],"m":"jmp","o":"obj_close","oa":38021,"x":[37898,37902,37906,37910,37914,37918,37922,37926,37930,37934,37938,37942,38082,38088]},{"a":37949,"l":"open_stubs","c":"Open stubs, LDX #object and a branch to obj_open: $943D object 0, $9441 1, $9445 2, $9449 3, $944D 4, $9451 5, $9455 6, $9459 8, $945D 9, $9461 10, $9465 11, $9469 12, $946D 13. The ones for 8 and 13 are used by no table found.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":37951,"t":"code","b":[240,46],"m":"beq","o":"obj_open","oa":37999},{"a":37953,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":37955,"t":"code","b":[208,42],"m":"bne","o":"obj_open","oa":37999},{"a":37957,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":37959,"t":"code","b":[208,38],"m":"bne","o":"obj_open","oa":37999},{"a":37961,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":37963,"t":"code","b":[208,34],"m":"bne","o":"obj_open","oa":37999},{"a":37965,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":37967,"t":"code","b":[208,30],"m":"bne","o":"obj_open","oa":37999},{"a":37969,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":37971,"t":"code","b":[208,26],"m":"bne","o":"obj_open","oa":37999},{"a":37973,"t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":37975,"t":"code","b":[208,22],"m":"bne","o":"obj_open","oa":37999},{"a":37977,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":37979,"t":"code","b":[208,18],"m":"bne","o":"obj_open","oa":37999},{"a":37981,"t":"code","b":[162,9],"m":"ldx","o":"#$09"},{"a":37983,"t":"code","b":[208,14],"m":"bne","o":"obj_open","oa":37999},{"a":37985,"t":"code","b":[162,10],"m":"ldx","o":"#$0A"},{"a":37987,"t":"code","b":[208,10],"m":"bne","o":"obj_open","oa":37999},{"a":37989,"t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":37991,"t":"code","b":[208,6],"m":"bne","o":"obj_open","oa":37999},{"a":37993,"t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":37995,"t":"code","b":[208,2],"m":"bne","o":"obj_open","oa":37999},{"a":37997,"t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":37999,"l":"obj_open","c":"Open-stub tail, X = object: if obj_state[X] is 2 (open) skip the stub's object_op phase (skip2); otherwise obj_select with A = 0, the open steps.","t":"code","b":[189,205,150],"m":"lda","o":"obj_state,x","oa":38605,"x":[10416,37951,37955,37959,37963,37967,37971,37975,37979,37983,37987,37991,37995,38053,38059]},{"a":38002,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":38004,"t":"code","b":[240,10],"m":"beq","o":"skip2","oa":38016},{"a":38006,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":38008,"l":"obj_select","c":"Store A in the sub-phase $68 and X in obj_current, then next phase ($8F0B), where object_op carries the operation out.","t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104,"x":[38030,38566,38585]},{"a":38010,"t":"code","b":[142,203,148],"m":"stx","o":"obj_current","oa":38091},{"a":38013,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":38016,"l":"skip2","c":"Skip 2 phases (A := 2, $AB5D adds it to $4C): the stub and its object_op phase are passed over.","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[38004,38026,38051,38057,38080,38086]},{"a":38018,"t":"code","b":[76,93,171],"m":"jmp","o":"activity_skip_phases","oa":43869},{"a":38021,"l":"obj_close","c":"Close-stub tail, X = object: if obj_state[X] & 3 is 0 (closed) skip2; otherwise obj_select with A = 7, the close steps.","t":"code","b":[189,205,150],"m":"lda","o":"obj_state,x","oa":38605,"x":[10425,37946]},{"a":38024,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38026,"t":"code","b":[240,244],"m":"beq","o":"skip2","oa":38016},{"a":38028,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":38030,"t":"code","b":[76,120,148],"m":"jmp","o":"obj_select","oa":38008},{"a":38033,"l":"obj_rnd_open","c":"Random-open tail, X = object: m := odds_masks[$0369 & 7], r := random ($195E) & m. With $0369 positive the object is opened (obj_open) only when r = 0, odds 1 in m+1; with $0369 negative only when r is not 0. Otherwise skip2.","t":"code","b":[173,105,3],"m":"lda","o":"trait_byte","oa":873,"x":[37840]},{"a":38036,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":38038,"t":"code","b":[168],"m":"tay"},{"a":38039,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":38042,"t":"code","b":[57,197,150],"m":"and","o":"odds_masks,y","oa":38597},{"a":38045,"t":"code","b":[172,105,3],"m":"ldy","o":"trait_byte","oa":873},{"a":38048,"t":"code","b":[48,6],"m":"bmi","o":"b_94A8","oa":38056},{"a":38050,"t":"code","b":[168],"m":"tay"},{"a":38051,"t":"code","b":[208,219],"m":"bne","o":"skip2","oa":38016},{"a":38053,"t":"code","b":[76,111,148],"m":"jmp","o":"obj_open","oa":37999},{"a":38056,"l":"b_94A8","t":"code","b":[168],"m":"tay","x":[38048]},{"a":38057,"t":"code","b":[240,213],"m":"beq","o":"skip2","oa":38016},{"a":38059,"t":"code","b":[76,111,148],"m":"jmp","o":"obj_open","oa":37999},{"a":38062,"l":"obj_rnd_close","c":"Random-close tail: the same m and r as obj_rnd_open with the sign of $0369 the other way round: positive closes (through obj_close) when r is not 0, negative only when r = 0. With $0369 = $2D, its value in every snapshot from the time prompt on, m = $3F: he opens 1 time in 64 and closes 63 times in 64.","t":"code","b":[173,105,3],"m":"lda","o":"trait_byte","oa":873,"x":[37893]},{"a":38065,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":38067,"t":"code","b":[168],"m":"tay"},{"a":38068,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":38071,"t":"code","b":[57,197,150],"m":"and","o":"odds_masks,y","oa":38597},{"a":38074,"t":"code","b":[172,105,3],"m":"ldy","o":"trait_byte","oa":873},{"a":38077,"t":"code","b":[16,6],"m":"bpl","o":"b_94C5","oa":38085},{"a":38079,"t":"code","b":[168],"m":"tay"},{"a":38080,"t":"code","b":[208,190],"m":"bne","o":"skip2","oa":38016},{"a":38082,"t":"code","b":[76,58,148],"m":"jmp","o":"b_943A","oa":37946},{"a":38085,"l":"b_94C5","t":"code","b":[168],"m":"tay","x":[38077]},{"a":38086,"t":"code","b":[240,184],"m":"beq","o":"skip2","oa":38016},{"a":38088,"t":"code","b":[76,58,148],"m":"jmp","o":"b_943A","oa":37946},{"a":38091,"l":"obj_current","c":"The object object_op is working on (0-13), stored by obj_select. 5 (the upstairs closet door) in play-01 and play-02, 1 before play.","t":"byte","b":[5],"x":[38010,38092,38224,38471]},{"a":38092,"l":"object_op","c":"Phase handler that runs one step of an object operation: X := obj_current, then switch on the sub-phase $68 through object_op_steps. Activity tables put it straight after an open, close, random or in-place stub, which sets $68 to 0 (open), 7 (close), 14 (open in place) or 17 (close in place), or skips both phases when there is nothing to do.","t":"code","b":[174,203,148],"m":"ldx","o":"obj_current","oa":38091},{"a":38095,"t":"code","b":[32,12,63],"m":"jsr","o":"switch_68","oa":16140},{"a":38098,"l":"object_op_steps","c":"Step table of object_op by $68 (word = handler - 1). Open, from 0: op_goto_spot, walk_sub_take_requests, op_reach_open, op_unreach, op_start_open, op_wait_step, $8F0B (next phase of the activity). Close, from 7: op_goto_spot, walk_sub_take_requests, op_reach_close, op_start_close, op_wait_step, op_unreach, $8F0B. Open in place, from 14: op_start_open, op_wait_plain, $8F0B. Close in place, from 17: op_start_close, op_wait_plain, $8F0B.","t":"word","b":[178,149,236,149,85,149,160,149],"d":[38322,38380,38229,38304]},{"a":38106,"t":"word","b":[37,150,93,150,10,143,178,149],"d":[38437,38493,36618,38322]},{"a":38114,"t":"word","b":[236,149,117,149,20,150,93,150],"d":[38380,38261,38420,38493]},{"a":38122,"t":"word","b":[160,149,10,143,37,150,188,150],"d":[38304,36618,38437,38588]},{"a":38130,"t":"word","b":[10,143,20,150,188,150,10,143],"d":[36618,38420,38588,36618]},{"a":38138,"l":"unused_94FA","c":"Three bytes, $1D $1E $1F, after object_op's 20-entry table; no reference to them was found (no stub sets $68 above 17).","t":"byte","b":[29,30,31]},{"a":38141,"l":"getup_exits","c":"Exits of getup_step, placed before its entry: $9502 goes to the next phase, $9505 returns until the next call. $94FD (pose $08 through set_pose) is reached only by the BEQ at $951B, which cannot be taken: Y is 4 there and is compared with 6.","t":"code","b":[169,8],"m":"lda","o":"#$08","x":[38171]},{"a":38143,"t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731},{"a":38146,"l":"b_9502","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[38159,38163]},{"a":38149,"l":"r_9505","t":"code","b":[96],"m":"rts","x":[38153]},{"a":38150,"l":"getup_step","c":"Phase handler that stands the person up again, one pose step per 8 calls (op_divider): find his pose in pose_steps and step back up the list, $20 or $1F -> $1E -> $21 -> $08; when the pose is $08, or not in the list, go to the next phase. Follows rummaging and closing low objects.","t":"code","b":[32,123,150],"m":"jsr","o":"op_divider","oa":38523},{"a":38153,"t":"code","b":[208,250],"m":"bne","o":"r_9505","oa":38149},{"a":38155,"t":"code","b":[32,57,149],"m":"jsr","o":"find_pose_step","oa":38201},{"a":38158,"t":"code","b":[136],"m":"dey"},{"a":38159,"t":"code","b":[240,241],"m":"beq","o":"b_9502","oa":38146},{"a":38161,"t":"code","b":[192,5],"m":"cpy","o":"#$05"},{"a":38163,"t":"code","b":[240,237],"m":"beq","o":"b_9502","oa":38146},{"a":38165,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":38167,"t":"code","b":[208,5],"m":"bne","o":"b_951E","oa":38174},{"a":38169,"t":"code","b":[192,6],"m":"cpy","o":"#$06"},{"a":38171,"t":"code","b":[240,224],"m":"beq","o":"getup_exits","oa":38141},{"a":38173,"t":"code","b":[136],"m":"dey"},{"a":38174,"l":"b_951E","t":"code","b":[185,49,149],"m":"lda","o":"pose_steps_m1,y","oa":38193,"x":[38167]},{"a":38177,"t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731},{"a":38180,"l":"is_low_object","c":"Is object X one of the low ones, 8-11 (the drawers of the phone table, nightstand, dresser and filing cabinet), that he crouches for? Returns A = 0 and Z set for 8-11, A = 1 otherwise.","t":"code","b":[224,8],"m":"cpx","o":"#$08","x":[38235,38267,38305,38323,38474]},{"a":38182,"t":"code","b":[144,7],"m":"bcc","o":"b_952F","oa":38191},{"a":38184,"t":"code","b":[224,12],"m":"cpx","o":"#$0C"},{"a":38186,"t":"code","b":[176,3],"m":"bcs","o":"b_952F","oa":38191},{"a":38188,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":38190,"t":"code","b":[96],"m":"rts"},{"a":38191,"l":"b_952F","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[38182,38186,38265]},{"a":38193,"l":"pose_steps_m1","c":"The RTS of is_low_object. getup_step reads it as the base $9531,Y with Y >= 1, i.e. pose_steps[Y-1].","t":"code","b":[96],"m":"rts","x":[38174]},{"a":38194,"l":"pose_steps","c":"Poses for crouching down to a low object and standing up again: $08 (standing), $21, $1E, $1F, $20, then 0 ending the list and one more 0.","t":"byte","b":[8,33,30,31,32,0,0],"x":[38203,38256]},{"a":38201,"l":"find_pose_step","c":"Find the person's pose $038B in pose_steps: returns Y = index + 1, or Y = 6 with A = $08 when it is not in the list.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[38155,38247]},{"a":38203,"l":"b_953B","t":"code","b":[185,50,149],"m":"lda","o":"pose_steps,y","oa":38194,"x":[38212]},{"a":38206,"t":"code","b":[240,7],"m":"beq","o":"b_9547","oa":38215},{"a":38208,"t":"code","b":[200],"m":"iny"},{"a":38209,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":38212,"t":"code","b":[208,245],"m":"bne","o":"b_953B","oa":38203},{"a":38214,"t":"code","b":[96],"m":"rts"},{"a":38215,"l":"b_9547","t":"code","b":[169,8],"m":"lda","o":"#$08","x":[38206,38233]},{"a":38217,"t":"code","b":[200],"m":"iny"},{"a":38218,"t":"code","b":[96],"m":"rts"},{"a":38219,"l":"op_crouched","c":"Part of op_reach_open: from pose $1E set $1F, reload X with obj_current, next sub-phase.","t":"code","b":[169,31],"m":"lda","o":"#$1F","x":[38245]},{"a":38221,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":38224,"t":"code","b":[174,203,148],"m":"ldx","o":"obj_current","oa":38091},{"a":38227,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":38230,"l":"op_reach_open","c":"Object step (open), once every 8 calls (op_divider): for a door or cupboard set pose $19 and $47AA := 10, next sub-phase ($9593). For a low object step down pose_steps (a pose not in the list starts at $21), and at $1E set $1F and go on (op_crouched).","t":"code","b":[32,123,150],"m":"jsr","o":"op_divider","oa":38523},{"a":38233,"t":"code","b":[208,236],"m":"bne","o":"b_9547","oa":38215},{"a":38235,"t":"code","b":[32,36,149],"m":"jsr","o":"is_low_object","oa":38180},{"a":38238,"t":"code","b":[208,51],"m":"bne","o":"b_9593","oa":38291},{"a":38240,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":38242,"t":"code","b":[205,139,3],"m":"cmp","o":"fig_frame","oa":907},{"a":38245,"t":"code","b":[240,228],"m":"beq","o":"op_crouched","oa":38219},{"a":38247,"l":"b_9567","t":"code","b":[32,57,149],"m":"jsr","o":"find_pose_step","oa":38201,"x":[38281]},{"a":38250,"t":"code","b":[192,6],"m":"cpy","o":"#$06"},{"a":38252,"t":"code","b":[208,2],"m":"bne","o":"b_9570","oa":38256},{"a":38254,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":38256,"l":"b_9570","t":"code","b":[185,50,149],"m":"lda","o":"pose_steps,y","oa":38194,"x":[38252]},{"a":38259,"t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731},{"a":38262,"l":"op_reach_close","c":"Object step (close), once every 8 calls: for a door as op_reach_open; for a low object go on once the pose is $20, set $20 from $1E, otherwise step down pose_steps.","t":"code","b":[32,123,150],"m":"jsr","o":"op_divider","oa":38523},{"a":38265,"t":"code","b":[208,180],"m":"bne","o":"b_952F","oa":38191},{"a":38267,"t":"code","b":[32,36,149],"m":"jsr","o":"is_low_object","oa":38180},{"a":38270,"t":"code","b":[208,19],"m":"bne","o":"b_9593","oa":38291},{"a":38272,"t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907},{"a":38275,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":38277,"t":"code","b":[240,9],"m":"beq","o":"b_9590","oa":38288},{"a":38279,"t":"code","b":[201,30],"m":"cmp","o":"#$1E"},{"a":38281,"t":"code","b":[208,220],"m":"bne","o":"b_9567","oa":38247},{"a":38283,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":38285,"t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731},{"a":38288,"l":"b_9590","t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320,"x":[38277]},{"a":38291,"l":"b_9593","t":"code","b":[169,25],"m":"lda","o":"#$19","x":[38238,38270]},{"a":38293,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":38296,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":38298,"t":"code","b":[141,170,71],"m":"sta","o":"count_9593","oa":18346},{"a":38301,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":38304,"l":"r_95A0","t":"code","b":[96],"m":"rts","x":[38313]},{"a":38305,"l":"op_unreach","c":"Object step: a low object goes straight on. For a door count $47AA down, one per call, and at 0 set pose $08 and go on: he holds pose $19 for 10 calls.","t":"code","b":[32,36,149],"m":"jsr","o":"is_low_object","oa":38180},{"a":38308,"t":"code","b":[240,10],"m":"beq","o":"next_subphase","oa":38320},{"a":38310,"t":"code","b":[206,170,71],"m":"dec","o":"count_9593","oa":18346},{"a":38313,"t":"code","b":[208,245],"m":"bne","o":"r_95A0","oa":38304},{"a":38315,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":38317,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":38320,"l":"next_subphase","c":"Next sub-phase: INC $68. Used by many $68 machines inside and outside this range.","t":"code","b":[230,104],"m":"inc","o":"activity_subphase","oa":104,"x":[8655,8682,8721,9153,9171,9212,9220,9282,9353,9473,9514,9533,9766,9787,9876,9901,9976,9984,10000,38227,38288,38301,38308,38353,38418,38428,38431,38458,38520]},{"a":38322,"t":"code","b":[96],"m":"rts"},{"a":38323,"l":"op_goto_spot","c":"Object step: set the walk target for object X to its spot obj_spot[X] (a location number); for the low objects 8-11 the location is copied into the scratch location $36 ($16AE) and $36 becomes the target. For the other objects nothing changes if the target already is that location. Then next sub-phase.","t":"code","b":[32,36,149],"m":"jsr","o":"is_low_object","oa":38180},{"a":38326,"t":"code","b":[208,11],"m":"bne","o":"b_95C3","oa":38339},{"a":38328,"t":"code","b":[189,132,150],"m":"lda","o":"obj_spot,x","oa":38532},{"a":38331,"t":"code","b":[170],"m":"tax"},{"a":38332,"t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806},{"a":38335,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":38337,"t":"code","b":[208,11],"m":"bne","o":"b_95CE","oa":38350},{"a":38339,"l":"b_95C3","t":"code","b":[189,132,150],"m":"lda","o":"obj_spot,x","oa":38532,"x":[38326]},{"a":38342,"t":"code","b":[205,192,3],"m":"cmp","o":"move_target","oa":960},{"a":38345,"t":"code","b":[240,6],"m":"beq","o":"b_95D1","oa":38353},{"a":38347,"t":"code","b":[189,132,150],"m":"lda","o":"obj_spot,x","oa":38532},{"a":38350,"l":"b_95CE","t":"code","b":[32,99,171],"m":"jsr","o":"set_person_destination","oa":43875,"x":[38337]},{"a":38353,"l":"b_95D1","t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320,"x":[38345]},{"a":38356,"l":"b_95D4","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[38407]},{"a":38358,"l":"b_95D6","t":"code","b":[189,243,190],"m":"lda","o":"request_flags,x","oa":48883,"x":[38366]},{"a":38361,"t":"code","b":[208,7],"m":"bne","o":"b_95E2","oa":38370},{"a":38363,"t":"code","b":[232],"m":"inx"},{"a":38364,"t":"code","b":[224,10],"m":"cpx","o":"#$0A"},{"a":38366,"t":"code","b":[208,246],"m":"bne","o":"b_95D6","oa":38358},{"a":38368,"t":"code","b":[240,42],"m":"beq","o":"b_960C","oa":38412},{"a":38370,"l":"b_95E2","t":"code","b":[189,233,190],"m":"lda","o":"request_activities,x","oa":48873,"x":[38361]},{"a":38373,"t":"code","b":[205,158,141],"m":"cmp","o":"request_activity","oa":36254},{"a":38376,"t":"code","b":[240,34],"m":"beq","o":"b_960C","oa":38412},{"a":38378,"t":"code","b":[76,65,144],"m":"jmp","o":"start_request_a","oa":36929},{"a":38381,"l":"walk_sub_take_requests","c":"Sub-phase handler, the $68-level twin of $8FA7, also used by the $68 machines at $21B5 and $31E6. Unless $0391 is non-zero, when he is standing or arrived ($03BC 0, 3 or 6) and a request is pending ($8D9E): with no interruption running, save the context and switch to it ($8FC1); with one running, switch only if the first set request flag belongs to another activity (start_request_a). Otherwise return while $03BC is non-zero and go to the next sub-phase when he has arrived.","t":"code","b":[173,145,3],"m":"lda","o":"carrying","oa":913,"x":[13236]},{"a":38384,"t":"code","b":[208,26],"m":"bne","o":"b_960C","oa":38412},{"a":38386,"t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956},{"a":38389,"t":"code","b":[240,8],"m":"beq","o":"b_95FF","oa":38399},{"a":38391,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":38393,"t":"code","b":[240,4],"m":"beq","o":"b_95FF","oa":38399},{"a":38395,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":38397,"t":"code","b":[208,13],"m":"bne","o":"b_960C","oa":38412},{"a":38399,"l":"b_95FF","t":"code","b":[173,158,141],"m":"lda","o":"request_activity","oa":36254,"x":[38389,38393]},{"a":38402,"t":"code","b":[240,8],"m":"beq","o":"b_960C","oa":38412},{"a":38404,"t":"code","b":[173,157,141],"m":"lda","o":"request_running","oa":36253},{"a":38407,"t":"code","b":[208,203],"m":"bne","o":"b_95D4","oa":38356},{"a":38409,"t":"code","b":[76,193,143],"m":"jmp","o":"interrupt_for_request","oa":36801},{"a":38412,"l":"b_960C","t":"code","b":[173,188,3],"m":"lda","o":"move_state","oa":956,"x":[38368,38376,38384,38397,38402]},{"a":38415,"t":"code","b":[240,1],"m":"beq","o":"b_9612","oa":38418},{"a":38417,"t":"code","b":[96],"m":"rts"},{"a":38418,"l":"b_9612","t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320,"x":[38415]},{"a":38421,"l":"op_start_close","c":"Object step: if object X is not closed, state := 3 (half open, closing), obj_timer[X] := 8, next sub-phase and redraw (draw_object); if it is closed already, skip this and the wait step.","t":"code","b":[189,205,150],"m":"lda","o":"obj_state,x","oa":38605},{"a":38424,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38426,"t":"code","b":[208,6],"m":"bne","o":"b_9622","oa":38434},{"a":38428,"l":"b_961C","t":"code","b":[32,176,149],"m":"jsr","o":"next_subphase","oa":38320,"x":[38443]},{"a":38431,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":38434,"l":"b_9622","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[38426]},{"a":38436,"t":"code","b":[208,12],"m":"bne","o":"b_9632","oa":38450},{"a":38438,"l":"op_start_open","c":"Object step: if object X is closed, state := 1 (half open), sound request $355E := 1, obj_timer[X] := 8, next sub-phase and redraw; if it is not closed, skip this and the wait step.","t":"code","b":[189,205,150],"m":"lda","o":"obj_state,x","oa":38605},{"a":38441,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38443,"t":"code","b":[208,239],"m":"bne","o":"b_961C","oa":38428},{"a":38445,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":38447,"t":"code","b":[141,94,53],"m":"sta","o":"snd_oneshot_01","oa":13662},{"a":38450,"l":"b_9632","t":"code","b":[157,205,150],"m":"sta","o":"obj_state,x","oa":38605,"x":[38436]},{"a":38453,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":38455,"t":"code","b":[157,221,150],"m":"sta","o":"obj_timer,x","oa":38621},{"a":38458,"t":"code","b":[32,176,149],"m":"jsr","o":"next_subphase","oa":38320},{"a":38461,"t":"code","b":[76,237,150],"m":"jmp","o":"draw_object","oa":38637},{"a":38464,"l":"op_arm_toggle","c":"Part of op_wait_step: one call before the state changes (timer 1), a low object switches the person between the two crouched poses $1F and $20.","t":"code","b":[189,221,150],"m":"lda","o":"obj_timer,x","oa":38621,"x":[38497]},{"a":38467,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":38469,"t":"code","b":[208,22],"m":"bne","o":"r_965D","oa":38493},{"a":38471,"t":"code","b":[174,203,148],"m":"ldx","o":"obj_current","oa":38091},{"a":38474,"t":"code","b":[32,36,149],"m":"jsr","o":"is_low_object","oa":38180},{"a":38477,"t":"code","b":[208,14],"m":"bne","o":"r_965D","oa":38493},{"a":38479,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":38481,"t":"code","b":[173,139,3],"m":"lda","o":"fig_frame","oa":907},{"a":38484,"t":"code","b":[201,31],"m":"cmp","o":"#$1F"},{"a":38486,"t":"code","b":[240,1],"m":"beq","o":"b_9659","oa":38489},{"a":38488,"t":"code","b":[136],"m":"dey"},{"a":38489,"l":"b_9659","t":"code","b":[152],"m":"tya","x":[38486]},{"a":38490,"t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731},{"a":38493,"l":"r_965D","t":"code","b":[96],"m":"rts","x":[38469,38477]},{"a":38494,"l":"op_wait_step","c":"Object step: count obj_timer[X] down (op_arm_toggle while it runs); at 0 advance the state, (state + 1) & 3, so 1 -> 2 (open) and 3 -> 0 (closed, with sound request $355F := 1), redraw and go to the next sub-phase.","t":"code","b":[222,221,150],"m":"dec","o":"obj_timer,x","oa":38621},{"a":38497,"t":"code","b":[208,221],"m":"bne","o":"op_arm_toggle","oa":38464},{"a":38499,"l":"j_9663","t":"code","b":[254,205,150],"m":"inc","o":"obj_state,x","oa":38605,"x":[38594]},{"a":38502,"t":"code","b":[189,205,150],"m":"lda","o":"obj_state,x","oa":38605},{"a":38505,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38507,"t":"code","b":[157,205,150],"m":"sta","o":"obj_state,x","oa":38605},{"a":38510,"t":"code","b":[208,5],"m":"bne","o":"b_9675","oa":38517},{"a":38512,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":38514,"t":"code","b":[140,95,53],"m":"sty","o":"snd_oneshot_02","oa":13663},{"a":38517,"l":"b_9675","t":"code","b":[32,237,150],"m":"jsr","o":"draw_object","oa":38637,"x":[38510]},{"a":38520,"t":"code","b":[76,176,149],"m":"jmp","o":"next_subphase","oa":38320},{"a":38523,"l":"op_divider","c":"Count $47AA up and return its low 3 bits: zero once in 8 calls. op_reach_open, op_reach_close and getup_step act only then.","t":"code","b":[238,170,71],"m":"inc","o":"count_9593","oa":18346,"x":[38150,38230,38262]},{"a":38526,"t":"code","b":[173,170,71],"m":"lda","o":"count_9593","oa":18346},{"a":38529,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":38531,"t":"code","b":[96],"m":"rts"},{"a":38532,"l":"obj_spot","c":"Location (index into the location tables $1D36, $1D6D and $1DA4) where he stands to use objects 0-13: $2E, $23, $23, $17, $14, $07, $16, $25, $2A, $13, $15, $0C, $25, $1B. Entry 7, the fire, is used by no stub.","t":"byte","b":[46,35,35,23,20,7,22,37],"x":[38328,38339,38347]},{"a":38540,"t":"byte","b":[42,19,21,12,37,27]},{"a":38546,"l":"open_here_stubs","c":"In-place open stubs, LDX #object, A := 14 and obj_select: $9692 bookcase cupboard 13 (phase 15 of activity 26, table at $27B8), $9696 front door 0, $969A upstairs closet 5, $969E bedroom closet 4, $96A2 bathroom door 3. The door opens where it is, with no walk and no pose.","t":"code","b":[162,13],"m":"ldx","o":"#$0D"},{"a":38548,"t":"code","b":[208,14],"m":"bne","o":"b_96A4","oa":38564},{"a":38550,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":38552,"t":"code","b":[240,10],"m":"beq","o":"b_96A4","oa":38564},{"a":38554,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":38556,"t":"code","b":[208,6],"m":"bne","o":"b_96A4","oa":38564},{"a":38558,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":38560,"t":"code","b":[208,2],"m":"bne","o":"b_96A4","oa":38564},{"a":38562,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":38564,"l":"b_96A4","t":"code","b":[169,14],"m":"lda","o":"#$0E","x":[38548,38552,38556,38560]},{"a":38566,"t":"code","b":[76,120,148],"m":"jmp","o":"obj_select","oa":38008},{"a":38569,"l":"close_here_stubs","c":"In-place close stubs, A := 17 and obj_select: $96A9 front door 0, $96AD upstairs closet 5, $96B1 bedroom closet 4, $96B5 bathroom door 3.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":38571,"t":"code","b":[240,10],"m":"beq","o":"b_96B7","oa":38583},{"a":38573,"t":"code","b":[162,5],"m":"ldx","o":"#$05"},{"a":38575,"t":"code","b":[208,6],"m":"bne","o":"b_96B7","oa":38583},{"a":38577,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":38579,"t":"code","b":[208,2],"m":"bne","o":"b_96B7","oa":38583},{"a":38581,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":38583,"l":"b_96B7","t":"code","b":[169,17],"m":"lda","o":"#$11","x":[38571,38575,38579]},{"a":38585,"t":"code","b":[76,120,148],"m":"jmp","o":"obj_select","oa":38008},{"a":38588,"l":"r_96BC","t":"code","b":[96],"m":"rts","x":[38592]},{"a":38589,"l":"op_wait_plain","c":"Object step of the in-place operations: count obj_timer[X] down and at 0 advance the state and redraw as op_wait_step does.","t":"code","b":[222,221,150],"m":"dec","o":"obj_timer,x","oa":38621},{"a":38592,"t":"code","b":[208,250],"m":"bne","o":"r_96BC","oa":38588},{"a":38594,"t":"code","b":[76,99,150],"m":"jmp","o":"j_9663","oa":38499},{"a":38597,"l":"odds_masks","c":"Masks for the random open and close odds, indexed by the low 3 bits of $0369: $01, $03, $07, $0F, $1F, $3F, $7F, $FF.","t":"byte","b":[1,3,7,15,31,63,127,255],"x":[38042,38071]},{"a":38605,"l":"obj_state","c":"State of each of the 16 house objects (index = object number). Doors, drawers and cupboards: 0 closed, 1 half open (opening), 2 open, 3 half open (closing). Fire (7): flame frame 0-3, 4 no fire. Petting arm (14): 0 in, 1-3 further out. Petting hand (15): 0 or 1. draw_object shows entry [state] of the object's frame list. All 0 in every snapshot.","t":"byte","b":[0,0,0,0,0,0,0],"x":[37999,38021,38421,38438,38450,38499,38502,38507,38671]},{"a":38612,"l":"fire_state","c":"obj_state entry 7, the fire's frame, written by address by fire_flicker and fire_out.","t":"byte","b":[0,0,0,0,0,0,0],"x":[38725,38735,38745]},{"a":38619,"l":"pet_arm_state","c":"obj_state entry 14, the petting arm's frame, written by petting_anim.","t":"byte","b":[0],"x":[38786,38812,38817]},{"a":38620,"l":"pet_hand_state","c":"obj_state entry 15, the petting hand's frame, written by petting_anim.","t":"byte","b":[0],"x":[38851]},{"a":38621,"l":"obj_timer","c":"Countdown per object, 16 bytes: loaded with 8 when a door or drawer starts to move and counted by op_wait_step and op_wait_plain. Its first byte (object 0, the front door) doubles as the stereo's animation frame counter: $2DB4 and $2DC5-$2DCD cycle it 0-3 while $2B45 is set (2 in play-01, when the stereo was playing).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[11700,11717,11720,11725,38455,38464,38494,38589]},{"a":38629,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38637,"l":"draw_object","c":"Draw house object X (0-15) in its current state: patches the colour-matrix address obj_scr into the STA at $3E8A and the colour-RAM address obj_col into the STA at $3E96, points $18/$19 at the object's frame list (obj_frames), takes entry obj_state[X] of the list into the operand of copy_frame_record, which loads the 6-byte frame record into $18-$1D, sets the bitmap address $1E/$1F from obj_bmp, Y := obj_width and X := obj_rows_m1, and draws the rows (draw_rows).","t":"code","b":[189,240,151],"m":"lda","o":"obj_scr_lo,x","oa":38896,"x":[38461,38517,38740,38750,38798,38822,38871]},{"a":38640,"t":"code","b":[141,139,62],"m":"sta","o":"row_matrix_dest_lo","oa":16011},{"a":38643,"t":"code","b":[189,0,152],"m":"lda","o":"obj_scr_hi,x","oa":38912},{"a":38646,"t":"code","b":[141,140,62],"m":"sta","o":"row_matrix_dest_hi","oa":16012},{"a":38649,"t":"code","b":[189,16,152],"m":"lda","o":"obj_col_lo,x","oa":38928},{"a":38652,"t":"code","b":[141,151,62],"m":"sta","o":"row_colour_dest_lo","oa":16023},{"a":38655,"t":"code","b":[189,32,152],"m":"lda","o":"obj_col_hi,x","oa":38944},{"a":38658,"t":"code","b":[141,152,62],"m":"sta","o":"row_colour_dest_hi","oa":16024},{"a":38661,"t":"code","b":[189,48,152],"m":"lda","o":"obj_frames_lo,x","oa":38960},{"a":38664,"t":"code","b":[133,24],"m":"sta","o":"tmp_ptr_a","oa":24},{"a":38666,"t":"code","b":[189,64,152],"m":"lda","o":"obj_frames_hi,x","oa":38976},{"a":38669,"t":"code","b":[133,25],"m":"sta","o":"tmp_ptr_a_hi","oa":25},{"a":38671,"t":"code","b":[189,205,150],"m":"lda","o":"obj_state,x","oa":38605},{"a":38674,"t":"code","b":[10],"m":"asl","o":"a"},{"a":38675,"t":"code","b":[168],"m":"tay"},{"a":38676,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":38678,"t":"code","b":[141,211,153],"m":"sta","o":"frame_rec_lo","oa":39379},{"a":38681,"t":"code","b":[200],"m":"iny"},{"a":38682,"t":"code","b":[177,24],"m":"lda","o":"(tmp_ptr_a),y","oa":24},{"a":38684,"t":"code","b":[141,212,153],"m":"sta","o":"frame_rec_hi","oa":39380},{"a":38687,"t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":38689,"t":"code","b":[32,210,153],"m":"jsr","o":"copy_frame_record","oa":39378},{"a":38692,"t":"code","b":[189,115,152],"m":"lda","o":"obj_bmp_lo,x","oa":39027},{"a":38695,"t":"code","b":[133,30],"m":"sta","o":"tmp_ptr_d","oa":30},{"a":38697,"t":"code","b":[189,131,152],"m":"lda","o":"obj_bmp_hi,x","oa":39043},{"a":38700,"t":"code","b":[133,31],"m":"sta","o":"tmp_ptr_d_hi","oa":31},{"a":38702,"t":"code","b":[188,80,152],"m":"ldy","o":"obj_width,x","oa":38992},{"a":38705,"t":"code","b":[189,99,152],"m":"lda","o":"obj_rows_m1,x","oa":39011},{"a":38708,"t":"code","b":[170],"m":"tax"},{"a":38709,"t":"code","b":[76,203,153],"m":"jmp","o":"draw_rows","oa":39371},{"a":38712,"l":"r_9738","t":"code","b":[96],"m":"rts","x":[38718]},{"a":38713,"l":"fire_flicker","c":"Called from $2CA7 on every main-loop pass while $2B49 (the fire's remaining burn count) is non-zero. $AF8B, phase 25 of activity 7, adds 1 to that count; parser rules $C98A (LIGHT/START/MAKE/BURN/IGNITE with FIRE), $C99A (YOU with SEEM/LOOK/APPEAR and CHILLY/COLD) and $C9AA (PLAY/PERFORM/USE/TRY with FIRE) name activity 7. Every 8th pass ($09DB & 7 = 0) pick a random flame frame 0-3, one higher (mod 4) if it equals fire_state, store it and redraw the fire (object 7).","t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523,"x":[11431]},{"a":38716,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":38718,"t":"code","b":[208,248],"m":"bne","o":"r_9738","oa":38712},{"a":38720,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":38723,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38725,"t":"code","b":[205,212,150],"m":"cmp","o":"fire_state","oa":38612},{"a":38728,"t":"code","b":[208,5],"m":"bne","o":"b_974F","oa":38735},{"a":38730,"t":"code","b":[24],"m":"clc"},{"a":38731,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":38733,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38735,"l":"b_974F","t":"code","b":[141,212,150],"m":"sta","o":"fire_state","oa":38612,"x":[38728]},{"a":38738,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":38740,"t":"code","b":[76,237,150],"m":"jmp","o":"draw_object","oa":38637},{"a":38743,"l":"fire_out","c":"Called from $2CC6 when the burn count $2B49 runs out: fire_state := 4, the empty-grate frame, and redraw object 7.","t":"code","b":[169,4],"m":"lda","o":"#$04","x":[11462]},{"a":38745,"t":"code","b":[141,212,150],"m":"sta","o":"fire_state","oa":38612},{"a":38748,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":38750,"t":"code","b":[76,237,150],"m":"jmp","o":"draw_object","oa":38637},{"a":38753,"l":"r_9761","t":"code","b":[96],"m":"rts","x":[38762,38776,38804,38809,38828,38840,38877,38889]},{"a":38754,"l":"petting_anim","c":"The petting animation, called from $2CCE on every main-loop pass while the phase $2B46 is non-zero; counts $2B47 down and acts on every 4th count. Phase 3: the arm (object 14) comes out, frames 0-3, redrawn every 8 counts, then phase 2 with $2B47 := $20. Phase 2: the hand (object 15) pats, its two frames alternating every 8 counts, and every 16 counts $3577 := 0 and $3576 := 1; then phase 1 with $2B47 := $18. Phase 1: the arm goes back in, frames 3-0, then phase 0. CTRL P with the person at the easy chair starts it, or lengthens or reverses it ($2C3C-$2C7C).","t":"code","b":[206,71,43],"m":"dec","o":"pet_count","oa":11079,"x":[11470]},{"a":38757,"t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079},{"a":38760,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38762,"t":"code","b":[208,245],"m":"bne","o":"r_9761","oa":38753},{"a":38764,"t":"code","b":[173,70,43],"m":"lda","o":"pet_phase","oa":11078},{"a":38767,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":38769,"t":"code","b":[240,72],"m":"beq","o":"b_97BB","oa":38843},{"a":38771,"t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079},{"a":38774,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":38776,"t":"code","b":[208,231],"m":"bne","o":"r_9761","oa":38753},{"a":38778,"t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079},{"a":38781,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":38782,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":38783,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":38784,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":38786,"t":"code","b":[141,219,150],"m":"sta","o":"pet_arm_state","oa":38619},{"a":38789,"t":"code","b":[173,70,43],"m":"lda","o":"pet_phase","oa":11078},{"a":38792,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":38794,"t":"code","b":[240,16],"m":"beq","o":"b_979C","oa":38812},{"a":38796,"t":"code","b":[162,14],"m":"ldx","o":"#$0E"},{"a":38798,"t":"code","b":[32,237,150],"m":"jsr","o":"draw_object","oa":38637},{"a":38801,"t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079},{"a":38804,"t":"code","b":[208,203],"m":"bne","o":"r_9761","oa":38753},{"a":38806,"t":"code","b":[141,70,43],"m":"sta","o":"pet_phase","oa":11078},{"a":38809,"t":"code","b":[76,97,151],"m":"jmp","o":"r_9761","oa":38753},{"a":38812,"l":"b_979C","t":"code","b":[173,219,150],"m":"lda","o":"pet_arm_state","oa":38619,"x":[38794]},{"a":38815,"t":"code","b":[73,3],"m":"eor","o":"#$03"},{"a":38817,"t":"code","b":[141,219,150],"m":"sta","o":"pet_arm_state","oa":38619},{"a":38820,"t":"code","b":[162,14],"m":"ldx","o":"#$0E"},{"a":38822,"t":"code","b":[32,237,150],"m":"jsr","o":"draw_object","oa":38637},{"a":38825,"t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079},{"a":38828,"t":"code","b":[208,179],"m":"bne","o":"r_9761","oa":38753},{"a":38830,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":38832,"t":"code","b":[141,70,43],"m":"sta","o":"pet_phase","oa":11078},{"a":38835,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":38837,"t":"code","b":[141,71,43],"m":"sta","o":"pet_count","oa":11079},{"a":38840,"t":"code","b":[76,97,151],"m":"jmp","o":"r_9761","oa":38753},{"a":38843,"l":"b_97BB","t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079,"x":[38769]},{"a":38846,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":38847,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":38848,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":38849,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":38851,"t":"code","b":[141,220,150],"m":"sta","o":"pet_hand_state","oa":38620},{"a":38854,"t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079},{"a":38857,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":38859,"t":"code","b":[208,8],"m":"bne","o":"b_97D5","oa":38869},{"a":38861,"t":"code","b":[141,119,53],"m":"sta","o":"snd_req_23","oa":13687},{"a":38864,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":38866,"t":"code","b":[141,118,53],"m":"sta","o":"snd_req_22","oa":13686},{"a":38869,"l":"b_97D5","t":"code","b":[162,15],"m":"ldx","o":"#$0F","x":[38859]},{"a":38871,"t":"code","b":[32,237,150],"m":"jsr","o":"draw_object","oa":38637},{"a":38874,"t":"code","b":[173,71,43],"m":"lda","o":"pet_count","oa":11079},{"a":38877,"t":"code","b":[208,130],"m":"bne","o":"r_9761","oa":38753},{"a":38879,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":38881,"t":"code","b":[141,70,43],"m":"sta","o":"pet_phase","oa":11078},{"a":38884,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":38886,"t":"code","b":[141,71,43],"m":"sta","o":"pet_count","oa":11079},{"a":38889,"t":"code","b":[76,97,151],"m":"jmp","o":"r_9761","oa":38753},{"a":38892,"l":"unused_97EC","c":"Four bytes, $08 $08 $3C $08, just before obj_scr_lo; no reference to $97EC-$97EF was found.","t":"byte","b":[8,8,60,8]},{"a":38896,"l":"obj_scr_lo","c":"Colour-matrix address of each house object's top-left cell, objects 0-15, low bytes (obj_scr_hi has the high bytes); draw_object patches it into the STA at $3E8A. Address (row, column): 0 $5F1C (19,36), 1 $5EFB (19,3), 2 $5F23 (20,3), 3 $5DCF (11,23), 4 $5DC1 (11,9), 5 $5C8E (3,22), 6 $5DCD (11,21), 7 $5F69 (21,33), 8 $5F87 (22,23), 9 $5E36 (14,6), 10 $5E3C (14,12), 11 $5D10 (6,32), 12 $5F4E (21,6), 13 $5E26 (13,30), 14 $5F37 (20,23), 15 $5F3B (20,27).","t":"byte","b":[28,251,35,207,193,142,205,105],"x":[38637]},{"a":38904,"t":"byte","b":[135,54,60,16,78,38,55,59]},{"a":38912,"l":"obj_scr_hi","c":"High bytes ($5C-$5F) of the colour-matrix addresses in obj_scr_lo.","t":"byte","b":[95,94,95,93,93,92,93,95],"x":[38643]},{"a":38920,"t":"byte","b":[95,94,94,93,95,94,95,95]},{"a":38928,"l":"obj_col_lo","c":"Colour-RAM address of each object's top-left cell, low bytes: the same cells as obj_scr_lo, at $D800 plus the same offset. draw_object patches it into the STA at $3E96.","t":"byte","b":[28,251,35,207,193,142,205,105],"x":[38649]},{"a":38936,"t":"byte","b":[135,54,60,16,78,38,55,59]},{"a":38944,"l":"obj_col_hi","c":"High bytes ($D8-$DB) of the colour-RAM addresses in obj_col_lo.","t":"byte","b":[219,218,219,217,217,216,217,219],"x":[38655]},{"a":38952,"t":"byte","b":[219,218,218,217,219,218,219,219]},{"a":38960,"l":"obj_frames_lo","c":"Split low/high pointers to each object's frame list (low bytes here, high bytes from obj_frames_hi at $9840). Objects 4 and 5 share one list; the lists of the fire, the petting arm and the petting hand (7, 14, 15) come after the drawing code, at $99F4, $9A10 and $9A30.","t":"byte","b":[107,115,123,131,139,139,147,244],"d":["frames_front_door","frames_fridge","frames_freezer","frames_bath_door","frames_white_door","frames_white_door","frames_mirror_cabinet","frames_fire","frames_phone_table","frames_nightstand","frames_dresser","frames_filing_cabinet","frames_kitchen_cabinet","frames_bookcase_cupboard","frames_pet_arm","frames_pet_hand"],"note":"split table: 16 lo/hi pointers","x":[38661]},{"a":38968,"t":"byte","b":[155,163,171,179,187,195,16,48]},{"a":38976,"l":"obj_frames_hi","c":"High bytes of the frame-list pointers, the second half of the split table that starts at obj_frames_lo.","t":"byte","b":[153,153,153,153,153,153,153,153],"x":[38666]},{"a":38984,"t":"byte","b":[153,153,153,153,153,153,154,154]},{"a":38992,"l":"obj_width","c":"Width of each object in character cells, objects 0-15 (draw_object passes it to $3EA6 in Y): 3, 3, 3, 3, 3, 3, 2, 2, 4, 3, 5, 3, 2, 2, 6, 2.","t":"byte","b":[3,3,3,3,3,3,2,2],"x":[38702]},{"a":39000,"t":"byte","b":[4,3,5,3,2,2,6,2]},{"a":39008,"l":"unused_9860","c":"Three bytes, $02 $04 $06, between obj_width and obj_rows_m1; no reference to $9860-$9862 was found.","t":"byte","b":[2,4,6]},{"a":39011,"l":"obj_rows_m1","c":"Height of each object in cell rows minus one, objects 0-15 (draw_rows draws X+1 rows): 4, 2, 3, 4, 4, 4, 2, 1, 0, 0, 0, 1, 2, 2, 0, 0.","t":"byte","b":[4,2,3,4,4,4,2,1],"x":[38705]},{"a":39019,"t":"byte","b":[0,0,0,1,2,2,0,0]},{"a":39027,"l":"obj_bmp_lo","c":"Bitmap address of each object's top-left cell ($6000 + row*320 + column*8), low bytes (obj_bmp_hi has the high bytes); draw_object puts it in $1E/$1F. Addresses: 0 $78E0, 1 $77D8, 2 $7918, 3 $6E78, 4 $6E08, 5 $6470, 6 $6E68, 7 $7B48, 8 $7C38, 9 $71B0, 10 $71E0, 11 $6880, 12 $7A70, 13 $7130, 14 $79B8, 15 $79D8.","t":"byte","b":[224,216,24,120,8,112,104,72],"x":[38692]},{"a":39035,"t":"byte","b":[56,176,224,128,112,48,184,216]},{"a":39043,"l":"obj_bmp_hi","c":"High bytes ($64-$7C) of the bitmap addresses in obj_bmp_lo.","t":"byte","b":[120,119,121,110,110,100,110,123],"x":[38697]},{"a":39051,"t":"byte","b":[124,113,113,104,122,113,121,121]},{"a":39059,"l":"fr_front_door_0","c":"Frame record: front door (ground floor, right), frame 0 (closed), 3x5 cells. Words: colour-RAM data $A6A6, colour-matrix data $A544, bitmap data $9A34; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[166,166,68,165,52,154],"d":[42662,42308,39476],"x":[39275]},{"a":39065,"l":"fr_front_door_1","c":"Frame record: front door (ground floor, right), frame 1 (half open), 3x5 cells. Words: colour-RAM data $A6B5, colour-matrix data $A553, bitmap data $9AAC; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[181,166,83,165,172,154],"d":[42677,42323,39596],"x":[39277,39281]},{"a":39071,"l":"fr_front_door_2","c":"Frame record: front door (ground floor, right), frame 2 (open), 3x5 cells. Words: colour-RAM data $A6C4, colour-matrix data $A562, bitmap data $9B24; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[196,166,98,165,36,155],"d":[42692,42338,39716],"x":[39279]},{"a":39077,"l":"fr_fridge_0","c":"Frame record: fridge door (the upper door of the kitchen fridge), frame 0 (closed), 3x3 cells. Words: colour-RAM data $A6D3, colour-matrix data $A571, bitmap data $9B9C; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[211,166,113,165,156,155],"d":[42707,42353,39836],"x":[39283]},{"a":39083,"l":"fr_fridge_1","c":"Frame record: fridge door (the upper door of the kitchen fridge), frame 1 (half open), 3x3 cells. Words: colour-RAM data $A6DC, colour-matrix data $A57A, bitmap data $9BE4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[220,166,122,165,228,155],"d":[42716,42362,39908],"x":[39285,39289]},{"a":39089,"l":"fr_fridge_2","c":"Frame record: fridge door (the upper door of the kitchen fridge), frame 2 (open), 3x3 cells. Words: colour-RAM data $A6E5, colour-matrix data $A583, bitmap data $9C2C; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[229,166,131,165,44,156],"d":[42725,42371,39980],"x":[39287]},{"a":39095,"l":"fr_freezer_0","c":"Frame record: freezer door (the lower door of the kitchen fridge), frame 0 (closed), 3x4 cells. Words: colour-RAM data $A6EE, colour-matrix data $A58C, bitmap data $9C74; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[238,166,140,165,116,156],"d":[42734,42380,40052],"x":[39291]},{"a":39101,"l":"fr_freezer_1","c":"Frame record: freezer door (the lower door of the kitchen fridge), frame 1 (half open), 3x4 cells. Words: colour-RAM data $A6FA, colour-matrix data $A598, bitmap data $9CD4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[250,166,152,165,212,156],"d":[42746,42392,40148],"x":[39293,39297]},{"a":39107,"l":"fr_freezer_2","c":"Frame record: freezer door (the lower door of the kitchen fridge), frame 2 (open), 3x4 cells. Words: colour-RAM data $A706, colour-matrix data $A5A4, bitmap data $9D34; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[6,167,164,165,52,157],"d":[42758,42404,40244],"x":[39295]},{"a":39113,"l":"fr_bath_door_0","c":"Frame record: pink door in the bathroom (middle floor), frame 0 (closed), 3x5 cells. Words: colour-RAM data $A712, colour-matrix data $A5B0, bitmap data $9D94; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[18,167,176,165,148,157],"d":[42770,42416,40340],"x":[39299]},{"a":39119,"l":"fr_bath_door_1","c":"Frame record: pink door in the bathroom (middle floor), frame 1 (half open), 3x5 cells. Words: colour-RAM data $A721, colour-matrix data $A5BF, bitmap data $9E0C; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[33,167,191,165,12,158],"d":[42785,42431,40460],"x":[39301,39305]},{"a":39125,"l":"fr_bath_door_2","c":"Frame record: pink door in the bathroom (middle floor), frame 2 (open), 3x5 cells. Words: colour-RAM data $A730, colour-matrix data $A5CE, bitmap data $9E84; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[48,167,206,165,132,158],"d":[42800,42446,40580],"x":[39303]},{"a":39131,"l":"fr_white_door_0","c":"Frame record: white closet doors (the bedroom closet, object 4, and the upstairs closet, object 5), frame 0 (closed), 3x5 cells. Words: colour-RAM data $A73F, colour-matrix data $A5DD, bitmap data $9EFC; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D. copy_frame_record's operand ($99D3) held this address in play-01 and play-02, the last frame drawn.","t":"word","b":[63,167,221,165,252,158],"d":[42815,42461,40700],"x":[39307,39378]},{"a":39137,"l":"fr_white_door_1","c":"Frame record: white closet doors (the bedroom closet, object 4, and the upstairs closet, object 5), frame 1 (half open), 3x5 cells. Words: colour-RAM data $A74E, colour-matrix data $A5EC, bitmap data $9F74; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[78,167,236,165,116,159],"d":[42830,42476,40820],"x":[39309,39313]},{"a":39143,"l":"fr_white_door_2","c":"Frame record: white closet doors (the bedroom closet, object 4, and the upstairs closet, object 5), frame 2 (open), 3x5 cells. Words: colour-RAM data $A75D, colour-matrix data $A5FB, bitmap data $9FEC; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[93,167,251,165,236,159],"d":[42845,42491,40940],"x":[39311]},{"a":39149,"l":"fr_mirror_cabinet_0","c":"Frame record: mirror cabinet over the bathroom sink, frame 0 (closed), 2x3 cells. Words: colour-RAM data $A76C, colour-matrix data $A60A, bitmap data $A064; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[108,167,10,166,100,160],"d":[42860,42506,41060],"x":[39315]},{"a":39155,"l":"fr_mirror_cabinet_1","c":"Frame record: mirror cabinet over the bathroom sink, frame 1 (half open), 2x3 cells. Words: colour-RAM data $A772, colour-matrix data $A610, bitmap data $A094; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[114,167,16,166,148,160],"d":[42866,42512,41108],"x":[39317,39321]},{"a":39161,"l":"fr_mirror_cabinet_2","c":"Frame record: mirror cabinet over the bathroom sink, frame 2 (open), 2x3 cells. Words: colour-RAM data $A778, colour-matrix data $A616, bitmap data $A0C4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[120,167,22,166,196,160],"d":[42872,42518,41156],"x":[39319]},{"a":39167,"l":"fr_phone_table_0","c":"Frame record: drawer of the little green table under the telephone (ground floor, between the stairs and the easy chair), frame 0 (closed), 4x1 cells. Words: colour-RAM data $A77E, colour-matrix data $A61C, bitmap data $A0F4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[126,167,28,166,244,160],"d":[42878,42524,41204],"x":[39323]},{"a":39173,"l":"fr_phone_table_1","c":"Frame record: drawer of the little green table under the telephone (ground floor, between the stairs and the easy chair), frame 1 (half open), 4x1 cells. Words: colour-RAM data $A782, colour-matrix data $A620, bitmap data $A114; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[130,167,32,166,20,161],"d":[42882,42528,41236],"x":[39325,39329]},{"a":39179,"l":"fr_phone_table_2","c":"Frame record: drawer of the little green table under the telephone (ground floor, between the stairs and the easy chair), frame 2 (open), 4x1 cells. Words: colour-RAM data $A786, colour-matrix data $A624, bitmap data $A134; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[134,167,36,166,52,161],"d":[42886,42532,41268],"x":[39327]},{"a":39185,"l":"fr_nightstand_0","c":"Frame record: nightstand drawer (bedroom), frame 0 (closed), 3x1 cells. Words: colour-RAM data $A79C, colour-matrix data $A63A, bitmap data $A1E4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[156,167,58,166,228,161],"d":[42908,42554,41444],"x":[39331]},{"a":39191,"l":"fr_nightstand_1","c":"Frame record: nightstand drawer (bedroom), frame 1 (half open), 3x1 cells. Words: colour-RAM data $A79F, colour-matrix data $A63D, bitmap data $A1FC; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[159,167,61,166,252,161],"d":[42911,42557,41468],"x":[39333,39337]},{"a":39197,"l":"fr_nightstand_2","c":"Frame record: nightstand drawer (bedroom), frame 2 (open), 3x1 cells. Words: colour-RAM data $A7A2, colour-matrix data $A640, bitmap data $A214; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[162,167,64,166,20,162],"d":[42914,42560,41492],"x":[39335]},{"a":39203,"l":"fr_dresser_0","c":"Frame record: dresser drawer (bedroom), frame 0 (closed), 5x1 cells. Words: colour-RAM data $A7A5, colour-matrix data $A643, bitmap data $A22C; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[165,167,67,166,44,162],"d":[42917,42563,41516],"x":[39339]},{"a":39209,"l":"fr_dresser_1","c":"Frame record: dresser drawer (bedroom), frame 1 (half open), 5x1 cells. Words: colour-RAM data $A7AA, colour-matrix data $A648, bitmap data $A254; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[170,167,72,166,84,162],"d":[42922,42568,41556],"x":[39341,39345]},{"a":39215,"l":"fr_dresser_2","c":"Frame record: dresser drawer (bedroom), frame 2 (open), 5x1 cells. Words: colour-RAM data $A7AF, colour-matrix data $A64D, bitmap data $A27C; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[175,167,77,166,124,162],"d":[42927,42573,41596],"x":[39343]},{"a":39221,"l":"fr_filing_cabinet_0","c":"Frame record: filing-cabinet drawer (top floor, right), frame 0 (closed), 3x2 cells. Words: colour-RAM data $A7C6, colour-matrix data $A664, bitmap data $A334; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[198,167,100,166,52,163],"d":[42950,42596,41780],"x":[39347]},{"a":39227,"l":"fr_filing_cabinet_1","c":"Frame record: filing-cabinet drawer (top floor, right), frame 1 (half open), 3x2 cells. Words: colour-RAM data $A7CC, colour-matrix data $A66A, bitmap data $A364; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[204,167,106,166,100,163],"d":[42956,42602,41828],"x":[39349,39353]},{"a":39233,"l":"fr_filing_cabinet_2","c":"Frame record: filing-cabinet drawer (top floor, right), frame 2 (open), 3x2 cells. Words: colour-RAM data $A7D2, colour-matrix data $A670, bitmap data $A394; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[210,167,112,166,148,163],"d":[42962,42608,41876],"x":[39351]},{"a":39239,"l":"fr_kitchen_cabinet_0","c":"Frame record: kitchen cabinet door (under the counter, beside the fridge), frame 0 (closed), 2x3 cells. Words: colour-RAM data $A78D, colour-matrix data $A628, bitmap data $A154; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[141,167,40,166,84,161],"d":[42893,42536,41300],"x":[39355]},{"a":39245,"l":"fr_kitchen_cabinet_1","c":"Frame record: kitchen cabinet door (under the counter, beside the fridge), frame 1 (half open), 2x3 cells. Words: colour-RAM data $A793, colour-matrix data $A62E, bitmap data $A184; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[147,167,46,166,132,161],"d":[42899,42542,41348],"x":[39357,39361]},{"a":39251,"l":"fr_kitchen_cabinet_2","c":"Frame record: kitchen cabinet door (under the counter, beside the fridge), frame 2 (open), 2x3 cells. Words: colour-RAM data $A799, colour-matrix data $A634, bitmap data $A1B4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[153,167,52,166,180,161],"d":[42905,42548,41396],"x":[39359]},{"a":39257,"l":"fr_bookcase_cupboard_0","c":"Frame record: bookcase cupboard (middle floor, right), frame 0 (closed), 2x3 cells. Words: colour-RAM data $A7B4, colour-matrix data $A652, bitmap data $A2A4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[180,167,82,166,164,162],"d":[42932,42578,41636],"x":[39363]},{"a":39263,"l":"fr_bookcase_cupboard_1","c":"Frame record: bookcase cupboard (middle floor, right), frame 1 (half open), 2x3 cells. Words: colour-RAM data $A7BA, colour-matrix data $A658, bitmap data $A2D4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[186,167,88,166,212,162],"d":[42938,42584,41684],"x":[39365,39369]},{"a":39269,"l":"fr_bookcase_cupboard_2","c":"Frame record: bookcase cupboard (middle floor, right), frame 2 (open), 2x3 cells. Words: colour-RAM data $A7C0, colour-matrix data $A65E, bitmap data $A304; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[192,167,94,166,4,163],"d":[42944,42590,41732],"x":[39367]},{"a":39275,"l":"frames_front_door","c":"Frame list of the front door (ground floor, right): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2.","t":"addr","b":[147,152],"oa":39059,"o":"fr_front_door_0","x":[38960]},{"a":39277,"t":"addr","b":[153,152],"oa":39065,"o":"fr_front_door_1"},{"a":39279,"t":"addr","b":[159,152],"oa":39071,"o":"fr_front_door_2"},{"a":39281,"t":"addr","b":[153,152],"oa":39065,"o":"fr_front_door_1"},{"a":39283,"l":"frames_fridge","c":"Frame list of the fridge door (the upper door of the kitchen fridge): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2. Parser rule $CB5A (WHAT/IN with REFRIGERATOR or FRIDGE) queues activity 66, which opens this door.","t":"addr","b":[165,152],"oa":39077,"o":"fr_fridge_0","x":[38961]},{"a":39285,"t":"addr","b":[171,152],"oa":39083,"o":"fr_fridge_1"},{"a":39287,"t":"addr","b":[177,152],"oa":39089,"o":"fr_fridge_2"},{"a":39289,"t":"addr","b":[171,152],"oa":39083,"o":"fr_fridge_1"},{"a":39291,"l":"frames_freezer","c":"Frame list of the freezer door (the lower door of the kitchen fridge): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2. Parser rule $CB4A (WHAT/IN with FREEZER) queues activity 68, which opens this door.","t":"addr","b":[183,152],"oa":39095,"o":"fr_freezer_0","x":[38962]},{"a":39293,"t":"addr","b":[189,152],"oa":39101,"o":"fr_freezer_1"},{"a":39295,"t":"addr","b":[195,152],"oa":39107,"o":"fr_freezer_2"},{"a":39297,"t":"addr","b":[189,152],"oa":39101,"o":"fr_freezer_1"},{"a":39299,"l":"frames_bath_door","c":"Frame list of the pink door in the bathroom (middle floor): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2.","t":"addr","b":[201,152],"oa":39113,"o":"fr_bath_door_0","x":[38963]},{"a":39301,"t":"addr","b":[207,152],"oa":39119,"o":"fr_bath_door_1"},{"a":39303,"t":"addr","b":[213,152],"oa":39125,"o":"fr_bath_door_2"},{"a":39305,"t":"addr","b":[207,152],"oa":39119,"o":"fr_bath_door_1"},{"a":39307,"l":"frames_white_door","c":"Frame list of the white closet doors (the bedroom closet, object 4, and the upstairs closet, object 5): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2. Parser rules $CB1A (BEDROOM CLOSET) and $CB0A (UPSTAIRS CLOSET) queue activities 13 and 12, whose scripts open doors 4 and 5.","t":"addr","b":[219,152],"oa":39131,"o":"fr_white_door_0","x":[38964,38965]},{"a":39309,"t":"addr","b":[225,152],"oa":39137,"o":"fr_white_door_1"},{"a":39311,"t":"addr","b":[231,152],"oa":39143,"o":"fr_white_door_2"},{"a":39313,"t":"addr","b":[225,152],"oa":39137,"o":"fr_white_door_1"},{"a":39315,"l":"frames_mirror_cabinet","c":"Frame list of the mirror cabinet over the bathroom sink: 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2.","t":"addr","b":[237,152],"oa":39149,"o":"fr_mirror_cabinet_0","x":[38966]},{"a":39317,"t":"addr","b":[243,152],"oa":39155,"o":"fr_mirror_cabinet_1"},{"a":39319,"t":"addr","b":[249,152],"oa":39161,"o":"fr_mirror_cabinet_2"},{"a":39321,"t":"addr","b":[243,152],"oa":39155,"o":"fr_mirror_cabinet_1"},{"a":39323,"l":"frames_phone_table","c":"Frame list of the drawer of the little green table under the telephone (ground floor, between the stairs and the easy chair): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2.","t":"addr","b":[255,152],"oa":39167,"o":"fr_phone_table_0","x":[38968]},{"a":39325,"t":"addr","b":[5,153],"oa":39173,"o":"fr_phone_table_1"},{"a":39327,"t":"addr","b":[11,153],"oa":39179,"o":"fr_phone_table_2"},{"a":39329,"t":"addr","b":[5,153],"oa":39173,"o":"fr_phone_table_1"},{"a":39331,"l":"frames_nightstand","c":"Frame list of the nightstand drawer (bedroom): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2. Parser rule $CB7A (WHAT/IN with NIGHTSTAND) queues activity 106, which opens this drawer.","t":"addr","b":[17,153],"oa":39185,"o":"fr_nightstand_0","x":[38969]},{"a":39333,"t":"addr","b":[23,153],"oa":39191,"o":"fr_nightstand_1"},{"a":39335,"t":"addr","b":[29,153],"oa":39197,"o":"fr_nightstand_2"},{"a":39337,"t":"addr","b":[23,153],"oa":39191,"o":"fr_nightstand_1"},{"a":39339,"l":"frames_dresser","c":"Frame list of the dresser drawer (bedroom): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2. Parser rule $CB6A (WHAT/IN with DRESSER) queues activity 105, which opens this drawer.","t":"addr","b":[35,153],"oa":39203,"o":"fr_dresser_0","x":[38970]},{"a":39341,"t":"addr","b":[41,153],"oa":39209,"o":"fr_dresser_1"},{"a":39343,"t":"addr","b":[47,153],"oa":39215,"o":"fr_dresser_2"},{"a":39345,"t":"addr","b":[41,153],"oa":39209,"o":"fr_dresser_1"},{"a":39347,"l":"frames_filing_cabinet","c":"Frame list of the filing-cabinet drawer (top floor, right): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2. Parser rule $CB3A (WHAT/IN with FILING and CABINET) queues activity 23, which opens this drawer.","t":"addr","b":[53,153],"oa":39221,"o":"fr_filing_cabinet_0","x":[38971]},{"a":39349,"t":"addr","b":[59,153],"oa":39227,"o":"fr_filing_cabinet_1"},{"a":39351,"t":"addr","b":[65,153],"oa":39233,"o":"fr_filing_cabinet_2"},{"a":39353,"t":"addr","b":[59,153],"oa":39227,"o":"fr_filing_cabinet_1"},{"a":39355,"l":"frames_kitchen_cabinet","c":"Frame list of the kitchen cabinet door (under the counter, beside the fridge): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2. Parser rule $CB2A (WHAT/IN with KITCHEN and CABINET) queues activities 60, 62 (opens this door), 39 and 63 (closes it).","t":"addr","b":[71,153],"oa":39239,"o":"fr_kitchen_cabinet_0","x":[38972]},{"a":39357,"t":"addr","b":[77,153],"oa":39245,"o":"fr_kitchen_cabinet_1"},{"a":39359,"t":"addr","b":[83,153],"oa":39251,"o":"fr_kitchen_cabinet_2"},{"a":39361,"t":"addr","b":[77,153],"oa":39245,"o":"fr_kitchen_cabinet_1"},{"a":39363,"l":"frames_bookcase_cupboard","c":"Frame list of the bookcase cupboard (middle floor, right): 4 entries for obj_state 0-3: closed, half open, open, half open again (frames 0, 1, 2, 1). draw_object indexes it with the state times 2.","t":"addr","b":[89,153],"oa":39257,"o":"fr_bookcase_cupboard_0","x":[38973]},{"a":39365,"t":"addr","b":[95,153],"oa":39263,"o":"fr_bookcase_cupboard_1"},{"a":39367,"t":"addr","b":[101,153],"oa":39269,"o":"fr_bookcase_cupboard_2"},{"a":39369,"t":"addr","b":[95,153],"oa":39263,"o":"fr_bookcase_cupboard_1"},{"a":39371,"l":"draw_rows","c":"Draw X+1 rows of an object: JSR $3EA6 once per row, DEX, until X goes negative. $3EA6 copies Y*8 bitmap bytes from ($1C) to ($1E), Y colour-matrix bytes from ($1A) and Y colour-RAM bytes from ($18) to the addresses patched into $3E8A and $3E96, then moves each destination down a row (+320, +40, +40) and each source on by the row it used.","t":"code","b":[32,166,62],"m":"jsr","o":"draw_image_row","oa":16038,"x":[38709,39375]},{"a":39374,"t":"code","b":[202],"m":"dex"},{"a":39375,"t":"code","b":[16,250],"m":"bpl","o":"draw_rows","oa":39371},{"a":39377,"t":"code","b":[96],"m":"rts"},{"a":39378,"l":"copy_frame_record","c":"Copy the 6-byte frame record whose address is in this LDA's own operand (frame_rec_lo/frame_rec_hi, patched by draw_object) into $18-$1D, Y from 5 down to 0: colour-RAM data pointer, colour-matrix data pointer, bitmap data pointer.","t":"code","b":[185,219,152],"m":"lda","o":"fr_white_door_0,y","oa":39131,"x":[38689,39385]},{"a":39379,"t":"note","l":"frame_rec_lo","c":"Low byte of copy_frame_record's LDA operand, written by draw_object at $9716.","note":"inside the item at $99D2","x":[38678]},{"a":39380,"t":"note","l":"frame_rec_hi","c":"High byte of copy_frame_record's LDA operand, written at $971C. The operand was $00FF as loaded and $98DB (fr_white_door_0) in play-01 and play-02.","note":"inside the item at $99D2","x":[38684]},{"a":39381,"t":"code","b":[153,24,0],"m":"sta","o":"tmp_ptr_a,y","oa":24},{"a":39384,"t":"code","b":[136],"m":"dey"},{"a":39385,"t":"code","b":[16,247],"m":"bpl","o":"copy_frame_record","oa":39378},{"a":39387,"t":"code","b":[96],"m":"rts"},{"a":39388,"l":"fr_fire_0","c":"Frame record: fire in the fireplace (ground floor), frame 0 (flames 1), 2x2 cells. Words: colour-RAM data $A7D8, colour-matrix data $A676, bitmap data $A3C4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[216,167,118,166,196,163],"d":[42968,42614,41924],"x":[39412]},{"a":39394,"l":"fr_fire_1","c":"Frame record: fire in the fireplace (ground floor), frame 1 (flames 2), 2x2 cells. Words: colour-RAM data $A7DC, colour-matrix data $A67A, bitmap data $A3E4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[220,167,122,166,228,163],"d":[42972,42618,41956],"x":[39414]},{"a":39400,"l":"fr_fire_2","c":"Frame record: fire in the fireplace (ground floor), frame 2 (flames 3), 2x2 cells. Words: colour-RAM data $A7E0, colour-matrix data $A67E, bitmap data $A404; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[224,167,126,166,4,164],"d":[42976,42622,41988],"x":[39416]},{"a":39406,"l":"fr_fire_3","c":"Frame record: fire in the fireplace (ground floor), frame 3 (flames 4), 2x2 cells. Words: colour-RAM data $A7E4, colour-matrix data $A682, bitmap data $A424; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[228,167,130,166,36,164],"d":[42980,42626,42020],"x":[39418]},{"a":39412,"l":"frames_fire","c":"Frame list of the fire in the fireplace (ground floor): 5 entries for fire_state 0-4 (four flame frames, then the empty grate). draw_object indexes it with the state times 2.","t":"addr","b":[220,153],"oa":39388,"o":"fr_fire_0","x":[38967]},{"a":39414,"t":"addr","b":[226,153],"oa":39394,"o":"fr_fire_1"},{"a":39416,"t":"addr","b":[232,153],"oa":39400,"o":"fr_fire_2"},{"a":39418,"t":"addr","b":[238,153],"oa":39406,"o":"fr_fire_3"},{"a":39420,"t":"addr","b":[36,154],"oa":39460,"o":"fr_fire_4"},{"a":39422,"l":"fr_pet_arm_1","c":"Frame record: petting arm (row 20, reaches right toward the easy chair), frame 1 (hand only), 6x1 cells. Words: colour-RAM data $A7E8, colour-matrix data $A686, bitmap data $A444; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[232,167,134,166,68,164],"d":[42984,42630,42052],"x":[39442]},{"a":39428,"l":"fr_pet_arm_2","c":"Frame record: petting arm (row 20, reaches right toward the easy chair), frame 2 (half out), 6x1 cells. Words: colour-RAM data $A7EE, colour-matrix data $A68C, bitmap data $A474; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[238,167,140,166,116,164],"d":[42990,42636,42100],"x":[39444]},{"a":39434,"l":"fr_pet_arm_3","c":"Frame record: petting arm (row 20, reaches right toward the easy chair), frame 3 (fully out), 6x1 cells. Words: colour-RAM data $A7F4, colour-matrix data $A692, bitmap data $A4A4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[244,167,146,166,164,164],"d":[42996,42642,42148],"x":[39446]},{"a":39440,"l":"frames_pet_arm","c":"Frame list of the petting arm (row 20, reaches right toward the easy chair): 4 entries for pet_arm_state 0-3 (in, hand only, half out, fully out). draw_object indexes it with the state times 2.","t":"addr","b":[42,154],"oa":39466,"o":"fr_pet_arm_0","x":[38974]},{"a":39442,"t":"addr","b":[254,153],"oa":39422,"o":"fr_pet_arm_1"},{"a":39444,"t":"addr","b":[4,154],"oa":39428,"o":"fr_pet_arm_2"},{"a":39446,"t":"addr","b":[10,154],"oa":39434,"o":"fr_pet_arm_3"},{"a":39448,"l":"fr_pet_hand_0","c":"Frame record: petting hand (over the easy chair), frame 0 (pat position 1), 2x1 cells. Words: colour-RAM data $A7FA, colour-matrix data $A698, bitmap data $A4D4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[250,167,152,166,212,164],"d":[43002,42648,42196],"x":[39472]},{"a":39454,"l":"fr_pet_hand_1","c":"Frame record: petting hand (over the easy chair), frame 1 (pat position 2), 2x1 cells. Words: colour-RAM data $A7FC, colour-matrix data $A69A, bitmap data $A4E4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[252,167,154,166,228,164],"d":[43004,42650,42212],"x":[39474]},{"a":39460,"l":"fr_fire_4","c":"Frame record: fire in the fireplace (ground floor), frame 4 (empty grate, no fire), 2x2 cells. Words: colour-RAM data $A7FE, colour-matrix data $A69C, bitmap data $A4F4; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[254,167,156,166,244,164],"d":[43006,42652,42228],"x":[39420]},{"a":39466,"l":"fr_pet_arm_0","c":"Frame record: petting arm (row 20, reaches right toward the easy chair), frame 0 (retracted), 6x1 cells. Words: colour-RAM data $A802, colour-matrix data $A6A0, bitmap data $A514; copy_frame_record loads them into $18/$19, $1A/$1B and $1C/$1D.","t":"word","b":[2,168,160,166,20,165],"d":[43010,42656,42260],"x":[39440]},{"a":39472,"l":"frames_pet_hand","c":"Frame list of the petting hand (over the easy chair): 2 entries for pet_hand_state 0-1. draw_object indexes it with the state times 2.","t":"addr","b":[24,154],"oa":39448,"o":"fr_pet_hand_0","x":[38975]},{"a":39474,"t":"addr","b":[30,154],"oa":39454,"o":"fr_pet_hand_1"},{"a":39476,"l":"gfx_bm_front_door","c":"Bitmap cells of the front door (ground floor, right): 3 frames of 15 cells (3 wide, 5 rows), 8 bytes a cell, row by row: $9A34 closed, $9AAC half open, $9B24 open. draw_rows copies them to the bitmap at $78E0, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[0,0,0,1,1,1,1,1]},{"a":39484,"t":"byte","b":[0,0,0,85,85,169,149,149]},{"a":39492,"t":"byte","b":[0,0,0,85,85,169,149,149]},{"a":39500,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39508,"t":"byte","b":[106,170,86,106,106,106,106,106]},{"a":39516,"t":"byte","b":[106,170,86,106,106,106,106,106]},{"a":39524,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39532,"t":"byte","b":[106,170,106,170,86,106,106,106]},{"a":39540,"t":"byte","b":[106,170,170,170,86,106,106,106]},{"a":39548,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39556,"t":"byte","b":[106,106,106,106,106,106,170,170]},{"a":39564,"t":"byte","b":[106,106,106,106,106,106,170,170]},{"a":39572,"t":"byte","b":[85,149,165,85,85,85,85,85]},{"a":39580,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":39588,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":39596,"t":"byte","b":[0,0,0,1,1,1,1,1]},{"a":39604,"t":"byte","b":[0,5,5,85,6,6,6,6]},{"a":39612,"t":"byte","b":[0,0,80,85,149,105,101,101]},{"a":39620,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39628,"t":"byte","b":[5,5,6,6,6,6,6,6]},{"a":39636,"t":"byte","b":[101,85,169,101,101,101,101,101]},{"a":39644,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39652,"t":"byte","b":[6,5,6,5,6,6,6,6]},{"a":39660,"t":"byte","b":[101,85,85,85,169,101,101,101]},{"a":39668,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39676,"t":"byte","b":[6,6,6,6,6,6,6,6]},{"a":39684,"t":"byte","b":[101,101,101,101,101,101,101,85]},{"a":39692,"t":"byte","b":[85,149,165,85,85,85,85,85]},{"a":39700,"t":"byte","b":[90,90,85,85,85,85,85,85]},{"a":39708,"t":"byte","b":[90,170,170,170,170,170,170,170]},{"a":39716,"t":"byte","b":[0,0,0,1,1,1,1,1]},{"a":39724,"t":"byte","b":[0,0,0,85,0,0,0,0]},{"a":39732,"t":"byte","b":[64,80,84,101,105,101,101,85]},{"a":39740,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39748,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39756,"t":"byte","b":[101,105,101,101,101,101,101,101]},{"a":39764,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39772,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39780,"t":"byte","b":[101,85,101,85,105,101,101,101]},{"a":39788,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":39796,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39804,"t":"byte","b":[101,101,101,101,101,101,101,101]},{"a":39812,"t":"byte","b":[85,149,165,85,85,85,85,85]},{"a":39820,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":39828,"t":"byte","b":[86,90,106,170,170,170,170,170]},{"a":39836,"l":"gfx_bm_fridge","c":"Bitmap cells of the fridge door (the upper door of the kitchen fridge): 3 frames of 9 cells (3 wide, 3 rows), 8 bytes a cell, row by row: $9B9C closed, $9BE4 half open, $9C2C open. draw_rows copies them to the bitmap at $77D8, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[0,0,0,0,0,85,85,85]},{"a":39844,"t":"byte","b":[0,0,0,0,0,85,85,85]},{"a":39852,"t":"byte","b":[1,1,1,1,1,81,81,81]},{"a":39860,"t":"byte","b":[85,85,85,85,85,85,85,0]},{"a":39868,"t":"byte","b":[85,85,85,85,85,84,85,0]},{"a":39876,"t":"byte","b":[81,81,81,81,81,17,80,0]},{"a":39884,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":39892,"t":"byte","b":[85,84,85,85,85,85,85,85]},{"a":39900,"t":"byte","b":[80,16,80,82,82,81,81,81]},{"a":39908,"t":"byte","b":[0,0,0,0,5,85,85,85]},{"a":39916,"t":"byte","b":[0,0,5,85,85,85,85,85]},{"a":39924,"t":"byte","b":[1,1,1,1,1,81,17,17]},{"a":39932,"t":"byte","b":[85,85,85,85,85,85,85,165]},{"a":39940,"t":"byte","b":[85,85,85,85,85,65,85,85]},{"a":39948,"t":"byte","b":[17,17,17,17,17,17,80,0]},{"a":39956,"t":"byte","b":[90,85,85,85,85,85,85,85]},{"a":39964,"t":"byte","b":[85,165,90,85,85,85,85,85]},{"a":39972,"t":"byte","b":[80,16,80,82,82,81,81,81]},{"a":39980,"t":"byte","b":[0,0,1,5,21,85,85,85]},{"a":39988,"t":"byte","b":[0,64,64,64,64,85,64,64]},{"a":39996,"t":"byte","b":[1,1,1,1,1,81,17,17]},{"a":40004,"t":"byte","b":[85,85,85,85,85,84,85,149]},{"a":40012,"t":"byte","b":[64,64,64,64,64,64,85,64]},{"a":40020,"t":"byte","b":[17,17,17,17,17,17,80,0]},{"a":40028,"t":"byte","b":[101,89,86,85,85,85,85,85]},{"a":40036,"t":"byte","b":[85,84,85,149,85,85,85,85]},{"a":40044,"t":"byte","b":[80,16,80,82,82,81,81,81]},{"a":40052,"l":"gfx_bm_freezer","c":"Bitmap cells of the freezer door (the lower door of the kitchen fridge): 3 frames of 12 cells (3 wide, 4 rows), 8 bytes a cell, row by row: $9C74 closed, $9CD4 half open, $9D34 open. draw_rows copies them to the bitmap at $7918, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[85,85,85,85,85,85,85,0]},{"a":40060,"t":"byte","b":[85,85,85,85,85,84,85,0]},{"a":40068,"t":"byte","b":[81,81,81,81,81,17,80,0]},{"a":40076,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40084,"t":"byte","b":[85,84,85,85,85,85,85,85]},{"a":40092,"t":"byte","b":[80,16,80,82,82,81,81,81]},{"a":40100,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40108,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40116,"t":"byte","b":[81,81,81,81,81,81,81,81]},{"a":40124,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":40132,"t":"byte","b":[106,153,166,153,106,170,170,170]},{"a":40140,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":40148,"t":"byte","b":[85,85,85,85,85,85,90,165]},{"a":40156,"t":"byte","b":[85,85,85,85,90,165,85,85]},{"a":40164,"t":"byte","b":[81,81,81,81,81,17,80,0]},{"a":40172,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40180,"t":"byte","b":[85,65,85,85,85,85,85,85]},{"a":40188,"t":"byte","b":[80,16,16,18,18,17,17,17]},{"a":40196,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40204,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40212,"t":"byte","b":[17,17,17,17,17,17,17,81]},{"a":40220,"t":"byte","b":[111,170,170,170,106,153,166,153]},{"a":40228,"t":"byte","b":[85,85,165,187,234,170,170,170]},{"a":40236,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":40244,"t":"byte","b":[85,85,85,85,86,89,101,149]},{"a":40252,"t":"byte","b":[85,85,85,149,85,84,85,64]},{"a":40260,"t":"byte","b":[81,81,81,81,81,17,80,0]},{"a":40268,"t":"byte","b":[85,84,85,85,85,85,85,85]},{"a":40276,"t":"byte","b":[85,64,64,64,64,64,64,64]},{"a":40284,"t":"byte","b":[80,16,16,18,18,17,17,17]},{"a":40292,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40300,"t":"byte","b":[64,64,64,64,64,64,64,85]},{"a":40308,"t":"byte","b":[17,17,17,17,17,17,17,81]},{"a":40316,"t":"byte","b":[106,250,254,255,127,221,247,221]},{"a":40324,"t":"byte","b":[106,123,110,123,234,170,170,170]},{"a":40332,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":40340,"l":"gfx_bm_bath_door","c":"Bitmap cells of the pink door in the bathroom (middle floor): 3 frames of 15 cells (3 wide, 5 rows), 8 bytes a cell, row by row: $9D94 closed, $9E0C half open, $9E84 open. draw_rows copies them to the bitmap at $6E78, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[0,0,0,5,5,5,5,5]},{"a":40348,"t":"byte","b":[0,0,0,85,85,85,85,81]},{"a":40356,"t":"byte","b":[0,0,0,80,80,80,80,80]},{"a":40364,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":40372,"t":"byte","b":[69,69,81,85,85,85,85,85]},{"a":40380,"t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":40388,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":40396,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40404,"t":"byte","b":[80,80,16,80,80,80,80,80]},{"a":40412,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":40420,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40428,"t":"byte","b":[82,82,80,80,80,80,80,80]},{"a":40436,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":40444,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":40452,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":40460,"t":"byte","b":[0,0,0,5,5,5,5,5]},{"a":40468,"t":"byte","b":[0,5,85,85,85,85,85,69]},{"a":40476,"t":"byte","b":[0,0,0,80,16,16,16,16]},{"a":40484,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":40492,"t":"byte","b":[21,21,69,85,85,85,85,85]},{"a":40500,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":40508,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":40516,"t":"byte","b":[85,85,81,85,85,85,85,85]},{"a":40524,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":40532,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":40540,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40548,"t":"byte","b":[18,146,144,144,144,144,144,144]},{"a":40556,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":40564,"t":"byte","b":[85,181,239,187,254,187,239,187]},{"a":40572,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":40580,"t":"byte","b":[0,0,1,5,5,5,5,5]},{"a":40588,"t":"byte","b":[16,80,80,85,80,80,80,16]},{"a":40596,"t":"byte","b":[0,0,0,80,16,16,16,16]},{"a":40604,"t":"byte","b":[4,4,5,5,5,5,5,5]},{"a":40612,"t":"byte","b":[80,80,16,80,80,80,80,80]},{"a":40620,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":40628,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":40636,"t":"byte","b":[80,80,16,80,80,80,80,80]},{"a":40644,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":40652,"t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":40660,"t":"byte","b":[80,90,82,82,80,80,80,82]},{"a":40668,"t":"byte","b":[18,146,144,144,144,144,144,144]},{"a":40676,"t":"byte","b":[86,221,117,221,87,221,117,221]},{"a":40684,"t":"byte","b":[91,94,154,238,171,238,186,238]},{"a":40692,"t":"byte","b":[86,153,101,153,86,153,101,153]},{"a":40700,"l":"gfx_bm_white_door","c":"Bitmap cells of the white closet doors (the bedroom closet, object 4, and the upstairs closet, object 5): 3 frames of 15 cells (3 wide, 5 rows), 8 bytes a cell, row by row: $9EFC closed, $9F74 half open, $9FEC open. draw_rows copies them to the bitmap at $6E08, $6470, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[0,0,0,21,21,26,25,25]},{"a":40708,"t":"byte","b":[0,0,0,85,85,154,89,89]},{"a":40716,"t":"byte","b":[0,0,0,80,80,144,80,80]},{"a":40724,"t":"byte","b":[25,21,26,25,25,25,25,25]},{"a":40732,"t":"byte","b":[89,85,154,89,89,89,89,89]},{"a":40740,"t":"byte","b":[80,80,144,80,80,80,80,80]},{"a":40748,"t":"byte","b":[25,21,21,21,26,25,25,25]},{"a":40756,"t":"byte","b":[89,85,85,85,154,89,89,89]},{"a":40764,"t":"byte","b":[80,80,144,80,144,80,80,80]},{"a":40772,"t":"byte","b":[25,25,25,25,25,25,21,21]},{"a":40780,"t":"byte","b":[89,89,89,89,89,89,85,85]},{"a":40788,"t":"byte","b":[80,80,80,80,80,80,80,80]},{"a":40796,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40804,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40812,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40820,"t":"byte","b":[0,0,1,21,21,26,25,25]},{"a":40828,"t":"byte","b":[0,20,84,85,164,148,148,148]},{"a":40836,"t":"byte","b":[0,0,0,80,16,16,16,16]},{"a":40844,"t":"byte","b":[25,21,26,25,25,25,25,25]},{"a":40852,"t":"byte","b":[84,84,164,148,148,148,148,148]},{"a":40860,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":40868,"t":"byte","b":[25,21,21,21,26,25,25,25]},{"a":40876,"t":"byte","b":[104,168,152,168,88,104,104,104]},{"a":40884,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":40892,"t":"byte","b":[25,25,25,25,25,25,21,21]},{"a":40900,"t":"byte","b":[104,104,104,104,104,104,104,168]},{"a":40908,"t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":40916,"t":"byte","b":[86,85,85,85,85,85,85,85]},{"a":40924,"t":"byte","b":[86,150,170,170,170,170,170,170]},{"a":40932,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":40940,"t":"byte","b":[0,1,5,21,22,25,25,25]},{"a":40948,"t":"byte","b":[64,64,64,85,64,64,64,64]},{"a":40956,"t":"byte","b":[0,0,0,80]},{"a":40960,"t":"gap","n":100},{"a":41060,"l":"gfx_bm_mirror_cabinet","c":"Bitmap cells of the mirror cabinet over the bathroom sink: 3 frames of 6 cells (2 wide, 3 rows), 8 bytes a cell, row by row: $A064 closed, $A094 half open, $A0C4 open. draw_rows copies them to the bitmap at $6E68, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[0,0,0,85,170,170,170,170]},{"a":41068,"t":"byte","b":[0,0,0,85,169,169,169,169]},{"a":41076,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41084,"t":"byte","b":[86,86,86,86,86,86,86,86]},{"a":41092,"t":"byte","b":[85,170,0,0,136,32,0,168]},{"a":41100,"t":"byte","b":[86,170,0,0,0,0,0,0]},{"a":41108,"t":"byte","b":[0,5,5,86,6,6,6,6]},{"a":41116,"t":"byte","b":[0,0,80,149,169,169,169,169]},{"a":41124,"t":"byte","b":[6,6,86,6,6,54,54,54]},{"a":41132,"t":"byte","b":[86,86,86,86,86,86,86,86]},{"a":41140,"t":"byte","b":[27,171,10,10,136,32,0,168]},{"a":41148,"t":"byte","b":[86,106,160,0,0,0,0,0]},{"a":41156,"t":"byte","b":[0,0,0,85,0,0,0,0]},{"a":41164,"t":"byte","b":[64,80,100,105,105,105,105,105]},{"a":41172,"t":"byte","b":[0,0,85,0,0,40,40,40]},{"a":41180,"t":"byte","b":[105,105,105,105,105,105,105,105]},{"a":41188,"t":"byte","b":[20,170,0,0,136,32,0,168]},{"a":41196,"t":"byte","b":[105,105,100,80,64,0,0,0]},{"a":41204,"l":"gfx_bm_phone_table","c":"Bitmap cells of the drawer of the little green table under the telephone (ground floor, between the stairs and the easy chair): 3 frames of 4 cells (4 wide, 1 row), 8 bytes a cell, row by row: $A0F4 closed, $A114 half open, $A134 open. draw_rows copies them to the bitmap at $7C38, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[4,68,68,164,4,68,68,84]},{"a":41212,"t":"byte","b":[5,21,170,138,170,128,128,128]},{"a":41220,"t":"byte","b":[64,80,168,136,168,8,8,8]},{"a":41228,"t":"byte","b":[1,1,5,21,21,5,1,1]},{"a":41236,"t":"byte","b":[4,68,68,167,7,71,68,84]},{"a":41244,"t":"byte","b":[5,21,170,170,42,170,128,128]},{"a":41252,"t":"byte","b":[64,80,168,170,162,170,8,8]},{"a":41260,"t":"byte","b":[1,1,5,21,21,5,1,1]},{"a":41268,"t":"byte","b":[4,68,68,167,15,76,79,84]},{"a":41276,"t":"byte","b":[5,21,170,0,170,170,170,128]},{"a":41284,"t":"byte","b":[64,80,168,2,170,168,170,8]},{"a":41292,"t":"byte","b":[1,1,5,21,149,133,129,1]},{"a":41300,"l":"gfx_bm_kitchen_cabinet","c":"Bitmap cells of the kitchen cabinet door (under the counter, beside the fridge): 3 frames of 6 cells (2 wide, 3 rows), 8 bytes a cell, row by row: $A154 closed, $A184 half open, $A1B4 open. draw_rows copies them to the bitmap at $7A70, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[0,0,0,85,85,170,170,170]},{"a":41308,"t":"byte","b":[0,0,0,85,85,170,162,170]},{"a":41316,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41324,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41332,"t":"byte","b":[106,153,166,153,106,170,170,170]},{"a":41340,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":41348,"t":"byte","b":[0,0,0,85,90,170,170,170]},{"a":41356,"t":"byte","b":[0,0,0,90,90,81,17,81]},{"a":41364,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41372,"t":"byte","b":[81,81,81,81,81,81,81,81]},{"a":41380,"t":"byte","b":[111,153,166,153,106,170,170,170]},{"a":41388,"t":"byte","b":[90,90,170,170,234,187,174,187]},{"a":41396,"t":"byte","b":[0,0,1,165,149,85,81,85]},{"a":41404,"t":"byte","b":[0,0,0,85,85,2,2,2]},{"a":41412,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41420,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":41428,"t":"byte","b":[106,218,246,221,127,255,255,255]},{"a":41436,"t":"byte","b":[106,170,170,170,106,153,166,153]},{"a":41444,"l":"gfx_bm_nightstand","c":"Bitmap cells of the nightstand drawer (bedroom): 3 frames of 3 cells (3 wide, 1 row), 8 bytes a cell, row by row: $A1E4 closed, $A1FC half open, $A214 open. draw_rows copies them to the bitmap at $71B0, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[65,65,65,65,65,65,65,129]},{"a":41452,"t":"byte","b":[85,21,85,0,85,21,85,0]},{"a":41460,"t":"byte","b":[80,16,80,16,80,16,80,16]},{"a":41468,"t":"byte","b":[65,69,68,69,65,65,65,129]},{"a":41476,"t":"byte","b":[85,85,85,85,85,21,85,0]},{"a":41484,"t":"byte","b":[80,84,68,84,80,16,80,16]},{"a":41492,"t":"byte","b":[65,68,85,81,85,65,65,129]},{"a":41500,"t":"byte","b":[85,0,85,85,85,21,85,0]},{"a":41508,"t":"byte","b":[80,4,85,81,85,16,80,16]},{"a":41516,"l":"gfx_bm_dresser","c":"Bitmap cells of the dresser drawer (bedroom): 3 frames of 5 cells (5 wide, 1 row), 8 bytes a cell, row by row: $A22C closed, $A254 half open, $A27C open. draw_rows copies them to the bitmap at $71E0, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[5,4,5,4,5,4,5,4]},{"a":41524,"t":"byte","b":[85,85,85,0,85,85,85,0]},{"a":41532,"t":"byte","b":[85,85,85,0,85,85,85,0]},{"a":41540,"t":"byte","b":[84,68,84,4,84,68,84,4]},{"a":41548,"t":"byte","b":[16,17,17,26,16,17,17,21]},{"a":41556,"t":"byte","b":[5,21,17,21,5,4,5,4]},{"a":41564,"t":"byte","b":[85,85,85,85,85,85,85,0]},{"a":41572,"t":"byte","b":[85,85,85,85,85,85,85,0]},{"a":41580,"t":"byte","b":[84,85,81,85,84,68,84,4]},{"a":41588,"t":"byte","b":[16,17,17,26,16,17,17,21]},{"a":41596,"t":"byte","b":[5,16,85,69,85,4,5,4]},{"a":41604,"t":"byte","b":[85,0,85,85,85,85,85,0]},{"a":41612,"t":"byte","b":[85,0,85,85,85,85,85,0]},{"a":41620,"t":"byte","b":[84,1,85,84,85,68,84,4]},{"a":41628,"t":"byte","b":[16,17,145,159,144,17,17,21]},{"a":41636,"l":"gfx_bm_bookcase_cupboard","c":"Bitmap cells of the bookcase cupboard (middle floor, right): 3 frames of 6 cells (2 wide, 3 rows), 8 bytes a cell, row by row: $A2A4 closed, $A2D4 half open, $A304 open. draw_rows copies them to the bitmap at $7130, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[96,96,96,96,96,96,96,106]},{"a":41644,"t":"byte","b":[0,0,5,5,5,5,5,170]},{"a":41652,"t":"byte","b":[106,106,106,106,106,106,106,106]},{"a":41660,"t":"byte","b":[68,85,85,85,85,85,85,85]},{"a":41668,"t":"byte","b":[106,106,106,106,106,106,106,106]},{"a":41676,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41684,"t":"byte","b":[96,96,96,96,96,96,98,106]},{"a":41692,"t":"byte","b":[0,0,5,5,5,5,133,170]},{"a":41700,"t":"byte","b":[104,106,106,106,106,106,106,106]},{"a":41708,"t":"byte","b":[68,69,69,69,69,69,69,69]},{"a":41716,"t":"byte","b":[107,106,106,106,106,106,106,106]},{"a":41724,"t":"byte","b":[106,170,170,170,170,170,170,170]},{"a":41732,"t":"byte","b":[96,96,96,96,96,98,106,106]},{"a":41740,"t":"byte","b":[0,0,5,5,5,5,5,170]},{"a":41748,"t":"byte","b":[98,106,106,106,106,106,106,106]},{"a":41756,"t":"byte","b":[4,5,5,5,5,5,5,5]},{"a":41764,"t":"byte","b":[111,107,106,106,106,106,106,106]},{"a":41772,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41780,"l":"gfx_bm_filing_cabinet","c":"Bitmap cells of the filing-cabinet drawer (top floor, right): 3 frames of 6 cells (3 wide, 2 rows), 8 bytes a cell, row by row: $A334 closed, $A364 half open, $A394 open. draw_rows copies them to the bitmap at $6880, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[5,5,5,5,5,5,5,5]},{"a":41788,"t":"byte","b":[85,85,69,85,85,85,85,85]},{"a":41796,"t":"byte","b":[64,64,64,64,64,64,64,64]},{"a":41804,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41812,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41820,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":41828,"t":"byte","b":[5,21,21,21,21,21,21,21]},{"a":41836,"t":"byte","b":[85,85,85,69,85,85,85,85]},{"a":41844,"t":"byte","b":[64,80,80,80,80,80,80,80]},{"a":41852,"t":"byte","b":[106,85,85,85,85,85,85,85]},{"a":41860,"t":"byte","b":[85,170,170,170,170,170,170,170]},{"a":41868,"t":"byte","b":[90,170,170,170,170,170,170,170]},{"a":41876,"t":"byte","b":[5,16,85,85,85,85,85,85]},{"a":41884,"t":"byte","b":[85,0,85,85,69,85,85,85]},{"a":41892,"t":"byte","b":[64,16,84,84,84,84,84,84]},{"a":41900,"t":"byte","b":[85,85,170,170,170,170,170,170]},{"a":41908,"t":"byte","b":[85,85,170,170,170,170,170,170]},{"a":41916,"t":"byte","b":[86,86,170,170,170,170,170,170]},{"a":41924,"l":"gfx_bm_fire","c":"Bitmap cells of the fire in the fireplace (ground floor): 4 frames of 4 cells (2 wide, 2 rows), 8 bytes a cell, row by row: $A3C4 flames 1, $A3E4 flames 2, $A404 flames 3, $A424 flames 4. draw_rows copies them to the bitmap at $7B48, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[89,170,149,170,0,0,0,12]},{"a":41932,"t":"byte","b":[89,170,149,170,0,0,192,192]},{"a":41940,"t":"byte","b":[4,5,5,9,61,59,59,34]},{"a":41948,"t":"byte","b":[80,80,84,89,79,251,251,34]},{"a":41956,"t":"byte","b":[89,170,149,170,0,0,12,12]},{"a":41964,"t":"byte","b":[89,170,149,170,0,0,0,192]},{"a":41972,"t":"byte","b":[5,5,5,25,61,59,59,34]},{"a":41980,"t":"byte","b":[16,84,85,89,95,251,251,34]},{"a":41988,"t":"byte","b":[89,170,149,170,0,0,0,12]},{"a":41996,"t":"byte","b":[89,170,149,170,0,0,0,48]},{"a":42004,"t":"byte","b":[4,5,21,25,61,59,59,34]},{"a":42012,"t":"byte","b":[80,81,81,89,95,251,251,34]},{"a":42020,"t":"byte","b":[89,170,149,170,0,0,0,3]},{"a":42028,"t":"byte","b":[89,170,149,170,0,0,0,0]},{"a":42036,"t":"byte","b":[5,21,20,25,61,59,59,34]},{"a":42044,"t":"byte","b":[4,68,69,89,95,251,251,34]},{"a":42052,"l":"gfx_bm_pet_arm","c":"Bitmap cells of the petting arm (row 20, reaches right toward the easy chair): 3 frames of 6 cells (6 wide, 1 row), 8 bytes a cell, row by row: $A444 hand only, $A474 half out, $A4A4 fully out. draw_rows copies them to the bitmap at $79B8, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[6,70,70,246,6,70,70,244]},{"a":42060,"t":"byte","b":[0,0,84,64,84,64,84,0]},{"a":42068,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42076,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42084,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42092,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42100,"t":"byte","b":[4,68,68,164,4,69,69,164]},{"a":42108,"t":"byte","b":[0,0,0,68,68,17,17,0]},{"a":42116,"t":"byte","b":[16,16,21,148,149,20,21,0]},{"a":42124,"t":"byte","b":[0,0,64,0,64,0,64,0]},{"a":42132,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42140,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42148,"t":"byte","b":[4,68,68,164,4,68,69,164]},{"a":42156,"t":"byte","b":[0,0,0,4,17,64,0,0]},{"a":42164,"t":"byte","b":[0,0,0,0,1,68,16,0]},{"a":42172,"t":"byte","b":[0,0,0,64,16,4,1,0]},{"a":42180,"t":"byte","b":[4,4,5,5,37,133,5,0]},{"a":42188,"t":"byte","b":[0,0,80,0,80,0,80,0]},{"a":42196,"l":"gfx_bm_pet_hand","c":"Bitmap cells of the petting hand (over the easy chair): 2 frames of 2 cells (2 wide, 1 row), 8 bytes a cell, row by row: $A4D4 pat position 1, $A4E4 pat position 2. draw_rows copies them to the bitmap at $79D8, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[4,4,5,5,37,133,5,0]},{"a":42204,"t":"byte","b":[0,0,80,0,80,0,80,0]},{"a":42212,"t":"byte","b":[0,4,4,5,37,133,5,5]},{"a":42220,"t":"byte","b":[0,0,0,80,0,80,0,80]},{"a":42228,"l":"gfx_bm_fire_out","c":"Bitmap cells of the fire in the fireplace (ground floor): 1 frame of 4 cells (2 wide, 2 rows), 8 bytes a cell, row by row: $A4F4 empty grate, no fire. draw_rows copies them to the bitmap at $7B48, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[89,170,149,170,0,0,0,0]},{"a":42236,"t":"byte","b":[89,170,149,170,0,0,0,0]},{"a":42244,"t":"byte","b":[0,0,0,4,0,4,4,17]},{"a":42252,"t":"byte","b":[0,0,0,4,0,4,4,17]},{"a":42260,"l":"gfx_bm_pet_arm_in","c":"Bitmap cells of the petting arm (row 20, reaches right toward the easy chair): 1 frame of 6 cells (6 wide, 1 row), 8 bytes a cell, row by row: $A514 retracted. draw_rows copies them to the bitmap at $79B8, +320 per row. Multicolour: bit pairs 01 and 10 take the colour-matrix nybbles, 11 the colour-RAM colour.","t":"byte","b":[4,68,68,164,4,68,68,164]},{"a":42268,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42276,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42284,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42292,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42300,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42308,"l":"gfx_scr_front_door","c":"Colour-matrix bytes of the front door (ground floor, right), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 15 per frame: $A544 closed, $A553 half open, $A562 open. Copied to $5F1C, +40 per row.","t":"byte","b":[16,31,31,16,241,241,16,241]},{"a":42316,"t":"byte","b":[241,16,241,241,42,32,32,16]},{"a":42324,"t":"byte","b":[31,31,16,31,31,16,31,31]},{"a":42332,"t":"byte","b":[16,31,31,42,33,18,16,16]},{"a":42340,"t":"byte","b":[31,16,0,31,16,0,31,16]},{"a":42348,"t":"byte","b":[0,31,42,32,18]},{"a":42353,"l":"gfx_scr_fridge","c":"Colour-matrix bytes of the fridge door (the upper door of the kitchen fridge), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 9 per frame: $A571 closed, $A57A half open, $A583 open. Copied to $5EFB, +40 per row.","t":"byte","b":[16,16,16,16,16,16,16,16]},{"a":42361,"t":"byte","b":[21,16,16,16,31,16,16,31]},{"a":42369,"t":"byte","b":[31,21,16,16,16,31,16,16]},{"a":42377,"t":"byte","b":[31,31,21]},{"a":42380,"l":"gfx_scr_freezer","c":"Colour-matrix bytes of the freezer door (the lower door of the kitchen fridge), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 12 per frame: $A58C closed, $A598 half open, $A5A4 open. Copied to $5F23, +40 per row.","t":"byte","b":[16,16,16,16,16,21,16,16]},{"a":42388,"t":"byte","b":[16,53,53,53,31,31,16,16]},{"a":42396,"t":"byte","b":[16,21,16,16,16,53,21,53]},{"a":42404,"t":"byte","b":[31,31,16,16,16,21,16,16]},{"a":42412,"t":"byte","b":[16,49,21,53]},{"a":42416,"l":"gfx_scr_bath_door","c":"Colour-matrix bytes of the pink door in the bathroom (middle floor), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 15 per frame: $A5B0 closed, $A5BF half open, $A5CE open. Copied to $5DCF, +40 per row.","t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":42424,"t":"byte","b":[32,32,32,33,227,227,227,32]},{"a":42432,"t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":42440,"t":"byte","b":[32,32,33,227,35,227,32,32]},{"a":42448,"t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":42456,"t":"byte","b":[33,33,226,46,227]},{"a":42461,"l":"gfx_scr_white_door","c":"Colour-matrix bytes of the white closet doors (the bedroom closet, object 4, and the upstairs closet, object 5), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 15 per frame: $A5DD closed, $A5EC half open, $A5FB open. Copied to $5DC1, $5C8E, +40 per row.","t":"byte","b":[31,31,31,31,31,31,31,31]},{"a":42469,"t":"byte","b":[31,31,31,16,32,32,32,31]},{"a":42477,"t":"byte","b":[31,16,31,31,16,31,241,16]},{"a":42485,"t":"byte","b":[31,241,16,33,18,32,31,16]},{"a":42493,"t":"byte","b":[16,31,16,16,31,16,16,31]},{"a":42501,"t":"byte","b":[16,16,33,18,32]},{"a":42506,"l":"gfx_scr_mirror_cabinet","c":"Colour-matrix bytes of the mirror cabinet over the bathroom sink, one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 6 per frame: $A60A closed, $A610 half open, $A616 open. Copied to $5DCD, +40 per row.","t":"byte","b":[19,19,48,49,49,49,19,19]},{"a":42514,"t":"byte","b":[19,49,225,49,16,19,30,19]},{"a":42522,"t":"byte","b":[225,19]},{"a":42524,"l":"gfx_scr_phone_table","c":"Colour-matrix bytes of the drawer of the little green table under the telephone (ground floor, between the stairs and the easy chair), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 4 per frame: $A61C closed, $A620 half open, $A624 open. Copied to $5F87, +40 per row.","t":"byte","b":[42,21,21,224,42,21,21,224]},{"a":42532,"t":"byte","b":[42,21,21,229]},{"a":42536,"l":"gfx_scr_kitchen_cabinet","c":"Colour-matrix bytes of the kitchen cabinet door (under the counter, beside the fridge), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 6 per frame: $A628 closed, $A62E half open, $A634 open. Copied to $5F4E, +40 per row.","t":"byte","b":[81,81,16,16,53,53,81,21]},{"a":42544,"t":"byte","b":[16,16,53,21,21,81,16,16]},{"a":42552,"t":"byte","b":[49,53]},{"a":42554,"l":"gfx_scr_nightstand","c":"Colour-matrix bytes of the nightstand drawer (bedroom), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 3 per frame: $A63A closed, $A63D half open, $A640 open. Copied to $5E36, +40 per row.","t":"byte","b":[81,80,80,81,80,80,81,80]},{"a":42562,"t":"byte","b":[80]},{"a":42563,"l":"gfx_scr_dresser","c":"Colour-matrix bytes of the dresser drawer (bedroom), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 5 per frame: $A643 closed, $A648 half open, $A64D open. Copied to $5E3C, +40 per row.","t":"byte","b":[80,80,80,80,42,80,80,80]},{"a":42571,"t":"byte","b":[80,42,80,80,80,80,37]},{"a":42578,"l":"gfx_scr_bookcase_cupboard","c":"Colour-matrix bytes of the bookcase cupboard (middle floor, right), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 6 per frame: $A652 closed, $A658 half open, $A65E open. Copied to $5E26, +40 per row.","t":"byte","b":[33,81,33,16,37,80,33,81]},{"a":42586,"t":"byte","b":[33,16,37,21,33,81,33,16]},{"a":42594,"t":"byte","b":[37,80]},{"a":42596,"l":"gfx_scr_filing_cabinet","c":"Colour-matrix bytes of the filing-cabinet drawer (top floor, right), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 6 per frame: $A664 closed, $A66A half open, $A670 open. Copied to $5D10, +40 per row.","t":"byte","b":[80,80,80,32,32,32,80,80]},{"a":42604,"t":"byte","b":[80,37,82,82,80,80,80,82]},{"a":42612,"t":"byte","b":[82,82]},{"a":42614,"l":"gfx_scr_fire","c":"Colour-matrix bytes of the fire in the fireplace (ground floor), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 4 per frame: $A676 flames 1, $A67A flames 2, $A67E flames 3, $A682 flames 4. Copied to $5F69, +40 per row.","t":"byte","b":[39,39,135,135,39,39,135,135]},{"a":42622,"t":"byte","b":[39,39,135,135,39,39,135,135]},{"a":42630,"l":"gfx_scr_pet_arm","c":"Colour-matrix bytes of the petting arm (row 20, reaches right toward the easy chair), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 6 per frame: $A686 hand only, $A68C half out, $A692 fully out. Copied to $5F37, +40 per row.","t":"byte","b":[33,16,0,0,0,0,42,32]},{"a":42638,"t":"byte","b":[18,16,0,0,42,32,32,32]},{"a":42646,"t":"byte","b":[18,16]},{"a":42648,"l":"gfx_scr_pet_hand","c":"Colour-matrix bytes of the petting hand (over the easy chair), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 2 per frame: $A698 pat position 1, $A69A pat position 2. Copied to $5F3B, +40 per row.","t":"byte","b":[18,16,18,16]},{"a":42652,"l":"gfx_scr_fire_out","c":"Colour-matrix bytes of the fire in the fireplace (ground floor), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 4 per frame: $A69C empty grate, no fire. Copied to $5F69, +40 per row.","t":"byte","b":[39,39,112,112]},{"a":42656,"l":"gfx_scr_pet_arm_in","c":"Colour-matrix bytes of the petting arm (row 20, reaches right toward the easy chair), one per cell (high nybble: colour of bit pair 01, low nybble: bit pair 10), 6 per frame: $A6A0 retracted. Copied to $5F37, +40 per row.","t":"byte","b":[42,0,0,0,0,0]},{"a":42662,"l":"gfx_col_front_door","c":"Colour-RAM bytes of the front door (ground floor, right), one per cell (colour of bit pair 11), 15 per frame: $A6A6 closed, $A6B5 half open, $A6C4 open. Copied to $DB1C, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42670,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42678,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42686,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42694,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42702,"t":"byte","b":[0,0,0,0,0]},{"a":42707,"l":"gfx_col_fridge","c":"Colour-RAM bytes of the fridge door (the upper door of the kitchen fridge), one per cell (colour of bit pair 11), 9 per frame: $A6D3 closed, $A6DC half open, $A6E5 open. Copied to $DAFB, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42715,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42723,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42731,"t":"byte","b":[0,0,0]},{"a":42734,"l":"gfx_col_freezer","c":"Colour-RAM bytes of the freezer door (the lower door of the kitchen fridge), one per cell (colour of bit pair 11), 12 per frame: $A6EE closed, $A6FA half open, $A706 open. Copied to $DB23, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42742,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42750,"t":"byte","b":[0,0,0,0,0,1,3,0]},{"a":42758,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42766,"t":"byte","b":[0,5,3,0]},{"a":42770,"l":"gfx_col_bath_door","c":"Colour-RAM bytes of the pink door in the bathroom (middle floor), one per cell (colour of bit pair 11), 15 per frame: $A712 closed, $A721 half open, $A730 open. Copied to $D9CF, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42778,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42786,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42794,"t":"byte","b":[0,0,0,0,14,0,0,0]},{"a":42802,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42810,"t":"byte","b":[0,0,3,3,0]},{"a":42815,"l":"gfx_col_white_door","c":"Colour-RAM bytes of the white closet doors (the bedroom closet, object 4, and the upstairs closet, object 5), one per cell (colour of bit pair 11), 15 per frame: $A73F closed, $A74E half open, $A75D open. Copied to $D9C1, $D88E, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42823,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42831,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42839,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42847,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42855,"t":"byte","b":[0,0,0,0,0]},{"a":42860,"l":"gfx_col_mirror_cabinet","c":"Colour-RAM bytes of the mirror cabinet over the bathroom sink, one per cell (colour of bit pair 11), 6 per frame: $A76C closed, $A772 half open, $A778 open. Copied to $D9CD, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42868,"t":"byte","b":[0,0,0,14,0,3,0,0]},{"a":42876,"t":"byte","b":[0,0]},{"a":42878,"l":"gfx_col_phone_table","c":"Colour-RAM bytes of the drawer of the little green table under the telephone (ground floor, between the stairs and the easy chair), one per cell (colour of bit pair 11), 4 per frame: $A77E closed, $A782 half open, $A786 open. Copied to $DB87, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,5]},{"a":42886,"t":"byte","b":[0,0,0,5]},{"a":42890,"l":"gfx_col_gap_A78A","c":"Three zero bytes that no frame record points at, between the phone-table drawer's colour-RAM data and the kitchen cabinet's. The cabinet's data starts 3 bytes later, at $A78D, so its third frame ($A799-$A79E) overlaps the nightstand's first ($A79C-$A79E).","t":"byte","b":[0,0,0]},{"a":42893,"l":"gfx_col_kitchen_cabinet","c":"Colour-RAM bytes of the kitchen cabinet door (under the counter, beside the fridge), one per cell (colour of bit pair 11), 6 per frame: $A78D closed, $A793 half open, $A799 open. Copied to $DB4E, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42901,"t":"byte","b":[0,0,1,3,0,0,0]},{"a":42908,"l":"gfx_col_nightstand","c":"Colour-RAM bytes of the nightstand drawer (bedroom), one per cell (colour of bit pair 11), 3 per frame: $A79C closed, $A79F half open, $A7A2 open. Copied to $DA36, +40 per row.","t":"byte","b":[0,5,0,0,0,0,0,0]},{"a":42916,"t":"byte","b":[0]},{"a":42917,"l":"gfx_col_dresser","c":"Colour-RAM bytes of the dresser drawer (bedroom), one per cell (colour of bit pair 11), 5 per frame: $A7A5 closed, $A7AA half open, $A7AF open. Copied to $DA3C, +40 per row.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42925,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":42932,"l":"gfx_col_bookcase_cupboard","c":"Colour-RAM bytes of the bookcase cupboard (middle floor, right), one per cell (colour of bit pair 11), 6 per frame: $A7B4 closed, $A7BA half open, $A7C0 open. Copied to $DA26, +40 per row.","t":"byte","b":[0,0,10,0,0,0,0,0]},{"a":42940,"t":"byte","b":[0,0,0,0,0,1,0,0]},{"a":42948,"t":"byte","b":[0,0]},{"a":42950,"l":"gfx_col_filing_cabinet","c":"Colour-RAM bytes of the filing-cabinet drawer (top floor, right), one per cell (colour of bit pair 11), 6 per frame: $A7C6 closed, $A7CC half open, $A7D2 open. Copied to $D910, +40 per row.","t":"byte","b":[0,1,0,0,0,0,0,0]},{"a":42958,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":42966,"t":"byte","b":[0,0]},{"a":42968,"l":"gfx_col_fire","c":"Colour-RAM bytes of the fire in the fireplace (ground floor), one per cell (colour of bit pair 11), 4 per frame: $A7D8 flames 1, $A7DC flames 2, $A7E0 flames 3, $A7E4 flames 4. Copied to $DB69, +40 per row.","t":"byte","b":[0,0,0,8,8,9,9,8]},{"a":42976,"t":"byte","b":[8,9,9,8,8,9,9,8]},{"a":42984,"l":"gfx_col_pet_arm","c":"Colour-RAM bytes of the petting arm (row 20, reaches right toward the easy chair), one per cell (colour of bit pair 11), 6 per frame: $A7E8 hand only, $A7EE half out, $A7F4 fully out. Copied to $DB37, +40 per row.","t":"byte","b":[0,9,9,10,0,0,0,0]},{"a":42992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":43000,"t":"byte","b":[0,0]},{"a":43002,"l":"gfx_col_pet_hand","c":"Colour-RAM bytes of the petting hand (over the easy chair), one per cell (colour of bit pair 11), 2 per frame: $A7FA pat position 1, $A7FC pat position 2. Copied to $DB3B, +40 per row.","t":"byte","b":[0,0,0,0]},{"a":43006,"l":"gfx_col_fire_out","c":"Colour-RAM bytes of the fire in the fireplace (ground floor), one per cell (colour of bit pair 11), 4 per frame: $A7FE empty grate, no fire. Copied to $DB69, +40 per row. The last frame's bytes run on past $A7FF.","t":"byte","b":[0,0]},{"a":43008,"l":"unused_zero_A800","c":"Eleven zero bytes ($A800-$A80A). Nothing in the image references them (no absolute operand or table word points here); the walk stubs start at $A80B.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":43016,"t":"byte","b":[0,0,0]},{"a":43019,"l":"walk_place_1C","c":"Activity handler (a switch-table target): LDX #$1C and go to walk_place_x, which makes place $1C the person's destination and advances the phase. Place $1C: middle floor x=268; no switch table or instruction references this stub. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,28],"m":"ldx","o":"#$1C"},{"a":43021,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43024,"l":"walk_place_07","c":"Activity handler (a switch-table target): LDX #$07 and go to walk_place_x, which makes place $07 the person's destination and advances the phase. Place $07: attic x=192, by the white door of the upstairs closet (object 5); used by activity 88. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":43026,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43029,"l":"walk_place_0B","c":"Activity handler (a switch-table target): LDX #$0B and go to walk_place_x, which makes place $0B the person's destination and advances the phase. Place $0B: attic x=220; no switch table or instruction references this stub. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,11],"m":"ldx","o":"#$0B"},{"a":43031,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43034,"l":"walk_place_0C","c":"Activity handler (a switch-table target): LDX #$0C and go to walk_place_x, which makes place $0C the person's destination and advances the phase. Place $0C: attic x=278, by the filing cabinet (object 11); used by activity 23 ($9387). Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,12],"m":"ldx","o":"#$0C"},{"a":43036,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43039,"l":"walk_place_15","c":"Activity handler (a switch-table target): LDX #$15 and go to walk_place_x, which makes place $15 the person's destination and advances the phase. Place $15: middle floor x=122, by the bedroom dresser (object 10); used by activity 105. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,21],"m":"ldx","o":"#$15"},{"a":43041,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43044,"l":"walk_place_13","c":"Activity handler (a switch-table target): LDX #$13 and go to walk_place_x, which makes place $13 the person's destination and advances the phase. Place $13: middle floor x=72, by the bedroom nightstand (object 9); used by activity 106. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,19],"m":"ldx","o":"#$13"},{"a":43046,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43049,"l":"walk_place_14","c":"Activity handler (a switch-table target): LDX #$14 and go to walk_place_x, which makes place $14 the person's destination and advances the phase. Place $14: middle floor x=90, by the bedroom closet (object 4); used by activity 92. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,20],"m":"ldx","o":"#$14"},{"a":43051,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43054,"l":"walk_place_17","c":"Activity handler (a switch-table target): LDX #$17 and go to walk_place_x, which makes place $17 the person's destination and advances the phase. Place $17: middle floor x=200, by the bathroom door (object 3, the pink door right of the mirror); used by activity 80. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,23],"m":"ldx","o":"#$17"},{"a":43056,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43059,"l":"walk_place_22","c":"Activity handler (a switch-table target): LDX #$22 and go to walk_place_x, which makes place $22 the person's destination and advances the phase. Place $22: ground floor x=32, the far left of the kitchen (the stove, in the cooking activities 48 and 49); used by activities 70, 71 and the tables at $1E6E and $1E85. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,34],"m":"ldx","o":"#$22"},{"a":43061,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43064,"l":"walk_place_23","c":"Activity handler (a switch-table target): LDX #$23 and go to walk_place_x, which makes place $23 the person's destination and advances the phase. Place $23: ground floor x=44, at the refrigerator (objects 1 and 2); used by activities 64 and 65. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,35],"m":"ldx","o":"#$23"},{"a":43066,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43069,"l":"walk_place_24","c":"Activity handler (a switch-table target): LDX #$24 and go to walk_place_x, which makes place $24 the person's destination and advances the phase. Place $24: ground floor x=96 in the kitchen (the sink, in the cooking activity 49); used by the table at $1E85. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,36],"m":"ldx","o":"#$24"},{"a":43071,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43074,"l":"walk_place_25","c":"Activity handler (a switch-table target): LDX #$25 and go to walk_place_x, which makes place $25 the person's destination and advances the phase. Place $25: ground floor x=64, the kitchen counter (object 12); used by activities 60 and 61. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,37],"m":"ldx","o":"#$25"},{"a":43076,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43079,"l":"walk_place_2E","c":"Activity handler (a switch-table target): LDX #$2E and go to walk_place_x, which makes place $2E the person's destination and advances the phase. Place $2E: ground floor x=296, in front of the fireplace next to the front door (object 0); used by activity 96. Places are three tables: $1D36 (floor line: 101 attic, 165 middle, 229 ground), $1D6D (sprite x / 2) and $1DA4; x here is the sprite x.","t":"code","b":[162,46],"m":"ldx","o":"#$2E"},{"a":43081,"t":"code","b":[76,77,168],"m":"jmp","o":"walk_place_x","oa":43085},{"a":43084,"l":"unused_rts_A84C","c":"A lone RTS between the last walk stub and walk_place_x. Nothing references it.","t":"code","b":[96],"m":"rts"},{"a":43085,"l":"walk_place_x","c":"Common tail of the walk stubs $A80B-$A84B: JSR set_walk_place_x (destination = place X), then JMP $8F0B (INC $4C: the activity moves to its next phase). The next phase is normally $8FA7, which waits for the arrival.","t":"code","b":[32,83,168],"m":"jsr","o":"set_walk_place_x","oa":43091,"x":[43021,43026,43031,43036,43041,43046,43051,43056,43061,43066,43071,43076,43081]},{"a":43088,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43091,"l":"set_walk_place_x","c":"Make place X the person's destination: $16AE copies place X's three bytes ($1D36,X, $1D6D,X, $1DA4,X) into the scratch place $36 ($1D6C, $1DA3, $1DDA), then A=$36 goes to set_person_destination ($AB63), which stores it in $03C0 and starts the walk ($03BC=2) unless he is already there.","t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806,"x":[43085]},{"a":43094,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":43096,"t":"code","b":[76,99,171],"m":"jmp","o":"set_person_destination","oa":43875},{"a":43099,"l":"unused_random_pause_set","c":"Handler-shaped code that nothing references (no switch-table word $A85A exists): $8D9C = random ($195E) OR $40, i.e. 64-127, then next phase. Paired with unused_random_pause_wait; $8D9C is used by nothing else.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":43102,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":43104,"t":"code","b":[141,156,141],"m":"sta","o":"act_wait_count","oa":36252},{"a":43107,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43110,"l":"unused_random_pause_wait","c":"Unreferenced partner of $A85B: on every eighth main-loop pass ($09DB AND 7 = 0) decrement $8D9C, and when it reaches 0 advance the phase (JMP $8F0B). A pause of 512-1016 passes, never used in this image.","t":"code","b":[173,219,9],"m":"lda","o":"main_passes","oa":2523},{"a":43113,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":43115,"t":"code","b":[208,8],"m":"bne","o":"r_A875","oa":43125},{"a":43117,"t":"code","b":[206,156,141],"m":"dec","o":"act_wait_count","oa":36252},{"a":43120,"t":"code","b":[208,3],"m":"bne","o":"r_A875","oa":43125},{"a":43122,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43125,"l":"r_A875","t":"code","b":[96],"m":"rts","x":[43115,43120,43136]},{"a":43126,"l":"act_pose_5B_wait","c":"Activity handler (activity 81, phase 2): ask the pose changer $255B for pose $5B facing $08 and return until $2540 is clear (the pose reached), then advance the phase.","t":"code","b":[169,91],"m":"lda","o":"#$5B"},{"a":43128,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":43130,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":43133,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":43136,"t":"code","b":[208,243],"m":"bne","o":"r_A875","oa":43125},{"a":43138,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43141,"l":"act_walk_to_chair","c":"Activity handler (activity 6, phase 8): LDX #$2B, copy place $2B (ground floor x=238, the blue easy chair) into place $36 with $16AE, make it the destination ($8F08 = set_person_destination then INC $4C).","t":"code","b":[162,43],"m":"ldx","o":"#$2B"},{"a":43143,"t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806},{"a":43146,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":43148,"t":"code","b":[76,8,143],"m":"jmp","o":"set_target_next","oa":36616},{"a":43151,"l":"act_chair_fidget_init","c":"Activity handler (activity 6, phase 10): set up the loop at act_chair_fidget: $47AF = random 64-127 (how long), $47AE = 0 (frame step and direction), $47B0 = 0 (pass counter); pose $22 ($9363), next phase.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":43154,"t":"code","b":[9,64],"m":"ora","o":"#$40"},{"a":43156,"t":"code","b":[141,175,71],"m":"sta","o":"time_a894","oa":18351},{"a":43159,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43161,"t":"code","b":[141,174,71],"m":"sta","o":"pose_a8c4","oa":18350},{"a":43164,"t":"code","b":[141,176,71],"m":"sta","o":"pass_a8b1","oa":18352},{"a":43167,"t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":43169,"l":"j_A8A1","t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731,"x":[37524,37534]},{"a":43172,"l":"b_A8A4","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[43239]},{"a":43175,"l":"act_chair_fidget","c":"Activity handler (activity 6, phase 11), a loop while he sits in the easy chair: a pending request ($8F86) cuts the time $47AF to 0. Every 8th call it may step $47AE and show pose $23 + ($47AE AND 3) (bit 7 of $47AE = stepping back): a frame with low bits 1 keeps stepping; otherwise, while $47AF runs down, one call in 32 (random AND $1F = $16) starts a move forward (maybe flipping his facing $039A) or back. When $47AF is 0 he steps back until $47AE = $80 and the phase advances.","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":43178,"t":"code","b":[240,5],"m":"beq","o":"b_A8B1","oa":43185},{"a":43180,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43182,"t":"code","b":[141,175,71],"m":"sta","o":"time_a894","oa":18351},{"a":43185,"l":"b_A8B1","t":"code","b":[238,176,71],"m":"inc","o":"pass_a8b1","oa":18352,"x":[43178]},{"a":43188,"t":"code","b":[173,176,71],"m":"lda","o":"pass_a8b1","oa":18352},{"a":43191,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":43193,"t":"code","b":[208,93],"m":"bne","o":"r_A918","oa":43288},{"a":43195,"t":"code","b":[173,174,71],"m":"lda","o":"pose_a8c4","oa":18350},{"a":43198,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":43200,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":43202,"t":"code","b":[208,25],"m":"bne","o":"b_A8DD","oa":43229},{"a":43204,"l":"j_A8C4","t":"code","b":[174,174,71],"m":"ldx","o":"pose_a8c4","oa":18350,"x":[43248]},{"a":43207,"t":"code","b":[232],"m":"inx"},{"a":43208,"t":"code","b":[173,174,71],"m":"lda","o":"pose_a8c4","oa":18350},{"a":43211,"t":"code","b":[16,2],"m":"bpl","o":"b_A8CF","oa":43215},{"a":43213,"t":"code","b":[202],"m":"dex"},{"a":43214,"t":"code","b":[202],"m":"dex"},{"a":43215,"l":"b_A8CF","t":"code","b":[142,174,71],"m":"stx","o":"pose_a8c4","oa":18350,"x":[43211]},{"a":43218,"t":"code","b":[173,174,71],"m":"lda","o":"pose_a8c4","oa":18350},{"a":43221,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":43223,"t":"code","b":[24],"m":"clc"},{"a":43224,"t":"code","b":[105,35],"m":"adc","o":"#$23"},{"a":43226,"t":"code","b":[76,99,147],"m":"jmp","o":"set_pose","oa":37731},{"a":43229,"l":"b_A8DD","t":"code","b":[173,175,71],"m":"lda","o":"time_a894","oa":18351,"x":[43202]},{"a":43232,"t":"code","b":[208,17],"m":"bne","o":"b_A8F3","oa":43251},{"a":43234,"t":"code","b":[173,174,71],"m":"lda","o":"pose_a8c4","oa":18350},{"a":43237,"t":"code","b":[201,128],"m":"cmp","o":"#$80"},{"a":43239,"t":"code","b":[240,187],"m":"beq","o":"b_A8A4","oa":43172},{"a":43241,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":43243,"t":"code","b":[41,131],"m":"and","o":"#$83"},{"a":43245,"l":"j_A8ED","t":"code","b":[141,174,71],"m":"sta","o":"pose_a8c4","oa":18350,"x":[43280,43285]},{"a":43248,"t":"code","b":[76,196,168],"m":"jmp","o":"j_A8C4","oa":43204},{"a":43251,"l":"b_A8F3","t":"code","b":[206,175,71],"m":"dec","o":"time_a894","oa":18351,"x":[43232]},{"a":43254,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":43257,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":43259,"t":"code","b":[201,22],"m":"cmp","o":"#$16"},{"a":43261,"t":"code","b":[208,25],"m":"bne","o":"r_A918","oa":43288},{"a":43263,"t":"code","b":[173,174,71],"m":"lda","o":"pose_a8c4","oa":18350},{"a":43266,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":43268,"t":"code","b":[208,13],"m":"bne","o":"b_A913","oa":43283},{"a":43270,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":43273,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":43275,"t":"code","b":[141,154,3],"m":"sta","o":"fig_mirror","oa":922},{"a":43278,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43280,"t":"code","b":[76,237,168],"m":"jmp","o":"j_A8ED","oa":43245},{"a":43283,"l":"b_A913","t":"code","b":[169,130],"m":"lda","o":"#$82","x":[43268]},{"a":43285,"t":"code","b":[76,237,168],"m":"jmp","o":"j_A8ED","oa":43245},{"a":43288,"l":"r_A918","t":"code","b":[96],"m":"rts","x":[43193,43261]},{"a":43289,"l":"unused_drink_step","c":"Handler-shaped code that nothing references: JSR water_drink_glass, then next phase. The drink activity ($1D) calls water_drink_glass from $38BD instead.","t":"code","b":[32,31,169],"m":"jsr","o":"water_drink_glass","oa":43295},{"a":43292,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43295,"l":"water_drink_glass","c":"Take one glass from the water supply: if the level $2B51 (0 empty .. 11 full; CTRL W adds one at $2C87) is not 0, store it in sound request slot 0 ($3560; the request code at $3489 plays tune $11 for it), decrement it and redraw the level gauge in the bitmap ($2D0D). Called from the drink activity 29 at $38BD.","t":"code","b":[174,81,43],"m":"ldx","o":"water_level","oa":11089,"x":[14525,43289]},{"a":43298,"t":"code","b":[240,9],"m":"beq","o":"r_A92D","oa":43309},{"a":43300,"t":"code","b":[142,96,53],"m":"stx","o":"snd_req_water","oa":13664},{"a":43303,"t":"code","b":[206,81,43],"m":"dec","o":"water_level","oa":11089},{"a":43306,"t":"code","b":[76,13,45],"m":"jmp","o":"draw_water_tank","oa":11533},{"a":43309,"l":"r_A92D","t":"code","b":[96],"m":"rts","x":[43298]},{"a":43310,"l":"act_lamp_white","c":"Activity handler: lamp colour request $2B4B = $11 (white on white), next phase. The dispatcher ($8DAE) applies it to the lamp through lamp_colour_apply. Used by activity 6 (phase 7) and the first branch of activity 17 ($91DB).","t":"code","b":[169,17],"m":"lda","o":"#$11"},{"a":43312,"t":"code","b":[208,2],"m":"bne","o":"b_A934","oa":43316},{"a":43314,"l":"act_lamp_yellow","c":"Activity handler: lamp colour request $2B4B = $75 (yellow and green, as in the reference screenshot), next phase. Reached from the second half of activity 17's switch table ($91EE-$91FB: the table runs on past its first $8F0E entry).","t":"code","b":[169,117],"m":"lda","o":"#$75"},{"a":43316,"l":"b_A934","t":"code","b":[141,75,43],"m":"sta","o":"lamp_colour","oa":11083,"x":[43312]},{"a":43319,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43322,"l":"lamp_colour_apply","c":"Called by the activity dispatcher ($8DB6) whenever the requested lamp colour $2B4B differs from lamp_colour_shown: writes A to the colour-matrix cells $5F16 and $5F17 (row 19, columns 30-31: the shade of the floor lamp by the easy chair on the ground floor) and remembers it in lamp_colour_shown.","t":"code","b":[141,22,95],"m":"sta","o":"a_5F16","oa":24342,"x":[36278]},{"a":43325,"t":"code","b":[141,23,95],"m":"sta","o":"a_5F17","oa":24343},{"a":43328,"t":"code","b":[141,68,169],"m":"sta","o":"lamp_colour_shown","oa":43332},{"a":43331,"t":"code","b":[96],"m":"rts"},{"a":43332,"l":"lamp_colour_shown","c":"The lamp colour last written to the screen by lamp_colour_apply ($75 in play-02, $99 in the unstarted image, so the first dispatcher pass always paints it). Compared with the request $2B4B at $8DB1.","t":"byte","b":[117],"x":[36273,43328]},{"a":43333,"l":"act_tv_on","c":"Activity handler: switch the TV on. $2B4A = 1 (the main loop then flickers the TV screen's colour RAM at $2C9A/$2D59) and sound request slot 14 ($356E = 1; its handler $35E4 plays tune $1A); next phase. Used by activity 5 ($9081, phase 4) and activity 16 ($91AD).","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43335,"t":"code","b":[141,74,43],"m":"sta","o":"tv_on","oa":11082},{"a":43338,"t":"code","b":[141,110,53],"m":"sta","o":"snd_req_14","oa":13678},{"a":43341,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43344,"l":"act_tv_off","c":"Activity handler: switch the TV off. $2B4A = 0, sound request slot 15 ($356F = $FF; its handler $3603 stops slot 14's sound with tune $10), and $2D6B writes colour 1 into the TV screen's colour RAM ($D8F5, $D91D: row 6-7, column 5 in the attic); next phase. Reached from the $92A2 table and the second half of the $91AD table.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43346,"t":"code","b":[141,74,43],"m":"sta","o":"tv_on","oa":11082},{"a":43349,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":43351,"t":"code","b":[141,111,53],"m":"sta","o":"snd_req_stop14","oa":13679},{"a":43354,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43356,"t":"code","b":[32,107,45],"m":"jsr","o":"tv_screen_colour","oa":11627},{"a":43359,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43362,"l":"act54_walk_place24","c":"Activity 54 ($36), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $24 ($8EF4) and wait for the arrival ($8FA7); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43365,"l":"act54_phases","c":"Phase table of activity 54 ($36), read by the JSR $3F11 at $A962: one word per phase, the handler's address minus one. 0 walk_to_location_24 ($8EF4); 1 wait_or_request ($8FA7); 2 script_next ($8F0E).","t":"word","b":[243,142,166,143,13,143],"d":[36595,36774,36621]},{"a":43371,"l":"act55_carry_to_place24","c":"Activity 55 ($37), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $24 ($8EF4), then $293D, which keeps the carried item's sprite at his hand until he stops walking; the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43374,"l":"act55_phases","c":"Phase table of activity 55 ($37), read by the JSR $3F11 at $A96B: one word per phase, the handler's address minus one. 0 walk_to_location_24 ($8EF4); 1 carry_walk ($293D); 2 script_next ($8F0E).","t":"word","b":[243,142,60,41,13,143],"d":[36595,10556,36621]},{"a":43380,"l":"act56_back_idle","c":"Activity 56 ($38), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: $2131: sound request slot 4 ($3564, sound $0F), then he turns his back to the viewer (pose $21, his facing kept) and an idle time of 64-127 is drawn; $2156: every 8th pass counts it down, flipping his facing at random and changing between the back-view poses $3D-$3F, until the time runs out or a request is pending, then back to pose $21; the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43383,"l":"act56_phases","c":"Phase table of activity 56 ($38), read by the JSR $3F11 at $A974: one word per phase, the handler's address minus one. 0 face_away_sound ($2131); 1 face_away_idle ($2156); 2 script_next ($8F0E).","t":"word","b":[48,33,85,33,13,143],"d":[8496,8533,36621]},{"a":43389,"l":"act57_take_item2","c":"Activity 57 ($39), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: $AA32: take item 2 in his hand ($2783 = 2, then $28F0 sets the item sprite from the tables $2A4A and $2A5A); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43392,"l":"act57_phases","c":"Phase table of activity 57 ($39), read by the JSR $3F11 at $A97D: one word per phase, the handler's address minus one. 0 act_take_item2 ($AA32); 1 script_next ($8F0E).","t":"word","b":[49,170,13,143],"d":[43569,36621]},{"a":43396,"l":"act58_take_item4","c":"Activity 58 ($3A), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: $AA36: take item 4 in his hand ($2783 = 4, then $28F0); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43399,"l":"act58_phases","c":"Phase table of activity 58 ($3A), read by the JSR $3F11 at $A984: one word per phase, the handler's address minus one. 0 act_take_item4 ($AA36); 1 script_next ($8F0E).","t":"word","b":[53,170,13,143],"d":[43573,36621]},{"a":43403,"l":"act59_drop_item","c":"Activity 59 ($3B), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: $AA3E: clear the item sprite's state $03C6 and $0391 (nothing carried any more); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43406,"l":"act59_phases","c":"Phase table of activity 59 ($3B), read by the JSR $3F11 at $A98B: one word per phase, the handler's address minus one. 0 act_drop_item ($AA3E); 1 script_next ($8F0E).","t":"word","b":[61,170,13,143],"d":[43581,36621]},{"a":43410,"l":"act60_walk_place25","c":"Activity 60 ($3C), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $25, the kitchen counter ($A842), and wait ($8FA7); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43413,"l":"act60_phases","c":"Phase table of activity 60 ($3C), read by the JSR $3F11 at $A992: one word per phase, the handler's address minus one. 0 walk_place_25 ($A842); 1 wait_or_request ($8FA7); 2 script_next ($8F0E).","t":"word","b":[65,168,166,143,13,143],"d":[43073,36774,36621]},{"a":43419,"l":"act61_carry_to_place25","c":"Activity 61 ($3D), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $25 ($A842) carrying the item ($293D); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43422,"l":"act61_phases","c":"Phase table of activity 61 ($3D), read by the JSR $3F11 at $A99B: one word per phase, the handler's address minus one. 0 walk_place_25 ($A842); 1 carry_walk ($293D); 2 script_next ($8F0E).","t":"word","b":[65,168,60,41,13,143],"d":[43073,10556,36621]},{"a":43428,"l":"act62_open_cupboard","c":"Activity 62 ($3E), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: open object 12 (the kitchen counter's cupboard, colour cell row 21 column 6): $9469 then the object sub-machine $94CC; then act_wait_random ($AA13); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43431,"l":"act62_phases","c":"Phase table of activity 62 ($3E), read by the JSR $3F11 at $A9A4: one word per phase, the handler's address minus one. 0 open object 12 ($9469); 1 object_op ($94CC); 2 act_wait_random ($AA13); 3 script_next ($8F0E).","t":"word","b":[104,148,203,148,18,170,13,143],"d":[37992,38091,43538,36621]},{"a":43439,"l":"act63_close_cupboard","c":"Activity 63 ($3F), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 12 ($9434, then $94CC); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43442,"l":"act63_phases","c":"Phase table of activity 63 ($3F), read by the JSR $3F11 at $A9AF: one word per phase, the handler's address minus one. 0 close object 12 ($9434); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[51,148,203,148,13,143],"d":[37939,38091,36621]},{"a":43448,"l":"act64_walk_fridge","c":"Activity 64 ($40), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $23, the refrigerator ($A838), and wait ($8FA7); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43451,"l":"act64_phases","c":"Phase table of activity 64 ($40), read by the JSR $3F11 at $A9B8: one word per phase, the handler's address minus one. 0 walk_place_23 ($A838); 1 wait_or_request ($8FA7); 2 script_next ($8F0E).","t":"word","b":[55,168,166,143,13,143],"d":[43063,36774,36621]},{"a":43457,"l":"act65_carry_to_fridge","c":"Activity 65 ($41), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $23 ($A838) carrying the item ($293D); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43460,"l":"act65_phases","c":"Phase table of activity 65 ($41), read by the JSR $3F11 at $A9C1: one word per phase, the handler's address minus one. 0 walk_place_23 ($A838); 1 carry_walk ($293D); 2 script_next ($8F0E).","t":"word","b":[55,168,60,41,13,143],"d":[43063,10556,36621]},{"a":43466,"l":"act66_open_fridge_top","c":"Activity 66 ($42), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: open object 1 (the refrigerator's upper door, colour cell row 19 column 3): $9441, $94CC, then act_wait_random; the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43469,"l":"act66_phases","c":"Phase table of activity 66 ($42), read by the JSR $3F11 at $A9CA: one word per phase, the handler's address minus one. 0 open object 1 ($9441); 1 object_op ($94CC); 2 act_wait_random ($AA13); 3 script_next ($8F0E).","t":"word","b":[64,148,203,148,18,170,13,143],"d":[37952,38091,43538,36621]},{"a":43477,"l":"act67_close_fridge_top","c":"Activity 67 ($43), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 1 ($940C, $94CC); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43480,"l":"act67_phases","c":"Phase table of activity 67 ($43), read by the JSR $3F11 at $A9D5: one word per phase, the handler's address minus one. 0 close object 1 ($940C); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[11,148,203,148,13,143],"d":[37899,38091,36621]},{"a":43486,"l":"act68_open_fridge_low","c":"Activity 68 ($44), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: open object 2 (the refrigerator's lower door, colour cell row 20 column 3): $9445, $94CC, then act_wait_random; the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43489,"l":"act68_phases","c":"Phase table of activity 68 ($44), read by the JSR $3F11 at $A9DE: one word per phase, the handler's address minus one. 0 open object 2 ($9445); 1 object_op ($94CC); 2 act_wait_random ($AA13); 3 script_next ($8F0E).","t":"word","b":[68,148,203,148,18,170,13,143],"d":[37956,38091,43538,36621]},{"a":43497,"l":"act69_close_fridge_low","c":"Activity 69 ($45), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 2 ($9410, $94CC); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43500,"l":"act69_phases","c":"Phase table of activity 69 ($45), read by the JSR $3F11 at $A9E9: one word per phase, the handler's address minus one. 0 close object 2 ($9410); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[15,148,203,148,13,143],"d":[37903,38091,36621]},{"a":43506,"l":"act70_walk_place22","c":"Activity 70 ($46), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $22, the far left of the kitchen ($A833), and wait ($8FA7); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43509,"l":"act70_phases","c":"Phase table of activity 70 ($46), read by the JSR $3F11 at $A9F2: one word per phase, the handler's address minus one. 0 walk_place_22 ($A833); 1 wait_or_request ($8FA7); 2 script_next ($8F0E).","t":"word","b":[50,168,166,143,13,143],"d":[43058,36774,36621]},{"a":43515,"l":"act71_carry_to_place22","c":"Activity 71 ($47), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $22 ($A833) carrying the item ($293D); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43518,"l":"act71_phases","c":"Phase table of activity 71 ($47), read by the JSR $3F11 at $A9FB: one word per phase, the handler's address minus one. 0 walk_place_22 ($A833); 1 carry_walk ($293D); 2 script_next ($8F0E).","t":"word","b":[50,168,60,41,13,143],"d":[43058,10556,36621]},{"a":43524,"l":"act72_pose_seq","c":"Activity 72 ($48), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: act_pose_seq ($AF58): the poses $21, $1E, $21 in turn (pose_seq_table); the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43527,"l":"act72_phases","c":"Phase table of activity 72 ($48), read by the JSR $3F11 at $AA04: one word per phase, the handler's address minus one. 0 act_pose_seq ($AF58); 1 script_next ($8F0E).","t":"word","b":[87,175,13,143],"d":[44887,36621]},{"a":43531,"l":"act73_turn_back","c":"Activity 73 ($49), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: act_turn_back ($AA21): pose $21, his back to the viewer, in his current facing, waiting until it is reached; the last word, $8F0E, ends the activity and takes the next number from the running script.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43534,"l":"act73_phases","c":"Phase table of activity 73 ($49), read by the JSR $3F11 at $AA0B: one word per phase, the handler's address minus one. 0 act_turn_back ($AA21); 1 script_next ($8F0E).","t":"word","b":[32,170,13,143],"d":[43552,36621]},{"a":43538,"l":"wait_random_count","c":"Countdown for act_wait_random: starts wherever it was left and is decremented each call; the handler advances when its low five bits are 0 (every 32 calls).","t":"byte","b":[0],"x":[43539,43542]},{"a":43539,"l":"act_wait_random","c":"Activity handler: DEC wait_random_count and advance the phase when (count AND $1F) = 0, so a pause of 1-32 calls whose length depends on where the shared counter was left. Third phase of activities 62, 66 and 68 (after opening a door).","t":"code","b":[206,18,170],"m":"dec","o":"wait_random_count","oa":43538},{"a":43542,"t":"code","b":[173,18,170],"m":"lda","o":"wait_random_count","oa":43538},{"a":43545,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":43547,"t":"code","b":[208,3],"m":"bne","o":"r_AA20","oa":43552},{"a":43549,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43552,"l":"r_AA20","t":"code","b":[96],"m":"rts","x":[43547]},{"a":43553,"l":"act_turn_back","c":"Activity handler: pose $21 (his back to the viewer, view class 4 of pose_view_class) in his facing $039A via the pose changer $255B; returns until $2540 clears, then next phase. Activity 73.","t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":43555,"t":"code","b":[174,154,3],"m":"ldx","o":"fig_mirror","oa":922},{"a":43558,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":43561,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":43564,"t":"code","b":[208,3],"m":"bne","o":"r_AA31","oa":43569},{"a":43566,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43569,"l":"r_AA31","t":"code","b":[96],"m":"rts","x":[43564]},{"a":43570,"l":"act_take_item2","c":"Activity handler: $2783 = 2 and JMP $28F0, which puts item 2 in his hand (frame $2A4A,2 into $038D, colour $2A5A,2 into $1394) and advances the phase. Activity 57.","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":43572,"t":"code","b":[208,2],"m":"bne","o":"b_AA38","oa":43576},{"a":43574,"l":"act_take_item4","c":"Activity handler: $2783 = 4 and JMP $28F0 (item 4 in his hand). Activity 58.","t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":43576,"l":"b_AA38","t":"code","b":[141,131,39],"m":"sta","o":"carried_item","oa":10115,"x":[43572]},{"a":43579,"t":"code","b":[76,240,40],"m":"jmp","o":"pick_up_item","oa":10480},{"a":43582,"l":"act_drop_item","c":"Activity handler: $03C6 = 0 and $0391 = 0 (the carried item's sprite state; nothing held), next phase. Activity 59.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":43584,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":43587,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":43590,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43593,"l":"act74_start_script","c":"Activity 74: run script_act74, a meal without cooking. It is also the activity of request flag 8 ($BEFB, see request_activities), though no store to that flag was found.","t":"code","b":[169,86],"m":"lda","o":"#$56"},{"a":43595,"t":"code","b":[162,170],"m":"ldx","o":"#$AA"},{"a":43597,"l":"start_script","c":"Enter with A/X = the address of a script, a list of activity numbers ended by $00: store it in the script pointer $0423/$0424 and JMP $8F0E, which ends the current activity and starts the script's first entry. Used by the script activities here and by $905E, $9073, $913A, $9149, $9158.","t":"code","b":[141,35,4],"m":"sta","o":"script_ptr","oa":1059,"x":[36958,36979,37178,37193,37208,37215,43625,43653,43674,43681,43695,43753,44245]},{"a":43600,"t":"code","b":[142,36,4],"m":"stx","o":"script_ptr_hi","oa":1060},{"a":43603,"t":"code","b":[76,14,143],"m":"jmp","o":"script_next","oa":36622},{"a":43606,"l":"script_act74","c":"Script of activity 74: $3C (walk to the kitchen counter), $2B (take food from the cupboard, $3064), $20 (eat it, $52D8), $37 (carry the dish to place $24), $3B (put it down), $00.","t":"byte","b":[60,43,32,55,59,0]},{"a":43612,"l":"act115_back_idle","c":"Activity 115: $2136 (pose $21, his back to the viewer, then an idle time of 64-127) and $2156 (count it down among the back-view poses), then end. The same as activity 56 without its sound request.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43615,"l":"act115_phases","c":"Phase table of activity 115 ($73), read by the JSR $3F11 at $AA5C: one word per phase, the handler's address minus one. 0 face_away_turn ($2136); 1 face_away_idle ($2156); 2 script_next ($8F0E).","t":"word","b":[53,33,85,33,13,143],"d":[8501,8533,36621]},{"a":43621,"l":"act75_start_script","c":"Activity 75: run script_act75 (LDA #$6B, LDX #$AA, BNE start_script; the branch is always taken, so the bytes after it are the script).","t":"code","b":[169,107],"m":"lda","o":"#$6B"},{"a":43623,"t":"code","b":[162,170],"m":"ldx","o":"#$AA"},{"a":43625,"t":"code","b":[208,226],"m":"bne","o":"start_script","oa":43597},{"a":43627,"l":"script_act75","c":"Script of activity 75: $36 $38 $2B $3C $3E $48 $49 $75 $73 $40 $44 $48 $49 $45 $3C $73 $20 $37 $3B $38 $1C, $00: take food ($2B), the counter cupboard ($3C, $3E, $75), the refrigerator's lower door ($40, $44, $45), eat ($20), put the dish down ($37, $3B), then the bathroom mirror cabinet ($1C). A meal without the stove.","t":"byte","b":[54,56,43,60,62,72,73,117]},{"a":43635,"t":"byte","b":[115,64,68,72,73,69,60,115]},{"a":43643,"t":"byte","b":[32,55,59,56,28,0]},{"a":43649,"l":"act76_start_script","c":"Activity 76: run script_act76.","t":"code","b":[169,136],"m":"lda","o":"#$88"},{"a":43651,"t":"code","b":[162,170],"m":"ldx","o":"#$AA"},{"a":43653,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":43656,"l":"script_act76","c":"Script of activity 76: $36 $38 $2B $40 $44 $45 $3C $73 $20 $37 $3B $38 $1C, $00: take food, the refrigerator's lower door, the counter, eat, put the dish down, the bathroom mirror cabinet: a shorter form of script_act75.","t":"byte","b":[54,56,43,64,68,69,60,115]},{"a":43664,"t":"byte","b":[32,55,59,56,28,0]},{"a":43670,"l":"act01_start_script","c":"Activity 1: run script_act01, the longest script: a cooked meal (food from the cupboard, the refrigerator, the stove, a drink of water, eating) with a random activity in the middle.","t":"code","b":[169,178],"m":"lda","o":"#$B2"},{"a":43672,"t":"code","b":[162,170],"m":"ldx","o":"#$AA"},{"a":43674,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":43677,"l":"act28_start_script","c":"Activity 28: run script_act28.","t":"code","b":[169,164],"m":"lda","o":"#$A4"},{"a":43679,"t":"code","b":[162,170],"m":"ldx","o":"#$AA"},{"a":43681,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":43684,"l":"script_act28","c":"Script of activity 28: $6F (open the bathroom mirror cabinet), $70 (close it), $71 ($5B2B, at the same place with figure 2 animated in his hand), $6F, $70, $38 (idle with his back turned), $00.","t":"byte","b":[111,112,113,111,112,56,0]},{"a":43691,"l":"act21_start_script","c":"Activity 21: run script_act21: stop the stereo, pick one of four piano pieces, play the piano.","t":"code","b":[169,241],"m":"lda","o":"#$F1"},{"a":43693,"t":"code","b":[162,170],"m":"ldx","o":"#$AA"},{"a":43695,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":43698,"l":"script_act01","c":"Script of activity 1: $36 $38, $2B (take food), $40 $42 $43 $44 $45 (both refrigerator doors), $3C $3E $48 $49 $75 (the counter cupboard), $73, $30 (put a pot on the stove, $1E6E), $40 $44 $45, $3C $73, $1D (a drink of water), $74 (act116_choose, which rewrites the next entry), script_act01_choice, $31 (take the pot off the stove, $1E85), $3C $73, $20 (eat), $37 $3B (put the dish down), $38, $1C (the bathroom mirror cabinet), $00.","t":"byte","b":[54,56,43,64,66,67,68,69]},{"a":43706,"t":"byte","b":[60,62,72,73,117,115,48,64]},{"a":43714,"t":"byte","b":[68,69,60,115,29,116]},{"a":43720,"l":"script_act01_choice","c":"The entry of script_act01 that act116_choose rewrites just before it is reached, while the pot is on the stove: $18 (activity 24, act24_easy_chair_paper), $22 (activity 34, feeding the dog, $280A), $06 (activity 6, the easy chair with the lamp) or $22 again. $06 in play-02 and in the unstarted image.","t":"byte","b":[6,49,60,115,32,55,59,56],"x":[43739]},{"a":43728,"t":"byte","b":[28,0]},{"a":43730,"l":"act116_choose","c":"Activity 116: pick the next entry of script_act01 at random: script_act01_choice = choose_table[random AND 3], then end ($8F0E).","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":43733,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":43735,"t":"code","b":[170],"m":"tax"},{"a":43736,"t":"code","b":[189,225,170],"m":"lda","o":"choose_table,x","oa":43745},{"a":43739,"t":"code","b":[141,200,170],"m":"sta","o":"script_act01_choice","oa":43720},{"a":43742,"t":"code","b":[76,14,143],"m":"jmp","o":"script_next","oa":36622},{"a":43745,"l":"choose_table","c":"Four activity numbers for act116_choose: $18, $22, $06, $22 ($22, feeding the dog, twice, so it comes up half the time).","t":"byte","b":[24,34,6,34],"x":[43736]},{"a":43749,"l":"act09_start_script","c":"Activity 9: run script_act09 (stop the stereo, change the record, start it again).","t":"code","b":[169,236],"m":"lda","o":"#$EC","x":[43765]},{"a":43751,"t":"code","b":[162,170],"m":"ldx","o":"#$AA"},{"a":43753,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":43756,"l":"script_act09","c":"Script of activity 9: $79 (switch the stereo off if it is playing, $90F7), $77 (act119_random_key), $76 (at the stereo: open it and rummage once, act118_stereo_rummage), $78 (switch the stereo on, $90E1), $00. Putting on another record.","t":"byte","b":[121,119,118,120,0]},{"a":43761,"l":"script_act21","c":"Script of activity 21: $79 (switch the stereo off if it is playing, $90F7), $4E (pick one of four piano pieces: act78_pick_tune), $4F (play the piano, $E3CA), $00.","t":"byte","b":[121,78,79,0]},{"a":43765,"l":"unused_jmp_act09","c":"JMP $AAE5 (act09_start_script). Nothing references this instruction.","t":"code","b":[76,229,170],"m":"jmp","o":"act09_start_script","oa":43749},{"a":43768,"l":"act118_stereo_rummage","c":"Activity 118: $8EEA (walk to place 1, attic x=72, in front of the stereo), wait ($8FA7), rummage_start ($92F9), act_rummage_once ($47AB = 1), rummage ($9340), end.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43771,"l":"act118_phases","c":"Phase table of activity 118 ($76), read by the JSR $3F11 at $AAF8: one word per phase, the handler's address minus one. 0 set_target_1 ($8EEA); 1 wait_or_request ($8FA7); 2 rummage_start ($92F9); 3 act_rummage_once ($AB07); 4 rummage ($9340); 5 script_next ($8F0E).","t":"word","b":[233,142,166,143,248,146,6,171],"d":[36585,36774,37624,43782]},{"a":43779,"t":"word","b":[63,147,13,143],"d":[37695,36621]},{"a":43783,"l":"act_rummage_once","c":"Activity handler: $47AB = 1, the rummage length that rummage ($9340) counts down at $935E (rummage_start had just drawn it from a table), so the rummage is short; next phase. Activity 118, phase 3.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43785,"t":"code","b":[141,171,71],"m":"sta","o":"count_9324","oa":18347},{"a":43788,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":43791,"l":"act119_random_key","c":"Activity 119: $478C = random AND 3, then end. The record player's note lookup at $44A9-$44B7 adds three times $478C to the note index into the table at $3A03, so the record started next plays at one of four pitches.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":43794,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":43796,"t":"code","b":[141,140,71],"m":"sta","o":"music_tune","oa":18316},{"a":43799,"t":"code","b":[76,14,143],"m":"jmp","o":"script_next","oa":36622},{"a":43802,"l":"act78_pick_tune","c":"Activity 78: choose one of the four piano pieces in tune_12_choices at random and install it as tune 12 of the sound driver: with the I/O area banked out ($01 AND $FE, the old value kept in $34) it writes the piece's three voice pointers (base, base+4, base+8) into $D7AC-$D7B1, the tune-12 entry of the tune table at $D764 (six bytes a tune). Then end.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":43805,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":43807,"t":"code","b":[10],"m":"asl","o":"a"},{"a":43808,"t":"code","b":[170],"m":"tax"},{"a":43809,"t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1},{"a":43811,"t":"code","b":[133,52],"m":"sta","o":"temp_34","oa":52},{"a":43813,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":43815,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":43817,"t":"code","b":[189,79,171],"m":"lda","o":"tune_12_choices_hi,x","oa":43855},{"a":43820,"t":"code","b":[141,173,215],"m":"sta","o":"a_D7AD","oa":55213},{"a":43823,"t":"code","b":[141,175,215],"m":"sta","o":"a_D7AF","oa":55215},{"a":43826,"t":"code","b":[141,177,215],"m":"sta","o":"a_D7B1","oa":55217},{"a":43829,"t":"code","b":[189,78,171],"m":"lda","o":"tune_12_choices,x","oa":43854},{"a":43832,"t":"code","b":[141,172,215],"m":"sta","o":"snd_sound_12","oa":55212},{"a":43835,"t":"code","b":[24],"m":"clc"},{"a":43836,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":43838,"t":"code","b":[141,174,215],"m":"sta","o":"snd_sound_12_c1","oa":55214},{"a":43841,"t":"code","b":[24],"m":"clc"},{"a":43842,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":43844,"t":"code","b":[141,176,215],"m":"sta","o":"snd_sound_12_c2","oa":55216},{"a":43847,"t":"code","b":[165,52],"m":"lda","o":"temp_34","oa":52},{"a":43849,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":43851,"t":"code","b":[76,14,143],"m":"jmp","o":"script_next","oa":36622},{"a":43854,"l":"tune_12_choices","c":"Four piece addresses for act78_pick_tune: $8020, $838D, $85BA, $8730. Each piece starts with three voice headers four bytes apart.","t":"word","b":[32],"d":[],"x":[43829]},{"a":43855,"l":"tune_12_choices_hi","c":"High bytes of tune_12_choices, read as LDA $AB4F,X at $AB29 (X = 2 x the random choice).","t":"word","b":[128,141,131,186,133,48,135],"d":[36224,47747,12421],"x":[43817]},{"a":43862,"l":"activity_reset_phase","c":"Reset the activity's phase $4C and sub-phase $68 to 0. Called when an activity ends ($8F0E, $8F56) and when one is switched ($901F, $30AE, $33BA).","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[12462,13242,36622,36694,36895,37039]},{"a":43864,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":43866,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":43868,"t":"code","b":[96],"m":"rts"},{"a":43869,"l":"activity_skip_phases","c":"Add A to the phase $4C: skip handlers. Callers $2725, $9208, $9217 and $9482 (the latter skips two phases when an object is already open or closed).","t":"code","b":[24],"m":"clc","x":[10021,37384,37399,38018]},{"a":43870,"t":"code","b":[101,76],"m":"adc","o":"activity_phase","oa":76},{"a":43872,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":43874,"t":"code","b":[96],"m":"rts"},{"a":43875,"l":"set_person_destination","c":"A = a place number: store it in $03C0 (the person's destination place), then fall into start_walk_if_away.","t":"code","b":[141,192,3],"m":"sta","o":"move_target","oa":960,"x":[12931,13159,13292,14387,36616,38350,43096]},{"a":43878,"l":"start_walk_if_away","c":"X=0 (the person): $1E11 compares his position with his destination place $03C0 (x/2, floor line, and the third place byte); if they differ, $03BC = 2, which makes the figure update start walking.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[36730]},{"a":43880,"t":"code","b":[32,17,30],"m":"jsr","o":"at_target","oa":7697},{"a":43883,"t":"code","b":[240,5],"m":"beq","o":"r_AB72","oa":43890},{"a":43885,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":43887,"t":"code","b":[141,188,3],"m":"sta","o":"move_state","oa":956},{"a":43890,"l":"r_AB72","t":"code","b":[96],"m":"rts","x":[43883]},{"a":43891,"l":"act80_open_bath_door","c":"Activity 80 ($50), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $17 ($A82E), wait, open object 3 (the pink bathroom door right of the mirror, colour cell row 11 column 23: $9449, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43894,"l":"act80_phases","c":"Phase table of activity 80 ($50), read by the JSR $3F11 at $AB73: one word per phase, the handler's address minus one. 0 walk_place_17 ($A82E); 1 wait_or_request ($8FA7); 2 open object 3 ($9449); 3 object_op ($94CC); 4 script_next ($8F0E).","t":"word","b":[45,168,166,143,72,148,203,148],"d":[43053,36774,37960,38091]},{"a":43902,"t":"word","b":[13,143],"d":[36621]},{"a":43904,"l":"act81_step_in","c":"Activity 81 ($51), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: $3357 (a destination 18 pixels right of the current one, $1DDA = $0C), wait, act_pose_5B_wait, then the doorway walk from sub-phase $10 (set_doorway_c $31D3, doorway_script $31E6): into the doorway; then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43907,"l":"act81_phases","c":"Phase table of activity 81 ($51), read by the JSR $3F11 at $AB80: one word per phase, the handler's address minus one. 0 act81_target ($3357); 1 wait_or_request ($8FA7); 2 act_pose_5B_wait ($A876); 3 set_doorway_c ($31D3); 4 doorway_script ($31E6); 5 script_next ($8F0E).","t":"word","b":[86,51,166,143,117,168,210,49],"d":[13142,36774,43125,12754]},{"a":43915,"t":"word","b":[229,49,13,143],"d":[12773,36621]},{"a":43919,"l":"act82_close_bath_door","c":"Activity 82 ($52), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 3 where he stands ($96B5, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43922,"l":"act82_phases","c":"Phase table of activity 82 ($52), read by the JSR $3F11 at $AB8F: one word per phase, the handler's address minus one. 0 close object 3 where he stands ($96B5); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[180,150,203,148,13,143],"d":[38580,38091,36621]},{"a":43928,"l":"act83_open_bath_door","c":"Activity 83 ($53), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: open object 3 where he stands ($96A2, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43931,"l":"act83_phases","c":"Phase table of activity 83 ($53), read by the JSR $3F11 at $AB98: one word per phase, the handler's address minus one. 0 open object 3 where he stands ($96A2); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[161,150,203,148,13,143],"d":[38561,38091,36621]},{"a":43937,"l":"act84_shower","c":"Activity 84 ($54), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: $1F14, $1FAD, $1F95: the shower ($1F14 puts him in the bathtub, pose $40, with figure 2 as the water); then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43940,"l":"act84_phases","c":"Phase table of activity 84 ($54), read by the JSR $3F11 at $ABA1: one word per phase, the handler's address minus one. 0 shower_start ($1F14); 1 shower_run ($1FAD); 2 shower_end ($1F95); 3 script_next ($8F0E).","t":"word","b":[19,31,172,31,148,31,13,143],"d":[7955,8108,8084,36621]},{"a":43948,"l":"act85_colours_pair","c":"Activity 85 ($55), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: person_colours_pair ($B9BE): new colours for the person's sprites, a pair from colour_pairs; then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43951,"l":"act85_phases","c":"Phase table of activity 85 ($55), read by the JSR $3F11 at $ABAC: one word per phase, the handler's address minus one. 0 person_colours_pair ($B9BE); 1 script_next ($8F0E).","t":"word","b":[189,185,13,143],"d":[47549,36621]},{"a":43955,"l":"act86_step_out","c":"Activity 86 ($56), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: the doorway walk from sub-phase $19 (set_doorway_d $31D7, doorway_script $31E6): back out of the doorway; then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43958,"l":"act86_phases","c":"Phase table of activity 86 ($56), read by the JSR $3F11 at $ABB3: one word per phase, the handler's address minus one. 0 set_doorway_d ($31D7); 1 doorway_script ($31E6); 2 script_next ($8F0E).","t":"word","b":[214,49,229,49,13,143],"d":[12758,12773,36621]},{"a":43964,"l":"act87_maybe_close_bath","c":"Activity 87 ($57), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 3 or leave it, at random ($93DF: the chance comes from $0369 and the masks at $96C5), $94CC; then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43967,"l":"act87_phases","c":"Phase table of activity 87 ($57), read by the JSR $3F11 at $ABBC: one word per phase, the handler's address minus one. 0 close object 3 or leave it ($93DF); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[222,147,203,148,13,143],"d":[37854,38091,36621]},{"a":43973,"l":"act88_open_upstairs_closet","c":"Activity 88 ($58), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place 7 ($A810), wait, open object 5 (the upstairs closet, the white door in the attic, colour cell row 3 column 22: $9451, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43976,"l":"act88_phases","c":"Phase table of activity 88 ($58), read by the JSR $3F11 at $ABC5: one word per phase, the handler's address minus one. 0 walk_place_07 ($A810); 1 wait_or_request ($8FA7); 2 open object 5 ($9451); 3 object_op ($94CC); 4 script_next ($8F0E).","t":"word","b":[15,168,166,143,80,148,203,148],"d":[43023,36774,37968,38091]},{"a":43984,"t":"word","b":[13,143],"d":[36621]},{"a":43986,"l":"act89_close_upstairs_closet","c":"Activity 89 ($59), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 5 where he stands ($96AD, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43989,"l":"act89_phases","c":"Phase table of activity 89 ($59), read by the JSR $3F11 at $ABD2: one word per phase, the handler's address minus one. 0 close object 5 where he stands ($96AD); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[172,150,203,148,13,143],"d":[38572,38091,36621]},{"a":43995,"l":"act90_open_upstairs_closet","c":"Activity 90 ($5A), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: open object 5 where he stands ($969A, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":43998,"l":"act90_phases","c":"Phase table of activity 90 ($5A), read by the JSR $3F11 at $ABDB: one word per phase, the handler's address minus one. 0 open object 5 where he stands ($969A); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[153,150,203,148,13,143],"d":[38553,38091,36621]},{"a":44004,"l":"act91_maybe_close_upstairs_closet","c":"Activity 91 ($5B), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 5 or leave it at random ($93E7, $94CC), then $558E; then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44007,"l":"act91_phases","c":"Phase table of activity 91 ($5B), read by the JSR $3F11 at $ABE4: one word per phase, the handler's address minus one. 0 close object 5 or leave it ($93E7); 1 object_op ($94CC); 2 letter_hide_fig2 ($558E); 3 script_next ($8F0E).","t":"word","b":[230,147,203,148,141,85,13,143],"d":[37862,38091,21901,36621]},{"a":44015,"l":"act92_open_closet","c":"Activity 92 ($5C), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $14 ($A829), wait, open object 4 (the bedroom closet, colour cell row 11 column 9: $944D, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44018,"l":"act92_phases","c":"Phase table of activity 92 ($5C), read by the JSR $3F11 at $ABEF: one word per phase, the handler's address minus one. 0 walk_place_14 ($A829); 1 wait_or_request ($8FA7); 2 open object 4 ($944D); 3 object_op ($94CC); 4 script_next ($8F0E).","t":"word","b":[40,168,166,143,76,148,203,148],"d":[43048,36774,37964,38091]},{"a":44026,"t":"word","b":[13,143],"d":[36621]},{"a":44028,"l":"act93_close_closet","c":"Activity 93 ($5D), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 4 where he stands ($96B1, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44031,"l":"act93_phases","c":"Phase table of activity 93 ($5D), read by the JSR $3F11 at $ABFC: one word per phase, the handler's address minus one. 0 close object 4 where he stands ($96B1); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[176,150,203,148,13,143],"d":[38576,38091,36621]},{"a":44037,"l":"act94_open_closet_here","c":"Activity 94 ($5E), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: open object 4 where he stands ($969E, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44040,"l":"act94_phases","c":"Phase table of activity 94 ($5E), read by the JSR $3F11 at $AC05: one word per phase, the handler's address minus one. 0 open object 4 where he stands ($969E); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[157,150,203,148,13,143],"d":[38557,38091,36621]},{"a":44046,"l":"act95_maybe_close_closet","c":"Activity 95 ($5F), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 4 or leave it at random ($93E3, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44049,"l":"act95_phases","c":"Phase table of activity 95 ($5F), read by the JSR $3F11 at $AC0E: one word per phase, the handler's address minus one. 0 close object 4 or leave it ($93E3); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[226,147,203,148,13,143],"d":[37858,38091,36621]},{"a":44055,"l":"act96_open_front_door","c":"Activity 96 ($60), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $2E ($A847), wait, open object 0 (the front door, colour cell row 19 column 36: $943D, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44058,"l":"act96_phases","c":"Phase table of activity 96 ($60), read by the JSR $3F11 at $AC17: one word per phase, the handler's address minus one. 0 walk_place_2E ($A847); 1 wait_or_request ($8FA7); 2 open object 0 ($943D); 3 object_op ($94CC); 4 script_next ($8F0E).","t":"word","b":[70,168,166,143,60,148,203,148],"d":[43078,36774,37948,38091]},{"a":44066,"t":"word","b":[13,143],"d":[36621]},{"a":44068,"l":"act97_door_seq_0","c":"Activity 97 ($61), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: the doorway walk from sub-phase 0 (set_doorway_a $31DB, doorway_script $31E6), as activity 7 runs it after opening the front door; then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44071,"l":"act97_phases","c":"Phase table of activity 97 ($61), read by the JSR $3F11 at $AC24: one word per phase, the handler's address minus one. 0 set_doorway_a ($31DB); 1 doorway_script ($31E6); 2 script_next ($8F0E).","t":"word","b":[218,49,229,49,13,143],"d":[12762,12773,36621]},{"a":44077,"l":"act98_close_front_door","c":"Activity 98 ($62), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 0 where he stands ($96A9, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44080,"l":"act98_phases","c":"Phase table of activity 98 ($62), read by the JSR $3F11 at $AC2D: one word per phase, the handler's address minus one. 0 close object 0 where he stands ($96A9); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[168,150,203,148,13,143],"d":[38568,38091,36621]},{"a":44086,"l":"act99_open_front_door_here","c":"Activity 99 ($63), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: open object 0 where he stands ($9696, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44089,"l":"act99_phases","c":"Phase table of activity 99 ($63), read by the JSR $3F11 at $AC36: one word per phase, the handler's address minus one. 0 open object 0 where he stands ($9696); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[149,150,203,148,13,143],"d":[38549,38091,36621]},{"a":44095,"l":"act100_door_seq_9","c":"Activity 100 ($64), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: the doorway walk from sub-phase 9 (set_doorway_b $31DF, doorway_script $31E6), as activity 7 runs it before closing the front door again; then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44098,"l":"act100_phases","c":"Phase table of activity 100 ($64), read by the JSR $3F11 at $AC3F: one word per phase, the handler's address minus one. 0 set_doorway_b ($31DF); 1 doorway_script ($31E6); 2 script_next ($8F0E).","t":"word","b":[222,49,229,49,13,143],"d":[12766,12773,36621]},{"a":44104,"l":"act101_maybe_close_front","c":"Activity 101 ($65), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: close object 0 or leave it at random ($93D3, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44107,"l":"act101_phases","c":"Phase table of activity 101 ($65), read by the JSR $3F11 at $AC48: one word per phase, the handler's address minus one. 0 close object 0 or leave it ($93D3); 1 object_op ($94CC); 2 script_next ($8F0E).","t":"word","b":[210,147,203,148,13,143],"d":[37842,38091,36621]},{"a":44113,"l":"act102_shower","c":"Activity 102 ($66), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: $1F14, $1FAD, $1F95, the shower (the same three handlers as activity 84); then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44116,"l":"act102_phases","c":"Phase table of activity 102 ($66), read by the JSR $3F11 at $AC51: one word per phase, the handler's address minus one. 0 shower_start ($1F14); 1 shower_run ($1FAD); 2 shower_end ($1F95); 3 script_next ($8F0E).","t":"word","b":[19,31,172,31,148,31,13,143],"d":[7955,8108,8084,36621]},{"a":44124,"l":"act103_colours_single","c":"Activity 103 ($67), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: person_colours_single ($B9F5): one new colour for both sprite colour slots, from colour_singles; then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44127,"l":"act103_phases","c":"Phase table of activity 103 ($67), read by the JSR $3F11 at $AC5C: one word per phase, the handler's address minus one. 0 person_colours_single ($B9F5); 1 script_next ($8F0E).","t":"word","b":[244,185,13,143],"d":[47604,36621]},{"a":44131,"l":"act104_wait_wrap","c":"Activity 104 ($68), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: act_wait_wrap ($AC6D); then $8F0E ends it.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44134,"l":"act104_phases","c":"Phase table of activity 104 ($68), read by the JSR $3F11 at $AC63: one word per phase, the handler's address minus one. 0 act_wait_wrap ($AC6D); 1 script_next ($8F0E); 2 script_next ($8F0E). The last word is a second $8F0E that no phase reaches.","t":"word","b":[108,172,13,143,13,143],"d":[44140,36621,36621]},{"a":44140,"l":"wait_wrap_count","c":"Counter for act_wait_wrap: incremented each call until it wraps to 0, so the pause lasts up to 256 calls from wherever it was left ($00 in play-02, $31 in play-01).","t":"byte","b":[0],"x":[44141]},{"a":44141,"l":"act_wait_wrap","c":"Activity handler: INC wait_wrap_count; when it wraps to 0 advance the phase. Activity 104. The switch table before it holds $8F0E twice ($AC68 and $AC6A); the second entry is never reached.","t":"code","b":[238,108,172],"m":"inc","o":"wait_wrap_count","oa":44140},{"a":44144,"t":"code","b":[208,3],"m":"bne","o":"r_AC75","oa":44149},{"a":44146,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":44149,"l":"r_AC75","t":"code","b":[96],"m":"rts","x":[44144]},{"a":44150,"l":"act105_dresser","c":"Activity 105 ($69), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $15 ($A81F), wait, open object 10 (the bedroom dresser, colour cell row 14 column 12: $9461, $94CC), $92F9, $9340, close it or leave it ($93F7, $94CC), $9506; then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44153,"l":"act105_phases","c":"Phase table of activity 105 ($69), read by the JSR $3F11 at $AC76: one word per phase, the handler's address minus one. 0 walk_place_15 ($A81F); 1 wait_or_request ($8FA7); 2 open object 10 ($9461); 3 object_op ($94CC); 4 rummage_start ($92F9); 5 rummage ($9340); 6 close object 10 or leave it ($93F7); 7 object_op ($94CC); 8 getup_step ($9506); 9 script_next ($8F0E).","t":"word","b":[30,168,166,143,96,148,203,148],"d":[43038,36774,37984,38091]},{"a":44161,"t":"word","b":[248,146,63,147,246,147,203,148],"d":[37624,37695,37878,38091]},{"a":44169,"t":"word","b":[5,149,13,143],"d":[38149,36621]},{"a":44173,"l":"act106_nightstand","c":"Activity 106 ($6A), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $13 ($A824), wait, open object 9 (the bedroom nightstand, colour cell row 14 column 6: $945D, $94CC), $92F9, $9340, close it or leave it ($93F3, $94CC), $9506; then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44176,"l":"act106_phases","c":"Phase table of activity 106 ($6A), read by the JSR $3F11 at $AC8D: one word per phase, the handler's address minus one. 0 walk_place_13 ($A824); 1 wait_or_request ($8FA7); 2 open object 9 ($945D); 3 object_op ($94CC); 4 rummage_start ($92F9); 5 rummage ($9340); 6 close object 9 or leave it ($93F3); 7 object_op ($94CC); 8 getup_step ($9506); 9 script_next ($8F0E).","t":"word","b":[35,168,166,143,92,148,203,148],"d":[43043,36774,37980,38091]},{"a":44184,"t":"word","b":[248,146,63,147,242,147,203,148],"d":[37624,37695,37874,38091]},{"a":44192,"t":"word","b":[5,149,13,143],"d":[38149,36621]},{"a":44196,"l":"act111_open_mirror","c":"Activity 111 ($6F), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $16 ($8EEF), wait, open object 6 (the bathroom mirror cabinet, colour cell row 11 column 21: $9455, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44199,"l":"act111_phases","c":"Phase table of activity 111 ($6F), read by the JSR $3F11 at $ACA4: one word per phase, the handler's address minus one. 0 walk_to_location_16 ($8EEF); 1 wait_or_request ($8FA7); 2 open object 6 ($9455); 3 object_op ($94CC); 4 script_next ($8F0E).","t":"word","b":[238,142,166,143,84,148,203,148],"d":[36590,36774,37972,38091]},{"a":44207,"t":"word","b":[13,143],"d":[36621]},{"a":44209,"l":"act112_close_mirror","c":"Activity 112 ($70), from the table at $8DC9: JSR $3F11 switches on the phase $4C through the handler words that follow (address minus one). Phases: walk to place $16 ($8EEF), wait, close object 6 ($9420, $94CC); then $8F0E ends it. Objects have states 0 closed, 1 opening, 2 open, 3 closing ($96CD,X).","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44212,"l":"act112_phases","c":"Phase table of activity 112 ($70), read by the JSR $3F11 at $ACB1: one word per phase, the handler's address minus one. 0 walk_to_location_16 ($8EEF); 1 wait_or_request ($8FA7); 2 close object 6 ($9420); 3 object_op ($94CC); 4 script_next ($8F0E).","t":"word","b":[238,142,166,143,31,148,203,148],"d":[36590,36774,37919,38091]},{"a":44220,"t":"word","b":[13,143],"d":[36621]},{"a":44222,"l":"script_closet","c":"Script run by activities 107 and 109: $69 (the dresser), $5C (open the bedroom closet), $51 (walk on 18 pixels, pose $5B, then the doorway walk from sub-phase $10), $5D (close it), then script_closet_colour (new sprite colours), $68 (wait), $5E (open it), $56 (the doorway walk from sub-phase $19), $5F (close it or leave it), $00. His colours change while the closet door is shut: changing clothes.","t":"byte","b":[105,92,81,93]},{"a":44226,"l":"script_closet_colour","c":"The entry of script_closet that set_colour_step_pair / set_colour_step_single rewrite: $55 (colours from colour_pairs) or $67 (one colour from colour_singles). The same value goes into $9068, the matching entry of activity 3's script at $9061.","t":"byte","b":[85,104,94,86,95,0],"x":[44266]},{"a":44232,"l":"act108_dress_pair_bath","c":"Activity 108: put $55 (two-colour clothes) into both clothes-change scripts (set_colour_step_pair), then run activity 3's script ($905A, script at $9061: the dresser, then through the bathroom door, object 3, a shower (activity 102) before the change of colours).","t":"code","b":[32,228,172],"m":"jsr","o":"set_colour_step_pair","oa":44260},{"a":44235,"t":"code","b":[76,90,144],"m":"jmp","o":"act03_start_script","oa":36954},{"a":44238,"l":"act107_dress_pair_closet","c":"Activity 107: put $55 (two-colour clothes) into both clothes-change scripts, then run script_closet.","t":"code","b":[32,228,172],"m":"jsr","o":"set_colour_step_pair","oa":44260},{"a":44241,"l":"run_script_closet","c":"LDA #<script_closet, LDX #>script_closet, JMP start_script. Shared tail of activities 107 and 109.","t":"code","b":[169,190],"m":"lda","o":"#$BE","x":[44257]},{"a":44243,"t":"code","b":[162,172],"m":"ldx","o":"#$AC"},{"a":44245,"t":"code","b":[76,77,170],"m":"jmp","o":"start_script","oa":43597},{"a":44248,"l":"act110_dress_single_bath","c":"Activity 110: put $67 (one-colour clothes) into both clothes-change scripts (set_colour_step_single), then run activity 3's script.","t":"code","b":[32,232,172],"m":"jsr","o":"set_colour_step_single","oa":44264},{"a":44251,"t":"code","b":[76,90,144],"m":"jmp","o":"act03_start_script","oa":36954},{"a":44254,"l":"act109_dress_single_closet","c":"Activity 109: put $67 (one-colour clothes) into both clothes-change scripts, then run script_closet.","t":"code","b":[32,232,172],"m":"jsr","o":"set_colour_step_single","oa":44264},{"a":44257,"t":"code","b":[76,209,172],"m":"jmp","o":"run_script_closet","oa":44241},{"a":44260,"l":"set_colour_step_pair","c":"A = $55 (the activity that picks a colour pair), then set_colour_step_single's store: script_closet_colour and $9068 both get A.","t":"code","b":[169,85],"m":"lda","o":"#$55","x":[44232,44238]},{"a":44262,"t":"code","b":[208,2],"m":"bne","o":"b_ACEA","oa":44266},{"a":44264,"l":"set_colour_step_single","c":"A = $67 (the activity that picks one colour); store A into script_closet_colour ($ACC2) and $9068 (activity 3's script), RTS.","t":"code","b":[169,103],"m":"lda","o":"#$67","x":[44248,44254]},{"a":44266,"l":"b_ACEA","t":"code","b":[141,194,172],"m":"sta","o":"script_closet_colour","oa":44226,"x":[44262]},{"a":44269,"t":"code","b":[141,104,144],"m":"sta","o":"script_act03_slot7","oa":36968},{"a":44272,"t":"code","b":[96],"m":"rts"},{"a":44273,"l":"pose_change_busy","c":"Non-zero while the person's body is changing pose: $255B sets $FF, it is cleared when the pose is reached ($25A1), and other code writes it as well ($24BA, $2630, $53DE, $54A5, $5B3F, $5B5A, $5B89, $930A). While it is set upper_body_new_target picks no new target.","t":"byte","b":[0],"x":[9402,9498,9574,9633,9776,21470,21669,23359,23386,23433,37642,44501,57560,57594]},{"a":44274,"l":"gaze_mode","c":"How upper_body_new_target picks the next target frame of the upper body (head and shoulders). Bits 0-1: how far the head may turn from the body (target offset 0..+2 notches; 0 lets $0414 choose); bits 2-3: bit 3 set turns to the other side (0 lets chance choose); bits 5-6: the head row (0 lets chance choose, with row 1 when that is 0 too); bit 7: use the row as it is, without the random nudge. Values written: $02 (the usual, $3829, $38ED, $552D, $9329, act_paper_away), $42 (act_paper_frame1), $4A ($583C, the computer), $A1 ($38AF, act_paper_pose34), $A2 ($55A6, $9305) and $C1 ($3892, $38BA); $589C stores a value from $3571.","t":"byte","b":[2],"x":[14379,14482,14511,14522,14573,21805,21926,22588,22684,37637,37673,44507,44528,44578,44605,48967,48980,49039]},{"a":44275,"l":"upper_body_turn","c":"Called by the main loop ($09CD). Turns the person's upper sprite (figure 4, head and shoulders; its frame is $038F) one step at a time towards the target frame $03F4, and picks a new target when it gets there. Nothing happens while $03C8 AND 6 (figure 4 being redrawn). $037C counts passes to the next step. A step turns the direction (bits 0-2 of the frame) one notch the short way round, or when the direction already matches moves the row (bits 3-4) by 8 towards the target's; frames of $18 and above first become 8. The facing $039E becomes 8 for directions 1-3, else 0. The next step comes 5-8 passes later; on arrival it waits a random 7-255 passes (3 for the highest draw) before choosing again. Each step sets the redraw bits ($03C8 OR $82, $03C4 OR 1).","t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968,"x":[2509]},{"a":44278,"t":"code","b":[41,6],"m":"and","o":"#$06"},{"a":44280,"t":"code","b":[208,11],"m":"bne","o":"r_AD05","oa":44293},{"a":44282,"t":"code","b":[174,124,3],"m":"ldx","o":"head_turn_timer","oa":892},{"a":44285,"t":"code","b":[240,15],"m":"beq","o":"b_AD0E","oa":44302},{"a":44287,"t":"code","b":[202],"m":"dex"},{"a":44288,"t":"code","b":[142,124,3],"m":"stx","o":"head_turn_timer","oa":892},{"a":44291,"t":"code","b":[240,1],"m":"beq","o":"b_AD06","oa":44294},{"a":44293,"l":"r_AD05","t":"code","b":[96],"m":"rts","x":[44280]},{"a":44294,"l":"b_AD06","t":"code","b":[173,244,3],"m":"lda","o":"head_target","oa":1012,"x":[44291]},{"a":44297,"t":"code","b":[205,143,3],"m":"cmp","o":"fig_frame_head","oa":911},{"a":44300,"t":"code","b":[208,3],"m":"bne","o":"b_AD11","oa":44305},{"a":44302,"l":"b_AD0E","t":"code","b":[76,213,173],"m":"jmp","o":"upper_body_new_target","oa":44501,"x":[44285]},{"a":44305,"l":"b_AD11","t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044,"x":[44300]},{"a":44308,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44310,"t":"code","b":[24],"m":"clc"},{"a":44311,"t":"code","b":[105,5],"m":"adc","o":"#$05"},{"a":44313,"t":"code","b":[141,124,3],"m":"sta","o":"head_turn_timer","oa":892},{"a":44316,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":44319,"t":"code","b":[201,24],"m":"cmp","o":"#$18"},{"a":44321,"t":"code","b":[144,5],"m":"bcc","o":"b_AD28","oa":44328},{"a":44323,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":44325,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":44328,"l":"b_AD28","t":"code","b":[173,244,3],"m":"lda","o":"head_target","oa":1012,"x":[44321]},{"a":44331,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":44333,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44335,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":44338,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":44340,"t":"code","b":[197,105],"m":"cmp","o":"head_turn_temp","oa":105},{"a":44342,"t":"code","b":[240,62],"m":"beq","o":"b_AD76","oa":44406},{"a":44344,"t":"code","b":[133,106],"m":"sta","o":"head_turn_temp2","oa":106},{"a":44346,"t":"code","b":[173,244,3],"m":"lda","o":"head_target","oa":1012},{"a":44349,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44351,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44353,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":44356,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44358,"t":"code","b":[56],"m":"sec"},{"a":44359,"t":"code","b":[229,105],"m":"sbc","o":"head_turn_temp","oa":105},{"a":44361,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44363,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":44365,"t":"code","b":[173,244,3],"m":"lda","o":"head_target","oa":1012},{"a":44368,"t":"code","b":[77,143,3],"m":"eor","o":"fig_frame_head","oa":911},{"a":44371,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":44373,"t":"code","b":[240,2],"m":"beq","o":"b_AD59","oa":44377},{"a":44375,"t":"code","b":[162,128],"m":"ldx","o":"#$80"},{"a":44377,"l":"b_AD59","t":"code","b":[138],"m":"txa","x":[44373]},{"a":44378,"t":"code","b":[69,105],"m":"eor","o":"head_turn_temp","oa":105},{"a":44380,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44382,"t":"code","b":[166,106],"m":"ldx","o":"head_turn_temp2","oa":106},{"a":44384,"t":"code","b":[232],"m":"inx"},{"a":44385,"t":"code","b":[165,105],"m":"lda","o":"head_turn_temp","oa":105},{"a":44387,"t":"code","b":[48,2],"m":"bmi","o":"b_AD67","oa":44391},{"a":44389,"t":"code","b":[202],"m":"dex"},{"a":44390,"t":"code","b":[202],"m":"dex"},{"a":44391,"l":"b_AD67","t":"code","b":[138],"m":"txa","x":[44387]},{"a":44392,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":44394,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44396,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":44399,"t":"code","b":[41,24],"m":"and","o":"#$18"},{"a":44401,"t":"code","b":[5,105],"m":"ora","o":"head_turn_temp","oa":105},{"a":44403,"t":"code","b":[76,150,173],"m":"jmp","o":"j_AD96","oa":44438},{"a":44406,"l":"b_AD76","t":"code","b":[173,244,3],"m":"lda","o":"head_target","oa":1012,"x":[44342]},{"a":44409,"t":"code","b":[41,24],"m":"and","o":"#$18"},{"a":44411,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44413,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":44416,"t":"code","b":[41,24],"m":"and","o":"#$18"},{"a":44418,"t":"code","b":[197,105],"m":"cmp","o":"head_turn_temp","oa":105},{"a":44420,"t":"code","b":[240,40],"m":"beq","o":"b_ADAE","oa":44462},{"a":44422,"t":"code","b":[144,2],"m":"bcc","o":"b_AD8A","oa":44426},{"a":44424,"t":"code","b":[233,16],"m":"sbc","o":"#$10"},{"a":44426,"l":"b_AD8A","t":"code","b":[24],"m":"clc","x":[44422]},{"a":44427,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":44429,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44431,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":44434,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":44436,"t":"code","b":[5,105],"m":"ora","o":"head_turn_temp","oa":105},{"a":44438,"l":"j_AD96","t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911,"x":[44403]},{"a":44441,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44443,"t":"code","b":[141,158,3],"m":"sta","o":"fig_mirror_head","oa":926},{"a":44446,"t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911},{"a":44449,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":44451,"t":"code","b":[240,9],"m":"beq","o":"b_ADAE","oa":44462},{"a":44453,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":44455,"t":"code","b":[176,5],"m":"bcs","o":"b_ADAE","oa":44462},{"a":44457,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":44459,"t":"code","b":[141,158,3],"m":"sta","o":"fig_mirror_head","oa":926},{"a":44462,"l":"b_ADAE","t":"code","b":[173,143,3],"m":"lda","o":"fig_frame_head","oa":911,"x":[44420,44451,44455]},{"a":44465,"t":"code","b":[205,244,3],"m":"cmp","o":"head_target","oa":1012},{"a":44468,"t":"code","b":[208,12],"m":"bne","o":"b_ADC2","oa":44482},{"a":44470,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":44473,"t":"code","b":[41,63],"m":"and","o":"#$3F"},{"a":44475,"t":"code","b":[10],"m":"asl","o":"a"},{"a":44476,"t":"code","b":[10],"m":"asl","o":"a"},{"a":44477,"t":"code","b":[105,7],"m":"adc","o":"#$07"},{"a":44479,"t":"code","b":[141,124,3],"m":"sta","o":"head_turn_timer","oa":892},{"a":44482,"l":"b_ADC2","t":"code","b":[173,200,3],"m":"lda","o":"fig_flags_head","oa":968,"x":[44468]},{"a":44485,"t":"code","b":[9,130],"m":"ora","o":"#$82"},{"a":44487,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":44490,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":44493,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":44495,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":44498,"t":"code","b":[76,97,174],"m":"jmp","o":"r_AE61","oa":44641},{"a":44501,"l":"upper_body_new_target","c":"Pick a new target frame for upper_body_turn, unless pose_change_busy is set: a direction within two notches of the body's direction $0390 (body_turn_dirs), how far and which way from gaze_mode bits 0-3 or at random, and a row (body_turn_rows) from gaze_mode bits 5-7 or at random; store it in $03F4 and act on the next pass ($037C = 1).","t":"code","b":[173,241,172],"m":"lda","o":"pose_change_busy","oa":44273,"x":[44302]},{"a":44504,"t":"code","b":[240,1],"m":"beq","o":"b_ADDB","oa":44507},{"a":44506,"t":"code","b":[96],"m":"rts"},{"a":44507,"l":"b_ADDB","t":"code","b":[173,242,172],"m":"lda","o":"gaze_mode","oa":44274,"x":[44504]},{"a":44510,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44512,"t":"code","b":[208,9],"m":"bne","o":"b_ADEB","oa":44523},{"a":44514,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":44517,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44519,"t":"code","b":[208,2],"m":"bne","o":"b_ADEB","oa":44523},{"a":44521,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":44523,"l":"b_ADEB","t":"code","b":[56],"m":"sec","x":[44512,44519]},{"a":44524,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":44526,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44528,"t":"code","b":[173,242,172],"m":"lda","o":"gaze_mode","oa":44274},{"a":44531,"t":"code","b":[41,12],"m":"and","o":"#$0C"},{"a":44533,"t":"code","b":[208,5],"m":"bne","o":"b_ADFC","oa":44540},{"a":44535,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":44538,"t":"code","b":[41,12],"m":"and","o":"#$0C"},{"a":44540,"l":"b_ADFC","t":"code","b":[41,8],"m":"and","o":"#$08","x":[44533]},{"a":44542,"t":"code","b":[240,9],"m":"beq","o":"b_AE09","oa":44553},{"a":44544,"t":"code","b":[165,105],"m":"lda","o":"head_turn_temp","oa":105},{"a":44546,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":44548,"t":"code","b":[24],"m":"clc"},{"a":44549,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":44551,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44553,"l":"b_AE09","t":"code","b":[169,2],"m":"lda","o":"#$02","x":[44542]},{"a":44555,"t":"code","b":[24],"m":"clc"},{"a":44556,"t":"code","b":[101,105],"m":"adc","o":"head_turn_temp","oa":105},{"a":44558,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44560,"t":"code","b":[173,144,3],"m":"lda","o":"body_direction","oa":912},{"a":44563,"t":"code","b":[10],"m":"asl","o":"a"},{"a":44564,"t":"code","b":[10],"m":"asl","o":"a"},{"a":44565,"t":"code","b":[24],"m":"clc"},{"a":44566,"t":"code","b":[109,144,3],"m":"adc","o":"body_direction","oa":912},{"a":44569,"t":"code","b":[24],"m":"clc"},{"a":44570,"t":"code","b":[101,105],"m":"adc","o":"head_turn_temp","oa":105},{"a":44572,"t":"code","b":[168],"m":"tay"},{"a":44573,"t":"code","b":[185,101,174],"m":"lda","o":"body_turn_dirs,y","oa":44645},{"a":44576,"t":"code","b":[133,105],"m":"sta","o":"head_turn_temp","oa":105},{"a":44578,"t":"code","b":[173,242,172],"m":"lda","o":"gaze_mode","oa":44274},{"a":44581,"t":"code","b":[41,96],"m":"and","o":"#$60"},{"a":44583,"t":"code","b":[208,9],"m":"bne","o":"b_AE32","oa":44594},{"a":44585,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":44588,"t":"code","b":[41,96],"m":"and","o":"#$60"},{"a":44590,"t":"code","b":[208,2],"m":"bne","o":"b_AE32","oa":44594},{"a":44592,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":44594,"l":"b_AE32","t":"code","b":[42],"m":"rol","o":"a","x":[44583,44590]},{"a":44595,"t":"code","b":[42],"m":"rol","o":"a"},{"a":44596,"t":"code","b":[42],"m":"rol","o":"a"},{"a":44597,"t":"code","b":[42],"m":"rol","o":"a"},{"a":44598,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44600,"t":"code","b":[56],"m":"sec"},{"a":44601,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":44603,"t":"code","b":[133,106],"m":"sta","o":"head_turn_temp2","oa":106},{"a":44605,"t":"code","b":[173,242,172],"m":"lda","o":"gaze_mode","oa":44274},{"a":44608,"t":"code","b":[48,16],"m":"bmi","o":"b_AE52","oa":44626},{"a":44610,"t":"code","b":[165,106],"m":"lda","o":"head_turn_temp2","oa":106},{"a":44612,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":44614,"t":"code","b":[133,106],"m":"sta","o":"head_turn_temp2","oa":106},{"a":44616,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":44619,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":44621,"t":"code","b":[24],"m":"clc"},{"a":44622,"t":"code","b":[101,106],"m":"adc","o":"head_turn_temp2","oa":106},{"a":44624,"t":"code","b":[133,106],"m":"sta","o":"head_turn_temp2","oa":106},{"a":44626,"l":"b_AE52","t":"code","b":[166,106],"m":"ldx","o":"head_turn_temp2","oa":106,"x":[44608]},{"a":44628,"t":"code","b":[165,105],"m":"lda","o":"head_turn_temp","oa":105},{"a":44630,"t":"code","b":[29,98,174],"m":"ora","o":"body_turn_rows,x","oa":44642},{"a":44633,"t":"code","b":[141,244,3],"m":"sta","o":"head_target","oa":1012},{"a":44636,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":44638,"t":"code","b":[142,124,3],"m":"stx","o":"head_turn_timer","oa":892},{"a":44641,"l":"r_AE61","t":"code","b":[96],"m":"rts","x":[44498]},{"a":44642,"l":"body_turn_rows","c":"Row bits of the upper sprite's frame for row 0-2: $00, $08, $10 (ORed into $03F4 at $AE56).","t":"byte","b":[0,8,16],"x":[44630]},{"a":44645,"l":"body_turn_dirs","c":"Upper-body directions within two notches of the body: five bytes for each body direction d = 0-7 ($0390, from pose_view_class at $1AED), holding d+2, d+1, d, d-1, d-2 (mod 8); read at $AE1D with the index 5d + 2 + offset.","t":"byte","b":[2,1,0,7,6,3,2,1],"x":[44573]},{"a":44653,"t":"byte","b":[0,7,4,3,2,1,0,5]},{"a":44661,"t":"byte","b":[4,3,2,1,6,5,4,3]},{"a":44669,"t":"byte","b":[2,7,6,5,4,3,0,7]},{"a":44677,"t":"byte","b":[6,5,4,1,0,7,6,5]},{"a":44685,"l":"pose_view_class","c":"View class 0-4 of each body pose 0-$5C (93 bytes): 0 facing the viewer (the easy-chair poses $22-$25), 1 three-quarter front, 2 the side view (the walking poses 0-$0C), 3 three-quarter back, 4 the back view ($1A-$21, $3D-$3F). The pose changer $255B turns the body one class at a time, through the class's own pose from the table at $2541 ($22, $5C, $08, $5B, $21), and $1ADF turns the class into the body direction $0390 ((8 - class) AND 7 when he faces right, except 0 and 4). Also read at $2493, $25BC-$2604 and $59DA.","t":"byte","b":[2,2,2,2,2,2,2,2],"x":[6893,6912,9363,9595,9604,9660,9693,9696,9706,9717,9732]},{"a":44693,"t":"byte","b":[2,2,2,2,2,4,4,4]},{"a":44701,"t":"byte","b":[4,2,2,2,2,0,0,0]},{"a":44709,"t":"byte","b":[0,3,4,4,4,4,4,4]},{"a":44717,"t":"byte","b":[4,4,0,0,0,0,4,4]},{"a":44725,"t":"byte","b":[4,4,4,0,0,0,2,2]},{"a":44733,"t":"byte","b":[2,2,2,0,0,0,0,0]},{"a":44741,"t":"byte","b":[0,0,0,0,0,4,4,4]},{"a":44749,"l":"pose_view_class_40","c":"pose_view_class for poses $40-$5C: class 2 for $40-$44, 1 for $45, 4 for $46, 0 for $47-$4A, 4 for $4B-$4D, 0 for $4E-$59, then 4, 3 and 1 for $5A, $5B and $5C (the class poses of the table at $2541).","t":"byte","b":[2,2,2,2,2,1,4,0]},{"a":44757,"t":"byte","b":[0,0,0,4,4,4,0,0]},{"a":44765,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":44773,"t":"byte","b":[0,0,4,3,1]},{"a":44778,"l":"act07_feed_fire","c":"Activity 7, from the table at $8DC9: JSR $3F11 switches on the phase $4C through the 31 handler words that follow (address minus one). Phases: $AF7E walk to place $2E (front door), wait; open the front door (object 0: $943D, $94CC); the doorway walk from sub-phase 0 (set_doorway_a, doorway_script); close the door where he stands ($96A9, $94CC); sound request slot 12 (act_sound_slot12); maybe_talk and talk_or_wait ($2728, $2759); slot 13 (act_sound_slot13); open the door where he stands ($9696, $94CC); the doorway walk from sub-phase 9 (set_doorway_b, doorway_script); walk to place $2E moved 18 pixels right (act_walk_door_right), wait; take item 9 (act_take_item9); act_item_raise; pose sequence (act_pose_seq); walk to place $2D, the fireplace (act_walk_fireplace); carry ($293D); pose sequence; act_item_lower; act_add_log; maybe_talk, talk_or_wait; close the door or leave it ($93D3, $94CC); end. So he goes out of the front door, comes back, carries item 9 from beside the door to the fireplace and adds fuel ($2B49) to the fire, object 7, drawn at colour cell row 21, column 33 in the fireplace.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":44781,"l":"act07_phases","c":"Phase table of activity 7 ($07), read by the JSR $3F11 at $AEEA: one word per phase, the handler's address minus one. 0 act_walk_front_door ($AF7E); 1 wait_or_request ($8FA7); 2 open object 0 ($943D); 3 object_op ($94CC); 4 set_doorway_a ($31DB); 5 doorway_script ($31E6); 6 close object 0 where he stands ($96A9); 7 object_op ($94CC); 8 act_sound_slot12 ($AFEC); 9 maybe_talk ($2728); 10 talk_or_wait ($2759); 11 act_sound_slot13 ($AFF4); 12 open object 0 where he stands ($9696); 13 object_op ($94CC); 14 set_doorway_b ($31DF); 15 doorway_script ($31E6); 16 act_walk_door_right ($AF99); 17 wait_or_request ($8FA7); 18 act_take_item9 ($AFB4); 19 act_item_raise ($AF2C); 20 act_pose_seq ($AF58); 21 act_walk_fireplace ($AF79); 22 carry_walk ($293D); 23 act_pose_seq ($AF58); 24 act_item_lower ($AF34); 25 act_add_log ($AF8B); 26 maybe_talk ($2728); 27 talk_or_wait ($2759); 28 close object 0 or leave it ($93D3); 29 object_op ($94CC); 30 script_next ($8F0E).","t":"word","b":[125,175,166,143,60,148,203,148],"d":[44925,36774,37948,38091]},{"a":44789,"t":"word","b":[218,49,229,49,168,150,203,148],"d":[12762,12773,38568,38091]},{"a":44797,"t":"word","b":[235,175,39,39,88,39,243,175],"d":[45035,10023,10072,45043]},{"a":44805,"t":"word","b":[149,150,203,148,222,49,229,49],"d":[38549,38091,12766,12773]},{"a":44813,"t":"word","b":[152,175,166,143,179,175,43,175],"d":[44952,36774,44979,44843]},{"a":44821,"t":"word","b":[87,175,120,175,60,41,87,175],"d":[44887,44920,10556,44887]},{"a":44829,"t":"word","b":[51,175,138,175,39,39,88,39],"d":[44851,44938,10023,10072]},{"a":44837,"t":"word","b":[210,147,203,148,13,143],"d":[37842,38091,36621]},{"a":44843,"l":"pose_seq_step","c":"Step counter of act_pose_seq (and of the unused variant at $AF48): 0-2 selects the pose from pose_seq_table; 3 ends the sequence and resets it to 0.","t":"byte","b":[0],"x":[44866,44872,44888,44911]},{"a":44844,"l":"act_item_raise","c":"Activity handler: $0391 = $FF, next phase. Activity 7, phase 19, after taking item 9 ($0391 is also set to $FF when an item is taken at $2915, and cleared when it is put down: $2A06, $AA43, act_item_lower).","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":44846,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":44849,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":44852,"l":"act_item_lower","c":"Activity handler: $0391 = 0 and $03C6 = 0 (the carried item's sprite state: nothing in hand), next phase. Activity 7, phase 24.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":44854,"t":"code","b":[141,145,3],"m":"sta","o":"carrying","oa":913},{"a":44857,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":44860,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":44863,"l":"pose_seq_exits","c":"Two exits of act_pose_seq: $AF3F RTS (the pose is not reached yet) and $AF40 (the sequence is done: pose_seq_step = 0, next phase).","t":"code","b":[96],"m":"rts","x":[44909]},{"a":44864,"l":"b_AF40","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[44880,44896]},{"a":44866,"t":"code","b":[141,43,175],"m":"sta","o":"pose_seq_step","oa":44843},{"a":44869,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":44872,"l":"unused_pose_seq_alt","c":"Handler-shaped code that nothing references: like act_pose_seq but takes its poses from pose_seq_table+3 ($21, $1E, $1E) and jumps into act_pose_seq's pose call at $AF65.","t":"code","b":[173,43,175],"m":"lda","o":"pose_seq_step","oa":44843},{"a":44875,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44877,"t":"code","b":[170],"m":"tax"},{"a":44878,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":44880,"t":"code","b":[240,238],"m":"beq","o":"b_AF40","oa":44864},{"a":44882,"t":"code","b":[189,118,175],"m":"lda","o":"pose_seq_table_alt,x","oa":44918},{"a":44885,"t":"code","b":[76,101,175],"m":"jmp","o":"j_AF65","oa":44901},{"a":44888,"l":"act_pose_seq","c":"Activity handler: three poses in turn through the pose changer $255B (facing X=0): pose_seq_table[pose_seq_step] = $21, $1E, $21; each is waited for ($2540), then pose_seq_step advances; at 3 it is reset and the phase advances. Used by activity 7 (twice), activity 72, activity 5 (phase 3), $92F9 (when the pose is not $20), and several tables at $1E5B-$3040.","t":"code","b":[173,43,175],"m":"lda","o":"pose_seq_step","oa":44843,"x":[37632]},{"a":44891,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":44893,"t":"code","b":[170],"m":"tax"},{"a":44894,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":44896,"t":"code","b":[240,222],"m":"beq","o":"b_AF40","oa":44864},{"a":44898,"t":"code","b":[189,115,175],"m":"lda","o":"pose_seq_table,x","oa":44915},{"a":44901,"l":"j_AF65","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[44885]},{"a":44903,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":44906,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":44909,"t":"code","b":[208,208],"m":"bne","o":"pose_seq_exits","oa":44863},{"a":44911,"t":"code","b":[238,43,175],"m":"inc","o":"pose_seq_step","oa":44843},{"a":44914,"t":"code","b":[96],"m":"rts"},{"a":44915,"l":"pose_seq_table","c":"Pose numbers for act_pose_seq ($AF73-$AF75: $21, $1E, $21) and for the unused variant at $AF48 ($AF76-$AF78: $21, $1E, $1E).","t":"byte","b":[33,30,33],"x":[44898]},{"a":44918,"l":"pose_seq_table_alt","c":"pose_seq_table + 3: the poses $21, $1E, $1E of the unused variant at $AF48 (LDA $AF76,X).","t":"byte","b":[33,30,30],"x":[44882]},{"a":44921,"l":"act_walk_fireplace","c":"Activity handler: LDX #$2D, JMP $8EF9: walk to place $2D (ground floor x=288, at the fireplace), next phase. Activity 7, phase 21.","t":"code","b":[162,45],"m":"ldx","o":"#$2D"},{"a":44923,"t":"code","b":[76,249,142],"m":"jmp","o":"walk_to_location","oa":36601},{"a":44926,"l":"act_walk_front_door","c":"Activity handler: destination $03C0 = $2E (place $2E, by the front door) directly, walk state $03BC = 2, next phase. First phase of activity 7 and of the tables at $2797 and $302D.","t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":44928,"t":"code","b":[141,192,3],"m":"sta","o":"move_target","oa":960},{"a":44931,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":44933,"t":"code","b":[141,188,3],"m":"sta","o":"move_state","oa":956},{"a":44936,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":44939,"l":"act_add_log","c":"Activity handler: $2B48 = $0414 AND $80 (the burn timer, 0 or $80) and INC $2B49 (the fire's fuel); next phase. The main loop ($2CA2-$2CC6) animates the fire (object 7) while $2B49 is non-zero, takes a unit every time $2B48 runs out (checked every 64 passes), and puts the fire out ($9757) when $2B49 reaches 0.","t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":44942,"t":"code","b":[41,128],"m":"and","o":"#$80"},{"a":44944,"t":"code","b":[141,72,43],"m":"sta","o":"fire_unit_timer","oa":11080},{"a":44947,"t":"code","b":[238,73,43],"m":"inc","o":"fire_units","oa":11081},{"a":44950,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":44953,"l":"act_walk_door_right","c":"Activity handler: copy place $2E into the scratch place ($16AE), move it 9 units (18 pixels) right ($1DA3), make it the destination ($03C0 = $36, $03BC = 2), next phase. Activity 7, phase 16, and the tables at $2797 and $302D.","t":"code","b":[162,46],"m":"ldx","o":"#$2E"},{"a":44955,"t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806},{"a":44958,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":44960,"t":"code","b":[141,192,3],"m":"sta","o":"move_target","oa":960},{"a":44963,"t":"code","b":[173,163,29],"m":"lda","o":"location_x_custom","oa":7587},{"a":44966,"t":"code","b":[24],"m":"clc"},{"a":44967,"t":"code","b":[105,9],"m":"adc","o":"#$09"},{"a":44969,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":44972,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":44974,"t":"code","b":[141,188,3],"m":"sta","o":"move_state","oa":956},{"a":44977,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":44980,"l":"act_take_item9","c":"Activity handler: A = X = 9, then set_carried_item.","t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":44982,"t":"code","b":[162,9],"m":"ldx","o":"#$09"},{"a":44984,"l":"set_carried_item","c":"A = the item's frame ($038D), X = its colour ($1394): place the item sprite (figure 2) by the front door: x = (place $2E's x/2 at $1D9B + 13) doubled into $03A9 with the ninth bit in $03AD, y = place $2E's floor line ($1D64) into $03B1, $03B5 = $0F; $03C6 = $0394 = $83, $0398 = $039C = 0; next phase. Also entered from $3135 with other items.","t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909,"x":[12597]},{"a":44987,"t":"code","b":[142,148,19],"m":"stx","o":"colour_figure2","oa":5012},{"a":44990,"t":"code","b":[173,100,29],"m":"lda","o":"location_y_door","oa":7524},{"a":44993,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":44996,"t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":44998,"t":"code","b":[141,181,3],"m":"sta","o":"fig_depth_prop_a","oa":949},{"a":45001,"t":"code","b":[173,155,29],"m":"lda","o":"location_x_door","oa":7579},{"a":45004,"t":"code","b":[24],"m":"clc"},{"a":45005,"t":"code","b":[105,13],"m":"adc","o":"#$0D"},{"a":45007,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45008,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":45011,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45013,"t":"code","b":[106],"m":"ror","o":"a"},{"a":45014,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":45017,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":45019,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":45022,"t":"code","b":[141,148,3],"m":"sta","o":"prop_multicolour","oa":916},{"a":45025,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45027,"t":"code","b":[141,152,3],"m":"sta","o":"prop_behind_bg","oa":920},{"a":45030,"t":"code","b":[141,156,3],"m":"sta","o":"fig_mirror_prop_a","oa":924},{"a":45033,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":45036,"l":"act_sound_slot12","c":"Activity handler: sound request slot 12 ($356C = $FF; its handler $360D starts tune $18 and keeps it marked as playing), next phase. Activity 7, phase 8.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":45038,"t":"code","b":[141,108,53],"m":"sta","o":"snd_req_fire","oa":13676},{"a":45041,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":45044,"l":"act_sound_slot13","c":"Activity handler: sound request slot 13 ($356D = $FF; its handler $3603 stops slot 12's sound with tune $10), next phase. Activity 7, phase 11.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":45046,"t":"code","b":[141,109,53],"m":"sta","o":"snd_req_stop12","oa":13677},{"a":45049,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":45052,"l":"fill_AFFC","c":"Four bytes $00 $FF $00 $FF before the sound driver. Nothing references them; the alternating pattern looks like uninitialised RAM left in the image.","t":"byte","b":[0,255,0,255]},{"a":45056,"l":"sound_jumps","c":"The sound driver's jump table. $B000 sound_init (called from $372C after the SID is cleared), $B003 sound_frame (once a frame from the raster interrupt at $0818, when $801E is 0), $B006 and $B00C sound_start_b, $B009 and $B00F sound_start_a. Callers: $B006 from $3654 and $36C7, $B009 from $34B2, $352B, $35E1, $35F7, $3632 and $365A; nothing uses $B00C or $B00F. Set A (Y = 0, channels 0-2) takes a SID voice from set B (Y = 6, channels 3-5) whenever both play on it. The person's talking is tune $15 (sound request slot 18, $3572, set at $24E8): music command $20 calls stream subroutines chosen at random (see snd_subs_shared_56 and snd_subs_ch1_100). Terms: a tune is an entry of snd_table ($D764, called a sound there), a stream is a channel's command sequence (pointers mus_stream_ptrs, $75-$80), and a stream subroutine is a pattern of snd_pattern_lookup ($D527).","t":"code","b":[76,227,177],"m":"jmp","o":"sound_init","oa":45539,"x":[14124]},{"a":45059,"l":"sound_frame_jmp","c":"Entry: JMP sound_frame. Called once a frame from the raster interrupt at $0818.","t":"code","b":[76,251,180],"m":"jmp","o":"sound_frame","oa":46331,"x":[2072]},{"a":45062,"l":"sound_start_b_jmp","c":"Entry: JMP sound_start_b (tune A on set B, channels 3-5). Jumped to from $3654 and $36C7.","t":"code","b":[76,104,178],"m":"jmp","o":"sound_start_b","oa":45672,"x":[13908,14023]},{"a":45065,"l":"sound_start_a_jmp","c":"Entry: JMP sound_start_a (tune A on set A, channels 0-2). The sound-request code's way to play a tune.","t":"code","b":[76,85,178],"m":"jmp","o":"sound_start_a","oa":45653,"x":[13490,13611,13793,13815,13874,13914]},{"a":45068,"l":"sound_start_b_jmp2","c":"A second JMP sound_start_b; nothing references it.","t":"code","b":[76,104,178],"m":"jmp","o":"sound_start_b","oa":45672},{"a":45071,"l":"sound_start_a_jmp2","c":"A second JMP sound_start_a; nothing references it.","t":"code","b":[76,85,178],"m":"jmp","o":"sound_start_a","oa":45653},{"a":45074,"l":"snd_piece_ended","c":"Made non-zero by music command $26 (snd_cmd_26, the marker at the end of a piano piece), which stores A, $B4 (the high byte of its handler's address, left in A by the dispatcher at $D350); cleared when a tune starts ($B2B4) and at $36BF. The sound-request code tests it at $35E9 and $365D and then stops set B (tune $10) and drops the request. $FF in the unstarted image.","t":"byte","b":[0],"x":[13801,13917,14015,45748,46121]},{"a":45075,"l":"snd_gate_ch3","c":"Key-down bit (bit 0 of the control shadow) of channel 3, the first voice of set B, copied by snd_output ($B398) while the channel's tracking is on (snd_track_enable). Read with $B014-$B016 at $366A (X = 3..0), which sets $E41D-$E421, variables of the piano activity at $E3CA.","t":"byte","b":[0],"x":[13930,45976]},{"a":45076,"l":"snd_gate_ch5","c":"Key-down bit of channel 5 (the third voice of set B), copied by snd_output at $B39E. See snd_gate_ch3.","t":"byte","b":[0],"x":[45982]},{"a":45077,"l":"snd_toggle_ch3","c":"Flips between $00 and $FF on every second key-down of channel 3 (snd_track_toggle, $B3F2-$B402). Read at $366A with snd_gate_ch3.","t":"byte","b":[0],"x":[46066,46073,46079]},{"a":45078,"l":"snd_toggle_ch45","c":"Flips between $00 and $FF on every second key-down of channel 4 or 5 (snd_track_toggle, $B403-$B413).","t":"byte","b":[0],"x":[46083,46090,46096]},{"a":45079,"l":"snd_dispatch_count","c":"Decremented by every command dispatch ($D357); the dispatch that brings it to 0 goes through snd_rare_path. sound_frame steps its low three bits each frame, 0 to 4 and back to 0 ($B516-$B527), and it is mixed into snd_random ($B2EB, $B530).","t":"byte","b":[25],"x":[45803,46358,46365,46370,46375,46384,54103]},{"a":45080,"l":"snd_voice_loop","c":"sound_frame's voice index, 0-2: for each value the set-A channel (the index) and then the set-B channel (index + 3) are stepped; at 3 the loop goes on to snd_output.","t":"byte","b":[3],"x":[46398,46401,46404,46432]},{"a":45081,"l":"snd_note_on","c":"Per channel, index 2 x channel (0-10): frames left with the key down. Loaded with snd_note_off from the duration table snd_durations after a note ($D0A6-$D0AF); counted down by sound_frame ($B571-$B58A).","t":"byte","b":[0],"x":[45736,46449,46474,53417]},{"a":45082,"l":"snd_note_off","c":"Per channel (2 x channel): frames of release after the key-up. When snd_note_on is 0 each frame decrements this one and clears the key bit; when both are 0 the channel reads its next command.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[45739,46454,46465,53423]},{"a":45090,"t":"byte","b":[0,0,0]},{"a":45093,"l":"snd_active","c":"Per channel (2 x channel): non-zero while the channel plays. A tune start stores the stream address's low OR high byte ($B293); the end of the stream stores 0 ($B5FB). snd_output gives a SID voice to the set-A channel when it is active, else to set B. play-01 has $81, $85, $89 for channels 3-5: tune 12 running from $8100, $8104, $8108.","t":"byte","b":[0],"x":[45715,46129,46152,46587]},{"a":45094,"l":"snd_last_cmd","c":"Per channel (2 x channel): the last command byte read ($D006). When a stream ends and this is non-zero, sound_frame clears it, marks a set-A channel in snd_ended_a and releases the SID voice's key once ($B5FE-$B627).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[46590,46597,53254]},{"a":45102,"t":"byte","b":[0,0,0]},{"a":45105,"l":"snd_regs","c":"Shadow SID registers, seven bytes a channel (frequency low and high, pulse low and high, control, attack/decay, sustain/release) for channels 0-5 at $B031, $B038, $B03F, $B046, $B04D, $B054 (offsets in snd_reg_offsets). snd_output copies them to $D400-$D414. This byte: frequency low.","t":"byte","b":[0],"x":[46278,46577,53383,53517,53758,53797,53803,53823,53829,54409,54468]},{"a":45106,"l":"snd_regs_freq_hi","c":"snd_regs + 1, frequency high byte (per channel, seven-byte stride). Written by notes ($D08C) and slides ($D230-$D252).","t":"byte","b":[0],"x":[45945,45957,53388,53763,53808,53811,53817,53836,53842]},{"a":45107,"l":"snd_regs_pulse_lo","c":"snd_regs + 2, pulse width low byte; with the next four bytes loaded from an instrument by snd_set_instrument.","t":"byte","b":[0],"x":[45861,54004,54068,54156,54232]},{"a":45108,"l":"snd_regs_pulse_hi","c":"snd_regs + 3, pulse width high nibble; changed by the pulse sweep at $D2B5.","t":"byte","b":[0],"x":[53962,54014,54074]},{"a":45109,"l":"snd_regs_control","c":"snd_regs + 4, the voice control register: bit 0 key (gate), set by a note's duration ($D0B9) and cleared at the key-up ($B590); bit 3 (test) is written to the SID once and then cleared by snd_output ($B4D4-$B4E5).","t":"byte","b":[136,160,0,0,0,0,8,136],"x":[45967,45985,46292,46301,46306,46480,46485,46611,46616,53428,53433]},{"a":45117,"t":"byte","b":[0,4,35,3,0,8,136,0]},{"a":45125,"t":"byte","b":[4,0,0,0,8,136,0,4]},{"a":45133,"t":"byte","b":[0,0,0,8,136,0,4,0]},{"a":45141,"t":"byte","b":[0,0,8,136,0,4]},{"a":45147,"l":"snd_filter_a","c":"Filter record of set A, five bytes ($B05B-$B05F; set B's is at $B062): cutoff low bits for $D415 with bit 7 meaning 'write pending', cutoff high byte ($D416), resonance and voice routing ($D417), mode and volume ($D418), and a one-shot flag. Loaded from snd_filter_presets ($D362) and swept by $D258; written to the SID by snd_output ($B46A-$B4BD). The talking syllables load the band-pass presets 11-14 here.","t":"byte","b":[128],"x":[46186,46266,53866,53871,53911,54080,54127,54496,54501]},{"a":45148,"l":"snd_filter_a_cut_hi","c":"Filter record of set A: cutoff high byte, written to $D416.","t":"byte","b":[12],"x":[46199,53885,53903,54133]},{"a":45149,"l":"snd_filter_a_res","c":"Filter record of set A: resonance (high nibble) and voice routing (low bits), written to $D417.","t":"byte","b":[241],"x":[46205,54139]},{"a":45150,"l":"snd_filter_a_mode","c":"Filter record of set A: filter mode and volume, written to $D418.","t":"byte","b":[47],"x":[46211,54145]},{"a":45151,"l":"snd_filter_a_once","c":"Filter record of set A, last byte: non-zero ($FF from a tune start) makes snd_output write the record once, then zero its first byte (the pending bit with the cutoff low bits) and this flag; 0 (after $D362) keeps it pending, so it is rewritten every frame and set B's record is not written ($72 = $FF).","t":"byte","b":[0,0,0],"x":[45779,46217,46269,54150]},{"a":45154,"l":"snd_filter_b","c":"Filter record of set B, the same five bytes as snd_filter_a ($B062-$B066). snd_output uses it when the voice it is writing belongs to set B (register offset $15 or more). The end of a note with snd_filter_restore set marks it pending again ($B5A5).","t":"byte","b":[128,0,0,15,255,0,0],"x":[46501,46506]},{"a":45161,"l":"snd_loop1_active","c":"Per channel (2 x channel): non-zero while music command 2's repeat is running ($D0F3-$D135). Paired with snd_loop1_count.","t":"byte","b":[0],"x":[45742,53493,53509,53557]},{"a":45162,"l":"snd_loop1_count","c":"Per channel: repeats left for music command 2 (loop back to the given address n times).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[53498,53503,53562]},{"a":45170,"t":"byte","b":[0,0,0]},{"a":45173,"l":"snd_loop2_active","c":"Per channel: non-zero while music command $22's repeat is running ($D42B-$D443), a second loop level.","t":"byte","b":[0],"x":[45745,54317,54333,54339]},{"a":45174,"l":"snd_loop2_count","c":"Per channel: repeats left for music command $22.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[54322,54327,54344]},{"a":45182,"t":"byte","b":[0,0,0]},{"a":45185,"l":"snd_return_lo","c":"Per channel: return address, low byte, of a stream subroutine called with music command 4 ($D11A); non-zero with snd_return_hi means 'return here when the called stream ends' ($B5D0-$B5E7).","t":"byte","b":[0],"x":[45751,46544,46552,46564,53530,53538]},{"a":45186,"l":"snd_return_hi","c":"Per channel: return address, high byte, for music command 4. Cleared on the return.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[46547,46557,46567,53535,53543]},{"a":45194,"t":"byte","b":[0,0,0]},{"a":45197,"l":"snd_saved_regs","c":"Seven bytes a channel: the caller's shadow registers saved by music command 4 ($D10B-$D115) and put back into snd_regs when the subroutine's stream ends ($B5EE-$B5F6).","t":"byte","b":[0,0,0,8,136,0,4,0],"x":[46574,53520]},{"a":45205,"t":"byte","b":[0,0,8,136,0,4,0,0]},{"a":45213,"t":"byte","b":[0,8,136,0,4,0,0,0]},{"a":45221,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45229,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45237,"t":"byte","b":[0,0]},{"a":45239,"l":"snd_filter_restore","c":"Per channel: when non-zero at the end of a note, set B's filter record is marked pending again ($B5A0-$B5AA). Cleared at a tune start and at the end of a note; no instruction found sets it non-zero. snd_output also skips a set-B channel while it is set ($B44D).","t":"byte","b":[0],"x":[45754,46157,46496,46511]},{"a":45240,"l":"snd_release_seen","c":"Per channel: the release count, copied on each release frame ($B57B); non-zero when the note ends means it had a release ($B59B), then cleared.","t":"byte","b":[0,0,0,0,0],"x":[46459,46491,46514]},{"a":45245,"l":"snd_ended_a","c":"Per channel (set A only, index below 6): set to $FF when the channel's stream ends ($B60E). Nothing found reads it.","t":"byte","b":[255,0,0,0,255,0,0],"x":[46606]},{"a":45252,"l":"snd_slide_lo","c":"Per channel: pitch slide step, low byte; read from the stream by snd_read_slide or set to $FF with the high byte by music command 7 ($D474), which makes the slides at $D1CB/$D1CF derive the step from the current frequency.","t":"byte","b":[192],"x":[45610,53719,53790,54392]},{"a":45253,"l":"snd_slide_hi","c":"Per channel: pitch slide step, high byte (bit 7 set: use the low seven bits as they are, $D1E8).","t":"byte","b":[3,0,0,0,0,0,0,0],"x":[45621,53726,53733,53750,53777,54395]},{"a":45261,"t":"byte","b":[0,0,0]},{"a":45264,"l":"snd_frame_count","c":"Incremented every frame by sound_frame ($B52A); a source of variation for snd_random and for the automatic slide step ($D1F0).","t":"byte","b":[95],"x":[45800,46378,46381,53744]},{"a":45265,"l":"snd_rare_count","c":"Incremented only in snd_rare_path, when snd_dispatch_count reaches 0 during a dispatch; its wrap to 0 triggers the rare branch there. $01 or $02 in the snapshots.","t":"byte","b":[1,0],"x":[45937]},{"a":45267,"l":"snd_random","c":"The driver's random byte: mixed from snd_frame_count, snd_dispatch_count and snd_frame_mix every frame ($B52A-$B539) and at each tune start ($B2E8-$B2EE). Music command $20 ($D396-$D3A8) ANDs it with its mask operand and adds its base operand to choose which stream subroutine to call: this is where the talking sound's random syllables and phrases come from.","t":"byte","b":[186],"x":[45806,46390,46393,54176]},{"a":45268,"l":"snd_saved_regs2","c":"Seven bytes a channel: the shadow registers saved by music command $0A ($D487-$D491) and put back by command $0B ($D4C1).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[54412,54465]},{"a":45276,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45284,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45292,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45300,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45308,"t":"byte","b":[0,0]},{"a":45310,"l":"snd_return2_lo","c":"Per channel: return address, low byte, saved by music command $0A ($D496) and used by command $0B ($D4B3).","t":"byte","b":[0],"x":[54422,54430,54451]},{"a":45311,"l":"snd_return2_hi","c":"Per channel: return address, high byte, for music commands $0A and $0B.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[54427,54435,54456]},{"a":45319,"t":"byte","b":[0,0,0]},{"a":45322,"l":"snd_track_enable","c":"At $B10A + 7 x channel: non-zero turns on key-down tracking for that channel; music command $27 stores $B4 there (snd_cmd_27) and a tune start clears it ($B2CB). snd_output looks only at set B's channels ($B11F, $B126, $B12D).","t":"byte","b":[0],"x":[45771,45929,46258]},{"a":45323,"l":"snd_track_state","c":"At $B10B + 7 x channel: two bits of key-down tracking. snd_output forms (state x 2 + key bit) AND 7 and calls the handler from snd_track_handlers, so every second key-down flips snd_toggle_ch3 or snd_toggle_ch45.","t":"byte","b":[0],"x":[45989,46033,46036,46042,46045,46056,46059]},{"a":45324,"l":"snd_saved_instr","c":"At $B10C + 7 x channel: pulse, control and envelope bytes saved by music command $20 ($D38A-$D394) and put back by command $21 ($D3D5-$D3DD).","t":"byte","b":[0,0,136,160,0,0,0,0],"x":[54159,54229]},{"a":45332,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45340,"t":"byte","b":[136,170,250,0,0,0,0,0]},{"a":45348,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45356,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45364,"l":"snd_return3_lo","c":"Per channel: return address, low byte, saved by music command $20 ($D3B2) and used by command $21 ($D3C7).","t":"byte","b":[161],"x":[54194,54215]},{"a":45365,"l":"snd_return3_hi","c":"Per channel: return address, high byte, for music commands $20 and $21.","t":"byte","b":[216,0,0,250,218,0,0,0],"x":[54199,54220]},{"a":45373,"t":"byte","b":[0,0,0]},{"a":45376,"l":"snd_return4_lo","c":"Per channel: return address, low byte, saved by music command $24 ($D4FD) and used by command $25 ($D51A).","t":"byte","b":[0],"x":[54525,54533,54554]},{"a":45377,"l":"snd_return4_hi","c":"Per channel: return address, high byte, for music commands $24 and $25.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[54530,54538,54559]},{"a":45385,"t":"byte","b":[0,0,0]},{"a":45388,"l":"snd_saved_irq_lo","c":"Copy of the IRQ vector's low byte ($0314) made by sound_init ($B209). Nothing reads it.","t":"byte","b":[19],"x":[45577]},{"a":45389,"l":"snd_saved_irq_hi","c":"Copy of the IRQ vector's high byte ($0315) made by sound_init ($B20F). Nothing reads it.","t":"byte","b":[7,0,0],"x":[45583]},{"a":45392,"l":"snd_temp_y","c":"Keeps the caller's Y while a tune starts (stored at $B255/$B268, restored at $B2E2). The interpreter under $D000 also uses it as scratch: the command byte ($D013), note-list counts ($D3E4, $D57C) and sweep arithmetic.","t":"byte","b":[0],"x":[45653,45672,45794,45903,53267,53608,53617,53621,53625,53629,53633,53878,53906,53948,53990,54008,54170,54181,54244,54266,54271,54281,54300,54652,54657]},{"a":45393,"l":"snd_temp_x","c":"Keeps the caller's X while a tune starts ($B276, restored at $B2E5); also scratch for the filter and pulse sweeps under $D000.","t":"byte","b":[12],"x":[45686,45797,53891,53900,53959,53979,53993,54001,54019,54025]},{"a":45394,"l":"snd_temp_pulse","c":"Scratch byte of the pulse sweep ($D2FB, $D331); snd_output zeroes it each frame ($B352).","t":"byte","b":[0],"x":[45906,54011,54065]},{"a":45395,"l":"snd_temp_sweep","c":"Scratch byte of the interpreter's sweep code ($D16B, $D188, $D306, $D30D, $D337).","t":"byte","b":[8],"x":[53611,53640,54022,54029,54071]},{"a":45396,"l":"snd_unused_B154","c":"Zeroed by snd_output every frame ($B355); nothing reads it.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[45909]},{"a":45404,"l":"snd_fsweep_lo","c":"Per channel: filter cutoff sweep step, low three bits (read from the stream by $D15A: music commands $11, $1C, $1D, $1F); added to the set's cutoff by $D258 (commands $12, $17, $18, $19, $1A, $1B), reversing at the ends.","t":"byte","b":[0],"x":[53645,53858,53863,53875,53916,53927]},{"a":45405,"l":"snd_fsweep_hi","c":"Per channel: filter cutoff sweep step, high byte.","t":"byte","b":[1,0,0,0,0,0,0,0],"x":[53637,53888,53895,53930,53937]},{"a":45413,"t":"byte","b":[0,0,0]},{"a":45416,"l":"snd_psweep_lo","c":"Per channel: pulse width sweep step, low byte (read by $D1A2: music commands $13, $1C, $1E, $1F); added to the pulse width by $D2B5 (commands $14, $15, $16, $17, $1A, $1B), reversing at the ends.","t":"byte","b":[0],"x":[53680,53945,53982,53987,54036,54041,54044]},{"a":45417,"l":"snd_psweep_hi","c":"Per channel: pulse width sweep step, high nibble.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[53686,53951,53956,53975,53996,54048,54053,54059]},{"a":45425,"t":"byte","b":[0,0,0]},{"a":45428,"l":"snd_note_lists","c":"Sixteen bytes a channel for channels 0-5 ($B174-$B1D3), not cleared by sound_init. Filled from the stream by music command $23 (up to 16 bytes, ended by a $23) and commands $40-$4F (n+1 bytes) at $D3E2-$D3FD; commands $30-$3F play entry (command - $30) as a note ($D416). In every snapshot after start-up channel 3's list begins 'RAMS' ($B1A4) and channel 5's 'ANGMAN' ($B1C4): the bytes after 'G' and 'H' in ANAGRAMS and HANGMAN at $C90D and $C918, and 'A' ($41), 'G' ($47) and 'H' ($48) are note-list commands, so those set-B channels once ran through the parser's word list. Before sound_init sets them, their stream pointers are bytes of BASIC's CHRGET routine left in zero page by the loader: $7B/$7C = $08 $C9 (channel 3, $C908) and $7F/$80 = $0A $C9 (channel 5, $C90A), just before ANAGRAMS; two frames of stepping from there give exactly these lists. sound_init's first tune start ends with CLI ($B2F4) before the second one resets channels 3-5; how two frame updates fell in that gap is not established.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[54262,54307]},{"a":45436,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45444,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45452,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45460,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45468,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45476,"t":"byte","b":[82,65,77,83,0,0,0,0]},{"a":45484,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45492,"l":"snd_note_lists_ch4","c":"The note lists of channels 4 ($B1B4-$B1C3) and 5 ($B1C4-$B1D3), the last two of snd_note_lists. Channel 5's begins 'ANGMAN' in every snapshot after start-up.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45500,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":45508,"t":"byte","b":[65,78,71,77,65,78,0,0]},{"a":45516,"t":"byte","b":[0,0,0,0,0,255,0,255]},{"a":45524,"l":"snd_frame_mix","c":"Counter incremented every frame by sound_frame, and once more when it reaches a multiple of 4 ($B509-$B513); mixed into snd_random.","t":"byte","b":[47],"x":[46345,46348,46355,46387]},{"a":45525,"l":"snd_reg_offsets","c":"Register offset (7 x channel) of each channel, stored twice so that the index 2 x channel can be used directly: 0, 7, 14, 21, 28, 35, 42 for channels 0-6. Only channels 0-5 are used.","t":"byte","b":[0,0,7,7,14,14,21,21],"x":[45765,45850,45922,46133,46446]},{"a":45533,"t":"byte","b":[28,28,35,35,42,42]},{"a":45539,"l":"sound_init","c":"Start the sound driver: SEI, clear $B012-$B173 (all channel state, not the note lists), copy the IRQ vector into snd_saved_irq_lo/hi, start tune 0 on set A (instrument 0, filter preset 4 with volume 15, then nothing) and tune $10 on set B (an empty stream), which also re-enables interrupts.","t":"code","b":[120],"m":"sei","x":[45056]},{"a":45540,"t":"code","b":[169,18],"m":"lda","o":"#$12"},{"a":45542,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":45544,"t":"code","b":[169,176],"m":"lda","o":"#$B0"},{"a":45546,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":45548,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":45550,"l":"b_B1EE","t":"code","b":[165,129],"m":"lda","o":"mus_read_ptr","oa":129,"x":[45568,45572]},{"a":45552,"t":"code","b":[201,116],"m":"cmp","o":"#$74"},{"a":45554,"t":"code","b":[144,6],"m":"bcc","o":"b_B1FA","oa":45562},{"a":45556,"t":"code","b":[165,130],"m":"lda","o":"mus_read_ptr_hi","oa":130},{"a":45558,"t":"code","b":[201,177],"m":"cmp","o":"#$B1"},{"a":45560,"t":"code","b":[176,12],"m":"bcs","o":"b_B206","oa":45574},{"a":45562,"l":"b_B1FA","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[45554]},{"a":45564,"t":"code","b":[145,129],"m":"sta","o":"(mus_read_ptr),y","oa":129},{"a":45566,"t":"code","b":[230,129],"m":"inc","o":"mus_read_ptr","oa":129},{"a":45568,"t":"code","b":[208,236],"m":"bne","o":"b_B1EE","oa":45550},{"a":45570,"t":"code","b":[230,130],"m":"inc","o":"mus_read_ptr_hi","oa":130},{"a":45572,"t":"code","b":[208,232],"m":"bne","o":"b_B1EE","oa":45550},{"a":45574,"l":"b_B206","t":"code","b":[173,20,3],"m":"lda","o":"irq_vector","oa":788,"x":[45560]},{"a":45577,"t":"code","b":[141,76,177],"m":"sta","o":"snd_saved_irq_lo","oa":45388},{"a":45580,"t":"code","b":[173,21,3],"m":"lda","o":"irq_vector_hi","oa":789},{"a":45583,"t":"code","b":[141,77,177],"m":"sta","o":"snd_saved_irq_hi","oa":45389},{"a":45586,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45588,"t":"code","b":[32,85,178],"m":"jsr","o":"sound_start_a","oa":45653},{"a":45591,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":45593,"t":"code","b":[76,104,178],"m":"jmp","o":"sound_start_b","oa":45672},{"a":45596,"l":"snd_read_slide","c":"Read two bytes from the stream of channel $6C into snd_slide_lo/hi and move the stream pointer ($75/$76 + $6C) past them; X = $70 on return. Called by music commands $1D, $1E, $1F and by command 6 ($D481).","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[45895,46106,46115,54401]},{"a":45598,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":45600,"t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117},{"a":45602,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":45604,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":45606,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":45608,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":45610,"t":"code","b":[157,196,176],"m":"sta","o":"snd_slide_lo,x","oa":45252},{"a":45613,"t":"code","b":[230,129],"m":"inc","o":"mus_read_ptr","oa":129},{"a":45615,"t":"code","b":[208,2],"m":"bne","o":"b_B233","oa":45619},{"a":45617,"t":"code","b":[230,130],"m":"inc","o":"mus_read_ptr_hi","oa":130},{"a":45619,"l":"b_B233","t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129,"x":[45615]},{"a":45621,"t":"code","b":[157,197,176],"m":"sta","o":"snd_slide_hi,x","oa":45253},{"a":45624,"t":"code","b":[230,129],"m":"inc","o":"mus_read_ptr","oa":129},{"a":45626,"t":"code","b":[208,2],"m":"bne","o":"b_B23E","oa":45630},{"a":45628,"t":"code","b":[230,130],"m":"inc","o":"mus_read_ptr_hi","oa":130},{"a":45630,"l":"b_B23E","t":"code","b":[165,129],"m":"lda","o":"mus_read_ptr","oa":129,"x":[45626]},{"a":45632,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":45634,"t":"code","b":[165,130],"m":"lda","o":"mus_read_ptr_hi","oa":130},{"a":45636,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":45638,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":45640,"t":"code","b":[96],"m":"rts"},{"a":45641,"l":"snd_cmd_11","c":"Music command $11 (handler table at $D700): read the filter sweep step ($D15A), then read the next command (snd_next_command).","t":"code","b":[32,90,209],"m":"jsr","o":"snd_read_filter_step","oa":53594},{"a":45644,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":45647,"l":"snd_cmd_12","c":"Music command $12: one filter sweep step ($D258), then the next command.","t":"code","b":[32,88,210],"m":"jsr","o":"snd_filter_step","oa":53848},{"a":45650,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":45653,"l":"sound_start_a","c":"Start tune A on set A (channels 0-2, the set that wins a SID voice): keep Y in snd_temp_y, Y = 0 (the first channel index), and continue in sound_start_b's common part.","t":"code","b":[140,80,177],"m":"sty","o":"snd_temp_y","oa":45392,"x":[45065,45071,45588,46328]},{"a":45656,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":45658,"t":"code","b":[240,17],"m":"beq","o":"b_B26D","oa":45677},{"a":45660,"l":"snd_cmd_13","c":"Music command $13: read the pulse sweep step ($D1A2), then the next command.","t":"code","b":[32,162,209],"m":"jsr","o":"snd_read_pw_step","oa":53666},{"a":45663,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":45666,"l":"snd_cmd_14","c":"Music command $14: one pulse width sweep step ($D2B5), then the next command.","t":"code","b":[32,181,210],"m":"jsr","o":"snd_pw_step","oa":53941},{"a":45669,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":45672,"l":"sound_start_b","c":"Start tune A (an entry of snd_table at $D764; 0-26 are defined) on set B (channels 3-5): keep Y, Y = 6 (2 x channel 3). Common part: SEI and bank the I/O area out; for each of the three voices of the tune's six-byte entry in the tune table at $D764 (a stream address per voice; 0 = unused, and that channel keeps whatever it was playing) mark the channel active, point its stream there ($75/$76 + 2 x channel), clear its counters and loops, take the instrument from the stream's first byte (snd_set_instrument), clear its tracking, load filter preset 0 into the set's filter record ($D362) and make it one-shot. Then restore X and Y, stir snd_random, bank the I/O area in and CLI.","t":"code","b":[140,80,177],"m":"sty","o":"snd_temp_y","oa":45392,"x":[45062,45068,45593,46322]},{"a":45675,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":45677,"l":"b_B26D","t":"code","b":[72],"m":"pha","x":[45658]},{"a":45678,"t":"code","b":[120],"m":"sei"},{"a":45679,"t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1},{"a":45681,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":45683,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":45685,"t":"code","b":[104],"m":"pla"},{"a":45686,"t":"code","b":[142,81,177],"m":"stx","o":"snd_temp_x","oa":45393},{"a":45689,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45690,"t":"code","b":[133,107],"m":"sta","o":"mus_tmp0","oa":107},{"a":45692,"t":"code","b":[24],"m":"clc"},{"a":45693,"t":"code","b":[101,107],"m":"adc","o":"mus_tmp0","oa":107},{"a":45695,"t":"code","b":[24],"m":"clc"},{"a":45696,"t":"code","b":[101,107],"m":"adc","o":"mus_tmp0","oa":107},{"a":45698,"t":"code","b":[170],"m":"tax"},{"a":45699,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":45701,"t":"code","b":[133,110],"m":"sta","o":"mus_tmp2","oa":110},{"a":45703,"l":"b_B287","t":"code","b":[132,108],"m":"sty","o":"mus_channel","oa":108,"x":[45792]},{"a":45705,"t":"code","b":[134,107],"m":"stx","o":"mus_tmp0","oa":107},{"a":45707,"t":"code","b":[189,100,215],"m":"lda","o":"snd_table,x","oa":55140},{"a":45710,"t":"code","b":[29,101,215],"m":"ora","o":"snd_table_hi,x","oa":55141},{"a":45713,"t":"code","b":[240,71],"m":"beq","o":"b_B2DA","oa":45786},{"a":45715,"t":"code","b":[153,37,176],"m":"sta","o":"snd_active,y","oa":45093},{"a":45718,"t":"code","b":[189,100,215],"m":"lda","o":"snd_table,x","oa":55140},{"a":45721,"t":"code","b":[153,117,0],"m":"sta","o":"mus_stream_ptrs,y","oa":117},{"a":45724,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":45726,"t":"code","b":[189,101,215],"m":"lda","o":"snd_table_hi,x","oa":55141},{"a":45729,"t":"code","b":[153,118,0],"m":"sta","o":"mus_stream_ptrs_hi,y","oa":118},{"a":45732,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":45734,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":45736,"t":"code","b":[153,25,176],"m":"sta","o":"snd_note_on,y","oa":45081},{"a":45739,"t":"code","b":[153,26,176],"m":"sta","o":"snd_note_off,y","oa":45082},{"a":45742,"t":"code","b":[153,105,176],"m":"sta","o":"snd_loop1_active,y","oa":45161},{"a":45745,"t":"code","b":[153,117,176],"m":"sta","o":"snd_loop2_active,y","oa":45173},{"a":45748,"t":"code","b":[141,18,176],"m":"sta","o":"snd_piece_ended","oa":45074},{"a":45751,"t":"code","b":[153,129,176],"m":"sta","o":"snd_return_lo,y","oa":45185},{"a":45754,"t":"code","b":[153,183,176],"m":"sta","o":"snd_filter_restore,y","oa":45239},{"a":45757,"t":"code","b":[168],"m":"tay"},{"a":45758,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":45760,"t":"code","b":[32,17,179],"m":"jsr","o":"snd_set_instrument","oa":45841},{"a":45763,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":45765,"t":"code","b":[188,213,177],"m":"ldy","o":"snd_reg_offsets,x","oa":45525},{"a":45768,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":45770,"t":"code","b":[138],"m":"txa"},{"a":45771,"t":"code","b":[153,10,177],"m":"sta","o":"snd_track_enable,y","oa":45322},{"a":45774,"t":"code","b":[32,98,211],"m":"jsr","o":"snd_set_filter","oa":54114},{"a":45777,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":45779,"t":"code","b":[153,95,176],"m":"sta","o":"snd_filter_a_once,y","oa":45151},{"a":45782,"t":"code","b":[166,107],"m":"ldx","o":"mus_tmp0","oa":107},{"a":45784,"t":"code","b":[164,108],"m":"ldy","o":"mus_channel","oa":108},{"a":45786,"l":"b_B2DA","t":"code","b":[232],"m":"inx","x":[45713]},{"a":45787,"t":"code","b":[232],"m":"inx"},{"a":45788,"t":"code","b":[200],"m":"iny"},{"a":45789,"t":"code","b":[200],"m":"iny"},{"a":45790,"t":"code","b":[198,110],"m":"dec","o":"mus_tmp2","oa":110},{"a":45792,"t":"code","b":[16,165],"m":"bpl","o":"b_B287","oa":45703},{"a":45794,"t":"code","b":[172,80,177],"m":"ldy","o":"snd_temp_y","oa":45392},{"a":45797,"t":"code","b":[174,81,177],"m":"ldx","o":"snd_temp_x","oa":45393},{"a":45800,"t":"code","b":[173,208,176],"m":"lda","o":"snd_frame_count","oa":45264},{"a":45803,"t":"code","b":[109,23,176],"m":"adc","o":"snd_dispatch_count","oa":45079},{"a":45806,"t":"code","b":[141,211,176],"m":"sta","o":"snd_random","oa":45267},{"a":45809,"t":"code","b":[32,56,182],"m":"jsr","o":"snd_io_in","oa":46648},{"a":45812,"t":"code","b":[88],"m":"cli"},{"a":45813,"t":"code","b":[96],"m":"rts"},{"a":45814,"l":"snd_cmd_15","c":"Music command $15: a pulse sweep step ($D2B5), a pitch slide down ($D1CB), then a duration byte and key down ($D08F).","t":"code","b":[32,181,210],"m":"jsr","o":"snd_pw_step","oa":53941},{"a":45817,"t":"code","b":[32,203,209],"m":"jsr","o":"snd_slide_down","oa":53707},{"a":45820,"t":"code","b":[76,143,208],"m":"jmp","o":"snd_duration","oa":53391},{"a":45823,"l":"snd_cmd_16","c":"Music command $16: a pulse sweep step ($D2B5), a pitch slide up ($D1CF), then a duration ($D08F).","t":"code","b":[32,181,210],"m":"jsr","o":"snd_pw_step","oa":53941},{"a":45826,"t":"code","b":[32,207,209],"m":"jsr","o":"snd_slide_up","oa":53711},{"a":45829,"t":"code","b":[76,143,208],"m":"jmp","o":"snd_duration","oa":53391},{"a":45832,"l":"snd_cmd_17","c":"Music command $17: a pulse sweep step ($D2B5) and a filter sweep step ($D258), then the next command.","t":"code","b":[32,181,210],"m":"jsr","o":"snd_pw_step","oa":53941},{"a":45835,"t":"code","b":[32,88,210],"m":"jsr","o":"snd_filter_step","oa":53848},{"a":45838,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":45841,"l":"snd_set_instrument","c":"A = instrument (a byte offset into the instrument table at $D587, under the I/O area): move channel $6C's stream pointer on by one and copy the instrument's five bytes into the channel's pulse low/high, control, attack/decay and sustain/release shadows (snd_regs + 2..6). Called at a tune start, by music command $0C ($D4D2) and at the start of a called stream ($D0DD: commands 4, $0A, $20).","t":"code","b":[168],"m":"tay","x":[45760,53485,54482]},{"a":45842,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":45844,"t":"code","b":[246,117],"m":"inc","o":"mus_stream_ptrs,x","oa":117},{"a":45846,"t":"code","b":[208,2],"m":"bne","o":"b_B31A","oa":45850},{"a":45848,"t":"code","b":[246,118],"m":"inc","o":"mus_stream_ptrs_hi,x","oa":118},{"a":45850,"l":"b_B31A","t":"code","b":[189,213,177],"m":"lda","o":"snd_reg_offsets,x","oa":45525,"x":[45846]},{"a":45853,"t":"code","b":[170],"m":"tax"},{"a":45854,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":45856,"t":"code","b":[133,109],"m":"sta","o":"mus_tmp1","oa":109},{"a":45858,"l":"b_B322","t":"code","b":[185,135,213],"m":"lda","o":"snd_instruments,y","oa":54663,"x":[45868]},{"a":45861,"t":"code","b":[157,51,176],"m":"sta","o":"snd_regs_pulse_lo,x","oa":45107},{"a":45864,"t":"code","b":[232],"m":"inx"},{"a":45865,"t":"code","b":[200],"m":"iny"},{"a":45866,"t":"code","b":[198,109],"m":"dec","o":"mus_tmp1","oa":109},{"a":45868,"t":"code","b":[16,244],"m":"bpl","o":"b_B322","oa":45858},{"a":45870,"t":"code","b":[96],"m":"rts"},{"a":45871,"l":"snd_cmd_1B","c":"Music command $1B: a filter sweep step ($D258), a pulse sweep step ($D2B5), a pitch slide up ($D1CF), then a duration ($D08F).","t":"code","b":[32,88,210],"m":"jsr","o":"snd_filter_step","oa":53848},{"a":45874,"t":"code","b":[32,181,210],"m":"jsr","o":"snd_pw_step","oa":53941},{"a":45877,"t":"code","b":[32,207,209],"m":"jsr","o":"snd_slide_up","oa":53711},{"a":45880,"t":"code","b":[76,143,208],"m":"jmp","o":"snd_duration","oa":53391},{"a":45883,"l":"snd_cmd_1C","c":"Music command $1C: read the filter sweep step ($D15A) and the pulse sweep step ($D1A2), then the next command.","t":"code","b":[32,90,209],"m":"jsr","o":"snd_read_filter_step","oa":53594},{"a":45886,"t":"code","b":[32,162,209],"m":"jsr","o":"snd_read_pw_step","oa":53666},{"a":45889,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":45892,"l":"snd_cmd_1E","c":"Music command $1E: read the pulse sweep step ($D1A2) and the pitch slide step (snd_read_slide), then the next command.","t":"code","b":[32,162,209],"m":"jsr","o":"snd_read_pw_step","oa":53666},{"a":45895,"t":"code","b":[32,28,178],"m":"jsr","o":"snd_read_slide","oa":45596},{"a":45898,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":45901,"l":"snd_output","c":"Second half of sound_frame: for SID voices 2, 1, 0 in turn, give the voice to the set-A channel if it is active, otherwise to the set-B channel (unless snd_filter_restore is set); write that set's filter record when pending; copy the channel's seven shadow registers to the voice ($D400 + 7v) and send a pending test bit once. Before that, for each set-B channel with tracking on, copy the key bit of channels 3 and 5 into snd_gate_ch3/ch5 and run the key-down tracker.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46411]},{"a":45903,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":45906,"t":"code","b":[141,82,177],"m":"sta","o":"snd_temp_pulse","oa":45394},{"a":45909,"t":"code","b":[141,84,177],"m":"sta","o":"snd_unused_B154","oa":45396},{"a":45912,"t":"code","b":[133,114],"m":"sta","o":"mus_filter_done","oa":114},{"a":45914,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":45916,"t":"code","b":[133,108],"m":"sta","o":"mus_channel","oa":108},{"a":45918,"l":"j_B35E","t":"code","b":[164,108],"m":"ldy","o":"mus_channel","oa":108,"x":[46318]},{"a":45920,"t":"code","b":[132,109],"m":"sty","o":"mus_tmp1","oa":109},{"a":45922,"t":"code","b":[185,213,177],"m":"lda","o":"snd_reg_offsets,y","oa":45525},{"a":45925,"t":"code","b":[24],"m":"clc"},{"a":45926,"t":"code","b":[105,21],"m":"adc","o":"#$15"},{"a":45928,"t":"code","b":[168],"m":"tay"},{"a":45929,"t":"code","b":[185,10,177],"m":"lda","o":"snd_track_enable,y","oa":45322},{"a":45932,"t":"code","b":[208,29],"m":"bne","o":"b_B38B","oa":45963},{"a":45934,"t":"code","b":[76,47,180],"m":"jmp","o":"j_B42F","oa":46127},{"a":45937,"l":"snd_rare_path","c":"Reached from the command dispatch ($D35C) instead of snd_cmd_dispatch_jmp when snd_dispatch_count reaches 0: INC snd_rare_count and normally fall into snd_cmd_dispatch_jmp. When snd_rare_count wraps to 0 the command is skipped: if bit 5 of channel 0's frequency high byte is set, that byte becomes $3F and the RTS at $B3D7 leaves sound_frame early; otherwise the loop goes on with the next voice ($B541).","t":"code","b":[238,209,176],"m":"inc","o":"snd_rare_count","oa":45265,"x":[54108]},{"a":45940,"t":"code","b":[240,3],"m":"beq","o":"b_B379","oa":45945},{"a":45942,"l":"snd_cmd_dispatch_jmp","c":"JMP to the current music command's handler. The dispatcher at $D33E writes the handler address from the table at $D700 into this instruction's operand (snd_cmd_dispatch_target) and jumps here ($D35F). $B3D7 (an RTS) in the unstarted image.","t":"code","b":[76,197,211],"m":"jmp","o":"snd_cmd_random_return","oa":54213,"x":[54083,54111]},{"a":45943,"t":"note","l":"snd_cmd_dispatch_target","c":"Operand of snd_cmd_dispatch_jmp, rewritten for every command: $D3C5 in play-02, $D4F3 in play-01, $D57C at the time prompt.","note":"inside the item at $B376","x":[54092,54099]},{"a":45945,"l":"b_B379","t":"code","b":[185,50,176],"m":"lda","o":"snd_regs_freq_hi,y","oa":45106,"x":[45940]},{"a":45948,"t":"code","b":[41,32],"m":"and","o":"#$20"},{"a":45950,"t":"code","b":[208,3],"m":"bne","o":"b_B383","oa":45955},{"a":45952,"t":"code","b":[76,65,181],"m":"jmp","o":"j_B541","oa":46401},{"a":45955,"l":"b_B383","t":"code","b":[73,31],"m":"eor","o":"#$1F","x":[45950]},{"a":45957,"t":"code","b":[153,50,176],"m":"sta","o":"snd_regs_freq_hi,y","oa":45106},{"a":45960,"t":"code","b":[76,215,179],"m":"jmp","o":"r_B3D7","oa":46039},{"a":45963,"l":"b_B38B","t":"code","b":[192,28],"m":"cpy","o":"#$1C","x":[45932]},{"a":45965,"t":"code","b":[240,18],"m":"beq","o":"b_B3A1","oa":45985},{"a":45967,"t":"code","b":[185,53,176],"m":"lda","o":"snd_regs_control,y","oa":45109},{"a":45970,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":45972,"t":"code","b":[192,21],"m":"cpy","o":"#$15"},{"a":45974,"t":"code","b":[208,6],"m":"bne","o":"b_B39E","oa":45982},{"a":45976,"t":"code","b":[141,19,176],"m":"sta","o":"snd_gate_ch3","oa":45075},{"a":45979,"t":"code","b":[76,161,179],"m":"jmp","o":"b_B3A1","oa":45985},{"a":45982,"l":"b_B39E","t":"code","b":[141,20,176],"m":"sta","o":"snd_gate_ch5","oa":45076,"x":[45974]},{"a":45985,"l":"b_B3A1","t":"code","b":[185,53,176],"m":"lda","o":"snd_regs_control,y","oa":45109,"x":[45965,45979]},{"a":45988,"t":"code","b":[106],"m":"ror","o":"a"},{"a":45989,"t":"code","b":[185,11,177],"m":"lda","o":"snd_track_state,y","oa":45323},{"a":45992,"t":"code","b":[42],"m":"rol","o":"a"},{"a":45993,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":45995,"t":"code","b":[10],"m":"asl","o":"a"},{"a":45996,"t":"code","b":[170],"m":"tax"},{"a":45997,"t":"code","b":[189,191,179],"m":"lda","o":"snd_track_handlers,x","oa":46015},{"a":46000,"t":"code","b":[141,186,179],"m":"sta","o":"snd_track_call_lo","oa":46010},{"a":46003,"t":"code","b":[189,192,179],"m":"lda","o":"snd_track_handlers_hi,x","oa":46016},{"a":46006,"t":"code","b":[141,187,179],"m":"sta","o":"snd_track_call_hi","oa":46011},{"a":46009,"t":"code","b":[32,0,0],"m":"jsr","o":"cpu_ddr","oa":0},{"a":46010,"t":"note","l":"snd_track_call_lo","c":"Operand of the JSR at $B3B9 (low byte), rewritten by snd_output with the key-down tracker's handler from snd_track_handlers.","note":"inside the item at $B3B9","x":[46000]},{"a":46011,"t":"note","l":"snd_track_call_hi","c":"Operand of the JSR at $B3B9 (high byte), see snd_track_call_lo.","note":"inside the item at $B3B9","x":[46006]},{"a":46012,"t":"code","b":[76,47,180],"m":"jmp","o":"j_B42F","oa":46127},{"a":46015,"l":"snd_track_handlers","c":"Eight handler addresses for the key-down tracker, indexed by ((snd_track_state x 2) + key bit) AND 7: 0 nothing ($B3D7), 1 key down: set state bit 1 ($B3E1), 2 clear bit 0 ($B3CF), 3 nothing, 4 key up: set bit 0 ($B3D8), 5 and 6 nothing, 7 key down again: clear bit 1 and flip the toggle ($B3E6).","t":"byte","b":[215],"x":[45997]},{"a":46016,"l":"snd_track_handlers_hi","c":"High byte of snd_track_handlers' first entry; the table is read as pairs at $B3AD/$B3B3.","t":"addr","b":[179,225],"oa":57779,"o":"$E1B3","x":[46003]},{"a":46018,"t":"addr","b":[179,207],"oa":53171,"o":"$CFB3"},{"a":46020,"t":"addr","b":[179,215],"oa":55219,"o":"$D7B3"},{"a":46022,"t":"addr","b":[179,216],"oa":55475,"o":"$D8B3"},{"a":46024,"t":"addr","b":[179,215],"oa":55219,"o":"$D7B3"},{"a":46026,"t":"addr","b":[179,215],"oa":55219,"o":"$D7B3"},{"a":46028,"t":"addr","b":[179,230],"oa":59059,"o":"$E6B3"},{"a":46030,"t":"byte","b":[179]},{"a":46031,"l":"snd_track_clear0","c":"Key-down tracker handler: clear bit 0 of snd_track_state for channel offset Y. Falls into the RTS at $B3D7.","t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":46033,"t":"code","b":[57,11,177],"m":"and","o":"snd_track_state,y","oa":45323},{"a":46036,"t":"code","b":[153,11,177],"m":"sta","o":"snd_track_state,y","oa":45323},{"a":46039,"l":"r_B3D7","t":"code","b":[96],"m":"rts","x":[45960]},{"a":46040,"l":"snd_track_set0","c":"Key-down tracker handler: set bit 0 of snd_track_state (Y = channel offset).","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":46042,"l":"j_B3DA","t":"code","b":[25,11,177],"m":"ora","o":"snd_track_state,y","oa":45323,"x":[46051]},{"a":46045,"t":"code","b":[153,11,177],"m":"sta","o":"snd_track_state,y","oa":45323},{"a":46048,"t":"code","b":[96],"m":"rts"},{"a":46049,"l":"snd_track_set1","c":"Key-down tracker handler: set bit 1 of snd_track_state (A = 2, then the OR at $B3DA).","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":46051,"t":"code","b":[76,218,179],"m":"jmp","o":"j_B3DA","oa":46042},{"a":46054,"l":"snd_track_toggle","c":"Key-down tracker handler: clear bit 1 of snd_track_state and flip snd_toggle_ch3 (channel offset $15, channel 3) or snd_toggle_ch45 (channels 4 and 5) between $00 and $FF.","t":"code","b":[169,253],"m":"lda","o":"#$FD"},{"a":46056,"t":"code","b":[57,11,177],"m":"and","o":"snd_track_state,y","oa":45323},{"a":46059,"t":"code","b":[153,11,177],"m":"sta","o":"snd_track_state,y","oa":45323},{"a":46062,"t":"code","b":[192,21],"m":"cpy","o":"#$15"},{"a":46064,"t":"code","b":[208,17],"m":"bne","o":"b_B403","oa":46083},{"a":46066,"t":"code","b":[173,21,176],"m":"lda","o":"snd_toggle_ch3","oa":45077},{"a":46069,"t":"code","b":[208,6],"m":"bne","o":"b_B3FD","oa":46077},{"a":46071,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46073,"t":"code","b":[141,21,176],"m":"sta","o":"snd_toggle_ch3","oa":45077},{"a":46076,"t":"code","b":[96],"m":"rts"},{"a":46077,"l":"b_B3FD","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46069]},{"a":46079,"t":"code","b":[141,21,176],"m":"sta","o":"snd_toggle_ch3","oa":45077},{"a":46082,"t":"code","b":[96],"m":"rts"},{"a":46083,"l":"b_B403","t":"code","b":[173,22,176],"m":"lda","o":"snd_toggle_ch45","oa":45078,"x":[46064]},{"a":46086,"t":"code","b":[208,6],"m":"bne","o":"b_B40E","oa":46094},{"a":46088,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46090,"t":"code","b":[141,22,176],"m":"sta","o":"snd_toggle_ch45","oa":45078},{"a":46093,"t":"code","b":[96],"m":"rts"},{"a":46094,"l":"b_B40E","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46086]},{"a":46096,"t":"code","b":[141,22,176],"m":"sta","o":"snd_toggle_ch45","oa":45078},{"a":46099,"t":"code","b":[96],"m":"rts"},{"a":46100,"l":"snd_cmd_1F","c":"Music command $1F: read the filter sweep step, the pulse sweep step and the pitch slide step, then the next command.","t":"code","b":[32,90,209],"m":"jsr","o":"snd_read_filter_step","oa":53594},{"a":46103,"t":"code","b":[32,162,209],"m":"jsr","o":"snd_read_pw_step","oa":53666},{"a":46106,"t":"code","b":[32,28,178],"m":"jsr","o":"snd_read_slide","oa":45596},{"a":46109,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":46112,"l":"snd_cmd_1D","c":"Music command $1D: read the filter sweep step ($D15A) and the pitch slide step (snd_read_slide), then the next command.","t":"code","b":[32,90,209],"m":"jsr","o":"snd_read_filter_step","oa":53594},{"a":46115,"t":"code","b":[32,28,178],"m":"jsr","o":"snd_read_slide","oa":45596},{"a":46118,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":46121,"l":"snd_cmd_26","c":"Music command $26: STA snd_piece_ended with A as the dispatcher leaves it, the high byte of this handler's address ($B4), then the next command. It marks the end of a piece for the sound-request code (slot3_follow_flags at $365D).","t":"code","b":[141,18,176],"m":"sta","o":"snd_piece_ended","oa":45074},{"a":46124,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":46127,"l":"j_B42F","t":"code","b":[164,109],"m":"ldy","o":"mus_tmp1","oa":109,"x":[45934,46012]},{"a":46129,"t":"code","b":[185,37,176],"m":"lda","o":"snd_active,y","oa":45093},{"a":46132,"t":"code","b":[8],"m":"php"},{"a":46133,"t":"code","b":[185,213,177],"m":"lda","o":"snd_reg_offsets,y","oa":45525},{"a":46136,"t":"code","b":[24],"m":"clc"},{"a":46137,"t":"code","b":[105,6],"m":"adc","o":"#$06"},{"a":46139,"t":"code","b":[170],"m":"tax"},{"a":46140,"t":"code","b":[168],"m":"tay"},{"a":46141,"t":"code","b":[40],"m":"plp"},{"a":46142,"t":"code","b":[208,26],"m":"bne","o":"b_B45A","oa":46170},{"a":46144,"t":"code","b":[133,113],"m":"sta","o":"mus_tmp3","oa":113},{"a":46146,"t":"code","b":[165,108],"m":"lda","o":"mus_channel","oa":108},{"a":46148,"t":"code","b":[24],"m":"clc"},{"a":46149,"t":"code","b":[105,6],"m":"adc","o":"#$06"},{"a":46151,"t":"code","b":[168],"m":"tay"},{"a":46152,"t":"code","b":[185,37,176],"m":"lda","o":"snd_active,y","oa":45093},{"a":46155,"t":"code","b":[240,36],"m":"beq","o":"b_B471","oa":46193},{"a":46157,"t":"code","b":[185,183,176],"m":"lda","o":"snd_filter_restore,y","oa":45239},{"a":46160,"t":"code","b":[208,31],"m":"bne","o":"b_B471","oa":46193},{"a":46162,"t":"code","b":[132,109],"m":"sty","o":"mus_tmp1","oa":109},{"a":46164,"t":"code","b":[165,113],"m":"lda","o":"mus_tmp3","oa":113},{"a":46166,"t":"code","b":[24],"m":"clc"},{"a":46167,"t":"code","b":[105,21],"m":"adc","o":"#$15"},{"a":46169,"t":"code","b":[168],"m":"tay"},{"a":46170,"l":"b_B45A","t":"code","b":[132,110],"m":"sty","o":"mus_tmp2","oa":110,"x":[46142]},{"a":46172,"t":"code","b":[165,114],"m":"lda","o":"mus_filter_done","oa":114},{"a":46174,"t":"code","b":[208,96],"m":"bne","o":"b_B4C0","oa":46272},{"a":46176,"t":"code","b":[192,21],"m":"cpy","o":"#$15"},{"a":46178,"t":"code","b":[144,4],"m":"bcc","o":"b_B468","oa":46184},{"a":46180,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":46182,"t":"code","b":[208,2],"m":"bne","o":"b_B46A","oa":46186},{"a":46184,"l":"b_B468","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[46178]},{"a":46186,"l":"b_B46A","t":"code","b":[185,91,176],"m":"lda","o":"snd_filter_a,y","oa":45147,"x":[46182]},{"a":46189,"t":"code","b":[48,5],"m":"bmi","o":"b_B474","oa":46196},{"a":46191,"t":"code","b":[16,79],"m":"bpl","o":"b_B4C0","oa":46272},{"a":46193,"l":"b_B471","t":"code","b":[76,232,180],"m":"jmp","o":"j_B4E8","oa":46312,"x":[46155,46160]},{"a":46196,"l":"b_B474","t":"code","b":[141,21,212],"m":"sta","o":"sid_filter_cutoff_lo","x":[46189]},{"a":46199,"t":"code","b":[185,92,176],"m":"lda","o":"snd_filter_a_cut_hi,y","oa":45148},{"a":46202,"t":"code","b":[141,22,212],"m":"sta","o":"sid_filter_cutoff_hi"},{"a":46205,"t":"code","b":[185,93,176],"m":"lda","o":"snd_filter_a_res,y","oa":45149},{"a":46208,"t":"code","b":[141,23,212],"m":"sta","o":"sid_filter_resonance"},{"a":46211,"t":"code","b":[185,94,176],"m":"lda","o":"snd_filter_a_mode,y","oa":45150},{"a":46214,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":46217,"t":"code","b":[185,95,176],"m":"lda","o":"snd_filter_a_once,y","oa":45151},{"a":46220,"t":"code","b":[208,42],"m":"bne","o":"b_B4B8","oa":46264},{"a":46222,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46224,"t":"code","b":[133,114],"m":"sta","o":"mus_filter_done","oa":114},{"a":46226,"t":"code","b":[208,44],"m":"bne","o":"b_B4C0","oa":46272},{"a":46228,"l":"snd_cmd_18","c":"Music command $18: a filter sweep step ($D258), a pitch slide down ($D1CB), then a duration ($D08F).","t":"code","b":[32,88,210],"m":"jsr","o":"snd_filter_step","oa":53848},{"a":46231,"t":"code","b":[32,203,209],"m":"jsr","o":"snd_slide_down","oa":53707},{"a":46234,"t":"code","b":[76,143,208],"m":"jmp","o":"snd_duration","oa":53391},{"a":46237,"l":"snd_cmd_19","c":"Music command $19: a filter sweep step, a pitch slide up ($D1CF), then a duration.","t":"code","b":[32,88,210],"m":"jsr","o":"snd_filter_step","oa":53848},{"a":46240,"t":"code","b":[32,207,209],"m":"jsr","o":"snd_slide_up","oa":53711},{"a":46243,"t":"code","b":[76,143,208],"m":"jmp","o":"snd_duration","oa":53391},{"a":46246,"l":"snd_cmd_1A","c":"Music command $1A: a filter sweep step, a pulse sweep step, a pitch slide down, then a duration.","t":"code","b":[32,88,210],"m":"jsr","o":"snd_filter_step","oa":53848},{"a":46249,"t":"code","b":[32,181,210],"m":"jsr","o":"snd_pw_step","oa":53941},{"a":46252,"t":"code","b":[32,203,209],"m":"jsr","o":"snd_slide_down","oa":53707},{"a":46255,"t":"code","b":[76,143,208],"m":"jmp","o":"snd_duration","oa":53391},{"a":46258,"l":"snd_cmd_27","c":"Music command $27: STA snd_track_enable + X (X = the channel's register offset) with A = $B4, the high byte of this handler's address left by the dispatcher, which turns the channel's key-down tracking on; then the next command.","t":"code","b":[157,10,177],"m":"sta","o":"snd_track_enable,x","oa":45322},{"a":46261,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":46264,"l":"b_B4B8","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46220]},{"a":46266,"t":"code","b":[153,91,176],"m":"sta","o":"snd_filter_a,y","oa":45147},{"a":46269,"t":"code","b":[153,95,176],"m":"sta","o":"snd_filter_a_once,y","oa":45151},{"a":46272,"l":"b_B4C0","t":"code","b":[164,110],"m":"ldy","o":"mus_tmp2","oa":110,"x":[46174,46191,46226]},{"a":46274,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":46276,"t":"code","b":[133,107],"m":"sta","o":"mus_tmp0","oa":107},{"a":46278,"l":"b_B4C6","t":"code","b":[185,49,176],"m":"lda","o":"snd_regs,y","oa":45105,"x":[46288]},{"a":46281,"t":"code","b":[157,0,212],"m":"sta","o":"sid_v1_freq_lo,x"},{"a":46284,"t":"code","b":[202],"m":"dex"},{"a":46285,"t":"code","b":[136],"m":"dey"},{"a":46286,"t":"code","b":[198,107],"m":"dec","o":"mus_tmp0","oa":107},{"a":46288,"t":"code","b":[16,244],"m":"bpl","o":"b_B4C6","oa":46278},{"a":46290,"t":"code","b":[200],"m":"iny"},{"a":46291,"t":"code","b":[232],"m":"inx"},{"a":46292,"t":"code","b":[185,53,176],"m":"lda","o":"snd_regs_control,y","oa":45109},{"a":46295,"t":"code","b":[132,112],"m":"sty","o":"mus_rec","oa":112},{"a":46297,"t":"code","b":[41,8],"m":"and","o":"#$08"},{"a":46299,"t":"code","b":[240,11],"m":"beq","o":"j_B4E8","oa":46312},{"a":46301,"t":"code","b":[185,53,176],"m":"lda","o":"snd_regs_control,y","oa":45109},{"a":46304,"t":"code","b":[41,247],"m":"and","o":"#$F7"},{"a":46306,"t":"code","b":[153,53,176],"m":"sta","o":"snd_regs_control,y","oa":45109},{"a":46309,"t":"code","b":[157,4,212],"m":"sta","o":"sid_v1_control,x"},{"a":46312,"l":"j_B4E8","t":"code","b":[198,108],"m":"dec","o":"mus_channel","oa":108,"x":[46193,46299]},{"a":46314,"t":"code","b":[198,108],"m":"dec","o":"mus_channel","oa":108},{"a":46316,"t":"code","b":[48,3],"m":"bmi","o":"r_B4F1","oa":46321},{"a":46318,"t":"code","b":[76,94,179],"m":"jmp","o":"j_B35E","oa":45918},{"a":46321,"l":"r_B4F1","t":"code","b":[96],"m":"rts","x":[46316]},{"a":46322,"l":"snd_start_b_restart","c":"Reached by JMP from music command 5 and from command 3 on a set-B channel ($D0C9-$D0CC): start the tune in A on set B, then run sound_frame again from the top.","t":"code","b":[32,104,178],"m":"jsr","o":"sound_start_b","oa":45672,"x":[53452]},{"a":46325,"t":"code","b":[76,251,180],"m":"jmp","o":"sound_frame","oa":46331},{"a":46328,"l":"snd_start_a_restart","c":"Reached by JMP from music command 3 on a set-A channel ($D0C6): start the tune in A on set A, then fall into sound_frame.","t":"code","b":[32,85,178],"m":"jsr","o":"sound_start_a","oa":45653,"x":[53446]},{"a":46331,"l":"sound_frame","c":"The driver's frame update (via $B003 from the raster interrupt, and after snd_start_a_restart or snd_start_b_restart). First re-derives tune 12's second and third voice addresses from the first ($D7AC + 4, + 8); on the interrupt path the I/O area is banked in ($0723), so these three instructions address SID registers ($D40C, $D40E, $D410) instead of the tune table. Then advances snd_frame_mix, snd_dispatch_count, snd_frame_count and snd_random, and for voices 0-2 steps the set-A and set-B channels: count down the note, release the key, and at the end of a note read commands until one waits (snd_next_command). Ends in snd_output.","t":"code","b":[173,172,215],"m":"lda","o":"$D7AC","x":[45059,46325]},{"a":46334,"t":"code","b":[24],"m":"clc"},{"a":46335,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":46337,"t":"code","b":[141,174,215],"m":"sta","o":"$D7AE"},{"a":46340,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":46342,"t":"code","b":[141,176,215],"m":"sta","o":"$D7B0"},{"a":46345,"t":"code","b":[238,212,177],"m":"inc","o":"snd_frame_mix","oa":45524},{"a":46348,"t":"code","b":[173,212,177],"m":"lda","o":"snd_frame_mix","oa":45524},{"a":46351,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":46353,"t":"code","b":[208,3],"m":"bne","o":"b_B516","oa":46358},{"a":46355,"t":"code","b":[238,212,177],"m":"inc","o":"snd_frame_mix","oa":45524},{"a":46358,"l":"b_B516","t":"code","b":[173,23,176],"m":"lda","o":"snd_dispatch_count","oa":45079,"x":[46353]},{"a":46361,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":46363,"t":"code","b":[208,5],"m":"bne","o":"b_B522","oa":46370},{"a":46365,"t":"code","b":[238,23,176],"m":"inc","o":"snd_dispatch_count","oa":45079},{"a":46368,"t":"code","b":[208,8],"m":"bne","o":"b_B52A","oa":46378},{"a":46370,"l":"b_B522","t":"code","b":[173,23,176],"m":"lda","o":"snd_dispatch_count","oa":45079,"x":[46363]},{"a":46373,"t":"code","b":[41,248],"m":"and","o":"#$F8"},{"a":46375,"t":"code","b":[141,23,176],"m":"sta","o":"snd_dispatch_count","oa":45079},{"a":46378,"l":"b_B52A","t":"code","b":[238,208,176],"m":"inc","o":"snd_frame_count","oa":45264,"x":[46368]},{"a":46381,"t":"code","b":[173,208,176],"m":"lda","o":"snd_frame_count","oa":45264},{"a":46384,"t":"code","b":[109,23,176],"m":"adc","o":"snd_dispatch_count","oa":45079},{"a":46387,"t":"code","b":[109,212,177],"m":"adc","o":"snd_frame_mix","oa":45524},{"a":46390,"t":"code","b":[109,211,176],"m":"adc","o":"snd_random","oa":45267},{"a":46393,"t":"code","b":[141,211,176],"m":"sta","o":"snd_random","oa":45267},{"a":46396,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46398,"t":"code","b":[141,24,176],"m":"sta","o":"snd_voice_loop","oa":45080},{"a":46401,"l":"j_B541","t":"code","b":[238,24,176],"m":"inc","o":"snd_voice_loop","oa":45080,"x":[45952,46425]},{"a":46404,"t":"code","b":[173,24,176],"m":"lda","o":"snd_voice_loop","oa":45080},{"a":46407,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":46409,"t":"code","b":[144,3],"m":"bcc","o":"b_B54E","oa":46414},{"a":46411,"t":"code","b":[76,77,179],"m":"jmp","o":"snd_output","oa":45901},{"a":46414,"l":"b_B54E","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46409]},{"a":46416,"t":"code","b":[133,111],"m":"sta","o":"mus_pass","oa":111},{"a":46418,"t":"code","b":[240,9],"m":"beq","o":"b_B55D","oa":46429},{"a":46420,"l":"j_B554","t":"code","b":[32,56,182],"m":"jsr","o":"snd_io_in","oa":46648,"x":[46488,46634,53436]},{"a":46423,"t":"code","b":[165,111],"m":"lda","o":"mus_pass","oa":111},{"a":46425,"t":"code","b":[208,230],"m":"bne","o":"j_B541","oa":46401},{"a":46427,"t":"code","b":[230,111],"m":"inc","o":"mus_pass","oa":111},{"a":46429,"l":"b_B55D","t":"code","b":[32,56,182],"m":"jsr","o":"snd_io_in","oa":46648,"x":[46418,46584,53466,53488,53591,54239,54291,54359,54373,54475,54485,54549,54564]},{"a":46432,"t":"code","b":[173,24,176],"m":"lda","o":"snd_voice_loop","oa":45080},{"a":46435,"t":"code","b":[166,111],"m":"ldx","o":"mus_pass","oa":111},{"a":46437,"t":"code","b":[240,3],"m":"beq","o":"b_B56A","oa":46442},{"a":46439,"t":"code","b":[24],"m":"clc"},{"a":46440,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":46442,"l":"b_B56A","t":"code","b":[10],"m":"asl","o":"a","x":[46437]},{"a":46443,"t":"code","b":[168],"m":"tay"},{"a":46444,"t":"code","b":[133,108],"m":"sta","o":"mus_channel","oa":108},{"a":46446,"t":"code","b":[190,213,177],"m":"ldx","o":"snd_reg_offsets,y","oa":45525},{"a":46449,"t":"code","b":[185,25,176],"m":"lda","o":"snd_note_on,y","oa":45081},{"a":46452,"t":"code","b":[208,17],"m":"bne","o":"b_B587","oa":46471},{"a":46454,"t":"code","b":[185,26,176],"m":"lda","o":"snd_note_off,y","oa":45082},{"a":46457,"t":"code","b":[240,32],"m":"beq","o":"b_B59B","oa":46491},{"a":46459,"t":"code","b":[153,184,176],"m":"sta","o":"snd_release_seen,y","oa":45240},{"a":46462,"t":"code","b":[24],"m":"clc"},{"a":46463,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":46465,"t":"code","b":[153,26,176],"m":"sta","o":"snd_note_off,y","oa":45082},{"a":46468,"t":"code","b":[76,144,181],"m":"jmp","o":"j_B590","oa":46480},{"a":46471,"l":"b_B587","t":"code","b":[24],"m":"clc","x":[46452]},{"a":46472,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":46474,"t":"code","b":[153,25,176],"m":"sta","o":"snd_note_on,y","oa":45081},{"a":46477,"t":"code","b":[76,152,181],"m":"jmp","o":"j_B598","oa":46488},{"a":46480,"l":"j_B590","t":"code","b":[189,53,176],"m":"lda","o":"snd_regs_control,x","oa":45109,"x":[46468]},{"a":46483,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":46485,"t":"code","b":[157,53,176],"m":"sta","o":"snd_regs_control,x","oa":45109},{"a":46488,"l":"j_B598","t":"code","b":[76,84,181],"m":"jmp","o":"j_B554","oa":46420,"x":[46477,46593]},{"a":46491,"l":"b_B59B","t":"code","b":[185,184,176],"m":"lda","o":"snd_release_seen,y","oa":45240,"x":[46457]},{"a":46494,"t":"code","b":[240,21],"m":"beq","o":"b_B5B5","oa":46517},{"a":46496,"t":"code","b":[185,183,176],"m":"lda","o":"snd_filter_restore,y","oa":45239},{"a":46499,"t":"code","b":[240,8],"m":"beq","o":"b_B5AD","oa":46509},{"a":46501,"t":"code","b":[173,98,176],"m":"lda","o":"snd_filter_b","oa":45154},{"a":46504,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":46506,"t":"code","b":[141,98,176],"m":"sta","o":"snd_filter_b","oa":45154},{"a":46509,"l":"b_B5AD","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[46499]},{"a":46511,"t":"code","b":[153,183,176],"m":"sta","o":"snd_filter_restore,y","oa":45239},{"a":46514,"t":"code","b":[153,184,176],"m":"sta","o":"snd_release_seen,y","oa":45240},{"a":46517,"l":"b_B5B5","t":"code","b":[134,112],"m":"stx","o":"mus_rec","oa":112,"x":[46494]},{"a":46519,"l":"snd_next_command","c":"Read channel $6C's next stream byte with the I/O area banked out (streams may lie under it, $D800-$DDFF). Non-zero: JMP to the interpreter at $D000 ($B62D), which moves the pointer on, stores the byte in snd_last_cmd and dispatches it. Zero, the end of the stream: return to a caller saved by music command 4 (restoring its registers) or, with none, stop the channel and release its SID voice's key. The target of most command handlers and of commands $28-$2F.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108,"x":[45644,45650,45663,45669,45838,45889,45898,46109,46118,46124,46261,54398,54404,54512,54519]},{"a":46521,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":46523,"t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117},{"a":46525,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":46527,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":46529,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":46531,"t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1},{"a":46533,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":46535,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":46537,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":46539,"t":"code","b":[208,96],"m":"bne","o":"b_B62D","oa":46637},{"a":46541,"t":"code","b":[32,56,182],"m":"jsr","o":"snd_io_in","oa":46648},{"a":46544,"t":"code","b":[189,129,176],"m":"lda","o":"snd_return_lo,x","oa":45185},{"a":46547,"t":"code","b":[29,130,176],"m":"ora","o":"snd_return_hi,x","oa":45186},{"a":46550,"t":"code","b":[240,35],"m":"beq","o":"b_B5FB","oa":46587},{"a":46552,"t":"code","b":[189,129,176],"m":"lda","o":"snd_return_lo,x","oa":45185},{"a":46555,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":46557,"t":"code","b":[189,130,176],"m":"lda","o":"snd_return_hi,x","oa":45186},{"a":46560,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":46562,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46564,"t":"code","b":[157,129,176],"m":"sta","o":"snd_return_lo,x","oa":45185},{"a":46567,"t":"code","b":[157,130,176],"m":"sta","o":"snd_return_hi,x","oa":45186},{"a":46570,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":46572,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":46574,"l":"b_B5EE","t":"code","b":[189,141,176],"m":"lda","o":"snd_saved_regs,x","oa":45197,"x":[46582]},{"a":46577,"t":"code","b":[157,49,176],"m":"sta","o":"snd_regs,x","oa":45105},{"a":46580,"t":"code","b":[232],"m":"inx"},{"a":46581,"t":"code","b":[136],"m":"dey"},{"a":46582,"t":"code","b":[16,246],"m":"bpl","o":"b_B5EE","oa":46574},{"a":46584,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":46587,"l":"b_B5FB","t":"code","b":[157,37,176],"m":"sta","o":"snd_active,x","oa":45093,"x":[46550]},{"a":46590,"t":"code","b":[189,38,176],"m":"lda","o":"snd_last_cmd,x","oa":45094},{"a":46593,"t":"code","b":[240,149],"m":"beq","o":"j_B598","oa":46488},{"a":46595,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":46597,"t":"code","b":[157,38,176],"m":"sta","o":"snd_last_cmd,x","oa":45094},{"a":46600,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":46602,"t":"code","b":[176,5],"m":"bcs","o":"b_B611","oa":46609},{"a":46604,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":46606,"t":"code","b":[157,189,176],"m":"sta","o":"snd_ended_a,x","oa":45245},{"a":46609,"l":"b_B611","t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112,"x":[46602]},{"a":46611,"t":"code","b":[189,53,176],"m":"lda","o":"snd_regs_control,x","oa":45109},{"a":46614,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":46616,"t":"code","b":[157,53,176],"m":"sta","o":"snd_regs_control,x","oa":45109},{"a":46619,"t":"code","b":[72],"m":"pha"},{"a":46620,"t":"code","b":[138],"m":"txa"},{"a":46621,"t":"code","b":[56],"m":"sec"},{"a":46622,"t":"code","b":[233,21],"m":"sbc","o":"#$15"},{"a":46624,"t":"code","b":[170],"m":"tax"},{"a":46625,"t":"code","b":[176,3],"m":"bcs","o":"b_B626","oa":46630},{"a":46627,"t":"code","b":[105,21],"m":"adc","o":"#$15"},{"a":46629,"t":"code","b":[170],"m":"tax"},{"a":46630,"l":"b_B626","t":"code","b":[104],"m":"pla","x":[46625]},{"a":46631,"t":"code","b":[157,4,212],"m":"sta","o":"sid_v1_control,x"},{"a":46634,"t":"code","b":[76,84,181],"m":"jmp","o":"j_B554","oa":46420},{"a":46637,"l":"b_B62D","t":"code","b":[72],"m":"pha","x":[46539]},{"a":46638,"t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1},{"a":46640,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":46642,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":46644,"t":"code","b":[104],"m":"pla"},{"a":46645,"t":"code","b":[76,0,208],"m":"jmp","o":"snd_event","oa":53248},{"a":46648,"l":"snd_io_in","c":"Bank the I/O area back in (set bit 0 of $01), keeping A. Called before each channel step and at the end of a tune start.","t":"code","b":[72],"m":"pha","x":[45809,46420,46429,46541]},{"a":46649,"t":"code","b":[165,1],"m":"lda","o":"cpu_port","oa":1},{"a":46651,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":46653,"t":"code","b":[133,1],"m":"sta","o":"cpu_port","oa":1},{"a":46655,"t":"code","b":[104],"m":"pla"},{"a":46656,"t":"code","b":[96],"m":"rts"},{"a":46657,"l":"snd_freq_direct","c":"Frequency words looked up with the note byte itself as the index, for notes below $90 ($D049-$D051): note byte $10 reads $B651/$B652 = 0, a rest. $B641-$B660 are all zero; bytes $50-$8F would index $B691-$B6D0, inside the tables that follow.","t":"word","b":[0],"d":[],"x":[53321]},{"a":46658,"l":"snd_freq_direct_hi","c":"High bytes of snd_freq_direct (the table is read as pairs, low at $B641,Y and high at $B642,Y).","t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0],"x":[53326]},{"a":46666,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":46674,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":46682,"t":"word","b":[0,0,0,0,0,0,0],"d":[0,0,0]},{"a":46689,"l":"snd_freq_octave","c":"Top-octave frequency words for note bytes $90-$FF: index = (byte / 16) x 2, plus $20 when bit 3 is set ($D05B-$D06C); the value is halved 7 - (byte AND 7) times ($D071-$D07F), so the low three bits are the octave. Only fourteen slots are used, at $B673-$B680 and $B693-$B6A0; the others are zero or hold other data.","t":"word","b":[0],"d":[],"x":[53351]},{"a":46690,"l":"snd_freq_octave_hi","c":"High bytes of snd_freq_octave (read as pairs at $B661,Y and $B662,Y).","t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0],"x":[53356]},{"a":46698,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":46706,"t":"word","b":[0],"d":[]},{"a":46707,"l":"snd_freq_notes_a","c":"Seven frequency words used by snd_freq_octave for note bytes $9x-$Fx without bit 3: $C8F3, $E18F, $FD2E, $861E, $968B, $A8FA, $B306. With snd_freq_notes_b they are the twelve semitones of an equal-tempered octave ($861E to $FD2E, each about 1.059 times the last).","t":"word","b":[243,200,143,225,46,253,30,134],"d":[51443,57743,64814,34334]},{"a":46715,"t":"word","b":[139,150,250,168,6,179],"d":[38539,43258,45830]},{"a":46721,"l":"snd_stream_rest","c":"A two-byte stream, $00 $00: instrument 0 and the end of the stream. Entry 2 of the shared stream-subroutine table (snd_subs_shared); tune 0 calls it.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46729,"t":"byte","b":[0,0]},{"a":46731,"l":"snd_tune0_stream","c":"Tune 0's stream (all three voices of tune 0 in the tune table at $D764 point here): instrument 0; $0F (no operation); $0D $04 (filter preset at offset 4: no filter, volume 15); $04 $82 (call shared subroutine 2, snd_stream_rest); $00 end. sound_init plays it on set A.","t":"byte","b":[0,15,13,4,4,130,0,0]},{"a":46739,"l":"snd_freq_notes_b","c":"Seven frequency words used by snd_freq_octave for note bytes with bit 3 set: $D4E6, $EEF8, $861E, $8E18, $9F7E, $B306, $BDAC.","t":"word","b":[230,212,248,238,30,134,24,142],"d":[54502,61176,34334,36376]},{"a":46747,"t":"word","b":[126,159,6,179,172,189],"d":[40830,45830,48556]},{"a":46753,"l":"snd_filter_presets","c":"Filter presets, four bytes each, chosen by a byte offset (0 at every tune start, $D362; music command $0D's operand, $D4D8): cutoff low bits with bit 7 set (write pending), cutoff high byte ($D416), resonance and routing ($D417), mode and volume ($D418). Twenty presets to $B6F0; offsets 0 and 4 are 'no filter, volume 15'. Presets 11-14 (offsets $2C, $30, $34, $38) are a resonant band-pass (resonance 15 on voices 1 and 2, mode/volume $2F) at cutoff $40, $60, $80 and $A0: the vowel colours of the talking syllables.","t":"byte","b":[128],"x":[54124]},{"a":46754,"l":"snd_filter_presets_1","c":"snd_filter_presets + 1: cutoff high byte of each preset (read at $D372 with the preset offset in X).","t":"byte","b":[0],"x":[54130]},{"a":46755,"l":"snd_filter_presets_2","c":"snd_filter_presets + 2: resonance and routing of each preset ($D378).","t":"byte","b":[0],"x":[54136]},{"a":46756,"l":"snd_filter_presets_3","c":"snd_filter_presets + 3: mode and volume of each preset ($D37E).","t":"byte","b":[15,128,0,0,15,128,32,241],"x":[54142]},{"a":46764,"t":"byte","b":[79,128,0,241,47,240,15,7]},{"a":46772,"t":"byte","b":[79,240,111,246,31,128,255,246]},{"a":46780,"t":"byte","b":[47,128,255,241,79,128,112,242]},{"a":46788,"t":"byte","b":[47,128,72,241,31,128,0,0]},{"a":46796,"t":"byte","b":[10,128,64,243,47,128,96,243]},{"a":46804,"t":"byte","b":[47,128,128,243,47,128,160,243]},{"a":46812,"t":"byte","b":[47,128,0,243,47]},{"a":46817,"l":"snd_filter_presets_16","c":"Filter presets 16-19 of snd_filter_presets ($B6E1-$B6F0): 80 FF F1 3F, 80 6F F2 2F, 80 FF F2 2F, 80 90 F1 2F.","t":"byte","b":[128,255,241,63,128,111,242,47]},{"a":46825,"t":"byte","b":[128,255,242,47,128,144,241,47]},{"a":46833,"l":"snd_data_B6F1","c":"53 bytes with a repeating $44 $04 pattern, between the filter presets and the duration table. No reference found. Music command $0D forces the pending bit, so these could be further filter presets reached by larger offsets; not established.","t":"byte","b":[0,2,0,5,68,4,0,3]},{"a":46841,"t":"byte","b":[0,6,68,4,0,2,0,7]},{"a":46849,"t":"byte","b":[68,4,0,1,0,10,68,4]},{"a":46857,"t":"byte","b":[0,1,0,5,68,4,0,1]},{"a":46865,"t":"byte","b":[0,3,32,0,0,2,0,7]},{"a":46873,"t":"byte","b":[68,0,0,5,0,9,68,4]},{"a":46881,"t":"byte","b":[0,2,0,15,27]},{"a":46886,"l":"snd_durations","c":"Note durations, a pair per even duration byte: frames with the key down, then frames of release ($D09D-$D0AF put them in snd_note_on and snd_note_off). Pairs run to about $B7CF (duration bytes up to $A8); $B766-$B76B are also the start of snd_subs_shared.","t":"byte","b":[0],"x":[53414]},{"a":46887,"l":"snd_durations_off","c":"snd_durations + 1: the release half of each pair (read at $D0AC).","t":"byte","b":[0,1,1,2,1,2,9,0],"x":[53420]},{"a":46895,"t":"byte","b":[10,3,8,3,2,3,14,3]},{"a":46903,"t":"byte","b":[5,2,2,1,2,3,32,3]},{"a":46911,"t":"byte","b":[26,3,44,3,68,3,20,1]},{"a":46919,"t":"byte","b":[1,3,38,3,32,1,1,3]},{"a":46927,"t":"byte","b":[3,3,4,255,0,3,92,3]},{"a":46935,"t":"byte","b":[116,3,140,3,12,40,64,0]},{"a":46943,"t":"byte","b":[48,3,45,3,10,3,17]},{"a":46950,"l":"snd_subs_shared","c":"Stream-subroutine table for operand bytes with bit 7 set on set-A channels (music commands 4, $0A, $20, $24 through $D527, which finds this table through the pointer at $D831): entry n at $B766 + 2n. Entry 1 is $B68B (tune 0's stream), entry 2 $B681 (snd_stream_rest); entries 3-55 overlap snd_durations; entries 56-75 are at snd_subs_shared_56.","t":"byte","b":[0,0,139,182,129,182,3,23]},{"a":46958,"t":"byte","b":[3,50,3,254,3,0,3,2]},{"a":46966,"t":"byte","b":[3,4,3,8,3,12,3,20]},{"a":46974,"t":"byte","b":[3,28,3,44,3,60,3,0]},{"a":46982,"t":"byte","b":[3,254,3,254,3,1,3,3]},{"a":46990,"t":"byte","b":[3,6,3,11,3,16,3,26]},{"a":46998,"t":"byte","b":[3,36,3,56,3,76,3,1]},{"a":47006,"t":"byte","b":[3,254,3,255,3,3,3,6]},{"a":47014,"t":"byte","b":[3,10,3,17,3,24,3,38]},{"a":47022,"t":"byte","b":[3,52,3,80,3,108,3,3]},{"a":47030,"t":"byte","b":[3,255,3,0,3,4,3,8]},{"a":47038,"t":"byte","b":[3,12,3,20,3,28,3,44]},{"a":47046,"t":"byte","b":[3,60,3,92,3,124,3,4]},{"a":47054,"t":"byte","b":[3,0]},{"a":47056,"l":"fill_B7D0","c":"$00 $FF three times, between the durations and the addresses at $B7D6. Nothing refers to them; they look like uninitialised RAM.","t":"byte","b":[0,255,0,255,0,255]},{"a":47062,"l":"snd_subs_shared_56","c":"Entries 56-75 of snd_subs_shared: twenty stream addresses $DBA3, $DBA9, $DBAF, $DBB5, $DA98, $DA9D ... $DAEC (music data under the I/O area). Entries 56-59 are the talking syllables: each is instrument $69 (noise with the test bit), filter preset 11, 12, 13 or 14 (music command $0D), the top-octave note $B7 for 2 frames and 1 of release, and a return (command $21). Both voices of the talking tune $15 start with command $20 $B8 $03, which calls one of the four at random.","t":"word","b":[163,219,169,219,175,219,181,219],"d":[56227,56233,56239,56245]},{"a":47070,"t":"word","b":[152,218,157,218,162,218,167,218],"d":[55960,55965,55970,55975]},{"a":47078,"t":"word","b":[172,218,177,218,182,218,187,218],"d":[55980,55985,55990,55995]},{"a":47086,"t":"word","b":[192,218,196,218,200,218,204,218],"d":[56000,56004,56008,56012]},{"a":47094,"t":"word","b":[212,218,220,218,228,218,236,218],"d":[56020,56028,56036,56044]},{"a":47102,"l":"snd_subs_ch1","c":"Stream-subroutine table of channel 1 for operand bytes with bit 7 clear (pointer at $D835): entry n at $B7FE + 2n. The only entries that are stream addresses are 100-111 at $B8C6-$B8DD; the rest of $B7FE-$B8C5 is zero, $FB00 (entry 0) or $FFxx values. The talking tune $15 calls entry 96-111 at random on channel 1 (command $20 $60 $0F), so entries 96-99 ($FF00, $FF40, $FF08, $FF00 at $B8BE-$B8C5, bytes that look like uninitialised RAM) send a quarter of those calls into memory at $FF00-$FF4F.","t":"byte","b":[0,251,0,0,0,0,0,0]},{"a":47110,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47118,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47126,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47134,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47142,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47150,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47158,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47166,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47174,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47182,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47190,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47198,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47206,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47214,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47222,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47230,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47238,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47246,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47254,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47262,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47270,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47278,"t":"byte","b":[0,0,151,255,32,255,0,255]},{"a":47286,"t":"byte","b":[0,255,64,255,8,255,0,255]},{"a":47294,"t":"byte","b":[235,220,204,219,234,219,8,220]},{"a":47302,"l":"snd_subs_ch1_100","c":"Entries 100-111 of snd_subs_ch1: stream addresses $DCEB, $DBCC, $DBEA, $DC08, $DC26, $DC44, $DC64, $DC8B, $DCBB, $DCBB, $DC8B, $DCEB: the talking phrases of channel 1 (notes with pitch glides: slide steps set by command 6, slides $18/$19 repeated by command 2). Channel 0 draws its phrases from entries 83-98 of its own table at $D8F5 (command $20 $53 $0F).","t":"word","b":[38,220,68,220,100,220,139,220],"d":[56358,56388,56420,56459]},{"a":47310,"t":"word","b":[187,220,187,220,139,220,235,220],"d":[56507,56507,56459,56555]},{"a":47318,"t":"word","b":[204,219,100,220,68,220,38,220],"d":[56268,56420,56388,56358]},{"a":47326,"l":"snd_subs_ch2","c":"Stream-subroutine table of channel 2 (pointer at $D837): entries 0-3 at $B8DE-$B8E5 ($DBCC, $DC64, $DC44, $DC26) and 96-111 at snd_subs_ch2_96; the bytes between are zero apart from $00 $FF pairs. Its first entries are also entries 112-115 of snd_subs_ch1.","t":"word","b":[0,255,0,0,0,0,0,0],"d":[65280,0,0,0]},{"a":47334,"l":"snd_subs_ch2_4","c":"Entries 4-91 of snd_subs_ch2 ($B8E6-$B997): $FF00 in entry 4, zeros after it. No stream was found that calls them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47342,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47350,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47358,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47366,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47374,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47382,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47390,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47398,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47406,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47414,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47422,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47430,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47438,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47446,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47454,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47462,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47470,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47478,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47486,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47494,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47502,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":47510,"t":"byte","b":[0,0]},{"a":47512,"l":"fill_B998","c":"$00 $FF three times before snd_subs_ch2_96; unreferenced, like fill_B7D0.","t":"byte","b":[0,255,0,255,0,255]},{"a":47518,"l":"snd_subs_ch2_96","c":"Entries 96-111 of snd_subs_ch2: stream addresses $D891, $D895, $D899, $D895, $D899, $D899, $D895, $D899, $DAFC, $DB04, $DB14, $DB32, $DB54, $DB54, $DB80, $DAFC.","t":"word","b":[145,216,149,216,153,216,149,216],"d":[55441,55445,55449,55445]},{"a":47526,"t":"word","b":[153,216,153,216,149,216,153,216],"d":[55449,55449,55445,55449]},{"a":47534,"t":"word","b":[252,218,4,219,20,219,50,219],"d":[56060,56068,56084,56114]},{"a":47542,"t":"word","b":[84,219,84,219,128,219,252,218],"d":[56148,56148,56192,56060]},{"a":47550,"l":"person_colours_pair","c":"New clothes colours, activity 85 and the cold start ($04CE): a random number AND $1F picks pair 0-15 of colour_pairs, or the person's own pair $034B when it is 16 or more (so half the time); the pair's first colour goes to $1393 (the colour of his lower sprite) and its second to the sprite multicolour register $D025. Then person_head_colour, and next phase.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[1230]},{"a":47553,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":47555,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":47557,"t":"code","b":[144,3],"m":"bcc","o":"b_B9CA","oa":47562},{"a":47559,"t":"code","b":[173,75,3],"m":"lda","o":"colour_pair_pref","oa":843},{"a":47562,"l":"b_B9CA","t":"code","b":[10],"m":"asl","o":"a","x":[47557]},{"a":47563,"t":"code","b":[170],"m":"tax"},{"a":47564,"t":"code","b":[189,14,186],"m":"lda","o":"colour_pairs,x","oa":47630},{"a":47567,"t":"code","b":[141,147,19],"m":"sta","o":"colour_person_lower","oa":5011},{"a":47570,"t":"code","b":[189,15,186],"m":"lda","o":"colour_pairs_multi,x","oa":47631},{"a":47573,"t":"code","b":[141,37,208],"m":"sta","o":"vic_sprite_mc0"},{"a":47576,"l":"person_head_colour","c":"Head colour: while $0425 is non-zero (3 in the image) the head colour $042E is left alone; at 0 it would become, at random, $0B or $09 (head_colours) or the value in $D025. Then JMP $8F0B (next phase).","t":"code","b":[173,37,4],"m":"lda","o":"keep_head_colour","oa":1061,"x":[47627]},{"a":47579,"t":"code","b":[208,19],"m":"bne","o":"b_B9F0","oa":47600},{"a":47581,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":47584,"t":"code","b":[41,129],"m":"and","o":"#$81"},{"a":47586,"t":"code","b":[48,6],"m":"bmi","o":"b_B9EA","oa":47594},{"a":47588,"t":"code","b":[170],"m":"tax"},{"a":47589,"t":"code","b":[189,243,185],"m":"lda","o":"head_colours,x","oa":47603},{"a":47592,"t":"code","b":[208,3],"m":"bne","o":"b_B9ED","oa":47597},{"a":47594,"l":"b_B9EA","t":"code","b":[173,37,208],"m":"lda","o":"vic_sprite_mc0","x":[47586]},{"a":47597,"l":"b_B9ED","t":"code","b":[141,46,4],"m":"sta","o":"head_colour","oa":1070,"x":[47592]},{"a":47600,"l":"b_B9F0","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[47579]},{"a":47603,"l":"head_colours","c":"Two head colours for person_head_colour: $0B (dark grey) and $09 (brown).","t":"byte","b":[11,9],"x":[47589]},{"a":47605,"l":"person_colours_single","c":"New clothes colour, activity 103: a random number AND $0F picks colour 0-7 of colour_singles, or the person's own entry $034C when it is 8 or more; the colour goes to both $D025 and $1393. Then person_head_colour.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":47608,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":47610,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":47612,"t":"code","b":[144,3],"m":"bcc","o":"b_BA01","oa":47617},{"a":47614,"t":"code","b":[173,76,3],"m":"lda","o":"colour_pref_2","oa":844},{"a":47617,"l":"b_BA01","t":"code","b":[170],"m":"tax","x":[47612]},{"a":47618,"t":"code","b":[189,46,186],"m":"lda","o":"colour_singles,x","oa":47662},{"a":47621,"t":"code","b":[141,37,208],"m":"sta","o":"vic_sprite_mc0"},{"a":47624,"t":"code","b":[141,147,19],"m":"sta","o":"colour_person_lower","oa":5011},{"a":47627,"t":"code","b":[76,216,185],"m":"jmp","o":"person_head_colour","oa":47576},{"a":47630,"l":"colour_pairs","c":"Sixteen colour pairs for person_colours_pair: first byte $1393 (lower sprite), second $D025 (sprite multicolour 0): $0D/$06, $07/$06, $04/$06, $03/$06, $01/$06, $01/$0B, $06/$01, $02/$01, $0D/$02, $01/$02, $01/$05, $04/$03, $07/$02, $06/$04, $05/$04, $01/$04.","t":"byte","b":[13],"x":[47564]},{"a":47631,"l":"colour_pairs_multi","c":"Second bytes of colour_pairs (read as LDA $BA0F,X): the value for $D025.","t":"byte","b":[6,7,6,4,6,3,6,1],"x":[47570]},{"a":47639,"t":"byte","b":[6,1,11,6,1,2,1,13]},{"a":47647,"t":"byte","b":[2,1,2,1,5,4,3,7]},{"a":47655,"t":"byte","b":[2,6,4,5,4,1,4]},{"a":47662,"l":"colour_singles","c":"Eight single colours for person_colours_single: $0E, $03, $0D, $04, $04, $02, $03, $0D.","t":"byte","b":[14,3,13,4,4,2,3,13],"x":[47618]},{"a":47670,"l":"text_scroll_left","c":"Pixel lines of the text band still to scroll for a RETURN: text_newline sets 7, text_scroll_step moves the band up one line per pass and decrements it. Also waited on by the letter code at $56E9.","t":"byte","b":[0],"x":[22249,47678,47816,48322,48375,48480,48483]},{"a":47671,"l":"text_return_left","c":"Non-zero (7) while the cursor is being carried back to the left margin after a RETURN; text_return_step moves it 16 pixels a pass and clears this at the margin. Waited on at $56E6.","t":"byte","b":[0],"x":[22246,47681,47819,48325,48328,48355,48486]},{"a":47672,"l":"text_erase_mode","c":"Non-zero makes the next glyph erase instead of print: glyph_fetch first moves the cursor back by that glyph's width + 1 (not past the margin), glyph_draw XORs it over the old one and does not advance. Set to 1 by the line editor's DEL ($3779, which then queues the character being deleted) and to 8 when print_queued takes a $08; cleared after the glyph (glyph_done).","t":"byte","b":[0],"x":[14201,14230,48051,48291,48311]},{"a":47673,"l":"text_busy","c":"Non-zero while print_queued must not take another character: set when one is taken, cleared by glyph_done, or at the end of a RETURN's carriage return and scroll ($BD6B).","t":"byte","b":[0],"x":[47710,47736,48316,48491]},{"a":47674,"l":"text_band_open","c":"Turn the top band into a blank text area: window $C1 = 0, no scroll or carriage return pending, text_band_timer $0710 = 3, cursor to the start of the line (text_home) and the band cleared to grey (text_band_blank). Called by print_queued before the first character after the band was closed, and from $04F8, $3755, $55B9.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[1272,14165,21945,47728]},{"a":47676,"t":"code","b":[133,193],"m":"sta","o":"text_window","oa":193},{"a":47678,"t":"code","b":[141,54,186],"m":"sta","o":"text_scroll_left","oa":47670},{"a":47681,"t":"code","b":[141,55,186],"m":"sta","o":"text_return_left","oa":47671},{"a":47684,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":47686,"t":"code","b":[141,16,7],"m":"sta","o":"text_band_timer","oa":1808},{"a":47689,"t":"code","b":[32,126,189],"m":"jsr","o":"text_home","oa":48510},{"a":47692,"t":"code","b":[32,162,189],"m":"jsr","o":"text_band_blank","oa":48546},{"a":47695,"t":"code","b":[96],"m":"rts"},{"a":47696,"l":"queue_char","c":"Put the character in A into the 32-byte output ring $0202-$0221 at the index $0200 and advance it (mod 32). No check for a full ring. Callers: the line editor ($3786) and the letter typing ($5732).","t":"code","b":[174,0,2],"m":"ldx","o":"outq_in","oa":512,"x":[14214,22322]},{"a":47699,"t":"code","b":[157,2,2],"m":"sta","o":"outq_buffer,x","oa":514},{"a":47702,"t":"code","b":[232],"m":"inx"},{"a":47703,"t":"code","b":[138],"m":"txa"},{"a":47704,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":47706,"t":"code","b":[141,0,2],"m":"sta","o":"outq_in","oa":512},{"a":47709,"t":"code","b":[96],"m":"rts"},{"a":47710,"l":"print_queued","c":"Called once per main-loop pass ($0947, and at start-up $0530): prints at most one character. While text_busy is clear and the ring has one ($0201 differs from $0200): open the band if it is closed (text_band_open), restart text_band_timer at 3, take the character (index $0201 mod 32). While a letter is typed ($54DF) and the cursor is past X 255 ($8D non-zero), a space, or with $54DF negative a hyphen, becomes a RETURN (calling letter_wrap first when negative). A $08 sets text_erase_mode; anything else goes to print_char. When there is nothing to take: every 256 frames ($2B = 0) text_band_timer counts down and at 0 the band goes back to the sky and roof (text_band_restore); a RETURN in progress continues (text_return_step).","t":"code","b":[173,57,186],"m":"lda","o":"text_busy","oa":47673,"x":[1328,2375]},{"a":47713,"t":"code","b":[208,83],"m":"bne","o":"b_BAB6","oa":47798},{"a":47715,"t":"code","b":[173,0,2],"m":"lda","o":"outq_in","oa":512},{"a":47718,"t":"code","b":[205,1,2],"m":"cmp","o":"outq_out","oa":513},{"a":47721,"t":"code","b":[240,75],"m":"beq","o":"b_BAB6","oa":47798},{"a":47723,"t":"code","b":[173,16,7],"m":"lda","o":"text_band_timer","oa":1808},{"a":47726,"t":"code","b":[208,3],"m":"bne","o":"b_BA73","oa":47731},{"a":47728,"t":"code","b":[32,58,186],"m":"jsr","o":"text_band_open","oa":47674},{"a":47731,"l":"b_BA73","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[47726]},{"a":47733,"t":"code","b":[141,16,7],"m":"sta","o":"text_band_timer","oa":1808},{"a":47736,"t":"code","b":[238,57,186],"m":"inc","o":"text_busy","oa":47673},{"a":47739,"t":"code","b":[174,1,2],"m":"ldx","o":"outq_out","oa":513},{"a":47742,"t":"code","b":[238,1,2],"m":"inc","o":"outq_out","oa":513},{"a":47745,"t":"code","b":[173,1,2],"m":"lda","o":"outq_out","oa":513},{"a":47748,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":47750,"t":"code","b":[141,1,2],"m":"sta","o":"outq_out","oa":513},{"a":47753,"t":"code","b":[189,2,2],"m":"lda","o":"outq_buffer,x","oa":514},{"a":47756,"t":"code","b":[164,141],"m":"ldy","o":"text_cursor_x_hi","oa":141},{"a":47758,"t":"code","b":[240,27],"m":"beq","o":"b_BAAB","oa":47787},{"a":47760,"t":"code","b":[172,223,84],"m":"ldy","o":"letter_typing","oa":21727},{"a":47763,"t":"code","b":[240,22],"m":"beq","o":"b_BAAB","oa":47787},{"a":47765,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":47767,"t":"code","b":[240,8],"m":"beq","o":"b_BAA1","oa":47777},{"a":47769,"t":"code","b":[192,0],"m":"cpy","o":"#$00"},{"a":47771,"t":"code","b":[16,14],"m":"bpl","o":"b_BAAB","oa":47787},{"a":47773,"t":"code","b":[201,45],"m":"cmp","o":"#$2D"},{"a":47775,"t":"code","b":[208,10],"m":"bne","o":"b_BAAB","oa":47787},{"a":47777,"l":"b_BAA1","t":"code","b":[172,223,84],"m":"ldy","o":"letter_typing","oa":21727,"x":[47767]},{"a":47780,"t":"code","b":[16,3],"m":"bpl","o":"b_BAA9","oa":47785},{"a":47782,"t":"code","b":[32,65,87],"m":"jsr","o":"letter_wrap","oa":22337},{"a":47785,"l":"b_BAA9","t":"code","b":[169,13],"m":"lda","o":"#$0D","x":[47780]},{"a":47787,"l":"b_BAAB","t":"code","b":[201,8],"m":"cmp","o":"#$08","x":[47758,47763,47771,47775]},{"a":47789,"t":"code","b":[208,3],"m":"bne","o":"b_BAB2","oa":47794},{"a":47791,"t":"code","b":[76,183,188],"m":"jmp","o":"j_BCB7","oa":48311},{"a":47794,"l":"b_BAB2","t":"code","b":[32,8,187],"m":"jsr","o":"print_char","oa":47880,"x":[47789]},{"a":47797,"t":"code","b":[96],"m":"rts"},{"a":47798,"l":"b_BAB6","t":"code","b":[173,43,0],"m":"lda","o":"frame_count","oa":43,"x":[47713,47721]},{"a":47801,"t":"code","b":[208,13],"m":"bne","o":"b_BAC8","oa":47816},{"a":47803,"t":"code","b":[173,16,7],"m":"lda","o":"text_band_timer","oa":1808},{"a":47806,"t":"code","b":[240,8],"m":"beq","o":"b_BAC8","oa":47816},{"a":47808,"t":"code","b":[206,16,7],"m":"dec","o":"text_band_timer","oa":1808},{"a":47811,"t":"code","b":[208,3],"m":"bne","o":"b_BAC8","oa":47816},{"a":47813,"t":"code","b":[32,212,186],"m":"jsr","o":"text_band_restore","oa":47828},{"a":47816,"l":"b_BAC8","t":"code","b":[173,54,186],"m":"lda","o":"text_scroll_left","oa":47670,"x":[47801,47806,47811]},{"a":47819,"t":"code","b":[13,55,186],"m":"ora","o":"text_return_left","oa":47671},{"a":47822,"t":"code","b":[240,3],"m":"beq","o":"r_BAD3","oa":47827},{"a":47824,"t":"code","b":[76,200,188],"m":"jmp","o":"text_return_step","oa":48328},{"a":47827,"l":"r_BAD3","t":"code","b":[96],"m":"rts","x":[47822]},{"a":47828,"l":"text_band_restore","c":"Put the picture back in the top band: bitmap $6000-$62BF filled with $55 (in multicolour every pixel pair takes the high nibble of the colour matrix, 6: the blue sky), roof_row_pattern copied into $62C0-$63BF (bitmap row 2, columns 8-39: the top of the roof), colour RAM $D800-$D87F = 0 and colour matrix $5C00-$5C7F = $62 (blue, red); $54DF and the key $30 cleared; then $57EB. Called by print_queued when text_band_timer runs out and at start-up ($0583).","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[1411,47813]},{"a":47830,"t":"code","b":[142,223,84],"m":"stx","o":"letter_typing","oa":21727},{"a":47833,"t":"code","b":[134,48],"m":"stx","o":"key_new","oa":48},{"a":47835,"l":"b_BADB","t":"code","b":[169,85],"m":"lda","o":"#$55","x":[47853]},{"a":47837,"t":"code","b":[157,0,96],"m":"sta","o":"house_bitmap,x","oa":24576},{"a":47840,"t":"code","b":[157,0,97],"m":"sta","o":"band_fill_6100,x","oa":24832},{"a":47843,"t":"code","b":[157,192,97],"m":"sta","o":"band_fill_61c0,x","oa":25024},{"a":47846,"t":"code","b":[189,208,189],"m":"lda","o":"roof_row_pattern,x","oa":48592},{"a":47849,"t":"code","b":[157,192,98],"m":"sta","o":"roof_ridge,x","oa":25280},{"a":47852,"t":"code","b":[232],"m":"inx"},{"a":47853,"t":"code","b":[208,236],"m":"bne","o":"b_BADB","oa":47835},{"a":47855,"t":"code","b":[162,127],"m":"ldx","o":"#$7F"},{"a":47857,"l":"b_BAF1","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[47868]},{"a":47859,"t":"code","b":[157,0,216],"m":"sta","o":"colour_ram,x"},{"a":47862,"t":"code","b":[169,98],"m":"lda","o":"#$62"},{"a":47864,"t":"code","b":[157,0,92],"m":"sta","o":"f_5C00,x","oa":23552},{"a":47867,"t":"code","b":[202],"m":"dex"},{"a":47868,"t":"code","b":[16,243],"m":"bpl","o":"b_BAF1","oa":47857},{"a":47870,"t":"code","b":[32,235,87],"m":"jsr","o":"clear_typewriter","oa":22507},{"a":47873,"t":"code","b":[96],"m":"rts"},{"a":47874,"l":"unused_hang","c":"JSR text_band_blank, then JMP $BB05, a jump to itself: code that would blank the text band and stop the main program. Nothing references it.","t":"code","b":[32,162,189],"m":"jsr","o":"text_band_blank","oa":48546},{"a":47877,"l":"j_BB05","t":"code","b":[76,5,187],"m":"jmp","o":"j_BB05","oa":47877,"x":[47877]},{"a":47880,"l":"print_char","c":"Print the character in A at the text cursor ($8C/$8D): glyph_fetch (glyph and width), glyph_screen_addr (bitmap pointers), clear bit 7 of $B8, glyph_draw. Character 0 draws nothing and $0D starts a RETURN (text_newline). Callers: print_queued and the start-up text loop at $050D. Other codes below $20 are not handled: glyph_fetch only sets the width to 0, so glyph_draw would XOR the previous glyph's rows again at the cursor and move it 1 pixel; nothing found queues such a code.","t":"code","b":[32,41,187],"m":"jsr","o":"glyph_fetch","oa":47913,"x":[1293,47794]},{"a":47883,"t":"code","b":[32,238,187],"m":"jsr","o":"glyph_screen_addr","oa":48110},{"a":47886,"t":"code","b":[165,184],"m":"lda","o":"text_char","oa":184},{"a":47888,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":47890,"t":"code","b":[133,184],"m":"sta","o":"text_char","oa":184},{"a":47892,"t":"code","b":[32,62,188],"m":"jsr","o":"glyph_draw","oa":48190},{"a":47895,"t":"code","b":[96],"m":"rts"},{"a":47896,"l":"unused_add_c0","c":"Adds $C0 + 1 to the pointer $B9/$BA. Nothing calls it.","t":"code","b":[165,185],"m":"lda","o":"scroll_dst","oa":185},{"a":47898,"t":"code","b":[56],"m":"sec"},{"a":47899,"t":"code","b":[101,192],"m":"adc","o":"zpa_C0","oa":192},{"a":47901,"t":"code","b":[133,185],"m":"sta","o":"scroll_dst","oa":185},{"a":47903,"t":"code","b":[165,186],"m":"lda","o":"scroll_dst_hi","oa":186},{"a":47905,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":47907,"t":"code","b":[133,186],"m":"sta","o":"scroll_dst_hi","oa":186},{"a":47909,"t":"code","b":[96],"m":"rts"},{"a":47910,"l":"b_BB26","t":"code","b":[132,144],"m":"sty","o":"glyph_width","oa":144,"x":[47921]},{"a":47912,"t":"code","b":[96],"m":"rts"},{"a":47913,"l":"glyph_fetch","c":"Enter with the character in A (kept in $B8). Codes below $20: width 0, nothing else. Otherwise bit 7 picks the font ($B6: font_base_lo/font_base_hi, $5000 or $5800; the second font flips bit 5 of the glyph number) and the glyph's 8 bytes are copied to $92-$99 with $A2-$A9 cleared. First font: byte 0 is the metrics, low nibble the width ($90), high nibble added to the text row $8E to give the glyph's top row ($91). Second font: all 8 bytes are pixels; the glyph is shifted left to its first set column and its width measured, the top row is $8E. Then, in text_erase_mode, the cursor moves back by width + 1 (not past the margin $88/$89). Finally the rows are shifted right by the cursor's X AND 7, the overflow going to $A2-$A9. $5800 holds code, not a font, in this image.","t":"code","b":[133,184],"m":"sta","o":"text_char","oa":184,"x":[47880]},{"a":47915,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":47917,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":47919,"t":"code","b":[201,32],"m":"cmp","o":"#$20"},{"a":47921,"t":"code","b":[144,243],"m":"bcc","o":"b_BB26","oa":47910},{"a":47923,"t":"code","b":[132,182],"m":"sty","o":"glyph_font","oa":182},{"a":47925,"t":"code","b":[165,184],"m":"lda","o":"text_char","oa":184},{"a":47927,"t":"code","b":[10],"m":"asl","o":"a"},{"a":47928,"t":"code","b":[38,182],"m":"rol","o":"glyph_font","oa":182},{"a":47930,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":47931,"t":"code","b":[56],"m":"sec"},{"a":47932,"t":"code","b":[233,32],"m":"sbc","o":"#$20"},{"a":47934,"t":"code","b":[164,182],"m":"ldy","o":"glyph_font","oa":182},{"a":47936,"t":"code","b":[240,2],"m":"beq","o":"b_BB44","oa":47940},{"a":47938,"t":"code","b":[73,32],"m":"eor","o":"#$20"},{"a":47940,"l":"b_BB44","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[47936]},{"a":47942,"t":"code","b":[134,189],"m":"stx","o":"text_ptr_hi","oa":189},{"a":47944,"t":"code","b":[10],"m":"asl","o":"a"},{"a":47945,"t":"code","b":[38,189],"m":"rol","o":"text_ptr_hi","oa":189},{"a":47947,"t":"code","b":[10],"m":"asl","o":"a"},{"a":47948,"t":"code","b":[38,189],"m":"rol","o":"text_ptr_hi","oa":189},{"a":47950,"t":"code","b":[10],"m":"asl","o":"a"},{"a":47951,"t":"code","b":[38,189],"m":"rol","o":"text_ptr_hi","oa":189},{"a":47953,"t":"code","b":[166,182],"m":"ldx","o":"glyph_font","oa":182},{"a":47955,"t":"code","b":[24],"m":"clc"},{"a":47956,"t":"code","b":[125,192,189],"m":"adc","o":"font_base_lo,x","oa":48576},{"a":47959,"t":"code","b":[133,188],"m":"sta","o":"text_ptr","oa":188},{"a":47961,"t":"code","b":[165,189],"m":"lda","o":"text_ptr_hi","oa":189},{"a":47963,"t":"code","b":[125,194,189],"m":"adc","o":"font_base_hi,x","oa":48578},{"a":47966,"t":"code","b":[133,189],"m":"sta","o":"text_ptr_hi","oa":189},{"a":47968,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":47970,"l":"b_BB62","t":"code","b":[177,188],"m":"lda","o":"(text_ptr),y","oa":188,"x":[47981]},{"a":47972,"t":"code","b":[153,146,0],"m":"sta","o":"glyph_rows,y","oa":146},{"a":47975,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":47977,"t":"code","b":[153,162,0],"m":"sta","o":"glyph_spill,y","oa":162},{"a":47980,"t":"code","b":[136],"m":"dey"},{"a":47981,"t":"code","b":[16,243],"m":"bpl","o":"b_BB62","oa":47970},{"a":47983,"t":"code","b":[165,146],"m":"lda","o":"glyph_rows","oa":146},{"a":47985,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":47987,"t":"code","b":[133,144],"m":"sta","o":"glyph_width","oa":144},{"a":47989,"t":"code","b":[165,146],"m":"lda","o":"glyph_rows","oa":146},{"a":47991,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":47992,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":47993,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":47994,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":47995,"t":"code","b":[24],"m":"clc"},{"a":47996,"t":"code","b":[101,142],"m":"adc","o":"text_top_row","oa":142},{"a":47998,"t":"code","b":[133,145],"m":"sta","o":"glyph_row","oa":145},{"a":48000,"t":"code","b":[165,182],"m":"lda","o":"glyph_font","oa":182},{"a":48002,"t":"code","b":[240,47],"m":"beq","o":"b_BBB3","oa":48051},{"a":48004,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":48006,"t":"code","b":[133,144],"m":"sta","o":"glyph_width","oa":144},{"a":48008,"l":"j_BB88","t":"code","b":[162,6],"m":"ldx","o":"#$06","x":[48032]},{"a":48010,"t":"code","b":[165,153],"m":"lda","o":"glyph_row_7","oa":153},{"a":48012,"l":"b_BB8C","t":"code","b":[21,146],"m":"ora","o":"glyph_rows,x","oa":146,"x":[48015]},{"a":48014,"t":"code","b":[202],"m":"dex"},{"a":48015,"t":"code","b":[16,251],"m":"bpl","o":"b_BB8C","oa":48012},{"a":48017,"t":"code","b":[133,190],"m":"sta","o":"text_temp","oa":190},{"a":48019,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":48021,"t":"code","b":[240,28],"m":"beq","o":"b_BBB3","oa":48051},{"a":48023,"t":"code","b":[48,10],"m":"bmi","o":"b_BBA3","oa":48035},{"a":48025,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":48027,"l":"b_BB9B","t":"code","b":[22,146],"m":"asl","o":"glyph_rows,x","oa":146,"x":[48030]},{"a":48029,"t":"code","b":[202],"m":"dex"},{"a":48030,"t":"code","b":[16,251],"m":"bpl","o":"b_BB9B","oa":48027},{"a":48032,"t":"code","b":[76,136,187],"m":"jmp","o":"j_BB88","oa":48008},{"a":48035,"l":"b_BBA3","t":"code","b":[165,190],"m":"lda","o":"text_temp","oa":190,"x":[48023]},{"a":48037,"t":"code","b":[162,8],"m":"ldx","o":"#$08"},{"a":48039,"l":"b_BBA7","t":"code","b":[74],"m":"lsr","o":"a","x":[48043]},{"a":48040,"t":"code","b":[176,3],"m":"bcs","o":"b_BBAD","oa":48045},{"a":48042,"t":"code","b":[202],"m":"dex"},{"a":48043,"t":"code","b":[208,250],"m":"bne","o":"b_BBA7","oa":48039},{"a":48045,"l":"b_BBAD","t":"code","b":[134,144],"m":"stx","o":"glyph_width","oa":144,"x":[48040]},{"a":48047,"t":"code","b":[165,142],"m":"lda","o":"text_top_row","oa":142},{"a":48049,"t":"code","b":[133,145],"m":"sta","o":"glyph_row","oa":145},{"a":48051,"l":"b_BBB3","t":"code","b":[173,56,186],"m":"lda","o":"text_erase_mode","oa":47672,"x":[48002,48021]},{"a":48054,"t":"code","b":[240,33],"m":"beq","o":"b_BBD9","oa":48089},{"a":48056,"t":"code","b":[165,140],"m":"lda","o":"text_cursor_x","oa":140},{"a":48058,"t":"code","b":[24],"m":"clc"},{"a":48059,"t":"code","b":[229,144],"m":"sbc","o":"glyph_width","oa":144},{"a":48061,"t":"code","b":[133,140],"m":"sta","o":"text_cursor_x","oa":140},{"a":48063,"t":"code","b":[165,141],"m":"lda","o":"text_cursor_x_hi","oa":141},{"a":48065,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":48067,"t":"code","b":[144,12],"m":"bcc","o":"b_BBD1","oa":48081},{"a":48069,"t":"code","b":[133,141],"m":"sta","o":"text_cursor_x_hi","oa":141},{"a":48071,"t":"code","b":[197,137],"m":"cmp","o":"text_margin_hi","oa":137},{"a":48073,"t":"code","b":[144,6],"m":"bcc","o":"b_BBD1","oa":48081},{"a":48075,"t":"code","b":[165,140],"m":"lda","o":"text_cursor_x","oa":140},{"a":48077,"t":"code","b":[197,136],"m":"cmp","o":"text_margin_lo","oa":136},{"a":48079,"t":"code","b":[176,8],"m":"bcs","o":"b_BBD9","oa":48089},{"a":48081,"l":"b_BBD1","t":"code","b":[165,136],"m":"lda","o":"text_margin_lo","oa":136,"x":[48067,48073]},{"a":48083,"t":"code","b":[133,140],"m":"sta","o":"text_cursor_x","oa":140},{"a":48085,"t":"code","b":[165,137],"m":"lda","o":"text_margin_hi","oa":137},{"a":48087,"t":"code","b":[133,141],"m":"sta","o":"text_cursor_x_hi","oa":141},{"a":48089,"l":"b_BBD9","t":"code","b":[165,140],"m":"lda","o":"text_cursor_x","oa":140,"x":[48054,48079]},{"a":48091,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":48093,"t":"code","b":[168],"m":"tay"},{"a":48094,"l":"j_BBDE","t":"code","b":[136],"m":"dey","x":[48106]},{"a":48095,"t":"code","b":[48,12],"m":"bmi","o":"r_BBED","oa":48109},{"a":48097,"t":"code","b":[162,7],"m":"ldx","o":"#$07"},{"a":48099,"l":"b_BBE3","t":"code","b":[86,146],"m":"lsr","o":"glyph_rows,x","oa":146,"x":[48104]},{"a":48101,"t":"code","b":[118,162],"m":"ror","o":"glyph_spill,x","oa":162},{"a":48103,"t":"code","b":[202],"m":"dex"},{"a":48104,"t":"code","b":[16,249],"m":"bpl","o":"b_BBE3","oa":48099},{"a":48106,"t":"code","b":[76,222,187],"m":"jmp","o":"j_BBDE","oa":48094},{"a":48109,"l":"r_BBED","t":"code","b":[96],"m":"rts","x":[48095]},{"a":48110,"l":"glyph_screen_addr","c":"Bitmap address for the glyph: $6000 + $140 x (top row / 8) + (top row AND 7) + (cursor X AND $F8, with $8D as the high byte) into $B2/$B3, and the same + 8 (the next cell) into $B4/$B5.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[47883]},{"a":48112,"t":"code","b":[133,188],"m":"sta","o":"text_ptr","oa":188},{"a":48114,"t":"code","b":[169,96],"m":"lda","o":"#$60"},{"a":48116,"t":"code","b":[133,189],"m":"sta","o":"text_ptr_hi","oa":189},{"a":48118,"t":"code","b":[165,145],"m":"lda","o":"glyph_row","oa":145},{"a":48120,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":48121,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":48122,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":48123,"t":"code","b":[170],"m":"tax"},{"a":48124,"t":"code","b":[240,16],"m":"beq","o":"b_BC0E","oa":48142},{"a":48126,"l":"b_BBFE","t":"code","b":[165,188],"m":"lda","o":"text_ptr","oa":188,"x":[48140]},{"a":48128,"t":"code","b":[24],"m":"clc"},{"a":48129,"t":"code","b":[105,64],"m":"adc","o":"#$40"},{"a":48131,"t":"code","b":[133,188],"m":"sta","o":"text_ptr","oa":188},{"a":48133,"t":"code","b":[165,189],"m":"lda","o":"text_ptr_hi","oa":189},{"a":48135,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":48137,"t":"code","b":[133,189],"m":"sta","o":"text_ptr_hi","oa":189},{"a":48139,"t":"code","b":[202],"m":"dex"},{"a":48140,"t":"code","b":[208,240],"m":"bne","o":"b_BBFE","oa":48126},{"a":48142,"l":"b_BC0E","t":"code","b":[165,145],"m":"lda","o":"glyph_row","oa":145,"x":[48124]},{"a":48144,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":48146,"t":"code","b":[24],"m":"clc"},{"a":48147,"t":"code","b":[101,188],"m":"adc","o":"text_ptr","oa":188},{"a":48149,"t":"code","b":[133,188],"m":"sta","o":"text_ptr","oa":188},{"a":48151,"t":"code","b":[165,189],"m":"lda","o":"text_ptr_hi","oa":189},{"a":48153,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":48155,"t":"code","b":[133,189],"m":"sta","o":"text_ptr_hi","oa":189},{"a":48157,"t":"code","b":[165,140],"m":"lda","o":"text_cursor_x","oa":140},{"a":48159,"t":"code","b":[41,248],"m":"and","o":"#$F8"},{"a":48161,"t":"code","b":[24],"m":"clc"},{"a":48162,"t":"code","b":[101,188],"m":"adc","o":"text_ptr","oa":188},{"a":48164,"t":"code","b":[133,188],"m":"sta","o":"text_ptr","oa":188},{"a":48166,"t":"code","b":[165,189],"m":"lda","o":"text_ptr_hi","oa":189},{"a":48168,"t":"code","b":[101,141],"m":"adc","o":"text_cursor_x_hi","oa":141},{"a":48170,"t":"code","b":[133,189],"m":"sta","o":"text_ptr_hi","oa":189},{"a":48172,"t":"code","b":[165,188],"m":"lda","o":"text_ptr","oa":188},{"a":48174,"t":"code","b":[133,178],"m":"sta","o":"text_cell_ptr","oa":178},{"a":48176,"t":"code","b":[24],"m":"clc"},{"a":48177,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":48179,"t":"code","b":[133,180],"m":"sta","o":"text_cell2_ptr","oa":180},{"a":48181,"t":"code","b":[165,189],"m":"lda","o":"text_ptr_hi","oa":189},{"a":48183,"t":"code","b":[133,179],"m":"sta","o":"text_cell_ptr_hi","oa":179},{"a":48185,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":48187,"t":"code","b":[133,181],"m":"sta","o":"text_cell2_ptr_hi","oa":181},{"a":48189,"t":"code","b":[96],"m":"rts"},{"a":48190,"l":"glyph_draw","c":"Draw the fetched glyph: character 0 does nothing; $0D goes to text_newline. Otherwise each row is XORed into the left cell ($B2) and its overflow into the right cell ($B4), moving to the cell row below after the eighth line of a cell; the first font starts at byte 1 (byte 0 is the metrics). Unless erasing, the cursor then moves right by width + 1. Ends in glyph_done.","t":"code","b":[165,184],"m":"lda","o":"text_char","oa":184,"x":[47892]},{"a":48192,"t":"code","b":[240,15],"m":"beq","o":"b_BC51","oa":48209},{"a":48194,"t":"code","b":[16,16],"m":"bpl","o":"b_BC54","oa":48212},{"a":48196,"l":"unused_glyph_skip","c":"For a character with bit 7 set this would move the cursor right by (character AND $7F) pixels without drawing. Unreachable: print_char clears bit 7 of $B8 before calling glyph_draw, and glyph_draw is called from nowhere else.","t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":48198,"t":"code","b":[24],"m":"clc"},{"a":48199,"t":"code","b":[101,140],"m":"adc","o":"text_cursor_x","oa":140},{"a":48201,"t":"code","b":[133,140],"m":"sta","o":"text_cursor_x","oa":140},{"a":48203,"t":"code","b":[165,141],"m":"lda","o":"text_cursor_x_hi","oa":141},{"a":48205,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":48207,"t":"code","b":[133,141],"m":"sta","o":"text_cursor_x_hi","oa":141},{"a":48209,"l":"b_BC51","t":"code","b":[76,181,188],"m":"jmp","o":"glyph_done","oa":48309,"x":[48192]},{"a":48212,"l":"b_BC54","t":"code","b":[201,13],"m":"cmp","o":"#$0D","x":[48194]},{"a":48214,"t":"code","b":[208,3],"m":"bne","o":"b_BC5B","oa":48219},{"a":48216,"t":"code","b":[76,192,188],"m":"jmp","o":"text_newline","oa":48320},{"a":48219,"l":"b_BC5B","t":"code","b":[165,178],"m":"lda","o":"text_cell_ptr","oa":178,"x":[48214]},{"a":48221,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":48223,"t":"code","b":[133,190],"m":"sta","o":"text_temp","oa":190},{"a":48225,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":48227,"t":"code","b":[56],"m":"sec"},{"a":48228,"t":"code","b":[229,190],"m":"sbc","o":"text_temp","oa":190},{"a":48230,"t":"code","b":[133,190],"m":"sta","o":"text_temp","oa":190},{"a":48232,"t":"code","b":[165,182],"m":"lda","o":"glyph_font","oa":182},{"a":48234,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":48236,"t":"code","b":[170],"m":"tax"},{"a":48237,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":48239,"l":"b_BC6F","t":"code","b":[177,178],"m":"lda","o":"(text_cell_ptr),y","oa":178,"x":[48289]},{"a":48241,"t":"code","b":[85,146],"m":"eor","o":"glyph_rows,x","oa":146},{"a":48243,"t":"code","b":[145,178],"m":"sta","o":"(text_cell_ptr),y","oa":178},{"a":48245,"t":"code","b":[177,180],"m":"lda","o":"(text_cell2_ptr),y","oa":180},{"a":48247,"t":"code","b":[85,162],"m":"eor","o":"glyph_spill,x","oa":162},{"a":48249,"t":"code","b":[145,180],"m":"sta","o":"(text_cell2_ptr),y","oa":180},{"a":48251,"t":"code","b":[200],"m":"iny"},{"a":48252,"t":"code","b":[198,190],"m":"dec","o":"text_temp","oa":190},{"a":48254,"t":"code","b":[16,30],"m":"bpl","o":"b_BC9E","oa":48286},{"a":48256,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":48258,"t":"code","b":[133,190],"m":"sta","o":"text_temp","oa":190},{"a":48260,"t":"code","b":[165,178],"m":"lda","o":"text_cell_ptr","oa":178},{"a":48262,"t":"code","b":[24],"m":"clc"},{"a":48263,"t":"code","b":[105,56],"m":"adc","o":"#$38"},{"a":48265,"t":"code","b":[133,178],"m":"sta","o":"text_cell_ptr","oa":178},{"a":48267,"t":"code","b":[165,179],"m":"lda","o":"text_cell_ptr_hi","oa":179},{"a":48269,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":48271,"t":"code","b":[133,179],"m":"sta","o":"text_cell_ptr_hi","oa":179},{"a":48273,"t":"code","b":[165,180],"m":"lda","o":"text_cell2_ptr","oa":180},{"a":48275,"t":"code","b":[24],"m":"clc"},{"a":48276,"t":"code","b":[105,56],"m":"adc","o":"#$38"},{"a":48278,"t":"code","b":[133,180],"m":"sta","o":"text_cell2_ptr","oa":180},{"a":48280,"t":"code","b":[165,181],"m":"lda","o":"text_cell2_ptr_hi","oa":181},{"a":48282,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":48284,"t":"code","b":[133,181],"m":"sta","o":"text_cell2_ptr_hi","oa":181},{"a":48286,"l":"b_BC9E","t":"code","b":[232],"m":"inx","x":[48254]},{"a":48287,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":48289,"t":"code","b":[144,204],"m":"bcc","o":"b_BC6F","oa":48239},{"a":48291,"t":"code","b":[173,56,186],"m":"lda","o":"text_erase_mode","oa":47672},{"a":48294,"t":"code","b":[208,13],"m":"bne","o":"glyph_done","oa":48309},{"a":48296,"t":"code","b":[165,144],"m":"lda","o":"glyph_width","oa":144},{"a":48298,"t":"code","b":[56],"m":"sec"},{"a":48299,"t":"code","b":[101,140],"m":"adc","o":"text_cursor_x","oa":140},{"a":48301,"t":"code","b":[133,140],"m":"sta","o":"text_cursor_x","oa":140},{"a":48303,"t":"code","b":[165,141],"m":"lda","o":"text_cursor_x_hi","oa":141},{"a":48305,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":48307,"t":"code","b":[133,141],"m":"sta","o":"text_cursor_x_hi","oa":141},{"a":48309,"l":"glyph_done","c":"End of printing a character: text_erase_mode = A (0 here; 8 when print_queued jumps to $BCB7 for a $08) and text_busy = 0.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[48209,48294]},{"a":48311,"l":"j_BCB7","t":"code","b":[141,56,186],"m":"sta","o":"text_erase_mode","oa":47672,"x":[47791]},{"a":48314,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48316,"t":"code","b":[141,57,186],"m":"sta","o":"text_busy","oa":47673},{"a":48319,"t":"code","b":[96],"m":"rts"},{"a":48320,"l":"text_newline","c":"RETURN: text_scroll_left = 7 and text_return_left = 7, then the first text_return_step. text_busy stays set until both are done.","t":"code","b":[169,7],"m":"lda","o":"#$07","x":[48216]},{"a":48322,"t":"code","b":[141,54,186],"m":"sta","o":"text_scroll_left","oa":47670},{"a":48325,"t":"code","b":[141,55,186],"m":"sta","o":"text_return_left","oa":47671},{"a":48328,"l":"text_return_step","c":"One pass of a RETURN: while text_return_left is set move the cursor 16 pixels left, and at or past the margin ($88/$89) put it on the margin and clear the flag; then text_scroll_step.","t":"code","b":[173,55,186],"m":"lda","o":"text_return_left","oa":47671,"x":[47824]},{"a":48331,"t":"code","b":[240,42],"m":"beq","o":"text_scroll_step","oa":48375},{"a":48333,"t":"code","b":[165,141],"m":"lda","o":"text_cursor_x_hi","oa":141},{"a":48335,"t":"code","b":[197,137],"m":"cmp","o":"text_margin_hi","oa":137},{"a":48337,"t":"code","b":[208,21],"m":"bne","o":"b_BCE8","oa":48360},{"a":48339,"t":"code","b":[165,140],"m":"lda","o":"text_cursor_x","oa":140},{"a":48341,"t":"code","b":[197,136],"m":"cmp","o":"text_margin_lo","oa":136},{"a":48343,"t":"code","b":[176,15],"m":"bcs","o":"b_BCE8","oa":48360},{"a":48345,"l":"b_BCD9","t":"code","b":[165,136],"m":"lda","o":"text_margin_lo","oa":136,"x":[48373]},{"a":48347,"t":"code","b":[133,140],"m":"sta","o":"text_cursor_x","oa":140},{"a":48349,"t":"code","b":[165,137],"m":"lda","o":"text_margin_hi","oa":137},{"a":48351,"t":"code","b":[133,141],"m":"sta","o":"text_cursor_x_hi","oa":141},{"a":48353,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48355,"t":"code","b":[141,55,186],"m":"sta","o":"text_return_left","oa":47671},{"a":48358,"t":"code","b":[240,15],"m":"beq","o":"text_scroll_step","oa":48375},{"a":48360,"l":"b_BCE8","t":"code","b":[165,140],"m":"lda","o":"text_cursor_x","oa":140,"x":[48337,48343]},{"a":48362,"t":"code","b":[56],"m":"sec"},{"a":48363,"t":"code","b":[233,16],"m":"sbc","o":"#$10"},{"a":48365,"t":"code","b":[133,140],"m":"sta","o":"text_cursor_x","oa":140},{"a":48367,"t":"code","b":[165,141],"m":"lda","o":"text_cursor_x_hi","oa":141},{"a":48369,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":48371,"t":"code","b":[133,141],"m":"sta","o":"text_cursor_x_hi","oa":141},{"a":48373,"t":"code","b":[144,226],"m":"bcc","o":"b_BCD9","oa":48345},{"a":48375,"l":"text_scroll_step","c":"While text_scroll_left is non-zero, scroll the three cell rows of the text band up by one pixel line: in each of the 40 cells the rows move up one byte and the last row takes the top row of the cell below (the third cell row shifts rows 1-6 up, blanks row 6 and leaves its row 7, the band's last pixel line, alone); tables text_scroll_dst_lo to text_scroll_count. Then decrement text_scroll_left; when both counts are 0, text_busy is cleared.","t":"code","b":[173,54,186],"m":"lda","o":"text_scroll_left","oa":47670,"x":[48331,48358]},{"a":48378,"t":"code","b":[208,3],"m":"bne","o":"b_BCFF","oa":48383},{"a":48380,"t":"code","b":[76,99,189],"m":"jmp","o":"j_BD63","oa":48483},{"a":48383,"l":"b_BCFF","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[48378]},{"a":48385,"t":"code","b":[133,190],"m":"sta","o":"text_temp","oa":190},{"a":48387,"l":"j_BD03","t":"code","b":[166,190],"m":"ldx","o":"text_temp","oa":190,"x":[48477]},{"a":48389,"t":"code","b":[189,111,189],"m":"lda","o":"text_scroll_dst_lo,x","oa":48495},{"a":48392,"t":"code","b":[133,185],"m":"sta","o":"scroll_dst","oa":185},{"a":48394,"t":"code","b":[189,117,189],"m":"lda","o":"text_scroll_src_lo,x","oa":48501},{"a":48397,"t":"code","b":[133,188],"m":"sta","o":"text_ptr","oa":188},{"a":48399,"t":"code","b":[189,114,189],"m":"lda","o":"text_scroll_dst_hi,x","oa":48498},{"a":48402,"t":"code","b":[133,186],"m":"sta","o":"scroll_dst_hi","oa":186},{"a":48404,"t":"code","b":[189,120,189],"m":"lda","o":"text_scroll_src_hi,x","oa":48504},{"a":48407,"t":"code","b":[133,189],"m":"sta","o":"text_ptr_hi","oa":189},{"a":48409,"t":"code","b":[189,123,189],"m":"lda","o":"text_scroll_count,x","oa":48507},{"a":48412,"t":"code","b":[133,191],"m":"sta","o":"scroll_row_bytes","oa":191},{"a":48414,"t":"code","b":[162,39],"m":"ldx","o":"#$27"},{"a":48416,"l":"b_BD20","t":"code","b":[160,1],"m":"ldy","o":"#$01","x":[48467]},{"a":48418,"l":"b_BD22","t":"code","b":[177,185],"m":"lda","o":"(scroll_dst),y","oa":185,"x":[48427]},{"a":48420,"t":"code","b":[136],"m":"dey"},{"a":48421,"t":"code","b":[145,185],"m":"sta","o":"(scroll_dst),y","oa":185},{"a":48423,"t":"code","b":[200],"m":"iny"},{"a":48424,"t":"code","b":[200],"m":"iny"},{"a":48425,"t":"code","b":[196,191],"m":"cpy","o":"scroll_row_bytes","oa":191},{"a":48427,"t":"code","b":[144,245],"m":"bcc","o":"b_BD22","oa":48418},{"a":48429,"t":"code","b":[136],"m":"dey"},{"a":48430,"t":"code","b":[165,190],"m":"lda","o":"text_temp","oa":190},{"a":48432,"t":"code","b":[73,2],"m":"eor","o":"#$02"},{"a":48434,"t":"code","b":[240,2],"m":"beq","o":"b_BD36","oa":48438},{"a":48436,"t":"code","b":[177,188],"m":"lda","o":"(text_ptr),y","oa":188},{"a":48438,"l":"b_BD36","t":"code","b":[145,185],"m":"sta","o":"(scroll_dst),y","oa":185,"x":[48434]},{"a":48440,"t":"code","b":[165,188],"m":"lda","o":"text_ptr","oa":188},{"a":48442,"t":"code","b":[24],"m":"clc"},{"a":48443,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":48445,"t":"code","b":[133,188],"m":"sta","o":"text_ptr","oa":188},{"a":48447,"t":"code","b":[165,189],"m":"lda","o":"text_ptr_hi","oa":189},{"a":48449,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":48451,"t":"code","b":[133,189],"m":"sta","o":"text_ptr_hi","oa":189},{"a":48453,"t":"code","b":[165,185],"m":"lda","o":"scroll_dst","oa":185},{"a":48455,"t":"code","b":[24],"m":"clc"},{"a":48456,"t":"code","b":[105,8],"m":"adc","o":"#$08"},{"a":48458,"t":"code","b":[133,185],"m":"sta","o":"scroll_dst","oa":185},{"a":48460,"t":"code","b":[165,186],"m":"lda","o":"scroll_dst_hi","oa":186},{"a":48462,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":48464,"t":"code","b":[133,186],"m":"sta","o":"scroll_dst_hi","oa":186},{"a":48466,"t":"code","b":[202],"m":"dex"},{"a":48467,"t":"code","b":[16,203],"m":"bpl","o":"b_BD20","oa":48416},{"a":48469,"t":"code","b":[230,190],"m":"inc","o":"text_temp","oa":190},{"a":48471,"t":"code","b":[165,190],"m":"lda","o":"text_temp","oa":190},{"a":48473,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":48475,"t":"code","b":[176,3],"m":"bcs","o":"b_BD60","oa":48480},{"a":48477,"t":"code","b":[76,3,189],"m":"jmp","o":"j_BD03","oa":48387},{"a":48480,"l":"b_BD60","t":"code","b":[206,54,186],"m":"dec","o":"text_scroll_left","oa":47670,"x":[48475]},{"a":48483,"l":"j_BD63","t":"code","b":[173,54,186],"m":"lda","o":"text_scroll_left","oa":47670,"x":[48380]},{"a":48486,"t":"code","b":[13,55,186],"m":"ora","o":"text_return_left","oa":47671},{"a":48489,"t":"code","b":[208,3],"m":"bne","o":"r_BD6E","oa":48494},{"a":48491,"t":"code","b":[141,57,186],"m":"sta","o":"text_busy","oa":47673},{"a":48494,"l":"r_BD6E","t":"code","b":[96],"m":"rts","x":[48489]},{"a":48495,"l":"text_scroll_dst_lo","c":"Low bytes of the first cell of each text cell row for text_scroll_step: $00, $40, $80 (with text_scroll_dst_hi: $6000, $6140, $6280).","t":"byte","b":[0,64,128],"x":[48389]},{"a":48498,"l":"text_scroll_dst_hi","c":"High bytes of the cell rows' addresses: $60, $61, $62.","t":"byte","b":[96,97,98],"x":[48399]},{"a":48501,"l":"text_scroll_src_lo","c":"Low bytes of the source pointer for each cell row: $39, $79, $00 (with text_scroll_src_hi: $6139, $6279, $0000); at index 7 it reads the top row of the cell below ($6140, $6280). The third entry is not used.","t":"byte","b":[57,121,0],"x":[48394]},{"a":48504,"l":"text_scroll_src_hi","c":"High bytes of the source pointers: $61, $62, $00.","t":"byte","b":[97,98,0],"x":[48404]},{"a":48507,"l":"text_scroll_count","c":"Bytes of each cell handled by text_scroll_step, per cell row: 8, 8, 7 (the band's last pixel line is left alone).","t":"byte","b":[8,8,7],"x":[48409]},{"a":48510,"l":"text_home","c":"Cursor to the start of text window $C1 (always 0): margin $88/$89 and cursor $8C/$8D = text_windows (3), right limit $8A/$8B = the window's right edge - 6 ($0139), text row $8E = $0E.","t":"code","b":[164,193],"m":"ldy","o":"text_window","oa":193,"x":[47689]},{"a":48512,"t":"code","b":[185,196,189],"m":"lda","o":"text_windows,y","oa":48580},{"a":48515,"t":"code","b":[133,136],"m":"sta","o":"text_margin_lo","oa":136},{"a":48517,"t":"code","b":[133,140],"m":"sta","o":"text_cursor_x","oa":140},{"a":48519,"t":"code","b":[185,197,189],"m":"lda","o":"text_windows_1,y","oa":48581},{"a":48522,"t":"code","b":[133,137],"m":"sta","o":"text_margin_hi","oa":137},{"a":48524,"t":"code","b":[133,141],"m":"sta","o":"text_cursor_x_hi","oa":141},{"a":48526,"t":"code","b":[185,198,189],"m":"lda","o":"text_windows_2,y","oa":48582},{"a":48529,"t":"code","b":[56],"m":"sec"},{"a":48530,"t":"code","b":[233,6],"m":"sbc","o":"#$06"},{"a":48532,"t":"code","b":[133,138],"m":"sta","o":"text_right_lo","oa":138},{"a":48534,"t":"code","b":[185,199,189],"m":"lda","o":"text_windows_3,y","oa":48583},{"a":48537,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":48539,"t":"code","b":[133,139],"m":"sta","o":"text_right_hi","oa":139},{"a":48541,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":48543,"t":"code","b":[133,142],"m":"sta","o":"text_top_row","oa":142},{"a":48545,"t":"code","b":[96],"m":"rts"},{"a":48546,"l":"text_band_blank","c":"Blank the text band: colour matrix $5C00-$5C77 = $0C (hires: black set pixels on grey) and bitmap $6000-$63BE = 0. The loop (STA $62BF,X) stops one byte short, so $63BF, the last pixel line of cell (2, 39), keeps what was there.","t":"code","b":[162,119],"m":"ldx","o":"#$77","x":[47692,47874]},{"a":48548,"t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":48550,"l":"b_BDA6","t":"code","b":[157,0,92],"m":"sta","o":"f_5C00,x","oa":23552,"x":[48554]},{"a":48553,"t":"code","b":[202],"m":"dex"},{"a":48554,"t":"code","b":[16,250],"m":"bpl","o":"b_BDA6","oa":48550},{"a":48556,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":48558,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":48560,"l":"b_BDB0","t":"code","b":[157,0,96],"m":"sta","o":"house_bitmap,x","oa":24576,"x":[48573]},{"a":48563,"t":"code","b":[157,0,97],"m":"sta","o":"band_fill_6100,x","oa":24832},{"a":48566,"t":"code","b":[157,0,98],"m":"sta","o":"band_fill_6200,x","oa":25088},{"a":48569,"t":"code","b":[157,191,98],"m":"sta","o":"band_fill_62bf,x","oa":25279},{"a":48572,"t":"code","b":[232],"m":"inx"},{"a":48573,"t":"code","b":[208,241],"m":"bne","o":"b_BDB0","oa":48560},{"a":48575,"t":"code","b":[96],"m":"rts"},{"a":48576,"l":"font_base_lo","c":"Low bytes of the two font addresses for glyph_fetch, indexed by bit 7 of the character: $00, $00.","t":"byte","b":[0,0],"x":[47956]},{"a":48578,"l":"font_base_hi","c":"High bytes of the font addresses: $50 ($5000, the font) and $58 ($5800, which holds code in this image).","t":"byte","b":[80,88],"x":[47963]},{"a":48580,"l":"text_windows","c":"Text windows for text_home, four bytes each: left margin (word) and right edge (word). Window 0: $0003 and $013F. The bytes after it ($0140, then zeros) would be a window 1, but the window number $C1 is always 0.","t":"byte","b":[3],"x":[48512]},{"a":48581,"l":"text_windows_1","c":"text_windows + 1: high byte of the left margin (read at $BD87).","t":"byte","b":[0],"x":[48519]},{"a":48582,"l":"text_windows_2","c":"text_windows + 2: low byte of the right edge (read at $BD8E).","t":"byte","b":[63],"x":[48526]},{"a":48583,"l":"text_windows_3","c":"text_windows + 3: high byte of the right edge (read at $BD96); followed by the unused window 1 bytes $40 $01 $00 $00 and four zeros.","t":"byte","b":[1,64,1,0,0,0,0,0],"x":[48534]},{"a":48591,"t":"byte","b":[0]},{"a":48592,"l":"roof_row_pattern","c":"256 bytes of bitmap that text_band_restore copies to $62C0-$63BF: bitmap row 2, columns 8-39, the top of the roof under the text band (the sky pattern $55 at the ends, the roof slopes, then two rows of $AA along the ridge).","t":"byte","b":[85,85,85,85,85,85,86,90],"x":[47846]},{"a":48600,"t":"byte","b":[85,85,86,90,106,168,160,128]},{"a":48608,"t":"byte","b":[106,170,160,128,0,0,0,0]},{"a":48616,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48624,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48632,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48640,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48648,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48656,"l":"roof_row_pattern_2","c":"Columns 16-39 of roof_row_pattern ($BE10-$BECF): the ridge rows, then the far slope and sky ($55) at the right end.","t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48664,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48672,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48680,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48688,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48696,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48704,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48712,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48720,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48728,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48736,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48744,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48752,"t":"byte","b":[170,170,0,0,0,0,0,0]},{"a":48760,"t":"byte","b":[169,170,10,2,0,0,0,0]},{"a":48768,"t":"byte","b":[85,85,149,165,169,42,10,2]},{"a":48776,"t":"byte","b":[85,85,85,85,85,85,149,165]},{"a":48784,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":48792,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":48800,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":48808,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":48816,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":48824,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":48832,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":48840,"t":"byte","b":[85,85,85,85,85,85,85,85]},{"a":48848,"l":"request_scan","c":"Called first by activity_dispatch ($8DAB). When no request is running ($8D9D = 0), finds the first non-zero flag in request_flags ($BEF3-$BEFC) and stores its activity from request_activities in $8D9E, the pending request.","t":"code","b":[173,157,141],"m":"lda","o":"request_running","oa":36253,"x":[36267]},{"a":48851,"t":"code","b":[208,12],"m":"bne","o":"r_BEE1","oa":48865},{"a":48853,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":48855,"l":"b_BED7","t":"code","b":[189,243,190],"m":"lda","o":"request_flags,x","oa":48883,"x":[48863]},{"a":48858,"t":"code","b":[208,6],"m":"bne","o":"b_BEE2","oa":48866},{"a":48860,"t":"code","b":[232],"m":"inx"},{"a":48861,"t":"code","b":[224,10],"m":"cpx","o":"#$0A"},{"a":48863,"t":"code","b":[208,246],"m":"bne","o":"b_BED7","oa":48855},{"a":48865,"l":"r_BEE1","t":"code","b":[96],"m":"rts","x":[48851]},{"a":48866,"l":"b_BEE2","t":"code","b":[189,233,190],"m":"lda","o":"request_activities,x","oa":48873,"x":[48858]},{"a":48869,"t":"code","b":[141,158,141],"m":"sta","o":"request_activity","oa":36254},{"a":48872,"t":"code","b":[96],"m":"rts"},{"a":48873,"l":"request_activities","c":"Activity for each request flag 0-9: $21 (33, dog food: CTRL D), $34 (52, the greeting reply), $19 (25, the telephone: CTRL C), $2C (44, food: CTRL F), $06 (6, the easy chair: CTRL P), $33 (51, a book: CTRL B), $32 (50, a record: CTRL R), $1D (29, a drink of water), $4A (74, a meal), $02 (2). Also read at $8F34, $8FA0, $9030 and $95E2.","t":"byte","b":[33,52,25,44,6,51,50,29],"x":[36660,36768,36912,38370,48866]},{"a":48881,"t":"byte","b":[74,2]},{"a":48883,"l":"request_flags","c":"Ten request flags, $BEF3-$BEFC (non-zero = requested), index = the entry in request_activities. Flag 0 is set by CTRL D ($2B86); $BEF4 (flag 1), $BEFA (7) and $BEFB (8): no store of a non-zero value was found in the image. A flag is cleared at $8F43 when its activity finishes a request.","t":"byte","b":[0,0],"x":[11135,11142,36675,36757,36900,38358,48855]},{"a":48885,"l":"request_flag_phone","c":"Request flag 2 (activity 25, the telephone): set by CTRL C ($2C0B) and at $0B36.","t":"byte","b":[0],"x":[2870,11257,11275]},{"a":48886,"l":"request_flag_food","c":"Request flag 3 (activity 44, food delivered at the door): set by CTRL F ($2B6F).","t":"byte","b":[0],"x":[11112,11119]},{"a":48887,"l":"request_flag_chair","c":"Request flag 4 (activity 6, go and sit in the easy chair): set by CTRL P ($2C5C) when he is not sitting there.","t":"byte","b":[0],"x":[11349,11356]},{"a":48888,"l":"request_flag_book","c":"Request flag 5 (activity 51, a book at the door): set by CTRL B ($2B9D).","t":"byte","b":[0],"x":[11158,11165]},{"a":48889,"l":"request_flag_record","c":"Request flag 6 (activity 50, a record at the door): set by CTRL R ($2BBB) while $0711 is 0.","t":"byte","b":[0,0,0],"x":[11188,11195]},{"a":48892,"l":"request_flag_9","c":"Request flag 9 (activity 2, which clears the pending request): set to 1 at $099A after the parser call, cleared at $9054 and $E161.","t":"byte","b":[0],"x":[2458,36948,57697]},{"a":48893,"l":"paper_wait","c":"Wait count for act_paper_wait in activity 24, in units of 8 calls (8, 1, or 8-31).","t":"byte","b":[0],"x":[48959,49005,49027,49067,49075,49089]},{"a":48894,"l":"paper_tick","c":"Call counter of act_paper_wait: it acts only when the low three bits are 0.","t":"byte","b":[0],"x":[49049,49052]},{"a":48895,"l":"act24_easy_chair_paper","c":"Activity 24: JSR $3F11 switches on the phase $4C through 17 handler words. Walk to the easy chair (act_walk_chair_2b) and wait; sit (pose $23) with figure 2 set up in front of him (act_sit_paper), wait; pose $34 (act_paper_pose34), wait; then a loop of act_paper_frame1 (pose $35, figure 2 frame 1), wait, act_paper_turn (a random frame 1-3 with poses $35-$37), wait, act_paper_again (back to phase 6 unless a request is pending or 1 time in 8 at random); then pose $34, wait, pose $23, wait, act_paper_away; end. Figure 2 is white (colour 1) and changes frame while he sits: plausibly the newspaper in the easy chair that the manual mentions, not proven. One of the four choices of act116_choose.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":48898,"l":"act24_phases","c":"Phase table of activity 24 ($18), read by the JSR $3F11 at $BEFF: one word per phase, the handler's address minus one. 0 act_walk_chair_2b ($BFC7); 1 wait_or_request ($8FA7); 2 act_sit_paper ($BFB7); 3 act_paper_wait ($BF99); 4 act_paper_pose34 ($BF45); 5 act_paper_wait ($BF99); 6 act_paper_frame1 ($BF52); 7 act_paper_wait ($BF99); 8 act_paper_turn ($BF24); 9 act_paper_wait ($BF99); 10 act_paper_again ($BF73); 11 act_paper_pose34 ($BF45); 12 act_paper_wait ($BF99); 13 act_sit_paper ($BFB7); 14 act_paper_wait ($BF99); 15 act_paper_away ($BF8B); 16 script_next ($8F0E).","t":"word","b":[198,191,166,143,182,191,152,191],"d":[49094,36774,49078,49048]},{"a":48906,"t":"word","b":[68,191,152,191,81,191,152,191],"d":[48964,49048,48977,49048]},{"a":48914,"t":"word","b":[35,191,152,191,114,191,68,191],"d":[48931,49048,49010,48964]},{"a":48922,"t":"word","b":[152,191,182,191,152,191,138,191],"d":[49048,49078,49048,49034]},{"a":48930,"t":"word","b":[13,143],"d":[36621]},{"a":48932,"l":"act_paper_turn","c":"Activity handler: a random 1-3 (0 counts as 1) into figure 2's frame $038D, $03C6 = $82, pose $34 + that ($35-$37) via set_pose ($9363), paper_wait = 1, next phase.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":48935,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":48937,"t":"code","b":[208,2],"m":"bne","o":"b_BF2D","oa":48941},{"a":48939,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48941,"l":"b_BF2D","t":"code","b":[24],"m":"clc","x":[48937]},{"a":48942,"t":"code","b":[72],"m":"pha"},{"a":48943,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":48946,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":48948,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":48951,"t":"code","b":[104],"m":"pla"},{"a":48952,"t":"code","b":[105,52],"m":"adc","o":"#$34"},{"a":48954,"l":"act_paper_pose","c":"Shared tail: set_pose with A, paper_wait = 1, next phase.","t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731,"x":[48975]},{"a":48957,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48959,"t":"code","b":[141,253,190],"m":"sta","o":"paper_wait","oa":48893},{"a":48962,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":48965,"l":"act_paper_pose34","c":"Activity handler: gaze_mode = $A1, figure 2 back in front of him (paper_show), pose $34, paper_wait = 1, next phase.","t":"code","b":[169,161],"m":"lda","o":"#$A1"},{"a":48967,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":48970,"t":"code","b":[32,204,191],"m":"jsr","o":"paper_show","oa":49100},{"a":48973,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":48975,"t":"code","b":[76,58,191],"m":"jmp","o":"act_paper_pose","oa":48954},{"a":48978,"l":"act_paper_frame1","c":"Activity handler: gaze_mode = $42, figure 2 frame 1 ($038D = 1, $03C6 = $82), pose $35, paper_wait = ($0414 AND $1F) OR 8, next phase.","t":"code","b":[169,66],"m":"lda","o":"#$42"},{"a":48980,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":48983,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":48985,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":48988,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":48990,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":48993,"t":"code","b":[169,53],"m":"lda","o":"#$35"},{"a":48995,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":48998,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":49001,"t":"code","b":[41,31],"m":"and","o":"#$1F"},{"a":49003,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":49005,"t":"code","b":[141,253,190],"m":"sta","o":"paper_wait","oa":48893},{"a":49008,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":49011,"l":"act_paper_again","c":"Activity handler: unless a request is pending or ($0414 AND 7) = 3, go back to phase 6 (act_paper_frame1), with paper_wait = $1E, which act_paper_frame1 then replaces; otherwise next phase.","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":49014,"t":"code","b":[208,29],"m":"bne","o":"b_BF95","oa":49045},{"a":49016,"t":"code","b":[173,20,4],"m":"lda","o":"rng_value","oa":1044},{"a":49019,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":49021,"t":"code","b":[201,3],"m":"cmp","o":"#$03"},{"a":49023,"t":"code","b":[240,20],"m":"beq","o":"b_BF95","oa":49045},{"a":49025,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":49027,"t":"code","b":[141,253,190],"m":"sta","o":"paper_wait","oa":48893},{"a":49030,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":49032,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":49034,"t":"code","b":[96],"m":"rts"},{"a":49035,"l":"act_paper_away","c":"Activity handler: gaze_mode = 2 and $03C6 = 2 (figure 2 put away), next phase. It starts with LDA #$00, which the LDA #$02 after it makes pointless.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49037,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":49039,"t":"code","b":[141,242,172],"m":"sta","o":"gaze_mode","oa":44274},{"a":49042,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":49045,"l":"b_BF95","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[49014,49023]},{"a":49048,"l":"r_BF98","t":"code","b":[96],"m":"rts","x":[49057]},{"a":49049,"l":"act_paper_wait","c":"Activity handler: counts paper_tick and acts on every eighth call: if a request is pending, or paper_wait is 0, next phase; otherwise decrement paper_wait.","t":"code","b":[238,254,190],"m":"inc","o":"paper_tick","oa":48894},{"a":49052,"t":"code","b":[173,254,190],"m":"lda","o":"paper_tick","oa":48894},{"a":49055,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":49057,"t":"code","b":[208,245],"m":"bne","o":"r_BF98","oa":49048},{"a":49059,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":49062,"t":"code","b":[240,3],"m":"beq","o":"b_BFAB","oa":49067},{"a":49064,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":49067,"l":"b_BFAB","t":"code","b":[173,253,190],"m":"lda","o":"paper_wait","oa":48893,"x":[49062]},{"a":49070,"t":"code","b":[208,3],"m":"bne","o":"b_BFB3","oa":49075},{"a":49072,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":49075,"l":"b_BFB3","t":"code","b":[206,253,190],"m":"dec","o":"paper_wait","oa":48893,"x":[49070]},{"a":49078,"t":"code","b":[96],"m":"rts"},{"a":49079,"l":"act_sit_paper","c":"Activity handler: paper_show, pose $23 (sitting), paper_wait = 8, next phase.","t":"code","b":[32,204,191],"m":"jsr","o":"paper_show","oa":49100},{"a":49082,"t":"code","b":[169,35],"m":"lda","o":"#$23"},{"a":49084,"t":"code","b":[32,99,147],"m":"jsr","o":"set_pose","oa":37731},{"a":49087,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":49089,"t":"code","b":[141,253,190],"m":"sta","o":"paper_wait","oa":48893},{"a":49092,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":49095,"l":"act_walk_chair_2b","c":"Activity handler: LDX #$2B, JMP $8EF9: walk to place $2B, the easy chair. First phase of activity 24.","t":"code","b":[162,43],"m":"ldx","o":"#$2B"},{"a":49097,"t":"code","b":[76,249,142],"m":"jmp","o":"walk_to_location","oa":36601},{"a":49100,"l":"paper_show","c":"Put figure 2 in front of the person: $0394 = $FF (multicolour), colour $1394 = 1 (white), $039C = 0, frame $038D = 0, x, floor and depth copied from the person ($03A7, $03AB, $03AF; depth $03B3 - 1), $03C6 = $83 (shown).","t":"code","b":[169,255],"m":"lda","o":"#$FF","x":[48970,49079]},{"a":49102,"t":"code","b":[141,148,3],"m":"sta","o":"prop_multicolour","oa":916},{"a":49105,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":49107,"t":"code","b":[141,148,19],"m":"sta","o":"colour_figure2","oa":5012},{"a":49110,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49112,"t":"code","b":[141,156,3],"m":"sta","o":"fig_mirror_prop_a","oa":924},{"a":49115,"t":"code","b":[141,141,3],"m":"sta","o":"fig_frame_prop_a","oa":909},{"a":49118,"t":"code","b":[173,167,3],"m":"lda","o":"fig_x","oa":935},{"a":49121,"t":"code","b":[141,169,3],"m":"sta","o":"fig_x_prop_a","oa":937},{"a":49124,"t":"code","b":[173,171,3],"m":"lda","o":"fig_x_hi","oa":939},{"a":49127,"t":"code","b":[141,173,3],"m":"sta","o":"fig_x_hi_prop_a","oa":941},{"a":49130,"t":"code","b":[173,175,3],"m":"lda","o":"fig_floor_y","oa":943},{"a":49133,"t":"code","b":[141,177,3],"m":"sta","o":"fig_floor_y_prop_a","oa":945},{"a":49136,"t":"code","b":[174,179,3],"m":"ldx","o":"fig_depth","oa":947},{"a":49139,"t":"code","b":[202],"m":"dex"},{"a":49140,"t":"code","b":[142,181,3],"m":"stx","o":"fig_depth_prop_a","oa":949},{"a":49143,"t":"code","b":[169,131],"m":"lda","o":"#$83"},{"a":49145,"t":"code","b":[141,198,3],"m":"sta","o":"fig_flags_prop_a","oa":966},{"a":49148,"t":"code","b":[96],"m":"rts"},{"a":49149,"l":"fill_BFFD","c":"Three bytes $FF $00 $FB at the end of the range; nothing references them.","t":"byte","b":[255,0,251]},{"a":49152,"l":"parse_pos","c":"Parser read position: index (0-127) into the typed-line ring at $0224 of the next character the parser has not read yet. Only parse_advance ($C112) changes it (+1, modulo 128); it is never reset, it follows the line's write index $0222 (kept by the line editor at $3731) round the ring. The parser works whenever the two differ.","t":"byte","b":[0],"x":[49219,49335,49343,49361,49390,49427,49430,49435]},{"a":49153,"l":"parse_last_char","c":"The character just before the line's write index ($0223+$0222), stored by parse_typed_line each time it runs. A letter means a word is still being typed and nothing is parsed yet; RETURN, '.', '!' or '?' ends the sentence.","t":"byte","b":[0],"x":[49227,49244,49459]},{"a":49154,"l":"parse_sentence_actions","c":"The finished sentence: up to 8 action codes ended by a 0 ($C002-$C009). Written at the end of a sentence by parse_typed_line from parse_rule_actions ($C00B), or from $C00A (the constant $2E, then the first 7 actions) when the sentence score is 12 or more. An action code is an activity number: the main loop ($0986-$09B6) reads the list through parse_get_action, appends it to the 16-entry action queue at $E12A and zeroes $C002 (parse_clear_actions); activity 0 ($E13F) later stores each queued code in the activity number $8D9B (at $E393).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[49301,49469,49475]},{"a":49162,"l":"parse_polite_action","c":"Constant $2E (activity 46), never written: the action put in front of a sentence's actions when its score ($C014) is 12 or more, because the copy at the end of a sentence then starts here instead of at $C00B.","t":"byte","b":[46],"x":[49298]},{"a":49163,"l":"parse_rule_actions","c":"Action codes of the rules matched so far in the current sentence, 0-terminated, 8 bytes ($C00B-$C012); parse_action_count ($C013) is the write index. Only parse_match_rules writes it and nothing clears it, so after a sentence in which no rule matched at all it still holds the previous sentence's list, which the end of the sentence copies again (a matched rule without actions, such as PLEASE, does empty it).","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[49670,49691]},{"a":49171,"l":"parse_action_count","c":"Number of action codes in parse_rule_actions ($C00B), where parse_match_rules stores the next one. parse_match_rules ANDs it with 7 after every rule check and the end of a sentence resets it to 0. Two matched rules with 8 codes between them write the ending 0 into $C013 itself (it becomes 0) and leave $C002-$C009 without a 0 (rules have at most 4 codes).","t":"byte","b":[0],"x":[49316,49663,49674,49707,49712]},{"a":49172,"l":"parse_sentence_score","c":"Score of the finished sentence: parse_mood_bonus[$035F AND 3] (3, 1 or 0) + parse_rule_score + a random 0-3 (bits 0-1 of $195E). 12 or more puts action $2E in front. parse_get_action returns it in Y; the main loop stores it in $092F and, at 8 or more, empties the action queue ($E129 = $E128) and sets $BEFC before queuing the new actions. Activity 0 serves the queue while $092F is 8 or more and counts $092F up from 4-7; below 4 queued actions wait.","t":"byte","b":[0],"x":[49265,49274,49277,49289,49466]},{"a":49173,"l":"parse_rule_score","c":"Sum of the scores of the rules matched in the current sentence: each matched rule adds the low 7 bits of its end byte. Added into the sentence score and zeroed at the end of the sentence.","t":"byte","b":[0],"x":[49262,49282,49683,49686]},{"a":49174,"l":"parse_bits_list1","c":"Concept bits of the list-1 words (vocab_verbs) read since the last rule matched: five bytes; parse_lookup_word ORs each word's five bit bytes in. parse_match_rules tests rule bytes 0-4 against them and clears both bit sets when a rule matches; the end of a sentence clears them too.","t":"byte","b":[0,0,0,0,0],"x":[49313,49498,49501,49619,49701]},{"a":49179,"l":"parse_bits_list2","c":"Concept bits of the list-2 words (vocab_nouns) read since the last rule matched: five bytes, ORed in by parse_lookup_word and tested against rule bytes 5-9. Cleared together with $C016.","t":"byte","b":[0,0,0,0,0],"x":[49310,49523,49526,49698]},{"a":49184,"l":"parse_word","c":"The word being looked up ($C020-$C03F): upper-case letters ended by a 0, at most 31 letters (parse_extract_word drops the rest). An empty word (first byte 0) is not looked up.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[49332,49372,49387,49462,49479,49565]},{"a":49192,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49216,"l":"parse_typed_line","c":"The parser, called once per main-loop pass ($097F). Returns at once while parse_pos equals the line's write index $0222, or while the last character typed ($0223+$0222, kept in $C001) is a letter. Otherwise a word has just been ended: parse_extract_word copies it to $C020, parse_lookup_word ORs its concept bits into $C016 or $C01B, and parse_match_rules tests the rules. If the last character is RETURN, '.', '!' or '?' the sentence ends: the score $C014 = parse_mood_bonus[$035F AND 3] + parse_rule_score + random 0-3, parse_rule_score is zeroed, eight action bytes are copied to $C002-$C009 (from $C00B, or from $C00A so that $2E comes first when the score is 12 or more), and both concept-bit sets and parse_action_count are cleared. Nothing checks that a rule matched in this sentence.","t":"code","b":[174,34,2],"m":"ldx","o":"line_index","oa":546,"x":[2431]},{"a":49219,"t":"code","b":[236,0,192],"m":"cpx","o":"parse_pos","oa":49152},{"a":49222,"t":"code","b":[240,101],"m":"beq","o":"r_C0AD","oa":49325},{"a":49224,"t":"code","b":[189,35,2],"m":"lda","o":"line_last_base,x","oa":547},{"a":49227,"t":"code","b":[141,1,192],"m":"sta","o":"parse_last_char","oa":49153},{"a":49230,"t":"code","b":[32,252,192],"m":"jsr","o":"parse_is_letter","oa":49404},{"a":49233,"t":"code","b":[176,90],"m":"bcs","o":"r_C0AD","oa":49325},{"a":49235,"t":"code","b":[32,178,192],"m":"jsr","o":"parse_extract_word","oa":49330},{"a":49238,"t":"code","b":[32,71,193],"m":"jsr","o":"parse_lookup_word","oa":49479},{"a":49241,"t":"code","b":[32,197,193],"m":"jsr","o":"parse_match_rules","oa":49605},{"a":49244,"t":"code","b":[173,1,192],"m":"lda","o":"parse_last_char","oa":49153},{"a":49247,"t":"code","b":[32,36,193],"m":"jsr","o":"parse_is_sentence_end","oa":49444},{"a":49250,"t":"code","b":[208,73],"m":"bne","o":"r_C0AD","oa":49325},{"a":49252,"t":"code","b":[32,70,3],"m":"jsr","o":"jt_get_mood","oa":838},{"a":49255,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":49257,"t":"code","b":[170],"m":"tax"},{"a":49258,"t":"code","b":[189,174,192],"m":"lda","o":"parse_mood_bonus,x","oa":49326},{"a":49261,"t":"code","b":[24],"m":"clc"},{"a":49262,"t":"code","b":[109,21,192],"m":"adc","o":"parse_rule_score","oa":49173},{"a":49265,"t":"code","b":[141,20,192],"m":"sta","o":"parse_sentence_score","oa":49172},{"a":49268,"t":"code","b":[32,67,3],"m":"jsr","o":"jt_random","oa":835},{"a":49271,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":49273,"t":"code","b":[24],"m":"clc"},{"a":49274,"t":"code","b":[109,20,192],"m":"adc","o":"parse_sentence_score","oa":49172},{"a":49277,"t":"code","b":[141,20,192],"m":"sta","o":"parse_sentence_score","oa":49172},{"a":49280,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49282,"t":"code","b":[141,21,192],"m":"sta","o":"parse_rule_score","oa":49173},{"a":49285,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":49287,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":49289,"t":"code","b":[173,20,192],"m":"lda","o":"parse_sentence_score","oa":49172},{"a":49292,"t":"code","b":[201,12],"m":"cmp","o":"#$0C"},{"a":49294,"t":"code","b":[144,2],"m":"bcc","o":"b_C092","oa":49298},{"a":49296,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":49298,"l":"b_C092","t":"code","b":[185,10,192],"m":"lda","o":"parse_polite_action,y","oa":49162,"x":[49294,49323]},{"a":49301,"t":"code","b":[157,2,192],"m":"sta","o":"parse_sentence_actions,x","oa":49154},{"a":49304,"t":"code","b":[224,5],"m":"cpx","o":"#$05"},{"a":49306,"t":"code","b":[176,11],"m":"bcs","o":"b_C0A7","oa":49319},{"a":49308,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49310,"t":"code","b":[157,27,192],"m":"sta","o":"parse_bits_list2,x","oa":49179},{"a":49313,"t":"code","b":[157,22,192],"m":"sta","o":"parse_bits_list1,x","oa":49174},{"a":49316,"t":"code","b":[141,19,192],"m":"sta","o":"parse_action_count","oa":49171},{"a":49319,"l":"b_C0A7","t":"code","b":[200],"m":"iny","x":[49306]},{"a":49320,"t":"code","b":[232],"m":"inx"},{"a":49321,"t":"code","b":[224,8],"m":"cpx","o":"#$08"},{"a":49323,"t":"code","b":[144,229],"m":"bcc","o":"b_C092","oa":49298},{"a":49325,"l":"r_C0AD","t":"code","b":[96],"m":"rts","x":[49222,49233,49250]},{"a":49326,"l":"parse_mood_bonus","c":"Sentence-score bonus by the mood $035F (read through jt_get_mood at $0346), index mood AND 3: 3, 1, 0, 0, so the happiest mood, 0, adds 3. The mood is 0-2 and also picks the set of head graphics at $0E71.","t":"byte","b":[3,1,0,0],"x":[49258]},{"a":49330,"l":"parse_extract_word","c":"Copies the next word of the typed line into parse_word ($C020): skips non-letters from parse_pos, stores letters converted to upper case (at most 31), ends the word with 0, then moves parse_pos on to the write index $0222, dropping whatever follows the word. Any non-letter ends a word, the apostrophe too: WHAT'S is read as WHAT and S, so the list-1 entry WHAT'S ($C5A1) can never match.","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[49235]},{"a":49332,"t":"code","b":[142,32,192],"m":"stx","o":"parse_word","oa":49184},{"a":49335,"t":"code","b":[173,0,192],"m":"lda","o":"parse_pos","oa":49152},{"a":49338,"t":"code","b":[205,34,2],"m":"cmp","o":"line_index","oa":546},{"a":49341,"t":"code","b":[240,42],"m":"beq","o":"b_C0E9","oa":49385},{"a":49343,"l":"b_C0BF","t":"code","b":[172,0,192],"m":"ldy","o":"parse_pos","oa":49152,"x":[49357]},{"a":49346,"t":"code","b":[185,36,2],"m":"lda","o":"line_ring,y","oa":548},{"a":49349,"t":"code","b":[32,252,192],"m":"jsr","o":"parse_is_letter","oa":49404},{"a":49352,"t":"code","b":[176,7],"m":"bcs","o":"b_C0D1","oa":49361},{"a":49354,"t":"code","b":[32,18,193],"m":"jsr","o":"parse_advance","oa":49426},{"a":49357,"t":"code","b":[208,240],"m":"bne","o":"b_C0BF","oa":49343},{"a":49359,"t":"code","b":[240,24],"m":"beq","o":"b_C0E9","oa":49385},{"a":49361,"l":"b_C0D1","t":"code","b":[172,0,192],"m":"ldy","o":"parse_pos","oa":49152,"x":[49352,49383]},{"a":49364,"t":"code","b":[185,36,2],"m":"lda","o":"line_ring,y","oa":548},{"a":49367,"t":"code","b":[32,252,192],"m":"jsr","o":"parse_is_letter","oa":49404},{"a":49370,"t":"code","b":[144,13],"m":"bcc","o":"b_C0E9","oa":49385},{"a":49372,"t":"code","b":[157,32,192],"m":"sta","o":"parse_word,x","oa":49184},{"a":49375,"t":"code","b":[232],"m":"inx"},{"a":49376,"t":"code","b":[224,31],"m":"cpx","o":"#$1F"},{"a":49378,"t":"code","b":[176,5],"m":"bcs","o":"b_C0E9","oa":49385},{"a":49380,"t":"code","b":[32,18,193],"m":"jsr","o":"parse_advance","oa":49426},{"a":49383,"t":"code","b":[208,232],"m":"bne","o":"b_C0D1","oa":49361},{"a":49385,"l":"b_C0E9","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[49341,49359,49370,49378]},{"a":49387,"t":"code","b":[157,32,192],"m":"sta","o":"parse_word,x","oa":49184},{"a":49390,"t":"code","b":[173,0,192],"m":"lda","o":"parse_pos","oa":49152},{"a":49393,"t":"code","b":[205,34,2],"m":"cmp","o":"line_index","oa":546},{"a":49396,"t":"code","b":[240,3],"m":"beq","o":"b_C0F9","oa":49401},{"a":49398,"l":"b_C0F6","t":"code","b":[32,18,193],"m":"jsr","o":"parse_advance","oa":49426,"x":[49401]},{"a":49401,"l":"b_C0F9","t":"code","b":[208,251],"m":"bne","o":"b_C0F6","oa":49398,"x":[49396]},{"a":49403,"t":"code","b":[96],"m":"rts"},{"a":49404,"l":"parse_is_letter","c":"Carry set if A is a letter ($41-$5A or $61-$7A), with a lower-case letter converted to upper case in A; carry clear otherwise, A unchanged.","t":"code","b":[201,65],"m":"cmp","o":"#$41","x":[49230,49349,49367]},{"a":49406,"t":"code","b":[144,16],"m":"bcc","o":"b_C110","oa":49424},{"a":49408,"t":"code","b":[201,123],"m":"cmp","o":"#$7B"},{"a":49410,"t":"code","b":[176,12],"m":"bcs","o":"b_C110","oa":49424},{"a":49412,"t":"code","b":[201,91],"m":"cmp","o":"#$5B"},{"a":49414,"t":"code","b":[144,6],"m":"bcc","o":"b_C10E","oa":49422},{"a":49416,"t":"code","b":[201,97],"m":"cmp","o":"#$61"},{"a":49418,"t":"code","b":[144,4],"m":"bcc","o":"b_C110","oa":49424},{"a":49420,"t":"code","b":[233,32],"m":"sbc","o":"#$20"},{"a":49422,"l":"b_C10E","t":"code","b":[56],"m":"sec","x":[49414]},{"a":49423,"t":"code","b":[96],"m":"rts"},{"a":49424,"l":"b_C110","t":"code","b":[24],"m":"clc","x":[49406,49410,49418]},{"a":49425,"t":"code","b":[96],"m":"rts"},{"a":49426,"l":"parse_advance","c":"parse_pos ($C000) + 1, modulo 128 (the typed line is a 128-byte ring at $0224). Returns it in Y with A kept, Z set when it has reached the line's write index $0222.","t":"code","b":[72],"m":"pha","x":[49354,49380,49398]},{"a":49427,"t":"code","b":[238,0,192],"m":"inc","o":"parse_pos","oa":49152},{"a":49430,"t":"code","b":[173,0,192],"m":"lda","o":"parse_pos","oa":49152},{"a":49433,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":49435,"t":"code","b":[141,0,192],"m":"sta","o":"parse_pos","oa":49152},{"a":49438,"t":"code","b":[168],"m":"tay"},{"a":49439,"t":"code","b":[104],"m":"pla"},{"a":49440,"t":"code","b":[204,34,2],"m":"cpy","o":"line_index","oa":546},{"a":49443,"t":"code","b":[96],"m":"rts"},{"a":49444,"l":"parse_is_sentence_end","c":"Z set if A is one of the four characters in parse_end_chars ($C12F): RETURN, '.', '!', '?' (X = its index); Z clear otherwise (X = $FF).","t":"code","b":[162,3],"m":"ldx","o":"#$03","x":[49247]},{"a":49446,"l":"b_C126","t":"code","b":[221,47,193],"m":"cmp","o":"parse_end_chars,x","oa":49455,"x":[49452]},{"a":49449,"t":"code","b":[240,3],"m":"beq","o":"r_C12E","oa":49454},{"a":49451,"t":"code","b":[202],"m":"dex"},{"a":49452,"t":"code","b":[16,248],"m":"bpl","o":"b_C126","oa":49446},{"a":49454,"l":"r_C12E","t":"code","b":[96],"m":"rts","x":[49449]},{"a":49455,"l":"parse_end_chars","c":"The four characters that end a sentence: $0D (RETURN), '.', '!', '?'.","t":"byte","b":[13,46,33,63],"x":[49446]},{"a":49459,"l":"parse_get_word_char","c":"LDY $C001 / LDA $C020,X / RTS: an accessor for the word buffer, built like parse_get_action below it. No JSR or JMP to $C133 was found in the image; apparently unused.","t":"code","b":[172,1,192],"m":"ldy","o":"parse_last_char","oa":49153},{"a":49462,"t":"code","b":[189,32,192],"m":"lda","o":"parse_word,x","oa":49184},{"a":49465,"t":"code","b":[96],"m":"rts"},{"a":49466,"l":"parse_get_action","c":"Returns A = parse_sentence_actions+X ($C002+X), Z set when it is the 0 that ends the list, and Y = the sentence score ($C014). The main loop calls it with X = 0 at $0986 (is there a new sentence?) and at $099F for each action in turn.","t":"code","b":[172,20,192],"m":"ldy","o":"parse_sentence_score","oa":49172,"x":[2438,2463]},{"a":49469,"t":"code","b":[189,2,192],"m":"lda","o":"parse_sentence_actions,x","oa":49154},{"a":49472,"t":"code","b":[96],"m":"rts"},{"a":49473,"l":"parse_clear_actions","c":"Zeroes $C002, the first action of the finished sentence, once the main loop ($09B6) has queued the list, so each sentence is queued once.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[2486]},{"a":49475,"t":"code","b":[141,2,192],"m":"sta","o":"parse_sentence_actions","oa":49154},{"a":49478,"t":"code","b":[96],"m":"rts"},{"a":49479,"l":"parse_lookup_word","c":"Looks parse_word ($C020) up in word list 1 (vocab_verbs, $C234) and, only when it is not there, in list 2 (vocab_nouns, $C5E0); ORs the five bit bytes of the first matching record into $C016 (list 1) or $C01B (list 2) and returns carry set. Carry clear for an empty or unknown word. Because the search stops at the first match, the second list-1 records of START ($C396), LIKE ($C52F), APATHETIC ($C568) and IS ($C5D7) are never used.","t":"code","b":[173,32,192],"m":"lda","o":"parse_word","oa":49184,"x":[49238]},{"a":49482,"t":"code","b":[240,52],"m":"beq","o":"b_C180","oa":49536},{"a":49484,"t":"code","b":[169,52],"m":"lda","o":"#$34"},{"a":49486,"t":"code","b":[162,194],"m":"ldx","o":"#$C2"},{"a":49488,"t":"code","b":[32,135,193],"m":"jsr","o":"parse_search_list","oa":49543},{"a":49491,"t":"code","b":[144,16],"m":"bcc","o":"b_C165","oa":49509},{"a":49493,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":49495,"l":"b_C157","t":"code","b":[189,130,193],"m":"lda","o":"parse_found_bits,x","oa":49538,"x":[49505]},{"a":49498,"t":"code","b":[29,22,192],"m":"ora","o":"parse_bits_list1,x","oa":49174},{"a":49501,"t":"code","b":[157,22,192],"m":"sta","o":"parse_bits_list1,x","oa":49174},{"a":49504,"t":"code","b":[202],"m":"dex"},{"a":49505,"t":"code","b":[16,244],"m":"bpl","o":"b_C157","oa":49495},{"a":49507,"t":"code","b":[56],"m":"sec"},{"a":49508,"t":"code","b":[96],"m":"rts"},{"a":49509,"l":"b_C165","t":"code","b":[169,224],"m":"lda","o":"#$E0","x":[49491]},{"a":49511,"t":"code","b":[162,197],"m":"ldx","o":"#$C5"},{"a":49513,"t":"code","b":[32,135,193],"m":"jsr","o":"parse_search_list","oa":49543},{"a":49516,"t":"code","b":[144,16],"m":"bcc","o":"b_C17E","oa":49534},{"a":49518,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":49520,"l":"b_C170","t":"code","b":[189,130,193],"m":"lda","o":"parse_found_bits,x","oa":49538,"x":[49530]},{"a":49523,"t":"code","b":[29,27,192],"m":"ora","o":"parse_bits_list2,x","oa":49179},{"a":49526,"t":"code","b":[157,27,192],"m":"sta","o":"parse_bits_list2,x","oa":49179},{"a":49529,"t":"code","b":[202],"m":"dex"},{"a":49530,"t":"code","b":[16,244],"m":"bpl","o":"b_C170","oa":49520},{"a":49532,"t":"code","b":[56],"m":"sec"},{"a":49533,"t":"code","b":[96],"m":"rts"},{"a":49534,"l":"b_C17E","t":"code","b":[24],"m":"clc","x":[49516]},{"a":49535,"t":"code","b":[96],"m":"rts"},{"a":49536,"l":"b_C180","t":"code","b":[24],"m":"clc","x":[49482,49553]},{"a":49537,"t":"code","b":[96],"m":"rts"},{"a":49538,"l":"parse_found_bits","c":"Five-byte copy of the concept bits of the record parse_search_list is looking at; after a successful search, the bits of the word found.","t":"byte","b":[0,0,0,0,0],"x":[49495,49520,49555]},{"a":49543,"l":"parse_search_list","c":"Searches a word list for parse_word ($C020): A/X = list address (low/high), kept in $10/$11. For each record it copies the five bit bytes to parse_found_bits ($C182), stopping with carry clear at the first bit byte that is $FF (the end of the list), then compares the word letter by letter; carry set on an exact match of the whole word. List 2 therefore ends at the $FF at $C969.","t":"code","b":[133,16],"m":"sta","o":"parse_ptr","oa":16,"x":[49488,49513]},{"a":49545,"t":"code","b":[134,17],"m":"stx","o":"parse_ptr_hi","oa":17},{"a":49547,"l":"j_C18B","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[49600]},{"a":49549,"l":"b_C18D","t":"code","b":[177,16],"m":"lda","o":"(parse_ptr),y","oa":16,"x":[49561]},{"a":49551,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":49553,"t":"code","b":[240,237],"m":"beq","o":"b_C180","oa":49536},{"a":49555,"t":"code","b":[153,130,193],"m":"sta","o":"parse_found_bits,y","oa":49538},{"a":49558,"t":"code","b":[200],"m":"iny"},{"a":49559,"t":"code","b":[192,5],"m":"cpy","o":"#$05"},{"a":49561,"t":"code","b":[144,242],"m":"bcc","o":"b_C18D","oa":49549},{"a":49563,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":49565,"l":"j_C19D","t":"code","b":[189,32,192],"m":"lda","o":"parse_word,x","oa":49184,"x":[49578]},{"a":49568,"t":"code","b":[209,16],"m":"cmp","o":"(parse_ptr),y","oa":16},{"a":49570,"t":"code","b":[208,9],"m":"bne","o":"b_C1AD","oa":49581},{"a":49572,"t":"code","b":[17,16],"m":"ora","o":"(parse_ptr),y","oa":16},{"a":49574,"t":"code","b":[240,27],"m":"beq","o":"b_C1C3","oa":49603},{"a":49576,"t":"code","b":[200],"m":"iny"},{"a":49577,"t":"code","b":[232],"m":"inx"},{"a":49578,"t":"code","b":[76,157,193],"m":"jmp","o":"j_C19D","oa":49565},{"a":49581,"l":"b_C1AD","t":"code","b":[177,16],"m":"lda","o":"(parse_ptr),y","oa":16,"x":[49570,49586]},{"a":49583,"t":"code","b":[240,3],"m":"beq","o":"b_C1B4","oa":49588},{"a":49585,"t":"code","b":[200],"m":"iny"},{"a":49586,"t":"code","b":[208,249],"m":"bne","o":"b_C1AD","oa":49581},{"a":49588,"l":"b_C1B4","t":"code","b":[152],"m":"tya","x":[49583]},{"a":49589,"t":"code","b":[56],"m":"sec"},{"a":49590,"t":"code","b":[101,16],"m":"adc","o":"parse_ptr","oa":16},{"a":49592,"t":"code","b":[133,16],"m":"sta","o":"parse_ptr","oa":16},{"a":49594,"t":"code","b":[165,17],"m":"lda","o":"parse_ptr_hi","oa":17},{"a":49596,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":49598,"t":"code","b":[133,17],"m":"sta","o":"parse_ptr_hi","oa":17},{"a":49600,"t":"code","b":[76,139,193],"m":"jmp","o":"j_C18B","oa":49547},{"a":49603,"l":"b_C1C3","t":"code","b":[56],"m":"sec","x":[49574]},{"a":49604,"t":"code","b":[96],"m":"rts"},{"a":49605,"l":"parse_match_rules","c":"Tests the rules (parse_rules, $C96A, 16-byte records) against the concept bits gathered so far: rule byte n (n = 0-9) against $C016+n. A rule matches when every bit set in its ten bytes is also set in the sentence; bits the rule does not name are ignored, and the first matching rule in table order wins. Its action codes (from offset 10 up to the first byte of $80 or more) are appended to parse_rule_actions ($C00B) at parse_action_count and followed by a 0, the low 7 bits of the end byte are added to parse_rule_score ($C015), and both concept-bit sets are cleared so that a new clause starts. A rule byte of $FF ends the table ($CB8A). Uses $10-$13 in zero page. Called after every word, so a rule fires as soon as the last word it needs has been typed.","t":"code","b":[169,106],"m":"lda","o":"#$6A","x":[49241]},{"a":49607,"t":"code","b":[133,16],"m":"sta","o":"parse_ptr","oa":16},{"a":49609,"t":"code","b":[169,201],"m":"lda","o":"#$C9"},{"a":49611,"t":"code","b":[133,17],"m":"sta","o":"parse_ptr_hi","oa":17},{"a":49613,"l":"j_C1CD","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[49658]},{"a":49615,"t":"code","b":[133,18],"m":"sta","o":"rule_miss_bits","oa":18},{"a":49617,"t":"code","b":[160,9],"m":"ldy","o":"#$09"},{"a":49619,"l":"b_C1D3","t":"code","b":[185,22,192],"m":"lda","o":"parse_bits_list1,y","oa":49174,"x":[49639]},{"a":49622,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":49624,"t":"code","b":[133,19],"m":"sta","o":"rule_sentence_inv","oa":19},{"a":49626,"t":"code","b":[177,16],"m":"lda","o":"(parse_ptr),y","oa":16},{"a":49628,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":49630,"t":"code","b":[240,75],"m":"beq","o":"b_C22B","oa":49707},{"a":49632,"t":"code","b":[37,19],"m":"and","o":"rule_sentence_inv","oa":19},{"a":49634,"t":"code","b":[5,18],"m":"ora","o":"rule_miss_bits","oa":18},{"a":49636,"t":"code","b":[133,18],"m":"sta","o":"rule_miss_bits","oa":18},{"a":49638,"t":"code","b":[136],"m":"dey"},{"a":49639,"t":"code","b":[16,234],"m":"bpl","o":"b_C1D3","oa":49619},{"a":49641,"t":"code","b":[165,18],"m":"lda","o":"rule_miss_bits","oa":18},{"a":49643,"t":"code","b":[240,16],"m":"beq","o":"b_C1FD","oa":49661},{"a":49645,"t":"code","b":[165,16],"m":"lda","o":"parse_ptr","oa":16},{"a":49647,"t":"code","b":[24],"m":"clc"},{"a":49648,"t":"code","b":[105,16],"m":"adc","o":"#$10"},{"a":49650,"t":"code","b":[133,16],"m":"sta","o":"parse_ptr","oa":16},{"a":49652,"t":"code","b":[165,17],"m":"lda","o":"parse_ptr_hi","oa":17},{"a":49654,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":49656,"t":"code","b":[133,17],"m":"sta","o":"parse_ptr_hi","oa":17},{"a":49658,"t":"code","b":[76,205,193],"m":"jmp","o":"j_C1CD","oa":49613},{"a":49661,"l":"b_C1FD","t":"code","b":[160,10],"m":"ldy","o":"#$0A","x":[49643]},{"a":49663,"l":"j_C1FF","t":"code","b":[174,19,192],"m":"ldx","o":"parse_action_count","oa":49171,"x":[49677]},{"a":49666,"t":"code","b":[177,16],"m":"lda","o":"(parse_ptr),y","oa":16},{"a":49668,"t":"code","b":[48,10],"m":"bmi","o":"b_C210","oa":49680},{"a":49670,"t":"code","b":[157,11,192],"m":"sta","o":"parse_rule_actions,x","oa":49163},{"a":49673,"t":"code","b":[200],"m":"iny"},{"a":49674,"t":"code","b":[238,19,192],"m":"inc","o":"parse_action_count","oa":49171},{"a":49677,"t":"code","b":[76,255,193],"m":"jmp","o":"j_C1FF","oa":49663},{"a":49680,"l":"b_C210","t":"code","b":[41,127],"m":"and","o":"#$7F","x":[49668]},{"a":49682,"t":"code","b":[24],"m":"clc"},{"a":49683,"t":"code","b":[109,21,192],"m":"adc","o":"parse_rule_score","oa":49173},{"a":49686,"t":"code","b":[141,21,192],"m":"sta","o":"parse_rule_score","oa":49173},{"a":49689,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":49691,"t":"code","b":[157,11,192],"m":"sta","o":"parse_rule_actions,x","oa":49163},{"a":49694,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":49696,"l":"b_C220","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[49705]},{"a":49698,"t":"code","b":[157,27,192],"m":"sta","o":"parse_bits_list2,x","oa":49179},{"a":49701,"t":"code","b":[157,22,192],"m":"sta","o":"parse_bits_list1,x","oa":49174},{"a":49704,"t":"code","b":[202],"m":"dex"},{"a":49705,"t":"code","b":[16,245],"m":"bpl","o":"b_C220","oa":49696},{"a":49707,"l":"b_C22B","t":"code","b":[173,19,192],"m":"lda","o":"parse_action_count","oa":49171,"x":[49630]},{"a":49710,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":49712,"t":"code","b":[141,19,192],"m":"sta","o":"parse_action_count","oa":49171},{"a":49715,"t":"code","b":[96],"m":"rts"},{"a":49716,"l":"vocab_verbs","c":"Parser word list 1 (verbs, question words, feelings and manners), searched first: records of five bytes of concept bits, the word in upper-case ASCII, and $00; $FF at $C5DF ends it. Words with the same bits are synonyms (LIKE and ENJOY; LIGHT, START, MAKE, BURN and IGNITE). A word found here is not looked up in list 2, and only its first record counts (see parse_lookup_word). No rule uses the bits of DO, LIKE/ENJOY, WILL/WOULD, RELAX, ON, GET, IF or of LOGON, PROGRAM, UTILITIES, MATH, HOMEWORK, ADD, SUBTRACT, MULTIPLY, DIVIDE.","s":"DO: 01 00 00 00 00; no rule uses its bits","t":"byte","b":[1,0,0,0,0,68,79,0]},{"a":49724,"s":"YOU: 02 00 00 00 00","t":"byte","b":[2,0,0,0,0,89,79,85]},{"a":49732,"t":"byte","b":[0]},{"a":49733,"s":"LIKE: 04 00 00 00 00; no rule uses its bits","t":"byte","b":[4,0,0,0,0,76,73,75]},{"a":49741,"t":"byte","b":[69,0]},{"a":49743,"s":"ENJOY: 04 00 00 00 00; no rule uses its bits","t":"byte","b":[4,0,0,0,0,69,78,74]},{"a":49751,"t":"byte","b":[79,89,0]},{"a":49754,"s":"PLEASE: 08 00 00 00 00","t":"byte","b":[8,0,0,0,0,80,76,69]},{"a":49762,"t":"byte","b":[65,83,69,0]},{"a":49766,"s":"WILL: 10 00 00 00 00; no rule uses its bits","t":"byte","b":[16,0,0,0,0,87,73,76]},{"a":49774,"t":"byte","b":[76,0]},{"a":49776,"s":"WOULD: 10 00 00 00 00; no rule uses its bits","t":"byte","b":[16,0,0,0,0,87,79,85]},{"a":49784,"t":"byte","b":[76,68,0]},{"a":49787,"s":"PLAY: 20 00 00 40 00","t":"byte","b":[32,0,0,64,0,80,76,65]},{"a":49795,"t":"byte","b":[89,0]},{"a":49797,"s":"PERFORM: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,80,69,82]},{"a":49805,"t":"byte","b":[70,79,82,77,0]},{"a":49810,"s":"USE: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,85,83,69]},{"a":49818,"t":"byte","b":[0]},{"a":49819,"s":"TRY: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,84,82,89]},{"a":49827,"t":"byte","b":[0]},{"a":49828,"s":"ALLERGY: 40 00 00 00 00","t":"byte","b":[64,0,0,0,0,65,76,76]},{"a":49836,"t":"byte","b":[69,82,71,89,0]},{"a":49841,"s":"ALLERGIC: 40 00 00 00 00","t":"byte","b":[64,0,0,0,0,65,76,76]},{"a":49849,"t":"byte","b":[69,82,71,73,67,0]},{"a":49855,"s":"FEVER: 40 00 00 00 00","t":"byte","b":[64,0,0,0,0,70,69,86]},{"a":49863,"t":"byte","b":[69,82,0]},{"a":49866,"s":"DUST: 40 00 00 00 00","t":"byte","b":[64,0,0,0,0,68,85,83]},{"a":49874,"t":"byte","b":[84,0]},{"a":49876,"s":"POLLEN: 40 00 00 00 00","t":"byte","b":[64,0,0,0,0,80,79,76]},{"a":49884,"t":"byte","b":[76,69,78,0]},{"a":49888,"s":"HANKY: 40 00 00 00 00","t":"byte","b":[64,0,0,0,0,72,65,78]},{"a":49896,"t":"byte","b":[75,89,0]},{"a":49899,"s":"RELAX: 80 00 00 00 00; no rule uses its bits","t":"byte","b":[128,0,0,0,0,82,69,76]},{"a":49907,"t":"byte","b":[65,88,0]},{"a":49910,"s":"LIGHT: 00 01 00 00 00","t":"byte","b":[0,1,0,0,0,76,73,71]},{"a":49918,"t":"byte","b":[72,84,0]},{"a":49921,"s":"START: 00 01 00 00 00","t":"byte","b":[0,1,0,0,0,83,84,65]},{"a":49929,"t":"byte","b":[82,84,0]},{"a":49932,"s":"MAKE: 00 01 00 00 00","t":"byte","b":[0,1,0,0,0,77,65,75]},{"a":49940,"t":"byte","b":[69,0]},{"a":49942,"s":"BURN: 00 01 00 00 00","t":"byte","b":[0,1,0,0,0,66,85,82]},{"a":49950,"t":"byte","b":[78,0]},{"a":49952,"s":"IGNITE: 00 01 00 00 00","t":"byte","b":[0,1,0,0,0,73,71,78]},{"a":49960,"t":"byte","b":[73,84,69,0]},{"a":49964,"s":"LOOKS: 00 02 00 00 00","t":"byte","b":[0,2,0,0,0,76,79,79]},{"a":49972,"t":"byte","b":[75,83,0]},{"a":49975,"s":"IS: 00 02 00 00 00","t":"byte","b":[0,2,0,0,0,73,83,0]},{"a":49983,"s":"SEEMS: 00 02 00 00 00","t":"byte","b":[0,2,0,0,0,83,69,69]},{"a":49991,"t":"byte","b":[77,83,0]},{"a":49994,"s":"APPEARS: 00 02 00 00 00","t":"byte","b":[0,2,0,0,0,65,80,80]},{"a":50002,"t":"byte","b":[69,65,82,83,0]},{"a":50007,"s":"SEEM: 00 04 00 00 00","t":"byte","b":[0,4,0,0,0,83,69,69]},{"a":50015,"t":"byte","b":[77,0]},{"a":50017,"s":"LOOK: 00 04 00 00 00","t":"byte","b":[0,4,0,0,0,76,79,79]},{"a":50025,"t":"byte","b":[75,0]},{"a":50027,"s":"APPEAR: 00 04 00 00 00","t":"byte","b":[0,4,0,0,0,65,80,80]},{"a":50035,"t":"byte","b":[69,65,82,0]},{"a":50039,"s":"HEAR: 00 08 00 00 00","t":"byte","b":[0,8,0,0,0,72,69,65]},{"a":50047,"t":"byte","b":[82,0]},{"a":50049,"s":"LISTEN: 00 08 00 00 00","t":"byte","b":[0,8,0,0,0,76,73,83]},{"a":50057,"t":"byte","b":[84,69,78,0]},{"a":50061,"s":"PUT: 00 08 00 00 00","t":"byte","b":[0,8,0,0,0,80,85,84]},{"a":50069,"t":"byte","b":[0]},{"a":50070,"s":"START: 00 08 00 00 00; never found: START at $C301 comes first","t":"byte","b":[0,8,0,0,0,83,84,65]},{"a":50078,"t":"byte","b":[82,84,0]},{"a":50081,"s":"SPIN: 00 08 00 00 00","t":"byte","b":[0,8,0,0,0,83,80,73]},{"a":50089,"t":"byte","b":[78,0]},{"a":50091,"s":"ON: 00 10 00 00 00; no rule uses its bits","t":"byte","b":[0,16,0,0,0,79,78,0]},{"a":50099,"s":"CLEAN: 00 20 00 00 00","t":"byte","b":[0,32,0,0,0,67,76,69]},{"a":50107,"t":"byte","b":[65,78,0]},{"a":50110,"s":"TIDY: 00 20 00 00 00","t":"byte","b":[0,32,0,0,0,84,73,68]},{"a":50118,"t":"byte","b":[89,0]},{"a":50120,"s":"PICK: 00 20 00 00 00","t":"byte","b":[0,32,0,0,0,80,73,67]},{"a":50128,"t":"byte","b":[75,0]},{"a":50130,"s":"UP: 00 40 00 00 00","t":"byte","b":[0,64,0,0,0,85,80,0]},{"a":50138,"s":"SLOPPY: 00 80 00 00 00","t":"byte","b":[0,128,0,0,0,83,76,79]},{"a":50146,"t":"byte","b":[80,80,89,0]},{"a":50150,"s":"MESSY: 00 80 00 00 00","t":"byte","b":[0,128,0,0,0,77,69,83]},{"a":50158,"t":"byte","b":[83,89,0]},{"a":50161,"s":"UNTIDY: 00 80 00 00 00","t":"byte","b":[0,128,0,0,0,85,78,84]},{"a":50169,"t":"byte","b":[73,68,89,0]},{"a":50173,"s":"SHOULD: 00 00 01 00 00","t":"byte","b":[0,0,1,0,0,83,72,79]},{"a":50181,"t":"byte","b":[85,76,68,0]},{"a":50185,"s":"OUGHT: 00 00 01 00 00","t":"byte","b":[0,0,1,0,0,79,85,71]},{"a":50193,"t":"byte","b":[72,84,0]},{"a":50196,"s":"LOGON: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,76,79,71]},{"a":50204,"t":"byte","b":[79,78,0]},{"a":50207,"s":"PROGRAM: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,80,82,79]},{"a":50215,"t":"byte","b":[71,82,65,77,0]},{"a":50220,"s":"UTILITIES: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,85,84,73]},{"a":50228,"t":"byte","b":[76,73,84,73,69,83,0]},{"a":50235,"s":"MATH: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,77,65,84]},{"a":50243,"t":"byte","b":[72,0]},{"a":50245,"s":"HOMEWORK: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,72,79,77]},{"a":50253,"t":"byte","b":[69,87,79,82,75,0]},{"a":50259,"s":"ADD: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,65,68,68]},{"a":50267,"t":"byte","b":[0]},{"a":50268,"s":"SUBTRACT: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,83,85,66]},{"a":50276,"t":"byte","b":[84,82,65,67,84,0]},{"a":50282,"s":"MULTIPLY: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,77,85,76]},{"a":50290,"t":"byte","b":[84,73,80,76,89,0]},{"a":50296,"s":"DIVIDE: 00 00 02 00 00; no rule uses its bits","t":"byte","b":[0,0,2,0,0,68,73,86]},{"a":50304,"t":"byte","b":[73,68,69,0]},{"a":50308,"s":"TICKLE: 00 00 04 00 00","t":"byte","b":[0,0,4,0,0,84,73,67]},{"a":50316,"t":"byte","b":[75,76,69,0]},{"a":50320,"s":"TYPE: 00 00 08 00 00","t":"byte","b":[0,0,8,0,0,84,89,80]},{"a":50328,"t":"byte","b":[69,0]},{"a":50330,"s":"TELL: 00 00 08 00 00","t":"byte","b":[0,0,8,0,0,84,69,76]},{"a":50338,"t":"byte","b":[76,0]},{"a":50340,"s":"WRITE: 00 00 08 00 00","t":"byte","b":[0,0,8,0,0,87,82,73]},{"a":50348,"t":"byte","b":[84,69,0]},{"a":50351,"s":"CONFIDE: 00 00 08 00 00","t":"byte","b":[0,0,8,0,0,67,79,78]},{"a":50359,"t":"byte","b":[70,73,68,69,0]},{"a":50364,"s":"BRUSH: 00 00 10 00 00","t":"byte","b":[0,0,16,0,0,66,82,85]},{"a":50372,"t":"byte","b":[83,72,0]},{"a":50375,"s":"FLOSS: 00 00 10 00 00","t":"byte","b":[0,0,16,0,0,70,76,79]},{"a":50383,"t":"byte","b":[83,83,0]},{"a":50386,"s":"DRINK: 00 00 20 00 00","t":"byte","b":[0,0,32,0,0,68,82,73]},{"a":50394,"t":"byte","b":[78,75,0]},{"a":50397,"s":"IMBIBE: 00 00 20 00 00","t":"byte","b":[0,0,32,0,0,73,77,66]},{"a":50405,"t":"byte","b":[73,66,69,0]},{"a":50409,"s":"GET: 00 00 40 00 00; no rule uses its bits","t":"byte","b":[0,0,64,0,0,71,69,84]},{"a":50417,"t":"byte","b":[0]},{"a":50418,"s":"FEED: 00 00 80 00 00","t":"byte","b":[0,0,128,0,0,70,69,69]},{"a":50426,"t":"byte","b":[68,0]},{"a":50428,"s":"FILL: 00 00 00 01 00","t":"byte","b":[0,0,0,1,0,70,73,76]},{"a":50436,"t":"byte","b":[76,0]},{"a":50438,"s":"OPEN: 00 00 00 02 00","t":"byte","b":[0,0,0,2,0,79,80,69]},{"a":50446,"t":"byte","b":[78,0]},{"a":50448,"s":"DANCE: 00 00 00 04 00","t":"byte","b":[0,0,0,4,0,68,65,78]},{"a":50456,"t":"byte","b":[67,69,0]},{"a":50459,"s":"MOON: 00 00 00 04 00","t":"byte","b":[0,0,0,4,0,77,79,79]},{"a":50467,"t":"byte","b":[78,0]},{"a":50469,"s":"SHOW: 00 00 00 04 00","t":"byte","b":[0,0,0,4,0,83,72,79]},{"a":50477,"t":"byte","b":[87,0]},{"a":50479,"s":"LIKE: 00 00 00 08 00; never found: LIKE at $C245 comes first","t":"byte","b":[0,0,0,8,0,76,73,75]},{"a":50487,"t":"byte","b":[69,0]},{"a":50489,"s":"TIRED: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,84,73,82]},{"a":50497,"t":"byte","b":[69,68,0]},{"a":50500,"s":"BORED: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,66,79,82]},{"a":50508,"t":"byte","b":[69,68,0]},{"a":50511,"s":"APATHETIC: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,65,80,65]},{"a":50519,"t":"byte","b":[84,72,69,84,73,67,0]},{"a":50526,"s":"HATE: 00 00 00 20 00","t":"byte","b":[0,0,0,32,0,72,65,84]},{"a":50534,"t":"byte","b":[69,0]},{"a":50536,"s":"APATHETIC: 00 00 00 20 00; never found: APATHETIC at $C54F comes first","t":"byte","b":[0,0,0,32,0,65,80,65]},{"a":50544,"t":"byte","b":[84,72,69,84,73,67,0]},{"a":50551,"s":"AWFUL: 00 00 00 20 00","t":"byte","b":[0,0,0,32,0,65,87,70]},{"a":50559,"t":"byte","b":[85,76,0]},{"a":50562,"s":"PLAYING: 00 00 00 40 00","t":"byte","b":[0,0,0,64,0,80,76,65]},{"a":50570,"t":"byte","b":[89,73,78,71,0]},{"a":50575,"s":"IF: 00 00 00 80 00; no rule uses its bits","t":"byte","b":[0,0,0,128,0,73,70,0]},{"a":50583,"s":"WHAT: 00 00 00 00 02","t":"byte","b":[0,0,0,0,2,87,72,65]},{"a":50591,"t":"byte","b":[84,0]},{"a":50593,"s":"WHAT'S: 00 00 00 00 02; never matches: the apostrophe ends a word","t":"byte","b":[0,0,0,0,2,87,72,65]},{"a":50601,"t":"byte","b":[84,39,83,0]},{"a":50605,"s":"IN: 00 00 00 00 04","t":"byte","b":[0,0,0,0,4,73,78,0]},{"a":50613,"s":"INSIDE: 00 00 00 00 04","t":"byte","b":[0,0,0,0,4,73,78,83]},{"a":50621,"t":"byte","b":[73,68,69,0]},{"a":50625,"s":"STORED: 00 00 00 00 04","t":"byte","b":[0,0,0,0,4,83,84,79]},{"a":50633,"t":"byte","b":[82,69,68,0]},{"a":50637,"s":"KEEP: 00 00 00 00 04","t":"byte","b":[0,0,0,0,4,75,69,69]},{"a":50645,"t":"byte","b":[80,0]},{"a":50647,"s":"IS: 00 00 00 00 08; never found: IS at $C337 comes first","t":"byte","b":[0,0,0,0,8,73,83,0]},{"a":50655,"s":"$FF: end of list 1","t":"byte","b":[255]},{"a":50656,"l":"vocab_nouns","c":"Parser word list 2 (things, rooms and games), in the same format as list 1 and searched only when list 1 has no match. No rule uses the bits of TV or CHAIR.","s":"PIANO: 01 00 00 00 00","t":"byte","b":[1,0,0,0,0,80,73,65]},{"a":50664,"t":"byte","b":[78,79,0]},{"a":50667,"s":"STEREO: 02 00 00 00 00","t":"byte","b":[2,0,0,0,0,83,84,69]},{"a":50675,"t":"byte","b":[82,69,79,0]},{"a":50679,"s":"TURNTABLE: 02 00 00 00 00","t":"byte","b":[2,0,0,0,0,84,85,82]},{"a":50687,"t":"byte","b":[78,84,65,66,76,69,0]},{"a":50694,"s":"MUSIC: 02 00 00 00 00","t":"byte","b":[2,0,0,0,0,77,85,83]},{"a":50702,"t":"byte","b":[73,67,0]},{"a":50705,"s":"RECORD: 02 00 00 00 00","t":"byte","b":[2,0,0,0,0,82,69,67]},{"a":50713,"t":"byte","b":[79,82,68,0]},{"a":50717,"s":"PLATTER: 02 00 00 00 00","t":"byte","b":[2,0,0,0,0,80,76,65]},{"a":50725,"t":"byte","b":[84,84,69,82,0]},{"a":50730,"s":"FIRE: 04 00 00 00 00","t":"byte","b":[4,0,0,0,0,70,73,82]},{"a":50738,"t":"byte","b":[69,0]},{"a":50740,"s":"FIREPLACE: 04 00 00 00 00","t":"byte","b":[4,0,0,0,0,70,73,82]},{"a":50748,"t":"byte","b":[69,80,76,65,67,69,0]},{"a":50755,"s":"LOG: 04 00 00 00 00","t":"byte","b":[4,0,0,0,0,76,79,71]},{"a":50763,"t":"byte","b":[0]},{"a":50764,"s":"CHILLY: 08 00 00 00 00","t":"byte","b":[8,0,0,0,0,67,72,73]},{"a":50772,"t":"byte","b":[76,76,89,0]},{"a":50776,"s":"COLD: 08 00 00 00 00","t":"byte","b":[8,0,0,0,0,67,79,76]},{"a":50784,"t":"byte","b":[68,0]},{"a":50786,"s":"PROBLEM: 10 00 00 00 00","t":"byte","b":[16,0,0,0,0,80,82,79]},{"a":50794,"t":"byte","b":[66,76,69,77,0]},{"a":50799,"s":"PROBLEMS: 10 00 00 00 00","t":"byte","b":[16,0,0,0,0,80,82,79]},{"a":50807,"t":"byte","b":[66,76,69,77,83,0]},{"a":50813,"s":"TROUBLES: 10 00 00 00 00","t":"byte","b":[16,0,0,0,0,84,82,79]},{"a":50821,"t":"byte","b":[85,66,76,69,83,0]},{"a":50827,"s":"MATTER: 10 00 00 00 00","t":"byte","b":[16,0,0,0,0,77,65,84]},{"a":50835,"t":"byte","b":[84,69,82,0]},{"a":50839,"s":"LETTER: 10 00 00 00 00","t":"byte","b":[16,0,0,0,0,76,69,84]},{"a":50847,"t":"byte","b":[84,69,82,0]},{"a":50851,"s":"NOTE: 10 00 00 00 00","t":"byte","b":[16,0,0,0,0,78,79,84]},{"a":50859,"t":"byte","b":[69,0]},{"a":50861,"s":"SONG: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,83,79,78]},{"a":50869,"t":"byte","b":[71,0]},{"a":50871,"s":"TUNE: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,84,85,78]},{"a":50879,"t":"byte","b":[69,0]},{"a":50881,"s":"SONATA: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,83,79,78]},{"a":50889,"t":"byte","b":[65,84,65,0]},{"a":50893,"s":"FUGUE: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,70,85,71]},{"a":50901,"t":"byte","b":[85,69,0]},{"a":50904,"s":"SERENADE: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,83,69,82]},{"a":50912,"t":"byte","b":[69,78,65,68,69,0]},{"a":50918,"s":"JAZZ: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,74,65,90]},{"a":50926,"t":"byte","b":[90,0]},{"a":50928,"s":"BOOGIE: 20 00 00 00 00","t":"byte","b":[32,0,0,0,0,66,79,79]},{"a":50936,"t":"byte","b":[71,73,69,0]},{"a":50940,"s":"IVORIES: 40 00 00 00 00","t":"byte","b":[64,0,0,0,0,73,86,79]},{"a":50948,"t":"byte","b":[82,73,69,83,0]},{"a":50953,"s":"TEETH: 00 01 00 00 00","t":"byte","b":[0,1,0,0,0,84,69,69]},{"a":50961,"t":"byte","b":[84,72,0]},{"a":50964,"s":"HYGIENE: 00 01 00 00 00","t":"byte","b":[0,1,0,0,0,72,89,71]},{"a":50972,"t":"byte","b":[73,69,78,69,0]},{"a":50977,"s":"GLASS: 00 02 00 00 00","t":"byte","b":[0,2,0,0,0,71,76,65]},{"a":50985,"t":"byte","b":[83,83,0]},{"a":50988,"s":"COOLER: 00 02 00 00 00","t":"byte","b":[0,2,0,0,0,67,79,79]},{"a":50996,"t":"byte","b":[76,69,82,0]},{"a":51000,"s":"DOG: 00 04 00 00 00","t":"byte","b":[0,4,0,0,0,68,79,71]},{"a":51008,"t":"byte","b":[0]},{"a":51009,"s":"PET: 00 04 00 00 00","t":"byte","b":[0,4,0,0,0,80,69,84]},{"a":51017,"t":"byte","b":[0]},{"a":51018,"s":"MUTT: 00 04 00 00 00","t":"byte","b":[0,4,0,0,0,77,85,84]},{"a":51026,"t":"byte","b":[84,0]},{"a":51028,"s":"POOCH: 00 04 00 00 00","t":"byte","b":[0,4,0,0,0,80,79,79]},{"a":51036,"t":"byte","b":[67,72,0]},{"a":51039,"s":"BOWL: 00 08 00 00 00","t":"byte","b":[0,8,0,0,0,66,79,87]},{"a":51047,"t":"byte","b":[76,0]},{"a":51049,"s":"DISH: 00 08 00 00 00","t":"byte","b":[0,8,0,0,0,68,73,83]},{"a":51057,"t":"byte","b":[72,0]},{"a":51059,"s":"CAN: 00 08 00 00 00","t":"byte","b":[0,8,0,0,0,67,65,78]},{"a":51067,"t":"byte","b":[0]},{"a":51068,"s":"TV: 00 10 00 00 00; no rule uses its bits","t":"byte","b":[0,16,0,0,0,84,86,0]},{"a":51076,"s":"CHAIR: 00 20 00 00 00; no rule uses its bits","t":"byte","b":[0,32,0,0,0,67,72,65]},{"a":51084,"t":"byte","b":[73,82,0]},{"a":51087,"s":"COMPUTER: 00 40 00 00 00","t":"byte","b":[0,64,0,0,0,67,79,77]},{"a":51095,"t":"byte","b":[80,85,84,69,82,0]},{"a":51101,"s":"COMMODORE: 00 40 00 00 00","t":"byte","b":[0,64,0,0,0,67,79,77]},{"a":51109,"t":"byte","b":[77,79,68,79,82,69,0]},{"a":51116,"s":"WATER: 00 80 00 00 00","t":"byte","b":[0,128,0,0,0,87,65,84]},{"a":51124,"t":"byte","b":[69,82,0]},{"a":51127,"s":"LIQUID: 00 80 00 00 00","t":"byte","b":[0,128,0,0,0,76,73,81]},{"a":51135,"t":"byte","b":[85,73,68,0]},{"a":51139,"s":"LIQUIDS: 00 80 00 00 00","t":"byte","b":[0,128,0,0,0,76,73,81]},{"a":51147,"t":"byte","b":[85,73,68,83,0]},{"a":51152,"s":"FLUID: 00 80 00 00 00","t":"byte","b":[0,128,0,0,0,70,76,85]},{"a":51160,"t":"byte","b":[73,68,0]},{"a":51163,"s":"FLUIDS: 00 80 00 00 00","t":"byte","b":[0,128,0,0,0,70,76,85]},{"a":51171,"t":"byte","b":[73,68,83,0]},{"a":51175,"s":"UPSTAIRS: 00 00 01 00 00","t":"byte","b":[0,0,1,0,0,85,80,83]},{"a":51183,"t":"byte","b":[84,65,73,82,83,0]},{"a":51189,"s":"BEDROOM: 00 00 02 00 00","t":"byte","b":[0,0,2,0,0,66,69,68]},{"a":51197,"t":"byte","b":[82,79,79,77,0]},{"a":51202,"s":"CLOSET: 00 00 04 00 00","t":"byte","b":[0,0,4,0,0,67,76,79]},{"a":51210,"t":"byte","b":[83,69,84,0]},{"a":51214,"s":"KITCHEN: 00 00 08 00 00","t":"byte","b":[0,0,8,0,0,75,73,84]},{"a":51222,"t":"byte","b":[67,72,69,78,0]},{"a":51227,"s":"FILING: 00 00 10 00 00","t":"byte","b":[0,0,16,0,0,70,73,76]},{"a":51235,"t":"byte","b":[73,78,71,0]},{"a":51239,"s":"CABINET: 00 00 20 00 00","t":"byte","b":[0,0,32,0,0,67,65,66]},{"a":51247,"t":"byte","b":[73,78,69,84,0]},{"a":51252,"s":"FREEZER: 00 00 40 00 00","t":"byte","b":[0,0,64,0,0,70,82,69]},{"a":51260,"t":"byte","b":[69,90,69,82,0]},{"a":51265,"s":"REFRIGERATOR: 00 00 80 00 00","t":"byte","b":[0,0,128,0,0,82,69,70]},{"a":51273,"t":"byte","b":[82,73,71,69,82,65,84,79]},{"a":51281,"t":"byte","b":[82,0]},{"a":51283,"s":"FRIDGE: 00 00 80 00 00","t":"byte","b":[0,0,128,0,0,70,82,73]},{"a":51291,"t":"byte","b":[68,71,69,0]},{"a":51295,"s":"DRESSER: 00 00 00 01 00","t":"byte","b":[0,0,0,1,0,68,82,69]},{"a":51303,"t":"byte","b":[83,83,69,82,0]},{"a":51308,"s":"NIGHTSTAND: 00 00 00 02 00","t":"byte","b":[0,0,0,2,0,78,73,71]},{"a":51316,"t":"byte","b":[72,84,83,84,65,78,68,0]},{"a":51324,"s":"ADDITION: 00 00 00 04 00","t":"byte","b":[0,0,0,4,0,65,68,68]},{"a":51332,"t":"byte","b":[73,84,73,79,78,0]},{"a":51338,"s":"SUBTRACTION: 00 00 00 04 00","t":"byte","b":[0,0,0,4,0,83,85,66]},{"a":51346,"t":"byte","b":[84,82,65,67,84,73,79,78]},{"a":51354,"t":"byte","b":[0]},{"a":51355,"s":"MULTIPLICATION: 00 00 00 04 00","t":"byte","b":[0,0,0,4,0,77,85,76]},{"a":51363,"t":"byte","b":[84,73,80,76,73,67,65,84]},{"a":51371,"t":"byte","b":[73,79,78,0]},{"a":51375,"s":"DIVISION: 00 00 00 04 00","t":"byte","b":[0,0,0,4,0,68,73,86]},{"a":51383,"t":"byte","b":[73,83,73,79,78,0]},{"a":51389,"s":"HOUSE: 00 00 00 08 00","t":"byte","b":[0,0,0,8,0,72,79,85]},{"a":51397,"t":"byte","b":[83,69,0]},{"a":51400,"s":"HOME: 00 00 00 08 00","t":"byte","b":[0,0,0,8,0,72,79,77]},{"a":51408,"t":"byte","b":[69,0]},{"a":51410,"s":"GAME: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,71,65,77]},{"a":51418,"t":"byte","b":[69,0]},{"a":51420,"s":"CARDS: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,67,65,82]},{"a":51428,"t":"byte","b":[68,83,0]},{"a":51431,"s":"POKER: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,80,79,75]},{"a":51439,"t":"byte","b":[69,82,0]},{"a":51442,"s":"WAR: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,87,65,82]},{"a":51450,"t":"byte","b":[0]},{"a":51451,"s":"CARD: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,67,65,82]},{"a":51459,"t":"byte","b":[68,0]},{"a":51461,"s":"ANAGRAMS: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,65,78,65]},{"a":51469,"t":"byte","b":[71,82,65,77,83,0]},{"a":51475,"s":"HANGMAN: 00 00 00 10 00","t":"byte","b":[0,0,0,16,0,72,65,78]},{"a":51483,"t":"byte","b":[71,77,65,78,0]},{"a":51488,"s":"EXCUSE: 00 00 00 00 02","t":"byte","b":[0,0,0,0,2,69,88,67]},{"a":51496,"t":"byte","b":[85,83,69,0]},{"a":51500,"s":"PARDON: 00 00 00 00 02","t":"byte","b":[0,0,0,0,2,80,65,82]},{"a":51508,"t":"byte","b":[68,79,78,0]},{"a":51512,"s":"HELLO: 00 00 00 00 02","t":"byte","b":[0,0,0,0,2,72,69,76]},{"a":51520,"t":"byte","b":[76,79,0]},{"a":51523,"s":"ATTENTION: 00 00 00 00 02","t":"byte","b":[0,0,0,0,2,65,84,84]},{"a":51531,"t":"byte","b":[69,78,84,73,79,78,0]},{"a":51538,"s":"HEY: 00 00 00 00 02","t":"byte","b":[0,0,0,0,2,72,69,89]},{"a":51546,"t":"byte","b":[0]},{"a":51547,"l":"vocab_nouns_end","c":"The end of word list 2: a record with bits 00 00 00 00 01 and an empty word ($C95B), an all-zero record with an empty word ($C961), and the $FF at $C969 where parse_search_list stops. A typed word is never empty, so these records never match.","t":"byte","b":[0,0,0,0,1,0,0,0]},{"a":51555,"t":"byte","b":[0,0,0,0,0,0,255]},{"a":51562,"l":"parse_rules","c":"The parser's 34 rules, 16 bytes each: bytes 0-4 are list-1 concept bits, 5-9 list-2 concept bits, then action codes (activity numbers, below $80) ended by a byte of $80 or more whose low 7 bits are the rule's score. parse_match_rules takes the first rule all of whose bits are present; $FF at $CB8A ends the table. Rule 7 ($C9DA) needs the bit of the second IS record, which a lookup never returns, so it never fires. The side comments decode each rule: words -> activity numbers (hex), score.","s":"rule 0: EXCUSE/PARDON/HELLO/ATTENTION/HEY -> $34; score 15","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51570,"t":"byte","b":[0,2,52,143,128,128,128,128]},{"a":51578,"s":"rule 1: PLEASE -> no action; score 4","t":"byte","b":[8,0,0,0,0,0,0,0]},{"a":51586,"t":"byte","b":[0,0,132,128,128,128,128,128]},{"a":51594,"s":"rule 2: LIGHT/START/MAKE/BURN/IGNITE + FIRE/FIREPLACE/LOG -> $07; score 4","t":"byte","b":[0,1,0,0,0,4,0,0]},{"a":51602,"t":"byte","b":[0,0,7,132,128,128,128,128]},{"a":51610,"s":"rule 3: YOU + SEEM/LOOK/APPEAR + CHILLY/COLD -> $07; score 2","t":"byte","b":[2,4,0,0,0,8,0,0]},{"a":51618,"t":"byte","b":[0,0,7,130,128,128,128,128]},{"a":51626,"s":"rule 4: PLAY/PERFORM/USE/TRY + FIRE/FIREPLACE/LOG -> $07; score 4","t":"byte","b":[32,0,0,0,0,4,0,0]},{"a":51634,"t":"byte","b":[0,0,7,132,128,128,128,128]},{"a":51642,"s":"rule 5: HEAR/LISTEN/PUT/START(2nd, never found)/SPIN + STEREO/TURNTABLE/MUSIC/RECORD/PLATTER -> $09; score 4","t":"byte","b":[0,8,0,0,0,2,0,0]},{"a":51650,"t":"byte","b":[0,0,9,132,128,128,128,128]},{"a":51658,"s":"rule 6: CLEAN/TIDY/PICK + UP + SHOULD/OUGHT -> $13; score 8","t":"byte","b":[0,96,1,0,0,0,0,0]},{"a":51666,"t":"byte","b":[0,0,19,136,128,128,128,128]},{"a":51674,"s":"rule 7: SLOPPY/MESSY/UNTIDY + IS(2nd, never found) + HOUSE/HOME -> $13; score 2","t":"byte","b":[0,128,0,0,8,0,0,0]},{"a":51682,"t":"byte","b":[8,0,19,130,128,128,128,128]},{"a":51690,"s":"rule 8: PLAY/PERFORM/USE/TRY + PIANO -> $15; score 4","t":"byte","b":[32,0,0,0,0,1,0,0]},{"a":51698,"t":"byte","b":[0,0,21,132,128,128,128,128]},{"a":51706,"s":"rule 9: PLAY/PERFORM/USE/TRY + SONG/TUNE/SONATA/FUGUE/SERENADE/JAZZ/BOOGIE -> $15; score 4","t":"byte","b":[32,0,0,0,0,32,0,0]},{"a":51714,"t":"byte","b":[0,0,21,132,128,128,128,128]},{"a":51722,"s":"rule 10: TICKLE + IVORIES -> $15; score 4","t":"byte","b":[0,0,4,0,0,64,0,0]},{"a":51730,"t":"byte","b":[0,0,21,132,128,128,128,128]},{"a":51738,"s":"rule 11: TYPE/TELL/WRITE/CONFIDE + PROBLEM/PROBLEMS/TROUBLES/MATTER/LETTER/NOTE -> $16; score 8","t":"byte","b":[0,0,8,0,0,16,0,0]},{"a":51746,"t":"byte","b":[0,0,22,136,128,128,128,128]},{"a":51754,"s":"rule 12: LOOKS/IS/SEEMS/APPEARS + PROBLEM/PROBLEMS/TROUBLES/MATTER/LETTER/NOTE -> $16; score 6","t":"byte","b":[0,2,0,0,0,16,0,0]},{"a":51762,"t":"byte","b":[0,0,22,134,128,128,128,128]},{"a":51770,"s":"rule 13: BRUSH/FLOSS + TEETH/HYGIENE -> $1C; score 2","t":"byte","b":[0,0,16,0,0,0,1,0]},{"a":51778,"t":"byte","b":[0,0,28,130,128,128,128,128]},{"a":51786,"s":"rule 14: SLOPPY/MESSY/UNTIDY + TEETH/HYGIENE -> $1C; score 2","t":"byte","b":[0,128,0,0,0,0,1,0]},{"a":51794,"t":"byte","b":[0,0,28,130,128,128,128,128]},{"a":51802,"s":"rule 15: DRINK/IMBIBE + WATER/LIQUID/LIQUIDS/FLUID/FLUIDS -> $1D; score 2","t":"byte","b":[0,0,32,0,0,0,128,0]},{"a":51810,"t":"byte","b":[0,0,29,130,128,128,128,128]},{"a":51818,"s":"rule 16: SEEM/LOOK/APPEAR + GLASS/COOLER -> $1D; score 4","t":"byte","b":[0,4,0,0,0,0,2,0]},{"a":51826,"t":"byte","b":[0,0,29,132,128,128,128,128]},{"a":51834,"s":"rule 17: FEED + DOG/PET/MUTT/POOCH -> $22; score 8","t":"byte","b":[0,0,128,0,0,0,4,0]},{"a":51842,"t":"byte","b":[0,0,34,136,128,128,128,128]},{"a":51850,"s":"rule 18: FILL + BOWL/DISH/CAN -> $22; score 8","t":"byte","b":[0,0,0,1,0,0,8,0]},{"a":51858,"t":"byte","b":[0,0,34,136,128,128,128,128]},{"a":51866,"s":"rule 19: OPEN + BOWL/DISH/CAN -> $22; score 8","t":"byte","b":[0,0,0,2,0,0,8,0]},{"a":51874,"t":"byte","b":[0,0,34,136,128,128,128,128]},{"a":51882,"s":"rule 20: DANCE/MOON/SHOW -> $09, $35; score 2","t":"byte","b":[0,0,0,4,0,0,0,0]},{"a":51890,"t":"byte","b":[0,0,9,53,130,128,128,128]},{"a":51898,"s":"rule 21: TIRED/BORED/APATHETIC + STEREO/TURNTABLE/MUSIC/RECORD/PLATTER -> $26, $79; score 8","t":"byte","b":[0,0,0,16,0,2,0,0]},{"a":51906,"t":"byte","b":[0,0,38,121,136,128,128,128]},{"a":51914,"s":"rule 22: HATE/APATHETIC(2nd, never found)/AWFUL + STEREO/TURNTABLE/MUSIC/RECORD/PLATTER -> $27, $79; score 8","t":"byte","b":[0,0,0,32,0,2,0,0]},{"a":51922,"t":"byte","b":[0,0,39,121,136,128,128,128]},{"a":51930,"s":"rule 23: PLAY/PLAYING + GAME/CARDS/POKER/WAR/CARD/ANAGRAMS/HANGMAN -> $7E; score 8","t":"byte","b":[0,0,0,64,0,0,0,0]},{"a":51938,"t":"byte","b":[16,0,126,136,128,128,128,128]},{"a":51946,"s":"rule 24: ALLERGY/ALLERGIC/FEVER/DUST/POLLEN/HANKY + ADDITION/SUBTRACTION/MULTIPLICATION/DIVISION -> $2A; score 6","t":"byte","b":[64,0,0,0,0,0,0,0]},{"a":51954,"t":"byte","b":[4,0,42,134,128,128,128,128]},{"a":51962,"s":"rule 25: COMPUTER/COMMODORE -> $14; score 6","t":"byte","b":[0,0,0,0,0,0,64,0]},{"a":51970,"t":"byte","b":[0,0,20,134,128,128,128,128]},{"a":51978,"s":"rule 26: WHAT + IN/INSIDE/STORED/KEEP + UPSTAIRS + CLOSET -> $0C, $23; score 6","t":"byte","b":[0,0,0,0,6,0,0,5]},{"a":51986,"t":"byte","b":[0,0,12,35,134,128,128,128]},{"a":51994,"s":"rule 27: WHAT + IN/INSIDE/STORED/KEEP + BEDROOM + CLOSET -> $0D, $27; score 6","t":"byte","b":[0,0,0,0,6,0,0,6]},{"a":52002,"t":"byte","b":[0,0,13,39,134,128,128,128]},{"a":52010,"s":"rule 28: WHAT + IN/INSIDE/STORED/KEEP + KITCHEN + CABINET -> $3C, $3E, $27, $3F; score 6","t":"byte","b":[0,0,0,0,6,0,0,40]},{"a":52018,"t":"byte","b":[0,0,60,62,39,63,134,128]},{"a":52026,"s":"rule 29: WHAT + IN/INSIDE/STORED/KEEP + FILING + CABINET -> $17; score 6","t":"byte","b":[0,0,0,0,6,0,0,48]},{"a":52034,"t":"byte","b":[0,0,23,134,128,128,128,128]},{"a":52042,"s":"rule 30: WHAT + IN/INSIDE/STORED/KEEP + FREEZER -> $40, $44, $27, $45; score 6","t":"byte","b":[0,0,0,0,6,0,0,64]},{"a":52050,"t":"byte","b":[0,0,64,68,39,69,134,128]},{"a":52058,"s":"rule 31: WHAT + IN/INSIDE/STORED/KEEP + REFRIGERATOR/FRIDGE -> $40, $42, $2D, $43; score 6","t":"byte","b":[0,0,0,0,6,0,0,128]},{"a":52066,"t":"byte","b":[0,0,64,66,45,67,134,128]},{"a":52074,"s":"rule 32: WHAT + IN/INSIDE/STORED/KEEP + DRESSER -> $69, $26; score 6","t":"byte","b":[0,0,0,0,6,0,0,0]},{"a":52082,"t":"byte","b":[1,0,105,38,134,128,128,128]},{"a":52090,"s":"rule 33: WHAT + IN/INSIDE/STORED/KEEP + NIGHTSTAND -> $6A, $23; score 6","t":"byte","b":[0,0,0,0,6,0,0,0]},{"a":52098,"t":"byte","b":[2,0,106,35,134,128,128,128]},{"a":52106,"t":"byte","b":[255]},{"a":52107,"l":"unused_cb8b","c":"Unused: 117 zero bytes, $CB8B-$CBFF, between the parser rules and the colour RAM image at $CC00. Loaded with the program and never changed; no instruction reads or writes them.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52115,"c":"Zero byte in the unused stretch $CB8B-$CBFF. Its references ($910B, $8ECC, $ABBF) are bytes of switch tables in other ranges that decode as LDA $CB93,Y / INC / DEC $CB93,X; they are not real accesses.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52123,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52131,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52139,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52147,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52155,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52163,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52171,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52179,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52187,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52195,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52203,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52211,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52219,"t":"byte","b":[0,0,0,0,0]},{"a":52224,"l":"house_colour_ram","c":"The house picture's colour RAM image: 1000 nibbles, 25 rows of 40, for $D800-$DBE7 (the colour of the '11' bit pairs of the multicolour bitmap at $6000); $CFE8-$CFFF are zero. Loaded with the program. The crack's hand-over code (at $4855-$485B in crack-screen.vsf, before the game's first instruction) copies $CC00-$CFFF to $D800-$DBFF, as it copies $4C00-$4FFF to $0400-$07FF. No game code reads it (no absolute operand into $CB8B-$CFFF, no immediate high byte $CC-$CF in the image). The live colour RAM equals it in time-prompt.vsf and play-01.vsf; play-02.vsf differs only at $D8F5 and $D91D, the two cells written at $2D6B and $2D6E.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52280,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52288,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52408,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52416,"t":"byte","b":[0,5,5,0,0,0,0,0]},{"a":52424,"t":"byte","b":[0,0,0,0,1,0,0,0]},{"a":52432,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52448,"t":"byte","b":[0,1,1,1,1,1,1,1]},{"a":52456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52464,"t":"byte","b":[6,0,0,0,0,3,0,0]},{"a":52472,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52480,"t":"byte","b":[1,1,1,1,1,1,0,0]},{"a":52488,"t":"byte","b":[0,4,4,4,4,4,4,4]},{"a":52496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52504,"t":"byte","b":[14,14,14,14,14,14,14,14]},{"a":52512,"t":"byte","b":[14,14,14,14,14,14,14,14]},{"a":52520,"t":"byte","b":[14,0,0,0,0,0,0,0]},{"a":52528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52544,"t":"byte","b":[14,14,14,14,14,14,14,14]},{"a":52552,"t":"byte","b":[14,14,14,14,14,14,14,14]},{"a":52560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52600,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52728,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52824,"t":"byte","b":[0,3,0,0,0,0,2,0]},{"a":52832,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52840,"t":"byte","b":[0,0,0,3,3,1,0,0]},{"a":52848,"t":"byte","b":[0,0,1,3,14,1,0,0]},{"a":52856,"t":"byte","b":[0,0,5,0,0,0,0,0]},{"a":52864,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52880,"t":"byte","b":[0,0,0,3,2,2,2,2]},{"a":52888,"t":"byte","b":[2,2,2,2,2,2,0,0]},{"a":52896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52904,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52936,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52952,"t":"byte","b":[0,14,14,14,0,0,0,0]},{"a":52960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52976,"t":"byte","b":[0,1,1,0,0,0,0,0]},{"a":52984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52992,"t":"byte","b":[0,14,6,6,0,0,0,5]},{"a":53000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53008,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53016,"t":"byte","b":[0,5,0,5,0,0,0,0]},{"a":53024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53032,"t":"byte","b":[0,14,6,0,0,0,0,0]},{"a":53040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53048,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53056,"t":"byte","b":[7,7,7,7,0,0,0,0]},{"a":53064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53128,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53136,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53144,"t":"byte","b":[5,0,3,0,0,0,0,0]},{"a":53152,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53160,"t":"byte","b":[0,3,0,0,2,0,0,0]},{"a":53168,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53176,"t":"byte","b":[0,0,15,0,0,0,0,0]},{"a":53184,"t":"byte","b":[3,2,2,2,2,2,2,2]},{"a":53192,"t":"byte","b":[2,2,2,2,2,2,2,2]},{"a":53200,"t":"byte","b":[2,2,2,2,2,0,0,0]},{"a":53208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53216,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53224,"s":"$CFE8-$CFFF: zero; copied to the unused colour RAM $DBE8-$DBFF","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53248,"l":"snd_event","c":"Sound driver (the one ticked from the raster IRQ through $B003), one event. RAM under the I/O area: entered by JMP $D000 from $B635 with $01 = $34. (Instructions elsewhere that name $D000-$D02E with I/O in, such as the sprite code at $048A and $076F, reach the VIC, not this code.) A = the event byte (never 0), X = channel*2 ($6C, 0-10), $75/$76+X = the channel's sequence pointer, advanced here past the byte, which is also kept in $B026+X. $10 and $50-$FF are notes (snd_note, via the JMP at $D043). $01-$4F are commands: the byte goes to $B150, $30-$3F and $40-$4F are folded to $30 and $31, and the handler address from snd_commands ($D700 + 2n) is stored in snd_cmd_handler ($D041); snd_dispatch then jumps to it with ($81) at the operand bytes, X = the voice's SID shadow offset ($70) and Y = 0.","t":"code","b":[246,117],"m":"inc","o":"mus_stream_ptrs,x","oa":117,"x":[46645]},{"a":53250,"t":"code","b":[208,2],"m":"bne","o":"$D006","oa":53254},{"a":53252,"t":"code","b":[246,118],"m":"inc","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53254,"t":"code","b":[157,38,176],"m":"sta","o":"snd_last_cmd,x","oa":45094,"x":[53250]},{"a":53257,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":53259,"t":"code","b":[201,16],"m":"cmp","o":"#$10"},{"a":53261,"t":"code","b":[240,52],"m":"beq","o":"b_D043","oa":53315},{"a":53263,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":53265,"t":"code","b":[176,48],"m":"bcs","o":"b_D043","oa":53315},{"a":53267,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":53270,"t":"code","b":[201,48],"m":"cmp","o":"#$30"},{"a":53272,"t":"code","b":[144,10],"m":"bcc","o":"$D024","oa":53284},{"a":53274,"t":"code","b":[201,64],"m":"cmp","o":"#$40"},{"a":53276,"t":"code","b":[144,4],"m":"bcc","o":"$D022","oa":53282},{"a":53278,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":53280,"t":"code","b":[208,2],"m":"bne","o":"$D024","oa":53284},{"a":53282,"t":"code","b":[169,48],"m":"lda","o":"#$30","x":[53276]},{"a":53284,"t":"code","b":[10],"m":"asl","o":"a","x":[53272,53280]},{"a":53285,"t":"code","b":[170],"m":"tax"},{"a":53286,"s":"handler address from snd_commands ($D026-$D031 is RAM, not the VIC)","t":"code","b":[189,0,215],"m":"lda","o":"snd_commands,x","oa":55040},{"a":53289,"t":"code","b":[141,65,208],"m":"sta","o":"snd_cmd_handler","oa":53313},{"a":53292,"t":"code","b":[189,1,215],"m":"lda","o":"snd_commands_hi,x","oa":55041},{"a":53295,"t":"code","b":[141,66,208],"m":"sta","o":"snd_cmd_handler_hi","oa":53314},{"a":53298,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":53300,"t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117},{"a":53302,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":53304,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53306,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":53308,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":53310,"t":"code","b":[76,130,208],"m":"jmp","o":"j_D082","oa":53378},{"a":53313,"l":"snd_cmd_handler","c":"Command handler address (low, high), written by snd_event from snd_commands and copied by snd_dispatch into the operand of the JMP at $B376. Zero in crack-screen.vsf; $D57C in time-prompt.vsf, $D4F3 in play-01.vsf and $D3C5 in play-02.vsf.","t":"byte","b":[197],"x":[53289,54089,54096]},{"a":53314,"l":"snd_cmd_handler_hi","c":"High byte of snd_cmd_handler ($D041): written at $D02F, copied to $B378 by snd_dispatch.","t":"byte","b":[211],"x":[53295]},{"a":53315,"l":"b_D043","c":"JMP $D046, a jump to the next instruction: where snd_event sends notes ($D00D, $D011) and commands $30-$3F send their slot's note ($D428).","t":"code","b":[76,70,208],"m":"jmp","o":"snd_note","oa":53318,"x":[53261,53265]},{"a":53318,"l":"snd_note","c":"Note event: A = the note byte, kept in $6E. For $10 and $50-$8F the frequency is the word at $B641+note (the note byte is a byte offset; $10 reads zero there, a rest). For $90-$FF, bits 7-3 pick a word from $B661 (index (note>>4)*2, +$20 when bit 3 is set) and the value is halved 7-(note AND 7) times, so bits 2-0 are the octave. The frequency goes to the voice's shadow $B031/$B032+X, then snd_duration reads the length.","t":"code","b":[133,110],"m":"sta","o":"mus_tmp2","oa":110,"x":[53315,54312]},{"a":53320,"t":"code","b":[168],"m":"tay"},{"a":53321,"t":"code","b":[185,65,182],"m":"lda","o":"snd_freq_direct,y","oa":46657},{"a":53324,"t":"code","b":[133,107],"m":"sta","o":"mus_tmp0","oa":107},{"a":53326,"t":"code","b":[185,66,182],"m":"lda","o":"snd_freq_direct_hi,y","oa":46658},{"a":53329,"t":"code","b":[133,109],"m":"sta","o":"mus_tmp1","oa":109},{"a":53331,"t":"code","b":[152],"m":"tya"},{"a":53332,"t":"code","b":[201,144],"m":"cmp","o":"#$90"},{"a":53334,"t":"code","b":[176,3],"m":"bcs","o":"b_D05B","oa":53339},{"a":53336,"t":"code","b":[76,133,208],"m":"jmp","o":"j_D085","oa":53381},{"a":53339,"l":"b_D05B","t":"code","b":[74],"m":"lsr","o":"a","x":[53334]},{"a":53340,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53341,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53342,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53343,"t":"code","b":[8],"m":"php"},{"a":53344,"t":"code","b":[10],"m":"asl","o":"a"},{"a":53345,"t":"code","b":[40],"m":"plp"},{"a":53346,"t":"code","b":[144,2],"m":"bcc","o":"b_D066","oa":53350},{"a":53348,"t":"code","b":[9,32],"m":"ora","o":"#$20"},{"a":53350,"l":"b_D066","t":"code","b":[168],"m":"tay","x":[53346]},{"a":53351,"t":"code","b":[185,97,182],"m":"lda","o":"snd_freq_octave,y","oa":46689},{"a":53354,"t":"code","b":[133,107],"m":"sta","o":"mus_tmp0","oa":107},{"a":53356,"t":"code","b":[185,98,182],"m":"lda","o":"snd_freq_octave_hi,y","oa":46690},{"a":53359,"t":"code","b":[133,109],"m":"sta","o":"mus_tmp1","oa":109},{"a":53361,"t":"code","b":[165,110],"m":"lda","o":"mus_tmp2","oa":110},{"a":53363,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":53365,"t":"code","b":[168],"m":"tay"},{"a":53366,"l":"j_D076","t":"code","b":[200],"m":"iny","x":[53375]},{"a":53367,"t":"code","b":[192,8],"m":"cpy","o":"#$08"},{"a":53369,"t":"code","b":[240,10],"m":"beq","o":"j_D085","oa":53381},{"a":53371,"t":"code","b":[70,109],"m":"lsr","o":"mus_tmp1","oa":109},{"a":53373,"t":"code","b":[102,107],"m":"ror","o":"mus_tmp0","oa":107},{"a":53375,"t":"code","b":[76,118,208],"m":"jmp","o":"j_D076","oa":53366},{"a":53378,"l":"j_D082","t":"code","b":[76,62,211],"m":"jmp","o":"snd_dispatch","oa":54078,"x":[53310]},{"a":53381,"l":"j_D085","t":"code","b":[165,107],"m":"lda","o":"mus_tmp0","oa":107,"x":[53336,53369]},{"a":53383,"t":"code","b":[157,49,176],"m":"sta","o":"snd_regs,x","oa":45105},{"a":53386,"t":"code","b":[165,109],"m":"lda","o":"mus_tmp1","oa":109},{"a":53388,"t":"code","b":[157,50,176],"m":"sta","o":"snd_regs_freq_hi,x","oa":45106},{"a":53391,"l":"snd_duration","c":"Reads a note's length: the next sequence byte is an offset into the byte pairs at $B726: the first goes to $B019+channel*2, the ticks the note sounds with the gate on, the second to $B01A+channel*2, the ticks counted afterwards with the gate off ($B56A-$B590); then the next event is read. Sets the gate bit in the shadow control byte $B035+X and goes on to the next channel ($B554). Also the tail of the slide commands $08, $09 and $15-$1B.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[45820,45829,45880,46234,46243,46255,54379,54385]},{"a":53393,"t":"code","b":[134,112],"m":"stx","o":"mus_rec","oa":112},{"a":53395,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":53397,"t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117},{"a":53399,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":53401,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53403,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":53405,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53407,"t":"code","b":[246,117],"m":"inc","o":"mus_stream_ptrs,x","oa":117},{"a":53409,"t":"code","b":[208,2],"m":"bne","o":"b_D0A5","oa":53413},{"a":53411,"t":"code","b":[246,118],"m":"inc","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53413,"l":"b_D0A5","t":"code","b":[168],"m":"tay","x":[53409]},{"a":53414,"t":"code","b":[185,38,183],"m":"lda","o":"snd_durations,y","oa":46886},{"a":53417,"t":"code","b":[157,25,176],"m":"sta","o":"snd_note_on,x","oa":45081},{"a":53420,"t":"code","b":[185,39,183],"m":"lda","o":"snd_durations_off,y","oa":46887},{"a":53423,"t":"code","b":[157,26,176],"m":"sta","o":"snd_note_off,x","oa":45082},{"a":53426,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":53428,"t":"code","b":[189,53,176],"m":"lda","o":"snd_regs_control,x","oa":45109},{"a":53431,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":53433,"t":"code","b":[157,53,176],"m":"sta","o":"snd_regs_control,x","oa":45109},{"a":53436,"t":"code","b":[76,84,181],"m":"jmp","o":"j_B554","oa":46420},{"a":53439,"l":"snd_cmd_sound","c":"Command $03 n: start sound n on the channel set of this channel: channels with shadow offset below $15 use $B255 (channels 0-2), the others fall into snd_cmd_sound_2. Jumps to $B4F8, which calls $B255 and then restarts the tick at $B4FB. The pointer is not advanced past n.","t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53441,"t":"code","b":[224,21],"m":"cpx","o":"#$15"},{"a":53443,"t":"code","b":[176,6],"m":"bcs","o":"b_D0CB","oa":53451},{"a":53445,"t":"code","b":[170],"m":"tax"},{"a":53446,"t":"code","b":[76,248,180],"m":"jmp","o":"snd_start_a_restart","oa":46328},{"a":53449,"l":"snd_cmd_sound_2","c":"Command $05 n: start sound n on the second channel set (channels 3-5) through $B4F2, which calls $B268 and then restarts the tick at $B4FB. The pointer is not advanced past n.","t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53451,"l":"b_D0CB","t":"code","b":[170],"m":"tax","x":[53443]},{"a":53452,"t":"code","b":[76,242,180],"m":"jmp","o":"snd_start_b_restart","oa":46322},{"a":53455,"l":"snd_cmd_jump","c":"Command $01 lo hi: jump: the channel's sequence pointer $75/$76+channel*2 is set to the inline address.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":53457,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53459,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":53461,"t":"code","b":[200],"m":"iny"},{"a":53462,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53464,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53466,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":53469,"l":"snd_pattern_begin","c":"Start of a pattern or of a subsequence (after commands $04, $0A and $20): the first byte at the channel's new pointer is an instrument offset, applied by $B311 (five bytes from snd_instruments into the shadow $B033-$B037+X); then the channel is processed again ($B55D).","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[53554,54210,54446]},{"a":53471,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":53473,"t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117},{"a":53475,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":53477,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53479,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":53481,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":53483,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53485,"t":"code","b":[32,17,179],"m":"jsr","o":"snd_set_instrument","oa":45841},{"a":53488,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":53491,"l":"snd_cmd_loop","c":"Command $02 count lo hi: loop. First time ($B069+channel*2 = 0): marks the loop active, stores the count in $B06A+channel*2 and jumps to the address. Later: while the count is not 0 it is decremented and the jump taken again; at 0 the loop is cleared and the three operand bytes skipped. So the section is played count+1 times.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":53493,"t":"code","b":[189,105,176],"m":"lda","o":"snd_loop1_active,x","oa":45161},{"a":53496,"t":"code","b":[240,59],"m":"beq","o":"b_D135","oa":53557},{"a":53498,"t":"code","b":[189,106,176],"m":"lda","o":"snd_loop1_count,x","oa":45162},{"a":53501,"t":"code","b":[240,6],"m":"beq","o":"b_D105","oa":53509},{"a":53503,"t":"code","b":[222,106,176],"m":"dec","o":"snd_loop1_count,x","oa":45162},{"a":53506,"t":"code","b":[76,61,209],"m":"jmp","o":"j_D13D","oa":53565},{"a":53509,"l":"b_D105","t":"code","b":[157,105,176],"m":"sta","o":"snd_loop1_active,x","oa":45161,"x":[53501]},{"a":53512,"t":"code","b":[76,76,209],"m":"jmp","o":"j_D14C","oa":53580},{"a":53515,"l":"snd_cmd_call","c":"Command $04 n: call pattern n. Saves the voice's seven shadow bytes $B031-$B037+X in $B08D+X and the return address (after n) in $B081/$B082+channel*2, looks the pattern up (snd_pattern_lookup) and starts it at snd_pattern_begin. The pattern ends with a 0 byte, where $B5CD restores the pointer and the seven shadow bytes.","t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":53517,"l":"b_D10D","t":"code","b":[189,49,176],"m":"lda","o":"snd_regs,x","oa":45105,"x":[53525]},{"a":53520,"t":"code","b":[157,141,176],"m":"sta","o":"snd_saved_regs,x","oa":45197},{"a":53523,"t":"code","b":[232],"m":"inx"},{"a":53524,"t":"code","b":[136],"m":"dey"},{"a":53525,"t":"code","b":[208,246],"m":"bne","o":"b_D10D","oa":53517},{"a":53527,"t":"code","b":[32,39,213],"m":"jsr","o":"snd_pattern_lookup","oa":54567},{"a":53530,"t":"code","b":[157,129,176],"m":"sta","o":"snd_return_lo,x","oa":45185},{"a":53533,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53535,"t":"code","b":[157,130,176],"m":"sta","o":"snd_return_hi,x","oa":45186},{"a":53538,"t":"code","b":[254,129,176],"m":"inc","o":"snd_return_lo,x","oa":45185},{"a":53541,"t":"code","b":[208,3],"m":"bne","o":"b_D12A","oa":53546},{"a":53543,"t":"code","b":[254,130,176],"m":"inc","o":"snd_return_hi,x","oa":45186},{"a":53546,"l":"b_D12A","t":"code","b":[165,115],"m":"lda","o":"mus_pattern","oa":115,"x":[53541]},{"a":53548,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":53550,"t":"code","b":[165,116],"m":"lda","o":"mus_pattern_hi","oa":116},{"a":53552,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53554,"t":"code","b":[76,221,208],"m":"jmp","o":"snd_pattern_begin","oa":53469},{"a":53557,"l":"b_D135","t":"code","b":[254,105,176],"m":"inc","o":"snd_loop1_active,x","oa":45161,"x":[53496]},{"a":53560,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53562,"t":"code","b":[157,106,176],"m":"sta","o":"snd_loop1_count,x","oa":45162},{"a":53565,"l":"j_D13D","t":"code","b":[200],"m":"iny","x":[53506]},{"a":53566,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53568,"t":"code","b":[72],"m":"pha"},{"a":53569,"t":"code","b":[200],"m":"iny"},{"a":53570,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53572,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53574,"t":"code","b":[104],"m":"pla"},{"a":53575,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":53577,"t":"code","b":[76,87,209],"m":"jmp","o":"j_D157","oa":53591},{"a":53580,"l":"j_D14C","t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117,"x":[53512]},{"a":53582,"t":"code","b":[24],"m":"clc"},{"a":53583,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":53585,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":53587,"t":"code","b":[144,2],"m":"bcc","o":"j_D157","oa":53591},{"a":53589,"t":"code","b":[246,118],"m":"inc","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53591,"l":"j_D157","t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429,"x":[53577,53587]},{"a":53594,"l":"snd_read_filter_step","c":"Reads two operand bytes (low, high) as a filter-cutoff step for command $11 ($B249) and $1C, $1D, $1F: the low 11 bits, split like the SID cutoff registers: bits 0-2 to $B15C+channel*2 (with bits 3-7 set), bits 3-10 to $B15D+channel*2; the pointer moves on by 2. snd_filter_step adds the step.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[45641,45883,46100,46112]},{"a":53596,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":53598,"t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117},{"a":53600,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":53602,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53604,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":53606,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53608,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":53611,"t":"code","b":[141,83,177],"m":"sta","o":"snd_temp_sweep","oa":45395},{"a":53614,"t":"code","b":[200],"m":"iny"},{"a":53615,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53617,"t":"code","b":[14,80,177],"m":"asl","o":"snd_temp_y","oa":45392},{"a":53620,"t":"code","b":[42],"m":"rol","o":"a"},{"a":53621,"t":"code","b":[14,80,177],"m":"asl","o":"snd_temp_y","oa":45392},{"a":53624,"t":"code","b":[42],"m":"rol","o":"a"},{"a":53625,"t":"code","b":[14,80,177],"m":"asl","o":"snd_temp_y","oa":45392},{"a":53628,"t":"code","b":[42],"m":"rol","o":"a"},{"a":53629,"t":"code","b":[14,80,177],"m":"asl","o":"snd_temp_y","oa":45392},{"a":53632,"t":"code","b":[42],"m":"rol","o":"a"},{"a":53633,"t":"code","b":[14,80,177],"m":"asl","o":"snd_temp_y","oa":45392},{"a":53636,"t":"code","b":[42],"m":"rol","o":"a"},{"a":53637,"t":"code","b":[157,93,177],"m":"sta","o":"snd_fsweep_hi,x","oa":45405},{"a":53640,"t":"code","b":[173,83,177],"m":"lda","o":"snd_temp_sweep","oa":45395},{"a":53643,"t":"code","b":[9,248],"m":"ora","o":"#$F8"},{"a":53645,"t":"code","b":[157,92,177],"m":"sta","o":"snd_fsweep_lo,x","oa":45404},{"a":53648,"t":"code","b":[165,129],"m":"lda","o":"mus_read_ptr","oa":129},{"a":53650,"t":"code","b":[24],"m":"clc"},{"a":53651,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":53653,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":53655,"t":"code","b":[144,2],"m":"bcc","o":"b_D19B","oa":53659},{"a":53657,"t":"code","b":[230,130],"m":"inc","o":"mus_read_ptr_hi","oa":130},{"a":53659,"l":"b_D19B","t":"code","b":[165,130],"m":"lda","o":"mus_read_ptr_hi","oa":130,"x":[53655]},{"a":53661,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53663,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":53665,"t":"code","b":[96],"m":"rts"},{"a":53666,"l":"snd_read_pw_step","c":"Reads two operand bytes (low, high) into the channel's pulse-width step $B168/$B169+channel*2 for command $13 ($B25C) and $1C, $1E, $1F; the pointer moves on by 2. snd_pw_step adds the step.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[45660,45886,45892,46103]},{"a":53668,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":53670,"t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117},{"a":53672,"t":"code","b":[133,129],"m":"sta","o":"mus_read_ptr","oa":129},{"a":53674,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53676,"t":"code","b":[133,130],"m":"sta","o":"mus_read_ptr_hi","oa":130},{"a":53678,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53680,"t":"code","b":[157,104,177],"m":"sta","o":"snd_psweep_lo,x","oa":45416},{"a":53683,"t":"code","b":[200],"m":"iny"},{"a":53684,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":53686,"t":"code","b":[157,105,177],"m":"sta","o":"snd_psweep_hi,x","oa":45417},{"a":53689,"t":"code","b":[165,129],"m":"lda","o":"mus_read_ptr","oa":129},{"a":53691,"t":"code","b":[24],"m":"clc"},{"a":53692,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":53694,"t":"code","b":[144,2],"m":"bcc","o":"b_D1C2","oa":53698},{"a":53696,"t":"code","b":[230,130],"m":"inc","o":"mus_read_ptr_hi","oa":130},{"a":53698,"l":"b_D1C2","t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117,"x":[53694]},{"a":53700,"t":"code","b":[165,130],"m":"lda","o":"mus_read_ptr_hi","oa":130},{"a":53702,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":53704,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":53706,"t":"code","b":[96],"m":"rts"},{"a":53707,"l":"snd_slide_down","c":"Frequency slide down one step (snd_slide_up at $D1CF is the same with $85 = 1: up). The step is the channel's $B0C4/$B0C5+channel*2: $FFFF (set by command $07) means one eighth of the current frequency, computed and stored the first time; bit 7 of the high byte forces a downward step of the low 15 bits. Otherwise, one time in 16 (when $B0D0 AND $0F is 0) the step is halved and stored back, never below 1. The step is subtracted from or added to the shadow frequency $B031/$B032+X. Returns Y = 0.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[45817,46231,46252,54376]},{"a":53709,"t":"code","b":[240,2],"m":"beq","o":"b_D1D1","oa":53713},{"a":53711,"l":"snd_slide_up","c":"Entry of snd_slide_down ($D1CB) that slides the frequency up: sets $85 = 1 and continues at $D1D1.","t":"code","b":[169,1],"m":"lda","o":"#$01","x":[45826,45877,46240,54382]},{"a":53713,"l":"b_D1D1","t":"code","b":[133,133],"m":"sta","o":"mus_slide_up","oa":133,"x":[53709]},{"a":53715,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":53717,"t":"code","b":[164,108],"m":"ldy","o":"mus_channel","oa":108},{"a":53719,"t":"code","b":[185,196,176],"m":"lda","o":"snd_slide_lo,y","oa":45252},{"a":53722,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":53724,"t":"code","b":[208,5],"m":"bne","o":"b_D1E3","oa":53731},{"a":53726,"t":"code","b":[217,197,176],"m":"cmp","o":"snd_slide_hi,y","oa":45253},{"a":53729,"t":"code","b":[240,27],"m":"beq","o":"b_D1FE","oa":53758},{"a":53731,"l":"b_D1E3","t":"code","b":[133,110],"m":"sta","o":"mus_tmp2","oa":110,"x":[53724]},{"a":53733,"t":"code","b":[185,197,176],"m":"lda","o":"snd_slide_hi,y","oa":45253},{"a":53736,"t":"code","b":[16,6],"m":"bpl","o":"b_D1F0","oa":53744},{"a":53738,"t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":53740,"t":"code","b":[133,113],"m":"sta","o":"mus_tmp3","oa":113},{"a":53742,"t":"code","b":[16,53],"m":"bpl","o":"b_D225","oa":53797},{"a":53744,"l":"b_D1F0","t":"code","b":[173,208,176],"m":"lda","o":"snd_frame_count","oa":45264,"x":[53736]},{"a":53747,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":53749,"t":"code","b":[8],"m":"php"},{"a":53750,"t":"code","b":[185,197,176],"m":"lda","o":"snd_slide_hi,y","oa":45253},{"a":53753,"t":"code","b":[40],"m":"plp"},{"a":53754,"t":"code","b":[240,16],"m":"beq","o":"b_D20C","oa":53772},{"a":53756,"t":"code","b":[208,17],"m":"bne","o":"b_D20F","oa":53775},{"a":53758,"l":"b_D1FE","t":"code","b":[189,49,176],"m":"lda","o":"snd_regs,x","oa":45105,"x":[53729]},{"a":53761,"t":"code","b":[133,110],"m":"sta","o":"mus_tmp2","oa":110},{"a":53763,"t":"code","b":[189,50,176],"m":"lda","o":"snd_regs_freq_hi,x","oa":45106},{"a":53766,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53767,"t":"code","b":[102,110],"m":"ror","o":"mus_tmp2","oa":110},{"a":53769,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53770,"t":"code","b":[102,110],"m":"ror","o":"mus_tmp2","oa":110},{"a":53772,"l":"b_D20C","t":"code","b":[74],"m":"lsr","o":"a","x":[53754]},{"a":53773,"t":"code","b":[102,110],"m":"ror","o":"mus_tmp2","oa":110},{"a":53775,"l":"b_D20F","t":"code","b":[133,113],"m":"sta","o":"mus_tmp3","oa":113,"x":[53756]},{"a":53777,"t":"code","b":[153,197,176],"m":"sta","o":"snd_slide_hi,y","oa":45253},{"a":53780,"t":"code","b":[5,110],"m":"ora","o":"mus_tmp2","oa":110},{"a":53782,"t":"code","b":[208,4],"m":"bne","o":"b_D21C","oa":53788},{"a":53784,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":53786,"t":"code","b":[133,110],"m":"sta","o":"mus_tmp2","oa":110},{"a":53788,"l":"b_D21C","t":"code","b":[165,110],"m":"lda","o":"mus_tmp2","oa":110,"x":[53782]},{"a":53790,"t":"code","b":[153,196,176],"m":"sta","o":"snd_slide_lo,y","oa":45252},{"a":53793,"t":"code","b":[165,133],"m":"lda","o":"mus_slide_up","oa":133},{"a":53795,"t":"code","b":[208,26],"m":"bne","o":"b_D23F","oa":53823},{"a":53797,"l":"b_D225","t":"code","b":[189,49,176],"m":"lda","o":"snd_regs,x","oa":45105,"x":[53742]},{"a":53800,"t":"code","b":[56],"m":"sec"},{"a":53801,"t":"code","b":[229,110],"m":"sbc","o":"mus_tmp2","oa":110},{"a":53803,"t":"code","b":[157,49,176],"m":"sta","o":"snd_regs,x","oa":45105},{"a":53806,"t":"code","b":[176,3],"m":"bcs","o":"b_D233","oa":53811},{"a":53808,"t":"code","b":[222,50,176],"m":"dec","o":"snd_regs_freq_hi,x","oa":45106},{"a":53811,"l":"b_D233","t":"code","b":[189,50,176],"m":"lda","o":"snd_regs_freq_hi,x","oa":45106,"x":[53806]},{"a":53814,"t":"code","b":[56],"m":"sec"},{"a":53815,"t":"code","b":[229,113],"m":"sbc","o":"mus_tmp3","oa":113},{"a":53817,"t":"code","b":[157,50,176],"m":"sta","o":"snd_regs_freq_hi,x","oa":45106},{"a":53820,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":53822,"t":"code","b":[96],"m":"rts"},{"a":53823,"l":"b_D23F","t":"code","b":[189,49,176],"m":"lda","o":"snd_regs,x","oa":45105,"x":[53795]},{"a":53826,"t":"code","b":[24],"m":"clc"},{"a":53827,"t":"code","b":[101,110],"m":"adc","o":"mus_tmp2","oa":110},{"a":53829,"t":"code","b":[157,49,176],"m":"sta","o":"snd_regs,x","oa":45105},{"a":53832,"t":"code","b":[144,2],"m":"bcc","o":"b_D24C","oa":53836},{"a":53834,"t":"code","b":[230,113],"m":"inc","o":"mus_tmp3","oa":113},{"a":53836,"l":"b_D24C","t":"code","b":[189,50,176],"m":"lda","o":"snd_regs_freq_hi,x","oa":45106,"x":[53832]},{"a":53839,"t":"code","b":[24],"m":"clc"},{"a":53840,"t":"code","b":[101,113],"m":"adc","o":"mus_tmp3","oa":113},{"a":53842,"t":"code","b":[157,50,176],"m":"sta","o":"snd_regs_freq_hi,x","oa":45106},{"a":53845,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":53847,"t":"code","b":[96],"m":"rts"},{"a":53848,"l":"snd_filter_step","c":"Filter sweep step (command $12 via $B24F, and commands $17-$1B): adds the channel's step $B15C/$B15D+channel*2 to the filter cutoff shadow of its layer ($B05B/$B05C for channels 0-2, $B062/$B063 for 3-5). If the result crosses the top or bottom of the range (sign test) the step is negated and nothing is stored; otherwise the new cutoff is stored with bit 7 of the low byte set, the flag that makes $B46A write the filter registers.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108,"x":[45647,45835,45871,46228,46237,46246]},{"a":53850,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":53852,"t":"code","b":[224,6],"m":"cpx","o":"#$06"},{"a":53854,"t":"code","b":[144,2],"m":"bcc","o":"b_D262","oa":53858},{"a":53856,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":53858,"l":"b_D262","t":"code","b":[189,92,177],"m":"lda","o":"snd_fsweep_lo,x","oa":45404,"x":[53854]},{"a":53861,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":53863,"t":"code","b":[157,92,177],"m":"sta","o":"snd_fsweep_lo,x","oa":45404},{"a":53866,"t":"code","b":[185,91,176],"m":"lda","o":"snd_filter_a,y","oa":45147},{"a":53869,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":53871,"t":"code","b":[153,91,176],"m":"sta","o":"snd_filter_a,y","oa":45147},{"a":53874,"t":"code","b":[24],"m":"clc"},{"a":53875,"t":"code","b":[125,92,177],"m":"adc","o":"snd_fsweep_lo,x","oa":45404},{"a":53878,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":53881,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53882,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53883,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53884,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53885,"t":"code","b":[185,92,176],"m":"lda","o":"snd_filter_a_cut_hi,y","oa":45148},{"a":53888,"t":"code","b":[125,93,177],"m":"adc","o":"snd_fsweep_hi,x","oa":45405},{"a":53891,"t":"code","b":[141,81,177],"m":"sta","o":"snd_temp_x","oa":45393},{"a":53894,"t":"code","b":[106],"m":"ror","o":"a"},{"a":53895,"t":"code","b":[93,93,177],"m":"eor","o":"snd_fsweep_hi,x","oa":45405},{"a":53898,"t":"code","b":[48,15],"m":"bmi","o":"b_D29B","oa":53915},{"a":53900,"t":"code","b":[173,81,177],"m":"lda","o":"snd_temp_x","oa":45393},{"a":53903,"t":"code","b":[153,92,176],"m":"sta","o":"snd_filter_a_cut_hi,y","oa":45148},{"a":53906,"t":"code","b":[173,80,177],"m":"lda","o":"snd_temp_y","oa":45392},{"a":53909,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":53911,"t":"code","b":[153,91,176],"m":"sta","o":"snd_filter_a,y","oa":45147},{"a":53914,"t":"code","b":[96],"m":"rts"},{"a":53915,"l":"b_D29B","t":"code","b":[56],"m":"sec","x":[53898]},{"a":53916,"t":"code","b":[189,92,177],"m":"lda","o":"snd_fsweep_lo,x","oa":45404},{"a":53919,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":53921,"t":"code","b":[9,248],"m":"ora","o":"#$F8"},{"a":53923,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":53925,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":53927,"t":"code","b":[157,92,177],"m":"sta","o":"snd_fsweep_lo,x","oa":45404},{"a":53930,"t":"code","b":[189,93,177],"m":"lda","o":"snd_fsweep_hi,x","oa":45405},{"a":53933,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":53935,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":53937,"t":"code","b":[157,93,177],"m":"sta","o":"snd_fsweep_hi,x","oa":45405},{"a":53940,"t":"code","b":[96],"m":"rts"},{"a":53941,"l":"snd_pw_step","c":"Pulse-width sweep step (command $14 via $B262, and $15-$17, $1A, $1B): adds the channel's step $B168/$B169+channel*2 to the pulse width shadow $B033/$B034+X (12 bits). While the width's high nibble is 6-9 the step is taken 1.5 times. If the sum leaves the 12-bit range the step is negated and nothing is stored.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108,"x":[45666,45814,45823,45832,45874,46249]},{"a":53943,"t":"code","b":[164,112],"m":"ldy","o":"mus_rec","oa":112},{"a":53945,"t":"code","b":[189,104,177],"m":"lda","o":"snd_psweep_lo,x","oa":45416},{"a":53948,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":53951,"t":"code","b":[189,105,177],"m":"lda","o":"snd_psweep_hi,x","oa":45417},{"a":53954,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":53956,"t":"code","b":[157,105,177],"m":"sta","o":"snd_psweep_hi,x","oa":45417},{"a":53959,"t":"code","b":[141,81,177],"m":"sta","o":"snd_temp_x","oa":45393},{"a":53962,"t":"code","b":[185,52,176],"m":"lda","o":"snd_regs_pulse_hi,y","oa":45108},{"a":53965,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":53967,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":53969,"t":"code","b":[144,33],"m":"bcc","o":"b_D2F4","oa":54004},{"a":53971,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":53973,"t":"code","b":[176,29],"m":"bcs","o":"b_D2F4","oa":54004},{"a":53975,"t":"code","b":[189,105,177],"m":"lda","o":"snd_psweep_hi,x","oa":45417},{"a":53978,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":53979,"t":"code","b":[141,81,177],"m":"sta","o":"snd_temp_x","oa":45393},{"a":53982,"t":"code","b":[189,104,177],"m":"lda","o":"snd_psweep_lo,x","oa":45416},{"a":53985,"t":"code","b":[106],"m":"ror","o":"a"},{"a":53986,"t":"code","b":[24],"m":"clc"},{"a":53987,"t":"code","b":[125,104,177],"m":"adc","o":"snd_psweep_lo,x","oa":45416},{"a":53990,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":53993,"t":"code","b":[173,81,177],"m":"lda","o":"snd_temp_x","oa":45393},{"a":53996,"t":"code","b":[125,105,177],"m":"adc","o":"snd_psweep_hi,x","oa":45417},{"a":53999,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":54001,"t":"code","b":[141,81,177],"m":"sta","o":"snd_temp_x","oa":45393},{"a":54004,"l":"b_D2F4","t":"code","b":[185,51,176],"m":"lda","o":"snd_regs_pulse_lo,y","oa":45107,"x":[53969,53973]},{"a":54007,"t":"code","b":[24],"m":"clc"},{"a":54008,"t":"code","b":[109,80,177],"m":"adc","o":"snd_temp_y","oa":45392},{"a":54011,"t":"code","b":[141,82,177],"m":"sta","o":"snd_temp_pulse","oa":45394},{"a":54014,"t":"code","b":[185,52,176],"m":"lda","o":"snd_regs_pulse_hi,y","oa":45108},{"a":54017,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":54019,"t":"code","b":[109,81,177],"m":"adc","o":"snd_temp_x","oa":45393},{"a":54022,"t":"code","b":[141,83,177],"m":"sta","o":"snd_temp_sweep","oa":45395},{"a":54025,"t":"code","b":[173,81,177],"m":"lda","o":"snd_temp_x","oa":45393},{"a":54028,"t":"code","b":[10],"m":"asl","o":"a"},{"a":54029,"t":"code","b":[77,83,177],"m":"eor","o":"snd_temp_sweep","oa":45395},{"a":54032,"t":"code","b":[41,16],"m":"and","o":"#$10"},{"a":54034,"t":"code","b":[240,29],"m":"beq","o":"b_D331","oa":54065},{"a":54036,"t":"code","b":[189,104,177],"m":"lda","o":"snd_psweep_lo,x","oa":45416},{"a":54039,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":54041,"t":"code","b":[157,104,177],"m":"sta","o":"snd_psweep_lo,x","oa":45416},{"a":54044,"t":"code","b":[254,104,177],"m":"inc","o":"snd_psweep_lo,x","oa":45416},{"a":54047,"t":"code","b":[8],"m":"php"},{"a":54048,"t":"code","b":[189,105,177],"m":"lda","o":"snd_psweep_hi,x","oa":45417},{"a":54051,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":54053,"t":"code","b":[157,105,177],"m":"sta","o":"snd_psweep_hi,x","oa":45417},{"a":54056,"t":"code","b":[40],"m":"plp"},{"a":54057,"t":"code","b":[208,18],"m":"bne","o":"r_D33D","oa":54077},{"a":54059,"t":"code","b":[254,105,177],"m":"inc","o":"snd_psweep_hi,x","oa":45417},{"a":54062,"t":"code","b":[76,61,211],"m":"jmp","o":"r_D33D","oa":54077},{"a":54065,"l":"b_D331","t":"code","b":[173,82,177],"m":"lda","o":"snd_temp_pulse","oa":45394,"x":[54034]},{"a":54068,"t":"code","b":[153,51,176],"m":"sta","o":"snd_regs_pulse_lo,y","oa":45107},{"a":54071,"t":"code","b":[173,83,177],"m":"lda","o":"snd_temp_sweep","oa":45395},{"a":54074,"t":"code","b":[153,52,176],"m":"sta","o":"snd_regs_pulse_hi,y","oa":45108},{"a":54077,"l":"r_D33D","t":"code","b":[96],"m":"rts","x":[54057,54062]},{"a":54078,"l":"snd_dispatch","c":"Jumps to the command handler: copies snd_cmd_handler ($D041/$D042) into the operand of the JMP at $B376 and jumps there. (It first copies $B05C/$B05D over the same two bytes, which the next copy overwrites.) Every command event also decrements $B017; when that reaches 0 the jump goes through $B371, which increments $B0D1 and, when that wraps to 0, runs $B379 instead of the handler.","t":"code","b":[160,2],"m":"ldy","o":"#$02","x":[53378]},{"a":54080,"l":"b_D340","t":"code","b":[185,91,176],"m":"lda","o":"snd_filter_a,y","oa":45147,"x":[54087]},{"a":54083,"t":"code","b":[153,118,179],"m":"sta","o":"snd_cmd_dispatch_jmp,y","oa":45942},{"a":54086,"t":"code","b":[136],"m":"dey"},{"a":54087,"t":"code","b":[208,247],"m":"bne","o":"b_D340","oa":54080},{"a":54089,"t":"code","b":[185,65,208],"m":"lda","o":"snd_cmd_handler,y","oa":53313},{"a":54092,"t":"code","b":[153,119,179],"m":"sta","o":"snd_cmd_dispatch_target,y","oa":45943},{"a":54095,"t":"code","b":[200],"m":"iny"},{"a":54096,"t":"code","b":[185,65,208],"m":"lda","o":"snd_cmd_handler,y","oa":53313},{"a":54099,"t":"code","b":[153,119,179],"m":"sta","o":"snd_cmd_dispatch_target,y","oa":45943},{"a":54102,"t":"code","b":[136],"m":"dey"},{"a":54103,"t":"code","b":[206,23,176],"m":"dec","o":"snd_dispatch_count","oa":45079},{"a":54106,"t":"code","b":[208,3],"m":"bne","o":"b_D35F","oa":54111},{"a":54108,"t":"code","b":[76,113,179],"m":"jmp","o":"snd_rare_path","oa":45937},{"a":54111,"l":"b_D35F","t":"code","b":[76,118,179],"m":"jmp","o":"snd_cmd_dispatch_jmp","oa":45942,"x":[54106]},{"a":54114,"l":"snd_set_filter","c":"Loads a filter preset: X = offset into the four-byte records at $B6A1 (cutoff low, cutoff high, resonance and routing, mode and volume), copied to $B05B-$B05E (channels 0-2) or $B062-$B065 (channels 3-5, $6C of 6 or more); the next byte ($B05F or $B066) is zeroed. Called with X = 0 when a sound starts ($B2CE) and by command $0D.","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[45774,54493]},{"a":54116,"t":"code","b":[165,108],"m":"lda","o":"mus_channel","oa":108},{"a":54118,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":54120,"t":"code","b":[144,2],"m":"bcc","o":"b_D36C","oa":54124},{"a":54122,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":54124,"l":"b_D36C","t":"code","b":[189,161,182],"m":"lda","o":"snd_filter_presets,x","oa":46753,"x":[54120]},{"a":54127,"t":"code","b":[153,91,176],"m":"sta","o":"snd_filter_a,y","oa":45147},{"a":54130,"t":"code","b":[189,162,182],"m":"lda","o":"snd_filter_presets_1,x","oa":46754},{"a":54133,"t":"code","b":[153,92,176],"m":"sta","o":"snd_filter_a_cut_hi,y","oa":45148},{"a":54136,"t":"code","b":[189,163,182],"m":"lda","o":"snd_filter_presets_2,x","oa":46755},{"a":54139,"t":"code","b":[153,93,176],"m":"sta","o":"snd_filter_a_res,y","oa":45149},{"a":54142,"t":"code","b":[189,164,182],"m":"lda","o":"snd_filter_presets_3,x","oa":46756},{"a":54145,"t":"code","b":[153,94,176],"m":"sta","o":"snd_filter_a_mode,y","oa":45150},{"a":54148,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":54150,"t":"code","b":[153,95,176],"m":"sta","o":"snd_filter_a_once,y","oa":45151},{"a":54153,"t":"code","b":[96],"m":"rts"},{"a":54154,"l":"snd_cmd_random_call","c":"Command $20 first mask: call a random pattern. Saves the voice's pulse width, control and envelope bytes ($B033-$B037+X) in $B10C+X, picks pattern number first + (mask AND $B0D3, the random byte the tick updates), keeps the return address (after the two operands) in $B134/$B135+channel*2 and starts the pattern at snd_pattern_begin. The pattern ends with command $21.","t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":54156,"l":"b_D38C","t":"code","b":[189,51,176],"m":"lda","o":"snd_regs_pulse_lo,x","oa":45107,"x":[54164]},{"a":54159,"t":"code","b":[157,12,177],"m":"sta","o":"snd_saved_instr,x","oa":45324},{"a":54162,"t":"code","b":[232],"m":"inx"},{"a":54163,"t":"code","b":[136],"m":"dey"},{"a":54164,"t":"code","b":[208,246],"m":"bne","o":"b_D38C","oa":54156},{"a":54166,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54168,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":54170,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":54173,"t":"code","b":[200],"m":"iny"},{"a":54174,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":54176,"t":"code","b":[45,211,176],"m":"and","o":"snd_random","oa":45267},{"a":54179,"t":"code","b":[136],"m":"dey"},{"a":54180,"t":"code","b":[24],"m":"clc"},{"a":54181,"t":"code","b":[109,80,177],"m":"adc","o":"snd_temp_y","oa":45392},{"a":54184,"t":"code","b":[32,41,213],"m":"jsr","o":"snd_pattern_lookup_a","oa":54569},{"a":54187,"t":"code","b":[24],"m":"clc"},{"a":54188,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":54190,"t":"code","b":[144,2],"m":"bcc","o":"b_D3B2","oa":54194},{"a":54192,"t":"code","b":[246,118],"m":"inc","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54194,"l":"b_D3B2","t":"code","b":[157,52,177],"m":"sta","o":"snd_return3_lo,x","oa":45364,"x":[54190]},{"a":54197,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54199,"t":"code","b":[157,53,177],"m":"sta","o":"snd_return3_hi,x","oa":45365},{"a":54202,"t":"code","b":[165,115],"m":"lda","o":"mus_pattern","oa":115},{"a":54204,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54206,"t":"code","b":[165,116],"m":"lda","o":"mus_pattern_hi","oa":116},{"a":54208,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54210,"t":"code","b":[76,221,208],"m":"jmp","o":"snd_pattern_begin","oa":53469},{"a":54213,"l":"snd_cmd_random_return","c":"Command $21: return from a random pattern (command $20): restores the sequence pointer from $B134/$B135+channel*2 and the five saved shadow bytes from $B10C+X.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108,"x":[45942]},{"a":54215,"t":"code","b":[189,52,177],"m":"lda","o":"snd_return3_lo,x","oa":45364},{"a":54218,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54220,"t":"code","b":[189,53,177],"m":"lda","o":"snd_return3_hi,x","oa":45365},{"a":54223,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54225,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":54227,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":54229,"l":"b_D3D5","t":"code","b":[189,12,177],"m":"lda","o":"snd_saved_instr,x","oa":45324,"x":[54237]},{"a":54232,"t":"code","b":[157,51,176],"m":"sta","o":"snd_regs_pulse_lo,x","oa":45107},{"a":54235,"t":"code","b":[232],"m":"inx"},{"a":54236,"t":"code","b":[136],"m":"dey"},{"a":54237,"t":"code","b":[16,246],"m":"bpl","o":"b_D3D5","oa":54229},{"a":54239,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":54242,"l":"snd_cmd_set_notes","c":"Command $23 notes... '#': copies up to 16 bytes, until a '#' ($23), into the channel's note slots at $B174 + 16*channel; command $40+n (snd_cmd_set_notes_n) enters at $D3E7 with at most n+1 bytes. The pointer moves past the bytes read, '#' included. At $D416 (no label: $D416 is also the SID filter register) commands $30-$3F play slot n of the channel: the note from $B174 + 16*channel + n goes to snd_note, and a length byte follows. (The SID register names and x-refs the listing shows on $D400-$D41C are the I/O chip's; this is RAM code.)","t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":54244,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":54247,"l":"j_D3E7","t":"code","b":[160,0],"m":"ldy","o":"#$00","x":[54660]},{"a":54249,"t":"code","b":[165,108],"m":"lda","o":"mus_channel","oa":108},{"a":54251,"t":"code","b":[10],"m":"asl","o":"a"},{"a":54252,"t":"code","b":[10],"m":"asl","o":"a"},{"a":54253,"t":"code","b":[10],"m":"asl","o":"a"},{"a":54254,"t":"code","b":[170],"m":"tax"},{"a":54255,"l":"b_D3EF","t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129,"x":[54269]},{"a":54257,"t":"code","b":[200],"m":"iny"},{"a":54258,"t":"code","b":[201,35],"m":"cmp","o":"#$23"},{"a":54260,"t":"code","b":[240,9],"m":"beq","o":"b_D3FF","oa":54271},{"a":54262,"t":"code","b":[157,116,177],"m":"sta","o":"snd_note_lists,x","oa":45428},{"a":54265,"t":"code","b":[232],"m":"inx"},{"a":54266,"t":"code","b":[206,80,177],"m":"dec","o":"snd_temp_y","oa":45392},{"a":54269,"t":"code","b":[16,240],"m":"bpl","o":"b_D3EF","oa":54255},{"a":54271,"l":"b_D3FF","t":"code","b":[140,80,177],"m":"sty","o":"snd_temp_y","oa":45392,"x":[54260]},{"a":54274,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":54276,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54278,"t":"code","b":[165,129],"m":"lda","o":"mus_read_ptr","oa":129},{"a":54280,"t":"code","b":[24],"m":"clc"},{"a":54281,"t":"code","b":[109,80,177],"m":"adc","o":"snd_temp_y","oa":45392},{"a":54284,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54286,"t":"code","b":[152],"m":"tya"},{"a":54287,"t":"code","b":[101,130],"m":"adc","o":"mus_read_ptr_hi","oa":130},{"a":54289,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54291,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":54294,"c":"Commands $30-$3F (no label here: the SID filter register $D416 has the same address): play note slot n = command AND $0F of the channel, the byte at $B174 + 16*channel + n, through snd_note; a length byte follows.","t":"code","b":[165,108],"m":"lda","o":"mus_channel","oa":108},{"a":54296,"t":"code","b":[10],"m":"asl","o":"a"},{"a":54297,"t":"code","b":[10],"m":"asl","o":"a"},{"a":54298,"t":"code","b":[10],"m":"asl","o":"a"},{"a":54299,"t":"code","b":[24],"m":"clc"},{"a":54300,"t":"code","b":[109,80,177],"m":"adc","o":"snd_temp_y","oa":45392},{"a":54303,"t":"code","b":[24],"m":"clc"},{"a":54304,"t":"code","b":[105,208],"m":"adc","o":"#$D0"},{"a":54306,"t":"code","b":[170],"m":"tax"},{"a":54307,"t":"code","b":[189,116,177],"m":"lda","o":"snd_note_lists,x","oa":45428},{"a":54310,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":54312,"t":"code","b":[76,70,208],"m":"jmp","o":"snd_note","oa":53318},{"a":54315,"l":"snd_cmd_loop2","c":"Command $22 count lo hi: a second loop, like command $02 but with its own flag and counter $B075/$B076+channel*2, so two loops can be nested.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54317,"t":"code","b":[189,117,176],"m":"lda","o":"snd_loop2_active,x","oa":45173},{"a":54320,"t":"code","b":[240,17],"m":"beq","o":"b_D443","oa":54339},{"a":54322,"t":"code","b":[189,118,176],"m":"lda","o":"snd_loop2_count,x","oa":45174},{"a":54325,"t":"code","b":[240,6],"m":"beq","o":"b_D43D","oa":54333},{"a":54327,"t":"code","b":[222,118,176],"m":"dec","o":"snd_loop2_count,x","oa":45174},{"a":54330,"t":"code","b":[76,75,212],"m":"jmp","o":"j_D44B","oa":54347},{"a":54333,"l":"b_D43D","t":"code","b":[157,117,176],"m":"sta","o":"snd_loop2_active,x","oa":45173,"x":[54325]},{"a":54336,"t":"code","b":[76,90,212],"m":"jmp","o":"j_D45A","oa":54362},{"a":54339,"l":"b_D443","t":"code","b":[254,117,176],"m":"inc","o":"snd_loop2_active,x","oa":45173,"x":[54320]},{"a":54342,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":54344,"t":"code","b":[157,118,176],"m":"sta","o":"snd_loop2_count,x","oa":45174},{"a":54347,"l":"j_D44B","t":"code","b":[200],"m":"iny","x":[54330]},{"a":54348,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":54350,"t":"code","b":[72],"m":"pha"},{"a":54351,"t":"code","b":[200],"m":"iny"},{"a":54352,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":54354,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54356,"t":"code","b":[104],"m":"pla"},{"a":54357,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54359,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":54362,"l":"j_D45A","t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117,"x":[54336]},{"a":54364,"t":"code","b":[24],"m":"clc"},{"a":54365,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":54367,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54369,"t":"code","b":[144,2],"m":"bcc","o":"b_D465","oa":54373},{"a":54371,"t":"code","b":[246,118],"m":"inc","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54373,"l":"b_D465","t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429,"x":[54369]},{"a":54376,"l":"snd_cmd_slide_down","c":"Command $08 length: slide the frequency down one step (snd_slide_down), then read a length.","t":"code","b":[32,203,209],"m":"jsr","o":"snd_slide_down","oa":53707},{"a":54379,"t":"code","b":[76,143,208],"m":"jmp","o":"snd_duration","oa":53391},{"a":54382,"l":"snd_cmd_slide_up","c":"Command $09 length: slide the frequency up one step (snd_slide_up), then read a length.","t":"code","b":[32,207,209],"m":"jsr","o":"snd_slide_up","oa":53711},{"a":54385,"t":"code","b":[76,143,208],"m":"jmp","o":"snd_duration","oa":53391},{"a":54388,"l":"snd_cmd_slide_auto","c":"Command $07: sets the channel's slide step $B0C4/$B0C5+channel*2 to $FFFF, meaning one eighth of the frequency at the next slide.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":54390,"t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54392,"t":"code","b":[157,196,176],"m":"sta","o":"snd_slide_lo,x","oa":45252},{"a":54395,"t":"code","b":[157,197,176],"m":"sta","o":"snd_slide_hi,x","oa":45253},{"a":54398,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":54401,"l":"snd_cmd_slide_step","c":"Command $06 lo hi: reads the channel's slide step $B0C4/$B0C5+channel*2 from the two operand bytes ($B21C).","t":"code","b":[32,28,178],"m":"jsr","o":"snd_read_slide","oa":45596},{"a":54404,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":54407,"l":"snd_cmd_call_b","c":"Command $0A n: call pattern n, second kind: saves the seven shadow bytes in $B0D4+X and the return address in $B0FE/$B0FF+channel*2; the pattern starts with an instrument byte and ends with command $0B.","t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":54409,"l":"b_D489","t":"code","b":[189,49,176],"m":"lda","o":"snd_regs,x","oa":45105,"x":[54417]},{"a":54412,"t":"code","b":[157,212,176],"m":"sta","o":"snd_saved_regs2,x","oa":45268},{"a":54415,"t":"code","b":[232],"m":"inx"},{"a":54416,"t":"code","b":[136],"m":"dey"},{"a":54417,"t":"code","b":[208,246],"m":"bne","o":"b_D489","oa":54409},{"a":54419,"t":"code","b":[32,39,213],"m":"jsr","o":"snd_pattern_lookup","oa":54567},{"a":54422,"t":"code","b":[157,254,176],"m":"sta","o":"snd_return2_lo,x","oa":45310},{"a":54425,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54427,"t":"code","b":[157,255,176],"m":"sta","o":"snd_return2_hi,x","oa":45311},{"a":54430,"t":"code","b":[254,254,176],"m":"inc","o":"snd_return2_lo,x","oa":45310},{"a":54433,"t":"code","b":[208,3],"m":"bne","o":"b_D4A6","oa":54438},{"a":54435,"t":"code","b":[254,255,176],"m":"inc","o":"snd_return2_hi,x","oa":45311},{"a":54438,"l":"b_D4A6","t":"code","b":[165,115],"m":"lda","o":"mus_pattern","oa":115,"x":[54433]},{"a":54440,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54442,"t":"code","b":[165,116],"m":"lda","o":"mus_pattern_hi","oa":116},{"a":54444,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54446,"t":"code","b":[76,221,208],"m":"jmp","o":"snd_pattern_begin","oa":53469},{"a":54449,"l":"snd_cmd_return_b","c":"Command $0B: return from a command $0A pattern: pointer from $B0FE/$B0FF+channel*2, seven shadow bytes from $B0D4+X.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54451,"t":"code","b":[189,254,176],"m":"lda","o":"snd_return2_lo,x","oa":45310},{"a":54454,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54456,"t":"code","b":[189,255,176],"m":"lda","o":"snd_return2_hi,x","oa":45311},{"a":54459,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54461,"t":"code","b":[166,112],"m":"ldx","o":"mus_rec","oa":112},{"a":54463,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":54465,"l":"b_D4C1","t":"code","b":[189,212,176],"m":"lda","o":"snd_saved_regs2,x","oa":45268,"x":[54473]},{"a":54468,"t":"code","b":[157,49,176],"m":"sta","o":"snd_regs,x","oa":45105},{"a":54471,"t":"code","b":[232],"m":"inx"},{"a":54472,"t":"code","b":[136],"m":"dey"},{"a":54473,"t":"code","b":[16,246],"m":"bpl","o":"b_D4C1","oa":54465},{"a":54475,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":54478,"l":"snd_cmd_instrument","c":"Command $0C offset: sets the voice's instrument, five bytes from snd_instruments + offset ($B311).","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54480,"t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":54482,"t":"code","b":[32,17,179],"m":"jsr","o":"snd_set_instrument","oa":45841},{"a":54485,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":54488,"l":"snd_cmd_filter","c":"Command $0D offset: loads filter preset $B6A1 + offset (snd_set_filter) and sets bit 7 of the layer's $B05B/$B062, the flag that has the tick write the filter registers.","t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129},{"a":54490,"t":"code","b":[170],"m":"tax"},{"a":54491,"t":"code","b":[164,112],"m":"ldy","o":"mus_rec","oa":112},{"a":54493,"t":"code","b":[32,98,211],"m":"jsr","o":"snd_set_filter","oa":54114},{"a":54496,"t":"code","b":[185,91,176],"m":"lda","o":"snd_filter_a,y","oa":45147},{"a":54499,"t":"code","b":[9,128],"m":"ora","o":"#$80"},{"a":54501,"t":"code","b":[153,91,176],"m":"sta","o":"snd_filter_a,y","oa":45147},{"a":54504,"l":"snd_cmd_skip","c":"Command $0E: skips its one operand byte; does nothing else.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54506,"t":"code","b":[246,117],"m":"inc","o":"mus_stream_ptrs,x","oa":117},{"a":54508,"t":"code","b":[208,2],"m":"bne","o":"b_D4F0","oa":54512},{"a":54510,"t":"code","b":[246,118],"m":"inc","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54512,"l":"b_D4F0","t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519,"x":[54508]},{"a":54515,"l":"snd_cmd_nop","c":"Command $0F (and $10, $28-$2F through $B5B7): no operation, one byte.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54517,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":54519,"t":"code","b":[76,183,181],"m":"jmp","o":"snd_next_command","oa":46519},{"a":54522,"l":"snd_cmd_call_c","c":"Command $24 n: call pattern n, third kind: return address (after n) in $B140/$B141+channel*2; this pattern has no instrument byte and ends with command $25.","t":"code","b":[32,39,213],"m":"jsr","o":"snd_pattern_lookup","oa":54567},{"a":54525,"t":"code","b":[157,64,177],"m":"sta","o":"snd_return4_lo,x","oa":45376},{"a":54528,"t":"code","b":[181,118],"m":"lda","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54530,"t":"code","b":[157,65,177],"m":"sta","o":"snd_return4_hi,x","oa":45377},{"a":54533,"t":"code","b":[254,64,177],"m":"inc","o":"snd_return4_lo,x","oa":45376},{"a":54536,"t":"code","b":[208,3],"m":"bne","o":"b_D50D","oa":54541},{"a":54538,"t":"code","b":[254,65,177],"m":"inc","o":"snd_return4_hi,x","oa":45377},{"a":54541,"l":"b_D50D","t":"code","b":[165,115],"m":"lda","o":"mus_pattern","oa":115,"x":[54536]},{"a":54543,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54545,"t":"code","b":[165,116],"m":"lda","o":"mus_pattern_hi","oa":116},{"a":54547,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54549,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":54552,"l":"snd_cmd_return_c","c":"Command $25: return from a command $24 pattern to the address in $B140/$B141+channel*2.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108},{"a":54554,"t":"code","b":[189,64,177],"m":"lda","o":"snd_return4_lo,x","oa":45376},{"a":54557,"t":"code","b":[149,117],"m":"sta","o":"mus_stream_ptrs,x","oa":117},{"a":54559,"t":"code","b":[189,65,177],"m":"lda","o":"snd_return4_hi,x","oa":45377},{"a":54562,"t":"code","b":[149,118],"m":"sta","o":"mus_stream_ptrs_hi,x","oa":118},{"a":54564,"t":"code","b":[76,93,181],"m":"jmp","o":"b_B55D","oa":46429},{"a":54567,"l":"snd_pattern_lookup","c":"Pattern lookup reading the pattern number from the sequence (($81),0); snd_pattern_lookup_a at $D529 takes it in A.","t":"code","b":[177,129],"m":"lda","o":"(mus_read_ptr),y","oa":129,"x":[53527,54419,54522]},{"a":54569,"l":"snd_pattern_lookup_a","c":"Pattern lookup: A = pattern number n. Bit 7 set picks the shared table, clear the channel's own; the entry is the word at table + (2n AND $FF). Channels 0-2 take the table addresses from snd_pattern_tables ($D831: shared, then channels 0, 1, 2); channels 3-5 from the words at ($D7AC/$D7AD)+12 (shared) and +14, +16, +18 (own), i.e. from the header of the sound-12 data (the piano piece chosen at $AB1A). The address is patched into the two LDA abs,Y at $D561 and $D567. Returns the pattern address in $73/$74, X = channel*2, Y = 0, A = the channel's pointer low byte.","t":"code","b":[166,108],"m":"ldx","o":"mus_channel","oa":108,"x":[54184]},{"a":54571,"t":"code","b":[164,108],"m":"ldy","o":"mus_channel","oa":108},{"a":54573,"t":"code","b":[10],"m":"asl","o":"a"},{"a":54574,"t":"code","b":[72],"m":"pha"},{"a":54575,"t":"code","b":[144,9],"m":"bcc","o":"b_D53A","oa":54586},{"a":54577,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":54579,"t":"code","b":[192,6],"m":"cpy","o":"#$06"},{"a":54581,"t":"code","b":[176,2],"m":"bcs","o":"b_D539","oa":54585},{"a":54583,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":54585,"l":"b_D539","t":"code","b":[168],"m":"tay","x":[54581]},{"a":54586,"l":"b_D53A","t":"code","b":[224,6],"m":"cpx","o":"#$06","x":[54575]},{"a":54588,"t":"code","b":[144,17],"m":"bcc","o":"b_D54F","oa":54607},{"a":54590,"t":"code","b":[173,172,215],"m":"lda","o":"snd_sound_12","oa":55212},{"a":54593,"t":"code","b":[24],"m":"clc"},{"a":54594,"t":"code","b":[105,6],"m":"adc","o":"#$06"},{"a":54596,"t":"code","b":[141,98,213],"m":"sta","o":"snd_pattab_lo_a","oa":54626},{"a":54599,"t":"code","b":[141,104,213],"m":"sta","o":"snd_pattab_lo_b","oa":54632},{"a":54602,"t":"code","b":[173,173,215],"m":"lda","o":"a_D7AD","oa":55213},{"a":54605,"t":"code","b":[208,10],"m":"bne","o":"b_D559","oa":54617},{"a":54607,"l":"b_D54F","t":"code","b":[169,49],"m":"lda","o":"#$31","x":[54588]},{"a":54609,"t":"code","b":[141,98,213],"m":"sta","o":"snd_pattab_lo_a","oa":54626},{"a":54612,"t":"code","b":[141,104,213],"m":"sta","o":"snd_pattab_lo_b","oa":54632},{"a":54615,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":54617,"l":"b_D559","t":"code","b":[141,99,213],"m":"sta","o":"snd_pattab_hi_a","oa":54627,"x":[54605]},{"a":54620,"t":"code","b":[141,105,213],"m":"sta","o":"snd_pattab_hi_b","oa":54633},{"a":54623,"t":"code","b":[200],"m":"iny"},{"a":54624,"t":"code","b":[200],"m":"iny"},{"a":54625,"s":"operand ($D562/$D563) patched with the pattern-table list address","t":"code","b":[185,49,216],"m":"lda","o":"snd_pattern_tables,y","oa":55345},{"a":54626,"t":"note","l":"snd_pattab_lo_a","c":"Operand low byte of the LDA $D831,Y at $D561, patched by snd_pattern_lookup_a: $31 for channels 0-2, ($D7AC)+6 for channels 3-5 (the carry is not added to the high byte).","note":"inside the item at $D561","x":[54596,54609]},{"a":54627,"t":"note","l":"snd_pattab_hi_a","c":"Operand high byte of the LDA at $D561, patched by snd_pattern_lookup_a: $D8 for channels 0-2, ($D7AD) for channels 3-5.","note":"inside the item at $D561","x":[54617]},{"a":54628,"t":"code","b":[133,131],"m":"sta","o":"mus_pattab_ptr","oa":131},{"a":54630,"t":"code","b":[200],"m":"iny"},{"a":54631,"s":"operand ($D568/$D569) patched likewise","t":"code","b":[185,49,216],"m":"lda","o":"snd_pattern_tables,y","oa":55345},{"a":54632,"t":"note","l":"snd_pattab_lo_b","c":"Operand low byte of the LDA $D831,Y at $D567 (the pattern table's high byte), patched with the value written to $D562.","note":"inside the item at $D567","x":[54599,54612]},{"a":54633,"t":"note","l":"snd_pattab_hi_b","c":"Operand high byte of the LDA at $D567, patched with the value written to $D563.","note":"inside the item at $D567","x":[54620]},{"a":54634,"t":"code","b":[133,132],"m":"sta","o":"mus_pattab_ptr_hi","oa":132},{"a":54636,"t":"code","b":[104],"m":"pla"},{"a":54637,"t":"code","b":[168],"m":"tay"},{"a":54638,"t":"code","b":[177,131],"m":"lda","o":"(mus_pattab_ptr),y","oa":131},{"a":54640,"t":"code","b":[133,115],"m":"sta","o":"mus_pattern","oa":115},{"a":54642,"t":"code","b":[200],"m":"iny"},{"a":54643,"t":"code","b":[177,131],"m":"lda","o":"(mus_pattab_ptr),y","oa":131},{"a":54645,"t":"code","b":[133,116],"m":"sta","o":"mus_pattern_hi","oa":116},{"a":54647,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":54649,"t":"code","b":[181,117],"m":"lda","o":"mus_stream_ptrs,x","oa":117},{"a":54651,"t":"code","b":[96],"m":"rts"},{"a":54652,"l":"snd_cmd_set_notes_n","c":"Command $40+n: like command $23, but copies at most n+1 note bytes (or up to '#') into the channel's note slots.","t":"code","b":[173,80,177],"m":"lda","o":"snd_temp_y","oa":45392},{"a":54655,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":54657,"t":"code","b":[141,80,177],"m":"sta","o":"snd_temp_y","oa":45392},{"a":54660,"t":"code","b":[76,231,211],"m":"jmp","o":"j_D3E7","oa":54247},{"a":54663,"l":"snd_instruments","c":"Instrument records of the sound driver, 5 bytes each at offsets $00-$CD (42 records, to $D658): pulse width low, pulse width high, control (waveform bits; bit 3, the test bit, resets the oscillator: the output loop at $B4C6 writes it and $B4D4 at once writes and keeps the byte without it), attack/decay, sustain/release. $B311 copies a record into a voice's shadow $B033-$B037 when a sequence or pattern starts (its first byte is the offset) and for command $0C. The sounds in $D800-$DDFF use offsets up to $B9.","s":"$00: PW $800, noise+reset, AD $00, SR $04","t":"byte","b":[0,8,136,0,4],"x":[45858]},{"a":54668,"s":"$05: PW $000, triangle+reset, AD $01, SR $04","t":"byte","b":[0,0,24,1,4]},{"a":54673,"s":"$0A: PW $FA0, pulse+reset, AD $00, SR $04","t":"byte","b":[160,15,72,0,4]},{"a":54678,"s":"$0F: PW $000, noise+reset, AD $04, SR $04","t":"byte","b":[0,0,136,4,4]},{"a":54683,"s":"$14: PW $F00, noise+reset, AD $00, SR $00","t":"byte","b":[0,15,136,0,0]},{"a":54688,"s":"$19: PW $000, noise+reset, AD $98, SR $03","t":"byte","b":[0,0,136,152,3]},{"a":54693,"s":"$1E: PW $000, triangle, AD $00, SR $6A","t":"byte","b":[0,0,16,0,106]},{"a":54698,"s":"$23: PW $600, pulse+reset, AD $02, SR $79","t":"byte","b":[0,6,72,2,121]},{"a":54703,"s":"$28: PW $200, pulse+reset, AD $02, SR $79","t":"byte","b":[0,2,72,2,121]},{"a":54708,"s":"$2D: PW $500, pulse+reset, AD $07, SR $27","t":"byte","b":[0,5,72,7,39]},{"a":54713,"s":"$32: PW $100, pulse, AD $07, SR $5A","t":"byte","b":[0,1,64,7,90]},{"a":54718,"s":"$37: PW $000, noise+reset, AD $A0, SR $00","t":"byte","b":[0,0,136,160,0]},{"a":54723,"l":"snd_instruments_3c","c":"Instrument records $3C-$CD, continuing snd_instruments ($D587).","s":"$3C: PW $000, noise+reset, AD $90, SR $00","t":"byte","b":[0,0,136,144,0]},{"a":54728,"s":"$41: PW $000, noise+reset, AD $40, SR $95","t":"byte","b":[0,0,136,64,149]},{"a":54733,"s":"$46: PW $000, triangle, AD $52, SR $00","t":"byte","b":[0,0,16,82,0]},{"a":54738,"s":"$4B: PW $000, noise+reset, AD $01, SR $04","t":"byte","b":[0,0,136,1,4]},{"a":54743,"s":"$50: PW $000, triangle+ring, AD $04, SR $3C","t":"byte","b":[0,0,20,4,60]},{"a":54748,"s":"$55: PW $000, triangle, AD $04, SR $54","t":"byte","b":[0,0,16,4,84]},{"a":54753,"s":"$5A: PW $000, triangle+ring, AD $04, SR $54","t":"byte","b":[0,0,20,4,84]},{"a":54758,"s":"$5F: PW $150, pulse+reset, AD $39, SR $00","t":"byte","b":[80,1,72,57,0]},{"a":54763,"s":"$64: PW $030, pulse, AD $20, SR $F0","t":"byte","b":[48,0,64,32,240]},{"a":54768,"s":"$69: PW $000, noise+reset, AD $08, SR $00","t":"byte","b":[0,0,136,8,0]},{"a":54773,"s":"$6E: PW $0A0, pulse+reset, AD $06, SR $F4","t":"byte","b":[160,0,72,6,244]},{"a":54778,"s":"$73: PW $000, triangle+reset, AD $06, SR $F4","t":"byte","b":[0,0,24,6,244]},{"a":54783,"s":"$78: PW $000, triangle, AD $04, SR $6C","t":"byte","b":[0,0,16,4,108]},{"a":54788,"s":"$7D: PW $000, triangle+ring, AD $04, SR $6C","t":"byte","b":[0,0,20,4,108]},{"a":54793,"s":"$82: PW $000, pulse+reset, AD $08, SR $08","t":"byte","b":[0,0,72,8,8]},{"a":54798,"s":"$87: PW $1A0, pulse+reset, AD $00, SR $7C","t":"byte","b":[160,1,72,0,124]},{"a":54803,"s":"$8C: PW $400, pulse+reset, AD $00, SR $68","t":"byte","b":[0,4,72,0,104]},{"a":54808,"s":"$91: PW $700, pulse+reset, AD $00, SR $7C","t":"byte","b":[0,7,72,0,124]},{"a":54813,"s":"$96: PW $800, pulse+reset, AD $01, SR $7D","t":"byte","b":[0,8,72,1,125]},{"a":54818,"s":"$9B: PW $000, triangle, AD $06, SR $75","t":"byte","b":[0,0,16,6,117]},{"a":54823,"s":"$A0: PW $000, triangle, AD $7B, SR $79","t":"byte","b":[0,0,16,123,121]},{"a":54828,"s":"$A5: PW $000, noise+reset, AD $7B, SR $00","t":"byte","b":[0,0,136,123,0]},{"a":54833,"s":"$AA: PW $000, noise+reset, AD $70, SR $F9","t":"byte","b":[0,0,136,112,249]},{"a":54838,"s":"$AF: PW $800, pulse+reset, AD $04, SR $5A","t":"byte","b":[0,8,72,4,90]},{"a":54843,"s":"$B4: PW $000, noise+reset, AD $AA, SR $FA","t":"byte","b":[0,0,136,170,250]},{"a":54848,"s":"$B9: PW $028, pulse+reset, AD $AA, SR $FA","t":"byte","b":[40,0,72,170,250]},{"a":54853,"s":"$BE: PW $200, pulse+reset, AD $33, SR $A3","t":"byte","b":[0,2,72,51,163]},{"a":54858,"s":"$C3: PW $000, noise+reset, AD $53, SR $33","t":"byte","b":[0,0,136,83,51]},{"a":54863,"s":"$C8: PW $200, pulse+reset, AD $04, SR $54","t":"byte","b":[0,2,72,4,84]},{"a":54868,"s":"$CD: PW $000, triangle+ring, AD $30, SR $F2","t":"byte","b":[0,0,20,48,242]},{"a":54873,"l":"snd_unused_d659","c":"After the instrument records: $00/$FF bytes to $D660, then zero up to $D6FF. No sound in $D800-$DDFF uses an instrument offset past $B9; nothing else reads here that was found.","t":"byte","b":[0,255,0,255,0,255,0,0]},{"a":54881,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54889,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54897,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54905,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54913,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54921,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54929,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54937,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54945,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54953,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54961,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54969,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54977,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54985,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54993,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55001,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55009,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55017,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55025,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55033,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":55040,"l":"snd_commands","c":"Command handler table of the sound driver: 50 words, the handler address (not minus one) for commands $00-$2F, then $30 (standing for $30-$3F) and $31 ($40-$4F); snd_event loads the entry into snd_cmd_handler. The number of operand bytes each handler reads is in the side comments.","s":"$00 -> $0000: (0 ends a sequence before this table is used)","t":"word","b":[0],"d":[],"x":[53286]},{"a":55041,"l":"snd_commands_hi","c":"High byte of the first entry of snd_commands ($D700); snd_event reads the high bytes as $D701+2n.","t":"word","b":[0],"d":[],"x":[53292]},{"a":55042,"s":"$01 -> $D0CF: jump, 2 operand bytes","t":"word","b":[207,208],"d":[53455]},{"a":55044,"s":"$02 -> $D0F3: loop, 3 operand bytes","t":"word","b":[243,208],"d":[53491]},{"a":55046,"s":"$03 -> $D0BF: start sound (same set), 1 operand byte","t":"word","b":[191,208],"d":[53439]},{"a":55048,"s":"$04 -> $D10B: call pattern, 1 operand byte","t":"word","b":[11,209],"d":[53515]},{"a":55050,"s":"$05 -> $D0C9: start sound (channels 3-5), 1 operand byte","t":"word","b":[201,208],"d":[53449]},{"a":55052,"s":"$06 -> $D481: slide step, 2 operand bytes","t":"word","b":[129,212],"d":[54401]},{"a":55054,"s":"$07 -> $D474: automatic slide step, 0 operand bytes","t":"word","b":[116,212],"d":[54388]},{"a":55056,"s":"$08 -> $D468: slide down + length, 1 operand byte","t":"word","b":[104,212],"d":[54376]},{"a":55058,"s":"$09 -> $D46E: slide up + length, 1 operand byte","t":"word","b":[110,212],"d":[54382]},{"a":55060,"s":"$0A -> $D487: call pattern, second kind, 1 operand byte","t":"word","b":[135,212],"d":[54407]},{"a":55062,"s":"$0B -> $D4B1: return (second kind), 0 operand bytes","t":"word","b":[177,212],"d":[54449]},{"a":55064,"s":"$0C -> $D4CE: instrument, 1 operand byte","t":"word","b":[206,212],"d":[54478]},{"a":55066,"s":"$0D -> $D4D8: filter preset, 1 operand byte","t":"word","b":[216,212],"d":[54488]},{"a":55068,"s":"$0E -> $D4E8: skip a byte, 1 operand byte","t":"word","b":[232,212],"d":[54504]},{"a":55070,"s":"$0F -> $D4F3: no-op, 0 operand bytes","t":"word","b":[243,212],"d":[54515]},{"a":55072,"s":"$10 -> $B5B7: (a rest note; never looked up)","t":"word","b":[183,181],"d":[46519]},{"a":55074,"s":"$11 -> $B249: read filter step, 2 operand bytes","t":"word","b":[73,178],"d":[45641]},{"a":55076,"s":"$12 -> $B24F: filter step, 0 operand bytes","t":"word","b":[79,178],"d":[45647]},{"a":55078,"s":"$13 -> $B25C: read pulse-width step, 2 operand bytes","t":"word","b":[92,178],"d":[45660]},{"a":55080,"s":"$14 -> $B262: pulse-width step, 0 operand bytes","t":"word","b":[98,178],"d":[45666]},{"a":55082,"s":"$15 -> $B2F6: pulse-width step + slide down + length, 1 operand byte","t":"word","b":[246,178],"d":[45814]},{"a":55084,"s":"$16 -> $B2FF: pulse-width step + slide up + length, 1 operand byte","t":"word","b":[255,178],"d":[45823]},{"a":55086,"s":"$17 -> $B308: pulse-width step + filter step, 0 operand bytes","t":"word","b":[8,179],"d":[45832]},{"a":55088,"s":"$18 -> $B494: filter step + slide down + length, 1 operand byte","t":"word","b":[148,180],"d":[46228]},{"a":55090,"s":"$19 -> $B49D: filter step + slide up + length, 1 operand byte","t":"word","b":[157,180],"d":[46237]},{"a":55092,"s":"$1A -> $B4A6: filter + pulse-width step + slide down + length, 1 operand byte","t":"word","b":[166,180],"d":[46246]},{"a":55094,"s":"$1B -> $B32F: filter + pulse-width step + slide up + length, 1 operand byte","t":"word","b":[47,179],"d":[45871]},{"a":55096,"s":"$1C -> $B33B: read filter and pulse-width steps, 4 operand bytes","t":"word","b":[59,179],"d":[45883]},{"a":55098,"s":"$1D -> $B420: read filter step and slide step, 4 operand bytes","t":"word","b":[32,180],"d":[46112]},{"a":55100,"s":"$1E -> $B344: read pulse-width step and slide step, 4 operand bytes","t":"word","b":[68,179],"d":[45892]},{"a":55102,"s":"$1F -> $B414: read filter, pulse-width and slide steps, 6 operand bytes","t":"word","b":[20,180],"d":[46100]},{"a":55104,"l":"snd_commands_20","c":"snd_commands entries for commands $20-$2F and the two folded entries $30 and $31.","s":"$20 -> $D38A: call random pattern, 2 operand bytes","t":"word","b":[138,211],"d":[54154]},{"a":55106,"s":"$21 -> $D3C5: return from random pattern, 0 operand bytes","t":"word","b":[197,211],"d":[54213]},{"a":55108,"s":"$22 -> $D42B: second loop, 3 operand bytes","t":"word","b":[43,212],"d":[54315]},{"a":55110,"s":"$23 -> $D3E2: set note slots, bytes up to '#' (16 at most)","t":"word","b":[226,211],"d":[54242]},{"a":55112,"s":"$24 -> $D4FA: call pattern, third kind, 1 operand byte","t":"word","b":[250,212],"d":[54522]},{"a":55114,"s":"$25 -> $D518: return (third kind), 0 operand bytes","t":"word","b":[24,213],"d":[54552]},{"a":55116,"s":"$26 -> $B429: set the end flag $B012, 0 operand bytes","t":"word","b":[41,180],"d":[46121]},{"a":55118,"s":"$27 -> $B4B2: set $B10A+X, 0 operand bytes","t":"word","b":[178,180],"d":[46258]},{"a":55120,"s":"$28 -> $B5B7: no-op, 0 operand bytes","t":"word","b":[183,181],"d":[46519]},{"a":55122,"s":"$29 -> $B5B7: no-op, 0 operand bytes","t":"word","b":[183,181],"d":[46519]},{"a":55124,"s":"$2A -> $B5B7: no-op, 0 operand bytes","t":"word","b":[183,181],"d":[46519]},{"a":55126,"s":"$2B -> $B5B7: no-op, 0 operand bytes","t":"word","b":[183,181],"d":[46519]},{"a":55128,"s":"$2C -> $B5B7: no-op, 0 operand bytes","t":"word","b":[183,181],"d":[46519]},{"a":55130,"s":"$2D -> $B5B7: no-op, 0 operand bytes","t":"word","b":[183,181],"d":[46519]},{"a":55132,"s":"$2E -> $B5B7: no-op, 0 operand bytes","t":"word","b":[183,181],"d":[46519]},{"a":55134,"s":"$2F -> $B5B7: no-op, 0 operand bytes","t":"word","b":[183,181],"d":[46519]},{"a":55136,"s":"$30 -> $D416: play note slot n (commands $30-$3F), then a length byte","t":"word","b":[22,212],"d":[54294]},{"a":55138,"s":"$31 -> $D57C: set n+1 note slots (commands $40-$4F), n+1 bytes at most, or up to '#'","t":"word","b":[124,213],"d":[54652]},{"a":55140,"l":"snd_table","c":"The sound driver's sound table: 27 entries (sounds 0-26) of three words, the start of the sequence for channels 0, 1 and 2 of a set (0 = channel not used). $B255 (entered from $B009) starts sound n on channels 0-2, $B268 ($B006) on channels 3-5, reading the entry at $D764 + 6n; channels 3-5 sound only where the same SID voice's channel 0-2 is idle ($B42F). The sound request code at $3476 takes the numbers from $370A, $3550-$3559 and $35A8 and plays sound 16 ($DA04 on all three channels, silence) to stop. Sound 0: $B68B on all three channels (outside this range).","t":"word","b":[139],"d":[],"x":[45707,45718]},{"a":55141,"l":"snd_table_hi","c":"High byte of sound 0's first pointer; $B28E and $B29E read the high bytes as $D765+6n+2c.","t":"word","b":[182,139,182,139,182],"d":[35766,35766],"x":[45710,45726]},{"a":55146,"l":"snd_sound_01","c":"Sound 1: channel 0: -; channel 1: -; channel 2: $D839 (2 notes, ends).","t":"word","b":[0,0,0,0,57,216],"d":[0,0,55353]},{"a":55152,"l":"snd_sound_02","c":"Sound 2: channel 0: -; channel 1: -; channel 2: $D842 (2 notes, ends).","t":"word","b":[0,0,0,0,66,216],"d":[0,0,55362]},{"a":55158,"l":"snd_sound_03","c":"Sound 3: channel 0: $D84B (random patterns $1F-$22, ends); channel 1: -; channel 2: -.","t":"word","b":[75,216,0,0,0,0],"d":[55371,0,0]},{"a":55164,"l":"snd_sound_04","c":"Sound 4: channel 0: $D87D (random patterns $2F-$36, ends); channel 1: -; channel 2: $D885 (random patterns $60-$67, ends).","t":"word","b":[125,216,0,0,133,216],"d":[55421,0,55429]},{"a":55170,"l":"snd_sound_05","c":"Sound 5: channel 0: $D863 (random patterns $23-$26, ends); channel 1: -; channel 2: -.","t":"word","b":[99,216,0,0,0,0],"d":[55395,0,0]},{"a":55176,"l":"snd_sound_06","c":"Sound 6: channel 0: $D84B (random patterns $1F-$22, ends); channel 1: -; channel 2: -.","t":"word","b":[75,216,0,0,0,0],"d":[55371,0,0]},{"a":55182,"l":"snd_sound_07","c":"Sound 7: channel 0: $D87D (random patterns $2F-$36, ends); channel 1: -; channel 2: $D885 (random patterns $60-$67, ends).","t":"word","b":[125,216,0,0,133,216],"d":[55421,0,55429]},{"a":55188,"l":"snd_sound_08","c":"Sound 8: channel 0: $D863 (random patterns $23-$26, ends); channel 1: -; channel 2: -.","t":"word","b":[99,216,0,0,0,0],"d":[55395,0,0]},{"a":55194,"l":"snd_sound_09","c":"Sound 9: channel 0: $D89D (random patterns $27-$2E, ends); channel 1: -; channel 2: -.","t":"word","b":[157,216,0,0,0,0],"d":[55453,0,0]},{"a":55200,"l":"snd_sound_10","c":"Sound 10: channel 0: $D8D9 (1 note, ends); channel 1: -; channel 2: -.","t":"word","b":[217,216,0,0,0,0],"d":[55513,0,0]},{"a":55206,"l":"snd_sound_11","c":"Sound 11: channel 0: $D8E1 (2 notes, ends); channel 1: -; channel 2: $D8F1 (1 note, ends).","t":"word","b":[225,216,0,0,241,216],"d":[55521,0,55537]},{"a":55212,"l":"snd_sound_12","c":"Sound 12, the piano piece: three pointers written by activity 78 ($AB2C-$AB44, with I/O switched out) as base, base+4, base+8, the base being one of $8020, $838D, $85BA, $8730 (table $AB4E); the image holds $8100/$8104/$8108. snd_pattern_lookup_a also reads base+12 onwards as the piece's pattern tables for channels 3-5. The tick at $B4FB recomputes $D7AE and $D7B0 from $D7AC, but it runs in the IRQ with I/O switched in, so those accesses reach the SID, not this RAM.","t":"word","b":[0],"d":[],"x":[43832,54590]},{"a":55213,"l":"a_D7AD","c":"High byte of sound 12's channel-0 pointer (the piano piece base), written at $AB2C.","t":"word","b":[129],"d":[],"x":[43820,54602]},{"a":55214,"l":"snd_sound_12_c1","c":"Low byte of sound 12's channel-1 pointer: base+4, written at $AB3E.","t":"word","b":[4],"d":[],"x":[43838]},{"a":55215,"l":"a_D7AF","c":"High byte of sound 12's channel-1 pointer, written at $AB2F.","t":"word","b":[129],"d":[],"x":[43823]},{"a":55216,"l":"snd_sound_12_c2","c":"Low byte of sound 12's channel-2 pointer: base+8, written at $AB44.","t":"word","b":[8],"d":[],"x":[43844]},{"a":55217,"l":"a_D7B1","c":"High byte of sound 12's channel-2 pointer, written at $AB32.","t":"word","b":[129],"d":[],"x":[43826]},{"a":55218,"l":"snd_sound_13","c":"Sound 13: channel 0: -; channel 1: $D9BB (1 note, ends); channel 2: $DA4D (1 note, ends).","t":"word","b":[0,0,187,217,77,218],"d":[0,55739,55885]},{"a":55224,"l":"snd_sound_14","c":"Sound 14: channel 0: -; channel 1: $D9C2 (1 note, loops for ever); channel 2: $D9C2 (1 note, loops for ever).","t":"word","b":[0,0,194,217,194,217],"d":[0,55746,55746]},{"a":55230,"l":"snd_sound_15","c":"Sound 15: channel 0: $DA06 (2 notes, random patterns $11-$14, random patterns $15-$16, loops for ever); channel 1: -; channel 2: -.","t":"word","b":[6,218,0,0,0,0],"d":[55814,0,0]},{"a":55236,"l":"snd_sound_16","c":"Sound 16: the silence entry: $DA04 (instrument $00, then 0) on all three channels.","t":"word","b":[4,218,4,218,4,218],"d":[55812,55812,55812]},{"a":55242,"l":"snd_sound_17","c":"Sound 17: channel 0: $DA51 (random patterns $1B-$1E, ends); channel 1: -; channel 2: -.","t":"word","b":[81,218,0,0,0,0],"d":[55889,0,0]},{"a":55248,"l":"snd_sound_18","c":"Sound 18: channel 0: $DA6F (random patterns $17-$1A, ends); channel 1: $DA76 (1 note, ends); channel 2: -.","t":"word","b":[111,218,118,218,0,0],"d":[55919,55926,0]},{"a":55254,"l":"snd_sound_19","c":"Sound 19: channel 0: -; channel 1: $DA3F (2 notes, ends); channel 2: -.","t":"word","b":[0,0,63,218,0,0],"d":[0,55871,0]},{"a":55260,"l":"snd_sound_20","c":"Sound 20: channel 0: $D824 (2 notes, ends); channel 1: $D82A (2 notes, ends); channel 2: -.","t":"word","b":[36,216,42,216,0,0],"d":[55332,55338,0]},{"a":55266,"l":"snd_sound_21","c":"Sound 21: channel 0: $DB92 (random patterns $B8-$BB, random patterns $53-$62, ends); channel 1: $DB9A (random patterns $B8-$BB, random patterns $60-$6F, ends); channel 2: -.","t":"word","b":[146,219,154,219,0,0],"d":[56210,56218,0]},{"a":55272,"l":"snd_sound_22","c":"Sound 22: channel 0: -; channel 1: $DD01 (4 notes, ends); channel 2: -.","t":"word","b":[0,0,1,221,0,0],"d":[0,56577,0]},{"a":55278,"l":"snd_sound_23","c":"Sound 23: channel 0: $DD37 (1 note, loops for ever); channel 1: $DD3D (2 notes, loops for ever); channel 2: -.","t":"word","b":[55,221,61,221,0,0],"d":[56631,56637,0]},{"a":55284,"l":"snd_sound_24","c":"Sound 24: channel 0: -; channel 1: $DD51 (2 notes, loops for ever); channel 2: -.","t":"word","b":[0,0,81,221,0,0],"d":[0,56657,0]},{"a":55290,"l":"snd_sound_25","c":"Sound 25: channel 0: $DA8C (random patterns $BC-$C3, random patterns $C4-$CB, loops for ever); channel 1: -; channel 2: -.","t":"word","b":[140,218,0,0,0,0],"d":[55948,0,0]},{"a":55296,"l":"f_D800","c":"Sound 26: channel 0: -; channel 1: -; channel 2: $DAF4 (random patterns $67-$6E, ends). (The auto label f_D800 comes from the colour-RAM write STA $D800,X at $BAF3, made with I/O switched in, which does not reach this RAM.)","t":"word","b":[0,0,0,0,244,218],"d":[0,0,56052]},{"a":55302,"l":"snd_unused_d806","c":"$FF and 29 zero bytes after the sound table ($D806-$D823); no sound number above 26 is used and nothing else reads them.","t":"byte","b":[255,0,0,0,0,0,0,0]},{"a":55310,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55318,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":55326,"t":"byte","b":[0,0,0,0,0,0]},{"a":55332,"l":"snd_20_c0","c":"Sound 20, channel 0: instrument $78; 2 notes; ends at $D829.","t":"byte","b":[120,173,16,253,36,0]},{"a":55338,"l":"snd_20_c1","c":"Sound 20, channel 1: instrument $7D; 2 notes; the end flag (command $26); ends at $D830.","t":"byte","b":[125,230,16,198,36,38,0]},{"a":55345,"l":"snd_pattern_tables","c":"Pattern table addresses for channels 0-2, read by the patched LDA $D831,Y in snd_pattern_lookup_a: $B766 (patterns $80-$FF, shared), then $D8F5 (channel 0), $B7FE (channel 1), $B8DE (channel 2).","t":"word","b":[102,183,245,216,254,183,222,184],"d":[46950,55541,47102,47326],"x":[54625,54631]},{"a":55353,"l":"snd_01_c2","c":"Sound 1, channel 2: instrument $00; 2 notes; a skipped byte (command $0E), no-op; ends at $D841.","t":"byte","b":[0,14,18,165,4,164,4,15]},{"a":55361,"t":"byte","b":[0]},{"a":55362,"l":"snd_02_c2","c":"Sound 2, channel 2: instrument $0F; 2 notes; a skipped byte (command $0E), no-op; ends at $D84A.","t":"byte","b":[15,14,24,215,4,211,6,15]},{"a":55370,"t":"byte","b":[0]},{"a":55371,"l":"snd_03_c0","c":"Sounds 3 and 6, channel 0: instrument $00; random pattern $1F-$22; a skipped byte (command $0E), no-op; ends at $D852.","t":"byte","b":[0,14,0,32,31,3,15,0]},{"a":55379,"l":"snd_pat_c0_1f","c":"Channel 0 pattern $1F, called by sounds 3 and 6: instrument $00; 1 note; returns with command $21 at $D856.","t":"byte","b":[0,163,6,33]},{"a":55383,"l":"snd_pat_c0_20","c":"Channel 0 pattern $20, called by sounds 3 and 6: instrument $00; 1 note; returns with command $21 at $D85A.","t":"byte","b":[0,178,6,33]},{"a":55387,"l":"snd_pat_c0_21","c":"Channel 0 pattern $21, called by sounds 3 and 6: instrument $00; 1 note; returns with command $21 at $D85E.","t":"byte","b":[0,227,6,33]},{"a":55391,"l":"snd_pat_c0_22","c":"Channel 0 pattern $22, called by sounds 3 and 6: instrument $00; 1 note; returns with command $21 at $D862.","t":"byte","b":[0,146,6,33]},{"a":55395,"l":"snd_05_c0","c":"Sounds 5 and 8, channel 0: instrument $05; random pattern $23-$26; a skipped byte (command $0E), filter preset, no-op; ends at $D86C.","t":"byte","b":[5,14,6,13,0,32,35,3]},{"a":55403,"t":"byte","b":[15,0]},{"a":55405,"l":"snd_pat_c0_23","c":"Channel 0 pattern $23, called by sounds 5 and 8: instrument $05; 1 note; returns with command $21 at $D870.","t":"byte","b":[5,162,6,33]},{"a":55409,"l":"snd_pat_c0_24","c":"Channel 0 pattern $24, called by sounds 5 and 8: instrument $05; 1 note; returns with command $21 at $D874.","t":"byte","b":[5,243,6,33]},{"a":55413,"l":"snd_pat_c0_25","c":"Channel 0 pattern $25, called by sounds 5 and 8: instrument $05; 1 note; returns with command $21 at $D878.","t":"byte","b":[5,203,6,33]},{"a":55417,"l":"snd_pat_c0_26","c":"Channel 0 pattern $26, called by sounds 5 and 8: instrument $05; 1 note; returns with command $21 at $D87C.","t":"byte","b":[5,219,6,33]},{"a":55421,"l":"snd_04_c0","c":"Sounds 4 and 7, channel 0: instrument $0A; random pattern $2F-$36; a skipped byte (command $0E), no-op; ends at $D884.","t":"byte","b":[10,14,12,32,47,7,15,0]},{"a":55429,"l":"snd_04_c2","c":"Sounds 4 and 7, channel 2: instrument $0A; random pattern $60-$67; a skipped byte (command $0E), no-op; ends at $D88C.","t":"byte","b":[10,14,12,32,96,7,15,0]},{"a":55437,"l":"snd_pat_c0_2f","c":"Channel 0 patterns $2F, $30, $31, $35, called by sounds 4 and 7: instrument $0A; 1 note; returns with command $21 at $D890.","t":"byte","b":[10,164,6,33]},{"a":55441,"l":"snd_pat_c0_32","c":"Channel 0 patterns $32, $33, $36; channel 2 pattern $60, called by sounds 4 and 7: instrument $0A; 1 note; returns with command $21 at $D894.","t":"byte","b":[10,228,6,33]},{"a":55445,"l":"snd_pat_c0_34","c":"Channel 0 pattern $34; channel 2 patterns $61, $63, $66, called by sounds 4 and 7: instrument $0A; 1 note; returns with command $21 at $D898.","t":"byte","b":[10,222,6,33]},{"a":55449,"l":"snd_pat_c2_62","c":"Channel 2 patterns $62, $64, $65, $67, called by sounds 4 and 7 and 26: instrument $0A; 1 note; returns with command $21 at $D89C.","t":"byte","b":[10,198,6,33]},{"a":55453,"l":"snd_09_c0","c":"Sound 9, channel 0: instrument $37; random pattern $27-$2E; ends at $D8A1.","t":"byte","b":[55,32,39,7,0]},{"a":55458,"l":"snd_pat_c0_27","c":"Channel 0 pattern $27, called by sound 9: instrument $37; 3 notes; returns with command $21 at $D8A9.","t":"byte","b":[55,166,38,16,38,183,36,33]},{"a":55466,"l":"snd_pat_c0_28","c":"Channel 0 pattern $28, called by sound 9: instrument $5F; 2 notes; filter preset, filter sweep and slide step, filter step with slide down, loop, second loop; returns with command $21 at $D8C0.","t":"byte","b":[95,13,12,29,8,0,128,7]},{"a":55474,"t":"byte","b":[182,0,24,0,2,10,180,216]},{"a":55482,"t":"byte","b":[16,1,34,0,171,216,33]},{"a":55489,"l":"snd_pat_c0_29","c":"Channel 0 pattern $29, called by sound 9: instrument $64; 2 notes; filter preset, slide step, slides up, loop, second loop; returns with command $21 at $D8D8.","t":"byte","b":[100,13,36,6,53,6,193,0]},{"a":55497,"t":"byte","b":[9,0,2,5,201,216,16,18]},{"a":55505,"t":"byte","b":[6,51,6,34,0,201,216,33]},{"a":55513,"l":"snd_10_c0","c":"Sound 10, channel 0: instrument $14; 1 note; filter preset, a skipped byte (command $0E); ends at $D8E0.","t":"byte","b":[20,13,8,14,36,180,8,0]},{"a":55521,"l":"snd_11_c0","c":"Sound 11, channel 0: instrument $19; 2 notes; filter preset, filter sweep step, filter step, loop; ends at $D8F0.","t":"byte","b":[25,13,12,16,8,17,112,0]},{"a":55529,"t":"byte","b":[229,0,18,2,6,233,216,0]},{"a":55537,"l":"snd_11_c2","c":"Sound 11, channel 2: instrument $1E; 1 note; ends at $D8F4.","t":"byte","b":[30,167,6,0]},{"a":55541,"l":"a_D8F5","c":"Channel 0's pattern table: pattern n's address is the word at $D8F5 + 2n (n = 0-$7F). Used entries: $11-$36 and $53-$62; the others hold $00FF (0-5), $FF00 ($37-$38) or zero. (The auto label comes from the colour-RAM write STA $D8F5 at $2D6B, made with I/O switched in, which does not reach this RAM.)","t":"word","b":[255,0,255,0,255,0,255,0],"d":[255,255,255,255]},{"a":55549,"t":"word","b":[255,0,255,0,0,0,0,0],"d":[255,255,0,0]},{"a":55557,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":55565,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":55573,"t":"word","b":[0,0],"d":[0]},{"a":55575,"s":"pattern $11 -> $DA21","t":"word","b":[33,218],"d":[55841]},{"a":55577,"s":"pattern $12 -> $DA26","t":"word","b":[38,218],"d":[55846]},{"a":55579,"s":"pattern $13 -> $DA2B","t":"word","b":[43,218],"d":[55851]},{"a":55581,"l":"a_D91D","c":"Channel 0 pattern table, entry $14 (pattern $14 at $DA30). (The auto label comes from the colour-RAM write STA $D91D at $2D6E, which does not reach this RAM.)","s":"pattern $14 -> $DA30","t":"word","b":[48,218],"d":[55856]},{"a":55583,"s":"pattern $15 -> $DA35","t":"word","b":[53,218],"d":[55861]},{"a":55585,"s":"pattern $16 -> $DA3A","t":"word","b":[58,218],"d":[55866]},{"a":55587,"s":"pattern $17 -> $DA7C","t":"word","b":[124,218],"d":[55932]},{"a":55589,"s":"pattern $18 -> $DA80","t":"word","b":[128,218],"d":[55936]},{"a":55591,"s":"pattern $19 -> $DA84","t":"word","b":[132,218],"d":[55940]},{"a":55593,"s":"pattern $1A -> $DA88","t":"word","b":[136,218],"d":[55944]},{"a":55595,"s":"pattern $1B -> $DA5F","t":"word","b":[95,218],"d":[55903]},{"a":55597,"s":"pattern $1C -> $DA63","t":"word","b":[99,218],"d":[55907]},{"a":55599,"s":"pattern $1D -> $DA67","t":"word","b":[103,218],"d":[55911]},{"a":55601,"s":"pattern $1E -> $DA6B","t":"word","b":[107,218],"d":[55915]},{"a":55603,"s":"pattern $1F -> $D853","t":"word","b":[83,216],"d":[55379]},{"a":55605,"s":"pattern $20 -> $D857","t":"word","b":[87,216],"d":[55383],"x":[13693,13695]},{"a":55607,"s":"pattern $21 -> $D85B","t":"word","b":[91,216],"d":[55387]},{"a":55609,"s":"pattern $22 -> $D85F","t":"word","b":[95,216],"d":[55391]},{"a":55611,"s":"pattern $23 -> $D86D","t":"word","b":[109,216],"d":[55405]},{"a":55613,"s":"pattern $24 -> $D871","t":"word","b":[113,216],"d":[55409]},{"a":55615,"s":"pattern $25 -> $D875","t":"word","b":[117,216],"d":[55413]},{"a":55617,"s":"pattern $26 -> $D879","t":"word","b":[121,216],"d":[55417]},{"a":55619,"s":"pattern $27 -> $D8A2","t":"word","b":[162,216],"d":[55458]},{"a":55621,"s":"pattern $28 -> $D8AA","t":"word","b":[170,216],"d":[55466]},{"a":55623,"s":"pattern $29 -> $D8C1","t":"word","b":[193,216],"d":[55489]},{"a":55625,"s":"pattern $2A -> $DA04","t":"word","b":[4,218],"d":[55812]},{"a":55627,"s":"pattern $2B -> $DA04","t":"word","b":[4,218],"d":[55812]},{"a":55629,"s":"pattern $2C -> $DA04","t":"word","b":[4,218],"d":[55812]},{"a":55631,"s":"pattern $2D -> $DA04","t":"word","b":[4,218],"d":[55812]},{"a":55633,"s":"pattern $2E -> $DA04","t":"word","b":[4,218],"d":[55812]},{"a":55635,"s":"pattern $2F -> $D88D","t":"word","b":[141,216],"d":[55437]},{"a":55637,"s":"pattern $30 -> $D88D","t":"word","b":[141],"d":[]},{"a":55638,"l":"f_D956","c":"Channel 0 pattern table, high byte of entry $30 (pattern $30 at $D88D). (The auto label comes from the colour-RAM write STA $D956,Y at $3E96, which does not reach this RAM.)","t":"word","b":[216],"d":[]},{"a":55639,"s":"pattern $31 -> $D88D","t":"word","b":[141,216],"d":[55437]},{"a":55641,"s":"pattern $32 -> $D891","t":"word","b":[145,216],"d":[55441]},{"a":55643,"s":"pattern $33 -> $D891","t":"word","b":[145,216],"d":[55441]},{"a":55645,"s":"pattern $34 -> $D895","t":"word","b":[149,216],"d":[55445]},{"a":55647,"s":"pattern $35 -> $D88D","t":"word","b":[141,216],"d":[55437]},{"a":55649,"s":"pattern $36 -> $D891","t":"word","b":[145,216,0,255,0,255,0,0],"d":[55441,65280,65280,0]},{"a":55657,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":55665,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":55673,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":55681,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":55689,"t":"word","b":[0,0,0,0,0,0,0,0],"d":[0,0,0,0]},{"a":55697,"t":"word","b":[0,0,0,0],"d":[0,0]},{"a":55701,"l":"snd_patterns_c0_50","c":"Channel 0 pattern table from entry $50: $50-$52 unused (zero), $53-$62 the patterns of sound 21 ($DBBB-$DCD1).","t":"word","b":[0,0,0,0,255,0],"d":[0,0,255]},{"a":55707,"s":"pattern $53 -> $DCD1","t":"word","b":[209,220],"d":[56529]},{"a":55709,"s":"pattern $54 -> $DBBB","t":"word","b":[187,219],"d":[56251]},{"a":55711,"s":"pattern $55 -> $DBD9","t":"word","b":[217,219],"d":[56281]},{"a":55713,"s":"pattern $56 -> $DBF7","t":"word","b":[247,219],"d":[56311]},{"a":55715,"s":"pattern $57 -> $DC15","t":"word","b":[21,220],"d":[56341]},{"a":55717,"s":"pattern $58 -> $DC33","t":"word","b":[51,220],"d":[56371]},{"a":55719,"s":"pattern $59 -> $DC51","t":"word","b":[81,220],"d":[56401]},{"a":55721,"s":"pattern $5A -> $DC71","t":"word","b":[113,220],"d":[56433]},{"a":55723,"s":"pattern $5B -> $DCA1","t":"word","b":[161,220],"d":[56481]},{"a":55725,"s":"pattern $5C -> $DCA1","t":"word","b":[161,220],"d":[56481]},{"a":55727,"s":"pattern $5D -> $DC71","t":"word","b":[113,220],"d":[56433]},{"a":55729,"s":"pattern $5E -> $DCD1","t":"word","b":[209,220],"d":[56529]},{"a":55731,"s":"pattern $5F -> $DBBB","t":"word","b":[187,219],"d":[56251]},{"a":55733,"s":"pattern $60 -> $DC51","t":"word","b":[81,220],"d":[56401]},{"a":55735,"s":"pattern $61 -> $DC33","t":"word","b":[51,220],"d":[56371]},{"a":55737,"s":"pattern $62 -> $DC15","t":"word","b":[21,220],"d":[56341]},{"a":55739,"l":"snd_13_c1","c":"Sound 13, channel 1: instrument $32; 1 note; filter preset; ends at $D9C0.","t":"byte","b":[50,13,20,254,36,0,0]},{"a":55746,"l":"snd_14_c1","c":"Sound 14, channels 1 and 2: instrument $3C; 1 note; filter preset, filter sweep step, filter step, loop, slide step, slides down, filter step with slide up, jump; then loops for ever from $D9C8.","t":"byte","b":[60,13,24,17,128,0,166,13]},{"a":55754,"t":"byte","b":[18,2,8,200,217,6,0,10]},{"a":55762,"t":"byte","b":[8,16,2,10,210,217,17,112]},{"a":55770,"t":"byte","b":[255,6,0,0,25,13,2,11]},{"a":55778,"t":"byte","b":[222,217,17,83,243,25,13,25]},{"a":55786,"t":"byte","b":[42,2,8,231,217,6,96,0]},{"a":55794,"t":"byte","b":[17,18,0,25,18,2,16,245]},{"a":55802,"t":"byte","b":[217,25,40,2,16,251,217,1]},{"a":55810,"t":"byte","b":[200,217]},{"a":55812,"l":"snd_16_silence","c":"Silence: instrument $00, then the 0 that ends the sequence. Sound 16 on all three channels (the stop sound) and channel 0 patterns $2A-$2E; as one of sound 9's random patterns ($27-$2E) it ends the channel there, since it has no command $21.","t":"byte","b":[0,0]},{"a":55814,"l":"snd_15_c0","c":"Sound 15, channel 0: instrument $41; 2 notes; random pattern $11-$14; random pattern $15-$16; filter preset, filter step, loop, jump; then loops for ever from $DA13.","t":"byte","b":[65,13,28,32,17,3,183,0]},{"a":55822,"t":"byte","b":[18,2,16,12,218,183,44,2]},{"a":55830,"t":"byte","b":[1,19,218,32,21,1,18,1]},{"a":55838,"t":"byte","b":[19,218,0]},{"a":55841,"l":"snd_pat_c0_11","c":"Channel 0 pattern $11, called by sound 15: instrument $41; filter sweep step; returns with command $21 at $DA25.","t":"byte","b":[65,17,56,0,33]},{"a":55846,"l":"snd_pat_c0_12","c":"Channel 0 pattern $12, called by sound 15: instrument $41; filter sweep step; returns with command $21 at $DA2A.","t":"byte","b":[65,17,64,0,33]},{"a":55851,"l":"snd_pat_c0_13","c":"Channel 0 pattern $13, called by sound 15: instrument $41; filter sweep step; returns with command $21 at $DA2F.","t":"byte","b":[65,17,80,0,33]},{"a":55856,"l":"snd_pat_c0_14","c":"Channel 0 pattern $14, called by sound 15: instrument $41; filter sweep step; returns with command $21 at $DA34.","t":"byte","b":[65,17,96,0,33]},{"a":55861,"l":"snd_pat_c0_15","c":"Channel 0 pattern $15, called by sound 15: instrument $41; filter sweep step; returns with command $21 at $DA39.","t":"byte","b":[65,17,112,0,33]},{"a":55866,"l":"snd_pat_c0_16","c":"Channel 0 pattern $16, called by sound 15: instrument $41; filter sweep step; returns with command $21 at $DA3E.","t":"byte","b":[65,17,120,255,33]},{"a":55871,"l":"snd_19_c1","c":"Sound 19, channel 1: instrument $4B; 2 notes; filter preset, a skipped byte (command $0E), filter sweep step, filter step; ends at $DA4C.","t":"byte","b":[75,13,32,14,6,212,20,17]},{"a":55879,"t":"byte","b":[112,255,18,147,6,0]},{"a":55885,"l":"snd_13_c2","c":"Sound 13, channel 2: instrument $50; 1 note; ends at $DA50.","t":"byte","b":[80,215,36,0]},{"a":55889,"l":"snd_17_c0","c":"Sound 17, channel 0: instrument $46; random pattern $1B-$1E; slide step, slides up, loop; ends at $DA5E.","t":"byte","b":[70,32,27,3,6,85,7,9]},{"a":55897,"t":"byte","b":[0,2,4,88,218,0]},{"a":55903,"l":"snd_pat_c0_1b","c":"Channel 0 pattern $1B, called by sound 17: instrument $46; 1 note; returns with command $21 at $DA62.","t":"byte","b":[70,209,0,33]},{"a":55907,"l":"snd_pat_c0_1c","c":"Channel 0 pattern $1C, called by sound 17: instrument $46; 1 note; returns with command $21 at $DA66.","t":"byte","b":[70,161,0,33]},{"a":55911,"l":"snd_pat_c0_1d","c":"Channel 0 pattern $1D, called by sound 17: instrument $46; 1 note; returns with command $21 at $DA6A.","t":"byte","b":[70,250,0,33]},{"a":55915,"l":"snd_pat_c0_1e","c":"Channel 0 pattern $1E, called by sound 17: instrument $46; 1 note; returns with command $21 at $DA6E.","t":"byte","b":[70,203,0,33]},{"a":55919,"l":"snd_18_c0","c":"Sound 18, channel 0: instrument $55; random pattern $17-$1A; a skipped byte (command $0E); ends at $DA75.","t":"byte","b":[85,14,42,32,23,3,0]},{"a":55926,"l":"snd_18_c1","c":"Sound 18, channel 1: instrument $5A; 1 note; a skipped byte (command $0E); ends at $DA7B.","t":"byte","b":[90,14,42,150,14,0]},{"a":55932,"l":"snd_pat_c0_17","c":"Channel 0 pattern $17, called by sound 18: instrument $55; 1 note; returns with command $21 at $DA7F.","t":"byte","b":[85,223,14,33]},{"a":55936,"l":"snd_pat_c0_18","c":"Channel 0 pattern $18, called by sound 18: instrument $55; 1 note; returns with command $21 at $DA83.","t":"byte","b":[85,175,14,33]},{"a":55940,"l":"snd_pat_c0_19","c":"Channel 0 pattern $19, called by sound 18: instrument $55; 1 note; returns with command $21 at $DA87.","t":"byte","b":[85,174,14,33]},{"a":55944,"l":"snd_pat_c0_1a","c":"Channel 0 pattern $1A, called by sound 18: instrument $55; 1 note; returns with command $21 at $DA8B.","t":"byte","b":[85,206,14,33]},{"a":55948,"l":"snd_25_c0","c":"Sound 25, channel 0: instrument $50; random pattern $BC-$C3; random pattern $C4-$CB; filter preset, jump; then loops for ever from $DA8F.","t":"byte","b":[80,13,40,32,188,7,32,196]},{"a":55956,"t":"byte","b":[7,1,143,218]},{"a":55960,"l":"snd_pat_bc","c":"Shared pattern $BC, called by sound 25: instrument $50; slide step; returns with command $21 at $DA9C.","t":"byte","b":[80,6,51,2,33]},{"a":55965,"l":"snd_pat_bd","c":"Shared pattern $BD, called by sound 25: instrument $50; slide step; returns with command $21 at $DAA1.","t":"byte","b":[80,6,85,3,33]},{"a":55970,"l":"snd_pat_be","c":"Shared pattern $BE, called by sound 25: instrument $50; slide step; returns with command $21 at $DAA6.","t":"byte","b":[80,6,240,7,33]},{"a":55975,"l":"snd_pat_bf","c":"Shared pattern $BF, called by sound 25: instrument $55; slide step; returns with command $21 at $DAAB.","t":"byte","b":[85,6,119,71,33]},{"a":55980,"l":"snd_pat_c0","c":"Shared pattern $C0, called by sound 25: instrument $55; slide step; returns with command $21 at $DAB0.","t":"byte","b":[85,6,153,51,33]},{"a":55985,"l":"snd_pat_c1","c":"Shared pattern $C1, called by sound 25: instrument $55; slide step; returns with command $21 at $DAB5.","t":"byte","b":[85,6,238,34,33]},{"a":55990,"l":"snd_pat_c2","c":"Shared pattern $C2, called by sound 25: instrument $55; slide step; returns with command $21 at $DABA.","t":"byte","b":[85,6,33,68,33]},{"a":55995,"l":"snd_pat_c3","c":"Shared pattern $C3, called by sound 25: instrument $55; slide step; returns with command $21 at $DABF.","t":"byte","b":[85,6,15,63,33]},{"a":56000,"l":"snd_pat_c4","c":"Shared pattern $C4, called by sound 25: instrument $55; 1 note; returns with command $21 at $DAC3.","t":"byte","b":[85,16,30,33]},{"a":56004,"l":"snd_pat_c5","c":"Shared pattern $C5, called by sound 25: instrument $55; 1 note; returns with command $21 at $DAC7.","t":"byte","b":[85,16,22,33]},{"a":56008,"l":"snd_pat_c6","c":"Shared pattern $C6, called by sound 25: instrument $55; 1 note; returns with command $21 at $DACB.","t":"byte","b":[85,16,24,33]},{"a":56012,"l":"snd_pat_c7","c":"Shared pattern $C7, called by sound 25: instrument $55; slides up, loop; returns with command $21 at $DAD3.","t":"byte","b":[85,9,0,2,30,205,218,33]},{"a":56020,"l":"snd_pat_c8","c":"Shared pattern $C8, called by sound 25: instrument $55; slides down, loop; returns with command $21 at $DADB.","t":"byte","b":[85,8,0,2,40,213,218,33]},{"a":56028,"l":"snd_pat_c9","c":"Shared pattern $C9, called by sound 25: instrument $55; slides up, loop; returns with command $21 at $DAE3.","t":"byte","b":[85,9,0,2,20,221,218,33]},{"a":56036,"l":"snd_pat_ca","c":"Shared pattern $CA, called by sound 25: instrument $64; slides down, loop; returns with command $21 at $DAEB.","t":"byte","b":[100,8,0,2,50,229,218,33]},{"a":56044,"l":"snd_pat_cb","c":"Shared pattern $CB, called by sound 25: instrument $5F; slides up, loop; returns with command $21 at $DAF3.","t":"byte","b":[95,9,12,2,10,237,218,33]},{"a":56052,"l":"snd_26_c2","c":"Sound 26, channel 2: instrument $B4; random pattern $67-$6E; filter preset, the end flag (command $26); ends at $DAFB.","t":"byte","b":[180,13,80,32,103,7,38,0]},{"a":56060,"l":"snd_pat_c2_68","c":"Channel 2 pattern $68, called by sound 26: instrument $B4; 1 note; loop; returns with command $21 at $DB03.","t":"byte","b":[180,183,0,2,48,253,218,33]},{"a":56068,"l":"snd_pat_c2_69","c":"Channel 2 pattern $69, called by sound 26: instrument $73; 7 notes; returns with command $21 at $DB13.","t":"byte","b":[115,196,10,212,12,196,10,212]},{"a":56076,"t":"byte","b":[12,148,12,148,12,197,10,33]},{"a":56084,"l":"snd_pat_c2_6a","c":"Channel 2 pattern $6A, called by sound 26: instrument $5F; 2 notes; automatic slide step, slides down, loop, pulse-width sweep step, pulse-width step, slide step; returns with command $21 at $DB31.","t":"byte","b":[95,198,0,7,8,2,2,5]},{"a":56092,"t":"byte","b":[24,219,19,97,33,20,242,0]},{"a":56100,"t":"byte","b":[2,16,33,219,6,16,0,8]},{"a":56108,"t":"byte","b":[1,2,48,40,219,33]},{"a":56114,"l":"snd_pat_c2_6b","c":"Channel 2 pattern $6B, called by sound 26: instrument $0F; 3 notes; slide step, slides down, loop, slides up, instrument change; returns with command $21 at $DB53.","t":"byte","b":[15,197,12,6,255,0,8,12]},{"a":56122,"t":"byte","b":[2,26,53,219,9,18,2,26]},{"a":56130,"t":"byte","b":[62,219,16,10,12,65,183]},{"a":56137,"l":"a_DB49","c":"Inside channel 2 pattern $6B ($DB32). (The auto label comes from the colour-RAM write STA $DB49 at $2D01, which does not reach this RAM.)","t":"byte","b":[0,6,0,16,8,0,2,80]},{"a":56145,"t":"byte","b":[77,219,33]},{"a":56148,"l":"snd_pat_c2_6c","c":"Channel 2 patterns $6C, $6D, called by sound 26: instrument $32; 21 notes; returns with command $21 at $DB7F.","t":"byte","b":[50,229,26,213,10,197,10,148]},{"a":56156,"t":"byte","b":[10,228,10,220,10,180,14,164]},{"a":56164,"t":"byte","b":[10,197,26,180,10,156,10,228]},{"a":56172,"t":"byte","b":[10,212,10,204,10,164,14,228]},{"a":56180,"t":"byte","b":[10,148,26,193,14,209,14,217]},{"a":56188,"t":"byte","b":[14,145,14,33]},{"a":56192,"l":"snd_pat_c2_6e","c":"Channel 2 pattern $6E, called by sound 26: instrument $32; 4 notes; loop; returns with command $21 at $DB91.","t":"byte","b":[50,193,14,249,14,2,2,129]},{"a":56200,"t":"byte","b":[219,217,14,161,14,2,2,137]},{"a":56208,"t":"byte","b":[219,33]},{"a":56210,"l":"snd_21_c0","c":"Sound 21, channel 0: instrument $69; random pattern $B8-$BB; random pattern $53-$62; ends at $DB99.","t":"byte","b":[105,32,184,3,32,83,15]},{"a":56217,"l":"a_DB99","c":"The 0 that ends sound 21's channel-0 sequence ($DB92). (The auto label comes from the colour-RAM write STA $DB99 at $1832, which does not reach this RAM.)","t":"byte","b":[0]},{"a":56218,"l":"snd_21_c1","c":"Sound 21, channel 1: instrument $69; random pattern $B8-$BB; random pattern $60-$6F; the end flag (command $26); ends at $DBA2.","t":"byte","b":[105,32,184,3,32,96,15,38]},{"a":56226,"t":"byte","b":[0]},{"a":56227,"l":"snd_pat_b8","c":"Shared pattern $B8, called by sound 21: instrument $69; 1 note; filter preset; returns with command $21 at $DBA8.","t":"byte","b":[105,13,44,183,4,33]},{"a":56233,"l":"snd_pat_b9","c":"Shared pattern $B9, called by sound 21: instrument $69; 1 note; filter preset; returns with command $21 at $DBAE.","t":"byte","b":[105,13,48,183,4,33]},{"a":56239,"l":"snd_pat_ba","c":"Shared pattern $BA, called by sound 21: instrument $69; 1 note; filter preset; returns with command $21 at $DBB4.","t":"byte","b":[105,13,52,183,4,33]},{"a":56245,"l":"snd_pat_bb","c":"Shared pattern $BB, called by sound 21: instrument $69; 1 note; filter preset; returns with command $21 at $DBBA.","t":"byte","b":[105,13,56,183,4,33]},{"a":56251,"l":"snd_pat_c0_54","c":"Channel 0 patterns $54, $5F, called by sound 21: instrument $6E; 1 note; filter preset, filter sweep and slide step, filter step with slide down, loop; returns with command $21 at $DBCB.","t":"byte","b":[110,13,48,29,128,255,240,0]},{"a":56259,"t":"byte","b":[180,0,24,0,2,10,197,219]},{"a":56267,"t":"byte","b":[33]},{"a":56268,"l":"snd_pat_c1_61","c":"Channel 1 patterns $61, $6C, called by sound 21: instrument $73; 1 note; slide step, slides down, loop; returns with command $21 at $DBD8.","t":"byte","b":[115,6,240,0,180,0,8,0]},{"a":56276,"t":"byte","b":[2,10,210,219,33]},{"a":56281,"l":"snd_pat_c0_55","c":"Channel 0 pattern $55, called by sound 21: instrument $6E; 1 note; filter preset, filter sweep and slide step, filter step with slide up, loop; returns with command $21 at $DBE9.","t":"byte","b":[110,13,48,29,160,0,16,1]},{"a":56289,"t":"byte","b":[162,0,25,0,2,10,227,219]},{"a":56297,"t":"byte","b":[33]},{"a":56298,"l":"snd_pat_c1_62","c":"Channel 1 pattern $62, called by sound 21: instrument $73; 1 note; slide step, slides up, loop; returns with command $21 at $DBF6.","t":"byte","b":[115,6,16,1,162,0,9,0]},{"a":56306,"t":"byte","b":[2,10,240,219,33]},{"a":56311,"l":"snd_pat_c0_56","c":"Channel 0 pattern $56, called by sound 21: instrument $6E; 1 note; filter preset, filter sweep and slide step, filter step with slide up, loop; returns with command $21 at $DC07.","t":"byte","b":[110,13,56,29,160,0,16,2]},{"a":56319,"t":"byte","b":[161,0,25,0,2,17,1,220]},{"a":56327,"t":"byte","b":[33]},{"a":56328,"l":"snd_pat_c1_63","c":"Channel 1 pattern $63, called by sound 21: instrument $73; 1 note; slide step, filter step with slide up, loop; returns with command $21 at $DC14.","t":"byte","b":[115,6,16,2,161,0,25,0]},{"a":56336,"t":"byte","b":[2,17,14,220,33]},{"a":56341,"l":"snd_pat_c0_57","c":"Channel 0 patterns $57, $62, called by sound 21: instrument $6E; 1 note; filter preset, filter sweep and slide step, filter step with slide up, loop; returns with command $21 at $DC25.","t":"byte","b":[110,13,44,29,252,255,224,0]},{"a":56349,"t":"byte","b":[161,0,25,0,2,12,31,220]},{"a":56357,"t":"byte","b":[33]},{"a":56358,"l":"snd_pat_c1_64","c":"Channel 1 patterns $64, $6F, called by sound 21: instrument $73; 1 note; slide step, slides up, loop; returns with command $21 at $DC32.","t":"byte","b":[115,6,224,0,161,0,9,0]},{"a":56366,"t":"byte","b":[2,12,44,220,33]},{"a":56371,"l":"snd_pat_c0_58","c":"Channel 0 patterns $58, $61, called by sound 21: instrument $6E; 1 note; filter preset, filter sweep and slide step, filter step with slide down, loop; returns with command $21 at $DC43.","t":"byte","b":[110,13,44,29,16,0,48,0]},{"a":56379,"t":"byte","b":[243,0,24,0,2,8,61,220]},{"a":56387,"t":"byte","b":[33]},{"a":56388,"l":"snd_pat_c1_65","c":"Channel 1 patterns $65, $6E, called by sound 21: instrument $73; 1 note; slide step, slides down, loop; returns with command $21 at $DC50.","t":"byte","b":[115,6,48,0,243,0,8,0]},{"a":56396,"t":"byte","b":[2,8,74,220,33]},{"a":56401,"l":"snd_pat_c0_59","c":"Channel 0 patterns $59, $60, called by sound 21: instrument $6E; 2 notes; filter preset, filter sweep and slide step, filter step with slide down, loop; returns with command $21 at $DC63.","t":"byte","b":[110,13,44,29,48,2,48,2]},{"a":56409,"t":"byte","b":[160,1,172,0,24,0,2,11]},{"a":56417,"t":"byte","b":[93,220,33]},{"a":56420,"l":"snd_pat_c1_66","c":"Channel 1 patterns $66, $6D, called by sound 21: instrument $73; 1 note; slide step, slides down, loop; returns with command $21 at $DC70.","t":"byte","b":[115,6,160,1,172,0,8,0]},{"a":56428,"t":"byte","b":[2,11,106,220,33]},{"a":56433,"l":"snd_pat_c0_5a","c":"Channel 0 patterns $5A, $5D, called by sound 21: instrument $6E; 1 note; filter preset, filter sweep and slide step, filter step with slide up, loop, slide step, slides down; returns with command $21 at $DC8A.","t":"byte","b":[110,13,36,29,0,2,0,1]},{"a":56441,"t":"byte","b":[220,0,25,0,2,10,123,220]},{"a":56449,"t":"byte","b":[6,0,2,8,0,2,8,132]},{"a":56457,"t":"byte","b":[220,33]},{"a":56459,"l":"snd_pat_c1_67","c":"Channel 1 patterns $67, $6A, called by sound 21: instrument $73; 1 note; slide step, slides up, loop, slides down; returns with command $21 at $DCA0.","t":"byte","b":[115,6,0,1,220,0,9,0]},{"a":56467,"t":"byte","b":[2,10,145,220,6,0,2,8]},{"a":56475,"t":"byte","b":[0,2,8,154,220,33]},{"a":56481,"l":"snd_pat_c0_5b","c":"Channel 0 patterns $5B, $5C, called by sound 21: instrument $6E; 1 note; filter preset, filter sweep and slide step, filter step with slide down, loop, slide step, filter step with slide up; returns with command $21 at $DCBA.","t":"byte","b":[110,13,36,29,16,2,80,0]},{"a":56489,"t":"byte","b":[251,0,24,0,2,10,171,220]},{"a":56497,"t":"byte","b":[6,0,1,25,0,2,10,180]},{"a":56505,"t":"byte","b":[220,33]},{"a":56507,"l":"snd_pat_c1_68","c":"Channel 1 patterns $68, $69, called by sound 21: instrument $73; 1 note; slide step, slides down, loop, slides up; returns with command $21 at $DCD0.","t":"byte","b":[115,6,80,0,251,0,8,0]},{"a":56515,"t":"byte","b":[2,10,193,220,6,0,1,9]},{"a":56523,"t":"byte","b":[0,2,8,202,220,33]},{"a":56529,"l":"snd_pat_c0_53","c":"Channel 0 patterns $53, $5E, called by sound 21: instrument $6E; 1 note; filter preset, slide step, filter step with slide down, loop, filter step with slide up; returns with command $21 at $DCEA.","t":"byte","b":[110,13,60,6,48,0,212,0]},{"a":56537,"t":"byte","b":[24,0,2,8,217,220,13,44]},{"a":56545,"t":"byte","b":[6,48,0,25,0,2,12,228]},{"a":56553,"t":"byte","b":[220,33]},{"a":56555,"l":"snd_pat_c1_60","c":"Channel 1 patterns $60, $6B, called by sound 21: instrument $73; 1 note; slide step, filter step with slide down, loop, filter step with slide up; returns with command $21 at $DD00.","t":"byte","b":[115,6,48,0,212,0,24,0]},{"a":56563,"t":"byte","b":[2,8,241,220,6,48,0,25]},{"a":56571,"t":"byte","b":[0,2,12,250,220,33]},{"a":56577,"l":"snd_22_c1","c":"Sound 22, channel 1: instrument $A5; 4 notes; a skipped byte (command $0E), filter preset, filter sweep step, filter step, slide step, slides down, loop, instrument change, the end flag (command $26); ends at $DD36.","t":"byte","b":[165,14,48,13,68,17,160,255]},{"a":56585,"t":"byte","b":[148,0,18,6,32,0,8,0]},{"a":56593,"t":"byte","b":[2,8,11,221,8,56,13,72]},{"a":56601,"t":"byte","b":[17,240,255,12,170,197,0,18]},{"a":56609,"t":"byte","b":[2,96,30,221,199,0,2,64]},{"a":56617,"t":"byte","b":[37,221,17,8,0,196,0,18]},{"a":56625,"t":"byte","b":[2,96,46,221,38,0]},{"a":56631,"l":"snd_23_c0","c":"Sound 23, channel 0: instrument $AF; 1 note; jump; then loops for ever from $DD38.","t":"byte","b":[175,254,12,1,56,221]},{"a":56637,"l":"snd_23_c1","c":"Sound 23, channel 1: instrument $AF; 2 notes; jump; then loops for ever from $DD40.","t":"byte","b":[175,16,2,158,12,1,64,221]},{"a":56645,"l":"snd_orphan_dd45","c":"A sequence that nothing points to (no word $DD45 in the image, no sound or pattern entry): instrument $B4, filter preset $4C, note $C0 played twice (loop), filter preset $04, end.","t":"byte","b":[180,13,76,192,54,2,1,72]},{"a":56653,"t":"byte","b":[221,13,4,0]},{"a":56657,"l":"snd_24_c1","c":"Sound 24, channel 1: instrument $B9; 2 notes; slide step, slides up, loop, slides down, jump; then loops for ever from $DD52.","t":"byte","b":[185,192,0,6,24,0,9,0]},{"a":56665,"t":"byte","b":[2,48,84,221,160,0,6,80]},{"a":56673,"t":"byte","b":[0,9,0,2,112,98,221,6]},{"a":56681,"t":"byte","b":[19,0,8,0,2,64,104,221]},{"a":56689,"t":"byte","b":[6,36,0,9,0,2,96,116]},{"a":56697,"t":"byte","b":[221,6,48,0,8,0,2,32]},{"a":56705,"t":"byte","b":[125,221,6,16,0,9,0,2]},{"a":56713,"t":"byte","b":[80,134,221,1,82,221]},{"a":56719,"l":"snd_unused_dd8f","c":"$FF and then zeros to $DDFF, after the last sequence (sound 24 ends with a jump back at $DD8C). Nothing reads it.","t":"byte","b":[255,0,0,0,0,0,0,0]},{"a":56727,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56735,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56743,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56751,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56759,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56767,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56775,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56783,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56791,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56799,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56807,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56815,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56823,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":56831,"t":"byte","b":[0]},{"a":56832,"t":"gap","n":512},{"a":57344,"l":"act53_dance","c":"Activity 53, the dance (the parser queues it after activity 9 for DANCE, MOON or SHOW). Counts its passes in act53_tick, then switches on the phase $4C through act53_phases: 0 walk out if a record is playing, 1 wait to arrive ($8FA7), 2 choose 3, 7, 11 or 15 moves, 3 choose the next move, 4-7 the moves (7 is activity 37's handler $22D5), 8 back to 3, 9 end ($8F0E).","t":"code","b":[238,83,224],"m":"inc","o":"act53_tick","oa":57427},{"a":57347,"t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":57350,"l":"act53_phases","c":"Phase table of activity 53 for the switch at $E003 (index $4C), handler addresses minus one: $E01A, $8FA7, $E046, $E0AB, $E114, $E098, $E06F, $22D5, $E0A6, $8F0E.","t":"word","b":[25,224,166,143,69,224,170,224],"d":[57369,36774,57413,57514]},{"a":57358,"t":"word","b":[19,225,151,224,110,224,212,34],"d":[57619,57495,57454,8916]},{"a":57366,"t":"word","b":[165,224,13,143],"d":[57509,36621]},{"a":57370,"l":"act53_start","c":"Activity 53 phase 0: without a record playing ($801E, music_playing = 0) jumps to phase 9 and ends. Otherwise copies location 0 into the scratch location 54 ($16AE), moves it $14 half-pixels right ($1DA3), makes it the person's target ($03C0 = $36) and, unless he is already there ($1E11), sets his movement state $03BC to 2; next phase.","t":"code","b":[173,30,128],"m":"lda","o":"music_playing","oa":32798},{"a":57373,"t":"code","b":[208,5],"m":"bne","o":"b_E024","oa":57380},{"a":57375,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":57377,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":57379,"t":"code","b":[96],"m":"rts"},{"a":57380,"l":"b_E024","t":"code","b":[162,0],"m":"ldx","o":"#$00","x":[57373]},{"a":57382,"t":"code","b":[32,174,22],"m":"jsr","o":"set_custom_location","oa":5806},{"a":57385,"t":"code","b":[173,163,29],"m":"lda","o":"location_x_custom","oa":7587},{"a":57388,"t":"code","b":[24],"m":"clc"},{"a":57389,"t":"code","b":[105,20],"m":"adc","o":"#$14"},{"a":57391,"t":"code","b":[141,163,29],"m":"sta","o":"location_x_custom","oa":7587},{"a":57394,"t":"code","b":[169,54],"m":"lda","o":"#$36"},{"a":57396,"t":"code","b":[141,192,3],"m":"sta","o":"move_target","oa":960},{"a":57399,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":57401,"t":"code","b":[32,17,30],"m":"jsr","o":"at_target","oa":7697},{"a":57404,"t":"code","b":[240,5],"m":"beq","o":"b_E043","oa":57411},{"a":57406,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":57408,"t":"code","b":[141,188,3],"m":"sta","o":"move_state","oa":956},{"a":57411,"l":"b_E043","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[57404]},{"a":57414,"l":"act53_count_moves","c":"Activity 53 phase 2: act53_moves_left = (random AND $0F) OR 3, so 3, 7, 11 or 15 moves; next phase.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":57417,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":57419,"t":"code","b":[9,3],"m":"ora","o":"#$03"},{"a":57421,"t":"code","b":[141,84,224],"m":"sta","o":"act53_moves_left","oa":57428},{"a":57424,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":57427,"l":"act53_tick","c":"Activity 53's pass counter: incremented on every call ($E000), zeroed when a move is chosen ($E0AD). act53_step_gate acts on every fourth value and ends a move when it wraps to 0; the moves take their pose and facing from its bits.","t":"byte","b":[0],"x":[57344,57429,57436,57458,57465,57517,57623,57629]},{"a":57428,"l":"act53_moves_left","c":"Dance moves left (3, 7, 11 or 15 from act53_count_moves), counted down by act53_choose_move.","t":"byte","b":[0],"x":[57421,57532,57537]},{"a":57429,"l":"act53_step_gate","c":"Gate at the start of each dance move handler: returns from the handler (PLA PLA RTS) unless act53_tick is a multiple of 4; goes back to phase 3 (act53_next_move) when act53_tick has wrapped to 0 or a request is waiting ($8F86); otherwise returns to the handler.","t":"code","b":[173,83,224],"m":"lda","o":"act53_tick","oa":57427,"x":[57455,57496,57620]},{"a":57432,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":57434,"t":"code","b":[208,16],"m":"bne","o":"b_E06C","oa":57452},{"a":57436,"t":"code","b":[173,83,224],"m":"lda","o":"act53_tick","oa":57427},{"a":57439,"t":"code","b":[240,6],"m":"beq","o":"b_E067","oa":57447},{"a":57441,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":57444,"t":"code","b":[208,1],"m":"bne","o":"b_E067","oa":57447},{"a":57446,"t":"code","b":[96],"m":"rts"},{"a":57447,"l":"b_E067","t":"code","b":[104],"m":"pla","x":[57439,57444]},{"a":57448,"t":"code","b":[104],"m":"pla"},{"a":57449,"t":"code","b":[76,166,224],"m":"jmp","o":"act53_next_move","oa":57510},{"a":57452,"l":"b_E06C","t":"code","b":[104],"m":"pla","x":[57434]},{"a":57453,"t":"code","b":[104],"m":"pla"},{"a":57454,"t":"code","b":[96],"m":"rts"},{"a":57455,"l":"act53_poses_up","c":"Activity 53 phase 6, a move: every fourth pass sets pose act53_tick/16 AND 7 with facing 8 or 0 by bit 2 of act53_tick.","t":"code","b":[32,85,224],"m":"jsr","o":"act53_step_gate","oa":57429},{"a":57458,"t":"code","b":[173,83,224],"m":"lda","o":"act53_tick","oa":57427},{"a":57461,"t":"code","b":[41,4],"m":"and","o":"#$04"},{"a":57463,"t":"code","b":[10],"m":"asl","o":"a"},{"a":57464,"t":"code","b":[170],"m":"tax"},{"a":57465,"t":"code","b":[173,83,224],"m":"lda","o":"act53_tick","oa":57427},{"a":57468,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":57469,"l":"j_E07D","t":"code","b":[74],"m":"lsr","o":"a","x":[57635]},{"a":57470,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":57471,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":57472,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":57474,"l":"act53_set_pose","c":"Common tail of the dance moves: facing X to $039A, figure_set_pose ($1ADF) for the person with pose A, sets bit 1 (rebuild) of his flags $03C4 and clears $037C.","t":"code","b":[142,154,3],"m":"stx","o":"fig_mirror","oa":922,"x":[57507]},{"a":57477,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":57479,"t":"code","b":[32,223,26],"m":"jsr","o":"figure_set_pose","oa":6879},{"a":57482,"t":"code","b":[173,196,3],"m":"lda","o":"fig_flags","oa":964},{"a":57485,"t":"code","b":[9,2],"m":"ora","o":"#$02"},{"a":57487,"t":"code","b":[141,196,3],"m":"sta","o":"fig_flags","oa":964},{"a":57490,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":57492,"t":"code","b":[141,124,3],"m":"sta","o":"head_turn_timer","oa":892},{"a":57495,"t":"code","b":[96],"m":"rts"},{"a":57496,"l":"act53_turns","c":"Activity 53 phase 5, a move: every fourth pass pose 4 with the facing $039A flipped (EOR 8).","t":"code","b":[32,85,224],"m":"jsr","o":"act53_step_gate","oa":57429},{"a":57499,"t":"code","b":[173,154,3],"m":"lda","o":"fig_mirror","oa":922},{"a":57502,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":57504,"t":"code","b":[170],"m":"tax"},{"a":57505,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":57507,"t":"code","b":[76,130,224],"m":"jmp","o":"act53_set_pose","oa":57474},{"a":57510,"l":"act53_next_move","c":"Activity 53 phase 8: sets the phase back to 3 (act53_choose_move); also where act53_step_gate leaves a move.","t":"code","b":[169,3],"m":"lda","o":"#$03","x":[57449]},{"a":57512,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":57514,"t":"code","b":[96],"m":"rts"},{"a":57515,"l":"act53_choose_move","c":"Activity 53 phase 3: zeroes act53_tick and $68. Finishes (act53_finish) when a request is waiting ($8F86), the record has stopped ($801E = 0) or no moves are left; otherwise counts a move down and sets the phase to 4 + random 0-3, and the first time sets the head (figure 4) to pose $1E ($038F, $ACF1, $03F4 = 8, $03C8 = $82).","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":57517,"t":"code","b":[141,83,224],"m":"sta","o":"act53_tick","oa":57427},{"a":57520,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":57522,"t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":57525,"t":"code","b":[208,52],"m":"bne","o":"act53_finish","oa":57579},{"a":57527,"t":"code","b":[173,30,128],"m":"lda","o":"music_playing","oa":32798},{"a":57530,"t":"code","b":[240,47],"m":"beq","o":"act53_finish","oa":57579},{"a":57532,"t":"code","b":[173,84,224],"m":"lda","o":"act53_moves_left","oa":57428},{"a":57535,"t":"code","b":[240,42],"m":"beq","o":"act53_finish","oa":57579},{"a":57537,"t":"code","b":[206,84,224],"m":"dec","o":"act53_moves_left","oa":57428},{"a":57540,"t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494},{"a":57543,"t":"code","b":[41,3],"m":"and","o":"#$03"},{"a":57545,"t":"code","b":[56],"m":"sec"},{"a":57546,"t":"code","b":[101,76],"m":"adc","o":"activity_phase","oa":76},{"a":57548,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":57550,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":57552,"t":"code","b":[205,143,3],"m":"cmp","o":"fig_frame_head","oa":911},{"a":57555,"t":"code","b":[240,21],"m":"beq","o":"r_E0EA","oa":57578},{"a":57557,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":57560,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":57563,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":57565,"t":"code","b":[141,244,3],"m":"sta","o":"head_target","oa":1012},{"a":57568,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":57570,"t":"code","b":[141,124,3],"m":"sta","o":"head_turn_timer","oa":892},{"a":57573,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":57575,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":57578,"l":"r_E0EA","t":"code","b":[96],"m":"rts","x":[57555,57590]},{"a":57579,"l":"act53_finish","c":"End of the dance: turns the person to pose $22 with his facing ($255B, one step per call) and, once turn_busy $2540 is clear, puts the head back (pose 8 in $038F and $03F4, $ACF1 = 0, $037C = 1, $03C8 = $82) and sets phase 9, the end.","t":"code","b":[174,154,3],"m":"ldx","o":"fig_mirror","oa":922,"x":[57525,57530,57535]},{"a":57582,"t":"code","b":[169,34],"m":"lda","o":"#$22"},{"a":57584,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":57587,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":57590,"t":"code","b":[208,242],"m":"bne","o":"r_E0EA","oa":57578},{"a":57592,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":57594,"t":"code","b":[141,241,172],"m":"sta","o":"pose_change_busy","oa":44273},{"a":57597,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":57599,"t":"code","b":[141,143,3],"m":"sta","o":"fig_frame_head","oa":911},{"a":57602,"t":"code","b":[141,244,3],"m":"sta","o":"head_target","oa":1012},{"a":57605,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":57607,"t":"code","b":[141,124,3],"m":"sta","o":"head_turn_timer","oa":892},{"a":57610,"t":"code","b":[169,130],"m":"lda","o":"#$82"},{"a":57612,"t":"code","b":[141,200,3],"m":"sta","o":"fig_flags_head","oa":968},{"a":57615,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":57617,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":57619,"t":"code","b":[96],"m":"rts"},{"a":57620,"l":"act53_poses_down","c":"Activity 53 phase 4, a move: every fourth pass sets pose ($38 - act53_tick)/16 AND 7, keeping the facing.","t":"code","b":[32,85,224],"m":"jsr","o":"act53_step_gate","oa":57429},{"a":57623,"t":"code","b":[173,83,224],"m":"lda","o":"act53_tick","oa":57427},{"a":57626,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":57628,"t":"code","b":[56],"m":"sec"},{"a":57629,"t":"code","b":[237,83,224],"m":"sbc","o":"act53_tick","oa":57427},{"a":57632,"t":"code","b":[174,154,3],"m":"ldx","o":"fig_mirror","oa":922},{"a":57635,"t":"code","b":[76,125,224],"m":"jmp","o":"j_E07D","oa":57469},{"a":57638,"l":"chooser_queued_121","c":"Activity 121 ($79, which the parser also queues after TIRED or HATE + MUSIC) waiting to be started by the chooser, or 0. Set at $E1B1 when $2B45 is non-zero, no record plays and bit 7 of $0369 is clear; cleared when started.","t":"byte","b":[0],"x":[57755,57777,57780,57792]},{"a":57639,"l":"chooser_deferred","c":"A request put off while the person is in bed ($0368 non-zero): chooser_start keeps it here and starts activity $1F (getting up) instead; the chooser starts it on its next call ($E152). 0 = none.","t":"byte","b":[0],"x":[57682,57689,58254]},{"a":57640,"l":"action_queue_in","c":"Write index (0-15) of action_queue, advanced by the main loop ($09A4-$09AE) for each action of a parsed sentence; the main loop also copies it to action_queue_out to empty the queue when a sentence scores 8 or more.","t":"byte","b":[0],"x":[2446,2468,2478,57720]},{"a":57641,"l":"action_queue_out","c":"Read index (0-15) of action_queue: the chooser takes the entry here while request_score $092F is 8 or more ($E175-$E185). Equal to action_queue_in when the queue is empty.","t":"byte","b":[0],"x":[2453,57717,57733]},{"a":57642,"l":"action_queue","c":"The queue of actions from typed sentences: 16 activity numbers in a ring ($E12A-$E139), written by the main loop at action_queue_in and read by the chooser at action_queue_out. A sentence whose matched rules give 8 action codes leaves no 0 in $C002-$C009, so the main loop queues 17 entries and the ring overflows unnoticed.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[2471,57725]},{"a":57650,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":57658,"l":"action_queue_spare","c":"Five zero bytes after the action queue ($E13A-$E13E); no instruction reads or writes them.","t":"byte","b":[0,0,0,0,0]},{"a":57663,"l":"activity_chooser","c":"The activity chooser: activity 0 (also 77 and 123-127, and the target of activity 2's JMP at $9057). Zeroes the phases $4C and $68 and starts the first that applies: pending_activity $037B (a CTRL key) or chooser_deferred, each cleared when taken. It then clears request flag $BEFC, and request_activity $8D9E when that is 2. Next: the next typed action from action_queue while request_score $092F is 8 or more (an empty queue zeroes $092F; 4-7 is counted up by one); chooser_queued_121 unless it was the last choice; drinking ($1D) or eating ($4A) by the need levels $036E/$0371, the tank $2B51, the cupboard $30B4, the timers $0370/$0373 and chance; activity 4 while $0374 is set; getting up ($1F) if a request waits while he is in bed ($0368); at schedule step 0 or illness 3 or more, bed ($1E) or, already in bed, nothing except at step 0; at other steps, getting up if in bed; activity $4C at house hour $036C and 1 at hour $036D, once a day each; the morning or evening list asked for in $035C; otherwise chooser_by_step.","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[36951]},{"a":57665,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":57667,"t":"code","b":[133,104],"m":"sta","o":"activity_subphase","oa":104},{"a":57669,"t":"code","b":[173,123,3],"m":"lda","o":"pending_activity","oa":891},{"a":57672,"t":"code","b":[240,8],"m":"beq","o":"b_E152","oa":57682},{"a":57674,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":57676,"t":"code","b":[142,123,3],"m":"stx","o":"pending_activity","oa":891},{"a":57679,"t":"code","b":[76,133,227],"m":"jmp","o":"chooser_start","oa":58245},{"a":57682,"l":"b_E152","t":"code","b":[173,39,225],"m":"lda","o":"chooser_deferred","oa":57639,"x":[57672]},{"a":57685,"t":"code","b":[240,8],"m":"beq","o":"b_E15F","oa":57695},{"a":57687,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":57689,"t":"code","b":[142,39,225],"m":"stx","o":"chooser_deferred","oa":57639},{"a":57692,"t":"code","b":[76,133,227],"m":"jmp","o":"chooser_start","oa":58245},{"a":57695,"l":"b_E15F","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[57685]},{"a":57697,"t":"code","b":[141,252,190],"m":"sta","o":"request_flag_9","oa":48892},{"a":57700,"t":"code","b":[173,158,141],"m":"lda","o":"request_activity","oa":36254},{"a":57703,"t":"code","b":[73,2],"m":"eor","o":"#$02"},{"a":57705,"t":"code","b":[208,3],"m":"bne","o":"b_E16E","oa":57710},{"a":57707,"t":"code","b":[141,158,141],"m":"sta","o":"request_activity","oa":36254},{"a":57710,"l":"b_E16E","t":"code","b":[173,47,9],"m":"lda","o":"request_score","oa":2351,"x":[57705]},{"a":57713,"t":"code","b":[201,8],"m":"cmp","o":"#$08"},{"a":57715,"t":"code","b":[144,28],"m":"bcc","o":"b_E191","oa":57745},{"a":57717,"t":"code","b":[174,41,225],"m":"ldx","o":"action_queue_out","oa":57641},{"a":57720,"t":"code","b":[236,40,225],"m":"cpx","o":"action_queue_in","oa":57640},{"a":57723,"t":"code","b":[240,15],"m":"beq","o":"b_E18C","oa":57740},{"a":57725,"t":"code","b":[189,42,225],"m":"lda","o":"action_queue,x","oa":57642},{"a":57728,"t":"code","b":[72],"m":"pha"},{"a":57729,"t":"code","b":[232],"m":"inx"},{"a":57730,"t":"code","b":[138],"m":"txa"},{"a":57731,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":57733,"t":"code","b":[141,41,225],"m":"sta","o":"action_queue_out","oa":57641},{"a":57736,"t":"code","b":[104],"m":"pla"},{"a":57737,"t":"code","b":[76,133,227],"m":"jmp","o":"chooser_start","oa":58245},{"a":57740,"l":"b_E18C","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[57723]},{"a":57742,"t":"code","b":[141,47,9],"m":"sta","o":"request_score","oa":2351},{"a":57745,"l":"b_E191","t":"code","b":[173,47,9],"m":"lda","o":"request_score","oa":2351,"x":[57715]},{"a":57748,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":57750,"t":"code","b":[144,3],"m":"bcc","o":"b_E19B","oa":57755},{"a":57752,"t":"code","b":[238,47,9],"m":"inc","o":"request_score","oa":2351},{"a":57755,"l":"b_E19B","t":"code","b":[173,38,225],"m":"lda","o":"chooser_queued_121","oa":57638,"x":[57750]},{"a":57758,"t":"code","b":[208,20],"m":"bne","o":"b_E1B4","oa":57780},{"a":57760,"t":"code","b":[173,69,43],"m":"lda","o":"turntable_on","oa":11077},{"a":57763,"t":"code","b":[240,15],"m":"beq","o":"b_E1B4","oa":57780},{"a":57765,"t":"code","b":[173,30,128],"m":"lda","o":"music_playing","oa":32798},{"a":57768,"t":"code","b":[208,10],"m":"bne","o":"b_E1B4","oa":57780},{"a":57770,"t":"code","b":[173,105,3],"m":"lda","o":"trait_byte","oa":873},{"a":57773,"t":"code","b":[48,5],"m":"bmi","o":"b_E1B4","oa":57780},{"a":57775,"t":"code","b":[169,121],"m":"lda","o":"#$79"},{"a":57777,"t":"code","b":[141,38,225],"m":"sta","o":"chooser_queued_121","oa":57638},{"a":57780,"l":"b_E1B4","t":"code","b":[173,38,225],"m":"lda","o":"chooser_queued_121","oa":57638,"x":[57758,57763,57768,57773]},{"a":57783,"t":"code","b":[240,13],"m":"beq","o":"b_E1C6","oa":57798},{"a":57785,"t":"code","b":[32,169,227],"m":"jsr","o":"chooser_not_repeat","oa":58281},{"a":57788,"t":"code","b":[176,8],"m":"bcs","o":"b_E1C6","oa":57798},{"a":57790,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":57792,"t":"code","b":[142,38,225],"m":"stx","o":"chooser_queued_121","oa":57638},{"a":57795,"t":"code","b":[76,28,226],"m":"jmp","o":"j_E21C","oa":57884},{"a":57798,"l":"b_E1C6","t":"code","b":[173,110,3],"m":"lda","o":"water_need","oa":878,"x":[57783,57788]},{"a":57801,"t":"code","b":[240,39],"m":"beq","o":"b_E1F2","oa":57842},{"a":57803,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":57805,"t":"code","b":[240,17],"m":"beq","o":"b_E1E0","oa":57824},{"a":57807,"t":"code","b":[173,81,43],"m":"lda","o":"water_level","oa":11089},{"a":57810,"t":"code","b":[208,26],"m":"bne","o":"b_E1EE","oa":57838},{"a":57812,"t":"code","b":[173,112,3],"m":"lda","o":"water_timer","oa":880},{"a":57815,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":57817,"t":"code","b":[208,23],"m":"bne","o":"b_E1F2","oa":57842},{"a":57819,"t":"code","b":[206,112,3],"m":"dec","o":"water_timer","oa":880},{"a":57822,"t":"code","b":[208,14],"m":"bne","o":"b_E1EE","oa":57838},{"a":57824,"l":"b_E1E0","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[57805]},{"a":57827,"t":"code","b":[201,69],"m":"cmp","o":"#$45"},{"a":57829,"t":"code","b":[208,11],"m":"bne","o":"b_E1F2","oa":57842},{"a":57831,"t":"code","b":[173,21,4],"m":"lda","o":"rng_state","oa":1045},{"a":57834,"t":"code","b":[201,35],"m":"cmp","o":"#$23"},{"a":57836,"t":"code","b":[176,4],"m":"bcs","o":"b_E1F2","oa":57842},{"a":57838,"l":"b_E1EE","t":"code","b":[169,29],"m":"lda","o":"#$1D","x":[57810,57822]},{"a":57840,"t":"code","b":[208,42],"m":"bne","o":"j_E21C","oa":57884},{"a":57842,"l":"b_E1F2","t":"code","b":[173,113,3],"m":"lda","o":"food_need","oa":881,"x":[57801,57817,57829,57836]},{"a":57845,"t":"code","b":[240,40],"m":"beq","o":"b_E21F","oa":57887},{"a":57847,"t":"code","b":[201,1],"m":"cmp","o":"#$01"},{"a":57849,"t":"code","b":[240,17],"m":"beq","o":"b_E20C","oa":57868},{"a":57851,"t":"code","b":[173,180,48],"m":"lda","o":"cupboard_food","oa":12468},{"a":57854,"t":"code","b":[208,26],"m":"bne","o":"b_E21A","oa":57882},{"a":57856,"t":"code","b":[173,115,3],"m":"lda","o":"food_timer","oa":883},{"a":57859,"t":"code","b":[201,2],"m":"cmp","o":"#$02"},{"a":57861,"t":"code","b":[208,24],"m":"bne","o":"b_E21F","oa":57887},{"a":57863,"t":"code","b":[206,115,3],"m":"dec","o":"food_timer","oa":883},{"a":57866,"t":"code","b":[208,14],"m":"bne","o":"b_E21A","oa":57882},{"a":57868,"l":"b_E20C","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[57849]},{"a":57871,"t":"code","b":[201,69],"m":"cmp","o":"#$45"},{"a":57873,"t":"code","b":[208,12],"m":"bne","o":"b_E21F","oa":57887},{"a":57875,"t":"code","b":[173,21,4],"m":"lda","o":"rng_state","oa":1045},{"a":57878,"t":"code","b":[201,35],"m":"cmp","o":"#$23"},{"a":57880,"t":"code","b":[176,5],"m":"bcs","o":"b_E21F","oa":57887},{"a":57882,"l":"b_E21A","t":"code","b":[169,74],"m":"lda","o":"#$4A","x":[57854,57866]},{"a":57884,"l":"j_E21C","t":"code","b":[76,133,227],"m":"jmp","o":"chooser_start","oa":58245,"x":[57795,57840,57894]},{"a":57887,"l":"b_E21F","t":"code","b":[173,116,3],"m":"lda","o":"act4_request","oa":884,"x":[57845,57861,57873,57880]},{"a":57890,"t":"code","b":[240,4],"m":"beq","o":"b_E228","oa":57896},{"a":57892,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":57894,"t":"code","b":[208,244],"m":"bne","o":"j_E21C","oa":57884},{"a":57896,"l":"b_E228","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742,"x":[57890]},{"a":57899,"t":"code","b":[240,5],"m":"beq","o":"b_E232","oa":57906},{"a":57901,"t":"code","b":[173,104,3],"m":"lda","o":"act_flag_0368","oa":872},{"a":57904,"t":"code","b":[208,35],"m":"bne","o":"b_E255","oa":57941},{"a":57906,"l":"b_E232","t":"code","b":[172,101,3],"m":"ldy","o":"illness_level","oa":869,"x":[57899]},{"a":57909,"t":"code","b":[174,93,3],"m":"ldx","o":"schedule_step","oa":861},{"a":57912,"t":"code","b":[240,4],"m":"beq","o":"b_E23E","oa":57918},{"a":57914,"t":"code","b":[192,3],"m":"cpy","o":"#$03"},{"a":57916,"t":"code","b":[144,18],"m":"bcc","o":"b_E250","oa":57936},{"a":57918,"l":"b_E23E","t":"code","b":[173,104,3],"m":"lda","o":"act_flag_0368","oa":872,"x":[57912]},{"a":57921,"t":"code","b":[208,7],"m":"bne","o":"b_E24A","oa":57930},{"a":57923,"t":"code","b":[169,30],"m":"lda","o":"#$1E"},{"a":57925,"t":"code","b":[240,3],"m":"beq","o":"b_E24A","oa":57930},{"a":57927,"l":"b_E247","t":"code","b":[76,147,227],"m":"jmp","o":"chooser_set_activity","oa":58259,"x":[57943]},{"a":57930,"l":"b_E24A","t":"code","b":[138],"m":"txa","x":[57921,57925]},{"a":57931,"t":"code","b":[240,12],"m":"beq","o":"b_E259","oa":57945},{"a":57933,"t":"code","b":[76,152,227],"m":"jmp","o":"r_E398","oa":58264},{"a":57936,"l":"b_E250","t":"code","b":[173,104,3],"m":"lda","o":"act_flag_0368","oa":872,"x":[57916]},{"a":57939,"t":"code","b":[240,4],"m":"beq","o":"b_E259","oa":57945},{"a":57941,"l":"b_E255","t":"code","b":[169,31],"m":"lda","o":"#$1F","x":[57904]},{"a":57943,"t":"code","b":[208,238],"m":"bne","o":"b_E247","oa":57927},{"a":57945,"l":"b_E259","t":"code","b":[173,121,3],"m":"lda","o":"house_hour","oa":889,"x":[57931,57939]},{"a":57948,"t":"code","b":[205,108,3],"m":"cmp","o":"noon_act_hour","oa":876},{"a":57951,"t":"code","b":[208,15],"m":"bne","o":"b_E270","oa":57968},{"a":57953,"t":"code","b":[173,111,226],"m":"lda","o":"chooser_noon_armed","oa":57967},{"a":57956,"t":"code","b":[240,10],"m":"beq","o":"b_E270","oa":57968},{"a":57958,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":57960,"t":"code","b":[141,111,226],"m":"sta","o":"chooser_noon_armed","oa":57967},{"a":57963,"t":"code","b":[169,76],"m":"lda","o":"#$4C"},{"a":57965,"t":"code","b":[208,24],"m":"bne","o":"b_E287","oa":57991},{"a":57967,"l":"chooser_noon_armed","c":"Once-a-day flag for activity $4C at house hour noon_act_hour ($036C): any other hour stores the hour here (non-zero, armed), the chooser starts $4C at that hour only when it is armed and then zeroes it. $0F in play.","t":"byte","b":[15],"x":[57953,57960,57968]},{"a":57968,"l":"b_E270","c":"Activity chooser, continued: re-arms chooser_noon_armed with the current hour, then starts activity 1 at house hour act_1_hour $036D if chooser_act1_armed is set (zeroing it).","t":"code","b":[141,111,226],"m":"sta","o":"chooser_noon_armed","oa":57967,"x":[57951,57956]},{"a":57971,"t":"code","b":[173,121,3],"m":"lda","o":"house_hour","oa":889},{"a":57974,"t":"code","b":[205,109,3],"m":"cmp","o":"act_1_hour","oa":877},{"a":57977,"t":"code","b":[208,16],"m":"bne","o":"b_E28B","oa":57995},{"a":57979,"t":"code","b":[173,138,226],"m":"lda","o":"chooser_act1_armed","oa":57994},{"a":57982,"t":"code","b":[240,11],"m":"beq","o":"b_E28B","oa":57995},{"a":57984,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":57986,"t":"code","b":[141,138,226],"m":"sta","o":"chooser_act1_armed","oa":57994},{"a":57989,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":57991,"l":"b_E287","t":"code","b":[76,133,227],"m":"jmp","o":"chooser_start","oa":58245,"x":[57965,58043,58067]},{"a":57994,"l":"chooser_act1_armed","c":"Once-a-day flag for activity 1 at house hour act_1_hour ($036D), used like chooser_noon_armed.","t":"byte","b":[15],"x":[57979,57986,57995]},{"a":57995,"l":"b_E28B","c":"Activity chooser, continued: re-arms chooser_act1_armed. At schedule step 0 goes to chooser_by_step. Otherwise, when list_request $035C asks (bit 0: restart, list_index $035B = $FF), starts the next entry of morning_list $0352 (bit 7 of $035C set) or evening_list $0358 (bit 7 clear) and returns; at the end of the morning list it zeroes $035C, at the end of the evening list $2B50, schedule_step $035D and $035C, choosing nothing that time. With no list asked for, chooser_by_step.","t":"code","b":[141,138,226],"m":"sta","o":"chooser_act1_armed","oa":57994,"x":[57977,57982]},{"a":57998,"t":"code","b":[173,93,3],"m":"lda","o":"schedule_step","oa":861},{"a":58001,"t":"code","b":[240,80],"m":"beq","o":"chooser_by_step","oa":58083},{"a":58003,"t":"code","b":[173,92,3],"m":"lda","o":"list_request","oa":860},{"a":58006,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":58007,"t":"code","b":[144,13],"m":"bcc","o":"b_E2A6","oa":58022},{"a":58009,"t":"code","b":[173,92,3],"m":"lda","o":"list_request","oa":860},{"a":58012,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":58014,"t":"code","b":[141,92,3],"m":"sta","o":"list_request","oa":860},{"a":58017,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":58019,"t":"code","b":[141,91,3],"m":"sta","o":"list_index","oa":859},{"a":58022,"l":"b_E2A6","t":"code","b":[173,92,3],"m":"lda","o":"list_request","oa":860,"x":[58007]},{"a":58025,"t":"code","b":[240,56],"m":"beq","o":"chooser_by_step","oa":58083},{"a":58027,"t":"code","b":[16,24],"m":"bpl","o":"b_E2C5","oa":58053},{"a":58029,"t":"code","b":[238,91,3],"m":"inc","o":"list_index","oa":859},{"a":58032,"t":"code","b":[174,91,3],"m":"ldx","o":"list_index","oa":859},{"a":58035,"t":"code","b":[236,81,3],"m":"cpx","o":"morning_list_len","oa":849},{"a":58038,"t":"code","b":[240,5],"m":"beq","o":"b_E2BD","oa":58045},{"a":58040,"t":"code","b":[189,82,3],"m":"lda","o":"morning_list,x","oa":850},{"a":58043,"t":"code","b":[208,202],"m":"bne","o":"b_E287","oa":57991},{"a":58045,"l":"b_E2BD","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[58038]},{"a":58047,"t":"code","b":[141,92,3],"m":"sta","o":"list_request","oa":860},{"a":58050,"t":"code","b":[76,152,227],"m":"jmp","o":"r_E398","oa":58264},{"a":58053,"l":"b_E2C5","t":"code","b":[238,91,3],"m":"inc","o":"list_index","oa":859,"x":[58027]},{"a":58056,"t":"code","b":[174,91,3],"m":"ldx","o":"list_index","oa":859},{"a":58059,"t":"code","b":[236,87,3],"m":"cpx","o":"evening_list_len","oa":855},{"a":58062,"t":"code","b":[240,5],"m":"beq","o":"b_E2D5","oa":58069},{"a":58064,"t":"code","b":[189,88,3],"m":"lda","o":"evening_list,x","oa":856},{"a":58067,"t":"code","b":[208,178],"m":"bne","o":"b_E287","oa":57991},{"a":58069,"l":"b_E2D5","t":"code","b":[169,0],"m":"lda","o":"#$00","x":[58062]},{"a":58071,"t":"code","b":[141,80,43],"m":"sta","o":"alarm_rang","oa":11088},{"a":58074,"t":"code","b":[141,93,3],"m":"sta","o":"schedule_step","oa":861},{"a":58077,"t":"code","b":[141,92,3],"m":"sta","o":"list_request","oa":860},{"a":58080,"t":"code","b":[76,152,227],"m":"jmp","o":"r_E398","oa":58264},{"a":58083,"l":"chooser_by_step","c":"Chooses by the schedule step $035D: pushes the address from chooser_step_jumps and returns into it with X = routine_style $0350 (0-7).","t":"code","b":[173,93,3],"m":"lda","o":"schedule_step","oa":861,"x":[58001,58025]},{"a":58086,"t":"code","b":[10],"m":"asl","o":"a"},{"a":58087,"t":"code","b":[168],"m":"tay"},{"a":58088,"t":"code","b":[185,245,226],"m":"lda","o":"chooser_step_jumps_hi,y","oa":58101},{"a":58091,"t":"code","b":[72],"m":"pha"},{"a":58092,"t":"code","b":[185,244,226],"m":"lda","o":"chooser_step_jumps,y","oa":58100},{"a":58095,"t":"code","b":[72],"m":"pha"},{"a":58096,"t":"code","b":[174,80,3],"m":"ldx","o":"routine_style","oa":848},{"a":58099,"t":"code","b":[96],"m":"rts"},{"a":58100,"l":"chooser_step_jumps","c":"RTS dispatch table of chooser_by_step, addresses minus one, index schedule_step $035D: $E2FC (step 0: nothing), $E317, $E31D, $E323.","t":"word","b":[251],"d":[],"x":[58092]},{"a":58101,"l":"chooser_step_jumps_hi","c":"High bytes of chooser_step_jumps, read as $E2F5+2n by the LDA $E2F5,Y at $E2E8.","t":"word","b":[226,22,227,28,227,34,227],"d":[5858,7395,8931],"x":[58088]},{"a":58108,"l":"chooser_step0","c":"Schedule step 0 (night): chooses nothing (JMP to the RTS at $E398).","t":"code","b":[76,152,227],"m":"jmp","o":"r_E398","oa":58264},{"a":58111,"l":"chooser_mode_step1","c":"Schedule step 1's source of activities, indexed by routine_style $0350 (0-7): 0 = the weekday's list, bit 7 = chooser_list_c, other values = chooser_list_b. Values 00 00 01 01 80 80 00 80.","t":"byte","b":[0,0,1,1,128,128,0,128],"x":[58135]},{"a":58119,"l":"chooser_mode_step2","c":"Schedule step 2's source of activities, by routine_style, coded like chooser_mode_step1: 10 80 00 80 10 00 10 00.","t":"byte","b":[16,128,0,128,16,0,16,0],"x":[58141]},{"a":58127,"l":"chooser_mode_step3","c":"Schedule step 3's source of activities, by routine_style, coded like chooser_mode_step1: 80 01 80 00 00 01 80 01.","t":"byte","b":[128,1,128,0,0,1,128,1],"x":[58147]},{"a":58135,"l":"chooser_step1","c":"Schedule step 1: A = chooser_mode_step1+X, on to chooser_pick_list.","t":"code","b":[189,255,226],"m":"lda","o":"chooser_mode_step1,x","oa":58111},{"a":58138,"t":"code","b":[76,38,227],"m":"jmp","o":"chooser_pick_list","oa":58150},{"a":58141,"l":"chooser_step2","c":"Schedule step 2: A = chooser_mode_step2+X, on to chooser_pick_list.","t":"code","b":[189,7,227],"m":"lda","o":"chooser_mode_step2,x","oa":58119},{"a":58144,"t":"code","b":[76,38,227],"m":"jmp","o":"chooser_pick_list","oa":58150},{"a":58147,"l":"chooser_step3","c":"Schedule step 3: A = chooser_mode_step3+X, then chooser_pick_list follows.","t":"code","b":[189,15,227],"m":"lda","o":"chooser_mode_step3,x","oa":58127},{"a":58150,"l":"chooser_pick_list","c":"Picks the list: A = 0 picks by weekday ($0377 AND 7: 5 chooser_list_c, 6 chooser_list_b, other days chooser_list_a); A with bit 7 set, chooser_list_c; any other value, chooser_list_b.","t":"code","b":[208,45],"m":"bne","o":"b_E355","oa":58197,"x":[58138,58144]},{"a":58152,"t":"code","b":[173,119,3],"m":"lda","o":"weekday","oa":887},{"a":58155,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":58157,"t":"code","b":[201,5],"m":"cmp","o":"#$05"},{"a":58159,"t":"code","b":[240,70],"m":"beq","o":"chooser_pick_c","oa":58231},{"a":58161,"t":"code","b":[201,6],"m":"cmp","o":"#$06"},{"a":58163,"t":"code","b":[240,34],"m":"beq","o":"chooser_pick_b","oa":58199},{"a":58165,"l":"chooser_pick_a","c":"Draws random entries (random AND $0F) of chooser_list_a until chooser_not_repeat accepts one, then chooser_start.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[58177]},{"a":58168,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":58170,"t":"code","b":[170],"m":"tax"},{"a":58171,"t":"code","b":[189,69,227],"m":"lda","o":"chooser_list_a,x","oa":58181},{"a":58174,"t":"code","b":[32,169,227],"m":"jsr","o":"chooser_not_repeat","oa":58281},{"a":58177,"t":"code","b":[176,242],"m":"bcs","o":"chooser_pick_a","oa":58165},{"a":58179,"t":"code","b":[144,64],"m":"bcc","o":"chooser_start","oa":58245},{"a":58181,"l":"chooser_list_a","c":"Activity list A, 16 activity numbers (bit 7 = do not choose twice running, removed by chooser_start): $0C $13 $14 $96 $17 $18 $19 $22 $08 $1B $FF $13 $18 $0E $14 $17.","t":"byte","b":[12,19,20,150,23,24,25,34],"x":[58171]},{"a":58189,"t":"byte","b":[8,27,255,19,24,14,20,23]},{"a":58197,"l":"b_E355","c":"Rest of chooser_pick_list for a non-zero mode: bit 7 set goes to chooser_pick_c, other values fall into chooser_pick_b.","t":"code","b":[48,32],"m":"bmi","o":"chooser_pick_c","oa":58231,"x":[58150]},{"a":58199,"l":"chooser_pick_b","c":"Draws random entries of chooser_list_b until one is accepted, then chooser_start.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[58163,58211]},{"a":58202,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":58204,"t":"code","b":[170],"m":"tax"},{"a":58205,"t":"code","b":[189,103,227],"m":"lda","o":"chooser_list_b,x","oa":58215},{"a":58208,"t":"code","b":[32,169,227],"m":"jsr","o":"chooser_not_repeat","oa":58281},{"a":58211,"t":"code","b":[176,242],"m":"bcs","o":"chooser_pick_b","oa":58199},{"a":58213,"t":"code","b":[144,30],"m":"bcc","o":"chooser_start","oa":58245},{"a":58215,"l":"chooser_list_b","c":"Activity list B, 16 entries: $05 $06 $07 $89 $0C $10 $11 $18 $08 $28 $18 $06 $0E $12 $05 $10.","t":"byte","b":[5,6,7,137,12,16,17,24],"x":[58205]},{"a":58223,"t":"byte","b":[8,40,24,6,14,18,5,16]},{"a":58231,"l":"chooser_pick_c","c":"Draws random entries of chooser_list_c until one is accepted, then chooser_start.","t":"code","b":[32,94,25],"m":"jsr","o":"random","oa":6494,"x":[58159,58197,58243]},{"a":58234,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":58236,"t":"code","b":[170],"m":"tax"},{"a":58237,"t":"code","b":[189,153,227],"m":"lda","o":"chooser_list_c,x","oa":58265},{"a":58240,"t":"code","b":[32,169,227],"m":"jsr","o":"chooser_not_repeat","oa":58281},{"a":58243,"t":"code","b":[176,242],"m":"bcs","o":"chooser_pick_c","oa":58231},{"a":58245,"l":"chooser_start","c":"Starts activity A: when the person is in bed ($0368 non-zero) and A is not $2E, keeps A in chooser_deferred and starts activity $1F (getting up) instead. Then chooser_set_activity.","t":"code","b":[201,46],"m":"cmp","o":"#$2E","x":[57679,57692,57737,57884,57991,58179,58213]},{"a":58247,"t":"code","b":[240,10],"m":"beq","o":"chooser_set_activity","oa":58259},{"a":58249,"t":"code","b":[174,104,3],"m":"ldx","o":"act_flag_0368","oa":872},{"a":58252,"t":"code","b":[240,5],"m":"beq","o":"chooser_set_activity","oa":58259},{"a":58254,"t":"code","b":[141,39,225],"m":"sta","o":"chooser_deferred","oa":57639},{"a":58257,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":58259,"l":"chooser_set_activity","c":"Stores A AND $7F in the activity number $8D9B, which the dispatcher at $8DC6 runs next.","t":"code","b":[41,127],"m":"and","o":"#$7F","x":[57927,58247,58252]},{"a":58261,"t":"code","b":[141,155,141],"m":"sta","o":"activity","oa":36251},{"a":58264,"l":"r_E398","t":"code","b":[96],"m":"rts","x":[57933,58050,58080,58108]},{"a":58265,"l":"chooser_list_c","c":"Activity list C, 16 entries: $08 $35 $28 $10 $89 $95 $19 $10 $05 $26 $FE $0C $1B $08 $35 $19 (activity $35 is the dance, act53_dance).","t":"byte","b":[8,53,40,16,137,149,25,16],"x":[58237]},{"a":58273,"t":"byte","b":[5,38,254,12,27,8,53,25]},{"a":58281,"l":"chooser_not_repeat","c":"Carry set (reject) when A equals chooser_last, or when A and chooser_last both have bit 7 set; otherwise stores A in chooser_last and returns carry clear.","t":"code","b":[205,190,227],"m":"cmp","o":"chooser_last","oa":58302,"x":[57785,58174,58208,58240]},{"a":58284,"t":"code","b":[240,14],"m":"beq","o":"b_E3BC","oa":58300},{"a":58286,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":58288,"t":"code","b":[16,5],"m":"bpl","o":"b_E3B7","oa":58295},{"a":58290,"t":"code","b":[44,190,227],"m":"bit","o":"chooser_last","oa":58302},{"a":58293,"t":"code","b":[48,5],"m":"bmi","o":"b_E3BC","oa":58300},{"a":58295,"l":"b_E3B7","t":"code","b":[141,190,227],"m":"sta","o":"chooser_last","oa":58302,"x":[58288]},{"a":58298,"t":"code","b":[24],"m":"clc"},{"a":58299,"t":"code","b":[96],"m":"rts"},{"a":58300,"l":"b_E3BC","t":"code","b":[56],"m":"sec","x":[58284,58293]},{"a":58301,"t":"code","b":[96],"m":"rts"},{"a":58302,"l":"chooser_last","c":"The last activity code chooser_not_repeat accepted, bit 7 included (5 in play-02).","t":"byte","b":[5],"x":[58281,58290,58295]},{"a":58303,"l":"empty_stage3","c":"A lone RTS: the routine main-loop stage 3 calls ($094F), so that stage does nothing in this build.","t":"code","b":[96],"m":"rts","x":[2383]},{"a":58304,"l":"unused_e3c0","c":"Zero byte between the RTS stubs; nothing reads it.","t":"byte","b":[0]},{"a":58305,"l":"empty_hook_188d","c":"A lone RTS called from $188D (the movement code), so that call does nothing.","t":"code","b":[96],"m":"rts","x":[6285]},{"a":58306,"l":"empty_hook_1bb0","c":"A lone RTS called from $1BB0 (the movement code), so that call does nothing.","t":"code","b":[96],"m":"rts","x":[7088]},{"a":58307,"l":"unused_e3c3","c":"Bytes 00 00 01 60 60 60 60: four RTS opcodes after two zeros and a $01; no JSR, JMP or table entry points here. The RTS stubs at $E3BF-$E3C9 may be routines removed from this build; unknown.","t":"byte","b":[0,0,1,96,96,96,96]},{"a":58314,"l":"act79_piano","c":"Activity 79, playing the piano (activity 21's script is 121, 78, 79: 78 picks the piece). Switch on $4C through act79_phases: 0 check the stereo, 1 walk to the piano, 2 wait to arrive, 3 turn to pose $21, 4 to pose $28, 5 start the piece, 6 play, 7 stop the piece, 8 pose $28, 9 pose $21, 10 end.","t":"code","b":[32,17,63],"m":"jsr","o":"switch_4c","oa":16145},{"a":58317,"l":"act79_phases","c":"Phase table of activity 79 for the switch at $E3CA, addresses minus one: $E3E4, $E422, $8FA7, $E42B, $E427, $E3F1, $E43C, $E400, $E427, $E42B, $8F0E.","t":"word","b":[227,227,33,228,166,143,42,228],"d":[58339,58401,36774,58410]},{"a":58325,"t":"word","b":[38,228,240,227,59,228,255,227],"d":[58406,58352,58427,58367]},{"a":58333,"t":"word","b":[38,228,42,228,13,143],"d":[58406,58410,36621]},{"a":58339,"l":"act79_rts","c":"RTS, reached only from the unused act79_unused_wait ($E411).","t":"code","b":[96],"m":"rts","x":[58385]},{"a":58340,"l":"act79_check_stereo","c":"Activity 79 phase 0: if $2B45 is set (set with $801E by the record player's start phase, $9264) ends at once (phase 10); else next phase.","t":"code","b":[173,69,43],"m":"lda","o":"turntable_on","oa":11077},{"a":58343,"t":"code","b":[240,5],"m":"beq","o":"b_E3EE","oa":58350},{"a":58345,"t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":58347,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":58349,"t":"code","b":[96],"m":"rts"},{"a":58350,"l":"b_E3EE","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[58343]},{"a":58353,"l":"act79_start_piece","c":"Activity 79 phase 5: clears every sound request ($3713), raises sound request 3 ($3563 = $FF; its handler at $364A starts sound 12, the chosen piano piece, on channels 3-5) and clears request 7 ($3567).","t":"code","b":[32,19,55],"m":"jsr","o":"sound_reset","oa":14099},{"a":58356,"t":"code","b":[162,255],"m":"ldx","o":"#$FF"},{"a":58358,"t":"code","b":[142,99,53],"m":"stx","o":"snd_req_piece","oa":13667},{"a":58361,"t":"code","b":[232],"m":"inx"},{"a":58362,"t":"code","b":[142,103,53],"m":"stx","o":"snd_req_piece_end","oa":13671},{"a":58365,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":58368,"l":"act79_stop_piece","c":"Activity 79 phase 7: $3567 = $3563. If the piece is still playing (request 3 set) this raises request 7, whose handler ($36CB) stops it; after the end both are 0.","t":"code","b":[173,99,53],"m":"lda","o":"snd_req_piece","oa":13667},{"a":58371,"t":"code","b":[141,103,53],"m":"sta","o":"snd_req_piece_end","oa":13671},{"a":58374,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":58377,"l":"act79_unused_wait","c":"Unused phase handler: counts act79_unused_count and moves to the next phase every eighth call. No table entry, JSR or JMP leads here.","t":"code","b":[238,27,228],"m":"inc","o":"act79_unused_count","oa":58395},{"a":58380,"t":"code","b":[173,27,228],"m":"lda","o":"act79_unused_count","oa":58395},{"a":58383,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":58385,"t":"code","b":[208,208],"m":"bne","o":"act79_rts","oa":58339},{"a":58387,"t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619},{"a":58390,"l":"act79_unused_phase","c":"Unused: sets the phase $4C to 7. Nothing leads here.","t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":58392,"t":"code","b":[133,76],"m":"sta","o":"activity_phase","oa":76},{"a":58394,"t":"code","b":[96],"m":"rts"},{"a":58395,"l":"act79_unused_count","c":"Counter of the unused act79_unused_wait; 0.","t":"byte","b":[0],"x":[58377,58380]},{"a":58396,"l":"unused_e41c","c":"Zero byte; nothing reads it.","t":"byte","b":[0]},{"a":58397,"l":"piano_part_offsets","c":"Part offsets ($00, $40 or $80: part image 0, 1 or 2) for the four quarters of the person's image that compose_from_parts ($1585, via $15B3) builds while he plays the piano. Set by sound request 3's handler ($3667-$36AE) from the flags $B013-$B016, which the sound driver keeps for channels 3 and 4 ($B38F-$B413). What the parts show was not checked on screen.","t":"byte","b":[64,64,0,0],"x":[5555,13934,13971,13988]},{"a":58401,"l":"piano_parts_changed","c":"Set by sound request 3's handler when a part offset changed; activity 79's play phase clears it and rebuilds the image (JMP compose_from_parts).","t":"byte","b":[64],"x":[13947,13968,58438,58445]},{"a":58402,"l":"act79_walk","c":"Activity 79 phase 1: walks to location 6, the piano (walk_to_location, $8EF9).","t":"code","b":[162,6],"m":"ldx","o":"#$06"},{"a":58404,"t":"code","b":[76,249,142],"m":"jmp","o":"walk_to_location","oa":36601},{"a":58407,"l":"act79_turn_28","c":"Activity 79 phases 4 and 8: turn to pose $28.","t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":58409,"t":"code","b":[208,2],"m":"bne","o":"act79_turn","oa":58413},{"a":58411,"l":"act79_turn_21","c":"Activity 79 phases 3 and 9: turn to pose $21.","t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":58413,"l":"act79_turn","c":"Turns the person to pose A with his facing $039A (turn_to_pose, one step per call); next phase once turn_busy $2540 is clear.","t":"code","b":[174,154,3],"m":"ldx","o":"fig_mirror","oa":922,"x":[58409]},{"a":58416,"t":"code","b":[32,91,37],"m":"jsr","o":"turn_to_pose","oa":9563},{"a":58419,"t":"code","b":[173,64,37],"m":"lda","o":"turn_busy","oa":9536},{"a":58422,"t":"code","b":[208,3],"m":"bne","o":"r_E43B","oa":58427,"x":[13719,13727]},{"a":58424,"l":"b_E438","t":"code","b":[76,11,143],"m":"jmp","o":"next_phase","oa":36619,"x":[58431,58436]},{"a":58427,"l":"r_E43B","t":"code","b":[96],"m":"rts","x":[58422,58441]},{"a":58428,"l":"act79_play","c":"Activity 79 phase 6, playing: next phase when a request waits ($8F86) or $3567 is set (the piece ended); otherwise, when piano_parts_changed is set, clears it and rebuilds the image (compose_from_parts).","t":"code","b":[32,134,143],"m":"jsr","o":"request_pending","oa":36742},{"a":58431,"t":"code","b":[208,247],"m":"bne","o":"b_E438","oa":58424},{"a":58433,"t":"code","b":[173,103,53],"m":"lda","o":"snd_req_piece_end","oa":13671},{"a":58436,"t":"code","b":[208,242],"m":"bne","o":"b_E438","oa":58424},{"a":58438,"t":"code","b":[173,33,228],"m":"lda","o":"piano_parts_changed","oa":58401},{"a":58441,"t":"code","b":[240,240],"m":"beq","o":"r_E43B","oa":58427},{"a":58443,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":58445,"t":"code","b":[141,33,228],"m":"sta","o":"piano_parts_changed","oa":58401},{"a":58448,"t":"code","b":[76,133,21],"m":"jmp","o":"compose_from_parts","oa":5509},{"a":58451,"l":"graphic_offsets","c":"Where the packed sprite graphics are: one word per graphic number 0-182, stored as the graphic's offset from $E453 plus $5000. unpack_figure_sprite ($0E41) reads the word at $E453 + 2n and adds $E453 - $5000 (high byte - $50, then + $E453). Graphics 0-182 follow at $E5C1-$FFB9 in order, without gaps; each unpacks to 63 bytes, one sprite image (checked for all 183). The $5000 bias suggests the data was once assembled to lie at $5000; unknown.","t":"word","b":[110,81,161,81,206,81,0,82],"d":[20846,20897,20942,20992]},{"a":58459,"t":"word","b":[51,82,99,82,126,82,180,82],"d":[21043,21091,21118,21172]},{"a":58467,"t":"word","b":[232,82,12,83,60,83,108,83],"d":[21224,21260,21308,21356]},{"a":58475,"t":"word","b":[160,83,212,83,10,84,57,84],"d":[21408,21460,21514,21561]},{"a":58483,"t":"word","b":[107,84,161,84,206,84,8,85],"d":[21611,21665,21710,21768]},{"a":58491,"t":"word","b":[68,85,109,85,165,85,223,85],"d":[21828,21869,21925,21983]},{"a":58499,"t":"word","b":[11,86,63,86,107,86,148,86],"d":[22027,22079,22123,22164]},{"a":58507,"t":"word","b":[191,86,222,86,1,87,43,87],"d":[22207,22238,22273,22315]},{"a":58515,"t":"word","b":[70,87,115,87,165,87,216,87],"d":[22342,22387,22437,22488]},{"a":58523,"t":"word","b":[14,88,57,88,101,88,147,88],"d":[22542,22585,22629,22675]},{"a":58531,"t":"word","b":[189,88,214,88,239,88,12,89],"d":[22717,22742,22767,22796]},{"a":58539,"t":"word","b":[48,89,94,89,143,89,182,89],"d":[22832,22878,22927,22966]},{"a":58547,"t":"word","b":[211,89,222,89,9,90,51,90],"d":[22995,23006,23049,23091]},{"a":58555,"t":"word","b":[95,90,140,90,186,90,232,90],"d":[23135,23180,23226,23272]},{"a":58563,"t":"word","b":[25,91,75,91,126,91,172,91],"d":[23321,23371,23422,23468]},{"a":58571,"t":"word","b":[207,91,1,92,53,92,110,92],"d":[23503,23553,23605,23662]},{"a":58579,"t":"word","b":[159,92,210,92,10,93,57,93],"d":[23711,23762,23818,23865]},{"a":58587,"t":"word","b":[100,93,155,93,194,93,236,93],"d":[23908,23963,24002,24044]},{"a":58595,"t":"word","b":[11,94,23,94,45,94,76,94],"d":[24075,24087,24109,24140]},{"a":58603,"t":"word","b":[104,94,129,94,160,94,198,94],"d":[24168,24193,24224,24262]},{"a":58611,"t":"word","b":[241,94,22,95,50,95,87,95],"d":[24305,24342,24370,24407]},{"a":58619,"t":"word","b":[128,95,155,95,192,95,237,95],"d":[24448,24475,24512,24557]},{"a":58627,"t":"word","b":[19,96,61,96,120,96,161,96],"d":[24595,24637,24696,24737]},{"a":58635,"t":"word","b":[202,96,247,96,37,97,76,97],"d":[24778,24823,24869,24908]},{"a":58643,"t":"word","b":[116,97,155,97,191,97,233,97],"d":[24948,24987,25023,25065]},{"a":58651,"t":"word","b":[18,98,60,98,101,98,141,98],"d":[25106,25148,25189,25229]},{"a":58659,"t":"word","b":[179,98,219,98,0,99,8,99],"d":[25267,25307,25344,25352]},{"a":58667,"t":"word","b":[42,99,50,99,78,99,89,99],"d":[25386,25394,25422,25433]},{"a":58675,"t":"word","b":[120,99,139,99,151,99,170,99],"d":[25464,25483,25495,25514]},{"a":58683,"t":"word","b":[178,99,200,99,7,100,67,100],"d":[25522,25544,25607,25667]},{"a":58691,"t":"word","b":[127,100,141,100,155,100,170,100],"d":[25727,25741,25755,25770]},{"a":58699,"t":"word","b":[201,100,220,100,232,100,240,100],"d":[25801,25820,25832,25840]},{"a":58707,"t":"word","b":[3,101,11,101,30,101,52,101],"d":[25859,25867,25886,25908]},{"a":58715,"t":"word","b":[87,101,118,101,153,101,184,101],"d":[25943,25974,26009,26040]},{"a":58723,"t":"word","b":[217,101,251,101,30,102,64,102],"d":[26073,26107,26142,26176]},{"a":58731,"t":"word","b":[97,102,130,102,156,102,179,102],"d":[26209,26242,26268,26291]},{"a":58739,"t":"word","b":[214,102,248,102,26,103,53,103],"d":[26326,26360,26394,26421]},{"a":58747,"t":"word","b":[77,103,112,103,145,103,178,103],"d":[26445,26480,26513,26546]},{"a":58755,"t":"word","b":[205,103,229,103,4,104,35,104],"d":[26573,26597,26628,26659]},{"a":58763,"t":"word","b":[66,104,92,104,115,104,149,104],"d":[26690,26716,26739,26773]},{"a":58771,"t":"word","b":[183,104,217,104,244,104,12,105],"d":[26807,26841,26868,26892]},{"a":58779,"t":"word","b":[46,105,79,105,112,105,139,105],"d":[26926,26959,26992,27019]},{"a":58787,"t":"word","b":[163,105,196,105,229,105,6,106],"d":[27043,27076,27109,27142]},{"a":58795,"t":"word","b":[32,106,55,106,89,106,123,106],"d":[27168,27191,27225,27259]},{"a":58803,"t":"word","b":[157,106,184,106,208,106,242,106],"d":[27293,27320,27344,27378]},{"a":58811,"t":"word","b":[19,107,52,107,79,107],"d":[27411,27444,27471]},{"a":58817,"l":"gfx_body_000","c":"Packed sprite graphics 0-19 ($E5C1-$E996): the person's body poses (figure 0; figure_frames $0D77 entries 0-117 name graphics 0-97). Format (unpacked by $0E41 into 63 bytes, 21 rows of 3): a byte with bit 7 set is followed by (n AND $7F) rows of 3 literal bytes; any other byte n is followed by one 3-byte row repeated n times.","s":"graphic 0","t":"byte","b":[132,0,156,0,0,148,0,0]},{"a":58825,"t":"byte","b":[168,0,2,168,0,3,2,170]},{"a":58833,"t":"byte","b":[0,131,2,162,0,3,87,192]},{"a":58841,"t":"byte","b":[3,87,0,3,0,68,0,133]},{"a":58849,"t":"byte","b":[9,68,0,10,4,0,8,4]},{"a":58857,"t":"byte","b":[0,8,6,0,0,10,128,3]},{"a":58865,"t":"byte","b":[0,0,0]},{"a":58868,"s":"graphic 1","t":"byte","b":[131,0,156,0,0,148,0,0]},{"a":58876,"t":"byte","b":[152,0,5,0,168,0,133,0]},{"a":58884,"t":"byte","b":[100,0,0,124,0,0,52,0]},{"a":58892,"t":"byte","b":[2,84,0,2,144,0,2,2]},{"a":58900,"t":"byte","b":[16,0,130,0,24,0,0,42]},{"a":58908,"t":"byte","b":[0,4,0,0,0]},{"a":58913,"s":"graphic 2","t":"byte","b":[132,0,156,0,0,148,0,0]},{"a":58921,"t":"byte","b":[152,0,2,168,0,4,2,170]},{"a":58929,"t":"byte","b":[0,130,3,215,192,3,87,0]},{"a":58937,"t":"byte","b":[2,0,65,0,130,0,73,0]},{"a":58945,"t":"byte","b":[0,74,0,2,0,72,0,130]},{"a":58953,"t":"byte","b":[0,96,0,0,168,0,3,0]},{"a":58961,"t":"byte","b":[0,0]},{"a":58963,"s":"graphic 3","t":"byte","b":[131,0,156,0,0,148,0,2]},{"a":58971,"t":"byte","b":[152,0,2,2,170,0,133,10]},{"a":58979,"t":"byte","b":[170,128,8,168,128,15,168,240]},{"a":58987,"t":"byte","b":[12,84,192,0,84,0,5,0]},{"a":58995,"t":"byte","b":[65,0,132,0,65,128,1,1]},{"a":59003,"t":"byte","b":[128,10,2,0,2,128,0,2]},{"a":59011,"t":"byte","b":[0,0,0]},{"a":59014,"s":"graphic 4","t":"byte","b":[132,0,156,0,0,148,0,0]},{"a":59022,"t":"byte","b":[152,0,2,168,0,4,2,170]},{"a":59030,"t":"byte","b":[0,130,3,215,192,3,87,0]},{"a":59038,"t":"byte","b":[3,0,68,0,133,9,68,0]},{"a":59046,"t":"byte","b":[10,4,0,8,4,0,8,6]},{"a":59054,"t":"byte","b":[0,0,10,128,3,0,0,0]},{"a":59062,"s":"graphic 5","t":"byte","b":[2,0,168,0,6,2,170,0]},{"a":59070,"t":"byte","b":[2,3,87,0,7,0,68,0]},{"a":59078,"t":"byte","b":[130,0,102,0,0,102,128,2]},{"a":59086,"t":"byte","b":[0,0,0]},{"a":59089,"s":"graphic 6","t":"byte","b":[132,0,156,0,0,148,0,0]},{"a":59097,"t":"byte","b":[168,0,2,168,0,2,2,170]},{"a":59105,"t":"byte","b":[0,2,2,162,0,130,3,87]},{"a":59113,"t":"byte","b":[192,3,87,0,2,0,65,0]},{"a":59121,"t":"byte","b":[130,0,73,0,0,74,0,2]},{"a":59129,"t":"byte","b":[0,72,0,130,0,96,0,0]},{"a":59137,"t":"byte","b":[168,0,3,0,0,0]},{"a":59143,"s":"graphic 7","t":"byte","b":[138,0,172,0,0,168,0,2]},{"a":59151,"t":"byte","b":[168,0,2,170,0,2,162,0]},{"a":59159,"t":"byte","b":[10,162,128,8,168,128,15,168]},{"a":59167,"t":"byte","b":[240,12,84,192,0,84,0,5]},{"a":59175,"t":"byte","b":[0,65,0,132,0,65,128,1]},{"a":59183,"t":"byte","b":[1,128,10,2,0,2,128,0]},{"a":59191,"t":"byte","b":[2,0,0,0]},{"a":59195,"s":"graphic 8","t":"byte","b":[131,0,156,0,0,148,0,2]},{"a":59203,"t":"byte","b":[154,0,5,2,170,0,130,3]},{"a":59211,"t":"byte","b":[215,0,3,87,0,7,0,68]},{"a":59219,"t":"byte","b":[0,130,0,102,0,0,170,128]},{"a":59227,"t":"byte","b":[2,0,0,0]},{"a":59231,"s":"graphic 9","t":"byte","b":[132,0,156,0,0,148,0,0]},{"a":59239,"t":"byte","b":[168,0,2,168,0,4,2,170]},{"a":59247,"t":"byte","b":[0,130,3,87,192,3,87,0]},{"a":59255,"t":"byte","b":[3,0,68,0,133,9,68,0]},{"a":59263,"t":"byte","b":[10,4,0,8,4,0,8,6]},{"a":59271,"t":"byte","b":[0,0,10,128,3,0,0,0]},{"a":59279,"s":"graphic 10","t":"byte","b":[131,0,156,0,0,148,0,0]},{"a":59287,"t":"byte","b":[152,0,5,0,168,0,134,0]},{"a":59295,"t":"byte","b":[100,0,0,124,0,0,52,0]},{"a":59303,"t":"byte","b":[0,20,0,2,84,0,2,144]},{"a":59311,"t":"byte","b":[0,2,2,16,0,130,0,24]},{"a":59319,"t":"byte","b":[0,0,42,0,3,0,0,0]},{"a":59327,"s":"graphic 11","t":"byte","b":[132,0,156,0,0,148,0,0]},{"a":59335,"t":"byte","b":[152,0,2,168,0,4,2,170]},{"a":59343,"t":"byte","b":[0,133,3,215,192,3,87,0]},{"a":59351,"t":"byte","b":[0,65,0,0,73,0,0,74]},{"a":59359,"t":"byte","b":[0,2,0,72,0,2,0,64]},{"a":59367,"t":"byte","b":[0,130,0,96,0,0,168,0]},{"a":59375,"t":"byte","b":[2,0,0,0]},{"a":59379,"s":"graphic 12","t":"byte","b":[131,0,156,0,0,148,0,2]},{"a":59387,"t":"byte","b":[152,0,2,2,170,0,133,10]},{"a":59395,"t":"byte","b":[170,128,8,168,128,15,168,240]},{"a":59403,"t":"byte","b":[12,84,192,0,84,0,3,0]},{"a":59411,"t":"byte","b":[65,0,2,0,65,128,131,1]},{"a":59419,"t":"byte","b":[2,0,10,0,0,2,128,0]},{"a":59427,"t":"byte","b":[3,0,0,0]},{"a":59431,"s":"graphic 13","t":"byte","b":[132,0,156,0,0,148,0,0]},{"a":59439,"t":"byte","b":[168,0,2,168,0,4,2,170]},{"a":59447,"t":"byte","b":[0,135,3,87,192,3,87,0]},{"a":59455,"t":"byte","b":[0,21,0,0,149,0,0,164]},{"a":59463,"t":"byte","b":[0,0,132,0,0,164,0,2]},{"a":59471,"t":"byte","b":[0,4,0,130,0,6,0,0]},{"a":59479,"t":"byte","b":[10,128,2,0,0,0]},{"a":59485,"s":"graphic 14","t":"byte","b":[131,0,156,0,0,148,0,0]},{"a":59493,"t":"byte","b":[152,0,5,0,168,0,131,0]},{"a":59501,"t":"byte","b":[100,0,0,124,0,0,180,0]},{"a":59509,"t":"byte","b":[2,0,148,0,129,0,144,0]},{"a":59517,"t":"byte","b":[2,0,16,0,130,0,24,0]},{"a":59525,"t":"byte","b":[0,42,0,3,0,0,0]},{"a":59532,"s":"graphic 15","t":"byte","b":[132,0,156,0,0,148,0,0]},{"a":59540,"t":"byte","b":[152,0,2,168,0,4,2,170]},{"a":59548,"t":"byte","b":[0,130,3,215,192,3,87,0]},{"a":59556,"t":"byte","b":[2,0,65,0,130,0,73,0]},{"a":59564,"t":"byte","b":[0,74,0,2,0,72,0,130]},{"a":59572,"t":"byte","b":[0,96,0,0,168,0,3,0]},{"a":59580,"t":"byte","b":[0,0]},{"a":59582,"s":"graphic 16","t":"byte","b":[131,0,156,0,0,148,0,2]},{"a":59590,"t":"byte","b":[152,0,2,2,170,0,133,10]},{"a":59598,"t":"byte","b":[170,128,8,168,128,15,168,240]},{"a":59606,"t":"byte","b":[12,84,192,0,84,0,3,0]},{"a":59614,"t":"byte","b":[17,0,133,0,81,0,2,129]},{"a":59622,"t":"byte","b":[0,0,161,128,0,1,128,0]},{"a":59630,"t":"byte","b":[2,0,3,0,0,0]},{"a":59636,"s":"graphic 17","t":"byte","b":[133,0,116,0,0,84,0,2]},{"a":59644,"t":"byte","b":[102,0,2,170,0,10,170,128]},{"a":59652,"t":"byte","b":[2,8,168,128,131,15,171,192]},{"a":59660,"t":"byte","b":[12,84,192,0,84,0,7,0]},{"a":59668,"t":"byte","b":[68,0,130,2,70,0,10,138]},{"a":59676,"t":"byte","b":[128,2,0,0,0]},{"a":59681,"s":"graphic 18","t":"byte","b":[138,0,116,0,0,84,0,2]},{"a":59689,"t":"byte","b":[102,0,2,170,128,10,170,160]},{"a":59697,"t":"byte","b":[8,168,160,40,168,128,60,175]},{"a":59705,"t":"byte","b":[0,48,87,0,1,84,0,3]},{"a":59713,"t":"byte","b":[1,4,0,134,1,68,0,0]},{"a":59721,"t":"byte","b":[68,0,2,68,0,10,132,0]},{"a":59729,"t":"byte","b":[0,6,0,0,10,128,2,0]},{"a":59737,"t":"byte","b":[0,0]},{"a":59739,"s":"graphic 19","t":"byte","b":[138,0,116,0,0,84,0,2]},{"a":59747,"t":"byte","b":[102,128,10,170,160,40,168,160]},{"a":59755,"t":"byte","b":[60,168,128,48,175,0,0,171]},{"a":59763,"t":"byte","b":[0,0,84,0,1,84,0,2]},{"a":59771,"t":"byte","b":[5,4,0,131,1,68,0,2]},{"a":59779,"t":"byte","b":[68,0,10,132,0,2,0,4]},{"a":59787,"t":"byte","b":[0,130,0,6,0,0,10,128]},{"a":59795,"t":"byte","b":[2,0,0,0]},{"a":59799,"l":"gfx_body_020","c":"Packed sprite graphics 20-42 ($E997-$ED5E): the person's body poses (figure 0; figure_frames $0D77 entries 0-117 name graphics 0-97).","s":"graphic 20","t":"byte","b":[2,0,168,0,2,2,170,0]},{"a":59807,"t":"byte","b":[129,10,170,128,2,8,168,128]},{"a":59815,"t":"byte","b":[131,15,171,192,12,84,192,0]},{"a":59823,"t":"byte","b":[84,0,7,0,68,0,130,2]},{"a":59831,"t":"byte","b":[70,0,10,138,128,2,0,0]},{"a":59839,"t":"byte","b":[0]},{"a":59840,"s":"graphic 21","t":"byte","b":[2,0,168,0,136,2,170,0]},{"a":59848,"t":"byte","b":[2,170,128,10,170,160,8,168]},{"a":59856,"t":"byte","b":[160,40,168,128,60,171,0,48]},{"a":59864,"t":"byte","b":[87,0,1,84,0,3,1,4]},{"a":59872,"t":"byte","b":[0,134,1,68,0,0,68,0]},{"a":59880,"t":"byte","b":[2,68,0,10,132,0,0,6]},{"a":59888,"t":"byte","b":[0,0,10,128,2,0,0,0]},{"a":59896,"s":"graphic 22","t":"byte","b":[2,0,168,0,136,2,170,128]},{"a":59904,"t":"byte","b":[10,170,160,40,168,160,60,168]},{"a":59912,"t":"byte","b":[128,48,171,0,0,171,0,0]},{"a":59920,"t":"byte","b":[84,0,1,84,0,2,5,4]},{"a":59928,"t":"byte","b":[0,131,1,68,0,2,68,0]},{"a":59936,"t":"byte","b":[10,132,0,2,0,4,0,130]},{"a":59944,"t":"byte","b":[0,6,0,0,10,128,2,0]},{"a":59952,"t":"byte","b":[0,0]},{"a":59954,"s":"graphic 23","t":"byte","b":[2,0,168,0,136,2,170,60]},{"a":59962,"t":"byte","b":[2,170,44,10,170,160,8,168]},{"a":59970,"t":"byte","b":[128,8,168,0,15,168,0,12]},{"a":59978,"t":"byte","b":[84,0,0,84,0,7,0,68]},{"a":59986,"t":"byte","b":[0,130,0,102,0,0,102,128]},{"a":59994,"t":"byte","b":[2,0,0,0]},{"a":59998,"s":"graphic 24","t":"byte","b":[136,0,0,204,0,0,48,0]},{"a":60006,"t":"byte","b":[0,252,0,168,160,0,170,128]},{"a":60014,"t":"byte","b":[2,170,0,10,168,0,2,168]},{"a":60022,"t":"byte","b":[0,2,0,168,0,2,0,84]},{"a":60030,"t":"byte","b":[0,2,0,0,0,2,1,1]},{"a":60038,"t":"byte","b":[0,130,9,1,128,42,2,160]},{"a":60046,"t":"byte","b":[3,0,0,0]},{"a":60050,"s":"graphic 25","t":"byte","b":[3,0,0,0,132,0,168,0]},{"a":60058,"t":"byte","b":[62,170,240,10,170,128,2,170]},{"a":60066,"t":"byte","b":[0,3,0,168,0,2,0,84]},{"a":60074,"t":"byte","b":[0,2,0,0,0,2,1,1]},{"a":60082,"t":"byte","b":[0,130,9,1,128,42,2,160]},{"a":60090,"t":"byte","b":[3,0,0,0]},{"a":60094,"s":"graphic 26","t":"byte","b":[129,0,2,0,2,0,170,128]},{"a":60102,"t":"byte","b":[130,2,170,0,2,168,0,2]},{"a":60110,"t":"byte","b":[10,168,0,2,0,168,0,2]},{"a":60118,"t":"byte","b":[0,84,0,7,0,68,0,131]},{"a":60126,"t":"byte","b":[2,70,0,10,138,128,0,0]},{"a":60134,"t":"byte","b":[0]},{"a":60135,"s":"graphic 27","t":"byte","b":[3,0,0,0,129,0,168,0]},{"a":60143,"t":"byte","b":[2,2,170,0,2,10,170,128]},{"a":60151,"t":"byte","b":[2,0,168,0,2,0,84,0]},{"a":60159,"t":"byte","b":[2,0,0,0,2,1,1,0]},{"a":60167,"t":"byte","b":[130,9,1,128,42,2,160,3]},{"a":60175,"t":"byte","b":[0,0,0]},{"a":60178,"s":"graphic 28","t":"byte","b":[129,0,168,0,2,2,170,0]},{"a":60186,"t":"byte","b":[129,2,86,0,4,1,85,0]},{"a":60194,"t":"byte","b":[7,0,68,0,130,2,70,0]},{"a":60202,"t":"byte","b":[10,138,128,4,0,0,0]},{"a":60209,"s":"graphic 29","t":"byte","b":[129,0,168,0,2,2,170,0]},{"a":60217,"t":"byte","b":[129,2,86,0,4,9,85,128]},{"a":60225,"t":"byte","b":[129,15,71,192,6,0,68,0]},{"a":60233,"t":"byte","b":[130,2,70,0,10,138,128,4]},{"a":60241,"t":"byte","b":[0,0,0]},{"a":60244,"s":"graphic 30","t":"byte","b":[129,0,168,0,2,2,170,0]},{"a":60252,"t":"byte","b":[129,10,86,128,2,9,85,128]},{"a":60260,"t":"byte","b":[2,33,85,32,130,32,68,32]},{"a":60268,"t":"byte","b":[60,68,240,5,0,68,0,130]},{"a":60276,"t":"byte","b":[2,70,0,10,138,128,4,0]},{"a":60284,"t":"byte","b":[0,0]},{"a":60286,"s":"graphic 31","t":"byte","b":[2,0,168,0,6,2,170,0]},{"a":60294,"t":"byte","b":[2,3,87,0,7,0,68,0]},{"a":60302,"t":"byte","b":[130,2,70,0,10,138,128,2]},{"a":60310,"t":"byte","b":[0,0,0]},{"a":60313,"s":"graphic 32","t":"byte","b":[133,0,116,0,0,84,0,2]},{"a":60321,"t":"byte","b":[102,0,2,170,0,10,170,128]},{"a":60329,"t":"byte","b":[2,8,168,128,131,15,171,192]},{"a":60337,"t":"byte","b":[12,84,192,0,84,0,7,0]},{"a":60345,"t":"byte","b":[68,0,130,2,70,0,10,138]},{"a":60353,"t":"byte","b":[128,2,0,0,0]},{"a":60358,"s":"graphic 33","t":"byte","b":[3,0,0,0,138,0,116,0]},{"a":60366,"t":"byte","b":[0,84,0,2,102,0,2,170]},{"a":60374,"t":"byte","b":[0,10,170,128,40,168,160,240]},{"a":60382,"t":"byte","b":[168,60,48,168,48,0,84,0]},{"a":60390,"t":"byte","b":[1,85,0,3,1,1,0,130]},{"a":60398,"t":"byte","b":[9,1,128,42,2,160,3,0]},{"a":60406,"t":"byte","b":[0,0]},{"a":60408,"s":"graphic 34","t":"byte","b":[134,0,0,0,192,0,12,240]},{"a":60416,"t":"byte","b":[0,60,40,116,160,10,86,128]},{"a":60424,"t":"byte","b":[2,102,0,4,0,168,0,129]},{"a":60432,"t":"byte","b":[0,152,0,2,0,84,0,133]},{"a":60440,"t":"byte","b":[0,20,0,0,36,0,0,168]},{"a":60448,"t":"byte","b":[0,0,6,0,0,10,128,3]},{"a":60456,"t":"byte","b":[0,0,0]},{"a":60459,"s":"graphic 35","t":"byte","b":[134,40,0,160,32,0,32,40]},{"a":60467,"t":"byte","b":[0,160,10,118,128,2,86,0]},{"a":60475,"t":"byte","b":[0,100,0,3,0,168,0,130]},{"a":60483,"t":"byte","b":[0,169,0,0,165,0,2,0]},{"a":60491,"t":"byte","b":[85,0,133,0,5,0,0,5]},{"a":60499,"t":"byte","b":[128,0,6,160,0,8,0,0]},{"a":60507,"t":"byte","b":[42,0,3,0,0,0]},{"a":60513,"s":"graphic 36","t":"byte","b":[3,0,0,0,132,0,168,0]},{"a":60521,"t":"byte","b":[204,168,204,58,170,176,250,170]},{"a":60529,"t":"byte","b":[188,3,0,168,0,2,1,85]},{"a":60537,"t":"byte","b":[0,2,0,0,0,131,1,1]},{"a":60545,"t":"byte","b":[0,9,1,128,42,2,160,4]},{"a":60553,"t":"byte","b":[0,0,0]},{"a":60556,"s":"graphic 37","t":"byte","b":[3,0,0,0,132,0,168,0]},{"a":60564,"t":"byte","b":[51,171,48,14,170,192,62,170]},{"a":60572,"t":"byte","b":[240,3,0,168,0,2,0,84]},{"a":60580,"t":"byte","b":[0,2,0,0,0,2,1,1]},{"a":60588,"t":"byte","b":[0,130,9,1,128,42,2,160]},{"a":60596,"t":"byte","b":[3,0,0,0]},{"a":60600,"s":"graphic 38","t":"byte","b":[134,204,0,204,48,0,48,252]},{"a":60608,"t":"byte","b":[0,252,40,168,160,10,170,128]},{"a":60616,"t":"byte","b":[2,170,0,4,0,168,0,2]},{"a":60624,"t":"byte","b":[0,84,0,2,0,0,0,2]},{"a":60632,"t":"byte","b":[1,1,0,130,9,1,128,42]},{"a":60640,"t":"byte","b":[2,160,3,0,0,0]},{"a":60646,"s":"graphic 39","t":"byte","b":[132,0,168,0,2,168,0,10]},{"a":60654,"t":"byte","b":[170,0,42,86,0,2,33,85]},{"a":60662,"t":"byte","b":[128,131,61,85,128,49,85,128]},{"a":60670,"t":"byte","b":[0,68,128,6,0,68,0,130]},{"a":60678,"t":"byte","b":[2,70,0,10,138,128,4,0]},{"a":60686,"t":"byte","b":[0,0]},{"a":60688,"s":"graphic 40","t":"byte","b":[131,0,116,0,0,84,0,2]},{"a":60696,"t":"byte","b":[102,0,2,10,170,128,130,3]},{"a":60704,"t":"byte","b":[207,0,0,252,0,14,0,0]},{"a":60712,"t":"byte","b":[0]},{"a":60713,"s":"graphic 41","t":"byte","b":[131,0,116,0,0,84,0,12]},{"a":60721,"t":"byte","b":[102,0,2,62,170,128,130,2]},{"a":60729,"t":"byte","b":[175,0,0,188,0,14,0,0]},{"a":60737,"t":"byte","b":[0]},{"a":60738,"s":"graphic 42","t":"byte","b":[136,204,116,0,56,84,0,250]},{"a":60746,"t":"byte","b":[100,0,10,170,0,2,170,0]},{"a":60754,"t":"byte","b":[0,190,0,0,188,0,0,48]},{"a":60762,"t":"byte","b":[0,13,0,0,0]},{"a":60767,"l":"gfx_body_043","c":"Packed sprite graphics 43-64 ($ED5F-$F124): the person's body poses (figure 0; figure_frames $0D77 entries 0-117 name graphics 0-97).","s":"graphic 43","t":"byte","b":[131,0,156,0,0,148,0,0]},{"a":60775,"t":"byte","b":[152,0,5,0,168,0,130,0]},{"a":60783,"t":"byte","b":[124,0,0,116,0,7,0,16]},{"a":60791,"t":"byte","b":[0,130,0,24,0,0,42,0]},{"a":60799,"t":"byte","b":[2,0,0,0]},{"a":60803,"s":"graphic 44","t":"byte","b":[135,39,0,0,37,0,0,38]},{"a":60811,"t":"byte","b":[0,0,42,0,0,42,172,0]},{"a":60819,"t":"byte","b":[42,175,0,0,3,64,3,0]},{"a":60827,"t":"byte","b":[0,64,133,0,1,96,0,1]},{"a":60835,"t":"byte","b":[168,0,1,0,0,1,128,0]},{"a":60843,"t":"byte","b":[2,160,6,0,0,0]},{"a":60849,"s":"graphic 45","t":"byte","b":[139,39,0,0,37,0,0,38]},{"a":60857,"t":"byte","b":[0,0,42,0,0,42,172,0]},{"a":60865,"t":"byte","b":[42,175,0,0,3,64,0,0]},{"a":60873,"t":"byte","b":[64,0,0,16,0,0,24,0]},{"a":60881,"t":"byte","b":[1,42,2,0,1,0,130,0]},{"a":60889,"t":"byte","b":[1,128,0,2,160,6,0,0]},{"a":60897,"t":"byte","b":[0]},{"a":60898,"s":"graphic 46","t":"byte","b":[131,0,156,0,0,148,0,2]},{"a":60906,"t":"byte","b":[152,0,5,2,168,0,131,2]},{"a":60914,"t":"byte","b":[84,0,15,84,16,12,0,16]},{"a":60922,"t":"byte","b":[3,0,0,16,130,0,0,24]},{"a":60930,"t":"byte","b":[0,0,42,5,0,0,0]},{"a":60937,"s":"graphic 47","t":"byte","b":[136,2,112,0,10,80,0,10]},{"a":60945,"t":"byte","b":[96,0,42,161,0,34,165,64]},{"a":60953,"t":"byte","b":[162,149,80,241,84,88,193,80]},{"a":60961,"t":"byte","b":[42,13,0,0,0]},{"a":60966,"s":"graphic 48","t":"byte","b":[130,60,0,240,48,0,48,19]},{"a":60974,"t":"byte","b":[0,0,0]},{"a":60977,"s":"graphic 49","t":"byte","b":[136,2,116,0,2,84,0,10]},{"a":60985,"t":"byte","b":[100,0,40,168,0,240,168,0]},{"a":60993,"t":"byte","b":[48,168,0,0,88,0,1,89]},{"a":61001,"t":"byte","b":[0,2,1,9,0,131,1,61]},{"a":61009,"t":"byte","b":[0,9,13,128,42,2,160,8]},{"a":61017,"t":"byte","b":[0,0,0]},{"a":61020,"s":"graphic 50","t":"byte","b":[133,240,116,60,240,84,60,42]},{"a":61028,"t":"byte","b":[102,160,10,170,128,2,170,0]},{"a":61036,"t":"byte","b":[3,0,168,0,130,0,84,0]},{"a":61044,"t":"byte","b":[1,85,0,3,1,1,0,130]},{"a":61052,"t":"byte","b":[9,1,128,42,2,160,6,0]},{"a":61060,"t":"byte","b":[0,0]},{"a":61062,"s":"graphic 51","t":"byte","b":[131,0,116,0,0,220,0,2]},{"a":61070,"t":"byte","b":[238,0,2,10,170,128,129,2]},{"a":61078,"t":"byte","b":[170,0,2,0,168,0,130,0]},{"a":61086,"t":"byte","b":[84,0,1,85,0,3,1,1]},{"a":61094,"t":"byte","b":[0,130,9,1,128,42,2,160]},{"a":61102,"t":"byte","b":[6,0,0,0]},{"a":61106,"s":"graphic 52","t":"byte","b":[134,0,116,0,0,84,0,62]},{"a":61114,"t":"byte","b":[102,0,62,170,128,10,170,128]},{"a":61122,"t":"byte","b":[2,170,0,2,0,168,0,130]},{"a":61130,"t":"byte","b":[0,84,0,0,85,0,3,1]},{"a":61138,"t":"byte","b":[1,0,130,9,1,128,42,2]},{"a":61146,"t":"byte","b":[160,6,0,0,0]},{"a":61151,"s":"graphic 53","t":"byte","b":[138,0,116,0,0,84,0,250]},{"a":61159,"t":"byte","b":[102,0,58,170,0,2,170,128]},{"a":61167,"t":"byte","b":[0,168,160,0,168,60,0,168]},{"a":61175,"t":"byte","b":[48,0,84,0,1,85,0,3]},{"a":61183,"t":"byte","b":[1,1,0,130,9,1,128,42]},{"a":61191,"t":"byte","b":[2,160,6,0,0,0]},{"a":61197,"s":"graphic 54","t":"byte","b":[138,0,116,0,8,84,0,10]},{"a":61205,"t":"byte","b":[102,0,2,170,0,2,170,128]},{"a":61213,"t":"byte","b":[0,168,160,0,168,60,0,168]},{"a":61221,"t":"byte","b":[48,0,84,0,1,85,0,3]},{"a":61229,"t":"byte","b":[1,1,0,130,9,1,128,42]},{"a":61237,"t":"byte","b":[2,160,6,0,0,0]},{"a":61243,"s":"graphic 55","t":"byte","b":[132,0,156,0,0,148,0,2]},{"a":61251,"t":"byte","b":[152,0,2,168,0,2,10,175]},{"a":61259,"t":"byte","b":[0,2,0,168,0,2,0,84]},{"a":61267,"t":"byte","b":[0,3,0,68,0,133,9,68]},{"a":61275,"t":"byte","b":[0,10,4,0,8,4,0,8]},{"a":61283,"t":"byte","b":[6,0,0,10,128,3,0,0]},{"a":61291,"t":"byte","b":[0]},{"a":61292,"s":"graphic 56","t":"byte","b":[132,0,156,0,0,148,0,2]},{"a":61300,"t":"byte","b":[152,0,2,168,0,2,10,175]},{"a":61308,"t":"byte","b":[0,2,0,168,0,2,0,84]},{"a":61316,"t":"byte","b":[0,131,0,20,0,2,84,0]},{"a":61324,"t":"byte","b":[2,144,0,2,2,16,0,130]},{"a":61332,"t":"byte","b":[0,24,0,0,42,0,4,0]},{"a":61340,"t":"byte","b":[0,0]},{"a":61342,"s":"graphic 57","t":"byte","b":[132,0,156,0,0,148,0,2]},{"a":61350,"t":"byte","b":[152,0,2,168,0,2,10,175]},{"a":61358,"t":"byte","b":[0,2,0,168,0,2,0,84]},{"a":61366,"t":"byte","b":[0,2,0,65,0,130,0,73]},{"a":61374,"t":"byte","b":[0,0,74,0,2,0,72,0]},{"a":61382,"t":"byte","b":[130,0,96,0,0,168,0,3]},{"a":61390,"t":"byte","b":[0,0,0]},{"a":61393,"s":"graphic 58","t":"byte","b":[132,0,156,0,0,148,0,2]},{"a":61401,"t":"byte","b":[152,0,2,168,0,2,10,175]},{"a":61409,"t":"byte","b":[0,2,0,168,0,2,0,84]},{"a":61417,"t":"byte","b":[0,5,0,65,0,132,0,65]},{"a":61425,"t":"byte","b":[128,1,1,128,10,2,0,2]},{"a":61433,"t":"byte","b":[128,0,2,0,0,0]},{"a":61439,"s":"graphic 59","t":"byte","b":[2,0,168,0,2,2,170,0]},{"a":61447,"t":"byte","b":[2,10,170,128,2,0,168,0]},{"a":61455,"t":"byte","b":[2,0,84,0,7,0,68,0]},{"a":61463,"t":"byte","b":[130,2,70,0,10,138,128,2]},{"a":61471,"t":"byte","b":[0,0,0]},{"a":61474,"s":"graphic 60","t":"byte","b":[2,0,168,0,2,2,170,0]},{"a":61482,"t":"byte","b":[2,10,170,128,2,0,168,0]},{"a":61490,"t":"byte","b":[130,0,84,0,1,84,0,3]},{"a":61498,"t":"byte","b":[1,4,0,134,1,68,0,0]},{"a":61506,"t":"byte","b":[68,0,2,68,0,10,132,0]},{"a":61514,"t":"byte","b":[0,6,0,0,10,128,2,0]},{"a":61522,"t":"byte","b":[0,0]},{"a":61524,"s":"graphic 61","t":"byte","b":[2,0,168,0,2,2,170,0]},{"a":61532,"t":"byte","b":[2,10,170,128,2,0,168,0]},{"a":61540,"t":"byte","b":[130,0,84,0,1,84,0,2]},{"a":61548,"t":"byte","b":[5,4,0,131,1,68,0,2]},{"a":61556,"t":"byte","b":[68,0,10,132,0,2,0,4]},{"a":61564,"t":"byte","b":[0,130,0,6,0,0,10,128]},{"a":61572,"t":"byte","b":[2,0,0,0]},{"a":61576,"s":"graphic 62","t":"byte","b":[132,0,0,0,0,168,0,2]},{"a":61584,"t":"byte","b":[171,128,10,171,128,2,10,168]},{"a":61592,"t":"byte","b":[128,132,2,170,128,2,170,0]},{"a":61600,"t":"byte","b":[2,168,0,1,84,0,3,1]},{"a":61608,"t":"byte","b":[4,0,134,1,68,0,0,68]},{"a":61616,"t":"byte","b":[0,2,68,0,10,132,0,0]},{"a":61624,"t":"byte","b":[6,0,0,10,128,2,0,0]},{"a":61632,"t":"byte","b":[0]},{"a":61633,"s":"graphic 63","t":"byte","b":[132,0,156,0,0,148,0,2]},{"a":61641,"t":"byte","b":[152,0,2,168,0,2,10,175]},{"a":61649,"t":"byte","b":[0,2,0,168,0,2,0,84]},{"a":61657,"t":"byte","b":[0,3,0,68,0,133,9,68]},{"a":61665,"t":"byte","b":[0,10,4,0,8,4,0,8]},{"a":61673,"t":"byte","b":[6,0,0,10,128,3,0,0]},{"a":61681,"t":"byte","b":[0]},{"a":61682,"s":"graphic 64","t":"byte","b":[132,0,156,0,0,148,0,2]},{"a":61690,"t":"byte","b":[152,0,2,168,0,2,10,175]},{"a":61698,"t":"byte","b":[0,2,0,168,0,2,0,84]},{"a":61706,"t":"byte","b":[0,2,0,20,0,130,2,84]},{"a":61714,"t":"byte","b":[0,2,144,0,2,2,16,0]},{"a":61722,"t":"byte","b":[130,0,24,0,0,42,0,3]},{"a":61730,"t":"byte","b":[0,0,0]},{"a":61733,"l":"gfx_body_065","c":"Packed sprite graphics 65-90 ($F125-$F4F3): the person's body poses (figure 0; figure_frames $0D77 entries 0-117 name graphics 0-97).","s":"graphic 65","t":"byte","b":[132,0,156,0,0,148,0,2]},{"a":61741,"t":"byte","b":[152,0,2,168,0,2,10,175]},{"a":61749,"t":"byte","b":[0,2,0,168,0,133,0,84]},{"a":61757,"t":"byte","b":[0,0,85,0,0,65,0,0]},{"a":61765,"t":"byte","b":[73,0,0,74,0,2,0,72]},{"a":61773,"t":"byte","b":[0,2,0,64,0,130,0,96]},{"a":61781,"t":"byte","b":[0,0,168,0,2,0,0,0]},{"a":61789,"s":"graphic 66","t":"byte","b":[132,0,156,0,0,148,0,2]},{"a":61797,"t":"byte","b":[152,0,2,168,0,2,10,175]},{"a":61805,"t":"byte","b":[0,2,0,168,0,2,0,84]},{"a":61813,"t":"byte","b":[0,3,0,65,0,2,0,65]},{"a":61821,"t":"byte","b":[128,131,1,2,0,10,0,0]},{"a":61829,"t":"byte","b":[2,128,0,3,0,0,0]},{"a":61836,"s":"graphic 67","t":"byte","b":[131,0,116,0,0,84,0,2]},{"a":61844,"t":"byte","b":[102,0,5,2,170,0,2,3]},{"a":61852,"t":"byte","b":[87,0,129,1,69,0,2,1]},{"a":61860,"t":"byte","b":[1,0,132,1,69,0,0,68]},{"a":61868,"t":"byte","b":[0,2,70,0,10,138,128,4]},{"a":61876,"t":"byte","b":[0,0,0]},{"a":61879,"s":"graphic 68","t":"byte","b":[134,48,0,48,240,0,60,32]},{"a":61887,"t":"byte","b":[0,32,40,116,160,8,84,128]},{"a":61895,"t":"byte","b":[10,102,128,2,2,170,0,3]},{"a":61903,"t":"byte","b":[0,168,0,2,0,84,0,131]},{"a":61911,"t":"byte","b":[1,69,0,1,1,0,5,1]},{"a":61919,"t":"byte","b":[64,2,4,0,64,131,36,0]},{"a":61927,"t":"byte","b":[96,168,0,168,0,0,0]},{"a":61934,"s":"graphic 69","t":"byte","b":[2,0,168,0,129,2,170,0]},{"a":61942,"t":"byte","b":[2,10,170,128,129,2,170,0]},{"a":61950,"t":"byte","b":[2,0,168,0,2,0,84,0]},{"a":61958,"t":"byte","b":[7,0,68,0,130,2,70,0]},{"a":61966,"t":"byte","b":[10,138,128,2,0,0,0]},{"a":61973,"s":"graphic 70","t":"byte","b":[134,0,168,0,0,170,0,2]},{"a":61981,"t":"byte","b":[170,128,10,170,128,10,170,0]},{"a":61989,"t":"byte","b":[2,168,0,2,0,168,0,2]},{"a":61997,"t":"byte","b":[0,84,0,7,0,68,0,130]},{"a":62005,"t":"byte","b":[2,70,0,10,138,128,2,0]},{"a":62013,"t":"byte","b":[0,0]},{"a":62015,"s":"graphic 71","t":"byte","b":[3,0,168,0,2,2,170,0]},{"a":62023,"t":"byte","b":[3,0,168,0,2,0,84,0]},{"a":62031,"t":"byte","b":[7,0,68,0,130,2,70,0]},{"a":62039,"t":"byte","b":[10,138,128,2,0,0,0]},{"a":62046,"s":"graphic 72","t":"byte","b":[16,0,0,0,129,0,252,0]},{"a":62054,"t":"byte","b":[4,3,255,0]},{"a":62058,"s":"graphic 73","t":"byte","b":[13,0,0,0,3,0,0,36]},{"a":62066,"t":"byte","b":[131,0,252,4,3,255,4,3]},{"a":62074,"t":"byte","b":[255,52,2,3,255,60]},{"a":62080,"s":"graphic 74","t":"byte","b":[8,0,0,0,3,0,0,36]},{"a":62088,"t":"byte","b":[2,0,0,4,129,0,0,52]},{"a":62096,"t":"byte","b":[2,0,0,60,130,0,252,48]},{"a":62104,"t":"byte","b":[3,255,240,3,3,255,0]},{"a":62111,"s":"graphic 75","t":"byte","b":[11,0,0,0,2,63,0,0]},{"a":62119,"t":"byte","b":[129,28,0,0,2,16,0,0]},{"a":62127,"t":"byte","b":[129,16,252,0,3,27,255,0]},{"a":62135,"t":"byte","b":[129,3,255,0]},{"a":62139,"s":"graphic 76","t":"byte","b":[12,0,0,0,2,63,0,0]},{"a":62147,"t":"byte","b":[132,28,0,0,16,0,0,16]},{"a":62155,"t":"byte","b":[252,0,19,255,0,3,27,255]},{"a":62163,"t":"byte","b":[0]},{"a":62164,"s":"graphic 77","t":"byte","b":[2,0,0,32,2,0,168,32]},{"a":62172,"t":"byte","b":[2,2,170,160,4,2,168,0]},{"a":62180,"t":"byte","b":[2,3,84,0,7,0,68,0]},{"a":62188,"t":"byte","b":[130,0,102,0,0,102,128]},{"a":62195,"s":"graphic 78","t":"byte","b":[133,0,2,0,0,170,128,0]},{"a":62203,"t":"byte","b":[168,160,2,170,128,2,170,0]},{"a":62211,"t":"byte","b":[4,2,168,0,2,3,84,0]},{"a":62219,"t":"byte","b":[7,0,68,0,131,2,70,0]},{"a":62227,"t":"byte","b":[10,138,128,0,0,0]},{"a":62233,"s":"graphic 79","t":"byte","b":[131,0,116,0,2,86,0,2]},{"a":62241,"t":"byte","b":[102,0,2,10,170,128,131,42]},{"a":62249,"t":"byte","b":[170,160,42,171,160,0,15,0]},{"a":62257,"t":"byte","b":[5,0,0,0,3,1,1,0]},{"a":62265,"t":"byte","b":[130,9,1,128,42,2,160,3]},{"a":62273,"t":"byte","b":[0,0,0]},{"a":62276,"s":"graphic 80","t":"byte","b":[131,0,119,0,2,95,128,2]},{"a":62284,"t":"byte","b":[102,128,2,10,170,160,2,42]},{"a":62292,"t":"byte","b":[168,0,6,0,0,0,3,1]},{"a":62300,"t":"byte","b":[1,0,130,9,1,128,42,2]},{"a":62308,"t":"byte","b":[160,3,0,0,0]},{"a":62313,"s":"graphic 81","t":"byte","b":[133,0,116,0,0,84,0,2]},{"a":62321,"t":"byte","b":[102,0,2,170,0,10,170,128]},{"a":62329,"t":"byte","b":[3,8,168,128,129,15,87,192]},{"a":62337,"t":"byte","b":[12,0,0,0]},{"a":62341,"s":"graphic 82","t":"byte","b":[135,2,254,0,2,118,80,10]},{"a":62349,"t":"byte","b":[86,144,10,102,144,9,169,144]},{"a":62357,"t":"byte","b":[9,85,152,15,67,234,6,0]},{"a":62365,"t":"byte","b":[64,0,130,2,64,0,10,128]},{"a":62373,"t":"byte","b":[0,6,0,0,0]},{"a":62378,"s":"graphic 83","t":"byte","b":[129,0,168,0,2,2,170,0]},{"a":62386,"t":"byte","b":[129,2,86,0,2,9,85,80]},{"a":62394,"t":"byte","b":[131,9,84,144,9,80,152,15]},{"a":62402,"t":"byte","b":[67,234,6,0,64,0,130,2]},{"a":62410,"t":"byte","b":[64,0,10,128,0,4,0,0]},{"a":62418,"t":"byte","b":[0]},{"a":62419,"s":"graphic 84","t":"byte","b":[2,0,168,0,2,2,170,0]},{"a":62427,"t":"byte","b":[129,10,170,128,2,8,168,128]},{"a":62435,"t":"byte","b":[130,8,84,128,15,87,192,12]},{"a":62443,"t":"byte","b":[0,0,0]},{"a":62446,"s":"graphic 85","t":"byte","b":[2,0,168,0,6,2,170,0]},{"a":62454,"t":"byte","b":[2,3,87,0,129,1,69,0]},{"a":62462,"t":"byte","b":[2,1,1,0,132,1,69,0]},{"a":62470,"t":"byte","b":[0,68,0,2,70,0,10,138]},{"a":62478,"t":"byte","b":[128,4,0,0,0]},{"a":62483,"s":"graphic 86","t":"byte","b":[133,0,116,0,0,84,0,2]},{"a":62491,"t":"byte","b":[102,0,2,170,0,2,170,128]},{"a":62499,"t":"byte","b":[2,2,168,128,131,2,171,192]},{"a":62507,"t":"byte","b":[3,87,192,3,84,0,7,0]},{"a":62515,"t":"byte","b":[68,0,130,2,70,0,10,138]},{"a":62523,"t":"byte","b":[128,2,0,0,0]},{"a":62528,"s":"graphic 87","t":"byte","b":[133,0,2,0,0,118,128,0]},{"a":62536,"t":"byte","b":[84,160,2,102,128,2,170,0]},{"a":62544,"t":"byte","b":[4,2,168,0,2,3,84,0]},{"a":62552,"t":"byte","b":[7,0,68,0,131,2,70,0]},{"a":62560,"t":"byte","b":[10,138,128,0,0,0]},{"a":62566,"s":"graphic 88","t":"byte","b":[134,0,116,204,0,84,240,204]},{"a":62574,"t":"byte","b":[100,252,60,170,176,254,170,0]},{"a":62582,"t":"byte","b":[58,168,0,2,0,168,0,2]},{"a":62590,"t":"byte","b":[0,84,0,7,0,68,0,130]},{"a":62598,"t":"byte","b":[2,70,0,10,138,128,2,0]},{"a":62606,"t":"byte","b":[0,0]},{"a":62608,"s":"graphic 89","t":"byte","b":[136,0,116,0,0,84,0,0]},{"a":62616,"t":"byte","b":[116,0,2,186,0,10,186,128]},{"a":62624,"t":"byte","b":[2,186,0,0,184,0,0,168]},{"a":62632,"t":"byte","b":[0,2,0,84,0,130,0,68]},{"a":62640,"t":"byte","b":[0,0,69,0,2,0,65,0]},{"a":62648,"t":"byte","b":[129,0,69,0,2,0,68,0]},{"a":62656,"t":"byte","b":[130,2,70,128,10,138,0,2]},{"a":62664,"t":"byte","b":[0,0,0]},{"a":62667,"s":"graphic 90","t":"byte","b":[134,0,0,51,0,116,60,0]},{"a":62675,"t":"byte","b":[84,63,2,102,44,2,170,160]},{"a":62683,"t":"byte","b":[2,170,128,3,2,168,0,2]},{"a":62691,"t":"byte","b":[3,84,0,7,0,68,0,131]},{"a":62699,"t":"byte","b":[2,70,0,10,138,128,0,0]},{"a":62707,"t":"byte","b":[0]},{"a":62708,"l":"gfx_body_091","c":"Packed sprite graphics 91-97 ($F4F4-$F611): the person's body poses (figure 0; figure_frames $0D77 entries 0-117 name graphics 0-97).","s":"graphic 91","t":"byte","b":[134,0,12,192,0,119,192,0]},{"a":62716,"t":"byte","b":[95,192,2,103,128,2,170,128]},{"a":62724,"t":"byte","b":[2,170,0,3,2,168,0,2]},{"a":62732,"t":"byte","b":[3,84,0,7,0,68,0,131]},{"a":62740,"t":"byte","b":[2,70,0,10,138,128,0,0]},{"a":62748,"t":"byte","b":[0]},{"a":62749,"s":"graphic 92","t":"byte","b":[132,0,116,0,0,84,0,2]},{"a":62757,"t":"byte","b":[102,0,2,170,128,2,2,168]},{"a":62765,"t":"byte","b":[160,132,2,170,128,2,171,0]},{"a":62773,"t":"byte","b":[3,84,192,3,87,0,7,0]},{"a":62781,"t":"byte","b":[68,0,130,2,70,0,10,138]},{"a":62789,"t":"byte","b":[128,2,0,0,0]},{"a":62794,"s":"graphic 93","t":"byte","b":[138,0,116,0,0,84,0,2]},{"a":62802,"t":"byte","b":[102,0,2,170,128,2,168,160]},{"a":62810,"t":"byte","b":[2,170,128,2,171,0,2,168]},{"a":62818,"t":"byte","b":[192,3,87,0,3,84,0,7]},{"a":62826,"t":"byte","b":[0,68,0,130,2,70,0,10]},{"a":62834,"t":"byte","b":[138,128,2,0,0,0]},{"a":62840,"s":"graphic 94","t":"byte","b":[131,0,116,0,2,86,0,2]},{"a":62848,"t":"byte","b":[102,0,4,2,170,0,131,15]},{"a":62856,"t":"byte","b":[171,192,3,87,0,0,84,0]},{"a":62864,"t":"byte","b":[7,0,68,0,130,2,70,0]},{"a":62872,"t":"byte","b":[10,138,128,2,0,0,0]},{"a":62879,"s":"graphic 95","t":"byte","b":[131,2,118,0,2,86,0,2]},{"a":62887,"t":"byte","b":[102,0,3,8,168,128,130,60]},{"a":62895,"t":"byte","b":[168,240,12,168,192,2,0,84]},{"a":62903,"t":"byte","b":[0,7,0,68,0,130,2,70]},{"a":62911,"t":"byte","b":[0,10,138,128,2,0,0,0]},{"a":62919,"s":"graphic 96","t":"byte","b":[132,0,0,60,0,116,60,0]},{"a":62927,"t":"byte","b":[84,160,2,102,128,2,2,170]},{"a":62935,"t":"byte","b":[0,3,2,168,0,2,3,84]},{"a":62943,"t":"byte","b":[0,7,0,68,0,131,2,70]},{"a":62951,"t":"byte","b":[0,10,138,128,0,0,0]},{"a":62958,"s":"graphic 97","t":"byte","b":[132,0,116,63,0,84,63,2]},{"a":62966,"t":"byte","b":[102,255,2,170,255,4,2,168]},{"a":62974,"t":"byte","b":[0,2,3,84,0,7,0,68]},{"a":62982,"t":"byte","b":[0,130,2,70,0,10,138,128]},{"a":62990,"t":"byte","b":[2,0,0,0]},{"a":62994,"l":"gfx_dog_098","c":"Packed sprite graphics 98-105 ($F612-$F752): the dog (figure 1; frame table entries 118-145 use graphics 98-105). Format (unpacked by $0E41 into 63 bytes, 21 rows of 3): a byte with bit 7 set is followed by (n AND $7F) rows of 3 literal bytes; any other byte n is followed by one 3-byte row repeated n times.","s":"graphic 98","t":"byte","b":[8,0,0,0,139,0,162,128]},{"a":63002,"t":"byte","b":[8,32,128,32,10,0,32,40]},{"a":63010,"t":"byte","b":[128,32,42,160,10,170,8,42]},{"a":63018,"t":"byte","b":[170,136,42,170,160,42,170,0]},{"a":63026,"t":"byte","b":[32,32,128,128,128,0,2,0]},{"a":63034,"t":"byte","b":[0,0]},{"a":63036,"s":"graphic 99","t":"byte","b":[9,0,0,0,140,0,162,128]},{"a":63044,"t":"byte","b":[0,32,128,8,10,0,32,40]},{"a":63052,"t":"byte","b":[128,32,42,160,10,170,8,42]},{"a":63060,"t":"byte","b":[170,136,42,170,160,42,170,0]},{"a":63068,"t":"byte","b":[162,130,0,0,2,0,0,0]},{"a":63076,"t":"byte","b":[0]},{"a":63077,"s":"graphic 100","t":"byte","b":[8,0,0,0,139,0,162,128]},{"a":63085,"t":"byte","b":[8,32,128,32,10,0,32,40]},{"a":63093,"t":"byte","b":[128,32,42,160,10,170,8,42]},{"a":63101,"t":"byte","b":[170,136,42,170,160,42,170,0]},{"a":63109,"t":"byte","b":[8,40,0,0,8,0,2,0]},{"a":63117,"t":"byte","b":[0,0]},{"a":63119,"s":"graphic 101","t":"byte","b":[9,0,0,0,140,0,162,128]},{"a":63127,"t":"byte","b":[0,32,128,8,10,0,32,40]},{"a":63135,"t":"byte","b":[128,32,42,160,10,170,8,42]},{"a":63143,"t":"byte","b":[170,136,42,170,160,42,170,0]},{"a":63151,"t":"byte","b":[10,40,0,2,32,0,0,0]},{"a":63159,"t":"byte","b":[0]},{"a":63160,"s":"graphic 102","t":"byte","b":[9,0,0,0,137,0,40,160]},{"a":63168,"t":"byte","b":[8,8,128,32,10,128,32,34]},{"a":63176,"t":"byte","b":[32,32,170,168,10,160,40,42]},{"a":63184,"t":"byte","b":[168,168,42,170,160,42,170,0]},{"a":63192,"t":"byte","b":[2,34,34,0,129,0,0,0]},{"a":63200,"s":"graphic 103","t":"byte","b":[10,0,0,0,139,0,40,160]},{"a":63208,"t":"byte","b":[0,8,128,0,10,128,0,34]},{"a":63216,"t":"byte","b":[32,0,42,168,10,160,40,40]},{"a":63224,"t":"byte","b":[168,160,42,42,128,42,130,40]},{"a":63232,"t":"byte","b":[32,168,0,8,0,0]},{"a":63238,"s":"graphic 104","t":"byte","b":[9,0,0,0,137,0,40,160]},{"a":63246,"t":"byte","b":[8,8,128,32,10,128,32,34]},{"a":63254,"t":"byte","b":[32,32,170,168,10,160,40,42]},{"a":63262,"t":"byte","b":[160,40,42,168,160,42,170,128]},{"a":63270,"t":"byte","b":[2,34,34,0,129,0,0,0]},{"a":63278,"s":"graphic 105","t":"byte","b":[10,0,0,0,136,8,40,160]},{"a":63286,"t":"byte","b":[32,8,32,32,2,128,32,10]},{"a":63294,"t":"byte","b":[32,10,170,168,42,170,130,42]},{"a":63302,"t":"byte","b":[162,162,42,168,168,2,34,34]},{"a":63310,"t":"byte","b":[0,129,0,0,0]},{"a":63315,"l":"gfx_objects_106","c":"Packed sprite graphics 106-130 ($F753-$F986): the one-sprite objects of figures 2 and 3 (frame table entries 177 onwards use graphics 106-130). Format (unpacked by $0E41 into 63 bytes, 21 rows of 3): a byte with bit 7 set is followed by (n AND $7F) rows of 3 literal bytes; any other byte n is followed by one 3-byte row repeated n times.","s":"graphic 106","t":"byte","b":[2,0,40,0,19,0,0,0]},{"a":63323,"s":"graphic 107","t":"byte","b":[132,32,0,32,40,0,160,42]},{"a":63331,"t":"byte","b":[2,160,42,138,160,5,42,170]},{"a":63339,"t":"byte","b":[160,132,10,170,128,2,170,0]},{"a":63347,"t":"byte","b":[0,168,0,0,32,0,8,0]},{"a":63355,"t":"byte","b":[0,0]},{"a":63357,"s":"graphic 108","t":"byte","b":[11,0,32,0,10,0,0,0]},{"a":63365,"s":"graphic 109","t":"byte","b":[131,8,0,0,10,0,0,10]},{"a":63373,"t":"byte","b":[128,0,6,10,160,0,131,2]},{"a":63381,"t":"byte","b":[160,0,0,160,0,0,32,0]},{"a":63389,"t":"byte","b":[9,0,0,0]},{"a":63393,"s":"graphic 110","t":"byte","b":[130,170,128,0,128,128,0,19]},{"a":63401,"t":"byte","b":[0,0,0]},{"a":63404,"s":"graphic 111","t":"byte","b":[130,0,40,0,0,32,0,2]},{"a":63412,"t":"byte","b":[0,48,0,133,0,32,0,0]},{"a":63420,"t":"byte","b":[40,0,0,128,0,8,0,0]},{"a":63428,"t":"byte","b":[128,0,0,12,0,0,0]},{"a":63435,"s":"graphic 112","t":"byte","b":[14,0,0,0,129,40,0,0]},{"a":63443,"t":"byte","b":[4,168,0,0,130,40,0,0]},{"a":63451,"t":"byte","b":[0,0,0]},{"a":63454,"s":"graphic 113","t":"byte","b":[14,0,0,0,6,170,0,0]},{"a":63462,"t":"byte","b":[129,0,0,0]},{"a":63466,"s":"graphic 114","t":"byte","b":[15,0,0,0,130,168,0,0]},{"a":63474,"t":"byte","b":[0,0,0,3,168,0,0,129]},{"a":63482,"t":"byte","b":[0,0,0]},{"a":63485,"s":"graphic 115","t":"byte","b":[11,0,0,0,10,168,0,0]},{"a":63493,"s":"graphic 116","t":"byte","b":[14,0,0,0,2,170,128,0]},{"a":63501,"t":"byte","b":[131,166,128,0,149,128,0,166]},{"a":63509,"t":"byte","b":[128,0,2,170,128,0]},{"a":63515,"s":"graphic 117","t":"byte","b":[145,0,0,0,0,128,0,0]},{"a":63523,"t":"byte","b":[8,0,0,0,0,8,0,0]},{"a":63531,"t":"byte","b":[0,0,0,0,32,0,0,0]},{"a":63539,"t":"byte","b":[0,0,2,0,0,0,0,32]},{"a":63547,"t":"byte","b":[0,0,0,0,0,0,8,0]},{"a":63555,"t":"byte","b":[2,0,0,0,0,128,0,0]},{"a":63563,"t":"byte","b":[0,128,0,0,2,0,0,0]},{"a":63571,"t":"byte","b":[130,0,128,0,0,0,0]},{"a":63578,"s":"graphic 118","t":"byte","b":[129,2,0,0,2,0,0,0]},{"a":63586,"t":"byte","b":[138,0,128,0,0,8,0,0]},{"a":63594,"t":"byte","b":[0,0,8,0,0,0,0,0]},{"a":63602,"t":"byte","b":[0,32,0,0,0,0,0,2]},{"a":63610,"t":"byte","b":[0,0,0,0,32,0,0,2]},{"a":63618,"t":"byte","b":[0,0,0,132,2,0,0,0]},{"a":63626,"t":"byte","b":[0,128,0,0,0,128,0,0]},{"a":63634,"t":"byte","b":[2,0,0,0]},{"a":63638,"s":"graphic 119","t":"byte","b":[131,0,32,0,0,0,0,2]},{"a":63646,"t":"byte","b":[0,0,2,0,0,0,138,0]},{"a":63654,"t":"byte","b":[128,0,0,8,0,0,0,0]},{"a":63662,"t":"byte","b":[8,0,0,0,0,0,0,32]},{"a":63670,"t":"byte","b":[0,0,0,0,0,0,128,0]},{"a":63678,"t":"byte","b":[0,0,128,0,0,2,0,0]},{"a":63686,"t":"byte","b":[0,130,2,0,0,0,0,32]},{"a":63694,"t":"byte","b":[2,0,0,0]},{"a":63698,"s":"graphic 120","t":"byte","b":[131,0,21,112,0,40,240,0]},{"a":63706,"t":"byte","b":[40,0,18,0,0,0]},{"a":63712,"s":"graphic 121","t":"byte","b":[131,0,40,0,0,21,112,0]},{"a":63720,"t":"byte","b":[40,240,18,0,0,0]},{"a":63726,"s":"graphic 122","t":"byte","b":[2,0,40,0,130,0,21,112]},{"a":63734,"t":"byte","b":[0,0,240,17,0,0,0]},{"a":63741,"s":"graphic 123","t":"byte","b":[134,0,170,170,2,170,170,10]},{"a":63749,"t":"byte","b":[170,170,42,170,170,170,170,170]},{"a":63757,"t":"byte","b":[0,0,0,5,170,170,170,3]},{"a":63765,"t":"byte","b":[128,0,0,7,0,0,0]},{"a":63772,"s":"graphic 124","t":"byte","b":[14,0,0,0,130,2,128,0]},{"a":63780,"t":"byte","b":[170,160,0,3,10,160,0,2]},{"a":63788,"t":"byte","b":[0,0,0]},{"a":63791,"s":"graphic 125","t":"byte","b":[14,0,0,0,6,160,0,0]},{"a":63799,"t":"byte","b":[129,0,0,0]},{"a":63803,"s":"graphic 126","t":"byte","b":[4,0,168,0,17,0,0,0]},{"a":63811,"s":"graphic 127","t":"byte","b":[130,10,170,170,42,170,170,2]},{"a":63819,"t":"byte","b":[170,170,170,8,128,0,0,9]},{"a":63827,"t":"byte","b":[0,0,0]},{"a":63830,"s":"graphic 128","t":"byte","b":[4,0,2,0,17,0,0,0]},{"a":63838,"s":"graphic 129","t":"byte","b":[130,0,32,0,0,160,0,4]},{"a":63846,"t":"byte","b":[0,168,0,129,0,136,0,14]},{"a":63854,"t":"byte","b":[0,0,0]},{"a":63857,"s":"graphic 130","t":"byte","b":[131,0,32,0,0,160,0,2]},{"a":63865,"t":"byte","b":[168,0,3,2,170,0,129,2]},{"a":63873,"t":"byte","b":[34,0,14,0,0,0]},{"a":63879,"l":"gfx_head_131","c":"Packed sprite graphics 131-137 ($F987-$FA70): the person's head, frames $18-$1E (frame table entries 170-176), the same in every mood. Format (unpacked by $0E41 into 63 bytes, 21 rows of 3): a byte with bit 7 set is followed by (n AND $7F) rows of 3 literal bytes; any other byte n is followed by one 3-byte row repeated n times.","s":"graphic 131","t":"byte","b":[11,0,0,0,138,0,168,0]},{"a":63887,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":63895,"t":"byte","b":[0,3,255,0,3,171,0,15]},{"a":63903,"t":"byte","b":[3,192,12,0,192,12,48,192]},{"a":63911,"t":"byte","b":[3,255,0]},{"a":63914,"s":"graphic 132","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":63922,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":63930,"t":"byte","b":[0,3,3,255,0,131,3,171]},{"a":63938,"t":"byte","b":[0,3,207,0,0,252,0]},{"a":63945,"s":"graphic 133","t":"byte","b":[11,0,0,0,138,0,168,0]},{"a":63953,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":63961,"t":"byte","b":[0,3,255,0,15,255,192,12]},{"a":63969,"t":"byte","b":[168,192,15,3,192,3,255,0]},{"a":63977,"t":"byte","b":[0,252,0]},{"a":63980,"s":"graphic 134","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":63988,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":63996,"t":"byte","b":[0,3,3,255,0,131,3,171]},{"a":64004,"t":"byte","b":[0,3,207,0,0,252,0]},{"a":64011,"s":"graphic 135","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":64019,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":64027,"t":"byte","b":[0,2,3,255,0,129,3,171]},{"a":64035,"t":"byte","b":[0,2,3,3,0,129,0,252]},{"a":64043,"t":"byte","b":[0]},{"a":64044,"s":"graphic 136","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":64052,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":64060,"t":"byte","b":[0,2,3,255,0,132,3,171]},{"a":64068,"t":"byte","b":[0,3,207,0,3,255,0,0]},{"a":64076,"t":"byte","b":[252,0]},{"a":64078,"s":"graphic 137","t":"byte","b":[11,0,0,0,138,0,168,0]},{"a":64086,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":64094,"t":"byte","b":[0,3,255,0,15,255,192,12]},{"a":64102,"t":"byte","b":[168,192,15,3,192,3,255,0]},{"a":64110,"t":"byte","b":[0,252,0]},{"a":64113,"l":"gfx_head_mood0_138","c":"Packed sprite graphics 138-152 ($FA71-$FC37): the person's head, frames 0-$17 in mood 0 (head_mood_offsets adds 0 for $035F = 0). Format (unpacked by $0E41 into 63 bytes, 21 rows of 3): a byte with bit 7 set is followed by (n AND $7F) rows of 3 literal bytes; any other byte n is followed by one 3-byte row repeated n times.","s":"graphic 138","t":"byte","b":[11,0,0,0,135,0,184,0]},{"a":64121,"t":"byte","b":[2,254,0,3,51,0,3,255]},{"a":64129,"t":"byte","b":[0,15,255,192,12,168,192,15]},{"a":64137,"t":"byte","b":[3,192,2,3,255,0,129,0]},{"a":64145,"t":"byte","b":[252,0]},{"a":64147,"s":"graphic 139","t":"byte","b":[11,0,0,0,136,0,172,0]},{"a":64155,"t":"byte","b":[2,191,0,2,204,192,2,255]},{"a":64163,"t":"byte","b":[192,2,255,0,3,42,0,3]},{"a":64171,"t":"byte","b":[192,0,3,255,0,2,0,252]},{"a":64179,"t":"byte","b":[0]},{"a":64180,"s":"graphic 140","t":"byte","b":[11,0,0,0,136,0,172,0]},{"a":64188,"t":"byte","b":[2,191,0,2,179,192,2,255]},{"a":64196,"t":"byte","b":[192,2,255,0,3,202,0,3]},{"a":64204,"t":"byte","b":[240,0,3,255,0,2,0,252]},{"a":64212,"t":"byte","b":[0]},{"a":64213,"s":"graphic 141","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64221,"t":"byte","b":[4,2,170,0,131,2,171,0]},{"a":64229,"t":"byte","b":[2,175,0,3,255,0,2,0]},{"a":64237,"t":"byte","b":[252,0]},{"a":64239,"s":"graphic 142","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64247,"t":"byte","b":[5,2,170,0,130,3,171,0]},{"a":64255,"t":"byte","b":[3,255,0,2,0,252,0]},{"a":64262,"s":"graphic 143","t":"byte","b":[11,0,0,0,138,0,168,0]},{"a":64270,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":64278,"t":"byte","b":[0,3,255,0,15,255,192,12]},{"a":64286,"t":"byte","b":[168,192,15,3,192,3,255,0]},{"a":64294,"t":"byte","b":[0,252,0]},{"a":64297,"s":"graphic 144","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":64305,"t":"byte","b":[2,175,0,2,255,0,2,204]},{"a":64313,"t":"byte","b":[0,2,2,255,192,132,3,42]},{"a":64321,"t":"byte","b":[0,3,192,0,0,255,0,0]},{"a":64329,"t":"byte","b":[252,0]},{"a":64331,"s":"graphic 145","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":64339,"t":"byte","b":[2,174,0,2,191,0,2,243]},{"a":64347,"t":"byte","b":[0,2,3,255,192,132,3,202]},{"a":64355,"t":"byte","b":[0,3,240,0,0,255,0,0]},{"a":64363,"t":"byte","b":[252,0]},{"a":64365,"s":"graphic 146","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64373,"t":"byte","b":[3,2,170,0,130,2,171,0]},{"a":64381,"t":"byte","b":[2,175,0,2,3,255,0,2]},{"a":64389,"t":"byte","b":[0,252,0]},{"a":64392,"s":"graphic 147","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64400,"t":"byte","b":[4,2,170,0,129,3,171,0]},{"a":64408,"t":"byte","b":[2,3,255,0,2,0,252,0]},{"a":64416,"s":"graphic 148","t":"byte","b":[11,0,0,0,138,0,168,0]},{"a":64424,"t":"byte","b":[2,186,0,2,254,0,3,255]},{"a":64432,"t":"byte","b":[0,3,51,0,3,255,0,15]},{"a":64440,"t":"byte","b":[255,192,12,168,192,15,3,192]},{"a":64448,"t":"byte","b":[3,255,0]},{"a":64451,"s":"graphic 149","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64459,"t":"byte","b":[2,2,191,0,130,2,255,0]},{"a":64467,"t":"byte","b":[2,204,0,2,3,255,0,131]},{"a":64475,"t":"byte","b":[3,42,0,3,195,0,0,252]},{"a":64483,"t":"byte","b":[0]},{"a":64484,"s":"graphic 150","t":"byte","b":[11,0,0,0,129,0,172,0]},{"a":64492,"t":"byte","b":[2,2,175,0,130,2,191,0]},{"a":64500,"t":"byte","b":[2,179,0,2,3,255,192,131]},{"a":64508,"t":"byte","b":[3,202,0,0,240,0,0,255]},{"a":64516,"t":"byte","b":[0]},{"a":64517,"s":"graphic 151","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64525,"t":"byte","b":[2,2,170,0,130,2,171,0]},{"a":64533,"t":"byte","b":[2,175,0,3,3,255,0,2]},{"a":64541,"t":"byte","b":[0,252,0]},{"a":64544,"s":"graphic 152","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64552,"t":"byte","b":[3,2,170,0,129,3,171,0]},{"a":64560,"t":"byte","b":[3,3,255,0,2,0,252,0]},{"a":64568,"l":"gfx_head_mood1_153","c":"Packed sprite graphics 153-167 ($FC38-$FDF5): the person's head, frames 0-$17 in mood 1 (graphic number + $0F). Format (unpacked by $0E41 into 63 bytes, 21 rows of 3): a byte with bit 7 set is followed by (n AND $7F) rows of 3 literal bytes; any other byte n is followed by one 3-byte row repeated n times.","s":"graphic 153","t":"byte","b":[11,0,0,0,134,0,252,0]},{"a":64576,"t":"byte","b":[2,254,0,3,51,0,3,255]},{"a":64584,"t":"byte","b":[0,3,171,0,3,3,0,2]},{"a":64592,"t":"byte","b":[3,255,0,2,0,252,0]},{"a":64599,"s":"graphic 154","t":"byte","b":[11,0,0,0,134,0,172,0]},{"a":64607,"t":"byte","b":[2,191,0,2,204,192,2,255]},{"a":64615,"t":"byte","b":[192,2,234,0,3,192,0,2]},{"a":64623,"t":"byte","b":[3,255,0,2,0,252,0]},{"a":64630,"s":"graphic 155","t":"byte","b":[11,0,0,0,134,0,172,0]},{"a":64638,"t":"byte","b":[2,191,0,2,179,192,2,255]},{"a":64646,"t":"byte","b":[192,2,250,0,3,240,0,2]},{"a":64654,"t":"byte","b":[3,255,0,2,0,252,0]},{"a":64661,"s":"graphic 156","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64669,"t":"byte","b":[4,2,170,0,131,2,171,0]},{"a":64677,"t":"byte","b":[2,175,0,3,255,0,2,0]},{"a":64685,"t":"byte","b":[252,0]},{"a":64687,"s":"graphic 157","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64695,"t":"byte","b":[5,2,170,0,130,3,171,0]},{"a":64703,"t":"byte","b":[3,255,0,2,0,252,0]},{"a":64710,"s":"graphic 158","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":64718,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":64726,"t":"byte","b":[0,2,3,255,0,132,3,171]},{"a":64734,"t":"byte","b":[0,3,3,0,3,255,0,0]},{"a":64742,"t":"byte","b":[252,0]},{"a":64744,"s":"graphic 159","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":64752,"t":"byte","b":[2,175,0,2,255,0,2,204]},{"a":64760,"t":"byte","b":[0,2,2,255,192,132,3,234]},{"a":64768,"t":"byte","b":[0,3,192,0,0,255,0,0]},{"a":64776,"t":"byte","b":[252,0]},{"a":64778,"s":"graphic 160","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":64786,"t":"byte","b":[2,174,0,2,191,0,2,243]},{"a":64794,"t":"byte","b":[0,2,3,255,192,132,3,250]},{"a":64802,"t":"byte","b":[0,3,240,0,0,255,0,0]},{"a":64810,"t":"byte","b":[252,0]},{"a":64812,"s":"graphic 161","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64820,"t":"byte","b":[3,2,170,0,130,2,171,0]},{"a":64828,"t":"byte","b":[2,175,0,2,3,255,0,2]},{"a":64836,"t":"byte","b":[0,252,0]},{"a":64839,"s":"graphic 162","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64847,"t":"byte","b":[4,2,170,0,129,3,171,0]},{"a":64855,"t":"byte","b":[2,3,255,0,2,0,252,0]},{"a":64863,"s":"graphic 163","t":"byte","b":[11,0,0,0,133,0,168,0]},{"a":64871,"t":"byte","b":[2,186,0,2,254,0,3,255]},{"a":64879,"t":"byte","b":[0,3,51,0,2,3,255,0]},{"a":64887,"t":"byte","b":[131,3,171,0,3,3,0,0]},{"a":64895,"t":"byte","b":[252,0]},{"a":64897,"s":"graphic 164","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64905,"t":"byte","b":[2,2,191,0,130,2,255,0]},{"a":64913,"t":"byte","b":[2,204,0,2,3,255,0,131]},{"a":64921,"t":"byte","b":[3,234,0,3,195,0,0,252]},{"a":64929,"t":"byte","b":[0]},{"a":64930,"s":"graphic 165","t":"byte","b":[11,0,0,0,129,0,172,0]},{"a":64938,"t":"byte","b":[2,2,175,0,130,2,191,0]},{"a":64946,"t":"byte","b":[2,179,0,2,3,255,192,131]},{"a":64954,"t":"byte","b":[3,250,0,0,240,0,0,255]},{"a":64962,"t":"byte","b":[0]},{"a":64963,"s":"graphic 166","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64971,"t":"byte","b":[2,2,170,0,130,2,171,0]},{"a":64979,"t":"byte","b":[2,175,0,3,3,255,0,2]},{"a":64987,"t":"byte","b":[0,252,0]},{"a":64990,"s":"graphic 167","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":64998,"t":"byte","b":[3,2,170,0,129,3,171,0]},{"a":65006,"t":"byte","b":[3,3,255,0,2,0,252,0]},{"a":65014,"l":"gfx_head_mood2_168","c":"Packed sprite graphics 168-182 ($FDF6-$FFB9): the person's head, frames 0-$17 in mood 2 (graphic number + $1E). Format (unpacked by $0E41 into 63 bytes, 21 rows of 3): a byte with bit 7 set is followed by (n AND $7F) rows of 3 literal bytes; any other byte n is followed by one 3-byte row repeated n times. (The KERNAL names the listing shows on $FF81-$FFF3 do not apply: the KERNAL is banked out; this is data.)","s":"graphic 168","t":"byte","b":[11,0,0,0,136,0,252,0]},{"a":65022,"t":"byte","b":[2,254,0,3,51,0,3,255]},{"a":65030,"t":"byte","b":[0,3,171,0,3,139,0,3]},{"a":65038,"t":"byte","b":[51,0,3,255,0,2,0,252]},{"a":65046,"t":"byte","b":[0]},{"a":65047,"s":"graphic 169","t":"byte","b":[11,0,0,0,136,0,172,0]},{"a":65055,"t":"byte","b":[2,191,0,2,204,192,2,255]},{"a":65063,"t":"byte","b":[192,2,250,0,3,224,0,3]},{"a":65071,"t":"byte","b":[207,0,3,255,0,2,0,252]},{"a":65079,"t":"byte","b":[0]},{"a":65080,"s":"graphic 170","t":"byte","b":[11,0,0,0,136,0,172,0]},{"a":65088,"t":"byte","b":[2,191,0,2,179,192,2,255]},{"a":65096,"t":"byte","b":[192,2,250,0,3,248,0,3]},{"a":65104,"t":"byte","b":[243,0,3,255,0,2,0,252]},{"a":65112,"t":"byte","b":[0]},{"a":65113,"s":"graphic 171","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":65121,"t":"byte","b":[4,2,170,0,131,2,171,0]},{"a":65129,"t":"byte","b":[2,175,0,3,255,0,2,0]},{"a":65137,"t":"byte","b":[252,0]},{"a":65139,"s":"graphic 172","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":65147,"t":"byte","b":[5,2,170,0,130,3,171,0]},{"a":65155,"t":"byte","b":[3,255,0,2,0,252,0]},{"a":65162,"s":"graphic 173","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":65170,"t":"byte","b":[2,186,0,3,255,0,3,51]},{"a":65178,"t":"byte","b":[0,2,3,255,0,132,3,171]},{"a":65186,"t":"byte","b":[0,3,139,0,3,51,0,0]},{"a":65194,"t":"byte","b":[252,0]},{"a":65196,"s":"graphic 174","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":65204,"t":"byte","b":[2,175,0,2,255,0,2,204]},{"a":65212,"t":"byte","b":[0,2,2,255,192,132,3,234]},{"a":65220,"t":"byte","b":[0,3,224,0,0,207,0,0]},{"a":65228,"t":"byte","b":[252,0]},{"a":65230,"s":"graphic 175","t":"byte","b":[11,0,0,0,132,0,168,0]},{"a":65238,"t":"byte","b":[2,174,0,2,191,0,2,243]},{"a":65246,"t":"byte","b":[0,2,3,255,192,132,3,250]},{"a":65254,"t":"byte","b":[0,3,248,0,0,243,0,0]},{"a":65262,"t":"byte","b":[252,0]},{"a":65264,"s":"graphic 176","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":65272,"t":"byte","b":[3,2,170,0,130,2,171,0]},{"a":65280,"t":"byte","b":[2,175,0,2,3,255,0,2]},{"a":65288,"t":"byte","b":[0,252,0]},{"a":65291,"s":"graphic 177","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":65299,"t":"byte","b":[4,2,170,0,129,3,171,0]},{"a":65307,"t":"byte","b":[2,3,255,0,2,0,252,0]},{"a":65315,"s":"graphic 178","t":"byte","b":[11,0,0,0,133,0,168,0]},{"a":65323,"t":"byte","b":[2,186,0,2,254,0,3,255]},{"a":65331,"t":"byte","b":[0,3,51,0,2,3,255,0]},{"a":65339,"t":"byte","b":[131,3,171,0,3,139,0,0]},{"a":65347,"t":"byte","b":[252,0]},{"a":65349,"s":"graphic 179","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":65357,"t":"byte","b":[2,2,191,0,130,2,255,0]},{"a":65365,"t":"byte","b":[2,204,0,2,3,255,0,131]},{"a":65373,"t":"byte","b":[3,232,0,3,224,0,0,252]},{"a":65381,"t":"byte","b":[0]},{"a":65382,"s":"graphic 180","t":"byte","b":[11,0,0,0,129,0,172,0]},{"a":65390,"t":"byte","b":[2,2,175,0,130,2,191,0]},{"a":65398,"t":"byte","b":[2,179,0,2,3,255,192,131]},{"a":65406,"t":"byte","b":[3,250,0,0,248,0,0,255]},{"a":65414,"t":"byte","b":[0]},{"a":65415,"s":"graphic 181","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":65423,"t":"byte","b":[2,2,170,0,130,2,171,0]},{"a":65431,"t":"byte","b":[2,175,0,3,3,255,0,2]},{"a":65439,"t":"byte","b":[0,252,0]},{"a":65442,"s":"graphic 182","t":"byte","b":[11,0,0,0,129,0,168,0]},{"a":65450,"t":"byte","b":[3,2,170,0,129,3,171,0]},{"a":65458,"t":"byte","b":[3,3,255,0,2,0,252,0]},{"a":65466,"l":"unused_ffba","c":"After the last packed graphic ($FFB9): $08, then $FF/$00 in the pattern of untouched RAM up to $FFF9. Not part of any graphic; nothing reads it. $FFEC and $FFF9 differ between crack-screen.vsf and the later snapshots; what writes them is not known. (The KERNAL routine names the listing shows here do not apply: the KERNAL is banked out.)","t":"byte","b":[8,255,0,255,0,255,255,255]},{"a":65474,"t":"byte","b":[255,0,0,0,0,255,255,255]},{"a":65482,"t":"byte","b":[255,0,0,0,0,255,255,255]},{"a":65490,"t":"byte","b":[255,0,0,0,0,255,255,255]},{"a":65498,"t":"byte","b":[255,0,0,0,0,255,255,255]},{"a":65506,"t":"byte","b":[255,0,0,0,0,255,255,255]},{"a":65514,"t":"byte","b":[255,0,0,0,0,255,255,255]},{"a":65522,"t":"byte","b":[255,0,0,0,0,255,255,255]},{"a":65530,"l":"vec_nmi","c":"The 6502 hardware vectors in RAM (the KERNAL is banked out): NMI $0833 (nmi_shim), RESET $0340 (reset_jumps, which jumps to the cold start), IRQ/BRK $082B (irq_shim). The cold start copies these six bytes from $46BD ($043A-$0449); in crack-screen.vsf they are still RAM filler.","t":"addr","b":[51,8],"oa":2099,"o":"nmi_shim","x":[1085]},{"a":65532,"l":"vec_reset","c":"RESET vector: $0340 (reset_jumps: JMP cold_start).","t":"addr","b":[64,3],"oa":832,"o":"reset_jumps"},{"a":65534,"l":"vec_irq","c":"IRQ/BRK vector: $082B (irq_shim, which pushes the registers and jumps through $0314 to irq_handler $0713).","t":"addr","b":[43,8],"oa":2091,"o":"irq_shim"}]}