aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jumpmanjr.dasm125
-rw-r--r--jumpmanjr.info33
-rw-r--r--main.info33
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)"; };
diff --git a/main.info b/main.info
index deaf9ce..f8e6718 100644
--- a/main.info
+++ b/main.info
@@ -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)"; };