From dd20e776204f2e266f8c1e1b207ff0a9c0b9a92d Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Mon, 29 Aug 2016 22:58:32 -0400 Subject: spellbound level end --- jumpmanjr.dasm | 63 +++++++++++++++++++++++++++++++++++++--------------------- jumpmanjr.info | 11 +++++++++- main.info | 11 +++++++++- 3 files changed, 60 insertions(+), 25 deletions(-) diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm index a177c55..f686f93 100644 --- a/jumpmanjr.dasm +++ b/jumpmanjr.dasm @@ -1,5 +1,5 @@ ; da65 V2.15 - Git 104f898 -; Created: 2016-08-29 22:07:15 +; Created: 2016-08-29 22:55:55 ; Input file: jumpmanjr.rom ; Page: 1 @@ -206,7 +206,9 @@ xxx_level_something_jv: 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~. @@ -1450,7 +1452,7 @@ L8879: lda #$D9 ; 8879 A9 D9 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 ). @@ -2032,7 +2034,9 @@ L8CAA: inc $AB ; 8CAA E6 AB 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 @@ -2068,7 +2072,7 @@ add_extra_life: 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) @@ -2246,7 +2250,7 @@ lt_64k: lda #$00 ; 8E27 A9 00 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 ... @@ -4837,7 +4841,7 @@ 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: @@ -6001,7 +6005,9 @@ LAE9B: .byte $20,$36,$80,$A9,$C0,$8D,$70,$07 ; AE9B 20 36 80 A9 C0 8D 70 07 .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 .......~ @@ -6061,12 +6067,16 @@ LAF3B: lda LAEBC,y ; AF3B B9 BC AE 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 .'. @@ -6077,8 +6087,8 @@ LAF6D: lda $0770 ; AF6D AD 70 07 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.. @@ -6094,7 +6104,9 @@ LAF92: dex ; AF92 CA 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 ... @@ -6108,7 +6120,9 @@ LAF96: lda $0770 ; AF96 AD 70 07 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 .. @@ -6119,8 +6133,8 @@ LAFB4: txa ; AFB4 8A 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 ........ @@ -6722,15 +6736,17 @@ wind_table_2: .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 .@ @@ -6741,7 +6757,8 @@ LB7C0: lda score+2 ; B7C0 AD 02 07 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 . @@ -6803,7 +6820,7 @@ LB851: clc ; B851 18 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: diff --git a/jumpmanjr.info b/jumpmanjr.info index f94de92..7d3ea17 100644 --- a/jumpmanjr.info +++ b/jumpmanjr.info @@ -47,6 +47,14 @@ label { name "dli_chained_1"; addr $9B72; comment "changes DLI vector to point t label { name "dli_chained_2"; addr $9B87; comment "changes DLI vector to point to dli_chained_3"; }; label { name "dli_chained_3"; addr $9BB1; comment "changes DLI vector to point to dli_chained_1"; }; label { name "update_color_regs"; addr $840F; comment "update color regs from shadow regs (X ranges 1 to 9, GRAFM+1 is COLPM0, $2bf+1 is PCOLR0)"; }; +label { name "update_score_display"; addr $8CBC; comment "also adds extra life every 7500 points"; }; +label { name "update_score_display_jv"; addr $800C; comment "also adds extra life every 7500 points"; }; +label { name "score_mod_1m"; addr $B7C0; comment "roll over the score if it's >= 1 million"; }; +label { name "score_below_1m"; addr $B7EE; }; +label { name "level07_letters"; addr $AF58; comment "called at end of Spellbound, adds up letter bonus"; }; +label { name "l07_got_all"; addr $AF5E; comment "got all the bombs"; }; +label { name "bonus_250_pts"; addr $AF96; comment "per letter"; }; +label { name "epyx_jumpman"; addr $AEAF; comment "letters for level07, spellbound (not ASCII or screencodes though)"; }; range { name "code_99f7"; start $99F7; end $9A1B; type code; }; range { name "data_8406"; start $8406; end $840c; type bytetable; }; @@ -244,7 +252,8 @@ range { name "data_table_a8fd"; start $a8fd; end $A9C6; type bytetable; comment range { name "map_aa90"; start $aa90; end $AD67; type bytetable; comment "dunno what this is for yet"; }; label { name "map_aaa6"; addr $aaa6; comment "referenced by routine at $AA82"; }; range { name "data_table_adc7"; start $adc7; end $af0c; type bytetable; comment "dunno, referenced by routines at $AD9E and $ADB5"; }; -range { name "sfx_afcb"; start $AFCB; end $b0c3; type bytetable; comment "referenced by routine at $AF96"; }; +range { name "sfx_letter_bonus"; start $AFCB; end $b0c3; type bytetable; comment "played once per correct letter at end of level07 (spellbound)"; }; +label { name "cue_letter_sfx"; addr $AFB9; comment "play sfx_letter_bonus"; }; label { name "map_b000"; addr $b000; comment "referenced by routine at $B0C4"; }; range { name "data_table_85b6"; start $85b6; end $85bd; type bytetable; comment "used in vblank_imm_isr, not sure for what yet"; }; range { name "data_table_85de"; start $85de; end $85f5; type bytetable; comment "dunno what this is for yet, but it's copied into page 6 by init_hardware"; }; diff --git a/main.info b/main.info index eb90eb4..d0c5d06 100644 --- a/main.info +++ b/main.info @@ -45,6 +45,14 @@ label { name "dli_chained_1"; addr $9B72; comment "changes DLI vector to point t label { name "dli_chained_2"; addr $9B87; comment "changes DLI vector to point to dli_chained_3"; }; label { name "dli_chained_3"; addr $9BB1; comment "changes DLI vector to point to dli_chained_1"; }; label { name "update_color_regs"; addr $840F; comment "update color regs from shadow regs (X ranges 1 to 9, GRAFM+1 is COLPM0, $2bf+1 is PCOLR0)"; }; +label { name "update_score_display"; addr $8CBC; comment "also adds extra life every 7500 points"; }; +label { name "update_score_display_jv"; addr $800C; comment "also adds extra life every 7500 points"; }; +label { name "score_mod_1m"; addr $B7C0; comment "roll over the score if it's >= 1 million"; }; +label { name "score_below_1m"; addr $B7EE; }; +label { name "level07_letters"; addr $AF58; comment "called at end of Spellbound, adds up letter bonus"; }; +label { name "l07_got_all"; addr $AF5E; comment "got all the bombs"; }; +label { name "bonus_250_pts"; addr $AF96; comment "per letter"; }; +label { name "epyx_jumpman"; addr $AEAF; comment "letters for level07, spellbound (not ASCII or screencodes though)"; }; range { name "code_99f7"; start $99F7; end $9A1B; type code; }; range { name "data_8406"; start $8406; end $840c; type bytetable; }; @@ -242,7 +250,8 @@ range { name "data_table_a8fd"; start $a8fd; end $A9C6; type bytetable; comment range { name "map_aa90"; start $aa90; end $AD67; type bytetable; comment "dunno what this is for yet"; }; label { name "map_aaa6"; addr $aaa6; comment "referenced by routine at $AA82"; }; range { name "data_table_adc7"; start $adc7; end $af0c; type bytetable; comment "dunno, referenced by routines at $AD9E and $ADB5"; }; -range { name "sfx_afcb"; start $AFCB; end $b0c3; type bytetable; comment "referenced by routine at $AF96"; }; +range { name "sfx_letter_bonus"; start $AFCB; end $b0c3; type bytetable; comment "played once per correct letter at end of level07 (spellbound)"; }; +label { name "cue_letter_sfx"; addr $AFB9; comment "play sfx_letter_bonus"; }; label { name "map_b000"; addr $b000; comment "referenced by routine at $B0C4"; }; range { name "data_table_85b6"; start $85b6; end $85bd; type bytetable; comment "used in vblank_imm_isr, not sure for what yet"; }; range { name "data_table_85de"; start $85de; end $85f5; type bytetable; comment "dunno what this is for yet, but it's copied into page 6 by init_hardware"; }; -- cgit v1.2.3