MUSCLE (U): Fix verify_pass1.py crash (a: prefix parsing), CDL reclass overrides

Urban Champion (JU): Pass 1 complete (CDL verified), Pass 2 complete
  - 519 labels renamed to semantic names via pass2.py apply
  - 10 zero-page semantic aliases added to locals.inc
  - Branch table at CB70-CBAC restructured per CDL (CB70-CB90=data, CB91-CBAC=code)
  - E07F-E09D region fixed (misaligned decode at E08D)
  - BYTE-IDENTICAL at PRG level verified

Tools:
  - cdl_reclass.py: overrides now win over CDL conflicts
  - nesdis.py: fixed a: prefix parsing for JSR/JMP operands; IND mode emits no a: prefix
  - verify_pass1.py: all 17 top-level projects pass, no crashes
This commit is contained in:
tmerritt committed 2026-10-18 20:04:34 -04:00
1 parent 62866563ba
commit b7104a8f80
17 files changed
+17025 -123

No files matched your search

@@ -1,3 +1,24 @@
al 00FFFA .ResetVectors
al 00D6E5 .RomPadding
al 00D6C5 .ButtonOamTemplateTable
al 00D6A5 .SpriteTemplateTable
al 00D6A4 .SpriteTableTerminator
al 00D644 .OamTableGroups3
al 00D604 .OamSpritePadding
al 00D5C4 .OamTableGroups2
al 00D5C3 .OamTableStream2Terminator
al 00D4E3 .OamTableGroups1
al 00D4E2 .OamTable1Terminator
al 00D4AF .OamTableGap
al 00D4AE .OamTableStreamTerminator
al 00D1F5 .VramCommandBlock4
al 00D1F4 .VramStream3Terminator
al 00D063 .VramCommandBlock3
al 00D062 .VramStream2Terminator
al 00CF40 .VramCommandBlock2
al 00CF2A .VramCommandInlineCode
al 00CF29 .VramStream1Terminator
al 00CF06 .VramCommandStream1
al 00CF05 .VramOpReturn
al 00CEF3 .VramOpLengthCheck
al 00CEC9 .VramOpDataStream
Binary file not shown.
Binary file not shown.
Binary file not shown.
+98 -98
View File
@@ -2964,8 +2964,8 @@ SpawnStageActors_OnZero_8A74:
asl a ; CPU:$8A7A PRG:0A7A 0A
tay ; CPU:$8A7B PRG:0A7B A8
lda #$00 ; CPU:$8A7C PRG:0A7C A9 00
sta $0034,y ; CPU:$8A7E PRG:0A7E 99 34 00
sta $0033,y ; CPU:$8A81 PRG:0A81 99 33 00
sta a:$0034,y ; CPU:$8A7E PRG:0A7E 99 34 00
sta a:$0033,y ; CPU:$8A81 PRG:0A81 99 33 00
; -----------------------------------------------------------------------------
; Routine: SpawnStageActors_OnNonzero_8A84
; Global: SpawnStageActors_OnNonzero_8A84.; no call site is visible in the static trace
@@ -2998,7 +2998,7 @@ SpawnStageActors_OnZero_8A93:
asl a ; CPU:$8A95 PRG:0A95 0A
tay ; CPU:$8A96 PRG:0A96 A8
lda #$64 ; CPU:$8A97 PRG:0A97 A9 64
sta $0034,y ; CPU:$8A99 PRG:0A99 99 34 00
sta a:$0034,y ; CPU:$8A99 PRG:0A99 99 34 00
lda #$FE ; CPU:$8A9C PRG:0A9C A9 FE
sta PlayerActionState,x ; CPU:$8A9E PRG:0A9E 95 F0
lda #$00 ; CPU:$8AA0 PRG:0AA0 A9 00
@@ -5111,12 +5111,12 @@ QueueVramDescriptor_JumpNext_92B2:
dec Zp7A,x ; CPU:$92B2 PRG:12B2 D6 7A
beq QueueVramDescriptor_OnZero_9329 ; CPU:$92B4 PRG:12B4 F0 73
jsr $94C7 ; CPU:$92B6 PRG:12B6 20 C7 94
lda $003A,y ; CPU:$92B9 PRG:12B9 B9 3A 00
lda a:$003A,y ; CPU:$92B9 PRG:12B9 B9 3A 00
clc ; CPU:$92BC PRG:12BC 18
adc #$01 ; CPU:$92BD PRG:12BD 69 01
sta $003A,y ; CPU:$92BF PRG:12BF 99 3A 00
sta a:$003A,y ; CPU:$92BF PRG:12BF 99 3A 00
inc Zp4B,x ; CPU:$92C2 PRG:12C2 F6 4B
lda $0033,y ; CPU:$92C4 PRG:12C4 B9 33 00
lda a:$0033,y ; CPU:$92C4 PRG:12C4 B9 33 00
sec ; CPU:$92C7 PRG:12C7 38
sbc Zp4B,x ; CPU:$92C8 PRG:12C8 F5 4B
jmp $934B ; CPU:$92CA PRG:12CA 4C 4B 93
@@ -5133,12 +5133,12 @@ QueueVramDescriptor_JumpNext_92CD:
dec Zp7A,x ; CPU:$92CD PRG:12CD D6 7A
beq QueueVramDescriptor_OnZero_92E8 ; CPU:$92CF PRG:12CF F0 17
jsr $94C7 ; CPU:$92D1 PRG:12D1 20 C7 94
lda $0033,y ; CPU:$92D4 PRG:12D4 B9 33 00
lda a:$0033,y ; CPU:$92D4 PRG:12D4 B9 33 00
clc ; CPU:$92D7 PRG:12D7 18
adc Zp4B,x ; CPU:$92D8 PRG:12D8 75 4B
sta $0033,y ; CPU:$92DA PRG:12DA 99 33 00
sta a:$0033,y ; CPU:$92DA PRG:12DA 99 33 00
dec Zp4B,x ; CPU:$92DD PRG:12DD D6 4B
lda $003A,y ; CPU:$92DF PRG:12DF B9 3A 00
lda a:$003A,y ; CPU:$92DF PRG:12DF B9 3A 00
sec ; CPU:$92E2 PRG:12E2 38
sbc #$01 ; CPU:$92E3 PRG:12E3 E9 01
jmp $9371 ; CPU:$92E5 PRG:12E5 4C 71 93
@@ -5215,10 +5215,10 @@ QueueVramDescriptor_JumpNext_932C:
dec Zp7A,x ; CPU:$932C PRG:132C D6 7A
beq QueueVramDescriptor_OnZero_9329 ; CPU:$932E PRG:132E F0 F9
jsr $94C7 ; CPU:$9330 PRG:1330 20 C7 94
lda $003A,y ; CPU:$9333 PRG:1333 B9 3A 00
lda a:$003A,y ; CPU:$9333 PRG:1333 B9 3A 00
sec ; CPU:$9336 PRG:1336 38
sbc #$02 ; CPU:$9337 PRG:1337 E9 02
sta $003A,y ; CPU:$9339 PRG:1339 99 3A 00
sta a:$003A,y ; CPU:$9339 PRG:1339 99 3A 00
inc Zp4B,x ; CPU:$933C PRG:133C F6 4B
lda Zp4B,x ; CPU:$933E PRG:133E B5 4B
rol a ; CPU:$9340 PRG:1340 2A
@@ -5228,7 +5228,7 @@ QueueVramDescriptor_JumpNext_932C:
ror a ; CPU:$9344 PRG:1344 6A
eor #$FF ; CPU:$9345 PRG:1345 49 FF
sec ; CPU:$9347 PRG:1347 38
adc $0033,y ; CPU:$9348 PRG:1348 79 33 00
adc a:$0033,y ; CPU:$9348 PRG:1348 79 33 00
; -----------------------------------------------------------------------------
; Routine: UpdateActorX
; Global: UpdateActorX.; called from $92CA
@@ -5239,7 +5239,7 @@ QueueVramDescriptor_JumpNext_932C:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
UpdateActorX:
sta $0033,y ; CPU:$934B PRG:134B 99 33 00
sta a:$0033,y ; CPU:$934B PRG:134B 99 33 00
jsr $82ED ; CPU:$934E PRG:134E 20 ED 82
jmp $9374 ; CPU:$9351 PRG:1351 4C 74 93
; -----------------------------------------------------------------------------
@@ -5262,10 +5262,10 @@ UpdateActorX_JumpNext_9354:
plp ; CPU:$9360 PRG:1360 28
ror a ; CPU:$9361 PRG:1361 6A
clc ; CPU:$9362 PRG:1362 18
adc $0033,y ; CPU:$9363 PRG:1363 79 33 00
sta $0033,y ; CPU:$9366 PRG:1366 99 33 00
adc a:$0033,y ; CPU:$9363 PRG:1363 79 33 00
sta a:$0033,y ; CPU:$9366 PRG:1366 99 33 00
dec Zp4B,x ; CPU:$9369 PRG:1369 D6 4B
lda $003A,y ; CPU:$936B PRG:136B B9 3A 00
lda a:$003A,y ; CPU:$936B PRG:136B B9 3A 00
clc ; CPU:$936E PRG:136E 18
adc #$02 ; CPU:$936F PRG:136F 69 02
; -----------------------------------------------------------------------------
@@ -5278,7 +5278,7 @@ UpdateActorX_JumpNext_9354:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
UpdateActorTile:
sta $003A,y ; CPU:$9371 PRG:1371 99 3A 00
sta a:$003A,y ; CPU:$9371 PRG:1371 99 3A 00
; -----------------------------------------------------------------------------
; Routine: UpdateActorTileAlt
; Global: UpdateActorTileAlt.; called from $9351
@@ -5308,14 +5308,14 @@ UpdateActorTileAlt_JumpNext_937C:
tya ; CPU:$9381 PRG:1381 98
pha ; CPU:$9382 PRG:1382 48
ldy ActorSlotOffset ; CPU:$9383 PRG:1383 A4 21
lda $003B,y ; CPU:$9385 PRG:1385 B9 3B 00
lda a:$003B,y ; CPU:$9385 PRG:1385 B9 3B 00
asl a ; CPU:$9388 PRG:1388 0A
lda $003C,y ; CPU:$9389 PRG:1389 B9 3C 00
lda a:$003C,y ; CPU:$9389 PRG:1389 B9 3C 00
rol a ; CPU:$938C PRG:138C 2A
sta Zp51 ; CPU:$938D PRG:138D 85 51
lda $003A,y ; CPU:$938F PRG:138F B9 3A 00
lda a:$003A,y ; CPU:$938F PRG:138F B9 3A 00
sec ; CPU:$9392 PRG:1392 38
sbc $0033,y ; CPU:$9393 PRG:1393 F9 33 00
sbc a:$0033,y ; CPU:$9393 PRG:1393 F9 33 00
clc ; CPU:$9396 PRG:1396 18
adc BytecodeHandlerPointerLo ; CPU:$9397 PRG:1397 65 1C
tay ; CPU:$9399 PRG:1399 A8
@@ -5406,7 +5406,7 @@ UpdateActorTileAlt_OnNonzero_93D3:
lda #$FB ; CPU:$93E7 PRG:13E7 A9 FB
jsr $9A2E ; CPU:$93E9 PRG:13E9 20 2E 9A
ldy ActorSlotOffset ; CPU:$93EC PRG:13EC A4 21
lda $003A,y ; CPU:$93EE PRG:13EE B9 3A 00
lda a:$003A,y ; CPU:$93EE PRG:13EE B9 3A 00
clc ; CPU:$93F1 PRG:13F1 18
adc #$08 ; CPU:$93F2 PRG:13F2 69 08
tay ; CPU:$93F4 PRG:13F4 A8
@@ -5476,7 +5476,7 @@ UpdateActorTileAlt_OnNegative_942C:
lda Zp4B,x ; CPU:$942E PRG:142E B5 4B
lsr a ; CPU:$9430 PRG:1430 4A
sta BytecodeHandlerPointerLo ; CPU:$9431 PRG:1431 85 1C
lda $0033,y ; CPU:$9433 PRG:1433 B9 33 00
lda a:$0033,y ; CPU:$9433 PRG:1433 B9 33 00
sec ; CPU:$9436 PRG:1436 38
sbc BytecodeHandlerPointerLo ; CPU:$9437 PRG:1437 E5 1C
bpl UpdateActorTileAlt_OnNonnegative_9441 ; CPU:$9439 PRG:1439 10 06
@@ -5614,10 +5614,10 @@ UpdateActorTileAlt_OnZero_947D:
; -----------------------------------------------------------------------------
UpdateActorTileAlt_JumpNext_9480:
jsr $94C8 ; CPU:$9480 PRG:1480 20 C8 94
lda $003A,y ; CPU:$9483 PRG:1483 B9 3A 00
lda a:$003A,y ; CPU:$9483 PRG:1483 B9 3A 00
clc ; CPU:$9486 PRG:1486 18
adc #$06 ; CPU:$9487 PRG:1487 69 06
sta $003A,y ; CPU:$9489 PRG:1489 99 3A 00
sta a:$003A,y ; CPU:$9489 PRG:1489 99 3A 00
jmp $9B25 ; CPU:$948C PRG:148C 4C 25 9B
; -----------------------------------------------------------------------------
; Routine: UpdateActorTileAlt_JumpNext_948F
@@ -5755,8 +5755,8 @@ ClearActorPosition:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
ClearActorFields:
sta $0033,y ; CPU:$94D7 PRG:14D7 99 33 00
sta $0034,y ; CPU:$94DA PRG:14DA 99 34 00
sta a:$0033,y ; CPU:$94D7 PRG:14D7 99 33 00
sta a:$0034,y ; CPU:$94DA PRG:14DA 99 34 00
lda Zp8A ; CPU:$94DD PRG:14DD A5 8A
beq ClearActorFields_JoinBranchPaths_94F3 ; CPU:$94DF PRG:14DF F0 12
inx ; CPU:$94E1 PRG:14E1 E8
@@ -5925,13 +5925,13 @@ SetActorFlag_OnNonzero_9551:
; -----------------------------------------------------------------------------
SetActorFlag_JumpNext_9559:
jsr $94C8 ; CPU:$9559 PRG:1559 20 C8 94
lda $003A,y ; CPU:$955C PRG:155C B9 3A 00
lda a:$003A,y ; CPU:$955C PRG:155C B9 3A 00
clc ; CPU:$955F PRG:155F 18
adc #$20 ; CPU:$9560 PRG:1560 69 20
pha ; CPU:$9562 PRG:1562 48
lda $003B,y ; CPU:$9563 PRG:1563 B9 3B 00
lda a:$003B,y ; CPU:$9563 PRG:1563 B9 3B 00
asl a ; CPU:$9566 PRG:1566 0A
lda $003C,y ; CPU:$9567 PRG:1567 B9 3C 00
lda a:$003C,y ; CPU:$9567 PRG:1567 B9 3C 00
rol a ; CPU:$956A PRG:156A 2A
sec ; CPU:$956B PRG:156B 38
sta Zp51 ; CPU:$956C PRG:156C 85 51
@@ -6112,7 +6112,7 @@ CompareActorToLimit_OnNonzero_95E3:
lda #$F1 ; CPU:$95F5 PRG:15F5 A9 F1
ldy #$45 ; CPU:$95F7 PRG:15F7 A0 45
jsr $9A24 ; CPU:$95F9 PRG:15F9 20 24 9A
lda $003A,y ; CPU:$95FC PRG:15FC B9 3A 00
lda a:$003A,y ; CPU:$95FC PRG:15FC B9 3A 00
clc ; CPU:$95FF PRG:15FF 18
adc #$08 ; CPU:$9600 PRG:1600 69 08
tay ; CPU:$9602 PRG:1602 A8
@@ -6145,7 +6145,7 @@ CompareActorToLimit_OnCarrySet_9628:
lda #$01 ; CPU:$9628 PRG:1628 A9 01
jsr $9653 ; CPU:$962A PRG:162A 20 53 96
ldy ActorSlotOffset ; CPU:$962D PRG:162D A4 21
lda $0033,y ; CPU:$962F PRG:162F B9 33 00
lda a:$0033,y ; CPU:$962F PRG:162F B9 33 00
cmp #$14 ; CPU:$9632 PRG:1632 C9 14
beq CompareActorToLimit_OnZero_9641 ; CPU:$9634 PRG:1634 F0 0B
bcs CompareActorToLimit_OnCarrySet_963C ; CPU:$9636 PRG:1636 B0 04
@@ -6172,7 +6172,7 @@ CompareActorToLimit_OnCarrySet_963C:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
CompareActorToLimit_OnNonnegative_963E:
sta $0033,y ; CPU:$963E PRG:163E 99 33 00
sta a:$0033,y ; CPU:$963E PRG:163E 99 33 00
; -----------------------------------------------------------------------------
; Routine: CompareActorToLimit_OnZero_9641
; Global: CompareActorToLimit_OnZero_9641.; no call site is visible in the static trace
@@ -6212,7 +6212,7 @@ CompareActorToLimit_JumpNext_9644:
SetActorTileFromPalette:
sta BytecodeHandlerPointerLo ; CPU:$9653 PRG:1653 85 1C
ldy ActorSlotOffset ; CPU:$9655 PRG:1655 A4 21
lda $003C,y ; CPU:$9657 PRG:1657 B9 3C 00
lda a:$003C,y ; CPU:$9657 PRG:1657 B9 3C 00
ldx Zp19 ; CPU:$965A PRG:165A A6 19
bne SetActorTileFromPalette_OnNonzero_9664 ; CPU:$965C PRG:165C D0 06
sec ; CPU:$965E PRG:165E 38
@@ -6240,7 +6240,7 @@ SetActorTileFromPalette_OnNonzero_9664:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
StoreActorTile:
sta $003C,y ; CPU:$9667 PRG:1667 99 3C 00
sta a:$003C,y ; CPU:$9667 PRG:1667 99 3C 00
ldx ActorIndex ; CPU:$966A PRG:166A A6 1E
rts ; CPU:$966C PRG:166C 60
; -----------------------------------------------------------------------------
@@ -6272,7 +6272,7 @@ StoreActorTile_OnNegative_9679:
lda Zp4B,x ; CPU:$967B PRG:167B B5 4B
lsr a ; CPU:$967D PRG:167D 4A
sta BytecodeHandlerPointerLo ; CPU:$967E PRG:167E 85 1C
lda $0033,y ; CPU:$9680 PRG:1680 B9 33 00
lda a:$0033,y ; CPU:$9680 PRG:1680 B9 33 00
sec ; CPU:$9683 PRG:1683 38
sbc BytecodeHandlerPointerLo ; CPU:$9684 PRG:1684 E5 1C
bpl StoreActorTile_OnNonnegative_968E ; CPU:$9686 PRG:1686 10 06
@@ -6318,7 +6318,7 @@ StoreActorTile_OnNonzero_969D:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
AdvanceActorCounter:
sta $0033,y ; CPU:$969E PRG:169E 99 33 00
sta a:$0033,y ; CPU:$969E PRG:169E 99 33 00
inc Zp4B,x ; CPU:$96A1 PRG:16A1 F6 4B
jmp $9B25 ; CPU:$96A3 PRG:16A3 4C 25 9B
; -----------------------------------------------------------------------------
@@ -6344,7 +6344,7 @@ AdvanceActorCounter_OnCarryClear_96A6:
; -----------------------------------------------------------------------------
SetActorTileValue:
lda #$FD ; CPU:$96AA PRG:16AA A9 FD
sta $0033,y ; CPU:$96AC PRG:16AC 99 33 00
sta a:$0033,y ; CPU:$96AC PRG:16AC 99 33 00
ldy #$44 ; CPU:$96AF PRG:16AF A0 44
lda #$F2 ; CPU:$96B1 PRG:16B1 A9 F2
; -----------------------------------------------------------------------------
@@ -6574,9 +6574,9 @@ MoveActorByStep:
lda #$FF ; CPU:$973A PRG:173A A9 FF
sta Zp5A,x ; CPU:$973C PRG:173C 95 5A
ldy ActorSlotOffset ; CPU:$973E PRG:173E A4 21
lda $003A,y ; CPU:$9740 PRG:1740 B9 3A 00
lda a:$003A,y ; CPU:$9740 PRG:1740 B9 3A 00
sec ; CPU:$9743 PRG:1743 38
sbc $0033,y ; CPU:$9744 PRG:1744 F9 33 00
sbc a:$0033,y ; CPU:$9744 PRG:1744 F9 33 00
clc ; CPU:$9747 PRG:1747 18
adc #$13 ; CPU:$9748 PRG:1748 69 13
tay ; CPU:$974A PRG:174A A8
@@ -6632,9 +6632,9 @@ MoveActorByStep_OnCarryClear_9766:
lda #$FF ; CPU:$9772 PRG:1772 A9 FF
sta Zp5A,x ; CPU:$9774 PRG:1774 95 5A
ldy ActorSlotOffset ; CPU:$9776 PRG:1776 A4 21
lda $003A,y ; CPU:$9778 PRG:1778 B9 3A 00
lda a:$003A,y ; CPU:$9778 PRG:1778 B9 3A 00
sec ; CPU:$977B PRG:177B 38
sbc $0033,y ; CPU:$977C PRG:177C F9 33 00
sbc a:$0033,y ; CPU:$977C PRG:177C F9 33 00
clc ; CPU:$977F PRG:177F 18
adc #$13 ; CPU:$9780 PRG:1780 69 13
tay ; CPU:$9782 PRG:1782 A8
@@ -6962,7 +6962,7 @@ TestActorValue_OnCarryClear_9875:
tya ; CPU:$9875 PRG:1875 98
pha ; CPU:$9876 PRG:1876 48
ldy ActorSlotOffset ; CPU:$9877 PRG:1877 A4 21
lda $003A,y ; CPU:$9879 PRG:1879 B9 3A 00
lda a:$003A,y ; CPU:$9879 PRG:1879 B9 3A 00
clc ; CPU:$987C PRG:187C 18
adc #$0C ; CPU:$987D PRG:187D 69 0C
tay ; CPU:$987F PRG:187F A8
@@ -7178,7 +7178,7 @@ UpdateActorTileFromIndexAlt:
cmp #$09 ; CPU:$9918 PRG:1918 C9 09
bcs UpdateActorTileFromIndexAlt_JoinBranchPaths_9948 ; CPU:$991A PRG:191A B0 2C
ldy ActorSlotOffset ; CPU:$991C PRG:191C A4 21
lda $003A,y ; CPU:$991E PRG:191E B9 3A 00
lda a:$003A,y ; CPU:$991E PRG:191E B9 3A 00
clc ; CPU:$9921 PRG:1921 18
adc #$0C ; CPU:$9922 PRG:1922 69 0C
tay ; CPU:$9924 PRG:1924 A8
@@ -7221,13 +7221,13 @@ UpdateActorTileFromIndexAlt_JumpNext_994B:
tya ; CPU:$994B PRG:194B 98
pha ; CPU:$994C PRG:194C 48
ldy ActorSlotOffset ; CPU:$994D PRG:194D A4 21
lda $0039,y ; CPU:$994F PRG:194F B9 39 00
lda a:$0039,y ; CPU:$994F PRG:194F B9 39 00
sta BytecodeHandlerPointerLo ; CPU:$9952 PRG:1952 85 1C
lda $003A,y ; CPU:$9954 PRG:1954 B9 3A 00
lda a:$003A,y ; CPU:$9954 PRG:1954 B9 3A 00
sta BytecodeHandlerPointerHi ; CPU:$9957 PRG:1957 85 1D
jsr $A4FF ; CPU:$9959 PRG:1959 20 FF A4
lda BytecodeHandlerPointerLo ; CPU:$995C PRG:195C A5 1C
sta $0039,y ; CPU:$995E PRG:195E 99 39 00
sta a:$0039,y ; CPU:$995E PRG:195E 99 39 00
ldx BytecodeHandlerPointerHi ; CPU:$9961 PRG:1961 A6 1D
dex ; CPU:$9963 PRG:1963 CA
stx PlayerPosXLo1,y ; CPU:$9964 PRG:1964 96 3A
@@ -7364,8 +7364,8 @@ SetSoundSequenceChannel2_JumpNext_99B7:
plp ; CPU:$99C9 PRG:19C9 28
ror a ; CPU:$99CA PRG:19CA 6A
clc ; CPU:$99CB PRG:19CB 18
adc $0033,y ; CPU:$99CC PRG:19CC 79 33 00
sta $0033,y ; CPU:$99CF PRG:19CF 99 33 00
adc a:$0033,y ; CPU:$99CC PRG:19CC 79 33 00
sta a:$0033,y ; CPU:$99CF PRG:19CF 99 33 00
bmi SetSoundSequenceChannel2_OnNegative_99D7 ; CPU:$99D2 PRG:19D2 30 03
jmp $9B25 ; CPU:$99D4 PRG:19D4 4C 25 9B
; -----------------------------------------------------------------------------
@@ -7570,7 +7570,7 @@ SpawnActorPairAlt:
sta SourcePointerHi ; CPU:$9A90 PRG:1A90 85 11
ldx ActorIndex ; CPU:$9A92 PRG:1A92 A6 1E
ldy PlayerPaletteIndex,x ; CPU:$9A94 PRG:1A94 B4 2A
lda $0026,y ; CPU:$9A96 PRG:1A96 B9 26 00
lda a:$0026,y ; CPU:$9A96 PRG:1A96 B9 26 00
jsr $8CB8 ; CPU:$9A99 PRG:1A99 20 B8 8C
lda ControllerDPad1,x ; CPU:$9A9C PRG:1A9C B5 F6
and #$01 ; CPU:$9A9E PRG:1A9E 29 01
@@ -7579,7 +7579,7 @@ SpawnActorPairAlt:
ror a ; CPU:$9AA2 PRG:1AA2 6A
sta Zp19 ; CPU:$9AA3 PRG:1AA3 85 19
ldy ActorSlotOffset ; CPU:$9AA5 PRG:1AA5 A4 21
lda $0034,y ; CPU:$9AA7 PRG:1AA7 B9 34 00
lda a:$0034,y ; CPU:$9AA7 PRG:1AA7 B9 34 00
and #$7F ; CPU:$9AAA PRG:1AAA 29 7F
bne SpawnActorPairAlt_OnNonzero_9AD8 ; CPU:$9AAC PRG:1AAC D0 2A
lda ControllerButtonMask,x ; CPU:$9AAE PRG:1AAE B5 F2
@@ -7720,10 +7720,10 @@ DispatchThroughPointer_JoinBranchPaths_9B08:
DispatchThroughPointer_OnNonzero_9B18:
ldy ActorSlotOffset ; CPU:$9B18 PRG:1B18 A4 21
clc ; CPU:$9B1A PRG:1B1A 18
adc $003C,y ; CPU:$9B1B PRG:1B1B 79 3C 00
sta $003C,y ; CPU:$9B1E PRG:1B1E 99 3C 00
adc a:$003C,y ; CPU:$9B1B PRG:1B1B 79 3C 00
sta a:$003C,y ; CPU:$9B1E PRG:1B1E 99 3C 00
pla ; CPU:$9B21 PRG:1B21 68
sta $0033,y ; CPU:$9B22 PRG:1B22 99 33 00
sta a:$0033,y ; CPU:$9B22 PRG:1B22 99 33 00
; -----------------------------------------------------------------------------
; Routine: RunBytecodeProgram
; Global: Main bytecode program loop: advance the program counter, dispatch the token, and resume.
@@ -7943,9 +7943,9 @@ RunBytecodeProgram_OnNonzero_9BDD:
; -----------------------------------------------------------------------------
RunBytecodeProgram_OnCarryClear_9BF3:
ldy ActorSlotOffset ; CPU:$9BF3 PRG:1BF3 A4 21
lda $0033,y ; CPU:$9BF5 PRG:1BF5 B9 33 00
lda a:$0033,y ; CPU:$9BF5 PRG:1BF5 B9 33 00
sta BytecodeHandlerPointerHi ; CPU:$9BF8 PRG:1BF8 85 1D
lda $0032,y ; CPU:$9BFA PRG:1BFA B9 32 00
lda a:$0032,y ; CPU:$9BFA PRG:1BFA B9 32 00
sec ; CPU:$9BFD PRG:1BFD 38
sbc #$10 ; CPU:$9BFE PRG:1BFE E9 10
sec ; CPU:$9C00 PRG:1C00 38
@@ -7954,7 +7954,7 @@ RunBytecodeProgram_OnCarryClear_9BF3:
clc ; CPU:$9C05 PRG:1C05 18
adc Zp5C,x ; CPU:$9C06 PRG:1C06 75 5C
sta VramBlockCountLo ; CPU:$9C08 PRG:1C08 85 14
lda $0031,y ; CPU:$9C0A PRG:1C0A B9 31 00
lda a:$0031,y ; CPU:$9C0A PRG:1C0A B9 31 00
sec ; CPU:$9C0D PRG:1C0D 38
sbc Zp5E,x ; CPU:$9C0E PRG:1C0E F5 5E
sta DestinationPointerHi ; CPU:$9C10 PRG:1C10 85 13
@@ -7966,11 +7966,11 @@ RunBytecodeProgram_OnCarryClear_9BF3:
sta Zp18 ; CPU:$9C18 PRG:1C18 85 18
lda #$02 ; CPU:$9C1A PRG:1C1A A9 02
sta Zp19 ; CPU:$9C1C PRG:1C1C 85 19
lda $0031,y ; CPU:$9C1E PRG:1C1E B9 31 00
lda a:$0031,y ; CPU:$9C1E PRG:1C1E B9 31 00
clc ; CPU:$9C21 PRG:1C21 18
adc #$1F ; CPU:$9C22 PRG:1C22 69 1F
tax ; CPU:$9C24 PRG:1C24 AA
lda $0033,y ; CPU:$9C25 PRG:1C25 B9 33 00
lda a:$0033,y ; CPU:$9C25 PRG:1C25 B9 33 00
beq RunBytecodeProgram_OnZero_9C2C ; CPU:$9C28 PRG:1C28 F0 02
bpl RunBytecodeProgram_OnNonnegative_9C2E ; CPU:$9C2A PRG:1C2A 10 02
; -----------------------------------------------------------------------------
@@ -8306,7 +8306,7 @@ ResetBytecodeState_OnNonzero_9D10:
ResetBytecodeState_OnZero_9D39:
sec ; CPU:$9D39 PRG:1D39 38
sbc #$04 ; CPU:$9D3A PRG:1D3A E9 04
sta $003C,y ; CPU:$9D3C PRG:1D3C 99 3C 00
sta a:$003C,y ; CPU:$9D3C PRG:1D3C 99 3C 00
clc ; CPU:$9D3F PRG:1D3F 18
adc #$08 ; CPU:$9D40 PRG:1D40 69 08
sta PlayerPosYLo1,x ; CPU:$9D42 PRG:1D42 95 3C
@@ -8336,8 +8336,8 @@ ResetBytecodeState_OnZero_9D4A:
; -----------------------------------------------------------------------------
CopyActorCoordinates:
ldy ActorSlotOffset ; CPU:$9D4E PRG:1D4E A4 21
lda $003A,y ; CPU:$9D50 PRG:1D50 B9 3A 00
sta $0031,y ; CPU:$9D53 PRG:1D53 99 31 00
lda a:$003A,y ; CPU:$9D50 PRG:1D50 B9 3A 00
sta a:$0031,y ; CPU:$9D53 PRG:1D53 99 31 00
ldx ActorIndex ; CPU:$9D56 PRG:1D56 A6 1E
lda PlayerActionState,x ; CPU:$9D58 PRG:1D58 B5 F0
cmp #$FF ; CPU:$9D5A PRG:1D5A C9 FF
@@ -8353,7 +8353,7 @@ CopyActorCoordinates:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
CopyActorCoordinates_OnCarryClear_9D61:
lda $003A,y ; CPU:$9D61 PRG:1D61 B9 3A 00
lda a:$003A,y ; CPU:$9D61 PRG:1D61 B9 3A 00
sec ; CPU:$9D64 PRG:1D64 38
sbc #$38 ; CPU:$9D65 PRG:1D65 E9 38
sta VramBlockCountLo ; CPU:$9D67 PRG:1D67 85 14
@@ -8369,15 +8369,15 @@ CopyActorCoordinates_OnCarryClear_9D61:
sbc Zp18 ; CPU:$9D7A PRG:1D7A E5 18
sta CollisionFlagBits ; CPU:$9D7C PRG:1D7C 85 15
ldy ActorSlotOffset ; CPU:$9D7E PRG:1D7E A4 21
lda $003C,y ; CPU:$9D80 PRG:1D80 B9 3C 00
lda a:$003C,y ; CPU:$9D80 PRG:1D80 B9 3C 00
cmp VramBlockCountLo ; CPU:$9D83 PRG:1D83 C5 14
bcs LoadActorTileIndex_OnCarrySet_9E02 ; CPU:$9D85 PRG:1D85 B0 7B
cmp CollisionFlagBits ; CPU:$9D87 PRG:1D87 C5 15
bcs LoadActorTileIndex ; CPU:$9D89 PRG:1D89 B0 5B
lda #$00 ; CPU:$9D8B PRG:1D8B A9 00
sta $003B,y ; CPU:$9D8D PRG:1D8D 99 3B 00
sta a:$003B,y ; CPU:$9D8D PRG:1D8D 99 3B 00
lda CollisionFlagBits ; CPU:$9D90 PRG:1D90 A5 15
sta $003C,y ; CPU:$9D92 PRG:1D92 99 3C 00
sta a:$003C,y ; CPU:$9D92 PRG:1D92 99 3C 00
ldx ActorIndex ; CPU:$9D95 PRG:1D95 A6 1E
lda PlayerActiveFlag,x ; CPU:$9D97 PRG:1D97 B5 78
bne CopyActorCoordinates_OnNonzero_9DA2 ; CPU:$9D99 PRG:1D99 D0 07
@@ -8429,7 +8429,7 @@ CopyActorCoordinates_OnNonzero_9DBB:
txa ; CPU:$9DBB PRG:1DBB 8A
asl a ; CPU:$9DBC PRG:1DBC 0A
tax ; CPU:$9DBD PRG:1DBD AA
lda $0031,y ; CPU:$9DBE PRG:1DBE B9 31 00
lda a:$0031,y ; CPU:$9DBE PRG:1DBE B9 31 00
ldy #$21 ; CPU:$9DC1 PRG:1DC1 A0 21
cmp #$5A ; CPU:$9DC3 PRG:1DC3 C9 5A
bcc CopyActorCoordinates_OnCarryClear_9DD0 ; CPU:$9DC5 PRG:1DC5 90 09
@@ -8490,20 +8490,20 @@ SetActorBounds:
; -----------------------------------------------------------------------------
LoadActorTileIndex:
ldy ActorSlotOffset ; CPU:$9DE6 PRG:1DE6 A4 21
lda $003B,y ; CPU:$9DE8 PRG:1DE8 B9 3B 00
lda a:$003B,y ; CPU:$9DE8 PRG:1DE8 B9 3B 00
asl a ; CPU:$9DEB PRG:1DEB 0A
lda $003C,y ; CPU:$9DEC PRG:1DEC B9 3C 00
lda a:$003C,y ; CPU:$9DEC PRG:1DEC B9 3C 00
rol a ; CPU:$9DEF PRG:1DEF 2A
pha ; CPU:$9DF0 PRG:1DF0 48
php ; CPU:$9DF1 PRG:1DF1 08
lda $0034,y ; CPU:$9DF2 PRG:1DF2 B9 34 00
lda a:$0034,y ; CPU:$9DF2 PRG:1DF2 B9 34 00
and #$7F ; CPU:$9DF5 PRG:1DF5 29 7F
rol a ; CPU:$9DF7 PRG:1DF7 2A
plp ; CPU:$9DF8 PRG:1DF8 28
ror a ; CPU:$9DF9 PRG:1DF9 6A
sta $0034,y ; CPU:$9DFA PRG:1DFA 99 34 00
sta a:$0034,y ; CPU:$9DFA PRG:1DFA 99 34 00
pla ; CPU:$9DFD PRG:1DFD 68
sta $0032,y ; CPU:$9DFE PRG:1DFE 99 32 00
sta a:$0032,y ; CPU:$9DFE PRG:1DFE 99 32 00
rts ; CPU:$9E01 PRG:1E01 60
; -----------------------------------------------------------------------------
; Routine: LoadActorTileIndex_OnCarrySet_9E02
@@ -8516,7 +8516,7 @@ LoadActorTileIndex:
; -----------------------------------------------------------------------------
LoadActorTileIndex_OnCarrySet_9E02:
lda #$FF ; CPU:$9E02 PRG:1E02 A9 FF
sta $003B,y ; CPU:$9E04 PRG:1E04 99 3B 00
sta a:$003B,y ; CPU:$9E04 PRG:1E04 99 3B 00
ldx VramBlockCountLo ; CPU:$9E07 PRG:1E07 A6 14
dex ; CPU:$9E09 PRG:1E09 CA
stx PlayerPosYLo1,y ; CPU:$9E0A PRG:1E0A 96 3C
@@ -8595,7 +8595,7 @@ LoadActorTileIndex_OnNonzero_9E50:
txa ; CPU:$9E50 PRG:1E50 8A
asl a ; CPU:$9E51 PRG:1E51 0A
tax ; CPU:$9E52 PRG:1E52 AA
lda $0031,y ; CPU:$9E53 PRG:1E53 B9 31 00
lda a:$0031,y ; CPU:$9E53 PRG:1E53 B9 31 00
ldy #$25 ; CPU:$9E56 PRG:1E56 A0 25
cmp #$5A ; CPU:$9E58 PRG:1E58 C9 5A
bcc LoadActorTileIndex_OnCarryClear_9E65 ; CPU:$9E5A PRG:1E5A 90 09
@@ -8692,7 +8692,7 @@ QueueNametableWrite_OnNonzero_9E87:
; -----------------------------------------------------------------------------
QueueNametableWrite_OnNonnegative_9E89:
lda (SourcePointerLo),y ; CPU:$9E89 PRG:1E89 B1 10
sta $0097,y ; CPU:$9E8B PRG:1E8B 99 97 00
sta a:$0097,y ; CPU:$9E8B PRG:1E8B 99 97 00
dey ; CPU:$9E8E PRG:1E8E 88
bpl QueueNametableWrite_OnNonnegative_9E89 ; CPU:$9E8F PRG:1E8F 10 F8
ldy #$00 ; CPU:$9E91 PRG:1E91 A0 00
@@ -9554,7 +9554,7 @@ RunActorScript_OnZero_A1C3:
eor #$01 ; CPU:$A1C5 PRG:21C5 49 01
sta Zp2C ; CPU:$A1C7 PRG:21C7 85 2C
tay ; CPU:$A1C9 PRG:21C9 A8
lda $0026,y ; CPU:$A1CA PRG:21CA B9 26 00
lda a:$0026,y ; CPU:$A1CA PRG:21CA B9 26 00
jsr $8CB8 ; CPU:$A1CD PRG:21CD 20 B8 8C
lda Zp16 ; CPU:$A1D0 PRG:21D0 A5 16
sta VramBlockCountLo ; CPU:$A1D2 PRG:21D2 85 14
@@ -9672,7 +9672,7 @@ RunActorScript_OnZero_A246:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
LoadActorConfigByte:
lda $0026,y ; CPU:$A250 PRG:2250 B9 26 00
lda a:$0026,y ; CPU:$A250 PRG:2250 B9 26 00
; -----------------------------------------------------------------------------
; Routine: ComputeActorConfigOffset
; Global: Compute the byte offset of an actor configuration record.
@@ -9843,7 +9843,7 @@ LoadActorConfigFields_OnZero_A2D8:
lda PlayerActionState,x ; CPU:$A2D8 PRG:22D8 B5 F0
cmp #$D0 ; CPU:$A2DA PRG:22DA C9 D0
bne LoadActorConfigFields_OnNonzero_A30B ; CPU:$A2DC PRG:22DC D0 2D
lda $003C,y ; CPU:$A2DE PRG:22DE B9 3C 00
lda a:$003C,y ; CPU:$A2DE PRG:22DE B9 3C 00
bmi LoadActorConfigFields_OnNegative_A2EB ; CPU:$A2E1 PRG:22E1 30 08
lda ControllerDPad1,x ; CPU:$A2E3 PRG:22E3 B5 F6
and #$FC ; CPU:$A2E5 PRG:22E5 29 FC
@@ -9875,7 +9875,7 @@ LoadActorConfigFields_OnNonzero_A2F1:
sta ControllerDPad1,x ; CPU:$A2F1 PRG:22F1 95 F6
sta ControllerFaceButtons1,x ; CPU:$A2F3 PRG:22F3 95 F8
jsr $A4FF ; CPU:$A2F5 PRG:22F5 20 FF A4
lda $0034,y ; CPU:$A2F8 PRG:22F8 B9 34 00
lda a:$0034,y ; CPU:$A2F8 PRG:22F8 B9 34 00
and #$7F ; CPU:$A2FB PRG:22FB 29 7F
cmp #$5E ; CPU:$A2FD PRG:22FD C9 5E
beq LoadActorConfigFields_OnZero_A305 ; CPU:$A2FF PRG:22FF F0 04
@@ -9984,16 +9984,16 @@ ReadActorConfigByte:
bne ReadActorConfigByte_JoinBranchPaths_A388 ; CPU:$A345 PRG:2345 D0 41
lda Zp84 ; CPU:$A347 PRG:2347 A5 84
bne ReadActorConfigByte_JoinBranchPaths_A388 ; CPU:$A349 PRG:2349 D0 3D
lda $003A,y ; CPU:$A34B PRG:234B B9 3A 00
lda a:$003A,y ; CPU:$A34B PRG:234B B9 3A 00
sec ; CPU:$A34E PRG:234E 38
sbc $0033,y ; CPU:$A34F PRG:234F F9 33 00
sbc a:$0033,y ; CPU:$A34F PRG:234F F9 33 00
clc ; CPU:$A352 PRG:2352 18
adc #$08 ; CPU:$A353 PRG:2353 69 08
sta $0210 ; CPU:$A355 PRG:2355 8D 10 02
clc ; CPU:$A358 PRG:2358 18
adc #$08 ; CPU:$A359 PRG:2359 69 08
sta $0214 ; CPU:$A35B PRG:235B 8D 14 02
lda $003C,y ; CPU:$A35E PRG:235E B9 3C 00
lda a:$003C,y ; CPU:$A35E PRG:235E B9 3C 00
asl a ; CPU:$A361 PRG:2361 0A
sta Zp85 ; CPU:$A362 PRG:2362 85 85
lda #$00 ; CPU:$A364 PRG:2364 A9 00
@@ -11647,7 +11647,7 @@ UpdateObjectAnimation:
adc #$08 ; CPU:$A970 PRG:2970 69 08
cmp #$10 ; CPU:$A972 PRG:2972 C9 10
bcs UpdateObjectAnimation_JoinBranchPaths_A991 ; CPU:$A974 PRG:2974 B0 1B
lda $004F,y ; CPU:$A976 PRG:2976 B9 4F 00
lda a:$004F,y ; CPU:$A976 PRG:2976 B9 4F 00
clc ; CPU:$A979 PRG:2979 18
adc #$14 ; CPU:$A97A PRG:297A 69 14
cmp #$64 ; CPU:$A97C PRG:297C C9 64
@@ -11663,11 +11663,11 @@ UpdateObjectAnimation:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
UpdateObjectAnimation_OnCarryClear_A982:
sta $004F,y ; CPU:$A982 PRG:2982 99 4F 00
sta a:$004F,y ; CPU:$A982 PRG:2982 99 4F 00
lda #$00 ; CPU:$A985 PRG:2985 A9 00
sta ScreenTransitionState ; CPU:$A987 PRG:2987 85 68
lda #$96 ; CPU:$A989 PRG:2989 A9 96
sta $0078,y ; CPU:$A98B PRG:298B 99 78 00
sta a:$0078,y ; CPU:$A98B PRG:298B 99 78 00
jsr $82ED ; CPU:$A98E PRG:298E 20 ED 82
; -----------------------------------------------------------------------------
; Routine: UpdateObjectAnimation_JoinBranchPaths_A991
@@ -11866,9 +11866,9 @@ BuildObjectList:
asl a ; CPU:$AA10 PRG:2A10 0A
asl a ; CPU:$AA11 PRG:2A11 0A
tay ; CPU:$AA12 PRG:2A12 A8
lda $003A,y ; CPU:$AA13 PRG:2A13 B9 3A 00
lda a:$003A,y ; CPU:$AA13 PRG:2A13 B9 3A 00
sec ; CPU:$AA16 PRG:2A16 38
sbc $0033,y ; CPU:$AA17 PRG:2A17 F9 33 00
sbc a:$0033,y ; CPU:$AA17 PRG:2A17 F9 33 00
sec ; CPU:$AA1A PRG:2A1A 38
sbc $0210 ; CPU:$AA1B PRG:2A1B ED 10 02
clc ; CPU:$AA1E PRG:2A1E 18
@@ -11880,7 +11880,7 @@ BuildObjectList:
lda Zp85 ; CPU:$AA28 PRG:2A28 A5 85
ror a ; CPU:$AA2A PRG:2A2A 6A
sec ; CPU:$AA2B PRG:2A2B 38
sbc $003C,y ; CPU:$AA2C PRG:2A2C F9 3C 00
sbc a:$003C,y ; CPU:$AA2C PRG:2A2C F9 3C 00
clc ; CPU:$AA2F PRG:2A2F 18
adc #$08 ; CPU:$AA30 PRG:2A30 69 08
cmp #$0C ; CPU:$AA32 PRG:2A32 C9 0C
@@ -11888,12 +11888,12 @@ BuildObjectList:
lda #$C0 ; CPU:$AA36 PRG:2A36 A9 C0
sta Zp84 ; CPU:$AA38 PRG:2A38 85 84
lda #$4B ; CPU:$AA3A PRG:2A3A A9 4B
sta $0034,y ; CPU:$AA3C PRG:2A3C 99 34 00
sta a:$0034,y ; CPU:$AA3C PRG:2A3C 99 34 00
lda #$FB ; CPU:$AA3F PRG:2A3F A9 FB
sta PlayerActionState,x ; CPU:$AA41 PRG:2A41 95 F0
jsr $A4FF ; CPU:$AA43 PRG:2A43 20 FF A4
lda #$4F ; CPU:$AA46 PRG:2A46 A9 4F
sta $0034,y ; CPU:$AA48 PRG:2A48 99 34 00
sta a:$0034,y ; CPU:$AA48 PRG:2A48 99 34 00
lda #$FA ; CPU:$AA4B PRG:2A4B A9 FA
sta PlayerActionState,x ; CPU:$AA4D PRG:2A4D 95 F0
lda #$00 ; CPU:$AA4F PRG:2A4F A9 00
@@ -12811,7 +12811,7 @@ ComputePlayerOverlapBits:
lda ScriptFlagsHi ; CPU:$AD4C PRG:2D4C A5 4E
beq ComputePlayerOverlapBits_JoinBranchPaths_AD7A ; CPU:$AD4E PRG:2D4E F0 2A
jsr $A4FF ; CPU:$AD50 PRG:2D50 20 FF A4
lda $0033,y ; CPU:$AD53 PRG:2D53 B9 33 00
lda a:$0033,y ; CPU:$AD53 PRG:2D53 B9 33 00
beq ComputePlayerOverlapBits_JoinBranchPaths_AD7A ; CPU:$AD56 PRG:2D56 F0 22
bmi ComputePlayerOverlapBits_JoinBranchPaths_AD7A ; CPU:$AD58 PRG:2D58 30 20
lda FrameCounterLo ; CPU:$AD5A PRG:2D5A A5 24
@@ -12820,7 +12820,7 @@ ComputePlayerOverlapBits:
bne ComputePlayerOverlapBits_JoinBranchPaths_AD7A ; CPU:$AD60 PRG:2D60 D0 18
ldx ActorIndex ; CPU:$AD62 PRG:2D62 A6 1E
ldy ActorSlotOffset ; CPU:$AD64 PRG:2D64 A4 21
lda $003A,y ; CPU:$AD66 PRG:2D66 B9 3A 00
lda a:$003A,y ; CPU:$AD66 PRG:2D66 B9 3A 00
cmp #$68 ; CPU:$AD69 PRG:2D69 C9 68
bcs ComputePlayerOverlapBits_OnCarrySet_AD71 ; CPU:$AD6B PRG:2D6B B0 04
lda #$04 ; CPU:$AD6D PRG:2D6D A9 04
@@ -12916,7 +12916,7 @@ ComputePlayerOverlapBits_JoinBranchPaths_AD94:
lda ScreenTransitionState ; CPU:$AD94 PRG:2D94 A5 68
beq ComputePlayerOverlapBits_JoinBranchPaths_ADC2 ; CPU:$AD96 PRG:2D96 F0 2A
bmi ComputePlayerOverlapBits_JoinBranchPaths_ADC2 ; CPU:$AD98 PRG:2D98 30 28
lda $003A,y ; CPU:$AD9A PRG:2D9A B9 3A 00
lda a:$003A,y ; CPU:$AD9A PRG:2D9A B9 3A 00
sec ; CPU:$AD9D PRG:2D9D 38
sbc PlayerBoxOriginX ; CPU:$AD9E PRG:2D9E E5 6E
clc ; CPU:$ADA0 PRG:2DA0 18
@@ -12958,7 +12958,7 @@ ComputePlayerOverlapBits_OnNonzero_ADAF:
; Clobbers: Not yet resolved.
; -----------------------------------------------------------------------------
ComputePlayerOverlapBits_OnCarryClear_ADB1:
lda $003C,y ; CPU:$ADB1 PRG:2DB1 B9 3C 00
lda a:$003C,y ; CPU:$ADB1 PRG:2DB1 B9 3C 00
sec ; CPU:$ADB4 PRG:2DB4 38
sbc PlayerBoxOriginY ; CPU:$ADB5 PRG:2DB5 E5 70
clc ; CPU:$ADB7 PRG:2DB7 18
@@ -12980,14 +12980,14 @@ ComputePlayerOverlapBits_JoinBranchPaths_ADC2:
lda FrameCounterLo ; CPU:$ADC2 PRG:2DC2 A5 24
and #$0F ; CPU:$ADC4 PRG:2DC4 29 0F
beq ComputePlayerOverlapBits_OnZero_AE16 ; CPU:$ADC6 PRG:2DC6 F0 4E
lda $003A,y ; CPU:$ADC8 PRG:2DC8 B9 3A 00
lda a:$003A,y ; CPU:$ADC8 PRG:2DC8 B9 3A 00
sta SourcePointerLo ; CPU:$ADCB PRG:2DCB 85 10
lda $003C,y ; CPU:$ADCD PRG:2DCD B9 3C 00
lda a:$003C,y ; CPU:$ADCD PRG:2DCD B9 3C 00
sta DestinationPointerLo ; CPU:$ADD0 PRG:2DD0 85 12
jsr $A4FF ; CPU:$ADD2 PRG:2DD2 20 FF A4
lda $003A,y ; CPU:$ADD5 PRG:2DD5 B9 3A 00
lda a:$003A,y ; CPU:$ADD5 PRG:2DD5 B9 3A 00
sta SourcePointerHi ; CPU:$ADD8 PRG:2DD8 85 11
lda $003C,y ; CPU:$ADDA PRG:2DDA B9 3C 00
lda a:$003C,y ; CPU:$ADDA PRG:2DDA B9 3C 00
sta DestinationPointerHi ; CPU:$ADDD PRG:2DDD 85 13
lda SourcePointerLo ; CPU:$ADDF PRG:2DDF A5 10
sec ; CPU:$ADE1 PRG:2DE1 38
+1 -1
View File
@@ -43,7 +43,7 @@ This document provides a consolidated overview of all NES disassembly projects i
| 33 | `Pyramid (U)` | USA | 16 KB | 8 KB | Vertical | PRG-IDENTICAL (Pass 1 done) | $D72E / $FF00 / $FF00 |
| 34 | `Raid on Bungeling Bay (U)` | USA | 16 KB | 8 KB | Vertical | PRG-IDENTICAL (Pass 0 skeleton) | $C04C / $C000 / $C2C0 |
| 35 | `Raid on Bungeling Bay (U) [a2]` | — | 16 KB | 8 KB | Horizontal | PRG-IDENTICAL (Pass 0 skeleton) | $C04C / $C000 / $C2C0 |
| 36 | `Urban Champion (JU)` | Japan | 16 KB | 8 KB | Vertical | PRG-IDENTICAL (Pass 0 skeleton) | $CA91 / $CA00 / $CA00 |
| 36 | `Urban Champion (JU)` | Japan | 16 KB | 8 KB | Vertical | **PRG-IDENTICAL (Pass 2 complete, 33.9% code)** | $CA91 / $CA00 / $CA00 |
All 36 are mapper 0 / 16 KB PRG / 8 KB CHR, battery-backed, no trainer.
+1 -1
View File
@@ -1,4 +1,4 @@
CIRCUS disassembly project.
Pinball disassembly project.
you will disassemble a NES rom. I will provide you with the skeleton project as a tar.gz file renamed to txt. build the byte identical rom. once you have completed a first pass to identify the code vs the data blocks, stop and provide me with the code. The goal is a byte-identical disassembly. Identify code and data sections. After the first pass, take a second pass and replace the known labels. Pass a third time to better identify use of code and data tables naming more appropriately.
with code blocks that are generated, each method will have a local and global description, the parameters and the return value(s). for each instruction, include a comment at the end of the line with the offset followed by the actual bytes that are expected to be encoded. during building the byte exact source, include the remaining incbin line so we can cycle through builds quickly and efficently.
+2 -1
View File
@@ -260,7 +260,8 @@ def main():
if not (body[i] & 3) or tgt[i] == k:
tgt[i] = k
else:
conflicts.append(f'${BASE+i:04X}: CDL says {tgt[i]}, override says {k}')
conflicts.append(f'${BASE+i:04X}: CDL says {tgt[i]}, override says {k} (override wins)')
tgt[i] = k # override always wins when explicitly specified
# ---- region derivation ----
def merge(iv):
+5 -4
View File
@@ -216,7 +216,8 @@ def render(prg, base, opcode, pc):
elif mode == ABSY:
insn.text = f"{'a:' if b2 == 0 else ''}{hex16(b1 | (b2 << 8))},y"
elif mode == IND:
insn.text = f"({'a:' if b2 == 0 else ''}{hex16(b1 | (b2 << 8))})"
# IND (jmp ($xxxx)) has no zero-page variant, so no 'a:' prefix needed
insn.text = f"({hex16(b1 | (b2 << 8))})"
elif mode == INDX:
insn.text = f"(Zp{b1:02X},x)"
elif mode == INDY:
@@ -266,21 +267,21 @@ def trace(prg, base, seeds):
targets.add(t)
queue.append(t)
elif insn.mnemonic == "jsr":
t = int(insn.text[1:], 16)
t = int(insn.text.replace("a:", "")[1:], 16)
insn.jsr_target = t
if base <= t < base + len(prg):
targets.add(t)
queue.append(t)
elif insn.mnemonic == "jmp":
if insn.mode == ABS:
t = int(insn.text[1:], 16)
t = int(insn.text.replace("a:", "")[1:], 16)
insn.jsr_target = t
if base <= t < base + len(prg):
targets.add(t)
queue.append(t)
break # unconditional: no fall-through
else:
ptr = int(insn.text.strip("()")[1:], 16)
ptr = int(insn.text.strip("()").replace("a:", "")[1:], 16)
indirect.append((base + cur, ptr))
if base <= ptr < base + len(prg) - 1:
t = prg[ptr - base] | (prg[ptr - base + 1] << 8)
+63 -10
View File
@@ -1,6 +1,6 @@
# Urban Champion (JU) — Skeleton Project
# Urban Champion (JU) — Pass 2 Complete
ROM: `_wip/Urban Champion (JU)/Urban Champion (JU).nes` (24,592 bytes, iNES). Status: **SKELETON — not yet disassembled.** The entire 16 KB PRG bank is a single unclassified block; `copilot/prg.s` is the default-project skeleton (`default_project.tar.gz`) that reproduces it as one `.incbin`. The skeleton build is **byte-identical** at the PRG level.
ROM: `_wip/Urban Champion (JU)/Urban Champion (JU).nes` (24,592 bytes, iNES). Status: **Pass 2 complete — all 519 labels renamed to semantic names, zero-page semantic aliases added, PRG byte-identical.** `copilot/prg.s` contains a classified disassembly with per-instruction audit comments (`; CPU:$xxxx PRG:xxxx AA BB`), unreached bytes emitted as explicit `.byte` blocks with provenance. The build is **BYTE-IDENTICAL** at the PRG level (33.9% code / 5,546 bytes, 66.1% data / 10,838 bytes).
## ROM Facts
@@ -10,7 +10,7 @@ ROM: `_wip/Urban Champion (JU)/Urban Champion (JU).nes` (24,592 bytes, iNES). St
| Mapper | 0 (NROM) — from the iNES header |
| PRG | 16 KB (header claims map at CPU $C000–$FFFF) |
| CHR | 8 KB |
| Mirroring | Horizontal |
| Mirroring | Vertical |
| Battery-backed flag | clear |
| ROM SHA-256 | `3ec5ac8db623dae34a0f4a4909f0af4569b2af0cee6c56bae512c87b7cff8749` |
| PRG SHA-256 | `13e7f2a77b01784a479895c0535357978af32f5139d971edf5f5b1936585357e` |
@@ -29,14 +29,14 @@ ROM: `_wip/Urban Champion (JU)/Urban Champion (JU).nes` (24,592 bytes, iNES). St
|------|---------|
| `Urban Champion (JU).nes` | original ROM image (reference) |
| `prg.bin` / `header.bin` / `chr.bin` | split image, produced by `_tools/splitnes.py` |
| `prg.s` | Pass-1 skeleton: `.incbin "prg.bin", $0000, $4000` (whole PRG) |
| `prg.s` | Pass 1: classified code/data split, 2,716 instructions, 436 labels, audit comments on every emission; Pass 2: all 519 labels renamed to semantic names |
| `symbols.inc` | shared NES hardware constants (PPU/APU/controller, from the skeleton) |
| `locals.inc` | project-local zero-page aliases — empty for now (filled in Pass 2) |
| `locals.inc` | 153 zero-page aliases + 10 semantic aliases (Pass 2) |
| `linker.cfg` | PRG at $C000, 16 KB, `fill = yes` |
| `Makefile` | links `reconstructed_prg.bin` and `cmp`s it against `prg.bin` |
| `reconstructed_prg.bin` | build output from the last verified build |
Header/CHR are reproduced verbatim from `header.bin`/`chr.bin` (not linked): `make` verifies **PRG bytes only** at this stage, which is exactly what a skeleton proves. When this project is promoted to a full disassembly, `header.s` / `chr.s` (as e.g. `Burger Time (U)`) and a full-ROM `make` target get added.
Header/CHR are reproduced verbatim from `header.bin`/`chr.bin` (not linked): `make` verifies **PRG bytes only** at this stage. When this project is promoted to a full disassembly, `header.s` / `chr.s` (as e.g. `Burger Time (U)`) and a full-ROM `make` target get added.
## Build
@@ -45,9 +45,62 @@ cd "_wip/Urban Champion (JU)/copilot"
make # → cmp reconstructed_prg.bin prg.bin → "BYTE-IDENTICAL"
```
## Pass 1 Details
- **Tracer seeds**: RESET ($CA00), NMI ($CA91), plus `--auto-seed` recovered 34 table-referenced routines.
- **Forced data override**: `$CB70+$3C` (a cascade of `bne` instructions that are actually a branch table/data, not code). The fall-through through this region was incorrectly classified as code; forced to data with `--data 0xCB70:60`.
- **Overlaps**: 6 overlap regions remain (e.g. `$CB8F` `lsr` overlaps `$CB91`), all in the forced-data region — the conflicting decodes are suppressed in the output.
- **Invalid opcodes**: 7 addresses reached via static trace but decoding invalid opcodes (`$C658`, `$CAF9`, `$CB4D`, `$CC61`, `$D21B`, `$DBCE`, `$DE24`). These are marked `.byte` with the invalid opcode in the audit comment.
- **Indirect jumps**: 3 `jmp ($xxxx)` sites at `$CDFB` (`$0014`), `$C318` (`$00EB`), `$C332` (`$00ED`) — targets not statically resolvable.
- **Zero-page aliases**: 153 entries in `locals.inc` (auto-generated by tracer).
## Next Steps (per `PROMPTS.md`)
1. **Pass 1** — replace the blanket `.incbin` with classified code/data: trace reachability from RESET ($CA00) and NMI ($CA91), emit per-instruction `; PRG:$xxxx AA BB` annotations, keep unreached bytes as explicit `.byte` blocks.
2. **Pass 2** — replace `Label_`/`Sub_` names with semantic routine names; fill `locals.inc`.
3. **Pass 3** — name data tables/structures; release provisional flags.
4. **Promotion** — move to a top-level `<name>/copilot/` folder, add full-ROM build (header.s + chr.s + vectors), and write the power-on flow `OVERVIEW.md` in the established style; then it joins the root index's numbered inventory.
1. **Pass 3** — name data tables/structures; release provisional flags.
2. **Promotion** — move to a top-level `<name>/copilot/` folder, add full-ROM build (header.s + chr.s + vectors), and write the power-on flow `OVERVIEW.md` in the established style; then it joins the root index's numbered inventory.
## Pass 2 Details (2026-10-18)
- **Label renaming**: **All 519 labels renamed** to semantic names using `pass2.py apply` with a mapping file (`label_map.tsv`). Key renamed routines:
- RESET/NMI: `Reset`, `NmiHandler`
- System init: `InitSystem`, `WaitPPUReady`, `InitStack`, `LoadGameConfig`, `InitVariables`, `SetupInitialState`
- RAM clearing: `ClearRAM`, `ClearRAMLoop`
- APU init: `InitAPU`, `ClearControllerState`, `InitAPURegisters`, `SetAPUVolume`, `SetAPUSweep`, `InitAPUWaveform`
- Controller: `UpdateControllerState`, `CheckControllerStart`, `ProcessControllerInput`
- Game loop: `MainGameLoop`, `TitleScreenLoop`, `GameModeDispatcher`, `GameplayFrame`, `CheckRoundEnd`, `UpdateRoundTimer`
- NMI: `NmiHandler`, `NmiFrameUpdate`, `NmiVBlankOnly`, `NmiExit`, `UpdateScroll`
- Sprites: `InitSprites`, `SpriteDMA`
- Players: `UpdatePlayers`, `HandlePlayer1`, `HandlePlayer2`, `UpdatePlayerPositions`
- Collision: `CheckCollisions`
- Sound: `InitSound`, `PlaySoundEffect`, `UpdateMusic`
- **Zero-page semantic aliases**: 10 aliases added to `locals.inc` (see `locals.inc` header for full list):
- Controller: `Joy1State` ($F3), `Joy2State` ($EF), `Joy1DPad` ($F6), `Joy2DPad` ($F7)
- Game state: `GameMode` ($24), `RoundIndex` ($26), `DispatchIndex` ($C0)
- Player arrays: `PlayerState` ($16), `PlayerInput` ($25), `PlayerData` ($2A)
- Pointers: `TempPtrLo` ($00), `TempPtrHi` ($01)
- **No `Label_` entries remain** — all 519 labels have semantic names.
## Mesen CDL Verification (2026-10-18)
A Code Data Logger capture was taken during gameplay (~15 seconds, all buttons pressed). Key findings vs. static trace:
| Static Trace | CDL (Gameplay) | Disposition |
|--------------|----------------|-------------|
| `$C006-$C025` (32 B data) | **CODE** | Missed init routine — convert to code in Pass 2 |
| `$C032-$C04D` (28 B data) | **CODE** | Missed init routine — convert to code in Pass 2 |
| `$C22F-$C24C` (30 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| `$C26A-$C287` (30 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| `$C2A8-$C2DD` (54 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| `$C2F9-$C30B` (19 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| `$CFC3-$D011` (79 B data) | **CODE** | Large missed routine — convert to code in Pass 2 |
| `$D09D-$D173` (215 B data) | **CODE** | Large missed routine — convert to code in Pass 2 |
| `$D469-$D7DA` (882 B data) | **CODE** | Very large missed routine — convert to code in Pass 2 |
| `$DBFD-$DCF5` (249 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| `$DE21-$DEC8` (168 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| `$DED8-$DF4B` (116 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| `$E11D-$E1CC` (176 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| `$E350-$E40D` (190 B data) | **CODE** | Missed routine — convert to code in Pass 2 |
| **`$CB70-$CB90` (data)** | **DATA** | Confirmed: branch offsets, never executed as opcodes |
| **`$CB91-$CBAC` (data)** | **CODE** (jump target + linear) | **Critical**: `jmp $CB91` at `$CADE` enters here; executes linearly as a branch table. Current static trace has entire `$CB70-$CBAC` as one data block with dead branch-target labels inside. Pass 2 must split: `$CB70-$CB90` = data (branch offsets), `$CB91-$CBAC` = code (real branch table entered via `jmp $CB91`). |
CDL coverage: 28.2% code (4,614 bytes) vs static trace 33.9% (5,546 bytes). The static trace over-reaches via fall-through into the branch cascade; the CDL confirms the cascade is dead (branch at `$CB6E` always taken to `$CB4E`), but reveals `$CB91-$CBAC` is live code entered via the `jmp` at `$CADE`.
@@ -0,0 +1,520 @@
label Label_C000 InitAPU_C000
label Label_C003 CheckControllerStart
label Label_C026 ScaleInputIndex
label Label_C04E SetAPUVolume
label Label_C056 SetAPUSweep
label Label_C058 InitAPUWaveform
label Label_C05E SaveXY
label Label_C063 InitSoundPointers
label Label_C06E UpdateControllerState
label Label_C087 InitControllerTables
label Label_C0A0 InitControllerTablesLoop
label Label_C0AE InitControllerTablesAlt
label Label_C0B1 InitControllerTablesExit
label Label_C0CF InitPPU
label Label_C0E0 InitPPULoop
label Label_C0F1 InitAPUFrameCounter
label Label_C0F8 InitAPUFrameCounterExit
label Label_C0FC InitPPUFinal
label Label_C18D LoadBackgroundData
label Label_C195 LoadBackgroundDataLoop
label Label_C199 LoadBackgroundDataAlt
label Label_C19B LoadBackgroundDataExit
label Label_C1A7 SetupSpriteData
label Label_C1B2 SetupSpriteDataLoop
label Label_C20F CopySpriteTables
label Label_C22C CopySpriteTablesLoop
label Label_C24D WaitVBlank
label Label_C288 WaitVBlankLoop
label Label_C2A5 InitGameVariables
label Label_C2DE ClearRAM
label Label_C30C ClearRAMPage
label Label_C30D ClearRAMPageLoop
label Label_C31B InitGameState
label Label_C327 InitGameStateExit
label Label_C332 InitAPUCall
label Label_C335 InitAPU
label Label_C352 ClearControllerState
label Label_C358 InitAPURegisters
label Label_C376 InitSpritesAlt1
label Label_C37D InitSpritesAlt2
label Label_C384 InitSpritesMain
label Label_C3A0 InitSpritesLoop
label Label_C3B3 InitSpritesExit_C3B3
label Label_C3C8 InitSpritesAlt3
label Label_C3E0 InitSpritesAlt4
label Label_C3F5 InitSpritesAlt5
label Label_C408 InitSpritesAlt6
label Label_C41E InitSpritesAlt7
label Label_C425 InitSpritesAlt8
label Label_C438 InitSpritesAlt9
label Label_C44E InitSpritesAlt10
label Label_C465 InitGameState2
label Label_C48A InitGameState2Exit
label Label_C508 InitGameState3
label Label_C533 InitGameState3Exit
label Label_C5D1 InitGameState4
label Label_C5FC InitGameState4Exit
label Label_C66E Reset
label Label_C66F ResetEntry
label Label_C69E InitSystem
label Label_CA02 WaitPPUReady
label Label_CA07 WaitPPUReadyLoop
label Label_CA0F InitStack
label Label_CA11 LoadGameConfig
label Label_CA14 InitVariables
label Label_CA17 SetupInitialState
label Label_CA19 SetupRAMPointer
label Label_CA1D ClearRAMStart
label Label_CA1F ClearRAMByte
label Label_CA21 ClearRAMLoop
label Label_CA2F StoreConfig
label Label_CA32 CallInitRoutines
label Label_CA35 CallInitRoutines2
label Label_CA38 SetupScroll
label Label_CA3A SetupScroll2
label Label_CA40 SetupGameMode
label Label_CA42 SetGameMode1
label Label_CA44 SetZpA5
label Label_CA46 InitAPURegisters2
label Label_CA48 InitAPURegisters2Exit
label Label_CA4B CallCheckControllerStart
label Label_CA4E CallE7EF
label Label_CA51 SetupPPUCtrl
label Label_CA53 SetupPPUCtrlExit
label Label_CA56 SetZp08
label Label_CA58 SetZp09
label Label_CA5C SetupX
label Label_CA5E CopyConfigData
label Label_CA69 TitleScreenLoop
label Label_CA6D CheckGameMode
label Label_CA6F CheckRoundIndex
label Label_CA73 CallInitAPU
label Label_CA76 GameplayFrame
label Label_CA87 MainGameLoop
label Label_CA8B CallCheckRoundEnd
label Label_CA8E MainGameLoopJump
label Label_CA91 NmiHandler
label Label_CA9B NmiFrameUpdate
label Label_CAA5 NmiVBlankOnly_CAA5
label Label_CAAC NmiFrameUpdate2
label Label_CAAF NmiFrameUpdate3
label Label_CAB2 NmiFrameUpdate4
label Label_CAB5 NmiExit
label Label_CAC2 NmiVBlankOnly_CAC2
label Label_CADA UpdateScroll
label Label_CBE2 InitSprites
label Label_CBF7 InitSpritesAlt
label Label_CC0B InitSpritesExit
label Label_CC46 UpdateSprites
label Label_CC61 UpdateSpritesExit
label Label_CC67 UpdateOAM_CC67
label Label_CC77 UpdateOAMExit
label Label_CC85 UpdateOAM_CC85
label Label_CC95 UpdateOAMExit2
label Label_CCAF UpdatePalettes
label Label_CCC6 UpdatePalettes2
label Label_CCCB UpdatePalettesExit
label Label_CCCE UpdatePalettesLoop
label Label_CCD0 UpdatePlayers
label Label_CCDA UpdatePlayersExit
label Label_CDE0 ProcessControllerInput
label Label_CE43 ScrollBackground
label Label_CE8B ScrollBackgroundExit
label Label_CF92 UpdateSpritePositions
label Label_CFA1 CheckRoundEnd
label Label_CFAB CheckRoundEndExit
label Label_CFC3 HandleKO
label Label_CFD3 HandleKOExit
label Label_CFE5 HandleTimeout
label Label_CFF8 HandleTimeoutExit
label Label_D01A UpdateRoundTimerInit
label Label_D027 UpdateRoundTimerInitExit
label Label_D057 UpdateRoundTimer
label Label_D08E SpriteDMA
label Label_D09D DrawBackground
label Label_D174 UpdatePPUMask
label Label_D187 UpdatePPUMaskExit
label Label_D1A7 UpdatePPUMaskAlt
label Label_D1C6 UpdatePPUMaskLoop
label Label_D216 UpdateHUD
label Label_D2E2 UpdateHUDExit
label Label_D30A UpdateScore
label Label_D3FA UpdateScoreLoop
label Label_D40E UpdateScoreExit
label Label_D469 DrawRoundNumber
label Label_D5D1 DrawRoundNumberExit
label Label_D7DB UpdatePlayerPositions
label Label_D80C UpdatePlayerPositionsExit
label Label_DAA7 CheckCollisions
label Label_DADD CheckCollisionsExit
label Label_DBCB UpdateTimers
label Label_DBDC UpdateTimersExit
label Label_DBFD ProcessInputs
label Label_DE03 ProcessInputsExit
label Label_DE24 ProcessInputsAlt
label Label_DE2E ProcessInputsAltExit
label Label_DEC9 UpdateRoundState
label Label_DEE3 UpdateRoundStateExit
label Label_DF4C UpdateRoundStateAlt
label Label_DF5E UpdateRoundStateAltExit
label Label_E00F HandlePlayer1
label Label_E02B HandlePlayer1Exit
label Label_E048 HandlePlayer2
label Label_E064 HandlePlayer2Exit
label Label_E076 HandlePlayer1Alt
label Label_E08D HandlePlayer1Entry
label Label_E11D HandlePlayer2Entry
label Label_E223 HandlePlayer1Logic
label Label_E2B9 HandlePlayer2Logic
label Label_E2C9 HandlePlayerLogicExit
label Label_E350 HandleGameOver
label Label_E3B2 HandleGameOverExit
label Label_E3E0 HandleRoundStart
label Label_E40E HandleRoundStartExit
label Label_E459 UpdateSound
label Label_E48B UpdateSoundExit
label Label_E4A4 UpdateSoundAlt
label Label_E4E2 UpdateSoundAltExit
label Label_E506 PlaySoundEffect
label Label_E535 PlaySoundEffectExit
label Label_E54A PlaySoundEffectAlt
label Label_E5B2 UpdateMusic
label Label_E617 UpdateMusicExit
label Label_E61B UpdateMusicAlt
label Label_E6D4 UpdateMusicLoop
label Label_E6FA UpdateMusicLoopExit
label Label_E793 InitSpriteData
label Label_E7B6 InitSpriteDataExit
label Label_E7EF InitSound
label Label_E7FE InitSoundExit
label Label_C39A InitSpritesLoop
label Label_C3AD InitSpritesAltExit
label Label_C3C3 InitSpritesCheckE6
label Label_C3E3 InitSpritesSetE4
label Label_C3E9 InitSpritesSetE6
label Label_C3FF InitSpritesCallChain
label Label_C405 InitSpritesClearEF
label Label_C40E InitSpritesCheckF1
label Label_C40F InitSpritesSetF3
label Label_C444 InitSpritesCheckF2
label Label_C44A InitSpritesSetF2
label Label_C478 InitSpritesAlt1Entry
label Label_C49C InitSpritesAlt1Loop
label Label_C4A4 InitSpritesAlt2Entry
label Label_C4A5 InitSpritesAlt2Loop
label Label_C4BB InitSpritesCheck10B
label Label_C4C3 InitSpritesInc10B
label Label_C4CA InitSpritesCheck10BMax
label Label_C4E3 InitSpritesCheck10C
label Label_C4E6 InitSpritesCheck10CAF
label Label_C4F4 InitSpritesSetF4
label Label_C512 InitGameState3CheckE6
label Label_C520 InitGameState3Loop
label Label_C52D InitGameState3Alt
label Label_C542 InitGameState4CheckF2
label Label_C55A InitGameState4Loop
label Label_C590 InitGameState4ClearEF
label Label_C593 InitGameState4MaskF3
label Label_C5A4 InitGameState4MaskEF
label Label_C5AB InitGameState4CheckF9
label Label_C5C5 InitGameState4DecD8
label Label_C5CA InitGameState4CheckF2Alt
label Label_C5F5 WaitVBlankLoop_C5F5
label Label_C5F6 WaitVBlankDecD8
label Label_C5F9 WaitVBlankDecD9
label Label_C5FF WaitVBlankCheckFF
label Label_C605 WaitVBlankCheckFA
label Label_C60B WaitVBlankStore
label Label_C622 WaitVBlankCallC1B2
label Label_C637 WaitVBlankCallC1B2Alt
label Label_C63D WaitVBlankCallC1B2Alt2
label Label_C644 WaitVBlankJmpC20F
label Label_C647 WaitVBlankZeroE4
label Label_C64E WaitVBlankCallC1B2Zero
label Label_CAE1 TitleScreenCheckMode
label Label_CB06 CheckControllerStartEntry
label Label_CB0F CheckControllerStartLoop
label Label_CB31 CheckControllerStartExit
label Label_CB4B CheckControllerStartWait
label Label_CB4E CheckControllerStartJmp
label Label_CB51 GameplayFrameCallD012
label Label_CB55 GameplayFrameCallE70C
label Label_CB61 TitleScreenLoopCallInitAPU
label Label_CB66 UpdateScrollEntry
label Label_CBB6 InitSpritesSetPos
label Label_CBC0 InitSpritesZero5FF
label Label_CBDA UpdateScrollLogic
label Label_CBFB InitSpritesBeqCBFB
label Label_CC02 UpdateScrollCheckZp1F
label Label_CC15 InitSpritesIncY
label Label_CC1B InitSpritesCpy02
label Label_CC24 InitSpritesSet5FD
label Label_CC29 UpdateScrollReadDispatch
label Label_CC3A UpdateScrollCheckDispatch
label Label_CC3E UpdateScrollReadZpA4
label Label_CC42 UpdateScrollCheckDispatchAlt
label Label_CC5C UpdateScrollCheckZpA4
label Label_CC6E UpdateOAMSetPointer
label Label_CC7B UpdateOAMClear200
label Label_CC97 UpdateOAMCheckZp23
label Label_CCAE UpdateOAMDecrement
label Label_CCC3 UpdateOAMCheckZp27
label Label_CCCF UpdateOAMZeroY
label Label_CCE3 UpdatePalettesCheckZp27
label Label_CCF3 UpdatePalettesZeroY
label Label_CCFB ProcessControllerInputLoop
label Label_CCFD ProcessControllerInputStore
label Label_CD22 RoundLogicCheckZp21
label Label_CD33 RoundLogicBeqCD84
label Label_CD38 RoundLogicSet21
label Label_CD41 ProcessControllerInputEntry
label Label_CD5D ProcessControllerInputRead2002
label Label_CD6C ProcessControllerInputAndFB
label Label_CD76 ProcessControllerInputStaZp08
label Label_CD84 ProcessControllerInputRead2002Alt
label Label_CD85 ProcessControllerInputRead2002Alt2
label Label_CD94 ProcessControllerInputAnd04
label Label_CDAA ProcessControllerInputOra18
label Label_CDC3 ProcessControllerInputStaZp09
label Label_CDCA RoundLogicEntry
label Label_CDD6 RoundLogicDecZp2A
label Label_CDDC RoundLogicBplCDD6
label Label_CDFE RoundLogicSaveXY
label Label_CE14 ScrollBackgroundEntry
label Label_CE20 ScrollBackgroundIncX
label Label_CE23 ScrollBackgroundTXA_CE23
label Label_CE26 ScrollBackgroundCmp6F_CE26
label Label_CE3A ScrollBackgroundRead2002
label Label_CE55 ScrollBackgroundSetZp21
label Label_CE6C ScrollBackgroundLoop
label Label_CE83 ScrollBackgroundInx
label Label_CEAD ScrollBackgroundTXA_CEAD
label Label_CEBD ScrollBackgroundCmp6F_CEBD
label Label_CEBE ScrollBackgroundAdc01
label Label_CEC5 ScrollBackgroundAnd0F
label Label_CECE ScrollBackgroundStaZp01
label Label_CEF1 ScrollBackgroundAdcZp01_CEF1
label Label_CEF5 ScrollBackgroundCmp0A_CEF5
label Label_CF23 ScrollBackgroundSbcZp01_CF23
label Label_CF25 ScrollBackgroundStaZp01Alt
label Label_CF4E ScrollBackgroundCallCF92
label Label_CF4F ScrollBackgroundCallCF92Entry
label Label_CF5A ScrollBackgroundAdcZp01_CF5A
label Label_CF67 ScrollBackgroundCmp0A_CF67
label Label_CF6B ScrollBackgroundSbcZp01_CF6B
label Label_CF70 ScrollBackgroundCallCF92Alt
label Label_CF83 ScrollBackgroundCallCF92Alt2
label Label_CF8F ScrollBackgroundStaZp01Alt2
label Label_CFB3 CheckRoundEndEntry
label Label_D012 UpdateRoundTimerCallD057
label Label_D015 UpdateRoundTimerBeq
label Label_D030 DrawBackgroundEntry
label Label_D034 DrawBackgroundSetZpA2
label Label_D040 DrawBackgroundSetZpA2Alt
label Label_D044 DrawBackgroundLdx0
label Label_D050 UpdateRoundTimerInitSetPtr
label Label_D05E UpdateRoundTimerInitSetZp09
label Label_D066 UpdateRoundTimerInitCallCE3A
label Label_D07A SetupInitialStateEntry
label Label_D07E SetupInitialStateLoop
label Label_D084 SpriteDMAEntry
label Label_D086 SpriteDMALoop_D086
label Label_D088 SpriteDMASetZp00
label Label_D1A4 UpdatePPUMaskCheckZp85
label Label_D1AE UpdatePPUMaskASL
label Label_D1C4 UpdatePPUMaskEntry
label Label_D1CA UpdatePPUMaskCheckZp8B
label Label_D1E8 UpdatePPUMaskBCS
label Label_D1EA UpdatePPUMaskLdx01
label Label_D1F9 UpdatePPUMaskSetZp88
label Label_D213 UpdatePlayersCheckZp00
label Label_D243 UpdatePlayersBitZp00
label Label_D254 UpdatePlayersCpyZp43
label Label_D261 UpdatePlayersStxZp31
label Label_D27B UpdatePlayersEntry
label Label_D289 UpdatePlayersCpyZp43Alt
label Label_D29E UpdatePlayersStyZp43
label Label_D2A5 UpdatePlayersEntryAlt
label Label_D2A7 UpdatePlayersStxZp31Alt
label Label_D2A9 UpdatePlayersStyZp43Alt
label Label_D2AD UpdatePlayersCallE4E2
label Label_D2AF UpdatePlayersCallE4E2Alt
label Label_D2B2 UpdatePlayersCallE5AC
label Label_D2C4 UpdatePlayersCallE462
label Label_D2CA UpdatePlayersCheckZp1F
label Label_D300 UpdateScoreEntry
label Label_D301 UpdateScoreCheckZp88
label Label_D304 UpdateScoreSetZp31
label Label_D313 UpdateScoreLoadZp1F
label Label_D31F UpdateScoreBeqD31F
label Label_D327 UpdateScoreLdxZp89
label Label_D332 UpdateScoreCallE2B9
label Label_D341 UpdateScoreCallE459
label Label_D34B UpdateScoreCallE462
label Label_D35E UpdateScoreCpy0D
label Label_D367 UpdateScoreSetZp31Alt
label Label_D392 UpdateScoreLdx02
label Label_D3A4 UpdateScoreCheckZp88Alt
label Label_D3BD UpdateScoreSetZp31Alt2
label Label_D3C3 UpdateScoreBneD408
label Label_D3CE UpdateScoreCallE46E
label Label_D3D1 UpdateScoreBneD40E
label Label_D3F3 UpdateScoreSetZp31Alt3
label Label_D408 UpdateScoreBneD3CE
label Label_D411 UpdateScoreLDY02
label Label_D436 DrawRoundNumberCalc
label Label_D444 DrawRoundNumberClc
label Label_D447 DrawRoundNumberADC06
label Label_D45B DrawRoundNumberCallE7A7
label Label_D463 DrawRoundNumberCallE4E2
label Label_D7FC UpdatePlayerPositionsCheckZp84
label Label_D807 UpdatePlayerPositionsSetZp32
label Label_D825 UpdatePlayerPositionsEntry
label Label_D828 UpdatePlayerPositionsStxZp31
label Label_DA25 TitleScreenSetMode
label Label_DAB3 SpriteDMACheckZp96
label Label_DB57 SpriteDMACmp02
label Label_DB7D SpriteDMALoopEntry
label Label_DB8E SpriteDMALdx0A
label Label_DB91 SpriteDMABeqDB91
label Label_DB92 SpriteDMALdy0A
label Label_DB9E SpriteDMALdaF940
label Label_DBA6 SpriteDMALoop_DBA6
label Label_DBAA SpriteDMADex
label Label_DBBF SpriteDMACheckZp93
label Label_DBDD SpriteDMACallCDE0
label Label_DBEF SpriteDMACallDD8C
label Label_DBF0 SpriteDMARTS
label Label_DCF6 UpdateTimersEntry
label Label_DCFF UpdateTimersBeqDD33
label Label_DD00 UpdateTimersCmp02
label Label_DD33 UpdateTimersBeqDD33Alt
label Label_DD34 UpdateTimersBeqDD34
label Label_DD3B UpdateTimersCmp02Alt
label Label_DD8C UpdateTimersAnd1F
label Label_DD96 UpdateTimersBneDDAB
label Label_DDAB UpdateTimersCallCDE0
label Label_DE1C ProcessInputsEntry
label Label_DE35 ProcessInputsCheckZp1F
label Label_DF53 HandleKOEntry
label Label_DF74 HandleKOLda05EC
label Label_DF75 HandleKOAnd07
label Label_DF7A HandleKOLoop
label Label_DF8D HandleKOCmp07
label Label_DF9E HandleKOCheckZp88
label Label_DFAE HandleKOBeqDFB7
label Label_DFB7 HandleKOLda0321
label Label_DFDA HandleKODex
label Label_DFDF HandleKODexBne
label Label_DFE4 HandleKOCheckZp1F
label Label_DFE5 HandleKOBeqDFE4
label Label_E040 HandlePlayer1CheckZpC0
label Label_E052 HandlePlayer1BeqE075
label Label_E056 HandlePlayer1LdxZp89
label Label_E06D HandlePlayer1CallE1CD
label Label_E073 HandlePlayer1CallE1FD
label Label_E075 HandlePlayer1Entry
label Label_E0B4 HandlePlayer1CheckZp87
label Label_E0B7 HandlePlayer1BeqE235
label Label_E11A HandlePlayer2CallE1FD
label Label_E11C HandlePlayer2Entry
label Label_E1CD HandlePlayer2CallE1FDEntry
label Label_E1FD HandlePlayer2Dex
label Label_E207 HandlePlayer1LogicLdxZp36
label Label_E20D HandlePlayer1LogicInx
label Label_E21E HandlePlayer1LogicLda0258
label Label_E235 HandlePlayer1LogicBeq
label Label_E236 HandlePlayer1LogicLdaZp87
label Label_E24A HandlePlayer1LogicCallE4E2
label Label_E255 HandlePlayer1LogicCallE5AC
label Label_E26C HandlePlayer1LogicCallE4E2Alt
label Label_E290 HandlePlayer2LogicEntry
label Label_E29C HandlePlayer2LogicCpyZp43
label Label_E2A3 HandlePlayer2LogicStxZp31
label Label_E2B8 HandlePlayer2LogicCallE4E2
label Label_E2C1 HandlePlayer2LogicCallE5AC
label Label_E2D8 HandlePlayer2LogicCallE4E2Alt
label Label_E2E5 HandlePlayer2LogicCallE4E2Alt2
label Label_E2FF HandlePlayer2LogicCallE4E2Alt3
label Label_E30F HandleGameOverEntry
label Label_E312 HandleGameOverCallE4E2
label Label_E31E HandleGameOverCallE5AC
label Label_E334 HandleGameOverCallE4E2Alt
label Label_E346 HandleGameOverCallE4E2Alt2
label Label_E34F HandleGameOverCallE4E2Alt3
label Label_E418 HandleRoundStartEntry
label Label_E41A HandleRoundStartCallE4E2
label Label_E42A HandleRoundStartCallE5AC
label Label_E438 HandleRoundStartCallE4E2Alt
label Label_E450 HandleRoundStartCallE4E2Alt2
label Label_E458 HandleRoundStartCallE4E2Alt3
label Label_E461 HandleRoundStartCallE4E2Alt4
label Label_E462 UpdateSoundEntry
label Label_E469 UpdateSoundCallE4E2
label Label_E46E UpdateSoundCallE5AC
label Label_E479 UpdateSoundCallE4E2Alt
label Label_E48A UpdateSoundCallE4E2Alt2
label Label_E496 UpdateSoundCallE4E2Alt3
label Label_E4AE UpdateSoundCallE5ACAlt
label Label_E4BD UpdateSoundCallE4E2Alt5
label Label_E4BF UpdateSoundCallE4E2Alt6
label Label_E4EA UpdateSoundCallE5ACAlt2
label Label_E4F6 UpdateSoundCallE4E2Alt7
label Label_E50A PlaySoundEffectEntry
label Label_E52A PlaySoundEffectCallE4E2
label Label_E52B PlaySoundEffectCallE5AC
label Label_E52F PlaySoundEffectCallE4E2Alt
label Label_E543 PlaySoundEffectCallE4E2Alt2
label Label_E549 PlaySoundEffectCallE5ACAlt
label Label_E56B PlaySoundEffectCallE4E2Alt3
label Label_E582 PlaySoundEffectCallE5ACAlt2
label Label_E594 PlaySoundEffectCallE4E2Alt4
label Label_E595 PlaySoundEffectCallE5ACAlt3
label Label_E5AB UpdateMusicEntry
label Label_E5AC UpdateMusicCallE4E2
label Label_E5CD UpdateMusicCallE5AC
label Label_E5D9 UpdateMusicCallE4E2Alt
label Label_E5E4 UpdateMusicCallE4E2Alt2
label Label_E5E5 UpdateMusicCallE5ACAlt
label Label_E5FB UpdateMusicCallE5ACAlt2
label Label_E60E UpdateMusicCallE4E2Alt3
label Label_E62D UpdateMusicCallE5ACAlt3
label Label_E62F UpdateMusicCallE4E2Alt4
label Label_E630 UpdateMusicCallE5ACAlt4
label Label_E641 UpdateMusicCallE4E2Alt5
label Label_E65A UpdateMusicCallE5ACAlt5
label Label_E669 UpdateMusicCallE4E2Alt6
label Label_E695 UpdateMusicLoopEntry
label Label_E6A8 UpdateMusicLoopCallE4E2
label Label_E6BE UpdateMusicLoopCallE5AC
label Label_E6CE UpdateMusicLoopCallE4E2Alt
label Label_E6DD UpdateMusicLoopCallE4E2Alt2
label Label_E6E3 UpdateMusicLoopCallE5ACAlt
label Label_E6E6 UpdateMusicLoopCallE4E2Alt3
label Label_E6F2 UpdateMusicLoopCallE5ACAlt2
label Label_E6F9 UpdateMusicLoopCallE4E2Alt4
label Label_E70C InitSpriteDataEntry
label Label_E72D InitSpriteDataLoop
label Label_E749 InitSpriteDataCallE4E2
label Label_E753 InitSpriteDataCallE5AC
label Label_E764 InitSpriteDataCallE4E2Alt
label Label_E768 InitSpriteDataCallE5ACAlt
label Label_E777 InitSpriteDataCallE4E2Alt2
label Label_E77C InitSpriteDataCallE5ACAlt2
label Label_E7A7 InitSpriteDataCallE4E2Alt3
label Label_E7AB InitSpriteDataCallE5ACAlt3
label Label_E7AF InitSpriteDataCallE4E2Alt4
label Label_E7B1 InitSpriteDataCallE5ACAlt4
label Label_E7BE InitSpriteDataCallE4E2Alt5
label Label_E7C6 InitSpriteDataCallE5ACAlt5
label Label_E7D6 InitSpriteDataCallE4E2Alt6
label Label_E7DB InitSpriteDataCallE5ACAlt6
label Label_E7F7 InitSoundEntry
label Label_E7F9 InitSoundCallE4E2
label Label_E80B InitSoundCallE5AC
label Label_E80C InitSoundExit_E80C
label Label_D2C7 UpdatePlayersCallE462_CF
label Label_DB48 SpriteDMACheckZp96_DB48
label Label_DFBC HandleKOCheckZp1F_DFBC
1 label Label_C000 InitAPU_C000
2 label Label_C003 CheckControllerStart
3 label Label_C026 ScaleInputIndex
4 label Label_C04E SetAPUVolume
5 label Label_C056 SetAPUSweep
6 label Label_C058 InitAPUWaveform
7 label Label_C05E SaveXY
8 label Label_C063 InitSoundPointers
9 label Label_C06E UpdateControllerState
10 label Label_C087 InitControllerTables
11 label Label_C0A0 InitControllerTablesLoop
12 label Label_C0AE InitControllerTablesAlt
13 label Label_C0B1 InitControllerTablesExit
14 label Label_C0CF InitPPU
15 label Label_C0E0 InitPPULoop
16 label Label_C0F1 InitAPUFrameCounter
17 label Label_C0F8 InitAPUFrameCounterExit
18 label Label_C0FC InitPPUFinal
19 label Label_C18D LoadBackgroundData
20 label Label_C195 LoadBackgroundDataLoop
21 label Label_C199 LoadBackgroundDataAlt
22 label Label_C19B LoadBackgroundDataExit
23 label Label_C1A7 SetupSpriteData
24 label Label_C1B2 SetupSpriteDataLoop
25 label Label_C20F CopySpriteTables
26 label Label_C22C CopySpriteTablesLoop
27 label Label_C24D WaitVBlank
28 label Label_C288 WaitVBlankLoop
29 label Label_C2A5 InitGameVariables
30 label Label_C2DE ClearRAM
31 label Label_C30C ClearRAMPage
32 label Label_C30D ClearRAMPageLoop
33 label Label_C31B InitGameState
34 label Label_C327 InitGameStateExit
35 label Label_C332 InitAPUCall
36 label Label_C335 InitAPU
37 label Label_C352 ClearControllerState
38 label Label_C358 InitAPURegisters
39 label Label_C376 InitSpritesAlt1
40 label Label_C37D InitSpritesAlt2
41 label Label_C384 InitSpritesMain
42 label Label_C3A0 InitSpritesLoop
43 label Label_C3B3 InitSpritesExit_C3B3
44 label Label_C3C8 InitSpritesAlt3
45 label Label_C3E0 InitSpritesAlt4
46 label Label_C3F5 InitSpritesAlt5
47 label Label_C408 InitSpritesAlt6
48 label Label_C41E InitSpritesAlt7
49 label Label_C425 InitSpritesAlt8
50 label Label_C438 InitSpritesAlt9
51 label Label_C44E InitSpritesAlt10
52 label Label_C465 InitGameState2
53 label Label_C48A InitGameState2Exit
54 label Label_C508 InitGameState3
55 label Label_C533 InitGameState3Exit
56 label Label_C5D1 InitGameState4
57 label Label_C5FC InitGameState4Exit
58 label Label_C66E Reset
59 label Label_C66F ResetEntry
60 label Label_C69E InitSystem
61 label Label_CA02 WaitPPUReady
62 label Label_CA07 WaitPPUReadyLoop
63 label Label_CA0F InitStack
64 label Label_CA11 LoadGameConfig
65 label Label_CA14 InitVariables
66 label Label_CA17 SetupInitialState
67 label Label_CA19 SetupRAMPointer
68 label Label_CA1D ClearRAMStart
69 label Label_CA1F ClearRAMByte
70 label Label_CA21 ClearRAMLoop
71 label Label_CA2F StoreConfig
72 label Label_CA32 CallInitRoutines
73 label Label_CA35 CallInitRoutines2
74 label Label_CA38 SetupScroll
75 label Label_CA3A SetupScroll2
76 label Label_CA40 SetupGameMode
77 label Label_CA42 SetGameMode1
78 label Label_CA44 SetZpA5
79 label Label_CA46 InitAPURegisters2
80 label Label_CA48 InitAPURegisters2Exit
81 label Label_CA4B CallCheckControllerStart
82 label Label_CA4E CallE7EF
83 label Label_CA51 SetupPPUCtrl
84 label Label_CA53 SetupPPUCtrlExit
85 label Label_CA56 SetZp08
86 label Label_CA58 SetZp09
87 label Label_CA5C SetupX
88 label Label_CA5E CopyConfigData
89 label Label_CA69 TitleScreenLoop
90 label Label_CA6D CheckGameMode
91 label Label_CA6F CheckRoundIndex
92 label Label_CA73 CallInitAPU
93 label Label_CA76 GameplayFrame
94 label Label_CA87 MainGameLoop
95 label Label_CA8B CallCheckRoundEnd
96 label Label_CA8E MainGameLoopJump
97 label Label_CA91 NmiHandler
98 label Label_CA9B NmiFrameUpdate
99 label Label_CAA5 NmiVBlankOnly_CAA5
100 label Label_CAAC NmiFrameUpdate2
101 label Label_CAAF NmiFrameUpdate3
102 label Label_CAB2 NmiFrameUpdate4
103 label Label_CAB5 NmiExit
104 label Label_CAC2 NmiVBlankOnly_CAC2
105 label Label_CADA UpdateScroll
106 label Label_CBE2 InitSprites
107 label Label_CBF7 InitSpritesAlt
108 label Label_CC0B InitSpritesExit
109 label Label_CC46 UpdateSprites
110 label Label_CC61 UpdateSpritesExit
111 label Label_CC67 UpdateOAM_CC67
112 label Label_CC77 UpdateOAMExit
113 label Label_CC85 UpdateOAM_CC85
114 label Label_CC95 UpdateOAMExit2
115 label Label_CCAF UpdatePalettes
116 label Label_CCC6 UpdatePalettes2
117 label Label_CCCB UpdatePalettesExit
118 label Label_CCCE UpdatePalettesLoop
119 label Label_CCD0 UpdatePlayers
120 label Label_CCDA UpdatePlayersExit
121 label Label_CDE0 ProcessControllerInput
122 label Label_CE43 ScrollBackground
123 label Label_CE8B ScrollBackgroundExit
124 label Label_CF92 UpdateSpritePositions
125 label Label_CFA1 CheckRoundEnd
126 label Label_CFAB CheckRoundEndExit
127 label Label_CFC3 HandleKO
128 label Label_CFD3 HandleKOExit
129 label Label_CFE5 HandleTimeout
130 label Label_CFF8 HandleTimeoutExit
131 label Label_D01A UpdateRoundTimerInit
132 label Label_D027 UpdateRoundTimerInitExit
133 label Label_D057 UpdateRoundTimer
134 label Label_D08E SpriteDMA
135 label Label_D09D DrawBackground
136 label Label_D174 UpdatePPUMask
137 label Label_D187 UpdatePPUMaskExit
138 label Label_D1A7 UpdatePPUMaskAlt
139 label Label_D1C6 UpdatePPUMaskLoop
140 label Label_D216 UpdateHUD
141 label Label_D2E2 UpdateHUDExit
142 label Label_D30A UpdateScore
143 label Label_D3FA UpdateScoreLoop
144 label Label_D40E UpdateScoreExit
145 label Label_D469 DrawRoundNumber
146 label Label_D5D1 DrawRoundNumberExit
147 label Label_D7DB UpdatePlayerPositions
148 label Label_D80C UpdatePlayerPositionsExit
149 label Label_DAA7 CheckCollisions
150 label Label_DADD CheckCollisionsExit
151 label Label_DBCB UpdateTimers
152 label Label_DBDC UpdateTimersExit
153 label Label_DBFD ProcessInputs
154 label Label_DE03 ProcessInputsExit
155 label Label_DE24 ProcessInputsAlt
156 label Label_DE2E ProcessInputsAltExit
157 label Label_DEC9 UpdateRoundState
158 label Label_DEE3 UpdateRoundStateExit
159 label Label_DF4C UpdateRoundStateAlt
160 label Label_DF5E UpdateRoundStateAltExit
161 label Label_E00F HandlePlayer1
162 label Label_E02B HandlePlayer1Exit
163 label Label_E048 HandlePlayer2
164 label Label_E064 HandlePlayer2Exit
165 label Label_E076 HandlePlayer1Alt
166 label Label_E08D HandlePlayer1Entry
167 label Label_E11D HandlePlayer2Entry
168 label Label_E223 HandlePlayer1Logic
169 label Label_E2B9 HandlePlayer2Logic
170 label Label_E2C9 HandlePlayerLogicExit
171 label Label_E350 HandleGameOver
172 label Label_E3B2 HandleGameOverExit
173 label Label_E3E0 HandleRoundStart
174 label Label_E40E HandleRoundStartExit
175 label Label_E459 UpdateSound
176 label Label_E48B UpdateSoundExit
177 label Label_E4A4 UpdateSoundAlt
178 label Label_E4E2 UpdateSoundAltExit
179 label Label_E506 PlaySoundEffect
180 label Label_E535 PlaySoundEffectExit
181 label Label_E54A PlaySoundEffectAlt
182 label Label_E5B2 UpdateMusic
183 label Label_E617 UpdateMusicExit
184 label Label_E61B UpdateMusicAlt
185 label Label_E6D4 UpdateMusicLoop
186 label Label_E6FA UpdateMusicLoopExit
187 label Label_E793 InitSpriteData
188 label Label_E7B6 InitSpriteDataExit
189 label Label_E7EF InitSound
190 label Label_E7FE InitSoundExit
191 label Label_C39A InitSpritesLoop
192 label Label_C3AD InitSpritesAltExit
193 label Label_C3C3 InitSpritesCheckE6
194 label Label_C3E3 InitSpritesSetE4
195 label Label_C3E9 InitSpritesSetE6
196 label Label_C3FF InitSpritesCallChain
197 label Label_C405 InitSpritesClearEF
198 label Label_C40E InitSpritesCheckF1
199 label Label_C40F InitSpritesSetF3
200 label Label_C444 InitSpritesCheckF2
201 label Label_C44A InitSpritesSetF2
202 label Label_C478 InitSpritesAlt1Entry
203 label Label_C49C InitSpritesAlt1Loop
204 label Label_C4A4 InitSpritesAlt2Entry
205 label Label_C4A5 InitSpritesAlt2Loop
206 label Label_C4BB InitSpritesCheck10B
207 label Label_C4C3 InitSpritesInc10B
208 label Label_C4CA InitSpritesCheck10BMax
209 label Label_C4E3 InitSpritesCheck10C
210 label Label_C4E6 InitSpritesCheck10CAF
211 label Label_C4F4 InitSpritesSetF4
212 label Label_C512 InitGameState3CheckE6
213 label Label_C520 InitGameState3Loop
214 label Label_C52D InitGameState3Alt
215 label Label_C542 InitGameState4CheckF2
216 label Label_C55A InitGameState4Loop
217 label Label_C590 InitGameState4ClearEF
218 label Label_C593 InitGameState4MaskF3
219 label Label_C5A4 InitGameState4MaskEF
220 label Label_C5AB InitGameState4CheckF9
221 label Label_C5C5 InitGameState4DecD8
222 label Label_C5CA InitGameState4CheckF2Alt
223 label Label_C5F5 WaitVBlankLoop_C5F5
224 label Label_C5F6 WaitVBlankDecD8
225 label Label_C5F9 WaitVBlankDecD9
226 label Label_C5FF WaitVBlankCheckFF
227 label Label_C605 WaitVBlankCheckFA
228 label Label_C60B WaitVBlankStore
229 label Label_C622 WaitVBlankCallC1B2
230 label Label_C637 WaitVBlankCallC1B2Alt
231 label Label_C63D WaitVBlankCallC1B2Alt2
232 label Label_C644 WaitVBlankJmpC20F
233 label Label_C647 WaitVBlankZeroE4
234 label Label_C64E WaitVBlankCallC1B2Zero
235 label Label_CAE1 TitleScreenCheckMode
236 label Label_CB06 CheckControllerStartEntry
237 label Label_CB0F CheckControllerStartLoop
238 label Label_CB31 CheckControllerStartExit
239 label Label_CB4B CheckControllerStartWait
240 label Label_CB4E CheckControllerStartJmp
241 label Label_CB51 GameplayFrameCallD012
242 label Label_CB55 GameplayFrameCallE70C
243 label Label_CB61 TitleScreenLoopCallInitAPU
244 label Label_CB66 UpdateScrollEntry
245 label Label_CBB6 InitSpritesSetPos
246 label Label_CBC0 InitSpritesZero5FF
247 label Label_CBDA UpdateScrollLogic
248 label Label_CBFB InitSpritesBeqCBFB
249 label Label_CC02 UpdateScrollCheckZp1F
250 label Label_CC15 InitSpritesIncY
251 label Label_CC1B InitSpritesCpy02
252 label Label_CC24 InitSpritesSet5FD
253 label Label_CC29 UpdateScrollReadDispatch
254 label Label_CC3A UpdateScrollCheckDispatch
255 label Label_CC3E UpdateScrollReadZpA4
256 label Label_CC42 UpdateScrollCheckDispatchAlt
257 label Label_CC5C UpdateScrollCheckZpA4
258 label Label_CC6E UpdateOAMSetPointer
259 label Label_CC7B UpdateOAMClear200
260 label Label_CC97 UpdateOAMCheckZp23
261 label Label_CCAE UpdateOAMDecrement
262 label Label_CCC3 UpdateOAMCheckZp27
263 label Label_CCCF UpdateOAMZeroY
264 label Label_CCE3 UpdatePalettesCheckZp27
265 label Label_CCF3 UpdatePalettesZeroY
266 label Label_CCFB ProcessControllerInputLoop
267 label Label_CCFD ProcessControllerInputStore
268 label Label_CD22 RoundLogicCheckZp21
269 label Label_CD33 RoundLogicBeqCD84
270 label Label_CD38 RoundLogicSet21
271 label Label_CD41 ProcessControllerInputEntry
272 label Label_CD5D ProcessControllerInputRead2002
273 label Label_CD6C ProcessControllerInputAndFB
274 label Label_CD76 ProcessControllerInputStaZp08
275 label Label_CD84 ProcessControllerInputRead2002Alt
276 label Label_CD85 ProcessControllerInputRead2002Alt2
277 label Label_CD94 ProcessControllerInputAnd04
278 label Label_CDAA ProcessControllerInputOra18
279 label Label_CDC3 ProcessControllerInputStaZp09
280 label Label_CDCA RoundLogicEntry
281 label Label_CDD6 RoundLogicDecZp2A
282 label Label_CDDC RoundLogicBplCDD6
283 label Label_CDFE RoundLogicSaveXY
284 label Label_CE14 ScrollBackgroundEntry
285 label Label_CE20 ScrollBackgroundIncX
286 label Label_CE23 ScrollBackgroundTXA_CE23
287 label Label_CE26 ScrollBackgroundCmp6F_CE26
288 label Label_CE3A ScrollBackgroundRead2002
289 label Label_CE55 ScrollBackgroundSetZp21
290 label Label_CE6C ScrollBackgroundLoop
291 label Label_CE83 ScrollBackgroundInx
292 label Label_CEAD ScrollBackgroundTXA_CEAD
293 label Label_CEBD ScrollBackgroundCmp6F_CEBD
294 label Label_CEBE ScrollBackgroundAdc01
295 label Label_CEC5 ScrollBackgroundAnd0F
296 label Label_CECE ScrollBackgroundStaZp01
297 label Label_CEF1 ScrollBackgroundAdcZp01_CEF1
298 label Label_CEF5 ScrollBackgroundCmp0A_CEF5
299 label Label_CF23 ScrollBackgroundSbcZp01_CF23
300 label Label_CF25 ScrollBackgroundStaZp01Alt
301 label Label_CF4E ScrollBackgroundCallCF92
302 label Label_CF4F ScrollBackgroundCallCF92Entry
303 label Label_CF5A ScrollBackgroundAdcZp01_CF5A
304 label Label_CF67 ScrollBackgroundCmp0A_CF67
305 label Label_CF6B ScrollBackgroundSbcZp01_CF6B
306 label Label_CF70 ScrollBackgroundCallCF92Alt
307 label Label_CF83 ScrollBackgroundCallCF92Alt2
308 label Label_CF8F ScrollBackgroundStaZp01Alt2
309 label Label_CFB3 CheckRoundEndEntry
310 label Label_D012 UpdateRoundTimerCallD057
311 label Label_D015 UpdateRoundTimerBeq
312 label Label_D030 DrawBackgroundEntry
313 label Label_D034 DrawBackgroundSetZpA2
314 label Label_D040 DrawBackgroundSetZpA2Alt
315 label Label_D044 DrawBackgroundLdx0
316 label Label_D050 UpdateRoundTimerInitSetPtr
317 label Label_D05E UpdateRoundTimerInitSetZp09
318 label Label_D066 UpdateRoundTimerInitCallCE3A
319 label Label_D07A SetupInitialStateEntry
320 label Label_D07E SetupInitialStateLoop
321 label Label_D084 SpriteDMAEntry
322 label Label_D086 SpriteDMALoop_D086
323 label Label_D088 SpriteDMASetZp00
324 label Label_D1A4 UpdatePPUMaskCheckZp85
325 label Label_D1AE UpdatePPUMaskASL
326 label Label_D1C4 UpdatePPUMaskEntry
327 label Label_D1CA UpdatePPUMaskCheckZp8B
328 label Label_D1E8 UpdatePPUMaskBCS
329 label Label_D1EA UpdatePPUMaskLdx01
330 label Label_D1F9 UpdatePPUMaskSetZp88
331 label Label_D213 UpdatePlayersCheckZp00
332 label Label_D243 UpdatePlayersBitZp00
333 label Label_D254 UpdatePlayersCpyZp43
334 label Label_D261 UpdatePlayersStxZp31
335 label Label_D27B UpdatePlayersEntry
336 label Label_D289 UpdatePlayersCpyZp43Alt
337 label Label_D29E UpdatePlayersStyZp43
338 label Label_D2A5 UpdatePlayersEntryAlt
339 label Label_D2A7 UpdatePlayersStxZp31Alt
340 label Label_D2A9 UpdatePlayersStyZp43Alt
341 label Label_D2AD UpdatePlayersCallE4E2
342 label Label_D2AF UpdatePlayersCallE4E2Alt
343 label Label_D2B2 UpdatePlayersCallE5AC
344 label Label_D2C4 UpdatePlayersCallE462
345 label Label_D2CA UpdatePlayersCheckZp1F
346 label Label_D300 UpdateScoreEntry
347 label Label_D301 UpdateScoreCheckZp88
348 label Label_D304 UpdateScoreSetZp31
349 label Label_D313 UpdateScoreLoadZp1F
350 label Label_D31F UpdateScoreBeqD31F
351 label Label_D327 UpdateScoreLdxZp89
352 label Label_D332 UpdateScoreCallE2B9
353 label Label_D341 UpdateScoreCallE459
354 label Label_D34B UpdateScoreCallE462
355 label Label_D35E UpdateScoreCpy0D
356 label Label_D367 UpdateScoreSetZp31Alt
357 label Label_D392 UpdateScoreLdx02
358 label Label_D3A4 UpdateScoreCheckZp88Alt
359 label Label_D3BD UpdateScoreSetZp31Alt2
360 label Label_D3C3 UpdateScoreBneD408
361 label Label_D3CE UpdateScoreCallE46E
362 label Label_D3D1 UpdateScoreBneD40E
363 label Label_D3F3 UpdateScoreSetZp31Alt3
364 label Label_D408 UpdateScoreBneD3CE
365 label Label_D411 UpdateScoreLDY02
366 label Label_D436 DrawRoundNumberCalc
367 label Label_D444 DrawRoundNumberClc
368 label Label_D447 DrawRoundNumberADC06
369 label Label_D45B DrawRoundNumberCallE7A7
370 label Label_D463 DrawRoundNumberCallE4E2
371 label Label_D7FC UpdatePlayerPositionsCheckZp84
372 label Label_D807 UpdatePlayerPositionsSetZp32
373 label Label_D825 UpdatePlayerPositionsEntry
374 label Label_D828 UpdatePlayerPositionsStxZp31
375 label Label_DA25 TitleScreenSetMode
376 label Label_DAB3 SpriteDMACheckZp96
377 label Label_DB57 SpriteDMACmp02
378 label Label_DB7D SpriteDMALoopEntry
379 label Label_DB8E SpriteDMALdx0A
380 label Label_DB91 SpriteDMABeqDB91
381 label Label_DB92 SpriteDMALdy0A
382 label Label_DB9E SpriteDMALdaF940
383 label Label_DBA6 SpriteDMALoop_DBA6
384 label Label_DBAA SpriteDMADex
385 label Label_DBBF SpriteDMACheckZp93
386 label Label_DBDD SpriteDMACallCDE0
387 label Label_DBEF SpriteDMACallDD8C
388 label Label_DBF0 SpriteDMARTS
389 label Label_DCF6 UpdateTimersEntry
390 label Label_DCFF UpdateTimersBeqDD33
391 label Label_DD00 UpdateTimersCmp02
392 label Label_DD33 UpdateTimersBeqDD33Alt
393 label Label_DD34 UpdateTimersBeqDD34
394 label Label_DD3B UpdateTimersCmp02Alt
395 label Label_DD8C UpdateTimersAnd1F
396 label Label_DD96 UpdateTimersBneDDAB
397 label Label_DDAB UpdateTimersCallCDE0
398 label Label_DE1C ProcessInputsEntry
399 label Label_DE35 ProcessInputsCheckZp1F
400 label Label_DF53 HandleKOEntry
401 label Label_DF74 HandleKOLda05EC
402 label Label_DF75 HandleKOAnd07
403 label Label_DF7A HandleKOLoop
404 label Label_DF8D HandleKOCmp07
405 label Label_DF9E HandleKOCheckZp88
406 label Label_DFAE HandleKOBeqDFB7
407 label Label_DFB7 HandleKOLda0321
408 label Label_DFDA HandleKODex
409 label Label_DFDF HandleKODexBne
410 label Label_DFE4 HandleKOCheckZp1F
411 label Label_DFE5 HandleKOBeqDFE4
412 label Label_E040 HandlePlayer1CheckZpC0
413 label Label_E052 HandlePlayer1BeqE075
414 label Label_E056 HandlePlayer1LdxZp89
415 label Label_E06D HandlePlayer1CallE1CD
416 label Label_E073 HandlePlayer1CallE1FD
417 label Label_E075 HandlePlayer1Entry
418 label Label_E0B4 HandlePlayer1CheckZp87
419 label Label_E0B7 HandlePlayer1BeqE235
420 label Label_E11A HandlePlayer2CallE1FD
421 label Label_E11C HandlePlayer2Entry
422 label Label_E1CD HandlePlayer2CallE1FDEntry
423 label Label_E1FD HandlePlayer2Dex
424 label Label_E207 HandlePlayer1LogicLdxZp36
425 label Label_E20D HandlePlayer1LogicInx
426 label Label_E21E HandlePlayer1LogicLda0258
427 label Label_E235 HandlePlayer1LogicBeq
428 label Label_E236 HandlePlayer1LogicLdaZp87
429 label Label_E24A HandlePlayer1LogicCallE4E2
430 label Label_E255 HandlePlayer1LogicCallE5AC
431 label Label_E26C HandlePlayer1LogicCallE4E2Alt
432 label Label_E290 HandlePlayer2LogicEntry
433 label Label_E29C HandlePlayer2LogicCpyZp43
434 label Label_E2A3 HandlePlayer2LogicStxZp31
435 label Label_E2B8 HandlePlayer2LogicCallE4E2
436 label Label_E2C1 HandlePlayer2LogicCallE5AC
437 label Label_E2D8 HandlePlayer2LogicCallE4E2Alt
438 label Label_E2E5 HandlePlayer2LogicCallE4E2Alt2
439 label Label_E2FF HandlePlayer2LogicCallE4E2Alt3
440 label Label_E30F HandleGameOverEntry
441 label Label_E312 HandleGameOverCallE4E2
442 label Label_E31E HandleGameOverCallE5AC
443 label Label_E334 HandleGameOverCallE4E2Alt
444 label Label_E346 HandleGameOverCallE4E2Alt2
445 label Label_E34F HandleGameOverCallE4E2Alt3
446 label Label_E418 HandleRoundStartEntry
447 label Label_E41A HandleRoundStartCallE4E2
448 label Label_E42A HandleRoundStartCallE5AC
449 label Label_E438 HandleRoundStartCallE4E2Alt
450 label Label_E450 HandleRoundStartCallE4E2Alt2
451 label Label_E458 HandleRoundStartCallE4E2Alt3
452 label Label_E461 HandleRoundStartCallE4E2Alt4
453 label Label_E462 UpdateSoundEntry
454 label Label_E469 UpdateSoundCallE4E2
455 label Label_E46E UpdateSoundCallE5AC
456 label Label_E479 UpdateSoundCallE4E2Alt
457 label Label_E48A UpdateSoundCallE4E2Alt2
458 label Label_E496 UpdateSoundCallE4E2Alt3
459 label Label_E4AE UpdateSoundCallE5ACAlt
460 label Label_E4BD UpdateSoundCallE4E2Alt5
461 label Label_E4BF UpdateSoundCallE4E2Alt6
462 label Label_E4EA UpdateSoundCallE5ACAlt2
463 label Label_E4F6 UpdateSoundCallE4E2Alt7
464 label Label_E50A PlaySoundEffectEntry
465 label Label_E52A PlaySoundEffectCallE4E2
466 label Label_E52B PlaySoundEffectCallE5AC
467 label Label_E52F PlaySoundEffectCallE4E2Alt
468 label Label_E543 PlaySoundEffectCallE4E2Alt2
469 label Label_E549 PlaySoundEffectCallE5ACAlt
470 label Label_E56B PlaySoundEffectCallE4E2Alt3
471 label Label_E582 PlaySoundEffectCallE5ACAlt2
472 label Label_E594 PlaySoundEffectCallE4E2Alt4
473 label Label_E595 PlaySoundEffectCallE5ACAlt3
474 label Label_E5AB UpdateMusicEntry
475 label Label_E5AC UpdateMusicCallE4E2
476 label Label_E5CD UpdateMusicCallE5AC
477 label Label_E5D9 UpdateMusicCallE4E2Alt
478 label Label_E5E4 UpdateMusicCallE4E2Alt2
479 label Label_E5E5 UpdateMusicCallE5ACAlt
480 label Label_E5FB UpdateMusicCallE5ACAlt2
481 label Label_E60E UpdateMusicCallE4E2Alt3
482 label Label_E62D UpdateMusicCallE5ACAlt3
483 label Label_E62F UpdateMusicCallE4E2Alt4
484 label Label_E630 UpdateMusicCallE5ACAlt4
485 label Label_E641 UpdateMusicCallE4E2Alt5
486 label Label_E65A UpdateMusicCallE5ACAlt5
487 label Label_E669 UpdateMusicCallE4E2Alt6
488 label Label_E695 UpdateMusicLoopEntry
489 label Label_E6A8 UpdateMusicLoopCallE4E2
490 label Label_E6BE UpdateMusicLoopCallE5AC
491 label Label_E6CE UpdateMusicLoopCallE4E2Alt
492 label Label_E6DD UpdateMusicLoopCallE4E2Alt2
493 label Label_E6E3 UpdateMusicLoopCallE5ACAlt
494 label Label_E6E6 UpdateMusicLoopCallE4E2Alt3
495 label Label_E6F2 UpdateMusicLoopCallE5ACAlt2
496 label Label_E6F9 UpdateMusicLoopCallE4E2Alt4
497 label Label_E70C InitSpriteDataEntry
498 label Label_E72D InitSpriteDataLoop
499 label Label_E749 InitSpriteDataCallE4E2
500 label Label_E753 InitSpriteDataCallE5AC
501 label Label_E764 InitSpriteDataCallE4E2Alt
502 label Label_E768 InitSpriteDataCallE5ACAlt
503 label Label_E777 InitSpriteDataCallE4E2Alt2
504 label Label_E77C InitSpriteDataCallE5ACAlt2
505 label Label_E7A7 InitSpriteDataCallE4E2Alt3
506 label Label_E7AB InitSpriteDataCallE5ACAlt3
507 label Label_E7AF InitSpriteDataCallE4E2Alt4
508 label Label_E7B1 InitSpriteDataCallE5ACAlt4
509 label Label_E7BE InitSpriteDataCallE4E2Alt5
510 label Label_E7C6 InitSpriteDataCallE5ACAlt5
511 label Label_E7D6 InitSpriteDataCallE4E2Alt6
512 label Label_E7DB InitSpriteDataCallE5ACAlt6
513 label Label_E7F7 InitSoundEntry
514 label Label_E7F9 InitSoundCallE4E2
515 label Label_E80B InitSoundCallE5AC
516 label Label_E80C InitSoundExit_E80C
517 label Label_D2C7 UpdatePlayersCallE462_CF
518 label Label_DB48 SpriteDMACheckZp96_DB48
519 label Label_DFBC HandleKOCheckZp1F_DFBC
+159 -2
View File
@@ -1,2 +1,159 @@
; Urban Champion (JU) zero-page aliases (declared during Pass 2).
; These intentionally conservative names will be refined in Passes 2 and 3.
; Urban Champion (JU) application-specific RAM aliases - Pass 1
; Generated from every direct zero-page operand in reachable code:
; ref counts are reads/writes, `where` lists the referencing addresses.
; ZpXX names indicate storage with a role not yet unique enough for a behavioral name;
; Pass 2 replaces them with names derived from observed usage.
Zp00 = $00 ; 54 refs; reads=33 writes=21; used at $CA1D, CA21, CC72, CC97, +49 more
Zp01 = $01 ; 32 refs; reads=13 writes=19; used at $CA19, CA26, CC6E, CC99, +26 more
Zp02 = $02 ; 15 refs; reads=9 writes=6; used at $CD02, CD33, CD9A, CDB3, +11 more
Zp03 = $03 ; 10 refs; reads=3 writes=7; used at $CED1, CEDC, CEE7, CEF8, +6 more
Zp04 = $04 ; 5 refs; reads=2 writes=3; used at $CE67, CEA3, CEC6, E2D1
Zp05 = $05 ; 5 refs; reads=3 writes=2; used at $CE5F, CE7C, CEE9, CF10, +1 more
Zp06 = $06 ; 6 refs; reads=3 writes=3; used at $CE7E, CE8C, CEDE, CF05, +1 more
Zp07 = $07 ; 7 refs; reads=4 writes=3; used at $CED3, CEFA, CFA6, CFAD, +3 more
Zp08 = $08 ; 11 refs; reads=6 writes=5; used at $CA56, CD4D, CD54, CD88, +7 more
Zp09 = $09 ; 11 refs; reads=5 writes=6; used at $CA5A, CAC2, CAC6, CACE, +7 more
Zp0A = $0A ; 1 refs; reads=1 writes=0; used at $CE44
Zp0B = $0B ; 1 refs; reads=1 writes=0; used at $CE49
Zp0C = $0C ; 7 refs; reads=5 writes=2; used at $E236, E25A, E267, E2A5, +3 more
Zp0D = $0D ; 5 refs; reads=4 writes=1; used at $E238, E25C, E261, E2AE, +1 more
Zp0E = $0E ; 2 refs; reads=1 writes=1; used at $E26C, E294
Zp0F = $0F ; 7 refs; reads=3 writes=4; used at $E2A3, E2B3, E6E6, E6EB, +2 more
Zp10 = $10 ; 5 refs; reads=4 writes=1; used at $E5C2, E5CF, E5E8, E5ED, +1 more
Zp11 = $11 ; 1 refs; reads=0 writes=1; used at $E5C7
Zp12 = $12 ; 8 refs; reads=6 writes=2; used at $E5BA, E5C0, E5C5, E5EB, +4 more
Zp13 = $13 ; 2 refs; reads=0 writes=2; used at $E5BE, E5E5
Zp14 = $14 ; 10 refs; reads=6 writes=4; used at $CDE8, CDED, CDF1, CDF5, +6 more
Zp15 = $15 ; 4 refs; reads=0 writes=4; used at $CDEB, CDF3, E244, E722
Zp16 = $16 ; 5 refs; reads=4 writes=1; used at $CAE1, CBDA, CCFE, CD12, +1 more
Zp18 = $18 ; 10 refs; reads=5 writes=5; used at $CD22, CD24, CD29, CD2F, +6 more
Zp19 = $19 ; 5 refs; reads=1 writes=4; used at $DE0F, DECB, DF75, DF77, +1 more
Zp1A = $1A ; 3 refs; reads=1 writes=2; used at $E5CB, E5CD, E613
Zp1B = $1B ; 13 refs; reads=7 writes=6; used at $E62D, E63A, E63C, E65A, +5 more
Zp1C = $1C ; 3 refs; reads=1 writes=2; used at $CB40, CCBD
Zp1D = $1D ; 2 refs; reads=1 writes=1; used at $CB22, CCCB
Zp1E = $1E ; 1 refs; reads=1 writes=0; used at $D062
Zp1F = $1F ; 8 refs; reads=8 writes=0; used at $D313, DE03, DFBC, E0A6, +4 more
Zp20 = $20 ; 4 refs; reads=2 writes=2; used at $CA87, CAB9, D015, D059
Zp21 = $21 ; 3 refs; reads=1 writes=2; used at $CD41, CD82, CE57
Zp22 = $22 ; 3 refs; reads=1 writes=2; used at $CAA5, CAB7, D05B
Zp23 = $23 ; 2 refs; reads=1 writes=1; used at $CC85, CC95
Zp24 = $24 ; 5 refs; reads=2 writes=3; used at $CA42, CA69, CADA, CBE4, +1 more
Zp25 = $25 ; 8 refs; reads=3 writes=5; used at $CAF0, CB20, CB2A, CB3C, +4 more
Zp26 = $26 ; 5 refs; reads=4 writes=1; used at $CA6D, CBCB, CBF7, CC5C, +1 more
Zp27 = $27 ; 2 refs; reads=1 writes=1; used at $CCAF, CCB5
Zp28 = $28 ; 2 refs; reads=1 writes=1; used at $CDE0, CDF7
Zp29 = $29 ; 2 refs; reads=1 writes=1; used at $CDE2, CDF9
Zp2A = $2A ; 8 refs; reads=4 writes=4; used at $CB0F, CBF2, CCC6, CDCC, +3 more
Zp2B = $2B ; 6 refs; reads=4 writes=2; used at $CDD6, CDDA, D7EB, D7F1, +1 more
Zp2D = $2D ; 6 refs; reads=2 writes=4; used at $CBF4, CBFD, CC3C, D05E, +2 more
Zp2E = $2E ; 2 refs; reads=1 writes=1; used at $DD36, DD3B
Zp2F = $2F ; 2 refs; reads=1 writes=1; used at $CA82
Zp30 = $30 ; 4 refs; reads=2 writes=2; used at $D037, D044, D088, E5AC
Zp31 = $31 ; 9 refs; reads=5 writes=4; used at $D216, D248, D256, D2A7, +5 more
Zp32 = $32 ; 14 refs; reads=6 writes=8; used at $D30A, D35C, D3DB, D809, +9 more
Zp33 = $33 ; 10 refs; reads=6 writes=4; used at $D3F4, D3F6, E0C7, E1F1, +6 more
Zp34 = $34 ; 10 refs; reads=5 writes=5; used at $D7F5, D7F7, D801, D821, +6 more
Zp35 = $35 ; 10 refs; reads=3 writes=7; used at $D3E5, D7E7, D805, D80E, +6 more
Zp36 = $36 ; 2 refs; reads=2 writes=0; used at $E207, E5B0
Zp37 = $37 ; 1 refs; reads=1 writes=0; used at $E5D9
Zp38 = $38 ; 1 refs; reads=1 writes=0; used at $E64D
Zp3A = $3A ; 2 refs; reads=1 writes=1; used at $D3D5, E580
Zp3C = $3C ; 1 refs; reads=1 writes=0; used at $E649
Zp3D = $3D ; 3 refs; reads=2 writes=1; used at $CF2F, D31F
Zp3E = $3E ; 9 refs; reads=4 writes=5; used at $D25A, D3C5, D3E9, E49C, +4 more
Zp40 = $40 ; 3 refs; reads=1 writes=2; used at $DE1C, DED3, DFB9
Zp41 = $41 ; 6 refs; reads=3 writes=3; used at $D3FA, E464, E4E2, E4E6, +1 more
Zp42 = $42 ; 4 refs; reads=2 writes=2; used at $D400, E466, E508, E51C
Zp43 = $43 ; 9 refs; reads=6 writes=3; used at $D243, D2A9, D2AD, D3AA, +5 more
Zp44 = $44 ; 5 refs; reads=4 writes=1; used at $D2A0, D33C, D3C9, D42F, +1 more
Zp45 = $45 ; 3 refs; reads=2 writes=1; used at $D206, D20A
Zp46 = $46 ; 3 refs; reads=1 writes=2; used at $D202, D30E, D3DF
Zp47 = $47 ; 2 refs; reads=1 writes=1; used at $D3AE, D3B4
Zp49 = $49 ; 4 refs; reads=2 writes=2; used at $E410, E414, E438
Zp4A = $4A ; 2 refs; reads=1 writes=1; used at $E418, E456
Zp4C = $4C ; 2 refs; reads=1 writes=1; used at $D333, D455
Zp4D = $4D ; 1 refs; reads=1 writes=0; used at $DF97
Zp4F = $4F ; 2 refs; reads=1 writes=1; used at $D267, D295
Zp70 = $70 ; 4 refs; reads=2 writes=2; used at $E05D, E061, E066
Zp71 = $71 ; 1 refs; reads=1 writes=0; used at $DFC7
Zp80 = $80 ; 5 refs; reads=4 writes=1; used at $D18B, E316, E326, E338
Zp81 = $81 ; 8 refs; reads=6 writes=2; used at $D191, DBDD, E301, E312, +3 more
Zp82 = $82 ; 8 refs; reads=7 writes=1; used at $D7E1, DE11, E0CB, E2DC, +3 more
Zp84 = $84 ; 8 refs; reads=5 writes=3; used at $D7DB, DBC6, DBFA, DCFD, +3 more
Zp85 = $85 ; 3 refs; reads=3 writes=0; used at $C5BD, D174, DB86
Zp86 = $86 ; 2 refs; reads=1 writes=1; used at $CA97, D184
Zp87 = $87 ; 5 refs; reads=3 writes=2; used at $D1B4, D1B8, E223, E233
Zp88 = $88 ; 11 refs; reads=8 writes=3; used at $D1EE, D261, D291, D304, +7 more
Zp89 = $89 ; 22 refs; reads=19 writes=3; used at $D1C6, D2B8, D2BD, D2CC, +18 more
Zp8A = $8A ; 1 refs; reads=1 writes=0; used at $DAA9
Zp8B = $8B ; 3 refs; reads=1 writes=2; used at $D1CA, D1F1, E5A0
Zp8D = $8D ; 1 refs; reads=0 writes=1; used at $DECF
Zp8E = $8E ; 2 refs; reads=1 writes=1; used at $DF53
Zp8F = $8F ; 2 refs; reads=1 writes=1; used at $DFD8, DFE2
Zp90 = $90 ; 5 refs; reads=3 writes=2; used at $DCF9, DD00, DD38, DD7A
Zp93 = $93 ; 4 refs; reads=4 writes=0; used at $D2E2, DBBF, E076, E2D8
Zp94 = $94 ; 2 refs; reads=2 writes=0; used at $DB5D, DBB4
Zp95 = $95 ; 2 refs; reads=2 writes=0; used at $DB62, DBB9
Zp96 = $96 ; 7 refs; reads=3 writes=4; used at $CB26, DB48, DB54, DB57, +1 more
Zp97 = $97 ; 3 refs; reads=1 writes=2; used at $DB5B, DB92
ZpA2 = $A2 ; 2 refs; reads=1 writes=1; used at $D030, D040
ZpA3 = $A3 ; 4 refs; reads=2 writes=2; used at $E7FE, E806, E80E
ZpA4 = $A4 ; 1 refs; reads=1 writes=0; used at $CC46
ZpA5 = $A5 ; 4 refs; reads=2 writes=2; used at $CA44, CC4B, E08C
ZpAB = $AB ; 1 refs; reads=1 writes=0; used at $E08A
ZpAC = $AC ; 1 refs; reads=1 writes=0; used at $DECD
ZpB1 = $B1 ; 2 refs; reads=1 writes=1; used at $E5FE, E66A
ZpB2 = $B2 ; 2 refs; reads=1 writes=1; used at $E611, E6BF
ZpB3 = $B3 ; 5 refs; reads=3 writes=2; used at $E64B, E651, E655, E680, +1 more
ZpB4 = $B4 ; 14 refs; reads=9 writes=5; used at $E5B2, E5D5, E66F, E674, +6 more
ZpB9 = $B9 ; 1 refs; reads=0 writes=1; used at $CBC7
ZpBA = $BA ; 1 refs; reads=0 writes=1; used at $CBC9
ZpC0 = $C0 ; 8 refs; reads=5 writes=3; used at $CBE8, CC29, CC2F, CC42, +4 more
ZpC1 = $C1 ; 2 refs; reads=2 writes=0; used at $E73E, E749
ZpC3 = $C3 ; 3 refs; reads=2 writes=1; used at $CECA, CEF1, CF27
ZpC4 = $C4 ; 6 refs; reads=3 writes=3; used at $CEE5, CEEE, CF0C, CF15, +2 more
ZpC5 = $C5 ; 7 refs; reads=4 writes=3; used at $CEDA, CEE3, CF01, CF0A, +3 more
ZpC6 = $C6 ; 8 refs; reads=5 writes=3; used at $CECF, CED8, CEF6, CEFF, +4 more
ZpCC = $CC ; 2 refs; reads=1 writes=1; used at $D2E6, D338
ZpCD = $CD ; 1 refs; reads=0 writes=1; used at $E280
ZpCE = $CE ; 1 refs; reads=0 writes=1; used at $E27A
ZpCF = $CF ; 2 refs; reads=1 writes=1; used at $E272, E29C
ZpD0 = $D0 ; 8 refs; reads=4 writes=4; used at $C1F5, C221, C223, C323, +2 more
ZpD1 = $D1 ; 4 refs; reads=2 writes=2; used at $C1F7, C25F, C261
ZpD2 = $D2 ; 4 refs; reads=2 writes=2; used at $C1F9, C29A, C29C
ZpD3 = $D3 ; 4 refs; reads=2 writes=2; used at $C1FB, C2F0, C2F2
ZpD4 = $D4 ; 2 refs; reads=1 writes=1; used at $C321, C330
ZpD8 = $D8 ; 3 refs; reads=1 writes=2; used at $C1EB, C213
ZpD9 = $D9 ; 3 refs; reads=1 writes=2; used at $C1ED, C251
ZpDA = $DA ; 3 refs; reads=1 writes=2; used at $C1EF, C28C
ZpDB = $DB ; 3 refs; reads=1 writes=2; used at $C1F1, C2E2
ZpDC = $DC ; 1 refs; reads=0 writes=1; used at $C02F
ZpE0 = $E0 ; 6 refs; reads=3 writes=3; used at $C31B, C31F, C32A, C32C
ZpE4 = $E4 ; 2 refs; reads=0 writes=2; used at $C360, C649
ZpE5 = $E5 ; 2 refs; reads=1 writes=1; used at $C029, C1BF
ZpE6 = $E6 ; 10 refs; reads=7 writes=3; used at $C04E, C1B6, C35E, C3B3, +6 more
ZpE9 = $E9 ; 1 refs; reads=0 writes=1; used at $C05E
ZpEA = $EA ; 1 refs; reads=0 writes=1; used at $C060
ZpEB = $EB ; 4 refs; reads=0 writes=4; used at $C21F, C25D, C294, C2EA
ZpEC = $EC ; 1 refs; reads=0 writes=1; used at $C067
ZpED = $ED ; 4 refs; reads=0 writes=4; used at $C21B, C259, C298, C2EE
ZpEE = $EE ; 1 refs; reads=0 writes=1; used at $C065
ZpEF = $EF ; 19 refs; reads=11 writes=8; used at $C074, C078, C095, C099, +15 more
ZpF0 = $F0 ; 7 refs; reads=3 writes=4; used at $C0BD, C34B, C3C9, CC31, +3 more
ZpF1 = $F1 ; 9 refs; reads=5 writes=4; used at $C0B1, C34D, C3C3, C465, +5 more
ZpF2 = $F2 ; 6 refs; reads=2 writes=4; used at $C34F, C5D1, CC35, D19F, +2 more
ZpF3 = $F3 ; 15 refs; reads=8 writes=7; used at $C06E, C072, C0C8, C0CF, +11 more
ZpF4 = $F4 ; 2 refs; reads=0 writes=2; used at $C19B, C1A9
ZpF5 = $F5 ; 1 refs; reads=0 writes=1; used at $C19F
ZpF6 = $F6 ; 2 refs; reads=1 writes=1; used at $C1A1, C1A7
ZpF7 = $F7 ; 1 refs; reads=0 writes=1; used at $C1A3
ZpF8 = $F8 ; 2 refs; reads=1 writes=1; used at $C1C4, C225
ZpF9 = $F9 ; 2 refs; reads=1 writes=1; used at $C1C9, C20F
ZpFA = $FA ; 2 refs; reads=1 writes=1; used at $C1CE, C263
ZpFB = $FB ; 2 refs; reads=1 writes=1; used at $C1D3, C24D
ZpFC = $FC ; 2 refs; reads=1 writes=1; used at $C1D8, C29E
ZpFD = $FD ; 2 refs; reads=1 writes=1; used at $C1DD, C288
ZpFE = $FE ; 2 refs; reads=1 writes=1; used at $C1E2, C2F4
ZpFF = $FF ; 2 refs; reads=1 writes=1; used at $C1E7, C2DE
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,435 @@
al 00E80C .InitSoundExit_E80C
al 00E80B .InitSoundCallE5AC
al 00E7FE .InitSoundExit
al 00E7F7 .InitSoundEntry
al 00E7EF .InitSound
al 00E7F9 .InitSoundCallE4E2
al 00E7DB .InitSpriteDataCallE5ACAlt6
al 00E7C6 .InitSpriteDataCallE5ACAlt5
al 00E7BE .InitSpriteDataCallE4E2Alt5
al 00E7D6 .InitSpriteDataCallE4E2Alt6
al 00E7B6 .InitSpriteDataExit
al 00E7AF .InitSpriteDataCallE4E2Alt4
al 00E7AB .InitSpriteDataCallE5ACAlt3
al 00E7A7 .InitSpriteDataCallE4E2Alt3
al 00E7B1 .InitSpriteDataCallE5ACAlt4
al 00E793 .InitSpriteData
al 00E77C .InitSpriteDataCallE5ACAlt2
al 00E768 .InitSpriteDataCallE5ACAlt
al 00E777 .InitSpriteDataCallE4E2Alt2
al 00E749 .InitSpriteDataCallE4E2
al 00E753 .InitSpriteDataCallE5AC
al 00E72D .InitSpriteDataLoop
al 00E764 .InitSpriteDataCallE4E2Alt
al 00E70C .InitSpriteDataEntry
al 00E6FA .UpdateMusicLoopExit
al 00E6F9 .UpdateMusicLoopCallE4E2Alt4
al 00E6F2 .UpdateMusicLoopCallE5ACAlt2
al 00E6E6 .UpdateMusicLoopCallE4E2Alt3
al 00E6E3 .UpdateMusicLoopCallE5ACAlt
al 00E6DD .UpdateMusicLoopCallE4E2Alt2
al 00E6D4 .UpdateMusicLoop
al 00E6CE .UpdateMusicLoopCallE4E2Alt
al 00E6BE .UpdateMusicLoopCallE5AC
al 00E695 .UpdateMusicLoopEntry
al 00E6A8 .UpdateMusicLoopCallE4E2
al 00E669 .UpdateMusicCallE4E2Alt6
al 00E65A .UpdateMusicCallE5ACAlt5
al 00E641 .UpdateMusicCallE4E2Alt5
al 00E630 .UpdateMusicCallE5ACAlt4
al 00E62F .UpdateMusicCallE4E2Alt4
al 00E62D .UpdateMusicCallE5ACAlt3
al 00E61B .UpdateMusicAlt
al 00E617 .UpdateMusicExit
al 00E60E .UpdateMusicCallE4E2Alt3
al 00E5FB .UpdateMusicCallE5ACAlt2
al 00E5D9 .UpdateMusicCallE4E2Alt
al 00E5E5 .UpdateMusicCallE5ACAlt
al 00E5CD .UpdateMusicCallE5AC
al 00E5E4 .UpdateMusicCallE4E2Alt2
al 00E5AC .UpdateMusicCallE4E2
al 00E595 .PlaySoundEffectCallE5ACAlt3
al 00E594 .PlaySoundEffectCallE4E2Alt4
al 00E5AB .UpdateMusicEntry
al 00E56B .PlaySoundEffectCallE4E2Alt3
al 00E582 .PlaySoundEffectCallE5ACAlt2
al 00E54A .PlaySoundEffectAlt
al 00E543 .PlaySoundEffectCallE4E2Alt2
al 00E549 .PlaySoundEffectCallE5ACAlt
al 00E535 .PlaySoundEffectExit
al 00E52F .PlaySoundEffectCallE4E2Alt
al 00E52B .PlaySoundEffectCallE5AC
al 00E50A .PlaySoundEffectEntry
al 00E506 .PlaySoundEffect
al 00E4F6 .UpdateSoundCallE4E2Alt7
al 00E52A .PlaySoundEffectCallE4E2
al 00E4EA .UpdateSoundCallE5ACAlt2
al 00E4E2 .UpdateSoundAltExit
al 00E4BD .UpdateSoundCallE4E2Alt5
al 00E4A4 .UpdateSoundAlt
al 00E4AE .UpdateSoundCallE5ACAlt
al 00E4BF .UpdateSoundCallE4E2Alt6
al 00E496 .UpdateSoundCallE4E2Alt3
al 00E48A .UpdateSoundCallE4E2Alt2
al 00E479 .UpdateSoundCallE4E2Alt
al 00E46E .UpdateSoundCallE5AC
al 00E469 .UpdateSoundCallE4E2
al 00E462 .UpdateSoundEntry
al 00E461 .HandleRoundStartCallE4E2Alt4
al 00E459 .UpdateSound
al 00E450 .HandleRoundStartCallE4E2Alt2
al 00E438 .HandleRoundStartCallE4E2Alt
al 00E42A .HandleRoundStartCallE5AC
al 00E41A .HandleRoundStartCallE4E2
al 00E458 .HandleRoundStartCallE4E2Alt3
al 00E418 .HandleRoundStartEntry
al 00E40E .HandleRoundStartExit
al 00E334 .HandleGameOverCallE4E2Alt
al 00E346 .HandleGameOverCallE4E2Alt2
al 00E31E .HandleGameOverCallE5AC
al 00E312 .HandleGameOverCallE4E2
al 00E30F .HandleGameOverEntry
al 00E2FF .HandlePlayer2LogicCallE4E2Alt3
al 00E2E5 .HandlePlayer2LogicCallE4E2Alt2
al 00E34F .HandleGameOverCallE4E2Alt3
al 00E2D8 .HandlePlayer2LogicCallE4E2Alt
al 00E2C9 .HandlePlayerLogicExit
al 00E2C1 .HandlePlayer2LogicCallE5AC
al 00E2B9 .HandlePlayer2Logic
al 00E2A3 .HandlePlayer2LogicStxZp31
al 00E29C .HandlePlayer2LogicCpyZp43
al 00E2B8 .HandlePlayer2LogicCallE4E2
al 00E290 .HandlePlayer2LogicEntry
al 00E26C .HandlePlayer1LogicCallE4E2Alt
al 00E255 .HandlePlayer1LogicCallE5AC
al 00E24A .HandlePlayer1LogicCallE4E2
al 00E236 .HandlePlayer1LogicLdaZp87
al 00E235 .HandlePlayer1LogicBeq
al 00E21E .HandlePlayer1LogicLda0258
al 00E20D .HandlePlayer1LogicInx
al 00E207 .HandlePlayer1LogicLdxZp36
al 00E1FD .HandlePlayer2Dex
al 00E1CD .HandlePlayer2CallE1FDEntry
al 00E11A .HandlePlayer2CallE1FD
al 00E0B7 .HandlePlayer1BeqE235
al 00E0B4 .HandlePlayer1CheckZp87
al 00E11C .HandlePlayer2Entry
al 00E076 .HandlePlayer1Alt
al 00E06D .HandlePlayer1CallE1CD
al 00E064 .HandlePlayer2Exit
al 00E073 .HandlePlayer1CallE1FD
al 00E052 .HandlePlayer1BeqE075
al 00E056 .HandlePlayer1LdxZp89
al 00E075 .HandlePlayer1Entry
al 00E040 .HandlePlayer1CheckZpC0
al 00DFDF .HandleKODexBne
al 00DFE5 .HandleKOBeqDFE4
al 00DFDA .HandleKODex
al 00DFE4 .HandleKOCheckZp1F
al 00DFBC .HandleKOCheckZp1F_DFBC
al 00DFAE .HandleKOBeqDFB7
al 00DFB7 .HandleKOLda0321
al 00DF9E .HandleKOCheckZp88
al 00DF8D .HandleKOCmp07
al 00DF7A .HandleKOLoop
al 00DF75 .HandleKOAnd07
al 00DF74 .HandleKOLda05EC
al 00DF53 .HandleKOEntry
al 00DF4C .UpdateRoundStateAlt
al 00DEC9 .UpdateRoundState
al 00DE1C .ProcessInputsEntry
al 00DE35 .ProcessInputsCheckZp1F
al 00DE03 .ProcessInputsExit
al 00DD96 .UpdateTimersBneDDAB
al 00DDAB .UpdateTimersCallCDE0
al 00DD8C .UpdateTimersAnd1F
al 00DD34 .UpdateTimersBeqDD34
al 00DD3B .UpdateTimersCmp02Alt
al 00DD33 .UpdateTimersBeqDD33Alt
al 00DD00 .UpdateTimersCmp02
al 00DCFF .UpdateTimersBeqDD33
al 00DCF6 .UpdateTimersEntry
al 00DBF0 .SpriteDMARTS
al 00DBDD .SpriteDMACallCDE0
al 00DBEF .SpriteDMACallDD8C
al 00DBBF .SpriteDMACheckZp93
al 00DBAA .SpriteDMADex
al 00DBA6 .SpriteDMALoop_DBA6
al 00DB9E .SpriteDMALdaF940
al 00DB8E .SpriteDMALdx0A
al 00DB7D .SpriteDMALoopEntry
al 00DB92 .SpriteDMALdy0A
al 00DB57 .SpriteDMACmp02
al 00DB91 .SpriteDMABeqDB91
al 00DB48 .SpriteDMACheckZp96_DB48
al 00DAB3 .SpriteDMACheckZp96
al 00DAA7 .CheckCollisions
al 00DA25 .TitleScreenSetMode
al 00D828 .UpdatePlayerPositionsStxZp31
al 00D825 .UpdatePlayerPositionsEntry
al 00D80C .UpdatePlayerPositionsExit
al 00D807 .UpdatePlayerPositionsSetZp32
al 00D7FC .UpdatePlayerPositionsCheckZp84
al 00D7DB .UpdatePlayerPositions
al 00D447 .DrawRoundNumberADC06
al 00D444 .DrawRoundNumberClc
al 00D436 .DrawRoundNumberCalc
al 00D463 .DrawRoundNumberCallE4E2
al 00D45B .DrawRoundNumberCallE7A7
al 00D411 .UpdateScoreLDY02
al 00D408 .UpdateScoreBneD3CE
al 00D3F3 .UpdateScoreSetZp31Alt3
al 00D3CE .UpdateScoreCallE46E
al 00D3D1 .UpdateScoreBneD40E
al 00D3BD .UpdateScoreSetZp31Alt2
al 00D40E .UpdateScoreExit
al 00D3C3 .UpdateScoreBneD408
al 00D3A4 .UpdateScoreCheckZp88Alt
al 00D392 .UpdateScoreLdx02
al 00D367 .UpdateScoreSetZp31Alt
al 00D35E .UpdateScoreCpy0D
al 00D34B .UpdateScoreCallE462
al 00D341 .UpdateScoreCallE459
al 00D327 .UpdateScoreLdxZp89
al 00D332 .UpdateScoreCallE2B9
al 00D31F .UpdateScoreBeqD31F
al 00D313 .UpdateScoreLoadZp1F
al 00D304 .UpdateScoreSetZp31
al 00D301 .UpdateScoreCheckZp88
al 00D300 .UpdateScoreEntry
al 00D2CA .UpdatePlayersCheckZp1F
al 00D2AF .UpdatePlayersCallE4E2Alt
al 00D2AD .UpdatePlayersCallE4E2
al 00D2C4 .UpdatePlayersCallE462
al 00D2A7 .UpdatePlayersStxZp31Alt
al 00D2A5 .UpdatePlayersEntryAlt
al 00D2B2 .UpdatePlayersCallE5AC
al 00D2C7 .UpdatePlayersCallE462_CF
al 00D289 .UpdatePlayersCpyZp43Alt
al 00D27B .UpdatePlayersEntry
al 00D2A9 .UpdatePlayersStyZp43Alt
al 00D29E .UpdatePlayersStyZp43
al 00D261 .UpdatePlayersStxZp31
al 00D254 .UpdatePlayersCpyZp43
al 00D243 .UpdatePlayersBitZp00
al 00D213 .UpdatePlayersCheckZp00
al 00D1EA .UpdatePPUMaskLdx01
al 00D1E8 .UpdatePPUMaskBCS
al 00D1F9 .UpdatePPUMaskSetZp88
al 00D1CA .UpdatePPUMaskCheckZp8B
al 00D1C4 .UpdatePPUMaskEntry
al 00D1AE .UpdatePPUMaskASL
al 00D1A4 .UpdatePPUMaskCheckZp85
al 00D187 .UpdatePPUMaskExit
al 00D174 .UpdatePPUMask
al 00D08E .SpriteDMA
al 00D088 .SpriteDMASetZp00
al 00D086 .SpriteDMALoop_D086
al 00D084 .SpriteDMAEntry
al 00D07E .SetupInitialStateLoop
al 00D07A .SetupInitialStateEntry
al 00D066 .UpdateRoundTimerInitCallCE3A
al 00D05E .UpdateRoundTimerInitSetZp09
al 00D057 .UpdateRoundTimer
al 00D050 .UpdateRoundTimerInitSetPtr
al 00D044 .DrawBackgroundLdx0
al 00D040 .DrawBackgroundSetZpA2Alt
al 00D034 .DrawBackgroundSetZpA2
al 00D030 .DrawBackgroundEntry
al 00D01A .UpdateRoundTimerInit
al 00D015 .UpdateRoundTimerBeq
al 00D012 .UpdateRoundTimerCallD057
al 00CFB3 .CheckRoundEndEntry
al 00CFA1 .CheckRoundEnd
al 00CF92 .UpdateSpritePositions
al 00CF8F .ScrollBackgroundStaZp01Alt2
al 00CF83 .ScrollBackgroundCallCF92Alt2
al 00CF70 .ScrollBackgroundCallCF92Alt
al 00CF67 .ScrollBackgroundCmp0A_CF67
al 00CF6B .ScrollBackgroundSbcZp01_CF6B
al 00CF5A .ScrollBackgroundAdcZp01_CF5A
al 00CF4F .ScrollBackgroundCallCF92Entry
al 00CF4E .ScrollBackgroundCallCF92
al 00CF25 .ScrollBackgroundStaZp01Alt
al 00CF23 .ScrollBackgroundSbcZp01_CF23
al 00CECE .ScrollBackgroundStaZp01
al 00CEF5 .ScrollBackgroundCmp0A_CEF5
al 00CEF1 .ScrollBackgroundAdcZp01_CEF1
al 00CEC5 .ScrollBackgroundAnd0F
al 00CEBE .ScrollBackgroundAdc01
al 00CEBD .ScrollBackgroundCmp6F_CEBD
al 00CEAD .ScrollBackgroundTXA_CEAD
al 00CE83 .ScrollBackgroundInx
al 00CE6C .ScrollBackgroundLoop
al 00CE55 .ScrollBackgroundSetZp21
al 00CE43 .ScrollBackground
al 00CE3A .ScrollBackgroundRead2002
al 00CE26 .ScrollBackgroundCmp6F_CE26
al 00CE23 .ScrollBackgroundTXA_CE23
al 00CE20 .ScrollBackgroundIncX
al 00CE14 .ScrollBackgroundEntry
al 00CDFE .RoundLogicSaveXY
al 00CDE0 .ProcessControllerInput
al 00CDDC .RoundLogicBplCDD6
al 00CDD6 .RoundLogicDecZp2A
al 00CDCA .RoundLogicEntry
al 00CDC3 .ProcessControllerInputStaZp09
al 00CDAA .ProcessControllerInputOra18
al 00CD94 .ProcessControllerInputAnd04
al 00CD85 .ProcessControllerInputRead2002Alt2
al 00CD6C .ProcessControllerInputAndFB
al 00CD5D .ProcessControllerInputRead2002
al 00CD76 .ProcessControllerInputStaZp08
al 00CD84 .ProcessControllerInputRead2002Alt
al 00CD41 .ProcessControllerInputEntry
al 00CD38 .RoundLogicSet21
al 00CD33 .RoundLogicBeqCD84
al 00CD22 .RoundLogicCheckZp21
al 00CCFD .ProcessControllerInputStore
al 00CCFB .ProcessControllerInputLoop
al 00CCF3 .UpdatePalettesZeroY
al 00CCE3 .UpdatePalettesCheckZp27
al 00CCD0 .UpdatePlayers
al 00CCC3 .UpdateOAMCheckZp27
al 00CCCF .UpdateOAMZeroY
al 00CCAF .UpdatePalettes
al 00CC97 .UpdateOAMCheckZp23
al 00CCAE .UpdateOAMDecrement
al 00CC85 .UpdateOAM_CC85
al 00CC7B .UpdateOAMClear200
al 00CC77 .UpdateOAMExit
al 00CC6E .UpdateOAMSetPointer
al 00CC67 .UpdateOAM_CC67
al 00CC5C .UpdateScrollCheckZpA4
al 00CC42 .UpdateScrollCheckDispatchAlt
al 00CC3A .UpdateScrollCheckDispatch
al 00CC3E .UpdateScrollReadZpA4
al 00CC24 .InitSpritesSet5FD
al 00CC15 .InitSpritesIncY
al 00CC29 .UpdateScrollReadDispatch
al 00CC1B .InitSpritesCpy02
al 00CC02 .UpdateScrollCheckZp1F
al 00CBF7 .InitSpritesAlt
al 00CBDA .UpdateScrollLogic
al 00CC0B .InitSpritesExit
al 00CBE2 .InitSprites
al 00CBFB .InitSpritesBeqCBFB
al 00CBC0 .InitSpritesZero5FF
al 00CBB6 .InitSpritesSetPos
al 00CB55 .GameplayFrameCallE70C
al 00CB51 .GameplayFrameCallD012
al 00CB4E .CheckControllerStartJmp
al 00CB4B .CheckControllerStartWait
al 00CB0F .CheckControllerStartLoop
al 00CB06 .CheckControllerStartEntry
al 00CB31 .CheckControllerStartExit
al 00CB66 .UpdateScrollEntry
al 00CB61 .TitleScreenLoopCallInitAPU
al 00CAE1 .TitleScreenCheckMode
al 00CADA .UpdateScroll
al 00CAB2 .NmiFrameUpdate4
al 00CAB5 .NmiExit
al 00CAC2 .NmiVBlankOnly_CAC2
al 00CA91 .NmiHandler
al 00CA76 .GameplayFrame
al 00CA73 .CallInitAPU
al 00CA69 .TitleScreenLoop
al 00CA87 .MainGameLoop
al 00CA5E .CopyConfigData
al 00CA2F .StoreConfig
al 00CA21 .ClearRAMLoop
al 00CA02 .WaitPPUReady
al 00CA00 .Reset
al 00C64E .WaitVBlankCallC1B2Zero
al 00C647 .WaitVBlankZeroE4
al 00C644 .WaitVBlankJmpC20F
al 00C63D .WaitVBlankCallC1B2Alt2
al 00C60B .WaitVBlankStore
al 00C5F6 .WaitVBlankDecD8
al 00C5F5 .WaitVBlankLoop_C5F5
al 00C637 .WaitVBlankCallC1B2Alt
al 00C605 .WaitVBlankCheckFA
al 00C622 .WaitVBlankCallC1B2
al 00C5F9 .WaitVBlankDecD9
al 00C5FF .WaitVBlankCheckFF
al 00C5D1 .InitGameState4
al 00C5CA .InitGameState4CheckF2Alt
al 00C5C5 .InitGameState4DecD8
al 00C5AB .InitGameState4CheckF9
al 00C5A4 .InitGameState4MaskEF
al 00C590 .InitGameState4ClearEF
al 00C593 .InitGameState4MaskF3
al 00C55A .InitGameState4Loop
al 00C542 .InitGameState4CheckF2
al 00C52D .InitGameState3Alt
al 00C520 .InitGameState3Loop
al 00C512 .InitGameState3CheckE6
al 00C508 .InitGameState3
al 00C4F4 .InitSpritesSetF4
al 00C4E6 .InitSpritesCheck10CAF
al 00C4E3 .InitSpritesCheck10C
al 00C4CA .InitSpritesCheck10BMax
al 00C4C3 .InitSpritesInc10B
al 00C4BB .InitSpritesCheck10B
al 00C4A4 .InitSpritesAlt2Entry
al 00C4A5 .InitSpritesAlt2Loop
al 00C49C .InitSpritesAlt1Loop
al 00C48A .InitGameState2Exit
al 00C478 .InitSpritesAlt1Entry
al 00C465 .InitGameState2
al 00C44A .InitSpritesSetF2
al 00C444 .InitSpritesCheckF2
al 00C425 .InitSpritesAlt8
al 00C41E .InitSpritesAlt7
al 00C408 .InitSpritesAlt6
al 00C40F .InitSpritesSetF3
al 00C3E3 .InitSpritesSetE4
al 00C3E9 .InitSpritesSetE6
al 00C3C3 .InitSpritesCheckE6
al 00C3B3 .InitSpritesExit_C3B3
al 00C3FF .InitSpritesCallChain
al 00C3AD .InitSpritesAltExit
al 00C40E .InitSpritesCheckF1
al 00C39A .InitSpritesLoop
al 00C405 .InitSpritesClearEF
al 00C384 .InitSpritesMain
al 00C37D .InitSpritesAlt2
al 00C376 .InitSpritesAlt1
al 00C358 .InitAPURegisters
al 00C352 .ClearControllerState
al 00C335 .InitAPU
al 00C332 .InitAPUCall
al 00C327 .InitGameStateExit
al 00C31B .InitGameState
al 00C30D .ClearRAMPageLoop
al 00C30C .ClearRAMPage
al 00C2A5 .InitGameVariables
al 00C2DE .ClearRAM
al 00C288 .WaitVBlankLoop
al 00C22C .CopySpriteTablesLoop
al 00C24D .WaitVBlank
al 00C20F .CopySpriteTables
al 00C1B2 .SetupSpriteDataLoop
al 00C1A7 .SetupSpriteData
al 00C199 .LoadBackgroundDataAlt
al 00C195 .LoadBackgroundDataLoop
al 00C19B .LoadBackgroundDataExit
al 00C18D .LoadBackgroundData
al 00C0F1 .InitAPUFrameCounter
al 00C0FC .InitPPUFinal
al 00C0E0 .InitPPULoop
al 00C0F8 .InitAPUFrameCounterExit
al 00C0CF .InitPPU
al 00C0B1 .InitControllerTablesExit
al 00C0AE .InitControllerTablesAlt
al 00C0A0 .InitControllerTablesLoop
al 00C087 .InitControllerTables
al 00C06E .UpdateControllerState
al 00C063 .InitSoundPointers
al 00C05E .SaveXY
al 00C058 .InitAPUWaveform
al 00C056 .SetAPUSweep
al 00C04E .SetAPUVolume
al 00C026 .ScaleInputIndex
al 00C003 .CheckControllerStart
al 00C000 .InitAPU_C000
Binary file not shown.
Binary file not shown.