diff options
author | B. Watson <yalhcru@gmail.com> | 2016-08-30 05:27:20 -0400 |
---|---|---|
committer | B. Watson <yalhcru@gmail.com> | 2016-08-30 05:27:20 -0400 |
commit | 658329b56d96b8cf201e95748c67a07d51ecec1e (patch) | |
tree | 2a9304f959d417f15e80cbbea7de0cfbeae908cc | |
parent | db6a4268a0d1d628df18ecd5b55506c72760492e (diff) | |
download | jumpmanjr-658329b56d96b8cf201e95748c67a07d51ecec1e.tar.gz |
more work...
-rw-r--r-- | jumpmanjr.dasm | 125 | ||||
-rw-r--r-- | jumpmanjr.info | 33 | ||||
-rw-r--r-- | main.info | 33 |
3 files changed, 122 insertions, 69 deletions
diff --git a/jumpmanjr.dasm b/jumpmanjr.dasm index 313b422..d82c7df 100644 --- a/jumpmanjr.dasm +++ b/jumpmanjr.dasm @@ -1,5 +1,5 @@ ; da65 V2.15 - Git 104f898 -; Created: 2016-08-30 02:45:19 +; Created: 2016-08-30 05:02:11 ; Input file: jumpmanjr.rom ; Page: 1 @@ -137,7 +137,6 @@ cur_level_offs_46:= $07EE ; unknown cur_level_offs_55:= $07F7 ; unknown, always $00 $00 $00 cur_level_offs_58:= $07FA ; unknown, not a ROM address cur_level_offs_60:= $07FC ; unknown, level05 (walls) has $ff $ff $ff $ff, all others $00 $00 $00 $00 -L0830 := $0830 game_display_list:= $0881 ; display list for game board pm_memory := $2800 HPOSP0_minus_two:= $CFFE @@ -2065,6 +2064,8 @@ L8D43: ora $3370,y ; 8D43 19 70 33 bne L8D43 ; 8D4C D0 F5 .. cmp #$00 ; 8D4E C9 00 .. bne L8D08 ; 8D50 D0 B6 .. +; well_done_screen jumps here via work_level_sub1 +well_done_scores: lda #$00 ; 8D52 A9 00 .. sta AUDF1 ; 8D54 8D 00 D2 ... sta AUDC1 ; 8D57 8D 01 D2 ... @@ -2504,7 +2505,7 @@ setup_select_key_vec: sta select_key_enabled ; 901B 8D C7 06 ... ldx #$08 ; 901E A2 08 .. lda #$FF ; 9020 A9 FF .. -; seems to try to write $FF bytes to ROM that already contains $FF's (it's the solid block character in the font). possibly left over from early development before conversion to cartridge +; seems to try to write $FF bytes to ROM that already contains $FF's (it's the solid block character in the font). possibly left over from early development before conversion to cartridge. try_to_write_rom: sta block_char_minus_one,x ; 9022 9D 0F 9E ... dex ; 9025 CA . @@ -2533,6 +2534,8 @@ copy_title_screen: sta AUDC1 ; 9057 8D 01 D2 ... lda #$ED ; 905A A9 ED .. sta dli_vec_shadow_lo ; 905C 8D AE 06 ... +; set work_level_sub0 to title_screen_color_snd +ts_setup_sub0: lda #$92 ; 905F A9 92 .. sta dli_vec_shadow_hi ; 9061 8D AF 06 ... lda #$3C ; 9064 A9 3C .< @@ -2614,37 +2617,35 @@ L910A: lda $9D ; 910A A5 9D beq try_to_write_rom_again ; 910E F0 16 .. cmp #$20 ; 9110 C9 20 . bcc L910A ; 9112 90 F6 .. +; set work_level_sub0 to $06e6 (just an RTS) +ts_clear_sub0: lda #$E6 ; 9114 A9 E6 .. sta work_level_sub0 ; 9116 8D 82 07 ... lda #$06 ; 9119 A9 06 .. sta work_level_sub0+1 ; 911B 8D 83 07 ... lda #$08 ; 911E A9 08 .. sta COLOR0 ; 9120 8D C4 02 ... - jmp LB96B ; 9123 4C 6B B9 Lk. + jmp demo_mode ; 9123 4C 6B B9 Lk. ; ---------------------------------------------------------------------------- -; see comment at try_to_write_rom +; see comment at try_to_write_rom. this writes something else to the block character in the font, which causes the graphics corruption on cracked disk versions. it doesn't seem to actually hurt anything though. try_to_write_rom_again: ldx #$08 ; 9126 A2 08 .. -L9128: lda L9133,x ; 9128 BD 33 91 .3. +L9128: lda replacement_block_char_minus_one,x; 9128 BD 33 91 .3. sta block_char_minus_one,x ; 912B 9D 0F 9E ... dex ; 912E CA . bne L9128 ; 912F D0 F7 .. -L9133 := * + 2 +replacement_block_char_minus_one:= * + 2 ; 1-indexed... jmp L910A ; 9131 4C 0A 91 L.. ; ---------------------------------------------------------------------------- -data_9134: - .byte $BF,$BF,$CF,$EF,$E7,$DB ; 9134 BF BF CF EF E7 DB ...... +replacement_block_char: + .byte $BF,$BF,$CF,$EF,$E7,$DB,$D9,$BF ; 9134 BF BF CF EF E7 DB D9 BF ........ ; ---------------------------------------------------------------------------- -; this might be more data for the above table instead of code? -maybe_data: - cmp LADBF,y ; 913A D9 BF AD ... -; this probably really is code -probly_code: - rol a ; 913D 2A * - asl $8D ; 913E 06 8D .. - cpy $02 ; 9140 C4 02 .. +; rotate colors and play the descending tone as the letters appear on the title screen +title_screen_color_snd: + lda $062A ; 913C AD 2A 06 .*. + sta COLOR0 ; 913F 8D C4 02 ... ldy $9C ; 9142 A4 9C .. cpy #$07 ; 9144 C0 07 .. beq L9164 ; 9146 F0 1C .. @@ -2660,7 +2661,9 @@ L9154: lsr a ; 9154 4A lsr a ; 9157 4A J ora #$60 ; 9158 09 60 .` sta COLOR3 ; 915A 8D C7 02 ... - lda L928F,y ; 915D B9 8F 92 ... + lda title_letters,y ; 915D B9 8F 92 ... +; $3000 is screen memory, at this point +show_letter: sta $3045,y ; 9160 99 45 30 .E0 rts ; 9163 60 ` @@ -2743,7 +2746,9 @@ title_screen_data: .byte $62,$79,$5A,$40,$72,$61,$6E,$64 ; 9277 62 79 5A 40 72 61 6E 64 byZ@rand .byte $79,$40,$67,$6C,$6F,$76,$65,$72 ; 927F 79 40 67 6C 6F 76 65 72 y@glover .byte $40,$40,$40,$40,$40,$40,$40,$40 ; 9287 40 40 40 40 40 40 40 40 @@@@@@@@ -L928F: .byte $EA,$F5,$ED,$F0,$ED,$E1,$EE,$00 ; 928F EA F5 ED F0 ED E1 EE 00 ........ +; JUMPMAN JUNIOR in screen codes with high bit set +title_letters: + .byte $EA,$F5,$ED,$F0,$ED,$E1,$EE,$00 ; 928F EA F5 ED F0 ED E1 EE 00 ........ .byte $EA,$F5,$EE,$E9,$EF,$F2,$00 ; 9297 EA F5 EE E9 EF F2 00 ....... L929E: .byte $6A,$76,$00,$82,$8E ; 929E 6A 76 00 82 8E jv... L92A3: .byte $00,$02,$00,$04,$06 ; 92A3 00 02 00 04 06 ..... @@ -4228,7 +4233,7 @@ level01_offs_30: ; ---------------------------------------------------------------------------- ; 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 .. + .addr electrocution_bomb_pickup ; A060 98 A4 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine level01_sub_start: .addr L8036 ; A062 36 80 6. @@ -4261,7 +4266,7 @@ level02_desc: ; ---------------------------------------------------------------------------- ; a subroutine level02_sub0: - .addr LA6BD ; A082 BD A6 .. + .addr dumbwaiter_sub0 ; A082 BD A6 .. ; a subroutine level02_sub1: .addr L0000 ; A084 00 00 .. @@ -4270,7 +4275,7 @@ level02_sub2: .addr L0000 ; A086 00 00 .. ; a subroutine level02_sub3: - .addr LA724 ; A088 24 A7 $. + .addr dumbwaiter_sub3 ; A088 24 A7 $. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level level02_num_bombs: @@ -4324,7 +4329,7 @@ level02_sub_bomb: .addr L06E6 ; A0A0 E6 06 .. ; called at start of level, $06E6 for some levels, or else a ROM subroutine level02_sub_start: - .addr LA68C ; A0A2 8C A6 .. + .addr dumbwaiter_setup ; A0A2 8C A6 .. ; always $9740 aka game_main_loop level02_sub6: .addr game_main_loop ; A0A4 40 97 @. @@ -4354,7 +4359,7 @@ level03_desc: ; ---------------------------------------------------------------------------- ; a subroutine level03_sub0: - .addr LA836 ; A0C2 36 A8 6. + .addr hellstones_sub0 ; A0C2 36 A8 6. ; a subroutine level03_sub1: .addr L0000 ; A0C4 00 00 .. @@ -4363,7 +4368,7 @@ level03_sub2: .addr L0000 ; A0C6 00 00 .. ; a subroutine level03_sub3: - .addr LA827 ; A0C8 27 A8 '. + .addr hellstones_sub3 ; A0C8 27 A8 '. ; ---------------------------------------------------------------------------- ; number of bombs to pick up on this level level03_num_bombs: @@ -5243,8 +5248,10 @@ LA477: .byte $22,$00,$62,$00,$82,$00,$C2,$00 ; A477 22 00 62 00 82 00 C2 00 .byte $2C,$00,$6C,$00,$8C,$00,$CC,$00 ; A48F 2C 00 6C 00 8C 00 CC 00 ,.l..... .byte $FF ; A497 FF . ; ---------------------------------------------------------------------------- -LA498: ldy $B2 ; A498 A4 B2 .. - lda data_table_a542,y ; A49A B9 42 A5 .B. +; not sure what this actually does +electrocution_bomb_pickup: + ldy $B2 ; A498 A4 B2 .. + lda data_a542,y ; A49A B9 42 A5 .B. clc ; A49D 18 . adc #$30 ; A49E 69 30 i0 sta $0680 ; A4A0 8D 80 06 ... @@ -5332,8 +5339,8 @@ level02_collisions: jmp L8F79 ; A53F 4C 79 8F Ly. ; ---------------------------------------------------------------------------- -; dunno, referenced by routine at $A498 -data_table_a542: +; dunno, referenced by electrocution_bomb_pickup +data_a542: .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.... @@ -5384,7 +5391,9 @@ LA66D: .byte $00,$00,$00,$01,$7A,$01,$01,$66 ; A66D 00 00 00 01 7A 01 01 66 dw_platform_player: .byte $FF,$FF,$FF,$AA,$55,$FF,$FF ; A685 FF FF FF AA 55 FF FF ....U.. ; ---------------------------------------------------------------------------- -LA68C: jsr L8036 ; A68C 20 36 80 6. +; gets called at start of level +dumbwaiter_setup: + jsr L8036 ; A68C 20 36 80 6. lda #$06 ; A68F A9 06 .. sta $0760 ; A691 8D 60 07 .`. ldy #$2A ; A694 A0 2A .* @@ -5409,7 +5418,9 @@ LA698: lda LA781,x ; A698 BD 81 A7 LA6BC: rts ; A6BC 60 ` ; ---------------------------------------------------------------------------- -LA6BD: lda $06F5 ; A6BD AD F5 06 ... +; gets called every frame +dumbwaiter_sub0: + lda $06F5 ; A6BD AD F5 06 ... beq LA6BC ; A6C0 F0 FA .. cmp #$01 ; A6C2 C9 01 .. bne LA6DC ; A6C4 D0 16 .. @@ -5457,7 +5468,9 @@ LA719: lda $2B00,x ; A719 BD 00 2B rts ; A723 60 ` ; ---------------------------------------------------------------------------- -LA724: lda $0623 ; A724 AD 23 06 .#. +; gets called every frame +dumbwaiter_sub3: + lda $0623 ; A724 AD 23 06 .#. cmp #$02 ; A727 C9 02 .. beq LA778 ; A729 F0 4D .M lda $0622 ; A72B AD 22 06 .". @@ -5527,7 +5540,8 @@ LA806: .byte $62,$00,$82,$00,$44,$00,$64,$00 ; A806 62 00 82 00 44 00 64 00 .byte $6A,$00,$8A,$00,$2C,$00,$CC,$00 ; A81E 6A 00 8A 00 2C 00 CC 00 j...,... .byte $FF ; A826 FF . ; ---------------------------------------------------------------------------- -LA827: lda $0619 ; A827 AD 19 06 ... +hellstones_sub3: + lda $0619 ; A827 AD 19 06 ... asl a ; A82A 0A . asl a ; A82B 0A . asl a ; A82C 0A . @@ -5537,7 +5551,8 @@ LA827: lda $0619 ; A827 AD 19 06 jmp check_collisions_1 ; A833 4C 73 8F Ls. ; ---------------------------------------------------------------------------- -LA836: lda $0623 ; A836 AD 23 06 .#. +hellstones_sub0: + lda $0623 ; A836 AD 23 06 .#. cmp #$02 ; A839 C9 02 .. beq LA842 ; A83B F0 05 .. lda $0622 ; A83D AD 22 06 .". @@ -5580,6 +5595,7 @@ LA882: tya ; A882 98 sta $0767,x ; A888 9D 67 07 .g. txa ; A88B 8A . pha ; A88C 48 H +play_hellstone_sfx: lda #$0D ; A88D A9 0D .. sta sfx_slot_tempo ; A88F 8D 3E 06 .>. lda #$A9 ; A892 A9 A9 .. @@ -5641,6 +5657,7 @@ LA8EF: tya ; A8EF 98 data_table_a8fd: .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 ........ +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 ........ .byte $00,$00,$00 ; A91D 00 00 00 ... @@ -5921,7 +5938,6 @@ code_adb5: and #$0F ; ADB8 29 0F ). tay ; ADBA A8 . lda data_table_adc7,y ; ADBB B9 C7 AD ... -LADBF := * + 1 sta $075E,x ; ADBE 9D 5E 07 .^. code_adc1: inc $0768,x ; ADC1 FE 68 07 .h. @@ -5984,16 +6000,11 @@ LAEBC: .byte $03,$03,$03,$03,$03,$C3,$C3,$7E ; AEBC 03 03 03 03 03 C3 C3 7E rti ; AF0F 40 @ ; ---------------------------------------------------------------------------- - cpx #$00 ; AF10 E0 00 .. - sec ; AF12 38 8 - jsr L0830 ; AF13 20 30 08 0. - bmi LAF1C ; AF16 30 04 0. - asl a ; AF18 0A . - asl a ; AF19 0A . - asl a ; AF1A 0A . -; NMOS 6502 illegal opcode, NOP zp -illegal_nop: - .byte $04 ; AF1B 04 . +; looks almost like code but it's bogus +data_af10: + .byte $E0,$00,$38,$20,$30,$08,$30,$04 ; AF10 E0 00 38 20 30 08 30 04 ..8 0.0. + .byte $0A,$0A,$0A,$04 ; AF18 0A 0A 0A 04 .... +; ---------------------------------------------------------------------------- LAF1C: lda $062A ; AF1C AD 2A 06 .*. sta PCOLR2 ; AF1F 8D C2 02 ... rts ; AF22 60 ` @@ -6830,11 +6841,15 @@ zero_filler_b8bf: .byte $00,$00,$00,$00,$00,$00,$00,$00 ; B95F 00 00 00 00 00 00 00 00 ........ .byte $00,$00,$00,$00 ; B967 00 00 00 00 .... ; ---------------------------------------------------------------------------- -LB96B: lda #$00 ; B96B A9 00 .. +; display all the levels, happens if left idle at the title screen +demo_mode: + lda #$00 ; B96B A9 00 .. sta jiffy_timer_1 ; B96D 8D 1A 06 ... -LB970: lda jiffy_timer_1 ; B970 AD 1A 06 ... +; actually 64 jiffies, 1.067S ntsc, 1.28s pal +wait_1_sec_2: + lda jiffy_timer_1 ; B970 AD 1A 06 ... cmp #$60 ; B973 C9 60 .` - bne LB970 ; B975 D0 F9 .. + bne wait_1_sec_2 ; B975 D0 F9 .. lda #$00 ; B977 A9 00 .. sta FR1 ; B979 85 E0 .. lda #$00 ; B97B A9 00 .. @@ -7106,14 +7121,16 @@ LBC5E: lda jiffy_timer_1 ; BC5E AD 1A 06 sta work_level_sub1+1 ; BC8A 8D 85 07 ... lda #$4C ; BC8D A9 4C .L sta work_level_offs_46+7 ; BC8F 8D B5 07 ... -LBC92: lda work_level_sub1 ; BC92 AD 84 07 ... +; wait for score screen to finish (I think, anyway) +wd_wait_scores: + lda work_level_sub1 ; BC92 AD 84 07 ... cmp #$E6 ; BC95 C9 E6 .. - bne LBC92 ; BC97 D0 F9 .. + bne wd_wait_scores ; BC97 D0 F9 .. lda #$00 ; BC99 A9 00 .. sta $06AB ; BC9B 8D AB 06 ... jsr setup_gameboard_dlist_jv ; BC9E 20 15 80 .. ldx #$0B ; BCA1 A2 0B .. -LBCA3: lda LBDD1,x ; BCA3 BD D1 BD ... +LBCA3: lda total_score_msg_minus_one,x ; BCA3 BD D1 BD ... sta $3DE8,x ; BCA6 9D E8 3D ..= dex ; BCA9 CA . bne LBCA3 ; BCAA D0 F7 .. @@ -7218,10 +7235,12 @@ dli_service_2: sta WSYNC ; BDCA 8D 0A D4 ... sta COLBK ; BDCD 8D 1A D0 ... pla ; BDD0 68 h -LBDD1: rti ; BDD1 40 @ +; 1-indexed +total_score_msg_minus_one: + rti ; BDD1 40 @ ; ---------------------------------------------------------------------------- -; not sure what displays this, but it's screen codes +; screen codes, displayed by well_done_screen total_score_msg: .byte $74,$6F,$74,$61,$6C,$00,$73,$63 ; BDD2 74 6F 74 61 6C 00 73 63 total.sc .byte $6F,$72,$65,$33,$00,$26,$29,$2C ; BDDA 6F 72 65 33 00 26 29 2C ore3.&), diff --git a/jumpmanjr.info b/jumpmanjr.info index 27945de..4abc577 100644 --- a/jumpmanjr.info +++ b/jumpmanjr.info @@ -227,13 +227,17 @@ range { name "sfx15"; start $BABC; end $BAE9; type bytetable; comment "level int range { name "sfx16"; start $BAEA; end $BAFF; type bytetable; comment "level intro music, bass"; }; range { name "code_8f38"; start $8F38; end $8F42; type code; }; -range { name "try_to_write_rom_again"; start $9126; end $9133; type code; comment "see comment at try_to_write_rom"; }; +range { name "try_to_write_rom_again"; start $9126; end $9133; type code; comment "see comment at try_to_write_rom. this writes something else to the block character in the font, which causes the graphics corruption on cracked disk versions. it doesn't seem to actually hurt anything though."; }; range { name "code_adb5"; start $ADB5; end $adc0; type code; }; range { name "code_adc1"; start $adc1; end $adc3; type code; }; -range { name "data_9134"; start $9134; end $9139; type bytetable; }; -label { name "maybe_data"; addr $913A; comment "this might be more data for the above table instead of code?"; }; -label { name "probly_code"; addr $913D; comment "this probably really is code"; }; -label { name "illegal_nop"; addr $AF1B; comment "NMOS 6502 illegal opcode, NOP zp"; }; +label { name "replacement_block_char_minus_one"; addr $9133; comment "1-indexed..."; }; +range { name "replacement_block_char"; start $9134; end $913b; type bytetable; }; +label { name "title_screen_color_snd"; addr $913c; comment "rotate colors and play the descending tone as the letters appear on the title screen"; }; +label { name "ts_setup_sub0"; addr $905f; comment "set work_level_sub0 to title_screen_color_snd"; }; +label { name "ts_clear_sub0"; addr $9114; comment "set work_level_sub0 to $06e6 (just an RTS)"; }; +label { name "demo_mode"; addr $B96B; comment "display all the levels, happens if left idle at the title screen"; }; +label { name "show_letter"; addr $9160; comment "$3000 is screen memory, at this point"; }; +label { name "title_letters"; addr $928F; comment "JUMPMAN JUNIOR in screen codes with high bit set"; }; range { name "data_9afc"; start $9AFC; end $9aff; type bytetable; }; range { name "num_player_dli_service"; start $9578; end $959a; type code; comment "DLI service routine, changes COLPF2, address gets stored in $6ae/$6af by code at $944e"; }; range { name "dli_service_2"; start $bdc7; end $bdd1; type code; comment "DLI service routine, changes COLBK, address gets stored in $6ae/$6af by code at $bc3c"; }; @@ -260,18 +264,29 @@ range { name "zero_filler_8e67"; start $8e67; end $8e68; type bytetable; }; range { name "zero_filler_8dcd"; start $8dcd; end $8dcd; type bytetable; }; range { name "code_bccd"; start $bccd; end $bcd8; type code; comment "dunno, but referenced by code at $BC6A (part of well_done_screen)"; }; range { name "well_done_map"; start $bcd9; end $bd51; type bytetable; comment "level map used for the WELL DONE screen, when you beat level 12"; }; +label { name "well_done_scores"; addr $8D52; comment "well_done_screen jumps here via work_level_sub1"; }; +label { name "wd_wait_scores"; addr $BC92; comment "wait for score screen to finish (I think, anyway)"; }; range { name "well_done_shape"; start $bda0; end $bdc6; type bytetable; comment "used to draw the large WELL DONE banner"; }; -range { name "total_score_msg"; start $bdd2; end $bdf1; type bytetable; comment "not sure what displays this, but it's screen codes"; }; +label { name "total_score_msg_minus_one"; addr $bdd1; comment "1-indexed"; }; +label { name "dumbwaiter_sub0"; addr $A6BD; comment "gets called every frame"; }; +label { name "dumbwaiter_sub3"; addr $A724; comment "gets called every frame"; }; +label { name "dumbwaiter_setup"; addr $A68C; comment "gets called at start of level"; }; +label { name "hellstones_sub0"; addr $A836; }; +label { name "hellstones_sub3"; addr $A827; }; +label { name "play_hellstone_sfx"; addr $A88D; }; +label { name "sfx_hellstone"; addr $a90d; }; +range { name "total_score_msg"; start $bdd2; end $bdf1; type bytetable; comment "screen codes, displayed by well_done_screen"; }; range { name "zero_filler_8588"; start $B588; end $B696; type bytetable; }; range { name "wind_table_1"; start $B76B; end $b7bf; type bytetable; comment "used in level11"; }; label { name "wind_table_2"; addr $b771; }; +label { name "electrocution_bomb_pickup"; addr $A498; comment "not sure what this actually does"; }; label { name "electrocution_done"; addr $A4DD; comment "turn off electrocution effect (?)"; }; label { name "electrocute"; addr $A509; comment "electrocution effect"; }; label { name "level02_collisions"; addr $A53D; comment "skip a couple of the collision regs, so we don't register a collision when Jumpman is being electrocuted"; }; label { name "start_jump"; addr $99A0; comment "start jumping, play sfx_jump"; }; range { name "level00_map"; start $A300; end $a497; type bytetable; comment "level map data starts here"; }; range { name "sfx_electrocution"; start $A52D; end $A53C; type bytetable; }; -range { name "data_table_a542"; start $A542; end $A68B; type bytetable; comment "dunno, referenced by routine at $A498"; }; +range { name "data_a542"; start $A542; end $A68B; type bytetable; comment "dunno, referenced by electrocution_bomb_pickup"; }; range { name "dumbwaiter_player"; start $a782; end $A826; type bytetable; comment "the dumbwaiters from level02. stored upside-down."; }; label { name "dw_platform_player"; addr $A685; comment "horizontally moving platforms from level02"; }; range { name "data_table_a8fd"; start $a8fd; end $A9C6; type bytetable; comment "dunno, referenced by routine at $A8D4"; }; @@ -344,7 +359,7 @@ range { name "blank_dlist_8aeb"; start $8AEB; end $8aed; type bytetable; comment range { name "blank_dlist_8c82"; start $8C82; end $8C84; type bytetable; comment "looks like an empty jump-to-itself dlist"; }; label { name "init_game"; addr $9000; comment "called from cart_entry_point routine"; }; label { name "reinit_game"; addr $900C; comment "this entry point doesn't disable start/option keys"; }; -label { name "try_to_write_rom"; addr $9022; comment "seems to try to write $FF bytes to ROM that already contains $FF's (it's the solid block character in the font). possibly left over from early development before conversion to cartridge"; }; +label { name "try_to_write_rom"; addr $9022; comment "seems to try to write $FF bytes to ROM that already contains $FF's (it's the solid block character in the font). possibly left over from early development before conversion to cartridge."; }; label { name "setup_select_key_vec"; addr $901b; comment "set select key vector to ask_num_players at $9400, enable select key"; }; label { name "setup_select_key_vec_again"; addr $9517; comment "set select key vector to ask_num_players at $9400, enable select key"; }; label { name "disable_start_opt"; addr $94EC; comment "disable start and option keys"; }; @@ -457,6 +472,7 @@ label { name "set_y"; addr $8F9B; size 1; comment "y = a * 5; // offset into mus label { name "show_level_name"; addr $BA5D; size 1; comment "copy level name into screen RAM"; }; label { name "sync_to_music"; addr $BA71; size 1; comment "level is already drawn with all color regs set to black. for each color reg, wait 1 sec before turning it visible. this syncs up with the music because the music was written to sync with this actually"; }; label { name "wait_1_sec"; addr $BA9E; size 1; comment "actually 64 jiffies, 1.067S ntsc, 1.28s pal"; }; +label { name "wait_1_sec_2"; addr $B970; size 1; comment "actually 64 jiffies, 1.067S ntsc, 1.28s pal"; }; label { name "keep_waiting"; addr $BAA3; size 1; }; label { name "enable_joystick"; addr $8775; size 1; comment "called after level-intro music is finished playing"; }; label { name "enable_joystick_jv"; addr $801B; size 1; comment "called after level-intro music is finished playing"; }; @@ -496,6 +512,7 @@ label { name "crumble_gameboard_jv"; addr $8030; comment "just lost your last li label { name "init_page_7"; addr $9A5C; }; label { name "init_page_7_jv"; addr $8024; }; range { name "data_9a71"; start $9A71; end $9a7b; type bytetable; comment "used by code above"; }; +range { name "data_af10"; start $AF10; end $AF1B; type bytetable; comment "looks almost like code but it's bogus"; }; range { name "l_equals"; start $8CFD; end $8CFF; type bytetable; comment "L= (for lives display)"; }; label { name "add_extra_life"; addr $8CE4; comment "plays sfx_extra_life"; }; label { name "show_l_equals"; addr $8CCE; comment "L= (for lives display)"; }; @@ -225,13 +225,17 @@ range { name "sfx15"; start $BABC; end $BAE9; type bytetable; comment "level int range { name "sfx16"; start $BAEA; end $BAFF; type bytetable; comment "level intro music, bass"; }; range { name "code_8f38"; start $8F38; end $8F42; type code; }; -range { name "try_to_write_rom_again"; start $9126; end $9133; type code; comment "see comment at try_to_write_rom"; }; +range { name "try_to_write_rom_again"; start $9126; end $9133; type code; comment "see comment at try_to_write_rom. this writes something else to the block character in the font, which causes the graphics corruption on cracked disk versions. it doesn't seem to actually hurt anything though."; }; range { name "code_adb5"; start $ADB5; end $adc0; type code; }; range { name "code_adc1"; start $adc1; end $adc3; type code; }; -range { name "data_9134"; start $9134; end $9139; type bytetable; }; -label { name "maybe_data"; addr $913A; comment "this might be more data for the above table instead of code?"; }; -label { name "probly_code"; addr $913D; comment "this probably really is code"; }; -label { name "illegal_nop"; addr $AF1B; comment "NMOS 6502 illegal opcode, NOP zp"; }; +label { name "replacement_block_char_minus_one"; addr $9133; comment "1-indexed..."; }; +range { name "replacement_block_char"; start $9134; end $913b; type bytetable; }; +label { name "title_screen_color_snd"; addr $913c; comment "rotate colors and play the descending tone as the letters appear on the title screen"; }; +label { name "ts_setup_sub0"; addr $905f; comment "set work_level_sub0 to title_screen_color_snd"; }; +label { name "ts_clear_sub0"; addr $9114; comment "set work_level_sub0 to $06e6 (just an RTS)"; }; +label { name "demo_mode"; addr $B96B; comment "display all the levels, happens if left idle at the title screen"; }; +label { name "show_letter"; addr $9160; comment "$3000 is screen memory, at this point"; }; +label { name "title_letters"; addr $928F; comment "JUMPMAN JUNIOR in screen codes with high bit set"; }; range { name "data_9afc"; start $9AFC; end $9aff; type bytetable; }; range { name "num_player_dli_service"; start $9578; end $959a; type code; comment "DLI service routine, changes COLPF2, address gets stored in $6ae/$6af by code at $944e"; }; range { name "dli_service_2"; start $bdc7; end $bdd1; type code; comment "DLI service routine, changes COLBK, address gets stored in $6ae/$6af by code at $bc3c"; }; @@ -258,18 +262,29 @@ range { name "zero_filler_8e67"; start $8e67; end $8e68; type bytetable; }; range { name "zero_filler_8dcd"; start $8dcd; end $8dcd; type bytetable; }; range { name "code_bccd"; start $bccd; end $bcd8; type code; comment "dunno, but referenced by code at $BC6A (part of well_done_screen)"; }; range { name "well_done_map"; start $bcd9; end $bd51; type bytetable; comment "level map used for the WELL DONE screen, when you beat level 12"; }; +label { name "well_done_scores"; addr $8D52; comment "well_done_screen jumps here via work_level_sub1"; }; +label { name "wd_wait_scores"; addr $BC92; comment "wait for score screen to finish (I think, anyway)"; }; range { name "well_done_shape"; start $bda0; end $bdc6; type bytetable; comment "used to draw the large WELL DONE banner"; }; -range { name "total_score_msg"; start $bdd2; end $bdf1; type bytetable; comment "not sure what displays this, but it's screen codes"; }; +label { name "total_score_msg_minus_one"; addr $bdd1; comment "1-indexed"; }; +label { name "dumbwaiter_sub0"; addr $A6BD; comment "gets called every frame"; }; +label { name "dumbwaiter_sub3"; addr $A724; comment "gets called every frame"; }; +label { name "dumbwaiter_setup"; addr $A68C; comment "gets called at start of level"; }; +label { name "hellstones_sub0"; addr $A836; }; +label { name "hellstones_sub3"; addr $A827; }; +label { name "play_hellstone_sfx"; addr $A88D; }; +label { name "sfx_hellstone"; addr $a90d; }; +range { name "total_score_msg"; start $bdd2; end $bdf1; type bytetable; comment "screen codes, displayed by well_done_screen"; }; range { name "zero_filler_8588"; start $B588; end $B696; type bytetable; }; range { name "wind_table_1"; start $B76B; end $b7bf; type bytetable; comment "used in level11"; }; label { name "wind_table_2"; addr $b771; }; +label { name "electrocution_bomb_pickup"; addr $A498; comment "not sure what this actually does"; }; label { name "electrocution_done"; addr $A4DD; comment "turn off electrocution effect (?)"; }; label { name "electrocute"; addr $A509; comment "electrocution effect"; }; label { name "level02_collisions"; addr $A53D; comment "skip a couple of the collision regs, so we don't register a collision when Jumpman is being electrocuted"; }; label { name "start_jump"; addr $99A0; comment "start jumping, play sfx_jump"; }; range { name "level00_map"; start $A300; end $a497; type bytetable; comment "level map data starts here"; }; range { name "sfx_electrocution"; start $A52D; end $A53C; type bytetable; }; -range { name "data_table_a542"; start $A542; end $A68B; type bytetable; comment "dunno, referenced by routine at $A498"; }; +range { name "data_a542"; start $A542; end $A68B; type bytetable; comment "dunno, referenced by electrocution_bomb_pickup"; }; range { name "dumbwaiter_player"; start $a782; end $A826; type bytetable; comment "the dumbwaiters from level02. stored upside-down."; }; label { name "dw_platform_player"; addr $A685; comment "horizontally moving platforms from level02"; }; range { name "data_table_a8fd"; start $a8fd; end $A9C6; type bytetable; comment "dunno, referenced by routine at $A8D4"; }; @@ -342,7 +357,7 @@ range { name "blank_dlist_8aeb"; start $8AEB; end $8aed; type bytetable; comment range { name "blank_dlist_8c82"; start $8C82; end $8C84; type bytetable; comment "looks like an empty jump-to-itself dlist"; }; label { name "init_game"; addr $9000; comment "called from cart_entry_point routine"; }; label { name "reinit_game"; addr $900C; comment "this entry point doesn't disable start/option keys"; }; -label { name "try_to_write_rom"; addr $9022; comment "seems to try to write $FF bytes to ROM that already contains $FF's (it's the solid block character in the font). possibly left over from early development before conversion to cartridge"; }; +label { name "try_to_write_rom"; addr $9022; comment "seems to try to write $FF bytes to ROM that already contains $FF's (it's the solid block character in the font). possibly left over from early development before conversion to cartridge."; }; label { name "setup_select_key_vec"; addr $901b; comment "set select key vector to ask_num_players at $9400, enable select key"; }; label { name "setup_select_key_vec_again"; addr $9517; comment "set select key vector to ask_num_players at $9400, enable select key"; }; label { name "disable_start_opt"; addr $94EC; comment "disable start and option keys"; }; @@ -455,6 +470,7 @@ label { name "set_y"; addr $8F9B; size 1; comment "y = a * 5; // offset into mus label { name "show_level_name"; addr $BA5D; size 1; comment "copy level name into screen RAM"; }; label { name "sync_to_music"; addr $BA71; size 1; comment "level is already drawn with all color regs set to black. for each color reg, wait 1 sec before turning it visible. this syncs up with the music because the music was written to sync with this actually"; }; label { name "wait_1_sec"; addr $BA9E; size 1; comment "actually 64 jiffies, 1.067S ntsc, 1.28s pal"; }; +label { name "wait_1_sec_2"; addr $B970; size 1; comment "actually 64 jiffies, 1.067S ntsc, 1.28s pal"; }; label { name "keep_waiting"; addr $BAA3; size 1; }; label { name "enable_joystick"; addr $8775; size 1; comment "called after level-intro music is finished playing"; }; label { name "enable_joystick_jv"; addr $801B; size 1; comment "called after level-intro music is finished playing"; }; @@ -494,6 +510,7 @@ label { name "crumble_gameboard_jv"; addr $8030; comment "just lost your last li label { name "init_page_7"; addr $9A5C; }; label { name "init_page_7_jv"; addr $8024; }; range { name "data_9a71"; start $9A71; end $9a7b; type bytetable; comment "used by code above"; }; +range { name "data_af10"; start $AF10; end $AF1B; type bytetable; comment "looks almost like code but it's bogus"; }; range { name "l_equals"; start $8CFD; end $8CFF; type bytetable; comment "L= (for lives display)"; }; label { name "add_extra_life"; addr $8CE4; comment "plays sfx_extra_life"; }; label { name "show_l_equals"; addr $8CCE; comment "L= (for lives display)"; }; |