From 437f20a048870245f93f92fe264e5a92e090c202 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Tue, 30 Aug 2016 01:21:54 -0400 Subject: level_desc stuff, jumping mechanics --- jumpmanjr.html | 322 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 186 insertions(+), 136 deletions(-) (limited to 'jumpmanjr.html') diff --git a/jumpmanjr.html b/jumpmanjr.html index 1976303..be382c8 100644 --- a/jumpmanjr.html +++ b/jumpmanjr.html @@ -7,7 +7,7 @@
 ; da65 V2.15 - Git 104f898
-; Created:    2016-08-29 15:45:14
+; Created:    2016-08-30 01:18:47
 ; Input file: jumpmanjr.rom
 ; Page:       1
 
@@ -81,6 +81,7 @@
 L06E0           := $06E0
 L06E3           := $06E3
 L06E6           := $06E6
+jump_frame      := $06EB                        ; 0 if not jumping, or frames since start of jump (range 1 to 21)
 randomizer_mode := $06F3                        ; only after beating levels 1-12 in order
 number_of_players:= $06F4                       ; 0 for single-player game, otherwise range 1-3 (2 to 4 players)
 level           := $06F6
@@ -107,8 +108,8 @@
 work_level_map2 := $079A                        ; map data
 work_level_unkn_table1:= $079C                  ; unknown, pointer to a ROM table or $0000
 work_level_offs_30:= $079E                      ; always $0000
-work_level_sub4 := $07A0                        ; $06E6 for most levels, or else a ROM subroutine
-work_level_sub5 := $07A2                        ; $06E6 for some levels, or else a ROM subroutine
+work_level_sub_bomb:= $07A0                     ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+work_level_sub_start:= $07A2                    ; called at start of level, $06E6 for some levels, or else a ROM subroutine
 work_level_sub6 := $07A4                        ; always $9740 aka game_main_loop
 work_level_sub_eol:= $07A6                      ; called at end of level (all bombs picked up). $06E6 for all but level07
 work_level_offs_40:= $07A8                      ; all zeroes
@@ -135,8 +136,8 @@
 cur_level_map2  := $07DA                        ; map data
 cur_level_unkn_table1:= $07DC                   ; unknown, pointer to a ROM table or $0000
 cur_level_offs_30:= $07DE                       ; always $0000
-cur_level_sub4  := $07E0                        ; $06E6 for most levels, or else a ROM subroutine
-cur_level_sub5  := $07E2                        ; $06E6 for some levels, or else a ROM subroutine
+cur_level_sub_bomb:= $07E0                      ; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+cur_level_sub_start:= $07E2                     ; called at start of level, $06E6 for some levels, or else a ROM subroutine
 cur_level_sub6  := $07E4                        ; always $9740 aka game_main_loop
 cur_level_sub_eol:= $07E6                       ; called at end of level (all bombs picked up). $06E6 for all but level07
 cur_level_offs_40:= $07E8                       ; all zeroes
@@ -201,7 +202,9 @@
         jmp     draw_map                        ; 8000 4C 49 80                 LI.
 
 ; ----------------------------------------------------------------------------
-L8003:  jmp     cue_sfx_lowprior                ; 8003 4C 40 82                 L@.
+; if cue_sfx not already in progress, setup to play sfx at (sfx_slot_tempo, sfx_lock) tempo (?) A
+cue_sfx_lowprior_jv:
+        jmp     cue_sfx_lowprior                ; 8003 4C 40 82                 L@.
 
 ; ----------------------------------------------------------------------------
 ; setup to play sfx
@@ -214,7 +217,9 @@
         jmp     xxx_level_something             ; 8009 4C 00 86                 L..
 
 ; ----------------------------------------------------------------------------
-L800C:  jmp     L8CBC                           ; 800C 4C BC 8C                 L..
+; also adds extra life every 7500 points
+update_score_display_jv:
+        jmp     update_score_display            ; 800C 4C BC 8C                 L..
 
 ; ----------------------------------------------------------------------------
 L800F:  jmp     L867E                           ; 800F 4C 7E 86                 L~.
@@ -269,7 +274,9 @@
         jmp     crumble_gameboard               ; 8030 4C 00 8D                 L..
 
 ; ----------------------------------------------------------------------------
-L8033:  jmp     L87A0                           ; 8033 4C A0 87                 L..
+; check whether Jumpman just touched a bomb (RTS if not)
+check_bomb_coll_jv:
+        jmp     check_bomb_coll                 ; 8033 4C A0 87                 L..
 
 ; ----------------------------------------------------------------------------
 L8036:  jmp     L8B23                           ; 8036 4C 23 8B                 L#.
@@ -521,7 +528,7 @@
         cmp     #$01                            ; 818F C9 01                    ..
         beq     sfx_change_tempo                ; 8191 F0 1B                    ..
         cmp     #$02                            ; 8193 C9 02                    ..
-        beq     sfx_jump                        ; 8195 F0 31                    .1
+        beq     sfx_jump_opcode                 ; 8195 F0 31                    .1
         cmp     #$03                            ; 8197 C9 03                    ..
         beq     sfx_play_rest                   ; 8199 F0 03                    ..
         jmp     sfx_finished                    ; 819B 4C 26 82                 L&.
@@ -554,7 +561,7 @@
 
 ; ----------------------------------------------------------------------------
 ; I *think* this jumps to a different sfx address...
-sfx_jump:
+sfx_jump_opcode:
         iny                                     ; 81C8 C8                       .
         lda     (zp_temp1),y                    ; 81C9 B1 CB                    ..
         sta     sfx_slot_curpos,x               ; 81CB 9D 4E 06                 .N.
@@ -1336,13 +1343,17 @@
         jmp     L88A8                           ; 879D 4C A8 88                 L..
 
 ; ----------------------------------------------------------------------------
-L87A0:  lda     collision_save+4                ; 87A0 AD B4 06                 ...
+; check whether Jumpman just touched a bomb (RTS if not)
+check_bomb_coll:
+        lda     collision_save+4                ; 87A0 AD B4 06                 ...
         and     #$04                            ; 87A3 29 04                    ).
-        bne     L87A8                           ; 87A5 D0 01                    ..
+        bne     bomb_pickup                     ; 87A5 D0 01                    ..
         rts                                     ; 87A7 60                       `
 
 ; ----------------------------------------------------------------------------
-L87A8:  lda     $067E                           ; 87A8 AD 7E 06                 .~.
+; Jumpman just picked up a bomb, award points, play sfx_bomb_pickup, make the bomb disappear, do some other stuff I don't understand yet
+bomb_pickup:
+        lda     $067E                           ; 87A8 AD 7E 06                 .~.
         clc                                     ; 87AB 18                       .
         adc     work_level_offs_14              ; 87AC 6D 8E 07                 m..
         and     #$E0                            ; 87AF 29 E0                    ).
@@ -1434,9 +1445,9 @@
         lda     ($B0),y                         ; 884E B1 B0                    ..
         sta     $06E5                           ; 8850 8D E5 06                 ...
         jsr     L06E3                           ; 8853 20 E3 06                  ..
-L8856:  lda     work_level_sub4                 ; 8856 AD A0 07                 ...
+L8856:  lda     work_level_sub_bomb             ; 8856 AD A0 07                 ...
         sta     $06E4                           ; 8859 8D E4 06                 ...
-        lda     work_level_sub4+1               ; 885C AD A1 07                 ...
+        lda     work_level_sub_bomb+1           ; 885C AD A1 07                 ...
         sta     $06E5                           ; 885F 8D E5 06                 ...
         jsr     L06E3                           ; 8862 20 E3 06                  ..
         clc                                     ; 8865 18                       .
@@ -1452,7 +1463,7 @@
         lda     #$06                            ; 887D A9 06                    ..
         sta     dm_progctr+1                    ; 887F 85 C1                    ..
         jsr     draw_map_jv                     ; 8881 20 00 80                  ..
-        jsr     L800C                           ; 8884 20 0C 80                  ..
+        jsr     update_score_display_jv         ; 8884 20 0C 80                  ..
         dec     work_level_num_bombs            ; 8887 CE 8A 07                 ...
 L888A:  lda     collision_save+4                ; 888A AD B4 06                 ...
         and     #$04                            ; 888D 29 04                    ).
@@ -1460,7 +1471,8 @@
         rts                                     ; 8891 60                       `
 
 ; ----------------------------------------------------------------------------
-data_8892:
+; played when a bomb is picked up
+sfx_bomb_pickup:
         .byte   $01,$A6,$00,$1E,$03,$28,$03,$1E ; 8892 01 A6 00 1E 03 28 03 1E  .....(..
         .byte   $03,$28,$03,$1E,$03,$28,$03,$1E ; 889A 03 28 03 1E 03 28 03 1E  .(...(..
         .byte   $03,$28,$03,$00,$00,$00         ; 88A2 03 28 03 00 00 00        .(....
@@ -1554,7 +1566,7 @@
         lda     #$8A                            ; 893B A9 8A                    ..
         sta     sfx_slot_timer                  ; 893D 8D 3F 06                 .?.
         lda     #$07                            ; 8940 A9 07                    ..
-        jsr     L8003                           ; 8942 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; 8942 20 03 80                  ..
 L8945:  lda     $0683                           ; 8945 AD 83 06                 ...
         cmp     #$C6                            ; 8948 C9 C6                    ..
         bcc     L895D                           ; 894A 90 11                    ..
@@ -1600,7 +1612,7 @@
         lda     #$8A                            ; 899F A9 8A                    ..
         sta     sfx_slot_timer                  ; 89A1 8D 3F 06                 .?.
         lda     #$04                            ; 89A4 A9 04                    ..
-        jsr     L8003                           ; 89A6 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; 89A6 20 03 80                  ..
 L89A9:  ldx     $06EA                           ; 89A9 AE EA 06                 ...
         cpx     #$09                            ; 89AC E0 09                    ..
         bne     L89B8                           ; 89AE D0 08                    ..
@@ -1701,7 +1713,7 @@
         lda     #$8A                            ; 8A8A A9 8A                    ..
         sta     sfx_slot_timer                  ; 8A8C 8D 3F 06                 .?.
         lda     #$02                            ; 8A8F A9 02                    ..
-        jsr     L8003                           ; 8A91 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; 8A91 20 03 80                  ..
 L8A94:  jmp     L9925                           ; 8A94 4C 25 99                 L%.
 
 ; ----------------------------------------------------------------------------
@@ -2033,7 +2045,9 @@
         brk                                     ; 8CB9 00                       .
         brk                                     ; 8CBA 00                       .
         brk                                     ; 8CBB 00                       .
-L8CBC:  ldx     #$03                            ; 8CBC A2 03                    ..
+; also adds extra life every 7500 points
+update_score_display:
+        ldx     #$03                            ; 8CBC A2 03                    ..
 L8CBE:  lda     $06FF,x                         ; 8CBE BD FF 06                 ...
         cmp     score+2,x                       ; 8CC1 DD 02 07                 ...
         bcc     L8CFA                           ; 8CC4 90 34                    .4
@@ -2069,7 +2083,7 @@
         lda     #$0C                            ; 8CF2 A9 0C                    ..
         jsr     cue_sfx_jv                      ; 8CF4 20 06 80                  ..
         jsr     show_lives_icons                ; 8CF7 20 BB 86                  ..
-L8CFA:  jmp     LB7C0                           ; 8CFA 4C C0 B7                 L..
+L8CFA:  jmp     score_mod_1m                    ; 8CFA 4C C0 B7                 L..
 
 ; ----------------------------------------------------------------------------
 ; L= (for lives display)
@@ -2215,7 +2229,7 @@
         lda     #$8D                            ; 8DEF A9 8D                    ..
         sta     sfx_slot_timer                  ; 8DF1 8D 3F 06                 .?.
         lda     #$07                            ; 8DF4 A9 07                    ..
-        jsr     L8003                           ; 8DF6 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; 8DF6 20 03 80                  ..
 dec_done:
         rts                                     ; 8DF9 60                       `
 
@@ -2247,7 +2261,7 @@
         sta     AUDC1                           ; 8E2E 8D 01 D2                 ...
         sta     jiffy_timer_1                   ; 8E31 8D 1A 06                 ...
         sta     playing_level                   ; 8E34 8D 27 06                 .'.
-        jsr     L800C                           ; 8E37 20 0C 80                  ..
+        jsr     update_score_display_jv         ; 8E37 20 0C 80                  ..
 ; 533ms ntsc, 640ms pal
 wait_32_jiffies:
         lda     jiffy_timer_1                   ; 8E3A AD 1A 06                 ...
@@ -2348,7 +2362,7 @@
         txa                                     ; 8F05 8A                       .
         pha                                     ; 8F06 48                       H
         lda     #$02                            ; 8F07 A9 02                    ..
-        jsr     L8003                           ; 8F09 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; 8F09 20 03 80                  ..
         pla                                     ; 8F0C 68                       h
         tax                                     ; 8F0D AA                       .
         inc     $0756,x                         ; 8F0E FE 56 07                 .V.
@@ -2442,7 +2456,7 @@
         .byte   $10                             ; 8FC7 10                       .
 ; ----------------------------------------------------------------------------
 mus01_addr1:
-        .addr   sfx12                           ; 8FC8 BE BF                    ..
+        .addr   sfx_jump                        ; 8FC8 BE BF                    ..
 mus01_addr2:
         .addr   empty_music_entry               ; 8FCA FF 8F                    ..
 ; ----------------------------------------------------------------------------
@@ -3171,9 +3185,9 @@
         inx                                     ; 967D E8                       .
         cpx     #$40                            ; 967E E0 40                    .@
         bne     copy_level_desc_2               ; 9680 D0 F5                    ..
-        lda     work_level_sub5                 ; 9682 AD A2 07                 ...
+        lda     work_level_sub_start            ; 9682 AD A2 07                 ...
         sta     $06E1                           ; 9685 8D E1 06                 ...
-        lda     work_level_sub5+1               ; 9688 AD A3 07                 ...
+        lda     work_level_sub_start+1          ; 9688 AD A3 07                 ...
         sta     $06E2                           ; 968B 8D E2 06                 ...
         jsr     L06E0                           ; 968E 20 E0 06                  ..
         lda     #$00                            ; 9691 A9 00                    ..
@@ -3268,7 +3282,7 @@
 ; ----------------------------------------------------------------------------
 game_main_loop:
         jsr     materialize_jumpman             ; 9740 20 7B 97                  {.
-L9743:  jsr     L8033                           ; 9743 20 33 80                  3.
+L9743:  jsr     check_bomb_coll_jv              ; 9743 20 33 80                  3.
         lda     work_level_num_bombs            ; 9746 AD 8A 07                 ...
         beq     got_all_bombs                   ; 9749 F0 1B                    ..
         lda     $0623                           ; 974B AD 23 06                 .#.
@@ -3305,7 +3319,7 @@
         sta     $0755,x                         ; 9782 9D 55 07                 .U.
         sta     $069A,x                         ; 9785 9D 9A 06                 ...
         sta     $06EA,x                         ; 9788 9D EA 06                 ...
-        sta     $06EB,x                         ; 978B 9D EB 06                 ...
+        sta     jump_frame,x                    ; 978B 9D EB 06                 ...
         dex                                     ; 978E CA                       .
         bne     mj_clear_loop                   ; 978F D0 F1                    ..
         sta     $0697                           ; 9791 8D 97 06                 ...
@@ -3384,9 +3398,9 @@
         lda     $0683                           ; 980B AD 83 06                 ...
         cmp     #$C6                            ; 980E C9 C6                    ..
         bcs     L982E                           ; 9810 B0 1C                    ..
-        lda     $06EB                           ; 9812 AD EB 06                 ...
+        lda     jump_frame                      ; 9812 AD EB 06                 ...
         beq     check_collisions_2              ; 9815 F0 03                    ..
-        jmp     L99A8                           ; 9817 4C A8 99                 L..
+        jmp     mid_jump                        ; 9817 4C A8 99                 L..
 
 ; ----------------------------------------------------------------------------
 ; did player 0 or 1 hit the playfield...
@@ -3403,7 +3417,7 @@
         rts                                     ; 9831 60                       `
 
 ; ----------------------------------------------------------------------------
-; did player 0 or 1 hit the playfield...
+; movement/jumping only allowed if player's touching the playfield
 check_collisions_3:
         lda     #$00                            ; 9832 A9 00                    ..
         sta     $06ED                           ; 9834 8D ED 06                 ...
@@ -3490,7 +3504,7 @@
         lda     #$BE                            ; 98C6 A9 BE                    ..
         sta     sfx_slot_timer                  ; 98C8 8D 3F 06                 .?.
         lda     #$01                            ; 98CB A9 01                    ..
-        jsr     L8003                           ; 98CD 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; 98CD 20 03 80                  ..
 L98D0:  lda     collision_save+4                ; 98D0 AD B4 06                 ...
         ora     collision_save+5                ; 98D3 0D B5 06                 ...
         and     #$02                            ; 98D6 29 02                    ).
@@ -3590,37 +3604,47 @@
         rts                                     ; 9984 60                       `
 
 ; ----------------------------------------------------------------------------
-; handle trigger presses (maybe start a jump)
+; handle trigger presses, maybe start a jump, if player is moving up, left, or right
 trigger_handler:
         ldx     #$04                            ; 9985 A2 04                    ..
         lda     joystick_state                  ; 9987 AD 33 06                 .3.
         cmp     #$0E                            ; 998A C9 0E                    ..
-        beq     L99A0                           ; 998C F0 12                    ..
+        beq     start_jump                      ; 998C F0 12                    ..
         ldx     #$10                            ; 998E A2 10                    ..
         lda     player_delta_x                  ; 9990 AD 30 06                 .0.
         cmp     #$01                            ; 9993 C9 01                    ..
-        beq     L99A0                           ; 9995 F0 09                    ..
+        beq     start_jump                      ; 9995 F0 09                    ..
         ldx     #$11                            ; 9997 A2 11                    ..
         cmp     #$FF                            ; 9999 C9 FF                    ..
-        beq     L99A0                           ; 999B F0 03                    ..
+        beq     start_jump                      ; 999B F0 03                    ..
         jmp     check_up_down                   ; 999D 4C 55 98                 LU.
 
 ; ----------------------------------------------------------------------------
-L99A0:  stx     $0688                           ; 99A0 8E 88 06                 ...
+; start jumping, play sfx_jump
+start_jump:
+        stx     $0688                           ; 99A0 8E 88 06                 ...
         lda     #$01                            ; 99A3 A9 01                    ..
         jsr     cue_music_jv                    ; 99A5 20 18 80                  ..
-L99A8:  inc     $06EB                           ; 99A8 EE EB 06                 ...
-        lda     $06EB                           ; 99AB AD EB 06                 ...
+; check & see if we're done jumping
+mid_jump:
+        inc     jump_frame                      ; 99A8 EE EB 06                 ...
+        lda     jump_frame                      ; 99AB AD EB 06                 ...
+; $15 aka 21 frames?
+is_jump_done:
         cmp     #$16                            ; 99AE C9 16                    ..
-        bne     L99BD                           ; 99B0 D0 0B                    ..
-L99B2:  lda     #$00                            ; 99B2 A9 00                    ..
-        sta     $06EB                           ; 99B4 8D EB 06                 ...
+        bne     continue_jump                   ; 99B0 D0 0B                    ..
+; we hit a girder/rope/ladder in mid-jump, or else the jump finished without hitting anything(?). this does not (?) include the bottom of the level
+end_jump:
+        lda     #$00                            ; 99B2 A9 00                    ..
+        sta     jump_frame                      ; 99B4 8D EB 06                 ...
         sta     $06ED                           ; 99B7 8D ED 06                 ...
         jmp     check_collisions_2              ; 99BA 4C 1A 98                 L..
 
 ; ----------------------------------------------------------------------------
-L99BD:  ldx     $06EB                           ; 99BD AE EB 06                 ...
-        lda     L9A1B,x                         ; 99C0 BD 1B 9A                 ...
+; we're in mid-jump and didn't hit anything, keep going
+continue_jump:
+        ldx     jump_frame                      ; 99BD AE EB 06                 ...
+        lda     jump_delta_x_table_minus_one,x  ; 99C0 BD 1B 9A                 ...
         tay                                     ; 99C3 A8                       .
         lda     $0688                           ; 99C4 AD 88 06                 ...
         cmp     #$10                            ; 99C7 C9 10                    ..
@@ -3641,7 +3665,7 @@
         tya                                     ; 99DE 98                       .
         adc     $067E                           ; 99DF 6D 7E 06                 m~.
         sta     $067E                           ; 99E2 8D 7E 06                 .~.
-        lda     L9A31,x                         ; 99E5 BD 31 9A                 .1.
+        lda     jump_delta_y_table_minus_one,x  ; 99E5 BD 31 9A                 .1.
         clc                                     ; 99E8 18                       .
         adc     $0683                           ; 99E9 6D 83 06                 m..
         sta     $0683                           ; 99EC 8D 83 06                 ...
@@ -3655,33 +3679,40 @@
         lda     collision_save+4                ; 99F7 AD B4 06                 ...
         ora     collision_save+5                ; 99FA 0D B5 06                 ...
         lsr     a                               ; 99FD 4A                       J
-        bcs     L99B2                           ; 99FE B0 B2                    ..
+        bcs     end_jump                        ; 99FE B0 B2                    ..
         lsr     a                               ; 9A00 4A                       J
         bcc     L9A19                           ; 9A01 90 16                    ..
         lda     $0688                           ; 9A03 AD 88 06                 ...
         cmp     #$04                            ; 9A06 C9 04                    ..
         beq     L9A19                           ; 9A08 F0 0F                    ..
         jsr     L9971                           ; 9A0A 20 71 99                  q.
-        bcs     L99B2                           ; 9A0D B0 A3                    ..
+        bcs     end_jump                        ; 9A0D B0 A3                    ..
         jsr     check_up_down_2                 ; 9A0F 20 3B 99                  ;.
         bcc     L9A19                           ; 9A12 90 05                    ..
         cmp     $067E                           ; 9A14 CD 7E 06                 .~.
-        beq     L99B2                           ; 9A17 F0 99                    ..
+        beq     end_jump                        ; 9A17 F0 99                    ..
 L9A19:
-L9A1B           := * + 2
+jump_delta_x_table_minus_one:= * + 2            ; 1-indexed...
         jmp     L9925                           ; 9A19 4C 25 99                 L%.
 
 ; ----------------------------------------------------------------------------
-data_9a1c:
+; used by continue_jump, the amount of X movement per frame of jumping (for either direction, left or right)
+jump_delta_x_table:
         .byte   $02,$00,$02,$00,$02,$02,$02,$02 ; 9A1C 02 00 02 00 02 02 02 02  ........
         .byte   $02,$02,$02,$00,$02,$00,$02,$00 ; 9A24 02 02 02 00 02 00 02 00  ........
         .byte   $00,$02,$00,$00,$00             ; 9A2C 00 02 00 00 00           .....
-L9A31:  .byte   $02,$FE,$FE,$FE,$FE,$FE,$FE,$00 ; 9A31 02 FE FE FE FE FE FE 00  ........
-        .byte   $00,$00,$02,$02,$02,$02,$02,$02 ; 9A39 00 00 02 02 02 02 02 02  ........
-        .byte   $02,$02,$02,$02,$02,$02,$00,$00 ; 9A41 02 02 02 02 02 02 00 00  ........
-        .byte   $00,$00,$00,$00,$00,$00,$00,$00 ; 9A49 00 00 00 00 00 00 00 00  ........
-        .byte   $00,$00,$00,$00,$00,$00,$00,$00 ; 9A51 00 00 00 00 00 00 00 00  ........
-        .byte   $00,$00,$00                     ; 9A59 00 00 00                 ...
+; 1-indexed...
+jump_delta_y_table_minus_one:
+        .byte   $02                             ; 9A31 02                       .
+; used by continue_jump, amount of Y movement per frame ($FE is -2, or 2 scanlines up, $02 is 2 scanlines down)
+jump_delta_y_table:
+        .byte   $FE,$FE,$FE,$FE,$FE,$FE,$00,$00 ; 9A32 FE FE FE FE FE FE 00 00  ........
+        .byte   $00,$02,$02,$02,$02,$02,$02,$02 ; 9A3A 00 02 02 02 02 02 02 02  ........
+        .byte   $02,$02,$02,$02,$02,$00         ; 9A42 02 02 02 02 02 00        ......
+zero_filler_9a48:
+        .byte   $00,$00,$00,$00,$00,$00,$00,$00 ; 9A48 00 00 00 00 00 00 00 00  ........
+        .byte   $00,$00,$00,$00,$00,$00,$00,$00 ; 9A50 00 00 00 00 00 00 00 00  ........
+        .byte   $00,$00,$00,$00                 ; 9A58 00 00 00 00              ....
 ; ----------------------------------------------------------------------------
 init_page_7:
         ldy     #$00                            ; 9A5C A0 00                    ..
@@ -4176,11 +4207,11 @@
 level00_offs_30:
         .byte   $00,$00                         ; A01E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level00_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level00_sub_bomb:
         .addr   L06E6                           ; A020 E6 06                    ..
-; $06E6 for some levels, or else a ROM subroutine
-level00_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level00_sub_start:
         .addr   L06E6                           ; A022 E6 06                    ..
 ; always $9740 aka game_main_loop
 level00_sub6:
@@ -4211,16 +4242,16 @@
 ; ----------------------------------------------------------------------------
 ; a subroutine
 level01_sub0:
-        .addr   LA4DD                           ; A042 DD A4                    ..
+        .addr   electrocution_done              ; A042 DD A4                    ..
 ; a subroutine
 level01_sub1:
-        .addr   LA509                           ; A044 09 A5                    ..
+        .addr   electrocute                     ; A044 09 A5                    ..
 ; a subroutine
 level01_sub2:
         .addr   L0000                           ; A046 00 00                    ..
 ; a subroutine
 level01_sub3:
-        .addr   LA53D                           ; A048 3D A5                    =.
+        .addr   level02_collisions              ; A048 3D A5                    =.
 ; ----------------------------------------------------------------------------
 ; number of bombs to pick up on this level
 level01_num_bombs:
@@ -4269,11 +4300,11 @@
 level01_offs_30:
         .byte   $00,$00                         ; A05E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level01_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level01_sub_bomb:
         .addr   LA498                           ; A060 98 A4                    ..
-; $06E6 for some levels, or else a ROM subroutine
-level01_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level01_sub_start:
         .addr   L8036                           ; A062 36 80                    6.
 ; always $9740 aka game_main_loop
 level01_sub6:
@@ -4362,11 +4393,11 @@
 level02_offs_30:
         .byte   $00,$00                         ; A09E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level02_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level02_sub_bomb:
         .addr   L06E6                           ; A0A0 E6 06                    ..
-; $06E6 for some levels, or else a ROM subroutine
-level02_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level02_sub_start:
         .addr   LA68C                           ; A0A2 8C A6                    ..
 ; always $9740 aka game_main_loop
 level02_sub6:
@@ -4455,11 +4486,11 @@
 level03_offs_30:
         .byte   $00,$00                         ; A0DE 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level03_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level03_sub_bomb:
         .addr   L06E6                           ; A0E0 E6 06                    ..
-; $06E6 for some levels, or else a ROM subroutine
-level03_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level03_sub_start:
         .addr   L8036                           ; A0E2 36 80                    6.
 ; always $9740 aka game_main_loop
 level03_sub6:
@@ -4548,11 +4579,11 @@
 level04_offs_30:
         .byte   $00,$00                         ; A11E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level04_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level04_sub_bomb:
         .addr   L06E6                           ; A120 E6 06                    ..
-; $06E6 for some levels, or else a ROM subroutine
-level04_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level04_sub_start:
         .addr   L06E6                           ; A122 E6 06                    ..
 ; always $9740 aka game_main_loop
 level04_sub6:
@@ -4641,11 +4672,11 @@
 level05_offs_30:
         .byte   $00,$00                         ; A15E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level05_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level05_sub_bomb:
         .addr   LAA73                           ; A160 73 AA                    s.
-; $06E6 for some levels, or else a ROM subroutine
-level05_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level05_sub_start:
         .addr   LA9C6                           ; A162 C6 A9                    ..
 ; always $9740 aka game_main_loop
 level05_sub6:
@@ -4734,11 +4765,11 @@
 level06_offs_30:
         .byte   $00,$00                         ; A19E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level06_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level06_sub_bomb:
         .addr   L06E6                           ; A1A0 E6 06                    ..
-; $06E6 for some levels, or else a ROM subroutine
-level06_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level06_sub_start:
         .addr   L8036                           ; A1A2 36 80                    6.
 ; always $9740 aka game_main_loop
 level06_sub6:
@@ -4827,18 +4858,18 @@
 level07_offs_30:
         .byte   $00,$00                         ; A1DE 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level07_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level07_sub_bomb:
         .addr   LAF23                           ; A1E0 23 AF                    #.
-; $06E6 for some levels, or else a ROM subroutine
-level07_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level07_sub_start:
         .addr   LAE9B                           ; A1E2 9B AE                    ..
 ; always $9740 aka game_main_loop
 level07_sub6:
         .addr   game_main_loop                  ; A1E4 40 97                    @.
 ; called at end of level (all bombs picked up). $06E6 for all but level07
 level07_sub_eol:
-        .addr   LAF58                           ; A1E6 58 AF                    X.
+        .addr   level07_letters                 ; A1E6 58 AF                    X.
 ; ----------------------------------------------------------------------------
 ; all zeroes
 level07_offs_40:
@@ -4920,11 +4951,11 @@
 level08_offs_30:
         .byte   $00,$00                         ; A21E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level08_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level08_sub_bomb:
         .addr   LB121                           ; A220 21 B1                    !.
-; $06E6 for some levels, or else a ROM subroutine
-level08_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level08_sub_start:
         .addr   LB0C4                           ; A222 C4 B0                    ..
 ; always $9740 aka game_main_loop
 level08_sub6:
@@ -5013,11 +5044,11 @@
 level09_offs_30:
         .byte   $00,$00                         ; A25E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level09_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level09_sub_bomb:
         .addr   LB2FD                           ; A260 FD B2                    ..
-; $06E6 for some levels, or else a ROM subroutine
-level09_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level09_sub_start:
         .addr   L8036                           ; A262 36 80                    6.
 ; always $9740 aka game_main_loop
 level09_sub6:
@@ -5106,11 +5137,11 @@
 level10_offs_30:
         .byte   $00,$00                         ; A29E 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level10_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level10_sub_bomb:
         .addr   LB44C                           ; A2A0 4C B4                    L.
-; $06E6 for some levels, or else a ROM subroutine
-level10_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level10_sub_start:
         .addr   L8036                           ; A2A2 36 80                    6.
 ; always $9740 aka game_main_loop
 level10_sub6:
@@ -5199,11 +5230,11 @@
 level11_offs_30:
         .byte   $00,$00                         ; A2DE 00 00                    ..
 ; ----------------------------------------------------------------------------
-; $06E6 for most levels, or else a ROM subroutine
-level11_sub4:
+; called when a bomb is picked up. $06E6 for most levels (just an RTS), or else a ROM subroutine
+level11_sub_bomb:
         .addr   L06E6                           ; A2E0 E6 06                    ..
-; $06E6 for some levels, or else a ROM subroutine
-level11_sub5:
+; called at start of level, $06E6 for some levels, or else a ROM subroutine
+level11_sub_start:
         .addr   L8036                           ; A2E2 36 80                    6.
 ; always $9740 aka game_main_loop
 level11_sub6:
@@ -5316,7 +5347,9 @@
         rts                                     ; A4DC 60                       `
 
 ; ----------------------------------------------------------------------------
-LA4DD:  lda     $0623                           ; A4DD AD 23 06                 .#.
+; turn off electrocution effect (?)
+electrocution_done:
+        lda     $0623                           ; A4DD AD 23 06                 .#.
         bne     LA4FF                           ; A4E0 D0 1D                    ..
         lda     $0621                           ; A4E2 AD 21 06                 .!.
         bne     LA4E8                           ; A4E5 D0 01                    ..
@@ -5342,7 +5375,9 @@
         rts                                     ; A508 60                       `
 
 ; ----------------------------------------------------------------------------
-LA509:  ldx     $0770                           ; A509 AE 70 07                 .p.
+; electrocution effect
+electrocute:
+        ldx     $0770                           ; A509 AE 70 07                 .p.
         bne     LA50F                           ; A50C D0 01                    ..
         rts                                     ; A50E 60                       `
 
@@ -5357,16 +5392,17 @@
         lda     #$A5                            ; A522 A9 A5                    ..
         sta     sfx_slot_timer                  ; A524 8D 3F 06                 .?.
         lda     #$01                            ; A527 A9 01                    ..
-        jsr     L8003                           ; A529 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; A529 20 03 80                  ..
         rts                                     ; A52C 60                       `
 
 ; ----------------------------------------------------------------------------
-; dunno, referenced by routine at $A50F
-sfx_a52d:
+sfx_electrocution:
         .byte   $01,$81,$00,$0A,$02,$01,$81,$00 ; A52D 01 81 00 0A 02 01 81 00  ........
         .byte   $32,$02,$01,$81,$00,$1E,$02,$00 ; A535 32 02 01 81 00 1E 02 00  2.......
 ; ----------------------------------------------------------------------------
-LA53D:  lda     #$00                            ; A53D A9 00                    ..
+; skip a couple of the collision regs, so we don't register a collision when Jumpman is being electrocuted
+level02_collisions:
+        lda     #$00                            ; A53D A9 00                    ..
         jmp     L8F79                           ; A53F 4C 79 8F                 Ly.
 
 ; ----------------------------------------------------------------------------
@@ -5623,7 +5659,7 @@
         lda     #$A9                            ; A892 A9 A9                    ..
         sta     sfx_slot_timer                  ; A894 8D 3F 06                 .?.
         lda     #$03                            ; A897 A9 03                    ..
-        jsr     L8003                           ; A899 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; A899 20 03 80                  ..
         pla                                     ; A89C 68                       h
         tax                                     ; A89D AA                       .
 LA89E:  lda     $0763,x                         ; A89E BD 63 07                 .c.
@@ -6002,7 +6038,9 @@
         .byte   $60                             ; AEA3 60                       `
 LAEA4:  .byte   $18,$08,$38,$20,$00,$48,$30,$18 ; AEA4 18 08 38 20 00 48 30 18  ..8 .H0.
         .byte   $28,$10,$10                     ; AEAC 28 10 10                 (..
-LAEAF:  .byte   $40,$29,$21,$11,$19,$11,$09,$01 ; AEAF 40 29 21 11 19 11 09 01  @)!.....
+; letters for level07, spellbound (not ASCII or screencodes though)
+epyx_jumpman:
+        .byte   $40,$29,$21,$11,$19,$11,$09,$01 ; AEAF 40 29 21 11 19 11 09 01  @)!.....
         .byte   $49,$41,$39,$19,$31             ; AEB7 49 41 39 19 31           IA9.1
 LAEBC:  .byte   $03,$03,$03,$03,$03,$C3,$C3,$7E ; AEBC 03 03 03 03 03 C3 C3 7E  .......~
         .byte   $C3,$C3,$C3,$C3,$C3,$C3,$C3,$7E ; AEC4 C3 C3 C3 C3 C3 C3 C3 7E  .......~
@@ -6062,12 +6100,16 @@
         rts                                     ; AF57 60                       `
 
 ; ----------------------------------------------------------------------------
-LAF58:  lda     work_level_num_bombs            ; AF58 AD 8A 07                 ...
-        beq     LAF5E                           ; AF5B F0 01                    ..
+; called at end of Spellbound, adds up letter bonus
+level07_letters:
+        lda     work_level_num_bombs            ; AF58 AD 8A 07                 ...
+        beq     l07_got_all                     ; AF5B F0 01                    ..
         rts                                     ; AF5D 60                       `
 
 ; ----------------------------------------------------------------------------
-LAF5E:  lda     #$09                            ; AF5E A9 09                    ..
+; got all the bombs
+l07_got_all:
+        lda     #$09                            ; AF5E A9 09                    ..
         sta     player_speed                    ; AF60 8D 24 06                 .$.
         lda     #$00                            ; AF63 A9 00                    ..
         sta     playing_level                   ; AF65 8D 27 06                 .'.
@@ -6078,8 +6120,8 @@
         adc     #$0A                            ; AF71 69 0A                    i.
         sta     $0770                           ; AF73 8D 70 07                 .p.
         lda     $0772,x                         ; AF76 BD 72 07                 .r.
-        cmp     LAEAF,x                         ; AF79 DD AF AE                 ...
-        beq     LAF96                           ; AF7C F0 18                    ..
+        cmp     epyx_jumpman,x                  ; AF79 DD AF AE                 ...
+        beq     bonus_250_pts                   ; AF7C F0 18                    ..
         lda     #$00                            ; AF7E A9 00                    ..
         sta     $0681                           ; AF80 8D 81 06                 ...
         jmp     LAF92                           ; AF83 4C 92 AF                 L..
@@ -6095,7 +6137,9 @@
         rts                                     ; AF95 60                       `
 
 ; ----------------------------------------------------------------------------
-LAF96:  lda     $0770                           ; AF96 AD 70 07                 .p.
+; per letter
+bonus_250_pts:
+        lda     $0770                           ; AF96 AD 70 07                 .p.
         sta     $0686                           ; AF99 8D 86 06                 ...
         lda     #$86                            ; AF9C A9 86                    ..
         sta     $0681                           ; AF9E 8D 81 06                 ...
@@ -6109,7 +6153,9 @@
         inc     score+2                         ; AFB1 EE 02 07                 ...
 LAFB4:  txa                                     ; AFB4 8A                       .
         pha                                     ; AFB5 48                       H
-        jsr     L800C                           ; AFB6 20 0C 80                  ..
+        jsr     update_score_display_jv         ; AFB6 20 0C 80                  ..
+; play sfx_letter_bonus
+cue_letter_sfx:
         lda     #$CB                            ; AFB9 A9 CB                    ..
         sta     sfx_ptr                         ; AFBB 8D 3C 06                 .<.
         lda     #$AF                            ; AFBE A9 AF                    ..
@@ -6120,8 +6166,8 @@
         jmp     LAF86                           ; AFC8 4C 86 AF                 L..
 
 ; ----------------------------------------------------------------------------
-; referenced by routine at $AF96
-sfx_afcb:
+; played once per correct letter at end of level07 (spellbound)
+sfx_letter_bonus:
         .byte   $01,$A5,$00,$18,$04,$F3,$04,$00 ; AFCB 01 A5 00 18 04 F3 04 00  ........
         .byte   $00,$00,$00,$00,$00,$00,$00,$00 ; AFD3 00 00 00 00 00 00 00 00  ........
         .byte   $00,$00,$00,$00,$00,$00,$00,$00 ; AFDB 00 00 00 00 00 00 00 00  ........
@@ -6519,7 +6565,7 @@
         lda     #$B5                            ; B4D8 A9 B5                    ..
         sta     sfx_slot_timer                  ; B4DA 8D 3F 06                 .?.
         lda     #$03                            ; B4DD A9 03                    ..
-        jsr     L8003                           ; B4DF 20 03 80                  ..
+        jsr     cue_sfx_lowprior_jv             ; B4DF 20 03 80                  ..
 LB4E2:  ldy     #$01                            ; B4E2 A0 01                    ..
         lda     $0681                           ; B4E4 AD 81 06                 ...
         cmp     $067E                           ; B4E7 CD 7E 06                 .~.
@@ -6723,15 +6769,17 @@
         .byte   $00,$00,$00,$00,$00,$00,$00,$00 ; B7B1 00 00 00 00 00 00 00 00  ........
         .byte   $00,$00,$00,$00,$00,$00,$00     ; B7B9 00 00 00 00 00 00 00     .......
 ; ----------------------------------------------------------------------------
-LB7C0:  lda     score+2                         ; B7C0 AD 02 07                 ...
+; roll over the score if it's >= 1 million
+score_mod_1m:
+        lda     score+2                         ; B7C0 AD 02 07                 ...
         cmp     #$0F                            ; B7C3 C9 0F                    ..
-        bcc     LB7EE                           ; B7C5 90 27                    .'
+        bcc     score_below_1m                  ; B7C5 90 27                    .'
         lda     score+1                         ; B7C7 AD 01 07                 ...
         cmp     #$42                            ; B7CA C9 42                    .B
-        bcc     LB7EE                           ; B7CC 90 20                    . 
+        bcc     score_below_1m                  ; B7CC 90 20                    . 
         lda     score                           ; B7CE AD 00 07                 ...
         cmp     #$40                            ; B7D1 C9 40                    .@
-        bcc     LB7EE                           ; B7D3 90 19                    ..
+        bcc     score_below_1m                  ; B7D3 90 19                    ..
         sec                                     ; B7D5 38                       8
         lda     score                           ; B7D6 AD 00 07                 ...
         sbc     #$40                            ; B7D9 E9 40                    .@
@@ -6742,7 +6790,8 @@
         lda     score+2                         ; B7E6 AD 02 07                 ...
         sbc     #$0F                            ; B7E9 E9 0F                    ..
         sta     score+2                         ; B7EB 8D 02 07                 ...
-LB7EE:  jmp     L8668                           ; B7EE 4C 68 86                 Lh.
+score_below_1m:
+        jmp     L8668                           ; B7EE 4C 68 86                 Lh.
 
 ; ----------------------------------------------------------------------------
         brk                                     ; B7F1 00                       .
@@ -6804,7 +6853,7 @@
         lda     work_level_time_bonus+1         ; B85A AD 92 07                 ...
         adc     $A5                             ; B85D 65 A5                    e.
         sta     work_level_time_bonus+1         ; B85F 8D 92 07                 ...
-        jsr     L800C                           ; B862 20 0C 80                  ..
+        jsr     update_score_display_jv         ; B862 20 0C 80                  ..
         jsr     L800F                           ; B865 20 0F 80                  ..
 ; play once per life
 play_life_bonus_sfx:
@@ -7172,7 +7221,7 @@
         rts                                     ; BCCC 60                       `
 
 ; ----------------------------------------------------------------------------
-; dunno, but referenced by code at $BC6A
+; dunno, but referenced by code at $BC6A (part of well_done_screen)
 code_bccd:
         lda     $062A                           ; BCCD AD 2A 06                 .*.
         sta     COLOR2                          ; BCD0 8D C6 02                 ...
@@ -7340,7 +7389,8 @@
         .byte   $20,$88,$09,$99,$20,$E6,$30,$99 ; BFAE 20 88 09 99 20 E6 30 99   ... .0.
         .byte   $20,$88,$09,$99,$20,$B6,$3A,$00 ; BFB6 20 88 09 99 20 B6 3A 00   ... .:.
 ; jumping sound
-sfx12:  .byte   $01,$A5,$00,$79,$04,$60,$04,$51 ; BFBE 01 A5 00 79 04 60 04 51  ...y.`.Q
+sfx_jump:
+        .byte   $01,$A5,$00,$79,$04,$60,$04,$51 ; BFBE 01 A5 00 79 04 60 04 51  ...y.`.Q
         .byte   $04,$3C,$04,$51,$04,$60,$04,$79 ; BFC6 04 3C 04 51 04 60 04 79  .<.Q.`.y
         .byte   $04,$00                         ; BFCE 04 00                    ..
 ; funeral march melody
-- 
cgit v1.2.3