diff options
author | B. Watson <yalhcru@gmail.com> | 2016-09-04 17:25:36 -0400 |
---|---|---|
committer | B. Watson <yalhcru@gmail.com> | 2016-09-04 17:25:36 -0400 |
commit | 50b84516b09d9502a6eb258b17fd84eacbc2504e (patch) | |
tree | e44b2a40e3ec763f3eade9864a15a4e63ea4b990 | |
parent | 3cb404e99456fcde409d79103f9f4626350fbb8a (diff) | |
download | jumpmanjr-50b84516b09d9502a6eb258b17fd84eacbc2504e.tar.gz |
name some more Lxxxx labels
-rw-r--r-- | jumpmanjr.dasm | 174 | ||||
-rw-r--r-- | jumpmanjr.info | 35 | ||||
-rw-r--r-- | main.info | 35 |
3 files changed, 162 insertions, 82 deletions
diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm index b7b5d22..9ab269d 100644 --- a/jumpmanjr.dasm +++ b/jumpmanjr.dasm @@ -1,5 +1,5 @@ ; da65 V2.15 - Git 104f898 -; Created: 2016-09-04 04:07:57 +; Created: 2016-09-04 17:23:00 ; Input file: jumpmanjr.rom ; Page: 1 @@ -77,6 +77,7 @@ num_tmp := $0665 ; temp used by print_number player_x_pos := $067E ; stored in HPOSP0 player_y_pos := $0683 ; $C6 is the bottom of the level (where you end up when you die) bullet_x_pos := $069B ; 4 bytes, meaning we can never have >4 bullets on screen at once (makes sense, GTIA only has 4 missiles) +bullet_y_pos_minus_one:= $069E bullet_y_pos := $069F ; another 4 bytes dlist_shadow_lo := $06AC ; stored in DLISTL if dlist_shadow_hi nonzero dlist_shadow_hi := $06AD ; stored in DLISTH if nonzero @@ -481,10 +482,11 @@ calc_screen_addr: ldx #$08 ; 80D8 A2 08 .. mul40_loop: lsr sa_tmp_1 ; 80DA 46 BD F. - bcc L80E1 ; 80DC 90 03 .. + bcc mul40_no_add ; 80DC 90 03 .. clc ; 80DE 18 . adc dm_y_with_offset ; 80DF 65 C7 e. -L80E1: ror a ; 80E1 6A j +mul40_no_add: + ror a ; 80E1 6A j ror dm_screen_addr ; 80E2 66 C4 f. dex ; 80E4 CA . bne mul40_loop ; 80E5 D0 F3 .. @@ -508,7 +510,8 @@ sa_hi_ok_1: rol a ; 8102 2A * and #$03 ; 8103 29 03 ). sta sa_tmp_2 ; 8105 85 C8 .. -L8107: lda (dm_objptr),y ; 8107 B1 C2 .. +calc_pixels: + lda (dm_objptr),y ; 8107 B1 C2 .. sta sa_tmp_1 ; 8109 85 BD .. lda sa_tmp_2 ; 810B A5 C8 .. lsr sa_tmp_1 ; 810D 46 BD F. @@ -531,15 +534,15 @@ L8107: lda (dm_objptr),y ; 8107 B1 C2 inc sa_tmp_2 ; 812A E6 C8 .. lda sa_tmp_2 ; 812C A5 C8 .. cmp #$04 ; 812E C9 04 .. - bcc L813C ; 8130 90 0A .. + bcc sa_hi_ok_2 ; 8130 90 0A .. lda #$00 ; 8132 A9 00 .. sta sa_tmp_2 ; 8134 85 C8 .. inc dm_screen_addr ; 8136 E6 C4 .. -sa_hi_ok_2: - bne L813C ; 8138 D0 02 .. + bne sa_hi_ok_2 ; 8138 D0 02 .. inc dm_screen_addr+1 ; 813A E6 C5 .. -L813C: dec dm_count ; 813C C6 BE .. - bne L8107 ; 813E D0 C7 .. +sa_hi_ok_2: + dec dm_count ; 813C C6 BE .. + bne calc_pixels ; 813E D0 C7 .. jmp dm_draw_obj_loop ; 8140 4C B6 80 L.. ; ---------------------------------------------------------------------------- @@ -562,11 +565,11 @@ next_sfx_slot: dex ; 815F CA . dex ; 8160 CA . beq sfx_exit ; 8161 F0 FB .. -; skip it, if slot is inactive -is_slot_active: lda sfx_slot_tempo,x ; 8163 BD 3E 06 .>. beq next_sfx_slot ; 8166 F0 F7 .. -L8168: lda sfx_slot_timer,x ; 8168 BD 3F 06 .?. +; skip it, if slot is inactive +is_slot_active: + lda sfx_slot_timer,x ; 8168 BD 3F 06 .?. beq sfx_next_note ; 816B F0 10 .. dec sfx_slot_timer,x ; 816D DE 3F 06 .?. cmp sfx_slot_duration,x ; 8170 DD 46 06 .F. @@ -602,7 +605,7 @@ sfx_play_rest: lda (zp_temp1),y ; 81A3 B1 CB .. sta sfx_slot_timer,x ; 81A5 9D 3F 06 .?. jsr inc_sfx_pos ; 81A8 20 31 82 1. - jmp L8168 ; 81AB 4C 68 81 Lh. + jmp is_slot_active ; 81AB 4C 68 81 Lh. ; ---------------------------------------------------------------------------- ; y==0 on entry @@ -615,9 +618,9 @@ sfx_change_tempo: sta sfx_slot_duration,x ; 81B7 9D 46 06 .F. jsr inc_sfx_pos ; 81BA 20 31 82 1. inc sfx_slot_curpos,x ; 81BD FE 4E 06 .N. - bne L8168 ; 81C0 D0 A6 .. + bne is_slot_active ; 81C0 D0 A6 .. inc sfx_slot_curpos+1,x ; 81C2 FE 4F 06 .O. - jmp L8168 ; 81C5 4C 68 81 Lh. + jmp is_slot_active ; 81C5 4C 68 81 Lh. ; ---------------------------------------------------------------------------- ; I *think* this jumps to a different sfx address... @@ -665,9 +668,10 @@ sfx_play_note: lda sfx_slot_curpos,x ; 8216 BD 4E 06 .N. adc #$02 ; 8219 69 02 i. sta sfx_slot_curpos,x ; 821B 9D 4E 06 .N. - bcc L8223 ; 821E 90 03 .. + bcc cpos_hi_ok ; 821E 90 03 .. inc sfx_slot_curpos+1,x ; 8220 FE 4F 06 .O. -L8223: jmp L8168 ; 8223 4C 68 81 Lh. +cpos_hi_ok: + jmp is_slot_active ; 8223 4C 68 81 Lh. ; ---------------------------------------------------------------------------- ; done playing this sfx, free up the slot, X-indexed @@ -694,12 +698,13 @@ inc_done: cue_sfx_lowprior: pha ; 8240 48 H lda sfx_ptr+1 ; 8241 AD 3D 06 .=. -cue_ok: beq L8248 ; 8244 F0 02 .. +cue_ok: beq lp_ok ; 8244 F0 02 .. pla ; 8246 68 h rts ; 8247 60 ` ; ---------------------------------------------------------------------------- -L8248: lda sfx_slot_tempo ; 8248 AD 3E 06 .>. +; copy to sfx_ptr, fall thru to cue_sfx +lp_ok: lda sfx_slot_tempo ; 8248 AD 3E 06 .>. sta sfx_ptr ; 824B 8D 3C 06 .<. lda sfx_slot_timer ; 824E AD 3F 06 .?. sta sfx_ptr+1 ; 8251 8D 3D 06 .=. @@ -708,12 +713,15 @@ L8248: lda sfx_slot_tempo ; 8248 AD 3E 06 cue_sfx:sta sfx_tempo_tmp ; 8255 8D 61 06 .a. inc sfx_lock ; 8258 EE 2F 06 ./. ldx #$0A ; 825B A2 0A .. -L825D: dex ; 825D CA . +next_slot: + dex ; 825D CA . dex ; 825E CA . - beq L8281 ; 825F F0 20 . + beq bump_slot ; 825F F0 20 . lda sfx_slot_tempo,x ; 8261 BD 3E 06 .>. - bne L825D ; 8264 D0 F7 .. -L8266: lda sfx_ptr ; 8266 AD 3C 06 .<. + bne next_slot ; 8264 D0 F7 .. +; found a free slot, use it +load_slot: + lda sfx_ptr ; 8266 AD 3C 06 .<. sta sfx_slot_curpos,x ; 8269 9D 4E 06 .N. lda sfx_ptr+1 ; 826C AD 3D 06 .=. sta sfx_slot_curpos+1,x ; 826F 9D 4F 06 .O. @@ -726,56 +734,66 @@ cue_done: rts ; 8280 60 ` ; ---------------------------------------------------------------------------- -L8281: ldx #$0A ; 8281 A2 0A .. -L8283: dex ; 8283 CA . +; couldn't find a free slot, look for a used slot with lower priority than this sfx has +bump_slot: + ldx #$0A ; 8281 A2 0A .. +; until we find one, or ran out of slots to look at +bump_try_next: + dex ; 8283 CA . dex ; 8284 CA . +; branch to cue_done (give up) if all slots are in use with higher priority than this sfx (which means it won't be heard) +bump_fail: beq cue_done ; 8285 F0 F1 .. lda sfx_slot_tempo,x ; 8287 BD 3E 06 .>. cmp sfx_tempo_tmp ; 828A CD 61 06 .a. - bcc L8266 ; 828D 90 D7 .. - jmp L8283 ; 828F 4C 83 82 L.. + bcc load_slot ; 828D 90 D7 .. + jmp bump_try_next ; 828F 4C 83 82 L.. ; ---------------------------------------------------------------------------- .byte $82 ; 8292 82 . position_missiles: ldx #$05 ; 8293 A2 05 .. -L8295: dex ; 8295 CA . +pm_next:dex ; 8295 CA . beq missiles_done ; 8296 F0 45 .E lda $069A,x ; 8298 BD 9A 06 ... cmp bullet_y_pos+3,x ; 829B DD A2 06 ... - beq L82A6 ; 829E F0 06 .. + beq skip_pos ; 829E F0 06 .. sta bullet_y_pos+3,x ; 82A0 9D A2 06 ... sta HPOSP3,x ; 82A3 9D 03 D0 ... -L82A6: lda $06A6,x ; 82A6 BD A6 06 ... - cmp bullet_x_pos+3,x ; 82A9 DD 9E 06 ... - beq L8295 ; 82AC F0 E7 .. +skip_pos: + lda $06A6,x ; 82A6 BD A6 06 ... + cmp bullet_y_pos_minus_one,x ; 82A9 DD 9E 06 ... + beq pm_next ; 82AC F0 E7 .. tay ; 82AE A8 . lda $2B00,y ; 82AF B9 00 2B ..+ - and missiles_mask_table_minus_one,x ; 82B2 3D DF 82 =.. + and missiles_and_masks_minus_one,x ; 82B2 3D DF 82 =.. sta $2B00,y ; 82B5 99 00 2B ..+ lda $2B01,y ; 82B8 B9 01 2B ..+ - and missiles_mask_table_minus_one,x ; 82BB 3D DF 82 =.. + and missiles_and_masks_minus_one,x ; 82BB 3D DF 82 =.. sta $2B01,y ; 82BE 99 01 2B ..+ - lda bullet_x_pos+3,x ; 82C1 BD 9E 06 ... + lda bullet_y_pos_minus_one,x ; 82C1 BD 9E 06 ... sta $06A6,x ; 82C4 9D A6 06 ... tay ; 82C7 A8 . lda $2B00,y ; 82C8 B9 00 2B ..+ - ora L82E3,x ; 82CB 1D E3 82 ... + ora missiles_or_masks_minus_one,x ; 82CB 1D E3 82 ... sta $2B00,y ; 82CE 99 00 2B ..+ lda $2B01,y ; 82D1 B9 01 2B ..+ - ora L82E3,x ; 82D4 1D E3 82 ... + ora missiles_or_masks_minus_one,x ; 82D4 1D E3 82 ... sta $2B01,y ; 82D7 99 01 2B ..+ - jmp L8295 ; 82DA 4C 95 82 L.. + jmp pm_next ; 82DA 4C 95 82 L.. ; ---------------------------------------------------------------------------- missiles_done: -missiles_mask_table_minus_one:= * + 2 +missiles_and_masks_minus_one:= * + 2 jmp position_players ; 82DD 4C E9 82 L.. ; ---------------------------------------------------------------------------- -missiles_mask_table: +missiles_and_masks: .byte $FC,$F3,$CF ; 82E0 FC F3 CF ... -L82E3: .byte $3F,$03,$0C,$30,$C0 ; 82E3 3F 03 0C 30 C0 ?..0. +missiles_or_masks_minus_one: + .byte $3F ; 82E3 3F ? +missiles_or_masks: + .byte $03,$0C,$30,$C0 ; 82E4 03 0C 30 C0 ..0. ; ---------------------------------------------------------------------------- position_done: rts ; 82E8 60 ` @@ -788,11 +806,12 @@ position_players: lda #$30 ; 82ED A9 30 .0 sta zp_temp1+1 ; 82EF 85 CC .. ldx #$06 ; 82F1 A2 06 .. -L82F3: dec zp_temp1+1 ; 82F3 C6 CC .. +next_plr: + dec zp_temp1+1 ; 82F3 C6 CC .. dex ; 82F5 CA . beq position_done ; 82F6 F0 F0 .. lda $0668,x ; 82F8 BD 68 06 .h. - beq L82F3 ; 82FB F0 F6 .. + beq next_plr ; 82FB F0 F6 .. lda $067C,x ; 82FD BD 7C 06 .|. cmp $068B,x ; 8300 DD 8B 06 ... beq position_pm_vert ; 8303 F0 1D .. @@ -816,13 +835,14 @@ position_player_5: position_pm_vert: lda $0690,x ; 8322 BD 90 06 ... cmp $0681,x ; 8325 DD 81 06 ... - bne L8338 ; 8328 D0 0E .. + bne skip_vert ; 8328 D0 0E .. lda $0686,x ; 832A BD 86 06 ... cmp $0695,x ; 832D DD 95 06 ... - beq L82F3 ; 8330 F0 C1 .. + beq next_plr ; 8330 F0 C1 .. sta $0695,x ; 8332 9D 95 06 ... lda $0690,x ; 8335 BD 90 06 ... -L8338: sta zp_temp1 ; 8338 85 CB .. +skip_vert: + sta zp_temp1 ; 8338 85 CB .. lda $0677,x ; 833A BD 77 06 .w. sta $CF ; 833D 85 CF .. lda #$00 ; 833F A9 00 .. @@ -858,7 +878,7 @@ L8370: lda ($CD),y ; 8370 B1 CD iny ; 8374 C8 . dec $CF ; 8375 C6 CF .. bne L8370 ; 8377 D0 F7 .. - jmp L82F3 ; 8379 4C F3 82 L.. + jmp next_plr ; 8379 4C F3 82 L.. ; ---------------------------------------------------------------------------- init_hardware: @@ -924,10 +944,11 @@ set_vkeybd: ; stub => map_draw_1_blank-1 copy_blank_1_map: ldx #$07 ; 83F0 A2 07 .. -L83F2: lda stub,x ; 83F2 BD 05 84 ... +cb1_loop: + lda stub,x ; 83F2 BD 05 84 ... sta $06D8,x ; 83F5 9D D8 06 ... dex ; 83F8 CA . - bne L83F2 ; 83F9 D0 F7 .. + bne cb1_loop ; 83F9 D0 F7 .. ldy #$0D ; 83FB A0 0D .. ldx #$84 ; 83FD A2 84 .. lda #$06 ; 83FF A9 06 .. @@ -969,10 +990,10 @@ no_wrap:inc jiffy_timer_1 ; 841F EE 1A 06 inc speed_jiffy_timer ; 843E EE 1E 06 ... lda current_speed ; 8441 AD 24 06 .$. cmp #$09 ; 8444 C9 09 .. - bcs L847E ; 8446 B0 36 .6 + bcs check_time_bonus ; 8446 B0 36 .6 lda $061D ; 8448 AD 1D 06 ... cmp current_speed ; 844B CD 24 06 .$. - bcc L846E ; 844E 90 1E .. + bcc check_speed_timer ; 844E 90 1E .. lda #$00 ; 8450 A9 00 .. sta $061D ; 8452 8D 1D 06 ... inc falling_flag ; 8455 EE 21 06 .!. @@ -984,13 +1005,15 @@ no_wrap:inc jiffy_timer_1 ; 841F EE 1A 06 lda $0620 ; 8466 AD 20 06 . . and #$03 ; 8469 29 03 ). sta $0620 ; 846B 8D 20 06 . . -L846E: lda speed_jiffy_timer ; 846E AD 1E 06 ... +check_speed_timer: + lda speed_jiffy_timer ; 846E AD 1E 06 ... cmp initial_speed ; 8471 CD 25 06 .%. - bcc L847E ; 8474 90 08 .. + bcc check_time_bonus ; 8474 90 08 .. lda #$00 ; 8476 A9 00 .. sta speed_jiffy_timer ; 8478 8D 1E 06 ... inc $0622 ; 847B EE 22 06 .". -L847E: lda playing_level ; 847E AD 27 06 .'. +check_time_bonus: + lda playing_level ; 847E AD 27 06 .'. beq no_dec_bonus ; 8481 F0 08 .. inc bonus_jiffy_timer ; 8483 EE 26 06 .&. bne no_dec_bonus ; 8486 D0 03 .. @@ -1034,24 +1057,28 @@ store_joystick_state: ; ?? fake_read_trigger: sta trigger_state ; 84CD 8D 35 06 .5. - jmp L84D9 ; 84D0 4C D9 84 L.. + jmp copy_level_vecs ; 84D0 4C D9 84 L.. ; ---------------------------------------------------------------------------- ; always joystick #1 read_trigger: lda TRIG0 ; 84D3 AD 10 D0 ... sta trigger_state ; 84D6 8D 35 06 .5. -L84D9: ldx #$08 ; 84D9 A2 08 .. -L84DB: lda work_level_desc+1,x ; 84DB BD 81 07 ... - beq L84EE ; 84DE F0 0E .. +; copy work_level vectors to page 6 +copy_level_vecs: + ldx #$08 ; 84D9 A2 08 .. +next_vec: + lda work_level_desc+1,x ; 84DB BD 81 07 ... + beq skip_vec ; 84DE F0 0E .. sta page6_vectors+3,x ; 84E0 9D 03 06 ... lda work_level_desc,x ; 84E3 BD 80 07 ... sta page6_vectors+2,x ; 84E6 9D 02 06 ... lda #$00 ; 84E9 A9 00 .. sta work_level_desc+1,x ; 84EB 9D 81 07 ... -L84EE: dex ; 84EE CA . +skip_vec: + dex ; 84EE CA . dex ; 84EF CA . - bne L84DB ; 84F0 D0 E9 .. + bne next_vec ; 84F0 D0 E9 .. lda $0640 ; 84F2 AD 40 06 .@. ora $0642 ; 84F5 0D 42 06 .B. ora $0644 ; 84F8 0D 44 06 .D. @@ -1081,7 +1108,7 @@ clear_dlist_shadow: ; update DLI vector, if there's a new one in the shadow reg update_dli_vector: lda dli_vec_shadow_hi ; 8523 AD AF 06 ... - beq L853B ; 8526 F0 13 .. + beq skip_dli ; 8526 F0 13 .. sta VDSLST+1 ; 8528 8D 01 02 ... lda dli_vec_shadow_lo ; 852B AD AE 06 ... sta VDSLST ; 852E 8D 00 02 ... @@ -1093,7 +1120,8 @@ clear_dli_shadow: enable_dli: lda #$C0 ; 8536 A9 C0 .. sta NMIEN ; 8538 8D 0E D4 ... -L853B: lda $06FC ; 853B AD FC 06 ... +skip_dli: + lda $06FC ; 853B AD FC 06 ... cmp $0888 ; 853E CD 88 08 ... bcc L8551 ; 8541 90 0E .. inc $06FD ; 8543 EE FD 06 ... @@ -1139,14 +1167,16 @@ check_select_key: ; carry set = not pressed, clear = pressed check_option_key: lsr zp_temp1 ; 8580 46 CB F. - bcs L858D ; 8582 B0 09 .. + bcs no_consol_pressed ; 8582 B0 09 .. lda option_key_enabled ; 8584 AD C6 06 ... - beq L858D ; 8587 F0 04 .. + beq no_consol_pressed ; 8587 F0 04 .. txs ; 8589 9A . jmp (option_key_vec) ; 858A 6C C0 06 l.. ; ---------------------------------------------------------------------------- -L858D: ldx $0618 ; 858D AE 18 06 ... +; this probably is what rotates the PLAYER SPEED prompt colors. not sure what it's doing with the page 6 vectors. +no_consol_pressed: + ldx $0618 ; 858D AE 18 06 ... cpx #$18 ; 8590 E0 18 .. bne L859C ; 8592 D0 08 .. lda #$00 ; 8594 A9 00 .. @@ -1157,12 +1187,12 @@ L858D: ldx $0618 ; 858D AE 18 06 L859C: inc $0618 ; 859C EE 18 06 ... inc $0618 ; 859F EE 18 06 ... lda page6_vectors+1,x ; 85A2 BD 01 06 ... - beq L858D ; 85A5 F0 E6 .. + beq no_consol_pressed ; 85A5 F0 E6 .. sta $06E5 ; 85A7 8D E5 06 ... lda page6_vectors,x ; 85AA BD 00 06 ... sta $06E4 ; 85AD 8D E4 06 ... jsr L06E3 ; 85B0 20 E3 06 .. - jmp L858D ; 85B3 4C 8D 85 L.. + jmp no_consol_pressed ; 85B3 4C 8D 85 L.. ; ---------------------------------------------------------------------------- ; used in vblank_imm_isr, not sure for what yet @@ -5993,7 +6023,7 @@ LA845: dex ; A845 CA bne LA845 ; A852 D0 F1 .. inc bullet_y_delta+1,x ; A854 FE 5F 07 ._. lda #$00 ; A857 A9 00 .. - sta bullet_x_pos+3,x ; A859 9D 9E 06 ... + sta bullet_y_pos_minus_one,x ; A859 9D 9E 06 ... lda player_x_pos ; A85C AD 7E 06 .~. clc ; A85F 18 . adc #$03 ; A860 69 03 i. @@ -6030,11 +6060,11 @@ play_hellstone_sfx: LA89E: lda $0763,x ; A89E BD 63 07 .c. bne LA8C1 ; A8A1 D0 1E .. LA8A3: clc ; A8A3 18 . - lda bullet_x_pos+3,x ; A8A4 BD 9E 06 ... + lda bullet_y_pos_minus_one,x ; A8A4 BD 9E 06 ... adc #$02 ; A8A7 69 02 i. cmp #$CE ; A8A9 C9 CE .. bcs LA8B3 ; A8AB B0 06 .. - sta bullet_x_pos+3,x ; A8AD 9D 9E 06 ... + sta bullet_y_pos_minus_one,x ; A8AD 9D 9E 06 ... jmp LA845 ; A8B0 4C 45 A8 LE. ; ---------------------------------------------------------------------------- @@ -6057,9 +6087,9 @@ LA8C1: lda $0767,x ; A8C1 BD 67 07 ; ---------------------------------------------------------------------------- LA8D4: tay ; A8D4 A8 . clc ; A8D5 18 . - lda bullet_x_pos+3,x ; A8D6 BD 9E 06 ... + lda bullet_y_pos_minus_one,x ; A8D6 BD 9E 06 ... adc hellstone_deltas_2,y ; A8D9 79 05 A9 y.. - sta bullet_x_pos+3,x ; A8DC 9D 9E 06 ... + sta bullet_y_pos_minus_one,x ; A8DC 9D 9E 06 ... lda hellstone_deltas_1,y ; A8DF B9 FD A8 ... tay ; A8E2 A8 . beq LA8EF ; A8E3 F0 0A .. diff --git a/jumpmanjr.info b/jumpmanjr.info index 94cef68..46e83c7 100644 --- a/jumpmanjr.info +++ b/jumpmanjr.info @@ -96,14 +96,29 @@ label { name "number_names_2"; addr $95e5; size 4; comment "N W R O" label { name "number_names_3"; addr $95e9; size 4; comment "E O E U"; }; label { name "number_names_4"; addr $95ed; size 4; comment "space space E R"; }; label { name "sfx_select_key"; addr $95f1; comment "played when select key pressed, 4 notes, descending"; }; -label { name "missiles_mask_table_minus_one"; addr $82df; }; label { name "set_dma_ctl"; addr $838F; comment "std playfield, enable players + missiles, single-line p/m res, DMA enabled"; }; range { name "level_names"; start $BB00; end $bbef; type bytetable; }; range { name "pm_memory"; start $2800; end $2fff; type bytetable; }; -range { name "missiles_mask_table"; start $82e0; end $82E7; type bytetable; }; +range { name "missiles_and_masks"; start $82e0; end $82E7; type bytetable; }; +label { name "missiles_and_masks_minus_one"; addr $82df; }; +label { name "missiles_or_masks"; addr $82e4; }; +label { name "missiles_or_masks_minus_one"; addr $82e3; }; range { name "missiles_done"; start $82DD; end $82df; type code; }; range { name "position_missiles"; start $8293; end $82DA; type code; }; +label { name "pm_next"; addr $8295; }; +label { name "skip_pos"; addr $82A6; }; +label { name "next_plr"; addr $82F3; }; +label { name "skip_vert"; addr $8338; }; +label { name "cb1_loop"; addr $83F2; }; +label { name "check_speed_timer"; addr $846E; }; +label { name "check_time_bonus"; addr $847E; }; +label { name "copy_level_vecs"; addr $84D9; comment "copy work_level vectors to page 6"; }; +label { name "next_vec"; addr $84DB; }; +label { name "skip_vec"; addr $84EE; }; +label { name "skip_dli"; addr $853B; }; +label { name "no_consol_pressed"; addr $858D; comment "this probably is what rotates the PLAYER SPEED prompt colors. not sure what it's doing with the page 6 vectors."; }; + range { name "charset"; start $9e00; end $9ff9; type bytetable; comment "GR.1/2 font, 512 bytes"; }; range { name "game_display_list"; start $0881; end $08e3; type bytetable; comment "display list for game board"; }; range { name "title_display_list"; start $91B3; end $91ce; type bytetable; comment "display list for title screen"; }; @@ -191,7 +206,8 @@ label { name "set_bullet_dir"; addr $8EA7; size 1; comment "initial direction (b label { name "fire_bullet"; addr $8EEF; size 1; comment "fire! Y reg indexes table of directions"; }; label { name "player_y_pos"; addr $0683; size 1; comment "$C6 is the bottom of the level (where you end up when you die)"; }; label { name "player_x_pos"; addr $067E; size 1; comment "stored in HPOSP0"; }; -label { name "bullet_x_pos"; addr $069B; size 4; comment "4 bytes, meaning we can never have >4 bullets on screen at once (makes sense, GTIA only has 4 missiles)"; }; +label { name "bullet_x_pos"; addr $069B; size 1; comment "4 bytes, meaning we can never have >4 bullets on screen at once (makes sense, GTIA only has 4 missiles)"; }; +label { name "bullet_y_pos_minus_one"; addr $069E; }; label { name "bullet_y_pos"; addr $069F; size 4; comment "another 4 bytes"; }; label { name "bullet_flags"; addr $0756; size 4; comment "4 bytes, 0 = bullet slot not in use, non-0 = bullet active"; }; label { name "bullet_x_delta"; addr $075A; size 4; comment "4 bytes"; }; @@ -262,7 +278,14 @@ label { name "sfx_next_note"; addr $817D; size 1; }; label { name "sfx_player_entry"; addr $8157; size 1; comment "we have 4 slots (because POKEY has 4 voices), X counts down by 2 from 10 to 2 (at 0, the loop exits)"; }; label { name "next_sfx_slot"; addr $815F; size 1; }; label { name "sfx_exit"; addr $815E; size 1; }; -label { name "is_slot_active"; addr $8163; size 1; comment "skip it, if slot is inactive"; }; +label { name "is_slot_active"; addr $8168; size 1; comment "skip it, if slot is inactive"; }; +label { name "cpos_hi_ok"; addr $8223; }; +label { name "lp_ok"; addr $8248; comment "copy to sfx_ptr, fall thru to cue_sfx"; }; +label { name "next_slot"; addr $825D; }; +label { name "load_slot"; addr $8266; comment "found a free slot, use it"; }; +label { name "bump_slot"; addr $8281; comment "couldn't find a free slot, look for a used slot with lower priority than this sfx has"; }; +label { name "bump_try_next"; addr $8283; comment "until we find one, or ran out of slots to look at"; }; +label { name "bump_fail"; addr $8285; comment "branch to cue_done (give up) if all slots are in use with higher priority than this sfx (which means it won't be heard)"; }; label { name "sfx_slot_timer"; addr $063F; size 1; }; label { name "sfx_slot_duration"; addr $0646; size 1; }; label { name "sfx_play_note"; addr $8206; size 1; comment "y==0, a>=4 on entry"; }; @@ -817,7 +840,9 @@ label { name "dm_screen_addr"; addr $C4; size 2; comment "points to byte to writ label { name "calc_screen_addr"; addr $80D0; size 1; comment "calculate 40 * dm_y_with_offset + dm_x_with_offset + screen mem address, store in dm_screen_addr"; }; label { name "sa_hi_ok_1"; addr $80FD; size 1; }; label { name "mul40_loop"; addr $80DA; size 1; }; -label { name "sa_hi_ok_2"; addr $8138; size 1; }; +label { name "mul40_no_add"; addr $80E1; size 1; }; +label { name "calc_pixels"; addr $8107; size 1; }; +label { name "sa_hi_ok_2"; addr $813C; size 1; }; label { name "sa_tmp_1"; addr $BD; size 1; comment "used by calc_screen_addr"; }; label { name "sa_tmp_2"; addr $C8; size 1; comment "used by calc_screen_addr"; }; label { name "store_rts"; addr $83B6; comment "store an RTS at $06E6, which will get JSR'ed to by unused level subroutines"; }; @@ -94,14 +94,29 @@ label { name "number_names_2"; addr $95e5; size 4; comment "N W R O" label { name "number_names_3"; addr $95e9; size 4; comment "E O E U"; }; label { name "number_names_4"; addr $95ed; size 4; comment "space space E R"; }; label { name "sfx_select_key"; addr $95f1; comment "played when select key pressed, 4 notes, descending"; }; -label { name "missiles_mask_table_minus_one"; addr $82df; }; label { name "set_dma_ctl"; addr $838F; comment "std playfield, enable players + missiles, single-line p/m res, DMA enabled"; }; range { name "level_names"; start $BB00; end $bbef; type bytetable; }; range { name "pm_memory"; start $2800; end $2fff; type bytetable; }; -range { name "missiles_mask_table"; start $82e0; end $82E7; type bytetable; }; +range { name "missiles_and_masks"; start $82e0; end $82E7; type bytetable; }; +label { name "missiles_and_masks_minus_one"; addr $82df; }; +label { name "missiles_or_masks"; addr $82e4; }; +label { name "missiles_or_masks_minus_one"; addr $82e3; }; range { name "missiles_done"; start $82DD; end $82df; type code; }; range { name "position_missiles"; start $8293; end $82DA; type code; }; +label { name "pm_next"; addr $8295; }; +label { name "skip_pos"; addr $82A6; }; +label { name "next_plr"; addr $82F3; }; +label { name "skip_vert"; addr $8338; }; +label { name "cb1_loop"; addr $83F2; }; +label { name "check_speed_timer"; addr $846E; }; +label { name "check_time_bonus"; addr $847E; }; +label { name "copy_level_vecs"; addr $84D9; comment "copy work_level vectors to page 6"; }; +label { name "next_vec"; addr $84DB; }; +label { name "skip_vec"; addr $84EE; }; +label { name "skip_dli"; addr $853B; }; +label { name "no_consol_pressed"; addr $858D; comment "this probably is what rotates the PLAYER SPEED prompt colors. not sure what it's doing with the page 6 vectors."; }; + range { name "charset"; start $9e00; end $9ff9; type bytetable; comment "GR.1/2 font, 512 bytes"; }; range { name "game_display_list"; start $0881; end $08e3; type bytetable; comment "display list for game board"; }; range { name "title_display_list"; start $91B3; end $91ce; type bytetable; comment "display list for title screen"; }; @@ -189,7 +204,8 @@ label { name "set_bullet_dir"; addr $8EA7; size 1; comment "initial direction (b label { name "fire_bullet"; addr $8EEF; size 1; comment "fire! Y reg indexes table of directions"; }; label { name "player_y_pos"; addr $0683; size 1; comment "$C6 is the bottom of the level (where you end up when you die)"; }; label { name "player_x_pos"; addr $067E; size 1; comment "stored in HPOSP0"; }; -label { name "bullet_x_pos"; addr $069B; size 4; comment "4 bytes, meaning we can never have >4 bullets on screen at once (makes sense, GTIA only has 4 missiles)"; }; +label { name "bullet_x_pos"; addr $069B; size 1; comment "4 bytes, meaning we can never have >4 bullets on screen at once (makes sense, GTIA only has 4 missiles)"; }; +label { name "bullet_y_pos_minus_one"; addr $069E; }; label { name "bullet_y_pos"; addr $069F; size 4; comment "another 4 bytes"; }; label { name "bullet_flags"; addr $0756; size 4; comment "4 bytes, 0 = bullet slot not in use, non-0 = bullet active"; }; label { name "bullet_x_delta"; addr $075A; size 4; comment "4 bytes"; }; @@ -260,7 +276,14 @@ label { name "sfx_next_note"; addr $817D; size 1; }; label { name "sfx_player_entry"; addr $8157; size 1; comment "we have 4 slots (because POKEY has 4 voices), X counts down by 2 from 10 to 2 (at 0, the loop exits)"; }; label { name "next_sfx_slot"; addr $815F; size 1; }; label { name "sfx_exit"; addr $815E; size 1; }; -label { name "is_slot_active"; addr $8163; size 1; comment "skip it, if slot is inactive"; }; +label { name "is_slot_active"; addr $8168; size 1; comment "skip it, if slot is inactive"; }; +label { name "cpos_hi_ok"; addr $8223; }; +label { name "lp_ok"; addr $8248; comment "copy to sfx_ptr, fall thru to cue_sfx"; }; +label { name "next_slot"; addr $825D; }; +label { name "load_slot"; addr $8266; comment "found a free slot, use it"; }; +label { name "bump_slot"; addr $8281; comment "couldn't find a free slot, look for a used slot with lower priority than this sfx has"; }; +label { name "bump_try_next"; addr $8283; comment "until we find one, or ran out of slots to look at"; }; +label { name "bump_fail"; addr $8285; comment "branch to cue_done (give up) if all slots are in use with higher priority than this sfx (which means it won't be heard)"; }; label { name "sfx_slot_timer"; addr $063F; size 1; }; label { name "sfx_slot_duration"; addr $0646; size 1; }; label { name "sfx_play_note"; addr $8206; size 1; comment "y==0, a>=4 on entry"; }; @@ -815,7 +838,9 @@ label { name "dm_screen_addr"; addr $C4; size 2; comment "points to byte to writ label { name "calc_screen_addr"; addr $80D0; size 1; comment "calculate 40 * dm_y_with_offset + dm_x_with_offset + screen mem address, store in dm_screen_addr"; }; label { name "sa_hi_ok_1"; addr $80FD; size 1; }; label { name "mul40_loop"; addr $80DA; size 1; }; -label { name "sa_hi_ok_2"; addr $8138; size 1; }; +label { name "mul40_no_add"; addr $80E1; size 1; }; +label { name "calc_pixels"; addr $8107; size 1; }; +label { name "sa_hi_ok_2"; addr $813C; size 1; }; label { name "sa_tmp_1"; addr $BD; size 1; comment "used by calc_screen_addr"; }; label { name "sa_tmp_2"; addr $C8; size 1; comment "used by calc_screen_addr"; }; label { name "store_rts"; addr $83B6; comment "store an RTS at $06E6, which will get JSR'ed to by unused level subroutines"; }; |