aboutsummaryrefslogtreecommitdiff
path: root/jumpmanjr.dasm
diff options
context:
space:
mode:
Diffstat (limited to 'jumpmanjr.dasm')
-rw-r--r--jumpmanjr.dasm224
1 files changed, 123 insertions, 101 deletions
diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm
index 691448d..3b1adfc 100644
--- a/jumpmanjr.dasm
+++ b/jumpmanjr.dasm
@@ -1,5 +1,5 @@
; da65 V2.15 - Git 104f898
-; Created: 2016-09-03 16:04:40
+; Created: 2016-09-03 18:32:45
; Input file: jumpmanjr.rom
; Page: 1
@@ -11,8 +11,10 @@ L0000 := $0000
dm_ypos := $0054 ; see draw_map and level_maps.txt
dm_xpos := $0055 ; see draw_map and level_maps.txt
SAVMSC := $0058 ; OS's idea of the start of screen memory [redundant to set here?]
+bomb_idx := $00B2 ; bomb that was just picked up (times 2, suitable for index into a table of words)
blistptr := $00B4 ; bomb_pickup: points to current level's bomblist
bombloc := $00B6 ; bomb_pickup: position of the bomb Jumpman just touched, on 8x8 coarse grid
+sa_tmp_1 := $00BD ; used by calc_screen_addr
dm_count := $00BE ; graphics object definition is this long
dm_length := $00BF ; see draw_map and level_maps.txt
dm_progctr := $00C0 ; see draw_map and level_maps.txt
@@ -20,6 +22,7 @@ dm_objptr := $00C2 ; see draw_map and level_maps.tx
dm_screen_addr := $00C4 ; points to byte to write gfx data to
dm_x_with_offset:= $00C6 ; graphics object X offset, plus dm_xpos
dm_y_with_offset:= $00C7 ; graphics object Y offset, plus dm_xpos
+sa_tmp_2 := $00C8 ; used by calc_screen_addr
dm_delta_x := $00C9 ; see draw_map and level_maps.txt
dm_delta_y := $00CA ; see draw_map and level_maps.txt
zp_temp1 := $00CB ; used for (zp,y) addressing, also for checking console keys in vblank_imm_isr
@@ -108,8 +111,12 @@ level := $06F6
speed_value := $06F9 ; decoded speed (1-8)
current_player := $06FE ; *think* this ranges 1-4, not 0-3
score_minus_one := $06FF
-score := $0700
+score := $0700 ; aka work_user, 11 bytes
lives := $070A
+struct_user_1 := $070B ; 11 bytes
+struct_user_2 := $0716 ; 11 bytes
+struct_user_3 := $0721 ; 11 bytes
+struct_user_4 := $072C ; 11 bytes
bullet_flags := $0756 ; 4 bytes, 0 = bullet slot not in use, non-0 = bullet active
bullet_x_delta := $075A ; 4 bytes
bullet_y_delta := $075E ; 4 bytes
@@ -290,8 +297,8 @@ decrement_time_bonus_jv:
jmp decrement_time_bonus ; 8021 4C CE 8D L..
; ----------------------------------------------------------------------------
-init_page_7_jv:
- jmp init_page_7 ; 8024 4C 5C 9A L\.
+init_struct_users_jv:
+ jmp init_struct_users ; 8024 4C 5C 9A L\.
; ----------------------------------------------------------------------------
; used in multiplayer games, also called in single player (?)
@@ -463,64 +470,67 @@ dm_obj_to_screen:
; calculate 40 * dm_y_with_offset + dm_x_with_offset + screen mem address, store in dm_screen_addr
calc_screen_addr:
lda #$28 ; 80D0 A9 28 .(
- sta $BD ; 80D2 85 BD ..
+ sta sa_tmp_1 ; 80D2 85 BD ..
lda #$00 ; 80D4 A9 00 ..
sta dm_screen_addr ; 80D6 85 C4 ..
ldx #$08 ; 80D8 A2 08 ..
-L80DA: lsr $BD ; 80DA 46 BD F.
+mul40_loop:
+ lsr sa_tmp_1 ; 80DA 46 BD F.
bcc L80E1 ; 80DC 90 03 ..
clc ; 80DE 18 .
adc dm_y_with_offset ; 80DF 65 C7 e.
L80E1: ror a ; 80E1 6A j
ror dm_screen_addr ; 80E2 66 C4 f.
dex ; 80E4 CA .
- bne L80DA ; 80E5 D0 F3 ..
+ bne mul40_loop ; 80E5 D0 F3 ..
clc ; 80E7 18 .
adc SAVMSC+1 ; 80E8 65 59 eY
sta dm_screen_addr+1 ; 80EA 85 C5 ..
lda dm_x_with_offset ; 80EC A5 C6 ..
lsr a ; 80EE 4A J
- ror $C8 ; 80EF 66 C8 f.
+ ror sa_tmp_2 ; 80EF 66 C8 f.
lsr a ; 80F1 4A J
- ror $C8 ; 80F2 66 C8 f.
+ ror sa_tmp_2 ; 80F2 66 C8 f.
clc ; 80F4 18 .
adc dm_screen_addr ; 80F5 65 C4 e.
sta dm_screen_addr ; 80F7 85 C4 ..
- bcc L80FD ; 80F9 90 02 ..
+ bcc sa_hi_ok_1 ; 80F9 90 02 ..
inc dm_screen_addr+1 ; 80FB E6 C5 ..
-L80FD: asl $C8 ; 80FD 06 C8 ..
+sa_hi_ok_1:
+ asl sa_tmp_2 ; 80FD 06 C8 ..
rol a ; 80FF 2A *
- asl $C8 ; 8100 06 C8 ..
+ asl sa_tmp_2 ; 8100 06 C8 ..
rol a ; 8102 2A *
and #$03 ; 8103 29 03 ).
- sta $C8 ; 8105 85 C8 ..
+ sta sa_tmp_2 ; 8105 85 C8 ..
L8107: lda (dm_objptr),y ; 8107 B1 C2 ..
- sta $BD ; 8109 85 BD ..
- lda $C8 ; 810B A5 C8 ..
- lsr $BD ; 810D 46 BD F.
+ sta sa_tmp_1 ; 8109 85 BD ..
+ lda sa_tmp_2 ; 810B A5 C8 ..
+ lsr sa_tmp_1 ; 810D 46 BD F.
rol a ; 810F 2A *
- lsr $BD ; 8110 46 BD F.
+ lsr sa_tmp_1 ; 8110 46 BD F.
rol a ; 8112 2A *
- sta $BD ; 8113 85 BD ..
+ sta sa_tmp_1 ; 8113 85 BD ..
iny ; 8115 C8 .
tya ; 8116 98 .
pha ; 8117 48 H
ldy #$00 ; 8118 A0 00 ..
- ldx $C8 ; 811A A6 C8 ..
+ ldx sa_tmp_2 ; 811A A6 C8 ..
lda (dm_screen_addr),y ; 811C B1 C4 ..
and gr7_and_masks,x ; 811E 3D 53 81 =S.
- ldx $BD ; 8121 A6 BD ..
+ ldx sa_tmp_1 ; 8121 A6 BD ..
ora gr7_or_masks,x ; 8123 1D 43 81 .C.
sta (dm_screen_addr),y ; 8126 91 C4 ..
pla ; 8128 68 h
tay ; 8129 A8 .
- inc $C8 ; 812A E6 C8 ..
- lda $C8 ; 812C A5 C8 ..
+ inc sa_tmp_2 ; 812A E6 C8 ..
+ lda sa_tmp_2 ; 812C A5 C8 ..
cmp #$04 ; 812E C9 04 ..
bcc L813C ; 8130 90 0A ..
lda #$00 ; 8132 A9 00 ..
- sta $C8 ; 8134 85 C8 ..
+ sta sa_tmp_2 ; 8134 85 C8 ..
inc dm_screen_addr ; 8136 E6 C4 ..
+sa_hi_ok_2:
bne L813C ; 8138 D0 02 ..
inc dm_screen_addr+1 ; 813A E6 C5 ..
L813C: dec dm_count ; 813C C6 BE ..
@@ -1465,10 +1475,10 @@ bomb_found:
sta $B1 ; 87E8 85 B1 ..
; multiply Y by 1.5 (only works because Y will always be even at this point)
mul_y: tya ; 87EA 98 .
- sta $B2 ; 87EB 85 B2 ..
+ sta bomb_idx ; 87EB 85 B2 ..
lsr a ; 87ED 4A J
clc ; 87EE 18 .
- adc $B2 ; 87EF 65 B2 e.
+ adc bomb_idx ; 87EF 65 B2 e.
tay ; 87F1 A8 .
; store actual bomb coordinates (not the coarse ones) for bomb subs to use
store_bomb_coords:
@@ -1483,7 +1493,7 @@ store_bomb_coords:
sta sfx_ptr+1 ; 8804 8D 3D 06 .=.
lda #$08 ; 8807 A9 08 ..
jsr cue_sfx_jv ; 8809 20 06 80 ..
- ldy $B2 ; 880C A4 B2 ..
+ ldy bomb_idx ; 880C A4 B2 ..
iny ; 880E C8 .
lda (blistptr),y ; 880F B1 B4 ..
beq call_bomb_sub ; 8811 F0 43 .C
@@ -1507,7 +1517,7 @@ change_map:
jsr draw_map_jv ; 882E 20 00 80 ..
; see if this bomb calls an indirect sub (none of them do in this game, this is useless code)
check_ind_sub:
- ldy $B2 ; 8831 A4 B2 ..
+ ldy bomb_idx ; 8831 A4 B2 ..
iny ; 8833 C8 .
lda (blistptr),y ; 8834 B1 B4 ..
beq call_bomb_sub ; 8836 F0 1E ..
@@ -1922,7 +1932,7 @@ pcolor0_table:
.byte $07,$00,$01,$02,$03 ; 8B7B 07 00 01 02 03 .....
; ----------------------------------------------------------------------------
; show scores, called at end of game, also called after beating level 12 (after WELL DONE). $40 in NMIEN = disable DLI, enable VBI
-player_scores_screen:
+end_scores_screen:
lda #$40 ; 8B80 A9 40 .@
sta NMIEN ; 8B82 8D 0E D4 ...
lda #$82 ; 8B85 A9 82 ..
@@ -1935,12 +1945,12 @@ L8B91: lda scores_msg,x ; 8B91 BD 7B 8C
dex ; 8B97 CA .
bne L8B91 ; 8B98 D0 F7 ..
ldx current_player ; 8B9A AE FE 06 ...
- ldy struct_player_lives_offsets_minus_one,x; 8B9D BC 88 8C ...
+ ldy struct_user_lives_offsets_minus_one,x; 8B9D BC 88 8C ...
ldx #$03 ; 8BA0 A2 03 ..
lda lives ; 8BA2 AD 0A 07 ...
sta $0713,y ; 8BA5 99 13 07 ...
L8BA8: lda score_minus_one,x ; 8BA8 BD FF 06 ...
- sta $070B,y ; 8BAB 99 0B 07 ...
+ sta struct_user_1,y ; 8BAB 99 0B 07 ...
dey ; 8BAE 88 .
dex ; 8BAF CA .
bne L8BA8 ; 8BB0 D0 F6 ..
@@ -1957,7 +1967,7 @@ show_reyalp_msg:
reyalp_msg_loop:
lda reyalp_msg_minus_one,x ; 8BC2 BD 67 8C .g.
sta $3028,y ; 8BC5 99 28 30 .(0
-; replace 10th char with the ASCII player number
+; replace 10th char with the ASCII player (user) number
check_10th:
cpx #$0A ; 8BC8 E0 0A ..
bne continue_loop ; 8BCA D0 09 ..
@@ -1971,14 +1981,14 @@ continue_loop:
bne reyalp_msg_loop ; 8BD7 D0 E9 ..
sty $AD ; 8BD9 84 AD ..
ldx $AA ; 8BDB A6 AA ..
- ldy struct_player_lives_offsets_minus_one,x; 8BDD BC 88 8C ...
+ ldy struct_user_lives_offsets_minus_one,x; 8BDD BC 88 8C ...
lda #$00 ; 8BE0 A9 00 ..
; $AF is the character to show after the score (space for alive, cross for dead)
store_space:
sta $AF ; 8BE2 85 AF ..
lda $0713,y ; 8BE4 B9 13 07 ...
cmp #$FF ; 8BE7 C9 FF ..
-; player still has lives left?
+; user still has lives left?
check_alive:
bne no_cross ; 8BE9 D0 04 ..
; no, show a cross instead of a space
@@ -1991,7 +2001,7 @@ no_cross:
lda #$30 ; 8BF4 A9 30 .0
sta num_out+1 ; 8BF6 85 D4 ..
ldx #$03 ; 8BF8 A2 03 ..
-L8BFA: lda $070B,y ; 8BFA B9 0B 07 ...
+L8BFA: lda struct_user_1,y ; 8BFA B9 0B 07 ...
sta $CF,x ; 8BFD 95 CF ..
dey ; 8BFF 88 .
dex ; 8C00 CA .
@@ -2046,7 +2056,7 @@ scores_screen_dlist:
.byte $87,$10,$07,$41,$52 ; 8C62 87 10 07 41 52 ...AR
reyalp_msg_minus_one:
.byte $8C ; 8C67 8C .
-; player spelled backwards: ' 0 # REYALP '
+; PLAYER spelled backwards: ' 0 # REYALP '
reyalp_msg:
.byte $80,$80,$10,$80,$80,$80,$80,$80 ; 8C68 80 80 10 80 80 80 80 80 ........
.byte $80,$80,$03,$80,$32,$25,$39,$21 ; 8C70 80 80 03 80 32 25 39 21 ....2%9!
@@ -2061,10 +2071,10 @@ L8C84: .byte $8C ; 8C84 8C
; offsets into screen memory, column 12, rows 2 3 4 5, used by code at $8BEF, loaded in $d3, hi byte in $d4 is $30
score_offsets:
.byte $34,$48,$5C ; 8C85 34 48 5C 4H\
-struct_player_lives_offsets_minus_one:
+struct_user_lives_offsets_minus_one:
.byte $70 ; 8C88 70 p
-; lookup table, offset from $713 to lives for indexed player
-struct_player_lives_offsets:
+; lookup table, offset from $713 to lives for indexed user
+struct_user_lives_offsets:
.byte $02,$0D,$18,$23 ; 8C89 02 0D 18 23 ...#
; ----------------------------------------------------------------------------
; used by score screen
@@ -2183,7 +2193,7 @@ well_done_scores:
lda #$00 ; 8D52 A9 00 ..
sta AUDF1 ; 8D54 8D 00 D2 ...
sta AUDC1 ; 8D57 8D 01 D2 ...
- jsr player_scores_screen ; 8D5A 20 80 8B ..
+ jsr end_scores_screen ; 8D5A 20 80 8B ..
jmp afterlife ; 8D5D 4C 00 96 L..
; ----------------------------------------------------------------------------
@@ -2232,7 +2242,7 @@ L8DA0: lda level ; 8DA0 AD F6 06
L8DAA: jsr well_done_screen ; 8DAA 20 00 BC ..
lda #$04 ; 8DAD A9 04 ..
sta $0688 ; 8DAF 8D 88 06 ...
- jsr player_scores_screen ; 8DB2 20 80 8B ..
+ jsr end_scores_screen ; 8DB2 20 80 8B ..
jmp afterlife ; 8DB5 4C 00 96 L..
; ----------------------------------------------------------------------------
@@ -2256,7 +2266,7 @@ store_audc:
zero_filler_8dcd:
.byte $00 ; 8DCD 00 .
; ----------------------------------------------------------------------------
-; bonus -= 100;
+; bonus -= 100, play sfx_bonus_tick
decrement_time_bonus:
lda work_level_time_bonus ; 8DCE AD 91 07 ...
ora work_level_time_bonus+1 ; 8DD1 0D 92 07 ...
@@ -2282,7 +2292,8 @@ dec_done:
rts ; 8DF9 60 `
; ----------------------------------------------------------------------------
-data_8dfa:
+; played when bonus timer is decremented
+sfx_bonus_tick:
.byte $01,$A5,$00,$18,$03,$00 ; 8DFA 01 A5 00 18 03 00 ......
; ----------------------------------------------------------------------------
level_finished:
@@ -2955,7 +2966,7 @@ anp_clear_loop:
ldx #$2C ; 9416 A2 2C .,
; copy NUMBER OF PLAYERS to screen RAM
anp_copy_loop:
- lda numplayer_screen_data_minus_one,x; 9418 BD 9A 95 ...
+ lda numplayers_screen_data_minus_one,x; 9418 BD 9A 95 ...
sta $37FF,x ; 941B 9D FF 37 ..7
dex ; 941E CA .
bne anp_copy_loop ; 941F D0 F7 ..
@@ -2974,7 +2985,7 @@ anp_loop_done:
sta COLOR2 ; 9439 8D C6 02 ...
lda #$C6 ; 943C A9 C6 ..
sta COLOR1 ; 943E 8D C5 02 ...
- jsr init_page_7_jv ; 9441 20 24 80 $.
+ jsr init_struct_users_jv ; 9441 20 24 80 $.
; set dlist shadow to point to numplayer_display_list
setup_numplayer_dlist:
lda #$5F ; 9444 A9 5F ._
@@ -3113,7 +3124,7 @@ wait_for_speed:
sta $0714,x ; 9536 9D 14 07 ...
pha ; 9539 48 H
clc ; 953A 18 .
-; 11-byte per-player struct?
+; 11-byte per-user struct?
add_11_to_x:
txa ; 953B 8A .
adc #$0B ; 953C 69 0B i.
@@ -3147,7 +3158,7 @@ numplayer_display_list:
.byte $95 ; 9577 95 .
; ----------------------------------------------------------------------------
; DLI service routine, changes COLPF2, address gets stored in $6ae/$6af by code at $944e
-num_player_dli_service:
+num_players_dli_service:
pha ; 9578 48 H
lda $B7 ; 9579 A5 B7 ..
cmp $B8 ; 957B C5 B8 ..
@@ -3165,12 +3176,12 @@ L9588: inc $B7 ; 9588 E6 B7
; ----------------------------------------------------------------------------
L9592: lda COLOR2 ; 9592 AD C6 02 ...
sta COLPF2 ; 9595 8D 18 D0 ...
-numplayer_screen_data_minus_one:= * + 2 ; 1-indexed loop copies from here+1
+numplayers_screen_data_minus_one:= * + 2 ; 1-indexed loop copies from here+1
jmp L9588 ; 9598 4C 88 95 L..
; ----------------------------------------------------------------------------
; 'number of players?', gets copied to $3800, see option_key_handler
-numplayer_screen_data:
+numplayers_screen_data:
.byte $00,$6E,$75,$6D,$62,$65,$72,$00 ; 959B 00 6E 75 6D 62 65 72 00 .number.
.byte $6F,$66,$00,$70,$6C,$61,$79,$65 ; 95A3 6F 66 00 70 6C 61 79 65 of.playe
.byte $72,$73,$5F,$00,$00,$00,$00,$00 ; 95AB 72 73 5F 00 00 00 00 00 rs_.....
@@ -3793,22 +3804,25 @@ zero_filler_9a48:
.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:
+; work_user and struct_user_{1..4}, 11 * 5 (55 aka $37) bytes
+init_struct_users:
ldy #$00 ; 9A5C A0 00 ..
-L9A5E: ldx #$00 ; 9A5E A2 00 ..
-L9A60: lda data_9a71,x ; 9A60 BD 71 9A .q.
+isu_next_su:
+ ldx #$00 ; 9A5E A2 00 ..
+isu_next_byte:
+ lda struct_users_init_contents,x ; 9A60 BD 71 9A .q.
sta score,y ; 9A63 99 00 07 ...
inx ; 9A66 E8 .
iny ; 9A67 C8 .
cpx #$0B ; 9A68 E0 0B ..
- bne L9A60 ; 9A6A D0 F4 ..
+ bne isu_next_byte ; 9A6A D0 F4 ..
cpy #$37 ; 9A6C C0 37 .7
- bne L9A5E ; 9A6E D0 EE ..
+ bne isu_next_su ; 9A6E D0 EE ..
rts ; 9A70 60 `
; ----------------------------------------------------------------------------
-; used by code above
-data_9a71:
+; work_user and struct_user_1 to _4 are initialized to this
+struct_users_init_contents:
.byte $00,$00,$00,$4C,$1D,$00,$00,$00 ; 9A71 00 00 00 4C 1D 00 00 00 ...L....
.byte $00,$06,$03 ; 9A79 00 06 03 ...
; ----------------------------------------------------------------------------
@@ -3828,11 +3842,11 @@ return_y:
rts ; 9A8B 60 `
; ----------------------------------------------------------------------------
-save_struct_player:
+save_struct_user:
ldx #$00 ; 9A8C A2 00 ..
ssp_loop:
lda score,x ; 9A8E BD 00 07 ...
- sta $070B,y ; 9A91 99 0B 07 ...
+ sta struct_user_1,y ; 9A91 99 0B 07 ...
inx ; 9A94 E8 .
iny ; 9A95 C8 .
cpx #$0B ; 9A96 E0 0B ..
@@ -3840,10 +3854,10 @@ ssp_loop:
rts ; 9A9A 60 `
; ----------------------------------------------------------------------------
-load_struct_player:
+load_struct_user:
ldx #$00 ; 9A9B A2 00 ..
lsp_loop:
- lda $070B,y ; 9A9D B9 0B 07 ...
+ lda struct_user_1,y ; 9A9D B9 0B 07 ...
sta score,x ; 9AA0 9D 00 07 ...
inx ; 9AA3 E8 .
iny ; 9AA4 C8 .
@@ -3855,12 +3869,12 @@ lsp_loop:
; used in multiplayer games, also called in single player (?)
next_player:
jsr mul_player_11 ; 9AAA 20 7C 9A |.
- jsr save_struct_player ; 9AAD 20 8C 9A ..
+ jsr save_struct_user ; 9AAD 20 8C 9A ..
lda #$00 ; 9AB0 A9 00 ..
sta $06F7 ; 9AB2 8D F7 06 ...
sta $06F8 ; 9AB5 8D F8 06 ...
-; wraparound to 1 if > total players
-next_player_num:
+; wraparound to 1 if > total users
+next_user_num:
inc current_player ; 9AB8 EE FE 06 ...
lda score_minus_one ; 9ABB AD FF 06 ...
cmp current_player ; 9ABE CD FE 06 ...
@@ -3872,7 +3886,7 @@ look_for_alive:
ldx number_of_players ; 9ACB AE F4 06 ...
inx ; 9ACE E8 .
ldy mul_11_table_minus_one,x ; 9ACF BC FB 9A ...
-is_player_dead:
+is_user_dead:
lda $0715,y ; 9AD2 B9 15 07 ...
cmp #$FF ; 9AD5 C9 FF ..
bne check_lives ; 9AD7 D0 0C ..
@@ -3881,21 +3895,21 @@ is_player_dead:
sbc #$0B ; 9ADB E9 0B ..
tay ; 9ADD A8 .
dex ; 9ADE CA .
- bne is_player_dead ; 9ADF D0 F1 ..
+ bne is_user_dead ; 9ADF D0 F1 ..
inc $06F8 ; 9AE1 EE F8 06 ...
rts ; 9AE4 60 `
; ----------------------------------------------------------------------------
-; if player hasn't been eliminated, but is out of lives, eliminate him
+; if user hasn't been eliminated, but is out of lives, eliminate him
check_lives:
stx score_minus_one ; 9AE5 8E FF 06 ...
jsr mul_player_11 ; 9AE8 20 7C 9A |.
- jsr load_struct_player ; 9AEB 20 9B 9A ..
+ jsr load_struct_user ; 9AEB 20 9B 9A ..
lda lives ; 9AEE AD 0A 07 ...
cmp #$FF ; 9AF1 C9 FF ..
- beq next_player_num ; 9AF3 F0 C3 ..
-; found the next player that isn't dead
-player_alive:
+ beq next_user_num ; 9AF3 F0 C3 ..
+; found the next user that isn't dead
+user_alive:
lda $0709 ; 9AF5 AD 09 07 ...
sta initial_speed ; 9AF8 8D 25 06 .%.
; 1-indexed
@@ -4059,7 +4073,7 @@ L9BFC: jmp enter_level ; 9BFC 4C BA 96
zero_filler_9bff:
.byte $00 ; 9BFF 00 .
; ----------------------------------------------------------------------------
-; only use of keyboard is to enter player speed before starting game
+; only use of keyboard is to enter player speed(s) before starting game
keyboard_isr:
txa ; 9C00 8A .
pha ; 9C01 48 H
@@ -5615,8 +5629,8 @@ l02_bombs_term:
; ----------------------------------------------------------------------------
; not sure what this actually does
electrocution_bomb_pickup:
- ldy $B2 ; A498 A4 B2 ..
- lda data_a542,y ; A49A B9 42 A5 .B.
+ ldy bomb_idx ; A498 A4 B2 ..
+ lda elec_bomb_table,y ; A49A B9 42 A5 .B.
clc ; A49D 18 .
adc #$30 ; A49E 69 30 i0
sta $0680 ; A4A0 8D 80 06 ...
@@ -5704,8 +5718,8 @@ level03_collisions:
jmp check_pl_coll_no_pl ; A53F 4C 79 8F Ly.
; ----------------------------------------------------------------------------
-; dunno, referenced by electrocution_bomb_pickup
-data_a542:
+; dunno exactly how it's used yet, referenced by electrocution_bomb_pickup
+elec_bomb_table:
.byte $0C ; A542 0C .
LA543: .byte $05,$18,$09,$58,$05,$80,$15,$18 ; A543 05 18 09 58 05 80 15 18 ...X....
.byte $09,$28,$25,$4C,$1D,$80,$09,$18 ; A54B 09 28 25 4C 1D 80 09 18 .(%L....
@@ -5758,7 +5772,7 @@ l03_unkn:
.byte $03,$86,$A6,$06,$4C,$4A,$01,$66 ; A675 03 86 A6 06 4C 4A 01 66 ....LJ.f
.byte $04,$86,$A6,$06,$A4,$CA,$01,$66 ; A67D 04 86 A6 06 A4 CA 01 66 .......f
; horizontally moving platforms from level03
-dw_platform_player:
+dw_platform_sprite:
.byte $FF,$FF,$FF,$AA,$55,$FF,$FF ; A685 FF FF FF AA 55 FF FF ....U..
; ----------------------------------------------------------------------------
; gets called at start of level
@@ -5885,7 +5899,7 @@ LA781: rts ; A781 60
; ----------------------------------------------------------------------------
; the dumbwaiters from level03. stored upside-down. trailing 00's might just be filler.
-dumbwaiter_player:
+dumbwaiter_sprite:
.byte $18,$3C,$7E,$FF,$FF,$FF,$00,$00 ; A782 18 3C 7E FF FF FF 00 00 .<~.....
.byte $00,$00,$00,$00,$00,$00 ; A78A 00 00 00 00 00 00 ......
; level map data starts here
@@ -6009,9 +6023,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 ...
- adc LA905,y ; A8D9 79 05 A9 y..
+ adc hellstone_deltas_2,y ; A8D9 79 05 A9 y..
sta bullet_x_pos+3,x ; A8DC 9D 9E 06 ...
- lda data_table_a8fd,y ; A8DF B9 FD A8 ...
+ lda hellstone_deltas_1,y ; A8DF B9 FD A8 ...
tay ; A8E2 A8 .
beq LA8EF ; A8E3 F0 0A ..
tay ; A8E5 A8 .
@@ -6027,10 +6041,12 @@ LA8EF: tya ; A8EF 98
jmp LA845 ; A8FA 4C 45 A8 LE.
; ----------------------------------------------------------------------------
-; dunno, referenced hellstones_sub0
-data_table_a8fd:
+; dunno, look like movement deltas, referenced by hellstones_sub0
+hellstone_deltas_1:
.byte $00,$02,$02,$02,$02,$02,$02,$00 ; A8FD 00 02 02 02 02 02 02 00 ........
-LA905: .byte $FE,$FE,$FE,$00,$00,$02,$02,$02 ; A905 FE FE FE 00 00 02 02 02 ........
+; dunno, look like movement deltas, referenced by hellstones_sub0
+hellstone_deltas_2:
+ .byte $FE,$FE,$FE,$00,$00,$02,$02,$02 ; A905 FE FE FE 00 00 02 02 02 ........
sfx_hellstone:
.byte $01,$83,$00,$0A,$03,$00,$00,$00 ; A90D 01 83 00 0A 03 00 00 00 ........
.byte $00,$00,$00,$00,$00,$00,$00,$00 ; A915 00 00 00 00 00 00 00 00 ........
@@ -6334,7 +6350,7 @@ LADA1: lda $0764,x ; ADA1 BD 64 07
beq code_adb5 ; ADA4 F0 0F ..
and #$0F ; ADA6 29 0F ).
tay ; ADA8 A8 .
- lda data_table_adc7,y ; ADA9 B9 C7 AD ...
+ lda zigzag_deltas,y ; ADA9 B9 C7 AD ...
sta bullet_x_delta,x ; ADAC 9D 5A 07 .Z.
inc $0764,x ; ADAF FE 64 07 .d.
jmp LAD70 ; ADB2 4C 70 AD Lp.
@@ -6344,15 +6360,15 @@ code_adb5:
lda $0768,x ; ADB5 BD 68 07 .h.
and #$0F ; ADB8 29 0F ).
tay ; ADBA A8 .
- lda data_table_adc7,y ; ADBB B9 C7 AD ...
+ lda zigzag_deltas,y ; ADBB B9 C7 AD ...
sta bullet_y_delta,x ; ADBE 9D 5E 07 .^.
code_adc1:
inc $0768,x ; ADC1 FE 68 07 .h.
jmp LAD70 ; ADC4 4C 70 AD Lp.
; ----------------------------------------------------------------------------
-; dunno, referenced by routines at $AD9E and $ADB5
-data_table_adc7:
+; kind of a sine wave shape. used for either X or Y delta, depending on the direction the bullet is moving
+zigzag_deltas:
.byte $00,$01,$02,$03,$04,$03,$02,$01 ; ADC7 00 01 02 03 04 03 02 01 ........
.byte $00,$FF,$FE,$FD,$FC,$FD,$FE,$FF ; ADCF 00 FF FE FD FC FD FE FF ........
.byte $00,$00,$00,$00,$00,$00,$00,$00 ; ADD7 00 00 00 00 00 00 00 00 ........
@@ -6395,8 +6411,8 @@ spellbound_init:
rts ; AEA3 60 `
; ----------------------------------------------------------------------------
-; dunno
-data_table_aea4:
+; used by spellbound, dunno exactly how yet
+spellbound_table:
.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 (..
; letters for level08, spellbound (not ASCII or screencodes though)
@@ -6425,10 +6441,10 @@ LAF1C: lda $062A ; AF1C AD 2A 06
; ----------------------------------------------------------------------------
spellbound_bomb_sub:
- lda $B2 ; AF23 A5 B2 ..
+ lda bomb_idx ; AF23 A5 B2 ..
lsr a ; AF25 4A J
tax ; AF26 AA .
- ldy data_table_aea4,x ; AF27 BC A4 AE ...
+ ldy spellbound_table,x ; AF27 BC A4 AE ...
iny ; AF2A C8 .
ldx $0771 ; AF2B AE 71 07 .q.
tya ; AF2E 98 .
@@ -6467,7 +6483,8 @@ spellbound_got_all:
sta playing_level ; AF65 8D 27 06 .'.
ldx #$0C ; AF68 A2 0C ..
stx $066D ; AF6A 8E 6D 06 .m.
-LAF6D: lda $0770 ; AF6D AD 70 07 .p.
+ltr_loop:
+ lda $0770 ; AF6D AD 70 07 .p.
clc ; AF70 18 .
adc #$0A ; AF71 69 0A i.
sta $0770 ; AF73 8D 70 07 .p.
@@ -6476,16 +6493,20 @@ LAF6D: lda $0770 ; AF6D AD 70 07
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..
+ jmp ltr_skip ; AF83 4C 92 AF L..
; ----------------------------------------------------------------------------
-LAF86: lda #$00 ; AF86 A9 00 ..
+; wait approx 1/3 second so user can see what happened
+ltr_delay:
+ lda #$00 ; AF86 A9 00 ..
sta jiffy_timer_1 ; AF88 8D 1A 06 ...
-LAF8B: lda jiffy_timer_1 ; AF8B AD 1A 06 ...
+ltr_wait:
+ lda jiffy_timer_1 ; AF8B AD 1A 06 ...
cmp #$20 ; AF8E C9 20 .
- bne LAF8B ; AF90 D0 F9 ..
-LAF92: dex ; AF92 CA .
- bne LAF6D ; AF93 D0 D8 ..
+ bne ltr_wait ; AF90 D0 F9 ..
+ltr_skip:
+ dex ; AF92 CA .
+ bne ltr_loop ; AF93 D0 D8 ..
rts ; AF95 60 `
; ----------------------------------------------------------------------------
@@ -6499,11 +6520,12 @@ bonus_250_pts:
lda score ; AFA2 AD 00 07 ...
adc #$FA ; AFA5 69 FA i.
sta score ; AFA7 8D 00 07 ...
- bcc LAFB4 ; AFAA 90 08 ..
+ bcc b250_hi_ok ; AFAA 90 08 ..
inc score+1 ; AFAC EE 01 07 ...
- bne LAFB4 ; AFAF D0 03 ..
+ bne b250_hi_ok ; AFAF D0 03 ..
inc score+2 ; AFB1 EE 02 07 ...
-LAFB4: txa ; AFB4 8A .
+b250_hi_ok:
+ txa ; AFB4 8A .
pha ; AFB5 48 H
jsr update_score_display_jv ; AFB6 20 0C 80 ..
; play sfx_letter_bonus
@@ -6515,10 +6537,10 @@ cue_letter_sfx:
jsr cue_sfx_jv ; AFC3 20 06 80 ..
pla ; AFC6 68 h
tax ; AFC7 AA .
- jmp LAF86 ; AFC8 4C 86 AF L..
+ jmp ltr_delay ; AFC8 4C 86 AF L..
; ----------------------------------------------------------------------------
-; played once per correct letter at end of level08 (spellbound)
+; played once per correct letter at end of level08 (spellbound). trailing 00's are filler.
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 ........