From 67298a4faade66b29b81b35b199706a81add3145 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Sat, 3 Sep 2016 18:37:18 -0400 Subject: name some anonymous labels, rename _player to _user to avoid confusing with "player" meaning sprite on the Atari --- jumpmanjr.dasm | 224 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 123 insertions(+), 101 deletions(-) (limited to 'jumpmanjr.dasm') 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 ........ -- cgit v1.2.3