; Tennis NES disassembly - Pass 1 ; Generated from the supplied 16 KiB PRG image. ; Pass 1 classifies recursively reachable code, inline address tables, vectors, ; and untraced/data regions. All PRG data bytes are emitted explicitly with .byte directives. .setcpu "6502" .include "symbols.inc" .include "locals.inc" .segment "PRG" .org $C000 ; ============================================================================= ; Reset ; CPU address: $C000 PRG offset: $0000 ; ; Global description: ; RESET and IRQ/BRK entry. Initializes CPU, PPU, RAM, and game state before entering the foreground loop. ; ; Parameters: ; None; entered through a hardware vector. ; ; Returns: ; Does not return. ; ============================================================================= Reset: cld ; CPU:$C000 PRG:0000 D8 sei ; CPU:$C001 PRG:0001 78 Flow_C002: lda PPUSTATUS ; CPU:$C002 PRG:0002 AD 02 20 bpl Flow_C002 ; CPU:$C005 PRG:0005 10 FB ldx #$00 ; CPU:$C007 PRG:0007 A2 00 stx PPUCTRL ; CPU:$C009 PRG:0009 8E 00 20 stx PPUMASK ; CPU:$C00C PRG:000C 8E 01 20 dex ; CPU:$C00F PRG:000F CA txs ; CPU:$C010 PRG:0010 9A ldx FrameCounter ; CPU:$C011 PRG:0011 A6 27 ldy #$06 ; CPU:$C013 PRG:0013 A0 06 sty WorkPtrHi ; CPU:$C015 PRG:0015 84 02 ldy #$00 ; CPU:$C017 PRG:0017 A0 00 sty WorkPtrLo ; CPU:$C019 PRG:0019 84 01 lda #$00 ; CPU:$C01B PRG:001B A9 00 Flow_C01D: sta (WorkPtrLo),y ; CPU:$C01D PRG:001D 91 01 dey ; CPU:$C01F PRG:001F 88 bne Flow_C01D ; CPU:$C020 PRG:0020 D0 FB dec WorkPtrHi ; CPU:$C022 PRG:0022 C6 02 bpl Flow_C01D ; CPU:$C024 PRG:0024 10 F7 txa ; CPU:$C026 PRG:0026 8A bne Flow_C02B ; CPU:$C027 PRG:0027 D0 02 ldx #$5F ; CPU:$C029 PRG:0029 A2 5F Flow_C02B: stx $0500 ; CPU:$C02B PRG:002B 8E 00 05 jsr ClearNametables ; CPU:$C02E PRG:002E 20 95 C1 jsr HideAllSprites ; CPU:$C031 PRG:0031 20 A5 C1 ldy #$00 ; CPU:$C034 PRG:0034 A0 00 sta PPUSCROLL ; CPU:$C036 PRG:0036 8D 05 20 sta PPUSCROLL ; CPU:$C039 PRG:0039 8D 05 20 iny ; CPU:$C03C PRG:003C C8 sty GameActiveFlag ; CPU:$C03D PRG:003D 84 38 lda #$0F ; CPU:$C03F PRG:003F A9 0F sta APUSTATUS ; CPU:$C041 PRG:0041 8D 15 40 lda #$90 ; CPU:$C044 PRG:0044 A9 90 sta PPUCTRL ; CPU:$C046 PRG:0046 8D 00 20 sta PpuCtrlShadow ; CPU:$C049 PRG:0049 85 09 lda #$06 ; CPU:$C04B PRG:004B A9 06 sta PpuMaskShadow ; CPU:$C04D PRG:004D 85 0A ; ============================================================================= ; MainLoop ; CPU address: $C04F PRG offset: $004F ; ; Global description: ; Foreground frame loop synchronized with work performed by NMI. ; ; Parameters: ; Reset initialization completed. ; ; Returns: ; Does not return. ; ============================================================================= MainLoop: lda #$00 ; CPU:$C04F PRG:004F A9 00 sta NmiWorkComplete ; CPU:$C051 PRG:0051 85 30 lda GameActiveFlag ; CPU:$C053 PRG:0053 A5 38 beq Flow_C05D ; CPU:$C055 PRG:0055 F0 06 lda GameStateStep ; CPU:$C057 PRG:0057 A5 3E cmp #$01 ; CPU:$C059 PRG:0059 C9 01 bne Flow_C060 ; CPU:$C05B PRG:005B D0 03 Flow_C05D: jsr RunAudioEngine ; CPU:$C05D PRG:005D 20 F7 FF Flow_C060: jsr UpdateTimers ; CPU:$C060 PRG:0060 20 75 C3 jsr UpdateGameState ; CPU:$C063 PRG:0063 20 AA C0 lda #$01 ; CPU:$C066 PRG:0066 A9 01 sta NmiUpdatesEnabled ; CPU:$C068 PRG:0068 85 32 Flow_C06A: lda NmiWorkComplete ; CPU:$C06A PRG:006A A5 30 beq Flow_C077 ; CPU:$C06C PRG:006C F0 09 inc FrameCounter ; CPU:$C06E PRG:006E E6 27 lda #$00 ; CPU:$C070 PRG:0070 A9 00 sta NmiUpdatesEnabled ; CPU:$C072 PRG:0072 85 32 jmp MainLoop ; CPU:$C074 PRG:0074 4C 4F C0 Flow_C077: jsr RollRng ; CPU:$C077 PRG:0077 20 56 C4 jmp Flow_C06A ; CPU:$C07A PRG:007A 4C 6A C0 ; ============================================================================= ; NmiHandler ; CPU address: $C07D PRG offset: $007D ; ; Global description: ; Vertical-blank NMI handler. Preserves registers, performs OAM DMA and frame-synchronized updates, then returns from interrupt. ; ; Parameters: ; None; entered through the NMI vector. ; ; Returns: ; Returns with RTI; A, X, and Y are preserved by the visible handler. ; ============================================================================= NmiHandler: pha ; CPU:$C07D PRG:007D 48 txa ; CPU:$C07E PRG:007E 8A pha ; CPU:$C07F PRG:007F 48 tya ; CPU:$C080 PRG:0080 98 pha ; CPU:$C081 PRG:0081 48 lda #$00 ; CPU:$C082 PRG:0082 A9 00 sta OAMADDR ; CPU:$C084 PRG:0084 8D 03 20 lda #$02 ; CPU:$C087 PRG:0087 A9 02 sta OAMDMA ; CPU:$C089 PRG:0089 8D 14 40 lda NmiUpdatesEnabled ; CPU:$C08C PRG:008C A5 32 beq Flow_C0A0 ; CPU:$C08E PRG:008E F0 10 jsr WritePalette ; CPU:$C090 PRG:0090 20 B5 C1 jsr WritePpuBuffer ; CPU:$C093 PRG:0093 20 EC C2 jsr SetScroll ; CPU:$C096 PRG:0096 20 FD C3 jsr ReadControllers ; CPU:$C099 PRG:0099 20 A4 C2 ldy #$01 ; CPU:$C09C PRG:009C A0 01 sty NmiWorkComplete ; CPU:$C09E PRG:009E 84 30 Flow_C0A0: lda #$01 ; CPU:$C0A0 PRG:00A0 A9 01 sta NmiTriggerFlag ; CPU:$C0A2 PRG:00A2 85 33 pla ; CPU:$C0A4 PRG:00A4 68 tay ; CPU:$C0A5 PRG:00A5 A8 pla ; CPU:$C0A6 PRG:00A6 68 tax ; CPU:$C0A7 PRG:00A7 AA pla ; CPU:$C0A8 PRG:00A8 68 rti ; CPU:$C0A9 PRG:00A9 40 ; ============================================================================= ; UpdateGameState ; CPU address: $C0AA PRG offset: $00AA ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= UpdateGameState: lda GameActiveFlag ; CPU:$C0AA PRG:00AA A5 38 beq Flow_C0B1 ; CPU:$C0AC PRG:00AC F0 03 jmp Flow_C119 ; CPU:$C0AE PRG:00AE 4C 19 C1 Flow_C0B1: lda ControllerHeld ; CPU:$C0B1 PRG:00B1 A5 1A and #$10 ; CPU:$C0B3 PRG:00B3 29 10 beq Flow_C0F8 ; CPU:$C0B5 PRG:00B5 F0 41 ldy StartButtonLatch ; CPU:$C0B7 PRG:00B7 A4 34 bne Flow_C0FC ; CPU:$C0B9 PRG:00B9 D0 41 iny ; CPU:$C0BB PRG:00BB C8 sty StartButtonLatch ; CPU:$C0BC PRG:00BC 84 34 ldy GameState ; CPU:$C0BE PRG:00BE A4 3D cpy #$07 ; CPU:$C0C0 PRG:00C0 C0 07 beq Flow_C0EA ; CPU:$C0C2 PRG:00C2 F0 26 cpy #$04 ; CPU:$C0C4 PRG:00C4 C0 04 beq Flow_C0CC ; CPU:$C0C6 PRG:00C6 F0 04 cpy #$06 ; CPU:$C0C8 PRG:00C8 C0 06 bne Flow_C0FC ; CPU:$C0CA PRG:00CA D0 30 Flow_C0CC: ldx #$07 ; CPU:$C0CC PRG:00CC A2 07 Flow_C0CE: lda Zp20,x ; CPU:$C0CE PRG:00CE B5 20 sta Zp28,x ; CPU:$C0D0 PRG:00D0 95 28 dex ; CPU:$C0D2 PRG:00D2 CA bpl Flow_C0CE ; CPU:$C0D3 PRG:00D3 10 F9 lda PpuMaskShadow ; CPU:$C0D5 PRG:00D5 A5 0A and #$0E ; CPU:$C0D7 PRG:00D7 29 0E sta PPUMASK ; CPU:$C0D9 PRG:00D9 8D 01 20 sta PpuMaskShadow ; CPU:$C0DC PRG:00DC 85 0A sty Zp3B ; CPU:$C0DE PRG:00DE 84 3B lda #$07 ; CPU:$C0E0 PRG:00E0 A9 07 sta GameState ; CPU:$C0E2 PRG:00E2 85 3D jsr MatchRoutine_CBCB ; CPU:$C0E4 PRG:00E4 20 CB CB jmp Flow_C0F2 ; CPU:$C0E7 PRG:00E7 4C F2 C0 Flow_C0EA: lda #$14 ; CPU:$C0EA PRG:00EA A9 14 sta Zp21 ; CPU:$C0EC PRG:00EC 85 21 lda #$0A ; CPU:$C0EE PRG:00EE A9 0A sta GameState ; CPU:$C0F0 PRG:00F0 85 3D Flow_C0F2: lda #$80 ; CPU:$C0F2 PRG:00F2 A9 80 sta AudioRequestFlags1 ; CPU:$C0F4 PRG:00F4 85 FD ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $00F6-$00F7. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C0F6: .byte $D0, $04 ; PRG $00F6 / CPU $C0F6 ; CPU:$C0F6 PRG:00F6 D0 04 Flow_C0F8: lda #$00 ; CPU:$C0F8 PRG:00F8 A9 00 sta StartButtonLatch ; CPU:$C0FA PRG:00FA 85 34 Flow_C0FC: lda GameState ; CPU:$C0FC PRG:00FC A5 3D jsr DispatchInlineAddressTable ; CPU:$C0FE PRG:00FE 20 8B C3 ; ----------------------------------------------------------------------------- ; Inline address table at CPU $C101; 12 little-endian entries. ; Consumed by DispatchInlineAddressTable; this region is data, not code. ; ----------------------------------------------------------------------------- GameStateHandlerTable: .word GameState00_InitializeMatch ; CPU:$C101 PRG:0101 0A .word GameState01_WaitForServe ; CPU:$C103 PRG:0103 ?? .word GameState02_PrepareRally ; CPU:$C105 PRG:0105 ?? .word GameState03_RunRally ; CPU:$C107 PRG:0107 ?? .word GameState04_PointEnded ; CPU:$C109 PRG:0109 ?? .word GameState05_UpdateScore ; CPU:$C10B PRG:010B ?? .word GameState06_AdvanceGame ; CPU:$C10D PRG:010D ?? .word GameState07_PauseOrTransition ; CPU:$C10F PRG:010F ?? .word GameState08_WaitForTimer ; CPU:$C111 PRG:0111 ?? .word GameState09_RestorePreviousState ; CPU:$C113 PRG:0113 ?? .word GameState0A_ResumePreviousState ; CPU:$C115 PRG:0115 ?? .word GameState0B_FinishTransition ; CPU:$C117 PRG:0117 ?? Flow_C119: lda ControllerHeld ; CPU:$C119 PRG:0119 A5 1A and #$30 ; CPU:$C11B PRG:011B 29 30 cmp #$10 ; CPU:$C11D PRG:011D C9 10 bne Flow_C134 ; CPU:$C11F PRG:011F D0 13 lda #$00 ; CPU:$C121 PRG:0121 A9 00 sta GameActiveFlag ; CPU:$C123 PRG:0123 85 38 sta GameState ; CPU:$C125 PRG:0125 85 3D sta PendingStateFlag ; CPU:$C127 PRG:0127 85 43 jsr MatchRoutine_CBCB ; CPU:$C129 PRG:0129 20 CB CB jsr DisableRendering ; CPU:$C12C PRG:012C 20 0A C4 lda SelectedGameMode ; CPU:$C12F PRG:012F A5 E0 sta GameMode ; CPU:$C131 PRG:0131 85 39 rts ; CPU:$C133 PRG:0133 60 Flow_C134: ldx GameStateStep ; CPU:$C134 PRG:0134 A6 3E beq Flow_C159 ; CPU:$C136 PRG:0136 F0 21 cmp #$20 ; CPU:$C138 PRG:0138 C9 20 bne Flow_C15B ; CPU:$C13A PRG:013A D0 1F cpx #$01 ; CPU:$C13C PRG:013C E0 01 bne Flow_C154 ; CPU:$C13E PRG:013E D0 14 lda StateTransitionFlag ; CPU:$C140 PRG:0140 A5 35 bne Flow_C167 ; CPU:$C142 PRG:0142 D0 23 ldy GameMode ; CPU:$C144 PRG:0144 A4 39 iny ; CPU:$C146 PRG:0146 C8 cpy #$02 ; CPU:$C147 PRG:0147 C0 02 bne Flow_C14D ; CPU:$C149 PRG:0149 D0 02 ldy #$00 ; CPU:$C14B PRG:014B A0 00 Flow_C14D: sty GameMode ; CPU:$C14D PRG:014D 84 39 sty SelectedGameMode ; CPU:$C14F PRG:014F 84 E0 jmp Flow_C163 ; CPU:$C151 PRG:0151 4C 63 C1 Flow_C154: jsr MatchRoutine_CBCB ; CPU:$C154 PRG:0154 20 CB CB ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0157-$0158. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C157: .byte $85, $3E ; PRG $0157 / CPU $C157 ; CPU:$C157 PRG:0157 85 3E Flow_C159: beq Flow_C180 ; CPU:$C159 PRG:0159 F0 25 Flow_C15B: cmp #$00 ; CPU:$C15B PRG:015B C9 00 bne Flow_C163 ; CPU:$C15D PRG:015D D0 04 sta StateTransitionFlag ; CPU:$C15F PRG:015F 85 35 beq Flow_C171 ; CPU:$C161 PRG:0161 F0 0E Flow_C163: lda #$01 ; CPU:$C163 PRG:0163 A9 01 sta StateTransitionFlag ; CPU:$C165 PRG:0165 85 35 Flow_C167: lda StateTimer ; CPU:$C167 PRG:0167 A5 25 cmp #$25 ; CPU:$C169 PRG:0169 C9 25 bcs Flow_C171 ; CPU:$C16B PRG:016B B0 04 lda #$25 ; CPU:$C16D PRG:016D A9 25 sta StateTimer ; CPU:$C16F PRG:016F 85 25 Flow_C171: cpx #$01 ; CPU:$C171 PRG:0171 E0 01 bne Flow_C180 ; CPU:$C173 PRG:0173 D0 0B ldy #$88 ; CPU:$C175 PRG:0175 A0 88 lda GameMode ; CPU:$C177 PRG:0177 A5 39 beq Flow_C17D ; CPU:$C179 PRG:0179 F0 02 ldy #$A0 ; CPU:$C17B PRG:017B A0 A0 Flow_C17D: sty $0200 ; CPU:$C17D PRG:017D 8C 00 02 Flow_C180: lda GameStateStep ; CPU:$C180 PRG:0180 A5 3E jsr DispatchInlineAddressTable ; CPU:$C182 PRG:0182 20 8B C3 ; ----------------------------------------------------------------------------- ; Inline address table at CPU $C185; 7 little-endian entries. ; Consumed by DispatchInlineAddressTable; this region is data, not code. ; ----------------------------------------------------------------------------- GameStateStepHandlerTable: .word ModeStep00_DrawSelectionScreen ; CPU:$C185 PRG:0185 87 CA .word ModeStep01_Countdown ; CPU:$C187 PRG:0187 ?? .word ModeStep02_InitializeSelection ; CPU:$C189 PRG:0189 ?? .word ModeStep03_UpdateSelection ; CPU:$C18B PRG:018B ?? .word ModeStep04_ConfirmSelection ; CPU:$C18D PRG:018D ?? .word ModeStep05_StartDemoOrMatch ; CPU:$C18F PRG:018F ?? .word ModeStep06_CompleteSetup ; CPU:$C191 PRG:0191 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0193-$0194. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C193: .byte $C1, $CB ; PRG $0193 / CPU $C193 ; CPU:$C193 PRG:0193 C1 CB ; ============================================================================= ; ClearNametables ; CPU address: $C195 PRG offset: $0195 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= ClearNametables: lda #$03 ; CPU:$C195 PRG:0195 A9 03 jsr EngineRoutine_C19C ; CPU:$C197 PRG:0197 20 9C C1 ; ============================================================================= ; ClearOneNametable ; CPU address: $C19A PRG offset: $019A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= ClearOneNametable: lda #$01 ; CPU:$C19A PRG:019A A9 01 ; ============================================================================= ; EngineRoutine_C19C ; CPU address: $C19C PRG offset: $019C ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C19C: sta WorkPtrHi ; CPU:$C19C PRG:019C 85 02 lda #$24 ; CPU:$C19E PRG:019E A9 24 sta WorkPtrLo ; CPU:$C1A0 PRG:01A0 85 01 jmp Flow_C330 ; CPU:$C1A2 PRG:01A2 4C 30 C3 ; ============================================================================= ; HideAllSprites ; CPU address: $C1A5 PRG offset: $01A5 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= HideAllSprites: ldy #$02 ; CPU:$C1A5 PRG:01A5 A0 02 sty WorkPtrHi ; CPU:$C1A7 PRG:01A7 84 02 ldy #$00 ; CPU:$C1A9 PRG:01A9 A0 00 sty WorkPtrLo ; CPU:$C1AB PRG:01AB 84 01 lda #$F4 ; CPU:$C1AD PRG:01AD A9 F4 Flow_C1AF: sta (WorkPtrLo),y ; CPU:$C1AF PRG:01AF 91 01 dey ; CPU:$C1B1 PRG:01B1 88 bne Flow_C1AF ; CPU:$C1B2 PRG:01B2 D0 FB rts ; CPU:$C1B4 PRG:01B4 60 ; ============================================================================= ; WritePalette ; CPU address: $C1B5 PRG offset: $01B5 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= WritePalette: ldy PaletteUpdateMode ; CPU:$C1B5 PRG:01B5 A4 3C beq Flow_C1DC ; CPU:$C1B7 PRG:01B7 F0 23 dey ; CPU:$C1B9 PRG:01B9 88 beq Flow_C1CD ; CPU:$C1BA PRG:01BA F0 11 dey ; CPU:$C1BC PRG:01BC 88 beq Flow_C1C6 ; CPU:$C1BD PRG:01BD F0 07 lda #$4A ; CPU:$C1BF PRG:01BF A9 4A ldx #$EE ; CPU:$C1C1 PRG:01C1 A2 EE jmp Flow_C1D1 ; CPU:$C1C3 PRG:01C3 4C D1 C1 Flow_C1C6: lda #$32 ; CPU:$C1C6 PRG:01C6 A9 32 ldx #$EE ; CPU:$C1C8 PRG:01C8 A2 EE jmp Flow_C1D1 ; CPU:$C1CA PRG:01CA 4C D1 C1 Flow_C1CD: lda #$11 ; CPU:$C1CD PRG:01CD A9 11 ldx #$EE ; CPU:$C1CF PRG:01CF A2 EE Flow_C1D1: ldy #$00 ; CPU:$C1D1 PRG:01D1 A0 00 sty PaletteUpdateMode ; CPU:$C1D3 PRG:01D3 84 3C sta WorkPtrLo ; CPU:$C1D5 PRG:01D5 85 01 stx WorkPtrHi ; CPU:$C1D7 PRG:01D7 86 02 jsr UploadPointedPpuData ; CPU:$C1D9 PRG:01D9 20 F4 C3 Flow_C1DC: rts ; CPU:$C1DC PRG:01DC 60 ; ============================================================================= ; EngineRoutine_C1DD ; CPU address: $C1DD PRG offset: $01DD ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C1DD: lda ObjectDataPointerLo ; CPU:$C1DD PRG:01DD ?? sta MathResultLo ; CPU:$C1DF PRG:01DF ?? lda ObjectDataPointerHi ; CPU:$C1E1 PRG:01E1 ?? sta MathResultHi ; CPU:$C1E3 PRG:01E3 ?? lda ObjectDataOffset ; CPU:$C1E5 PRG:01E5 ?? sta MathOperandLo ; CPU:$C1E7 PRG:01E7 ?? lda #$00 ; CPU:$C1E9 PRG:01E9 ?? sta MathOperandHi ; CPU:$C1EB PRG:01EB ?? jsr Add16BitZp12ToZp14 ; CPU:$C1ED PRG:01ED ?? tay ; CPU:$C1EF PRG:01EF ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $01F1-$01F2. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C1F1: .byte $AA, $60 ; PRG $01F1 / CPU $C1F1 ; CPU:$C1F1 PRG:01F1 AA 60 ; ============================================================================= ; EngineRoutine_C1F3 ; CPU address: $C1F3 PRG offset: $01F3 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C1F3: jsr EngineRoutine_C1DD ; CPU:$C1F3 PRG:01F3 ?? Flow_C1F6: lda (MathResultLo),y ; CPU:$C1F5 PRG:01F5 ?? sta AnimationFrame,x ; CPU:$C1F7 PRG:01F7 ?? iny ; CPU:$C1F9 PRG:01F9 ?? inx ; CPU:$C1FB PRG:01FB ?? cpx #$20 ; CPU:$C1FD PRG:01FD ?? bne Flow_C1F6 ; CPU:$C1FF PRG:01FF ?? lda #$00 ; CPU:$C201 PRG:0201 ?? tay ; CPU:$C203 PRG:0203 ?? sta (MathResultLo),y ; CPU:$C205 PRG:0205 ?? rts ; CPU:$C207 PRG:0207 ?? ; ============================================================================= ; EngineRoutine_C206 ; CPU address: $C206 PRG offset: $0206 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C206: lda ObjectDataOffset ; CPU:$C209 PRG:0209 ?? clc ; CPU:$C20B PRG:020B ?? adc #$20 ; CPU:$C20D PRG:020D ?? sta ObjectDataOffset ; CPU:$C20F PRG:020F ?? rts ; PRG $020D / CPU $C20D ; CPU:$C211 PRG:0211 ?? ; ============================================================================= ; EngineRoutine_C20E ; CPU address: $C20E PRG offset: $020E ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C20E: jsr EngineRoutine_C1DD ; CPU:$C213 PRG:0213 ?? Flow_C211: lda AnimationFrame,x ; CPU:$C215 PRG:0215 ?? sta (MathResultLo),y ; CPU:$C217 PRG:0217 ?? iny ; CPU:$C219 PRG:0219 ?? inx ; CPU:$C21B PRG:021B ?? cpx #$20 ; CPU:$C21D PRG:021D ?? bne Flow_C211 ; CPU:$C21F PRG:021F ?? FlowEntry_C21B: rts; PRG $021B / CPU $C21B ; ============================================================================= ; EngineRoutine_C21C ; CPU address: $C21C PRG offset: $021C ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C21C: lda AnimationFrame ; CPU:$C221 PRG:0221 ?? beq FlowEntry_C21B ; CPU:$C223 PRG:0223 ?? lda #$F2 ; CPU:$C225 PRG:0225 ?? sta MathResultHi ; CPU:$C227 PRG:0227 ?? lda #$8C ; CPU:$C229 PRG:0229 ?? sta MathResultLo ; CPU:$C22B PRG:022B ?? lda PlayerPoseId ; CPU:$C22D PRG:022D ?? jsr EngineRoutine_C28E ; CPU:$C22F PRG:022F ?? ldy #$00 ; CPU:$C231 PRG:0231 ?? lda (MathOperandLo),y ; CPU:$C233 PRG:0233 ?? sta MathResultLo ; CPU:$C235 PRG:0235 ?? iny ; CPU:$C237 PRG:0237 ?? lda (MathOperandLo),y ; CPU:$C239 PRG:0239 ?? sta MathResultHi ; CPU:$C23B PRG:023B ?? iny ; CPU:$C23D PRG:023D ?? lda (MathOperandLo),y ; CPU:$C23F PRG:023F ?? sta WorkPtrLo ; CPU:$C241 PRG:0241 ?? iny ; CPU:$C243 PRG:0243 ?? lda (MathOperandLo),y ; CPU:$C245 PRG:0245 ?? sta WorkPtrHi ; CPU:$C247 PRG:0247 ?? iny ; CPU:$C249 PRG:0249 ?? sty Zp0D ; CPU:$C24B PRG:024B ?? ldy #$00 ; CPU:$C24D PRG:024D ?? ldx RacketContactFlags ; CPU:$C24F PRG:024F ?? Flow_C249: lda (MathResultLo),y ; CPU:$C251 PRG:0251 ?? iny ; CPU:$C253 PRG:0253 ?? clc ; CPU:$C255 PRG:0255 ?? adc RacketTargetX ; CPU:$C257 PRG:0257 ?? adc #$FF ; CPU:$C259 PRG:0259 ?? sta $0200,x ; CPU:$C25B PRG:025B ?? inx ; CPU:$C25D PRG:025D ?? sty Zp0C ; CPU:$C25F PRG:025F ?? ldy Zp0D ; CPU:$C261 PRG:0261 ?? lda (MathOperandLo),y ; CPU:$C263 PRG:0263 ?? sta $0200,x ; CPU:$C265 PRG:0265 ?? inc Zp0D ; CPU:$C267 PRG:0267 ?? inx ; CPU:$C269 PRG:0269 ?? ldy Zp0C ; CPU:$C26B PRG:026B ?? lda PlayerPoseFlags ; CPU:$C26D PRG:026D ?? asl WorkPtrHi ; CPU:$C26F PRG:026F ?? rol WorkPtrLo ; CPU:$C271 PRG:0271 ?? bcc Flow_C26D ; CPU:$C273 PRG:0273 ?? eor #$40 ; CPU:$C275 PRG:0275 ?? Flow_C26D: sta $0200,x ; CPU:$C277 PRG:0277 ?? inx ; CPU:$C279 PRG:0279 ?? lda (MathResultLo),y ; CPU:$C27B PRG:027B ?? bit PlayerPoseFlags ; CPU:$C27D PRG:027D ?? bvs Flow_C27A ; CPU:$C27F PRG:027F ?? clc ; CPU:$C281 PRG:0281 ?? bcc Flow_C280 ; CPU:$C283 PRG:0283 ?? Flow_C27A: eor #$FF ; CPU:$C285 PRG:0285 ?? sec ; CPU:$C287 PRG:0287 ?? sbc #$08 ; CPU:$C289 PRG:0289 ?? sec ; CPU:$C28B PRG:028B ?? Flow_C280: adc RacketTargetY ; CPU:$C28D PRG:028D ?? iny ; CPU:$C28F PRG:028F ?? sta $0200,x ; CPU:$C291 PRG:0291 ?? inx ; CPU:$C293 PRG:0293 ?? lda (MathResultLo),y ; CPU:$C295 PRG:0295 ?? cmp #$AA ; CPU:$C297 PRG:0297 ?? bne Flow_C249 ; CPU:$C299 PRG:0299 ?? rts ; CPU:$C29B PRG:029B ?? ; ============================================================================= ; EngineRoutine_C28E ; CPU address: $C28E PRG offset: $028E ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C28E: asl a ; CPU:$C29D PRG:029D ?? sta MathOperandLo ; CPU:$C29F PRG:029F ?? lda #$00 ; CPU:$C2A1 PRG:02A1 ?? tay ; CPU:$C2A3 PRG:02A3 ?? rol a ; CPU:$C2A5 PRG:02A5 ?? sta MathOperandHi ; CPU:$C2A7 PRG:02A7 ?? jsr Add16BitZp12ToZp14 ; CPU:$C2A9 PRG:02A9 CA lda (MathResultLo),y ; CPU:$C2AA PRG:02AA 8A sta MathOperandLo ; CPU:$C2AB PRG:02AB 8D 16 40 iny ; CPU:$C2AE PRG:02AE 20 B2 C2 lda (MathResultLo),y ; CPU:$C2B1 PRG:02B1 E8 sta MathOperandHi ; CPU:$C2B2 PRG:02B2 A0 08 rts ; PRG $02A3 / CPU $C2A3 ; CPU:$C2B4 PRG:02B4 48 ; ============================================================================= ; ReadControllers ; CPU address: $C2A4 PRG offset: $02A4 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= ReadControllers: ldx #$01 ; CPU:$C2B5 PRG:02B5 BD 16 40 stx JOY1 ; CPU:$C2B8 PRG:02B8 85 01 dex ; CPU:$C2BA PRG:02BA 4A txa ; CPU:$C2BB PRG:02BB 05 01 sta JOY1 ; CPU:$C2BD PRG:02BD 4A jsr EngineRoutine_C2B2 ; CPU:$C2BE PRG:02BE 68 inx ; CPU:$C2BF PRG:02BF 2A ; ============================================================================= ; EngineRoutine_C2B2 ; CPU address: $C2B2 PRG offset: $02B2 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C2B2: ldy #$08 ; CPU:$C2C0 PRG:02C0 88 Flow_C2B4: pha ; CPU:$C2C1 PRG:02C1 D0 F1 lda JOY1,x ; CPU:$C2C3 PRG:02C3 86 01 sta WorkPtrLo ; CPU:$C2C5 PRG:02C5 06 01 lsr a ; CPU:$C2C7 PRG:02C7 A6 01 ora WorkPtrLo ; CPU:$C2C9 PRG:02C9 B4 1A lsr a ; CPU:$C2CB PRG:02CB 84 01 pla ; CPU:$C2CD PRG:02CD 95 1A rol a ; CPU:$C2CF PRG:02CF 95 1B dey ; CPU:$C2D1 PRG:02D1 29 FF bne Flow_C2B4 ; CPU:$C2D3 PRG:02D3 10 08 stx WorkPtrLo ; CPU:$C2D5 PRG:02D5 24 01 asl WorkPtrLo ; CPU:$C2D7 PRG:02D7 10 04 ldx WorkPtrLo ; CPU:$C2D9 PRG:02D9 29 7F ldy ControllerHeld,x ; CPU:$C2DB PRG:02DB 95 1B sty WorkPtrLo ; CPU:$C2DD PRG:02DD 85 02 sta ControllerHeld,x ; CPU:$C2DF PRG:02DF 24 02 sta Zp1B,x ; CPU:$C2E1 PRG:02E1 50 08 and #$FF ; CPU:$C2E3 PRG:02E3 24 01 bpl Flow_C2DD ; CPU:$C2E5 PRG:02E5 50 04 bit WorkPtrLo ; CPU:$C2E7 PRG:02E7 29 BF bpl Flow_C2DD ; CPU:$C2E9 PRG:02E9 95 1B and #$7F ; CPU:$C2EB PRG:02EB 60 sta Zp1B,x ; CPU:$C2EC PRG:02EC A5 31 Flow_C2DD: sta WorkPtrHi ; CPU:$C2EE PRG:02EE F0 3F bit WorkPtrHi ; CPU:$C2F0 PRG:02F0 A9 91 bvc FlowEntry_C2EB ; CPU:$C2F2 PRG:02F2 85 01 bit WorkPtrLo ; CPU:$C2F4 PRG:02F4 A9 05 bvc FlowEntry_C2EB ; CPU:$C2F6 PRG:02F6 85 02 and #$BF ; CPU:$C2F8 PRG:02F8 A5 09 sta Zp1B,x ; CPU:$C2FA PRG:02FA 29 FB FlowEntry_C2EB: rts ; PRG $02EB / CPU $C2EB ; CPU:$C2FC PRG:02FC 8D 00 20 ; ============================================================================= ; WritePpuBuffer ; CPU address: $C2EC PRG offset: $02EC ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= WritePpuBuffer: lda PpuBufferReady ; CPU:$C2FF PRG:02FF 85 09 beq Flow_C32F ; CPU:$C301 PRG:0301 AE 02 20 lda #$91 ; CPU:$C304 PRG:0304 A0 00 sta WorkPtrLo ; CPU:$C306 PRG:0306 F0 19 lda #$05 ; CPU:$C308 PRG:0308 8D 06 20 sta WorkPtrHi ; CPU:$C30B PRG:030B C8 lda PpuCtrlShadow ; CPU:$C30C PRG:030C B1 01 and #$FB ; CPU:$C30E PRG:030E 8D 06 20 sta PPUCTRL ; CPU:$C311 PRG:0311 C8 sta PpuCtrlShadow ; CPU:$C312 PRG:0312 B1 01 ldx PPUSTATUS ; CPU:$C314 PRG:0314 29 3F ldy #$00 ; CPU:$C316 PRG:0316 AA beq Flow_C321 ; CPU:$C317 PRG:0317 C8 Flow_C308: sta PPUADDR ; CPU:$C318 PRG:0318 B1 01 iny ; CPU:$C31A PRG:031A 8D 07 20 lda (WorkPtrLo),y ; CPU:$C31D PRG:031D CA sta PPUADDR ; CPU:$C31E PRG:031E D0 F7 iny ; CPU:$C320 PRG:0320 C8 lda (WorkPtrLo),y ; CPU:$C321 PRG:0321 B1 01 and #$3F ; CPU:$C323 PRG:0323 D0 E3 tax ; CPU:$C325 PRG:0325 A9 00 Flow_C317: iny ; CPU:$C327 PRG:0327 8D 90 05 lda (WorkPtrLo),y ; CPU:$C32A PRG:032A 8D 91 05 sta PPUDATA ; CPU:$C32D PRG:032D 85 31 dex ; CPU:$C32F PRG:032F 60 bne Flow_C317 ; CPU:$C330 PRG:0330 AD 02 20 iny ; CPU:$C333 PRG:0333 A5 09 Flow_C321: lda (WorkPtrLo),y ; CPU:$C335 PRG:0335 29 FB bne Flow_C308 ; CPU:$C337 PRG:0337 8D 00 20 lda #$00 ; CPU:$C33A PRG:033A 85 09 sta $0590 ; CPU:$C33C PRG:033C A9 1C sta $0591 ; CPU:$C33E PRG:033E 18 sta PpuBufferReady ; CPU:$C33F PRG:033F 69 04 Flow_C32F: rts ; CPU:$C341 PRG:0341 C6 02 Flow_C330: lda PPUSTATUS ; CPU:$C343 PRG:0343 D0 FA lda PpuCtrlShadow ; CPU:$C345 PRG:0345 85 03 and #$FB ; CPU:$C347 PRG:0347 8D 06 20 sta PPUCTRL ; CPU:$C34A PRG:034A A9 00 sta PpuCtrlShadow ; CPU:$C34C PRG:034C 8D 06 20 lda #$1C ; CPU:$C34F PRG:034F A2 04 clc ; CPU:$C351 PRG:0351 A0 00 Flow_C33F: adc #$04 ; CPU:$C353 PRG:0353 A5 01 dec WorkPtrHi ; CPU:$C355 PRG:0355 8D 07 20 bne Flow_C33F ; CPU:$C358 PRG:0358 88 sta Zp03 ; CPU:$C359 PRG:0359 D0 FA sta PPUADDR ; CPU:$C35B PRG:035B CA lda #$00 ; CPU:$C35C PRG:035C D0 F7 sta PPUADDR ; CPU:$C35E PRG:035E A5 03 ldx #$04 ; CPU:$C360 PRG:0360 69 03 ldy #$00 ; CPU:$C362 PRG:0362 8D 06 20 lda WorkPtrLo ; CPU:$C365 PRG:0365 A9 C0 Flow_C355: sta PPUDATA ; CPU:$C367 PRG:0367 8D 06 20 dey ; CPU:$C36A PRG:036A A0 40 bne Flow_C355 ; CPU:$C36C PRG:036C A9 00 dex ; CPU:$C36E PRG:036E 8D 07 20 bne Flow_C355 ; CPU:$C371 PRG:0371 88 lda Zp03 ; CPU:$C372 PRG:0372 D0 FA adc #$03 ; CPU:$C374 PRG:0374 60 sta PPUADDR ; CPU:$C375 PRG:0375 A2 03 lda #$C0 ; CPU:$C377 PRG:0377 C6 20 sta PPUADDR ; CPU:$C379 PRG:0379 10 06 ldy #$40 ; CPU:$C37B PRG:037B A9 0A lda #$00 ; CPU:$C37D PRG:037D 85 20 Flow_C36E: sta PPUDATA ; CPU:$C37F PRG:037F A2 05 dey ; CPU:$C381 PRG:0381 B5 21 bne Flow_C36E ; CPU:$C383 PRG:0383 F0 02 rts ; PRG $0374 / CPU $C374 ; CPU:$C385 PRG:0385 D6 21 ; ============================================================================= ; UpdateTimers ; CPU address: $C375 PRG offset: $0375 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= UpdateTimers: ldx #$03 ; CPU:$C387 PRG:0387 CA dec Zp20 ; CPU:$C388 PRG:0388 10 F7 bpl Flow_C381 ; CPU:$C38A PRG:038A 60 lda #$0A ; CPU:$C38B PRG:038B 0A sta Zp20 ; CPU:$C38C PRG:038C A8 ldx #$05 ; CPU:$C38D PRG:038D C8 Flow_C381: lda Zp21,x ; CPU:$C38E PRG:038E 68 beq Flow_C387 ; CPU:$C38F PRG:038F 85 14 dec Zp21,x ; CPU:$C391 PRG:0391 68 Flow_C387: dex ; CPU:$C392 PRG:0392 85 15 bpl Flow_C381 ; CPU:$C394 PRG:0394 B1 14 rts ; CPU:$C396 PRG:0396 AA ; ============================================================================= ; DispatchInlineAddressTable ; CPU address: $C38B PRG offset: $038B ; ; Global description: ; Consumes the caller return address, selects a little-endian target from the inline table following JSR, and jumps indirectly to it. ; ; Parameters: ; A is the table index; an address table immediately follows the caller JSR. ; ; Returns: ; Tail-dispatches to the selected handler. ; ============================================================================= DispatchInlineAddressTable: asl a ; CPU:$C397 PRG:0397 C8 tay ; CPU:$C398 PRG:0398 B1 14 iny ; CPU:$C39A PRG:039A 85 15 pla ; CPU:$C39C PRG:039C 86 14 sta MathResultLo ; CPU:$C39E PRG:039E 6C 14 00 pla ; CPU:$C3A1 PRG:03A1 ?? sta MathResultHi ; CPU:$C3A3 PRG:03A3 ?? lda (MathResultLo),y ; CPU:$C3A5 PRG:03A5 ?? tax ; CPU:$C3A7 PRG:03A7 ?? iny ; CPU:$C3A9 PRG:03A9 ?? lda (MathResultLo),y ; CPU:$C3AB PRG:03AB ?? sta MathResultHi ; CPU:$C3AD PRG:03AD ?? stx MathResultLo ; CPU:$C3AF PRG:03AF ?? jmp ($0014) ; CPU:$C3B1 PRG:03B1 ?? ; ============================================================================= ; Add16BitZp12ToZp14 ; CPU address: $C3A1 PRG offset: $03A1 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= Add16BitZp12ToZp14: pha ; CPU:$C3B3 PRG:03B3 ?? clc ; CPU:$C3B5 PRG:03B5 ?? lda MathResultLo ; CPU:$C3B7 PRG:03B7 ?? adc MathOperandLo ; CPU:$C3B9 PRG:03B9 ?? sta MathResultLo ; CPU:$C3BB PRG:03BB C8 lda MathResultHi ; CPU:$C3BC PRG:03BC B1 01 adc MathOperandHi ; CPU:$C3BE PRG:03BE 8D 06 20 sta MathResultHi ; CPU:$C3C1 PRG:03C1 C8 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $03AF-$03B0. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C3AF: .byte $68, $60 ; PRG $03AF / CPU $C3AF ; CPU:$C3C2 PRG:03C2 68 60 ; ============================================================================= ; DrawScreenData ; CPU address: $C3B1 PRG offset: $03B1 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= DrawScreenData: stx WorkPtrLo ; CPU:$C3C4 PRG:03C4 0A sty WorkPtrHi ; CPU:$C3C5 PRG:03C5 48 jmp UploadPointedPpuData ; CPU:$C3C6 PRG:03C6 A5 09 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $03B8-$03F3. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C3B8: .byte $8D, $06, $20, $C8, $B1, $01, $8D, $06, $20, $C8, $B1, $01, $0A, $48, $A5, $09 ; PRG $03B8 / CPU $C3B8 ; CPU:$C3C8 PRG:03C8 8D 06 20 C8 B1 01 8D 06 20 C8 B1 01 0A 48 A5 09 .byte $09, $04, $B0, $02, $29, $FB, $8D, $00, $20, $85, $09, $68, $0A, $90, $03, $09 ; PRG $03C8 / CPU $C3C8 ; CPU:$C3D8 PRG:03D8 09 04 B0 02 29 FB 8D 00 20 85 09 68 0A 90 03 09 .byte $02, $C8, $4A, $4A, $AA, $B0, $01, $C8, $B1, $01, $8D, $07, $20, $CA, $D0, $F5 ; PRG $03D8 / CPU $C3D8 ; CPU:$C3E8 PRG:03E8 02 C8 4A 4A AA B0 01 C8 B1 01 8D 07 20 CA D0 F5 .byte $38, $98, $65, $01, $85, $01, $A9, $00, $65, $02, $85, $02 ; PRG $03E8 / CPU $C3E8 ; CPU:$C3F8 PRG:03F8 38 98 65 01 85 01 A9 00 65 02 85 02 ; ============================================================================= ; UploadPointedPpuData ; CPU address: $C3F4 PRG offset: $03F4 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= UploadPointedPpuData: ldx PPUSTATUS ; CPU:$C404 PRG:0404 ?? ldy #$00 ; CPU:$C406 PRG:0406 ?? lda (WorkPtrLo),y ; CPU:$C408 PRG:0408 68 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $03FB-$03FC. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C3FB: .byte $D0, $BB ; PRG $03FB / CPU $C3FB ; CPU:$C409 PRG:0409 D0 BB ; ============================================================================= ; SetScroll ; CPU address: $C3FD PRG offset: $03FD ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= SetScroll: pha ; CPU:$C40B PRG:040B ?? lda Zp1E ; CPU:$C40D PRG:040D A5 0A sta PPUSCROLL ; CPU:$C40F PRG:040F 29 E7 lda Zp1F ; CPU:$C411 PRG:0411 8D 01 20 sta PPUSCROLL ; CPU:$C414 PRG:0414 60 pla ; CPU:$C415 PRG:0415 ?? rts ; CPU:$C417 PRG:0417 ?? ; ============================================================================= ; DisableRendering ; CPU address: $C40A PRG offset: $040A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= DisableRendering: jsr EngineRoutine_C422 ; CPU:$C419 PRG:0419 ?? lda PpuMaskShadow ; CPU:$C41B PRG:041B ?? and #$E7 ; CPU:$C41D PRG:041D ?? sta PPUMASK ; CPU:$C41F PRG:041F ?? rts ; CPU:$C421 PRG:0421 ?? ; ============================================================================= ; EnableRendering ; CPU address: $C415 PRG offset: $0415 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EnableRendering: jsr EngineRoutine_C422 ; CPU:$C423 PRG:0423 ?? lda PpuMaskShadow ; CPU:$C425 PRG:0425 ?? ora #$18 ; CPU:$C427 PRG:0427 A5 33 sta PPUMASK ; CPU:$C429 PRG:0429 F0 FC sta PpuMaskShadow ; CPU:$C42B PRG:042B 60 rts ; CPU:$C42C PRG:042C ?? ; ============================================================================= ; EngineRoutine_C422 ; CPU address: $C422 PRG offset: $0422 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C422: lda #$00 ; CPU:$C42E PRG:042E ?? sta NmiTriggerFlag ; CPU:$C430 PRG:0430 ?? nop ; CPU:$C432 PRG:0432 ?? lda NmiTriggerFlag ; CPU:$C434 PRG:0434 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0429-$042A. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C429: .byte $F0, $FC ; PRG $0429 / CPU $C429 ; CPU:$C436 PRG:0436 F0 FC GameState07_PauseOrTransition: rts ; CPU:$C438 PRG:0438 ?? ; ============================================================================= ; EngineRoutine_C42C ; CPU address: $C42C PRG offset: $042C ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C42C: lda PpuMaskShadow ; CPU:$C43A PRG:043A ?? and #$EF ; CPU:$C43C PRG:043C ?? sta PPUMASK ; CPU:$C43E PRG:043E ?? sta PpuMaskShadow ; CPU:$C440 PRG:0440 ?? rts ; CPU:$C442 PRG:0442 ?? ; ============================================================================= ; EngineRoutine_C436 ; CPU address: $C436 PRG offset: $0436 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C436: lda PpuMaskShadow ; CPU:$C444 PRG:0444 ?? ora #$10 ; CPU:$C446 PRG:0446 ?? sta PPUMASK ; CPU:$C448 PRG:0448 ?? sta PpuMaskShadow ; CPU:$C44A PRG:044A ?? rts ; CPU:$C44C PRG:044C ?? ; ============================================================================= ; WriteMetaspriteToOam ; CPU address: $C440 PRG offset: $0440 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= WriteMetaspriteToOam: lda #$00 ; CPU:$C44E PRG:044E ?? sta Zp04 ; CPU:$C450 PRG:0450 ?? lda #$02 ; CPU:$C452 PRG:0452 ?? sta Zp05 ; CPU:$C454 PRG:0454 ?? ldy Zp03 ; CPU:$C456 PRG:0456 AD 00 05 dey ; CPU:$C459 PRG:0459 18 ldx Zp03 ; CPU:$C45A PRG:045A 69 0F Flow_C44D: lda (WorkPtrLo),y ; CPU:$C45C PRG:045C 8D 00 05 sta (Zp04),y ; CPU:$C45F PRG:045F AD 01 05 dey ; CPU:$C462 PRG:0462 69 11 dex ; CPU:$C464 PRG:0464 8D 01 05 bne Flow_C44D ; CPU:$C467 PRG:0467 4D 00 05 rts ; CPU:$C46A PRG:046A 18 ; ============================================================================= ; RollRng ; CPU address: $C456 PRG offset: $0456 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RollRng: lda $0500 ; CPU:$C46B PRG:046B 10 01 clc ; CPU:$C46D PRG:046D 38 adc #$0F ; CPU:$C46E PRG:046E 6E 02 05 sta $0500 ; CPU:$C471 PRG:0471 6E 03 05 lda $0501 ; CPU:$C474 PRG:0474 AD 00 05 adc #$11 ; CPU:$C477 PRG:0477 60 sta $0501 ; CPU:$C478 PRG:0478 ?? eor $0500 ; CPU:$C47A PRG:047A ?? clc ; CPU:$C47C PRG:047C ?? bpl Flow_C46E ; CPU:$C47E PRG:047E ?? sec ; CPU:$C480 PRG:0480 ?? Flow_C46E: ror $0502 ; CPU:$C482 PRG:0482 ?? ror $0503 ; CPU:$C484 PRG:0484 ?? lda $0500 ; CPU:$C486 PRG:0486 ?? rts ; CPU:$C488 PRG:0488 ?? ; ============================================================================= ; EngineRoutine_C478 ; CPU address: $C478 PRG offset: $0478 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C478: lda #$01 ; CPU:$C48A PRG:048A ?? sta Zp0E ; CPU:$C48C PRG:048C ?? ldy BallYSubpixel ; CPU:$C48E PRG:048E ?? ldx BallYPosition ; CPU:$C490 PRG:0490 ?? lda #$79 ; CPU:$C492 PRG:0492 ?? jsr Multiply8By16 ; CPU:$C494 PRG:0494 ?? sty MathResultLo ; CPU:$C496 PRG:0496 ?? stx MathResultHi ; CPU:$C498 PRG:0498 ?? ldy BallYSubpixel ; CPU:$C49A PRG:049A ?? ldx BallYPosition ; CPU:$C49C PRG:049C ?? lda #$C7 ; CPU:$C49E PRG:049E ?? jsr Multiply8By16 ; CPU:$C4A0 PRG:04A0 ?? sty MathOperandLo ; CPU:$C4A2 PRG:04A2 ?? stx MathOperandHi ; CPU:$C4A4 PRG:04A4 ?? jmp Flow_C4A5 ; CPU:$C4A6 PRG:04A6 ?? ; ============================================================================= ; EngineRoutine_C499 ; CPU address: $C499 PRG offset: $0499 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C499: lda #$00 ; CPU:$C4A8 PRG:04A8 ?? sta Zp0E ; CPU:$C4AA PRG:04AA ?? sta MathResultLo ; CPU:$C4AC PRG:04AC ?? sta MathResultHi ; CPU:$C4AE PRG:04AE ?? sta MathOperandLo ; CPU:$C4B0 PRG:04B0 ?? sta MathOperandHi ; CPU:$C4B2 PRG:04B2 ?? Flow_C4A5: ldy Player2YSubpixel ; CPU:$C4B4 PRG:04B4 ?? sty AimMagnitude ; CPU:$C4B6 PRG:04B6 ?? lda Player2YPosition ; CPU:$C4B8 PRG:04B8 ?? sec ; CPU:$C4BA PRG:04BA ?? sbc #$10 ; CPU:$C4BC PRG:04BC ?? sta AimDirection ; CPU:$C4BE PRG:04BE ?? tax ; CPU:$C4C0 PRG:04C0 ?? lda #$94 ; CPU:$C4C2 PRG:04C2 ?? jsr Multiply8By16 ; CPU:$C4C4 PRG:04C4 ?? clc ; CPU:$C4C6 PRG:04C6 ?? tya ; CPU:$C4C8 PRG:04C8 ?? adc #$71 ; CPU:$C4CA PRG:04CA ?? tay ; CPU:$C4CC PRG:04CC ?? txa ; CPU:$C4CE PRG:04CE ?? adc #$0E ; CPU:$C4D0 PRG:04D0 ?? tax ; CPU:$C4D2 PRG:04D2 ?? tya ; CPU:$C4D4 PRG:04D4 ?? sec ; CPU:$C4D6 PRG:04D6 ?? sbc MathResultLo ; CPU:$C4D8 PRG:04D8 ?? sta MathVectorXHi ; CPU:$C4DA PRG:04DA ?? txa ; CPU:$C4DC PRG:04DC ?? sbc MathResultHi ; CPU:$C4DE PRG:04DE ?? cmp #$50 ; CPU:$C4E0 PRG:04E0 ?? ror a ; CPU:$C4E2 PRG:04E2 ?? sta MathVectorXLo ; CPU:$C4E4 PRG:04E4 ?? ror MathVectorXHi ; CPU:$C4E6 PRG:04E6 ?? ldy AimMagnitude ; CPU:$C4E8 PRG:04E8 ?? ldx AimDirection ; CPU:$C4EA PRG:04EA ?? lda #$A0 ; CPU:$C4EC PRG:04EC ?? jsr Multiply8By16 ; CPU:$C4EE PRG:04EE ?? clc ; CPU:$C4F0 PRG:04F0 ?? tya ; CPU:$C4F2 PRG:04F2 ?? adc MathOperandLo ; CPU:$C4F4 PRG:04F4 ?? tay ; CPU:$C4F6 PRG:04F6 ?? txa ; CPU:$C4F8 PRG:04F8 ?? adc MathOperandHi ; CPU:$C4FA PRG:04FA ?? tax ; CPU:$C4FC PRG:04FC ?? jsr EngineRoutine_C5F8 ; CPU:$C4FE PRG:04FE ?? sbc #$00 ; CPU:$C500 PRG:0500 ?? eor #$7F ; CPU:$C502 PRG:0502 ?? sta RacketTargetX ; CPU:$C504 PRG:0504 ?? lda Zp0E ; CPU:$C506 PRG:0506 ?? beq Flow_C4F6 ; CPU:$C508 PRG:0508 ?? lda Player2YPosition ; CPU:$C50A PRG:050A ?? cmp #$06 ; CPU:$C50C PRG:050C ?? bcs Flow_C504 ; CPU:$C50E PRG:050E ?? bcc Flow_C500 ; CPU:$C510 PRG:0510 ?? Flow_C4F6: lda Player2YSubpixel ; CPU:$C512 PRG:0512 ?? cmp #$40 ; CPU:$C514 PRG:0514 ?? lda Player2YPosition ; CPU:$C516 PRG:0516 ?? sbc #$08 ; CPU:$C518 PRG:0518 ?? bcs Flow_C504 ; CPU:$C51A PRG:051A ?? Flow_C500: ldx #$FF ; CPU:$C51C PRG:051C ?? stx RacketTargetX ; CPU:$C51E PRG:051E ?? Flow_C504: ldy Player1YSubpixel ; CPU:$C520 PRG:0520 ?? lda Player1YPosition ; CPU:$C522 PRG:0522 ?? sec ; CPU:$C524 PRG:0524 ?? sbc #$10 ; CPU:$C526 PRG:0526 ?? tax ; CPU:$C528 PRG:0528 ?? jsr EngineRoutine_C5F8 ; CPU:$C52A PRG:052A ?? eor #$80 ; CPU:$C52C PRG:052C ?? sta RacketTargetY ; CPU:$C52E PRG:052E ?? rts ; CPU:$C530 PRG:0530 ?? ; ============================================================================= ; IntegrateObjectMotion ; CPU address: $C514 PRG offset: $0514 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= IntegrateObjectMotion: lda #$0F ; CPU:$C532 PRG:0532 ?? Flow_C516: sec ; CPU:$C534 PRG:0534 ?? sbc #$05 ; CPU:$C536 PRG:0536 ?? tax ; CPU:$C538 PRG:0538 ?? ldy #$00 ; CPU:$C53A PRG:053A ?? lda Player1MotionControl,x ; CPU:$C53C PRG:053C ?? asl a ; CPU:$C53E PRG:053E ?? bcc Flow_C525 ; CPU:$C540 PRG:0540 ?? dec Player1XPosition,x ; CPU:$C542 PRG:0542 ?? dec Player1XPosition,x ; CPU:$C544 PRG:0544 ?? Flow_C525: asl a ; CPU:$C546 PRG:0546 ?? bcc Flow_C52A ; CPU:$C548 PRG:0548 ?? inc Player1XPosition,x ; CPU:$C54A PRG:054A ?? Flow_C52A: clc ; CPU:$C54C PRG:054C ?? adc Player1XSubpixel,x ; CPU:$C54E PRG:054E ?? sta Player1XSubpixel,x ; CPU:$C550 PRG:0550 ?? tya ; CPU:$C552 PRG:0552 ?? adc Player1XPosition,x ; CPU:$C554 PRG:0554 ?? sta Player1XPosition,x ; CPU:$C556 PRG:0556 ?? bpl Flow_C537 ; CPU:$C558 PRG:0558 ?? dey ; CPU:$C55A PRG:055A ?? Flow_C537: asl MathResultHi ; CPU:$C55C PRG:055C ?? adc Player1YSubpixel,x ; CPU:$C55E PRG:055E ?? sta Player1YSubpixel,x ; CPU:$C560 PRG:0560 ?? tya ; CPU:$C562 PRG:0562 ?? adc Player1YPosition,x ; CPU:$C564 PRG:0564 ?? sta Player1YPosition,x ; CPU:$C566 PRG:0566 ?? txa ; CPU:$C568 PRG:0568 ?? bne Flow_C516 ; CPU:$C56A PRG:056A ?? lda BallYPosition ; CPU:$C56C PRG:056C ?? bpl Flow_C5B7 ; CPU:$C56E PRG:056E ?? inc RallyPhase ; CPU:$C570 PRG:0570 ?? lda RallyPhase ; CPU:$C572 PRG:0572 ?? cmp #$03 ; CPU:$C574 PRG:0574 ?? bcs Flow_C559 ; CPU:$C576 PRG:0576 ?? lda #$01 ; CPU:$C578 PRG:0578 ?? sta AudioRequestFlags3 ; CPU:$C57A PRG:057A ?? lda #$00 ; CPU:$C57C PRG:057C ?? sta BallBounceState ; CPU:$C57E PRG:057E ?? Flow_C559: lda #$0A ; CPU:$C580 PRG:0580 ?? Flow_C55B: sec ; CPU:$C582 PRG:0582 ?? sbc #$05 ; CPU:$C584 PRG:0584 ?? tax ; CPU:$C586 PRG:0586 ?? lda Player1XPosition,x ; CPU:$C588 PRG:0588 ?? cmp #$80 ; CPU:$C58A PRG:058A ?? ror a ; CPU:$C58C PRG:058C ?? sta Player1XPosition,x ; CPU:$C58E PRG:058E ?? ror Player1XSubpixel,x ; CPU:$C590 PRG:0590 ?? cmp #$80 ; CPU:$C592 PRG:0592 ?? ror a ; CPU:$C594 PRG:0594 ?? tay ; CPU:$C596 PRG:0596 ?? lda Player1XSubpixel,x ; CPU:$C598 PRG:0598 ?? ror a ; CPU:$C59A PRG:059A ?? clc ; CPU:$C59C PRG:059C ?? adc Player1XSubpixel,x ; CPU:$C59E PRG:059E ?? sta Player1XSubpixel,x ; CPU:$C5A0 PRG:05A0 ?? tya ; CPU:$C5A2 PRG:05A2 ?? adc Player1XPosition,x ; CPU:$C5A4 PRG:05A4 ?? sta Player1XPosition,x ; CPU:$C5A6 PRG:05A6 ?? txa ; CPU:$C5A8 PRG:05A8 ?? bne Flow_C55B ; CPU:$C5AA PRG:05AA ?? lda BallXPosition ; CPU:$C5AC PRG:05AC ?? cmp #$80 ; CPU:$C5AE PRG:05AE ?? ror a ; CPU:$C5B0 PRG:05B0 ?? sta BallXPosition ; CPU:$C5B2 PRG:05B2 ?? ror BallXSubpixel ; CPU:$C5B4 PRG:05B4 ?? ldy BallXSubpixel ; CPU:$C5B6 PRG:05B6 ?? sty Zp10 ; CPU:$C5B8 PRG:05B8 ?? cmp #$80 ; CPU:$C5BA PRG:05BA ?? ror a ; CPU:$C5BC PRG:05BC ?? ror Zp10 ; CPU:$C5BE PRG:05BE ?? cmp #$80 ; CPU:$C5C0 PRG:05C0 ?? ror a ; CPU:$C5C2 PRG:05C2 ?? tay ; CPU:$C5C4 PRG:05C4 ?? lda Zp10 ; CPU:$C5C6 PRG:05C6 ?? ror a ; CPU:$C5C8 PRG:05C8 ?? clc ; CPU:$C5CA PRG:05CA ?? adc BallXSubpixel ; CPU:$C5CC PRG:05CC ?? sta BallXSubpixel ; CPU:$C5CE PRG:05CE ?? tya ; CPU:$C5D0 PRG:05D0 ?? adc BallXPosition ; CPU:$C5D2 PRG:05D2 ?? sta BallXPosition ; CPU:$C5D4 PRG:05D4 ?? ldy #$00 ; CPU:$C5D6 PRG:05D6 ?? tya ; CPU:$C5D8 PRG:05D8 ?? sec ; CPU:$C5DA PRG:05DA ?? sbc BallYSubpixel ; CPU:$C5DC PRG:05DC ?? sta BallYSubpixel ; CPU:$C5DE PRG:05DE ?? tya ; CPU:$C5E0 PRG:05E0 ?? sbc BallYPosition ; CPU:$C5E2 PRG:05E2 ?? sta BallYPosition ; CPU:$C5E4 PRG:05E4 ?? tya ; CPU:$C5E6 PRG:05E6 ?? sec ; CPU:$C5E8 PRG:05E8 ?? sbc BallXSubpixel ; CPU:$C5EA PRG:05EA ?? sta BallXSubpixel ; CPU:$C5EC PRG:05EC ?? tya ; CPU:$C5EE PRG:05EE ?? sbc BallXPosition ; CPU:$C5F0 PRG:05F0 ?? sta BallXPosition ; CPU:$C5F2 PRG:05F2 ?? Flow_C5B7: lda BallYSubpixel ; CPU:$C5F4 PRG:05F4 ?? sta BallHeight ; CPU:$C5F6 PRG:05F6 ?? lda BallYPosition ; CPU:$C5F8 PRG:05F8 ?? lsr a ; CPU:$C5FA PRG:05FA ?? ror BallHeight ; CPU:$C5FC PRG:05FC ?? lsr a ; CPU:$C5FE PRG:05FE ?? ror BallHeight ; CPU:$C600 PRG:0600 ?? cmp #$00 ; CPU:$C602 PRG:0602 ?? beq Flow_C5CB ; CPU:$C604 PRG:0604 ?? lda #$FF ; CPU:$C606 PRG:0606 ?? sta BallHeight ; CPU:$C608 PRG:0608 ?? Flow_C5CB: rts ; CPU:$C60A PRG:060A ?? ; ============================================================================= ; Multiply8By16 ; CPU address: $C5CC PRG offset: $05CC ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= Multiply8By16: sty Zp10 ; CPU:$C60C PRG:060C ?? stx Zp11 ; CPU:$C60E PRG:060E ?? sta Zp16 ; CPU:$C610 PRG:0610 ?? lda #$00 ; CPU:$C612 PRG:0612 ?? sta Zp17 ; CPU:$C614 PRG:0614 ?? sta Zp18 ; CPU:$C616 PRG:0616 ?? ldx #$08 ; CPU:$C618 PRG:0618 ?? Flow_C5DA: ror Zp16 ; CPU:$C61A PRG:061A ?? bcc Flow_C5EB ; CPU:$C61C PRG:061C ?? clc ; CPU:$C61E PRG:061E ?? lda Zp17 ; CPU:$C620 PRG:0620 ?? adc Zp10 ; CPU:$C622 PRG:0622 ?? sta Zp17 ; CPU:$C624 PRG:0624 ?? lda Zp18 ; CPU:$C626 PRG:0626 ?? adc Zp11 ; CPU:$C628 PRG:0628 ?? sta Zp18 ; CPU:$C62A PRG:062A ?? Flow_C5EB: asl a ; CPU:$C62C PRG:062C ?? ror Zp18 ; CPU:$C62E PRG:062E ?? ror Zp17 ; CPU:$C630 PRG:0630 ?? dex ; CPU:$C632 PRG:0632 ?? bne Flow_C5DA ; CPU:$C634 PRG:0634 ?? ldy Zp17 ; CPU:$C636 PRG:0636 ?? ldx Zp18 ; CPU:$C638 PRG:0638 ?? rts ; CPU:$C63A PRG:063A ?? ; ============================================================================= ; EngineRoutine_C5F8 ; CPU address: $C5F8 PRG offset: $05F8 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C5F8: sty Zp17 ; CPU:$C63C PRG:063C ?? stx Zp18 ; CPU:$C63E PRG:063E ?? lda #$00 ; CPU:$C640 PRG:0640 ?? sta Zp16 ; CPU:$C642 PRG:0642 ?? ldx #$07 ; CPU:$C644 PRG:0644 ?? clc ; CPU:$C646 PRG:0646 ?? lda Zp17 ; CPU:$C648 PRG:0648 ?? adc MathVectorXHi ; CPU:$C64A PRG:064A ?? tay ; CPU:$C64C PRG:064C ?? lda Zp18 ; CPU:$C64E PRG:064E ?? adc MathVectorXLo ; CPU:$C650 PRG:0650 ?? Flow_C60C: bcc Flow_C612 ; CPU:$C652 PRG:0652 ?? sty Zp17 ; CPU:$C654 PRG:0654 ?? sta Zp18 ; CPU:$C656 PRG:0656 ?? Flow_C612: rol Zp16 ; CPU:$C658 PRG:0658 ?? rol Zp17 ; CPU:$C65A PRG:065A ?? rol Zp18 ; CPU:$C65C PRG:065C ?? sec ; CPU:$C65E PRG:065E ?? lda Zp17 ; CPU:$C660 PRG:0660 ?? sbc MathVectorXHi ; CPU:$C662 PRG:0662 ?? tay ; CPU:$C664 PRG:0664 ?? lda Zp18 ; CPU:$C666 PRG:0666 ?? sbc MathVectorXLo ; CPU:$C668 PRG:0668 ?? dex ; CPU:$C66A PRG:066A ?? bpl Flow_C60C ; CPU:$C66C PRG:066C ?? bcs Flow_C628 ; CPU:$C66E PRG:066E ?? dex ; CPU:$C670 PRG:0670 ?? Flow_C628: lda Zp16 ; CPU:$C672 PRG:0672 ?? rts ; CPU:$C674 PRG:0674 ?? ; ============================================================================= ; EngineRoutine_C62B ; CPU address: $C62B PRG offset: $062B ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C62B: lda #$00 ; CPU:$C676 PRG:0676 ?? sta ProjectedXLo ; CPU:$C678 PRG:0678 ?? sta ProjectedXHi ; CPU:$C67A PRG:067A ?? sta ProjectedYLo ; CPU:$C67C PRG:067C ?? sta ProjectedYHi ; CPU:$C67E PRG:067E ?? sta MathCarryByte ; CPU:$C680 PRG:0680 ?? ldx #$07 ; CPU:$C682 PRG:0682 ?? Flow_C639: ror MathVectorYHi ; CPU:$C684 PRG:0684 ?? bcc Flow_C64C ; CPU:$C686 PRG:0686 ?? clc ; CPU:$C688 PRG:0688 ?? ldy #$02 ; CPU:$C68A PRG:068A ?? Flow_C640: lda $009D,y ; CPU:$C68C PRG:068C ?? adc $0097,y ; CPU:$C68E PRG:068E ?? sta $009D,y ; CPU:$C690 PRG:0690 ?? dey ; CPU:$C692 PRG:0692 ?? bpl Flow_C640 ; CPU:$C694 PRG:0694 ?? Flow_C64C: asl MathVectorXLo ; CPU:$C696 PRG:0696 ?? rol MathVectorXHi ; CPU:$C698 PRG:0698 ?? rol MathCarryByte ; CPU:$C69A PRG:069A ?? dex ; CPU:$C69C PRG:069C ?? bpl Flow_C639 ; CPU:$C69E PRG:069E ?? lda MathVectorXHi ; CPU:$C6A0 PRG:06A0 ?? sta MathVectorXLo ; CPU:$C6A2 PRG:06A2 ?? lda MathCarryByte ; CPU:$C6A4 PRG:06A4 ?? sta MathVectorXHi ; CPU:$C6A6 PRG:06A6 ?? lda #$00 ; CPU:$C6A8 PRG:06A8 ?? sta MathCarryByte ; CPU:$C6AA PRG:06AA ?? ldx #$07 ; CPU:$C6AC PRG:06AC ?? Flow_C663: ror MathVectorYLo ; CPU:$C6AE PRG:06AE ?? bcc Flow_C67A ; CPU:$C6B0 PRG:06B0 ?? clc ; CPU:$C6B2 PRG:06B2 ?? ldy #$02 ; CPU:$C6B4 PRG:06B4 ?? Flow_C66A: lda $009E,y ; CPU:$C6B6 PRG:06B6 ?? adc $0097,y ; CPU:$C6B8 PRG:06B8 ?? sta $009E,y ; CPU:$C6BA PRG:06BA ?? dey ; CPU:$C6BC PRG:06BC ?? bpl Flow_C66A ; CPU:$C6BE PRG:06BE ?? bcc Flow_C67A ; CPU:$C6C0 PRG:06C0 ?? inc ProjectedXLo ; CPU:$C6C2 PRG:06C2 ?? Flow_C67A: asl MathVectorXLo ; CPU:$C6C4 PRG:06C4 ?? rol MathVectorXHi ; CPU:$C6C6 PRG:06C6 ?? rol MathCarryByte ; CPU:$C6C8 PRG:06C8 ?? dex ; CPU:$C6CA PRG:06CA ?? bpl Flow_C663 ; CPU:$C6CC PRG:06CC ?? rts ; CPU:$C6CE PRG:06CE ?? ; ============================================================================= ; EngineRoutine_C684 ; CPU address: $C684 PRG offset: $0684 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C684: lda #$00 ; CPU:$C6D0 PRG:06D0 ?? sta MathVectorYHi ; CPU:$C6D2 PRG:06D2 ?? sta MathVectorYLo ; CPU:$C6D4 PRG:06D4 ?? sta MathVectorXResult ; CPU:$C6D6 PRG:06D6 ?? ldx #$07 ; CPU:$C6D8 PRG:06D8 ?? Flow_C68E: lsr MathVectorXHi ; CPU:$C6DA PRG:06DA ?? ror MathVectorXLo ; CPU:$C6DC PRG:06DC ?? ror MathVectorXResult ; CPU:$C6DE PRG:06DE ?? sec ; CPU:$C6E0 PRG:06E0 ?? ldy #$02 ; CPU:$C6E2 PRG:06E2 ?? Flow_C697: lda $009D,y ; CPU:$C6E4 PRG:06E4 ?? sbc $0098,y ; CPU:$C6E6 PRG:06E6 ?? sta $00A1,y ; CPU:$C6E8 PRG:06E8 ?? dey ; CPU:$C6EA PRG:06EA ?? bpl Flow_C697 ; CPU:$C6EC PRG:06EC ?? bcc Flow_C6B1 ; CPU:$C6EE PRG:06EE ?? ldy #$02 ; CPU:$C6F0 PRG:06F0 ?? Flow_C6A7: lda $00A1,y ; CPU:$C6F2 PRG:06F2 ?? sta $009D,y ; CPU:$C6F4 PRG:06F4 ?? dey ; CPU:$C6F6 PRG:06F6 ?? bpl Flow_C6A7 ; CPU:$C6F8 PRG:06F8 ?? sec ; CPU:$C6FA PRG:06FA ?? Flow_C6B1: rol MathVectorYHi ; CPU:$C6FC PRG:06FC ?? dex ; CPU:$C6FE PRG:06FE ?? bpl Flow_C68E ; CPU:$C700 PRG:0700 ?? lda MathVectorXLo ; CPU:$C702 PRG:0702 ?? sta MathVectorXHi ; CPU:$C704 PRG:0704 ?? lda MathVectorXResult ; CPU:$C706 PRG:0706 ?? sta MathVectorXLo ; CPU:$C708 PRG:0708 ?? lda #$00 ; CPU:$C70A PRG:070A ?? sta MathVectorXResult ; CPU:$C70C PRG:070C ?? ldx #$07 ; CPU:$C70E PRG:070E ?? Flow_C6C4: lsr MathVectorXHi ; CPU:$C710 PRG:0710 ?? ror MathVectorXLo ; CPU:$C712 PRG:0712 ?? ror MathVectorXResult ; CPU:$C714 PRG:0714 ?? sec ; CPU:$C716 PRG:0716 ?? ldy #$02 ; CPU:$C718 PRG:0718 ?? Flow_C6CD: lda $009E,y ; CPU:$C71A PRG:071A ?? sbc $0098,y ; CPU:$C71C PRG:071C ?? sta $00A1,y ; CPU:$C71E PRG:071E ?? dey ; CPU:$C720 PRG:0720 ?? bpl Flow_C6CD ; CPU:$C722 PRG:0722 ?? bcc Flow_C6E7 ; CPU:$C724 PRG:0724 ?? ldy #$02 ; CPU:$C726 PRG:0726 ?? Flow_C6DD: lda $00A1,y ; CPU:$C728 PRG:0728 ?? sta $009E,y ; CPU:$C72A PRG:072A ?? dey ; CPU:$C72C PRG:072C ?? bpl Flow_C6DD ; CPU:$C72E PRG:072E ?? sec ; CPU:$C730 PRG:0730 ?? Flow_C6E7: rol MathVectorYLo ; CPU:$C732 PRG:0732 ?? dex ; CPU:$C734 PRG:0734 ?? bpl Flow_C6C4 ; CPU:$C736 PRG:0736 ?? rts ; CPU:$C738 PRG:0738 ?? ; ============================================================================= ; EngineRoutine_C6ED ; CPU address: $C6ED PRG offset: $06ED ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C6ED: lda MathVectorYHi ; CPU:$C73A PRG:073A ?? sta SignedAimDelta ; CPU:$C73C PRG:073C ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $06F1-$06F2. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C6F1: .byte $10, $11 ; PRG $06F1 / CPU $C6F1 ; CPU:$C73E PRG:073E 10 11 ; ============================================================================= ; EngineRoutine_C6F3 ; CPU address: $C6F3 PRG offset: $06F3 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= EngineRoutine_C6F3: lda MathVectorYLo ; CPU:$C740 PRG:0740 ?? eor #$FF ; CPU:$C742 PRG:0742 ?? sec ; CPU:$C744 PRG:0744 ?? adc #$00 ; CPU:$C746 PRG:0746 ?? sta MathVectorYLo ; CPU:$C748 PRG:0748 ?? lda MathVectorYHi ; CPU:$C74A PRG:074A ?? eor #$FF ; CPU:$C74C PRG:074C ?? adc #$00 ; CPU:$C74E PRG:074E ?? sta MathVectorYHi ; CPU:$C750 PRG:0750 ?? rts ; CPU:$C752 PRG:0752 ?? ; ============================================================================= ; MatchRoutine_C705 ; CPU address: $C705 PRG offset: $0705 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_C705: lda SignedAimDelta ; CPU:$C754 PRG:0754 ?? bmi EngineRoutine_C6F3 ; CPU:$C756 PRG:0756 ?? rts ; PRG $0709 / CPU $C709 ; CPU:$C758 PRG:0758 ?? GameState00_InitializeMatch: ldy PendingStateFlag ; CPU:$C75A PRG:075A ?? bne Flow_C71B ; CPU:$C75C PRG:075C ?? jsr ClearOneNametable ; CPU:$C75E PRG:075E ?? jsr RenderRoutine_ED41 ; CPU:$C760 PRG:0760 ?? lda #$00 ; CPU:$C762 PRG:0762 ?? sta PaletteUpdateMode ; CPU:$C764 PRG:0764 ?? inc PendingStateFlag ; CPU:$C766 PRG:0766 ?? rts ; CPU:$C768 PRG:0768 ?? Flow_C71B: dey ; CPU:$C76A PRG:076A ?? bne Flow_C739 ; CPU:$C76C PRG:076C ?? jsr RenderRoutine_ED4D ; CPU:$C76E PRG:076E ?? jsr HideAllSprites ; CPU:$C770 PRG:0770 ?? lda #$88 ; CPU:$C772 PRG:0772 ?? sta WorkPtrLo ; CPU:$C774 PRG:0774 ?? lda #$F2 ; CPU:$C776 PRG:0776 ?? sta WorkPtrHi ; CPU:$C778 PRG:0778 ?? lda #$04 ; CPU:$C77A PRG:077A ?? sta Zp03 ; CPU:$C77C PRG:077C ?? jsr WriteMetaspriteToOam ; CPU:$C77E PRG:077E ?? jsr MatchRoutine_C77A ; CPU:$C780 PRG:0780 ?? inc PendingStateFlag ; CPU:$C782 PRG:0782 ?? rts ; CPU:$C784 PRG:0784 ?? Flow_C739: dey ; CPU:$C786 PRG:0786 ?? bne Flow_C742 ; CPU:$C788 PRG:0788 ?? jsr EnableRendering ; CPU:$C78A PRG:078A ?? inc PendingStateFlag ; CPU:$C78C PRG:078C ?? rts ; CPU:$C78E PRG:078E ?? Flow_C742: dey ; CPU:$C790 PRG:0790 ?? bne Flow_C752 ; CPU:$C792 PRG:0792 ?? lda ControllerHeld ; CPU:$C794 PRG:0794 ?? and #$10 ; CPU:$C796 PRG:0796 ?? bne Flow_C751 ; CPU:$C798 PRG:0798 ?? lda #$01 ; CPU:$C79A PRG:079A ?? sta StateTransitionFlag ; CPU:$C79C PRG:079C ?? inc PendingStateFlag ; CPU:$C79E PRG:079E ?? Flow_C751: rts ; CPU:$C7A0 PRG:07A0 ?? Flow_C752: lda ControllerHeld ; CPU:$C7A2 PRG:07A2 ?? and #$10 ; CPU:$C7A4 PRG:07A4 ?? bne Flow_C78C ; CPU:$C7A6 PRG:07A6 ?? lda ControllerHeld ; CPU:$C7A8 PRG:07A8 ?? and #$03 ; CPU:$C7AA PRG:07AA ?? beq Flow_C787 ; CPU:$C7AC PRG:07AC ?? ldy StateTransitionFlag ; CPU:$C7AE PRG:07AE ?? bne Flow_C786 ; CPU:$C7B0 PRG:07B0 ?? inc StateTransitionFlag ; CPU:$C7B2 PRG:07B2 ?? ldy Zp3A ; CPU:$C7B4 PRG:07B4 ?? and #$02 ; CPU:$C7B6 PRG:07B6 ?? bne Flow_C773 ; CPU:$C7B8 PRG:07B8 ?? iny ; CPU:$C7BA PRG:07BA ?? cpy #$05 ; CPU:$C7BC PRG:07BC ?? bne FlowEntry_C778 ; CPU:$C7BE PRG:07BE ?? ldy #$00 ; CPU:$C7C0 PRG:07C0 ?? beq FlowEntry_C778 ; CPU:$C7C2 PRG:07C2 ?? Flow_C773: dey ; CPU:$C7C4 PRG:07C4 ?? bpl FlowEntry_C778 ; CPU:$C7C6 PRG:07C6 ?? ldy #$04 ; CPU:$C7C8 PRG:07C8 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0778-$0779. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- EngineTable_C778: FlowEntry_C778: .byte $84, $3A ; PRG $0778 / CPU $C778 ; CPU:$C7CA PRG:07CA 84 3A ; ============================================================================= ; MatchRoutine_C77A ; CPU address: $C77A PRG offset: $077A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_C77A: lda Zp3A ; CPU:$C7CC PRG:07CC ?? asl a ; CPU:$C7CE PRG:07CE ?? asl a ; CPU:$C7D0 PRG:07D0 ?? asl a ; CPU:$C7D2 PRG:07D2 ?? asl a ; CPU:$C7D4 PRG:07D4 ?? clc ; CPU:$C7D6 PRG:07D6 ?? adc #$60 ; CPU:$C7D8 PRG:07D8 ?? sta $0203 ; CPU:$C7DA PRG:07DA ?? Flow_C786: rts ; CPU:$C7DC PRG:07DC ?? Flow_C787: lda #$00 ; CPU:$C7DE PRG:07DE ?? sta StateTransitionFlag ; CPU:$C7E0 PRG:07E0 ?? rts ; PRG $078B / CPU $C78B ; CPU:$C7E2 PRG:07E2 ?? Flow_C78C: lda Zp3A ; CPU:$C7E4 PRG:07E4 ?? sta ServingPlayer ; CPU:$C7E6 PRG:07E6 ?? lda #$00 ; CPU:$C7E8 PRG:07E8 ?? sta ModeAnimSubframe ; CPU:$C7EA PRG:07EA ?? inc GameState ; CPU:$C7EC PRG:07EC ?? rts ; PRG $0796 / CPU $C796 ; CPU:$C7EE PRG:07EE ?? ; ============================================================================= ; GameState01_WaitForServe ; CPU address: $C797 PRG offset: $0797 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= GameState01_WaitForServe: jsr DisableRendering ; CPU:$C7F0 PRG:07F0 ?? jsr ClearOneNametable ; CPU:$C7F2 PRG:07F2 ?? jsr RenderRoutine_ED41 ; CPU:$C7F4 PRG:07F4 ?? jsr RenderRoutine_ED59 ; CPU:$C7F6 PRG:07F6 ?? ldx #$0F ; CPU:$C7F8 PRG:07F8 ?? lda #$00 ; CPU:$C7FA PRG:07FA ?? Flow_C7A7: sta PointWinner,x ; CPU:$C7FC PRG:07FC ?? dex ; CPU:$C7FE PRG:07FE ?? bpl Flow_C7A7 ; CPU:$C800 PRG:0800 ?? sta PlayerAnimationFlags ; CPU:$C802 PRG:0802 ?? sta BallStateFlags ; CPU:$C804 PRG:0804 ?? lda #$C1 ; CPU:$C806 PRG:0806 ?? sta BallTrajectoryFlags ; CPU:$C808 PRG:0808 ?? inc GameState ; CPU:$C80A PRG:080A ?? rts ; CPU:$C80C PRG:080C ?? ; ============================================================================= ; GameState02_PrepareRally ; CPU address: $C7B7 PRG offset: $07B7 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= GameState02_PrepareRally: jsr EnableRendering ; CPU:$C80E PRG:080E ?? jsr EngineRoutine_C42C ; CPU:$C810 PRG:0810 ?? jsr HideAllSprites ; CPU:$C812 PRG:0812 ?? jsr RenderRoutine_ED70 ; CPU:$C814 PRG:0814 ?? inc GameState ; CPU:$C816 PRG:0816 ?? rts ; CPU:$C818 PRG:0818 ?? ; ============================================================================= ; GameState03_RunRally ; CPU address: $C7C6 PRG offset: $07C6 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= GameState03_RunRally: jsr RenderRoutine_E8CA ; CPU:$C81A PRG:081A ?? lda #$01 ; CPU:$C81C PRG:081C ?? sta PpuBufferReady ; CPU:$C81E PRG:081E ?? jsr MatchRoutine_C7E7 ; CPU:$C820 PRG:0820 ?? jsr PhysicsRoutine_D7E1 ; CPU:$C822 PRG:0822 ?? lda ServingPlayer ; CPU:$C824 PRG:0824 ?? cmp #$02 ; CPU:$C826 PRG:0826 ?? bcs Flow_C7E1 ; CPU:$C828 PRG:0828 ?? lda #$20 ; CPU:$C82A PRG:082A ?? sta $0319 ; CPU:$C82C PRG:082C ?? sta $0339 ; CPU:$C82E PRG:082E ?? Flow_C7E1: jsr EngineRoutine_C436 ; CPU:$C830 PRG:0830 ?? inc GameState ; CPU:$C832 PRG:0832 ?? rts ; CPU:$C834 PRG:0834 ?? ; ============================================================================= ; MatchRoutine_C7E7 ; CPU address: $C7E7 PRG offset: $07E7 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_C7E7: ldy #$BF ; CPU:$C836 PRG:0836 ?? Flow_C7E9: lda InitialMatchObjectStateData,y ; CPU:$C838 PRG:0838 ?? sta $0300,y ; CPU:$C83A PRG:083A ?? dey ; CPU:$C83C PRG:083C ?? bne Flow_C7E9 ; CPU:$C83E PRG:083E ?? lda InitialMatchObjectStateData,y ; CPU:$C840 PRG:0840 ?? sta $0300,y ; CPU:$C842 PRG:0842 ?? lda #$00 ; CPU:$C844 PRG:0844 ?? sta PlayerCourtOrder ; CPU:$C846 PRG:0846 ?? lda GameMode ; CPU:$C848 PRG:0848 ?? bne Flow_C807 ; CPU:$C84A PRG:084A ?? sta $0320 ; CPU:$C84C PRG:084C ?? sta $0360 ; CPU:$C84E PRG:084E ?? Flow_C806: rts ; CPU:$C850 PRG:0850 ?? Flow_C807: lda BallTrajectoryFlags ; CPU:$C852 PRG:0852 ?? and #$02 ; CPU:$C854 PRG:0854 ?? bne Flow_C829 ; CPU:$C856 PRG:0856 ?? lda BallTrajectoryFlags ; CPU:$C858 PRG:0858 ?? and #$04 ; CPU:$C85A PRG:085A ?? beq Flow_C816 ; CPU:$C85C PRG:085C ?? jsr MatchRoutine_C838 ; CPU:$C85E PRG:085E ?? Flow_C816: lda BallTrajectoryFlags ; CPU:$C860 PRG:0860 ?? and #$01 ; CPU:$C862 PRG:0862 ?? beq Flow_C806 ; CPU:$C864 PRG:0864 ?? ; ============================================================================= ; MatchRoutine_C81C ; CPU address: $C81C PRG offset: $081C ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_C81C: ldy $0347 ; CPU:$C866 PRG:0866 ?? ldx $0367 ; CPU:$C868 PRG:0868 ?? stx $0347 ; CPU:$C86A PRG:086A ?? sty $0367 ; CPU:$C86C PRG:086C ?? rts ; CPU:$C86E PRG:086E ?? Flow_C829: lda BallTrajectoryFlags ; CPU:$C870 PRG:0870 ?? and #$04 ; CPU:$C872 PRG:0872 ?? beq Flow_C832 ; CPU:$C874 PRG:0874 ?? jsr MatchRoutine_C81C ; CPU:$C876 PRG:0876 ?? Flow_C832: lda BallTrajectoryFlags ; CPU:$C878 PRG:0878 ?? and #$01 ; CPU:$C87A PRG:087A ?? beq Flow_C806 ; CPU:$C87C PRG:087C ?? ; ============================================================================= ; MatchRoutine_C838 ; CPU address: $C838 PRG offset: $0838 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_C838: ldy $0307 ; CPU:$C87E PRG:087E ?? ldx $0327 ; CPU:$C880 PRG:0880 ?? stx $0307 ; CPU:$C882 PRG:0882 ?? sty $0327 ; CPU:$C884 PRG:0884 ?? inc PlayerCourtOrder ; CPU:$C886 PRG:0886 ?? rts ; CPU:$C888 PRG:0888 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0847-$0906. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- InitialMatchObjectStateData: .byte $01, $00, $03, $00, $00, $0E, $11, $00, $D8, $80, $00, $00, $00, $00, $00, $00 ; PRG $0847 / CPU $C847 ; CPU:$C88A PRG:088A 01 00 03 00 00 0E 11 00 D8 80 00 00 00 00 00 00 .byte $00, $0E, $00, $00, $C0, $40, $7C, $E8, $00, $18, $00, $00, $00, $00, $00, $00 ; PRG $0857 / CPU $C857 ; CPU:$C89A PRG:089A 00 0E 00 00 C0 40 7C E8 00 18 00 00 00 00 00 00 .byte $01, $00, $03, $00, $00, $0E, $11, $01, $A8, $80, $30, $00, $00, $00, $00, $00 ; PRG $0867 / CPU $C867 ; CPU:$C8AA PRG:08AA 01 00 03 00 00 0E 11 01 A8 80 30 00 00 00 00 00 .byte $00, $0E, $00, $00, $F0, $10, $7C, $E8, $00, $18, $00, $00, $00, $00, $00, $00 ; PRG $0877 / CPU $C877 ; CPU:$C8BA PRG:08BA 00 0E 00 00 F0 10 7C E8 00 18 00 00 00 00 00 00 .byte $01, $00, $03, $00, $00, $0A, $29, $03, $2C, $80, $70, $00, $00, $00, $00, $00 ; PRG $0887 / CPU $C887 ; CPU:$C8CA PRG:08CA 01 00 03 00 00 0A 29 03 2C 80 70 00 00 00 00 00 .byte $00, $08, $00, $00, $D0, $30, $24, $70, $80, $80, $00, $00, $00, $00, $00, $00 ; PRG $0897 / CPU $C897 ; CPU:$C8DA PRG:08DA 00 08 00 00 D0 30 24 70 80 80 00 00 00 00 00 00 .byte $01, $00, $03, $00, $00, $0A, $29, $03, $44, $80, $A0, $00, $00, $00, $00, $00 ; PRG $08A7 / CPU $C8A7 ; CPU:$C8EA PRG:08EA 01 00 03 00 00 0A 29 03 44 80 A0 00 00 00 00 00 .byte $00, $08, $00, $00, $D0, $30, $24, $70, $80, $80, $00, $00, $00, $00, $00, $00 ; PRG $08B7 / CPU $C8B7 ; CPU:$C8FA PRG:08FA 00 08 00 00 D0 30 24 70 80 80 00 00 00 00 00 00 .byte $01, $00, $00, $00, $00, $00, $18, $02, $B0, $80, $60, $00, $00, $00, $00, $00 ; PRG $08C7 / CPU $C8C7 ; CPU:$C90A PRG:090A 01 00 00 00 00 00 18 02 B0 80 60 00 00 00 00 00 .byte $01, $00, $00, $00, $02, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, $00 ; PRG $08D7 / CPU $C8D7 ; CPU:$C91A PRG:091A 01 00 00 00 02 00 00 00 00 00 01 00 00 00 00 00 .byte $01, $00, $00, $00, $00, $00, $20, $02, $B0, $80, $64, $00, $00, $00, $00, $00 ; PRG $08E7 / CPU $C8E7 ; CPU:$C92A PRG:092A 01 00 00 00 00 00 20 02 B0 80 64 00 00 00 00 00 .byte $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, $00 ; PRG $08F7 / CPU $C8F7 ; CPU:$C93A PRG:093A 01 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 ; ============================================================================= ; GameState04_PointEnded ; CPU address: $C907 PRG offset: $0907 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= GameState04_PointEnded: jsr MatchRoutine_CBD5 ; CPU:$C94A PRG:094A ?? jsr RenderRoutine_E076 ; CPU:$C94C PRG:094C ?? jsr PhysicsRoutine_CD0B ; CPU:$C94E PRG:094E ?? jsr PhysicsRoutine_D8A9 ; CPU:$C950 PRG:0950 ?? jsr RenderRoutine_E5F5 ; CPU:$C952 PRG:0952 ?? jsr PhysicsRoutine_D790 ; CPU:$C954 PRG:0954 ?? jsr MatchRoutine_C920 ; CPU:$C956 PRG:0956 ?? jsr MatchRoutine_C96F ; CPU:$C958 PRG:0958 ?? rts ; CPU:$C95A PRG:095A ?? ; ============================================================================= ; MatchRoutine_C920 ; CPU address: $C920 PRG offset: $0920 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_C920: lda BallTrajectoryFlags ; CPU:$C95C PRG:095C ?? bpl Flow_C928 ; CPU:$C95E PRG:095E ?? and #$02 ; CPU:$C960 PRG:0960 ?? beq Flow_C92B ; CPU:$C962 PRG:0962 ?? Flow_C928: lda $0310 ; CPU:$C964 PRG:0964 ?? Flow_C92B: ldy GameMode ; CPU:$C966 PRG:0966 ?? beq Flow_C932 ; CPU:$C968 PRG:0968 ?? ora $0330 ; CPU:$C96A PRG:096A ?? Flow_C932: and #$0F ; CPU:$C96C PRG:096C ?? beq Flow_C93C ; CPU:$C96E PRG:096E ?? lda #$40 ; CPU:$C970 PRG:0970 ?? ora AudioRequestFlags2 ; CPU:$C972 PRG:0972 ?? sta AudioRequestFlags2 ; CPU:$C974 PRG:0974 ?? Flow_C93C: lda BallBounceState ; CPU:$C976 PRG:0976 ?? beq Flow_C94C ; CPU:$C978 PRG:0978 ?? lda #$40 ; CPU:$C97A PRG:097A ?? bit BallXPosition ; CPU:$C97C PRG:097C ?? bpl Flow_C948 ; CPU:$C97E PRG:097E ?? lda #$C0 ; CPU:$C980 PRG:0980 ?? Flow_C948: ora AudioRequestFlags3 ; CPU:$C982 PRG:0982 ?? sta AudioRequestFlags3 ; CPU:$C984 PRG:0984 ?? Flow_C94C: rts ; CPU:$C986 PRG:0986 ?? ; ============================================================================= ; MatchRoutine_C94D ; CPU address: $C94D PRG offset: $094D ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_C94D: ldy #$00 ; CPU:$C988 PRG:0988 ?? lda PlayerActionType ; CPU:$C98A PRG:098A ?? cmp #$04 ; CPU:$C98C PRG:098C ?? bne Flow_C956 ; CPU:$C98E PRG:098E ?? iny ; CPU:$C990 PRG:0990 ?? Flow_C956: sty BallBounceState ; CPU:$C992 PRG:0992 ?? asl a ; CPU:$C994 PRG:0994 ?? tax ; CPU:$C996 PRG:0996 ?? lda $C965,x ; CPU:$C998 PRG:0998 ?? tay ; CPU:$C99A PRG:099A ?? lda $C966,x ; CPU:$C99C PRG:099C ?? sta $00F1,y ; CPU:$C99E PRG:099E ?? rts ; CPU:$C9A0 PRG:09A0 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0965-$096E. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PlayerActionAudioRequestTable: .byte $0E, $04, $0E, $08, $0E, $10, $0E, $20, $00, $00 ; PRG $0965 / CPU $C965 ; CPU:$C9A2 PRG:09A2 0E 04 0E 08 0E 10 0E 20 00 00 ; ============================================================================= ; MatchRoutine_C96F ; CPU address: $C96F PRG offset: $096F ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_C96F: ldy Zp24 ; CPU:$C9AC PRG:09AC ?? dey ; CPU:$C9AE PRG:09AE ?? bne Flow_C977 ; CPU:$C9B0 PRG:09B0 ?? jsr RenderRoutine_E646 ; CPU:$C9B2 PRG:09B2 ?? Flow_C977: lda UmpireMessageId ; CPU:$C9B4 PRG:09B4 ?? beq Flow_C985 ; CPU:$C9B6 PRG:09B6 ?? lda BallContactState ; CPU:$C9B8 PRG:09B8 ?? bne Flow_C985 ; CPU:$C9BA PRG:09BA ?? inc BallContactState ; CPU:$C9BC PRG:09BC ?? lda #$0A ; CPU:$C9BE PRG:09BE ?? sta Zp24 ; CPU:$C9C0 PRG:09C0 ?? Flow_C985: lda PlayerAnimationFlags ; CPU:$C9C2 PRG:09C2 ?? beq FlowEntry_C9A1 ; CPU:$C9C4 PRG:09C4 ?? inc GameState ; CPU:$C9C6 PRG:09C6 ?? inc GameStateStep ; CPU:$C9C8 PRG:09C8 ?? lda #$00 ; CPU:$C9CA PRG:09CA ?? sta PlayerAnimationFlags ; CPU:$C9CC PRG:09CC ?? jsr RenderRoutine_E646 ; CPU:$C9CE PRG:09CE ?? lda #$10 ; CPU:$C9D0 PRG:09D0 ?? ldy $0391 ; CPU:$C9D2 PRG:09D2 ?? cpy #$05 ; CPU:$C9D4 PRG:09D4 ?? bcs Flow_C99F ; CPU:$C9D6 PRG:09D6 ?? lda #$30 ; CPU:$C9D8 PRG:09D8 ?? Flow_C99F: sta Zp21 ; CPU:$C9DA PRG:09DA ?? FlowEntry_C9A1: rts ; PRG $09A1 / CPU $C9A1 ; CPU:$C9DC PRG:09DC ?? GameState05_UpdateScore: lda Zp21 ; CPU:$C9DE PRG:09DE ?? bne Flow_C9B4 ; CPU:$C9E0 PRG:09E0 ?? lda #$FF ; CPU:$C9E2 PRG:09E2 ?? ldy $038A ; CPU:$C9E4 PRG:09E4 ?? sta $0201,y ; CPU:$C9E6 PRG:09E6 ?? sta $0205,y ; CPU:$C9E8 PRG:09E8 ?? inc GameState ; CPU:$C9EA PRG:09EA ?? Flow_C9B3: rts ; CPU:$C9EC PRG:09EC ?? Flow_C9B4: cmp #$0E ; CPU:$C9EE PRG:09EE ?? bne Flow_C9C3 ; CPU:$C9F0 PRG:09F0 ?? jsr RenderRoutine_E77F ; CPU:$C9F2 PRG:09F2 ?? jsr RenderRoutine_E8CA ; CPU:$C9F4 PRG:09F4 ?? Flow_C9BE: lda #$01 ; CPU:$C9F6 PRG:09F6 ?? sta PpuBufferReady ; CPU:$C9F8 PRG:09F8 ?? Flow_C9C2: rts ; CPU:$C9FA PRG:09FA ?? Flow_C9C3: cmp #$0D ; CPU:$C9FC PRG:09FC ?? bne Flow_C9D7 ; CPU:$C9FE PRG:09FE ?? lda ScoreUpdatePhase ; CPU:$CA00 PRG:0A00 ?? cmp #$01 ; CPU:$CA02 PRG:0A02 ?? bne Flow_C9C2 ; CPU:$CA04 PRG:0A04 ?? lda ScoreLo ; CPU:$CA06 PRG:0A06 ?? ora ScoreHi ; CPU:$CA08 PRG:0A08 ?? bne Flow_C9C2 ; CPU:$CA0A PRG:0A0A ?? jsr ShowDeuceMessage ; CPU:$CA0C PRG:0A0C ?? rts ; CPU:$CA0E PRG:0A0E ?? Flow_C9D7: cmp #$02 ; CPU:$CA10 PRG:0A10 ?? bne Flow_C9B3 ; CPU:$CA12 PRG:0A12 ?? jsr RenderRoutine_E80C ; CPU:$CA14 PRG:0A14 ?? jsr RenderRoutine_E965 ; CPU:$CA16 PRG:0A16 ?? jsr PhysicsRoutine_CC96 ; CPU:$CA18 PRG:0A18 ?? jmp Flow_C9BE ; CPU:$CA1A PRG:0A1A ?? GameState06_AdvanceGame: jsr RenderRoutine_E9DB ; CPU:$CA1C PRG:0A1C ?? lda #$01 ; CPU:$CA1E PRG:0A1E ?? sta PpuBufferReady ; CPU:$CA20 PRG:0A20 ?? lda StateTimer ; CPU:$CA22 PRG:0A22 ?? bne Flow_CA21 ; CPU:$CA24 PRG:0A24 ?? jsr RenderRoutine_E883 ; CPU:$CA26 PRG:0A26 ?? lda PendingGameState ; CPU:$CA28 PRG:0A28 ?? sta GameState ; CPU:$CA2A PRG:0A2A ?? cmp #$0B ; CPU:$CA2C PRG:0A2C ?? bne Flow_CA21 ; CPU:$CA2E PRG:0A2E ?? jsr RenderRoutine_E8AF ; CPU:$CA30 PRG:0A30 ?? jsr RenderRoutine_EB05 ; CPU:$CA32 PRG:0A32 ?? jsr PhysicsRoutine_CCCD ; CPU:$CA34 PRG:0A34 ?? lda MatchResultType ; CPU:$CA36 PRG:0A36 ?? asl a ; CPU:$CA38 PRG:0A38 ?? tay ; CPU:$CA3A PRG:0A3A ?? lda $CA22,y ; CPU:$CA3C PRG:0A3C ?? tax ; CPU:$CA3E PRG:0A3E ?? lda $CA23,y ; CPU:$CA40 PRG:0A40 ?? sta AudioEventPriority,x ; CPU:$CA42 PRG:0A42 ?? ldy #$20 ; CPU:$CA44 PRG:0A44 ?? lda MatchResultType ; CPU:$CA46 PRG:0A46 ?? bne Flow_CA1B ; CPU:$CA48 PRG:0A48 ?? ldy #$50 ; CPU:$CA4A PRG:0A4A ?? Flow_CA1B: sty StateTimer ; CPU:$CA4C PRG:0A4C ?? lda #$00 ; CPU:$CA4E PRG:0A4E ?? sta StateSubstep ; CPU:$CA50 PRG:0A50 ?? Flow_CA21: rts ; CPU:$CA52 PRG:0A52 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0A22-$0A27. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- MatchResultAudioRequestTable: .byte $01, $01, $01, $02, $01, $04 ; PRG $0A22 / CPU $CA22 ; CPU:$CA54 PRG:0A54 01 01 01 02 01 04 GameState08_WaitForTimer: lda StateTimer ; CPU:$CA5A PRG:0A5A ?? bne Flow_CA30 ; CPU:$CA5C PRG:0A5C ?? lda #$04 ; CPU:$CA5E PRG:0A5E ?? bne Flow_CA58 ; CPU:$CA60 PRG:0A60 ?? Flow_CA30: rts ; CPU:$CA62 PRG:0A62 ?? GameState09_RestorePreviousState: lda StateTimer ; CPU:$CA64 PRG:0A64 ?? bne Flow_CA39 ; CPU:$CA66 PRG:0A66 ?? lda Zp3B ; CPU:$CA68 PRG:0A68 ?? sta GameState ; CPU:$CA6A PRG:0A6A ?? Flow_CA39: rts ; CPU:$CA6C PRG:0A6C ?? GameState0A_ResumePreviousState: lda Zp21 ; CPU:$CA6E PRG:0A6E ?? beq Flow_CA4D ; CPU:$CA70 PRG:0A70 ?? cmp #$0A ; CPU:$CA72 PRG:0A72 ?? bne Flow_CA5A ; CPU:$CA74 PRG:0A74 ?? lda PpuMaskShadow ; CPU:$CA76 PRG:0A76 ?? ora #$10 ; CPU:$CA78 PRG:0A78 ?? sta PPUMASK ; CPU:$CA7A PRG:0A7A ?? sta PpuMaskShadow ; CPU:$CA7C PRG:0A7C ?? bne Flow_CA5A ; CPU:$CA7E PRG:0A7E ?? Flow_CA4D: ldx #$07 ; CPU:$CA80 PRG:0A80 ?? Flow_CA4F: lda Zp28,x ; CPU:$CA82 PRG:0A82 ?? sta Zp20,x ; CPU:$CA84 PRG:0A84 ?? dex ; CPU:$CA86 PRG:0A86 ?? bpl Flow_CA4F ; CPU:$CA88 PRG:0A88 ?? lda Zp3B ; CPU:$CA8A PRG:0A8A ?? Flow_CA58: sta GameState ; CPU:$CA8C PRG:0A8C ?? Flow_CA5A: rts ; CPU:$CA8E PRG:0A8E ?? GameState0B_FinishTransition: lda StateSubstep ; CPU:$CA90 PRG:0A90 ?? bne Flow_CA7E ; CPU:$CA92 PRG:0A92 ?? lda StateTimer ; CPU:$CA94 PRG:0A94 ?? bne Flow_CA73 ; CPU:$CA96 PRG:0A96 ?? lda MatchResultType ; CPU:$CA98 PRG:0A98 ?? cmp #$01 ; CPU:$CA9A PRG:0A9A ?? beq Flow_CA74 ; CPU:$CA9C PRG:0A9C ?? lda #$01 ; CPU:$CA9E PRG:0A9E ?? sta GameActiveFlag ; CPU:$CAA0 PRG:0AA0 ?? sta StateTransitionFlag ; CPU:$CAA2 PRG:0AA2 ?? lda #$00 ; CPU:$CAA4 PRG:0AA4 ?? sta GameStateStep ; CPU:$CAA6 PRG:0AA6 ?? Flow_CA73: rts ; CPU:$CAA8 PRG:0AA8 ?? Flow_CA74: jsr RenderRoutine_EADA ; CPU:$CAAA PRG:0AAA ?? lda #$20 ; CPU:$CAAC PRG:0AAC ?? sta StateTimer ; CPU:$CAAE PRG:0AAE ?? inc StateSubstep ; CPU:$CAB0 PRG:0AB0 ?? rts ; PRG $0A7D / CPU $CA7D ; CPU:$CAB2 PRG:0AB2 ?? Flow_CA7E: lda StateTimer ; CPU:$CAB4 PRG:0AB4 ?? bne Flow_CA73 ; CPU:$CAB6 PRG:0AB6 ?? lda #$01 ; CPU:$CAB8 PRG:0AB8 ?? sta GameState ; CPU:$CABA PRG:0ABA ?? rts ; PRG $0A86 / CPU $CA86 ; CPU:$CABC PRG:0ABC ?? ModeStep00_DrawSelectionScreen: jsr DisableRendering ; CPU:$CABE PRG:0ABE ?? lda SelectedGameMode ; CPU:$CAC0 PRG:0AC0 ?? sta GameMode ; CPU:$CAC2 PRG:0AC2 ?? jsr ClearOneNametable ; CPU:$CAC4 PRG:0AC4 ?? jsr HideAllSprites ; CPU:$CAC6 PRG:0AC6 ?? ldx #$E6 ; CPU:$CAC8 PRG:0AC8 ?? ldy #$EE ; CPU:$CACA PRG:0ACA ?? jsr DrawScreenData ; CPU:$CACC PRG:0ACC ?? lda #$02 ; CPU:$CACE PRG:0ACE ?? sta PaletteUpdateMode ; CPU:$CAD0 PRG:0AD0 ?? lda #$01 ; CPU:$CAD2 PRG:0AD2 ?? sta StateTransitionFlag ; CPU:$CAD4 PRG:0AD4 ?? lda #$84 ; CPU:$CAD6 PRG:0AD6 ?? sta WorkPtrLo ; CPU:$CAD8 PRG:0AD8 ?? lda #$F2 ; CPU:$CADA PRG:0ADA ?? sta WorkPtrHi ; CPU:$CADC PRG:0ADC ?? lda #$04 ; CPU:$CADE PRG:0ADE ?? sta Zp03 ; CPU:$CAE0 PRG:0AE0 ?? jsr WriteMetaspriteToOam ; CPU:$CAE2 PRG:0AE2 ?? inc GameStateStep ; CPU:$CAE4 PRG:0AE4 ?? ldy DemoCounter ; CPU:$CAE6 PRG:0AE6 ?? bne Flow_CAC0 ; CPU:$CAE8 PRG:0AE8 ?? ldy #$03 ; CPU:$CAEA PRG:0AEA ?? sty DemoCounter ; CPU:$CAEC PRG:0AEC ?? lda #$4F ; CPU:$CAEE PRG:0AEE ?? bne Flow_CAC4 ; CPU:$CAF0 PRG:0AF0 ?? Flow_CAC0: dec DemoCounter ; CPU:$CAF2 PRG:0AF2 ?? lda #$25 ; CPU:$CAF4 PRG:0AF4 ?? Flow_CAC4: sta StateTimer ; CPU:$CAF6 PRG:0AF6 ?? jmp EnableRendering ; CPU:$CAF8 PRG:0AF8 ?? ModeStep01_Countdown: ldy StateTimer ; CPU:$CAFA PRG:0AFA ?? beq Flow_CADA ; CPU:$CAFC PRG:0AFC ?? cpy #$4B ; CPU:$CAFE PRG:0AFE ?? bne Flow_CAD9 ; CPU:$CB00 PRG:0B00 ?? lda #$08 ; CPU:$CB02 PRG:0B02 ?? sta AudioRequestFlags1 ; CPU:$CB04 PRG:0B04 ?? ldy #$48 ; CPU:$CB06 PRG:0B06 ?? sty StateTimer ; CPU:$CB08 PRG:0B08 ?? Flow_CAD9: rts ; CPU:$CB0A PRG:0B0A ?? Flow_CADA: inc GameStateStep ; CPU:$CB0C PRG:0B0C ?? rts ; PRG $0ADC / CPU $CADC ; CPU:$CB0E PRG:0B0E ?? ModeStep02_InitializeSelection: lda #$01 ; CPU:$CB10 PRG:0B10 ?? sta GameMode ; CPU:$CB12 PRG:0B12 ?? inc GameStateStep ; CPU:$CB14 PRG:0B14 ?? rts ; CPU:$CB16 PRG:0B16 ?? ModeStep03_UpdateSelection: jsr GameState01_WaitForServe ; CPU:$CB18 PRG:0B18 ?? lda #$00 ; CPU:$CB1A PRG:0B1A ?? sta ServingPlayer ; CPU:$CB1C PRG:0B1C ?? inc GameStateStep ; CPU:$CB1E PRG:0B1E ?? rts ; CPU:$CB20 PRG:0B20 ?? ModeStep04_ConfirmSelection: jsr GameState02_PrepareRally ; CPU:$CB22 PRG:0B22 ?? inc GameStateStep ; CPU:$CB24 PRG:0B24 ?? rts ; CPU:$CB26 PRG:0B26 ?? ModeStep05_StartDemoOrMatch: jsr GameState03_RunRally ; CPU:$CB28 PRG:0B28 ?? lda #$00 ; CPU:$CB2A PRG:0B2A ?? sta ModeAnimFrameA ; CPU:$CB2C PRG:0B2C ?? sta ModeAnimTimerA ; CPU:$CB2E PRG:0B2E ?? sta ModeAnimFrameB ; CPU:$CB30 PRG:0B30 ?? sta ModeAnimTimerB ; CPU:$CB32 PRG:0B32 ?? inc GameStateStep ; CPU:$CB34 PRG:0B34 ?? rts ; CPU:$CB36 PRG:0B36 ?? ModeStep06_CompleteSetup: lda ModeAnimTimerA ; CPU:$CB38 PRG:0B38 ?? beq Flow_CB14 ; CPU:$CB3A PRG:0B3A ?? dec ModeAnimTimerA ; CPU:$CB3C PRG:0B3C ?? lda $0310 ; CPU:$CB3E PRG:0B3E ?? and #$0F ; CPU:$CB40 PRG:0B40 ?? sta Zp1B ; CPU:$CB42 PRG:0B42 ?? jmp Flow_CB28 ; CPU:$CB44 PRG:0B44 ?? Flow_CB14: ldy ModeAnimFrameA ; CPU:$CB46 PRG:0B46 ?? lda $CB59,y ; CPU:$CB48 PRG:0B48 ?? cmp #$AA ; CPU:$CB4A PRG:0B4A ?? beq Flow_CB52 ; CPU:$CB4C PRG:0B4C ?? sta Zp1B ; CPU:$CB4E PRG:0B4E ?? iny ; CPU:$CB50 PRG:0B50 ?? lda $CB59,y ; CPU:$CB52 PRG:0B52 ?? sta ModeAnimTimerA ; CPU:$CB54 PRG:0B54 ?? iny ; CPU:$CB56 PRG:0B56 ?? sty ModeAnimFrameA ; CPU:$CB58 PRG:0B58 ?? Flow_CB28: lda ModeAnimTimerB ; CPU:$CB5A PRG:0B5A ?? beq Flow_CB38 ; CPU:$CB5C PRG:0B5C ?? dec ModeAnimTimerB ; CPU:$CB5E PRG:0B5E ?? lda $0330 ; CPU:$CB60 PRG:0B60 ?? and #$0F ; CPU:$CB62 PRG:0B62 ?? sta Zp1D ; CPU:$CB64 PRG:0B64 ?? jmp Flow_CB48 ; CPU:$CB66 PRG:0B66 ?? Flow_CB38: ldy ModeAnimFrameB ; CPU:$CB68 PRG:0B68 ?? lda $CB8E,y ; CPU:$CB6A PRG:0B6A ?? sta Zp1D ; CPU:$CB6C PRG:0B6C ?? iny ; CPU:$CB6E PRG:0B6E ?? lda $CB8E,y ; CPU:$CB70 PRG:0B70 ?? sta ModeAnimTimerB ; CPU:$CB72 PRG:0B72 ?? iny ; CPU:$CB74 PRG:0B74 ?? sty ModeAnimFrameB ; CPU:$CB76 PRG:0B76 ?? Flow_CB48: jsr GameState04_PointEnded ; CPU:$CB78 PRG:0B78 ?? lda GameStateStep ; CPU:$CB7A PRG:0B7A ?? cmp #$07 ; CPU:$CB7C PRG:0B7C ?? beq Flow_CB54 ; CPU:$CB7E PRG:0B7E ?? rts ; PRG $0B51 / CPU $CB51 ; CPU:$CB80 PRG:0B80 ?? Flow_CB52: inc GameStateStep ; CPU:$CB82 PRG:0B82 ?? Flow_CB54: lda #$08 ; CPU:$CB84 PRG:0B84 ?? sta StateTimer ; CPU:$CB86 PRG:0B86 ?? rts ; CPU:$CB88 PRG:0B88 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0B59-$0BCA. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- ModeSetupAnimationSequenceData: .byte $01, $08, $00, $A4, $80, $B4, $02, $2C, $00, $2C, $80, $20, $08, $40, $80, $20 ; PRG $0B59 / CPU $CB59 ; CPU:$CB8A PRG:0B8A 01 08 00 A4 80 B4 02 2C 00 2C 80 20 08 40 80 20 .byte $80, $20, $80, $20, $80, $20, $01, $08, $00, $10, $80, $20, $01, $08, $00, $10 ; PRG $0B69 / CPU $CB69 ; CPU:$CB9A PRG:0B9A 80 20 80 20 80 20 01 08 00 10 80 20 01 08 00 10 .byte $80, $20, $80, $20, $04, $18, $80, $28, $80, $28, $04, $18, $80, $20, $80, $20 ; PRG $0B79 / CPU $CB79 ; CPU:$CBAA PRG:0BAA 80 20 80 20 04 18 80 28 80 28 04 18 80 20 80 20 .byte $80, $FF, $80, $FF, $AA, $00, $A8, $08, $20, $02, $04, $00, $BC, $80, $20, $04 ; PRG $0B89 / CPU $CB89 ; CPU:$CBBA PRG:0BBA 80 FF 80 FF AA 00 A8 08 20 02 04 00 BC 80 20 04 .byte $10, $00, $38, $80, $24, $05, $24, $00, $24, $80, $48, $80, $38, $80, $38, $02 ; PRG $0B99 / CPU $CB99 ; CPU:$CBCA PRG:0BCA 10 00 38 80 24 05 24 00 24 80 48 80 38 80 38 02 .byte $20, $80, $30, $80, $30, $80, $20, $08, $40, $80, $20, $80, $20, $80, $20, $80 ; PRG $0BA9 / CPU $CBA9 ; CPU:$CBDA PRG:0BDA 20 80 30 80 30 80 20 08 40 80 20 80 20 80 20 80 .byte $20, $80, $20, $80, $FF, $80, $FF, $AA, $A5, $25, $D0, $05, $20, $CB, $CB, $85 ; PRG $0BB9 / CPU $CBB9 ; CPU:$CBEA PRG:0BEA 20 80 20 80 FF 80 FF AA A5 25 D0 05 20 CB CB 85 .byte $3E, $60 ; PRG $0BC9 / CPU $CBC9 ; CPU:$CBFA PRG:0BFA 3E 60 ; ============================================================================= ; MatchRoutine_CBCB ; CPU address: $CBCB PRG offset: $0BCB ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_CBCB: lda #$00 ; CPU:$CBFC PRG:0BFC ?? ldx #$02 ; CPU:$CBFE PRG:0BFE ?? Flow_CBCF: sta AudioRequestFlags1,x ; CPU:$CC00 PRG:0C00 ?? dex ; CPU:$CC02 PRG:0C02 ?? bpl Flow_CBCF ; CPU:$CC04 PRG:0C04 ?? rts ; PRG $0BD4 / CPU $CBD4 ; CPU:$CC06 PRG:0C06 ?? ; ============================================================================= ; MatchRoutine_CBD5 ; CPU address: $CBD5 PRG offset: $0BD5 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= MatchRoutine_CBD5: lda GameMode ; CPU:$CC08 PRG:0C08 ?? bne Flow_CC05 ; CPU:$CC0A PRG:0C0A ?? ldy #$03 ; CPU:$CC0C PRG:0C0C ?? lda $03A8 ; CPU:$CC0E PRG:0C0E ?? cmp $0308 ; CPU:$CC10 PRG:0C10 ?? bcs Flow_CBEC ; CPU:$CC12 PRG:0C12 ?? ldy #$06 ; CPU:$CC14 PRG:0C14 ?? cmp $0348 ; CPU:$CC16 PRG:0C16 ?? bcc Flow_CBEC ; CPU:$CC18 PRG:0C18 ?? ldy #$00 ; CPU:$CC1A PRG:0C1A ?? Flow_CBEC: lda $CC7E,y ; CPU:$CC1C PRG:0C1C ?? sta $030A ; CPU:$CC1E PRG:0C1E ?? lda $CC7F,y ; CPU:$CC20 PRG:0C20 ?? sta $034A ; CPU:$CC22 PRG:0C22 ?? lda $CC80,y ; CPU:$CC24 PRG:0C24 ?? sta $038A ; CPU:$CC26 PRG:0C26 ?? clc ; CPU:$CC28 PRG:0C28 ?? adc #$04 ; CPU:$CC2A PRG:0C2A ?? sta $03AA ; CPU:$CC2C PRG:0C2C ?? rts ; CPU:$CC2E PRG:0C2E ?? Flow_CC05: ldy #$00 ; CPU:$CC30 PRG:0C30 ?? ldx #$00 ; CPU:$CC32 PRG:0C32 ?? lda $03A8 ; CPU:$CC34 PRG:0C34 ?? cmp #$70 ; CPU:$CC36 PRG:0C36 ?? bcs Flow_CC14 ; CPU:$CC38 PRG:0C38 ?? ldy #$06 ; CPU:$CC3A PRG:0C3A ?? ldx #$40 ; CPU:$CC3C PRG:0C3C ?? Flow_CC14: cmp $0308,x ; CPU:$CC3E PRG:0C3E ?? bcs Flow_CC1C ; CPU:$CC40 PRG:0C40 ?? iny ; CPU:$CC42 PRG:0C42 ?? iny ; CPU:$CC44 PRG:0C44 ?? iny ; CPU:$CC46 PRG:0C46 ?? Flow_CC1C: cmp $0328,x ; CPU:$CC48 PRG:0C48 ?? bcs Flow_CC24 ; CPU:$CC4A PRG:0C4A ?? iny ; CPU:$CC4C PRG:0C4C ?? iny ; CPU:$CC4E PRG:0C4E ?? iny ; CPU:$CC50 PRG:0C50 ?? Flow_CC24: lda $CC87,y ; CPU:$CC52 PRG:0C52 ?? sta $038A ; CPU:$CC54 PRG:0C54 ?? clc ; CPU:$CC56 PRG:0C56 ?? adc #$04 ; CPU:$CC58 PRG:0C58 ?? sta $03AA ; CPU:$CC5A PRG:0C5A ?? cpy #$08 ; CPU:$CC5C PRG:0C5C ?? bcs Flow_CC59 ; CPU:$CC5E PRG:0C5E ?? lda $CC88,y ; CPU:$CC60 PRG:0C60 ?? tax ; CPU:$CC62 PRG:0C62 ?? lda $CC89,y ; CPU:$CC64 PRG:0C64 ?? tay ; CPU:$CC66 PRG:0C66 ?? jsr PhysicsRoutine_CC68 ; CPU:$CC68 PRG:0C68 ?? ldx #$58 ; CPU:$CC6A PRG:0C6A ?? ldy #$74 ; CPU:$CC6C PRG:0C6C ?? ; ============================================================================= ; PhysicsRoutine_CC43 ; CPU address: $CC43 PRG offset: $0C43 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CC43: lda $0348 ; CPU:$CC6E PRG:0C6E ?? cmp $0368 ; CPU:$CC70 PRG:0C70 ?? bcc Flow_CC52 ; CPU:$CC72 PRG:0C72 ?? stx $034A ; CPU:$CC74 PRG:0C74 ?? sty $036A ; CPU:$CC76 PRG:0C76 ?? rts ; CPU:$CC78 PRG:0C78 ?? Flow_CC52: stx $036A ; CPU:$CC7A PRG:0C7A ?? sty $034A ; CPU:$CC7C PRG:0C7C ?? rts ; PRG $0C58 / CPU $CC58 ; CPU:$CC7E PRG:0C7E ?? Flow_CC59: lda $CC88,y ; CPU:$CC80 PRG:0C80 ?? tax ; CPU:$CC82 PRG:0C82 ?? lda $CC89,y ; CPU:$CC84 PRG:0C84 ?? tay ; CPU:$CC86 PRG:0C86 ?? jsr PhysicsRoutine_CC43 ; CPU:$CC88 PRG:0C88 ?? ldx #$00 ; CPU:$CC8A PRG:0C8A ?? ldy #$28 ; CPU:$CC8C PRG:0C8C ?? ; ============================================================================= ; PhysicsRoutine_CC68 ; CPU address: $CC68 PRG offset: $0C68 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CC68: lda $0308 ; CPU:$CC8E PRG:0C8E ?? cmp $0328 ; CPU:$CC90 PRG:0C90 ?? bcc Flow_CC77 ; CPU:$CC92 PRG:0C92 ?? stx $030A ; CPU:$CC94 PRG:0C94 ?? sty $032A ; CPU:$CC96 PRG:0C96 ?? rts ; CPU:$CC98 PRG:0C98 ?? Flow_CC77: stx $032A ; CPU:$CC9A PRG:0C9A ?? sty $030A ; CPU:$CC9C PRG:0C9C ?? rts ; CPU:$CC9E PRG:0C9E ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0C7E-$0C95. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- CourtObjectSpawnParameterTable: .byte $00, $30, $28, $08, $30, $00, $00, $28, $44, $00, $08, $30, $28, $00, $30, $50 ; PRG $0C7E / CPU $CC7E ; CPU:$CCA0 PRG:0CA0 00 30 28 08 30 00 00 28 44 00 08 30 28 00 30 50 .byte $00, $28, $6C, $50, $74, $88, $50, $6C ; PRG $0C8E / CPU $CC8E ; CPU:$CCB0 PRG:0CB0 00 28 6C 50 74 88 50 6C ; ============================================================================= ; PhysicsRoutine_CC96 ; CPU address: $CC96 PRG offset: $0C96 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CC96: lda MatchResultType ; CPU:$CCB8 PRG:0CB8 ?? beq Flow_CCD7 ; CPU:$CCBA PRG:0CBA ?? ldy $0308 ; CPU:$CCBC PRG:0CBC ?? ldx $0309 ; CPU:$CCBE PRG:0CBE ?? jsr PhysicsRoutine_CCBA ; CPU:$CCC0 PRG:0CC0 ?? bne Flow_CCA8 ; CPU:$CCC2 PRG:0CC2 ?? jsr PhysicsRoutine_CCD8 ; CPU:$CCC4 PRG:0CC4 ?? Flow_CCA8: lda GameMode ; CPU:$CCC6 PRG:0CC6 ?? beq Flow_CCD7 ; CPU:$CCC8 PRG:0CC8 ?? ldy $0328 ; CPU:$CCCA PRG:0CCA ?? ldx $0329 ; CPU:$CCCC PRG:0CCC ?? jsr PhysicsRoutine_CCBA ; CPU:$CCCE PRG:0CCE ?? bne Flow_CCD7 ; CPU:$CCD0 PRG:0CD0 ?? jmp PhysicsRoutine_CCF5 ; CPU:$CCD2 PRG:0CD2 ?? ; ============================================================================= ; PhysicsRoutine_CCBA ; CPU address: $CCBA PRG offset: $0CBA ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CCBA: lda #$FF ; CPU:$CCD4 PRG:0CD4 ?? cpy #$C0 ; CPU:$CCD6 PRG:0CD6 ?? bcs Flow_CCCA ; CPU:$CCD8 PRG:0CD8 ?? cpx #$4C ; CPU:$CCDA PRG:0CDA ?? bcc Flow_CCCA ; CPU:$CCDC PRG:0CDC ?? cpx #$B4 ; CPU:$CCDE PRG:0CDE ?? bcs Flow_CCCA ; CPU:$CCE0 PRG:0CE0 ?? lda #$00 ; CPU:$CCE2 PRG:0CE2 ?? Flow_CCCA: cmp #$00 ; CPU:$CCE4 PRG:0CE4 ?? rts ; PRG $0CCC / CPU $CCCC ; CPU:$CCE6 PRG:0CE6 ?? ; ============================================================================= ; PhysicsRoutine_CCCD ; CPU address: $CCCD PRG offset: $0CCD ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CCCD: jsr PhysicsRoutine_CCD8 ; CPU:$CCE8 PRG:0CE8 ?? ldy GameMode ; CPU:$CCEA PRG:0CEA ?? beq Flow_CCD7 ; CPU:$CCEC PRG:0CEC ?? jsr PhysicsRoutine_CCF5 ; CPU:$CCEE PRG:0CEE ?? Flow_CCD7: rts ; CPU:$CCF0 PRG:0CF0 ?? ; ============================================================================= ; PhysicsRoutine_CCD8 ; CPU address: $CCD8 PRG offset: $0CD8 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CCD8: lda #$01 ; CPU:$CCF2 PRG:0CF2 ?? sta AnimationFrame ; CPU:$CCF4 PRG:0CF4 ?? lda #$00 ; CPU:$CCF6 PRG:0CF6 ?? sta PlayerPoseId ; CPU:$CCF8 PRG:0CF8 ?? lda $0307 ; CPU:$CCFA PRG:0CFA ?? sta PlayerPoseFlags ; CPU:$CCFC PRG:0CFC ?? lda $030A ; CPU:$CCFE PRG:0CFE ?? ldx #$48 ; CPU:$CD00 PRG:0D00 ?? ldy #$A0 ; CPU:$CD02 PRG:0D02 ?? sta RacketContactFlags ; CPU:$CD04 PRG:0D04 ?? sty RacketTargetX ; CPU:$CD06 PRG:0D06 ?? stx RacketTargetY ; CPU:$CD08 PRG:0D08 ?? jmp EngineRoutine_C21C ; CPU:$CD0A PRG:0D0A ?? ; ============================================================================= ; PhysicsRoutine_CCF5 ; CPU address: $CCF5 PRG offset: $0CF5 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CCF5: lda #$01 ; CPU:$CD0C PRG:0D0C ?? sta AnimationFrame ; CPU:$CD0E PRG:0D0E ?? lda #$05 ; CPU:$CD10 PRG:0D10 ?? sta PlayerPoseId ; CPU:$CD12 PRG:0D12 ?? lda $0327 ; CPU:$CD14 PRG:0D14 ?? sta PlayerPoseFlags ; CPU:$CD16 PRG:0D16 ?? lda $032A ; CPU:$CD18 PRG:0D18 ?? ldx #$B8 ; CPU:$CD1A PRG:0D1A ?? ldy #$A0 ; CPU:$CD1C PRG:0D1C ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0D09-$0D0A. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_CD09: .byte $D0, $E1 ; PRG $0D09 / CPU $CD09 ; CPU:$CD1E PRG:0D1E D0 E1 ; ============================================================================= ; PhysicsRoutine_CD0B ; CPU address: $CD0B PRG offset: $0D0B ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CD0B: lda #$00 ; CPU:$CD20 PRG:0D20 ?? sta ObjectDataPointerLo ; CPU:$CD22 PRG:0D22 ?? lda #$03 ; CPU:$CD24 PRG:0D24 ?? sta ObjectDataPointerHi ; CPU:$CD26 PRG:0D26 ?? lda #$00 ; CPU:$CD28 PRG:0D28 ?? sta ObjectDataOffset ; CPU:$CD2A PRG:0D2A ?? lda #$01 ; CPU:$CD2C PRG:0D2C ?? sta ActiveObjectIndex ; CPU:$CD2E PRG:0D2E ?? ldx Zp1B ; CPU:$CD30 PRG:0D30 ?? ldy Zp1D ; CPU:$CD32 PRG:0D32 ?? lda PlayerCourtOrder ; CPU:$CD34 PRG:0D34 ?? beq Flow_CD27 ; CPU:$CD36 PRG:0D36 ?? ldx Zp1D ; CPU:$CD38 PRG:0D38 ?? ldy Zp1B ; CPU:$CD3A PRG:0D3A ?? Flow_CD27: stx $0310 ; CPU:$CD3C PRG:0D3C ?? sty $0330 ; CPU:$CD3E PRG:0D3E ?? Flow_CD2D: jsr EngineRoutine_C1F3 ; CPU:$CD40 PRG:0D40 ?? lda AnimationFrame ; CPU:$CD42 PRG:0D42 ?? beq Flow_CD50 ; CPU:$CD44 PRG:0D44 ?? lda BallTrajectoryFlags ; CPU:$CD46 PRG:0D46 ?? bpl Flow_CD3E ; CPU:$CD48 PRG:0D48 ?? jsr PhysicsRoutine_D580 ; CPU:$CD4A PRG:0D4A ?? jmp Flow_CD44 ; CPU:$CD4C PRG:0D4C ?? Flow_CD3E: jsr PhysicsRoutine_CD58 ; CPU:$CD4E PRG:0D4E ?? jsr PhysicsRoutine_D0D9 ; CPU:$CD50 PRG:0D50 ?? Flow_CD44: jsr PhysicsRoutine_D20E ; CPU:$CD52 PRG:0D52 ?? jsr PhysicsRoutine_D132 ; CPU:$CD54 PRG:0D54 ?? jsr EngineRoutine_C21C ; CPU:$CD56 PRG:0D56 ?? jsr EngineRoutine_C20E ; CPU:$CD58 PRG:0D58 ?? Flow_CD50: jsr EngineRoutine_C206 ; CPU:$CD5A PRG:0D5A ?? dec ActiveObjectIndex ; CPU:$CD5C PRG:0D5C ?? bpl Flow_CD2D ; CPU:$CD5E PRG:0D5E ?? rts ; CPU:$CD60 PRG:0D60 ?? ; ============================================================================= ; PhysicsRoutine_CD58 ; CPU address: $CD58 PRG offset: $0D58 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CD58: lda PlayerFacingDirection ; CPU:$CD62 PRG:0D62 ?? cmp #$FF ; CPU:$CD64 PRG:0D64 ?? beq Flow_CD61 ; CPU:$CD66 PRG:0D66 ?? jmp Flow_CD92 ; CPU:$CD68 PRG:0D68 ?? Flow_CD61: lda PlayerAnimationId ; CPU:$CD6A PRG:0D6A ?? bne Flow_CD83 ; CPU:$CD6C PRG:0D6C ?? lda RallyFlags ; CPU:$CD6E PRG:0D6E ?? and #$C0 ; CPU:$CD70 PRG:0D70 ?? beq Flow_CD7A ; CPU:$CD72 PRG:0D72 ?? sta AnimationTimer ; CPU:$CD74 PRG:0D74 ?? lda ObjectAnimationFrame ; CPU:$CD76 PRG:0D76 ?? sta PlayerAnimationId ; CPU:$CD78 PRG:0D78 ?? jsr PhysicsRoutine_D08B ; CPU:$CD7A PRG:0D7A ?? jsr PhysicsRoutine_CE7E ; CPU:$CD7C PRG:0D7C ?? jmp Flow_CDC1 ; CPU:$CD7E PRG:0D7E ?? Flow_CD7A: jsr PhysicsRoutine_D497 ; CPU:$CD80 PRG:0D80 ?? jsr PhysicsRoutine_CDC5 ; CPU:$CD82 PRG:0D82 ?? jmp Flow_CDC1 ; CPU:$CD84 PRG:0D84 ?? Flow_CD83: bit RacketAimOffset ; CPU:$CD86 PRG:0D86 ?? bmi Flow_CDC1 ; CPU:$CD88 PRG:0D88 ?? jsr PhysicsRoutine_CFD2 ; CPU:$CD8A PRG:0D8A ?? bpl Flow_CDC1 ; CPU:$CD8C PRG:0D8C ?? jsr PhysicsRoutine_CECA ; CPU:$CD8E PRG:0D8E ?? jmp Flow_CDC1 ; CPU:$CD90 PRG:0D90 ?? Flow_CD92: lda PlayerAnimationId ; CPU:$CD92 PRG:0D92 ?? bne Flow_CDBE ; CPU:$CD94 PRG:0D94 ?? lda RallyFlags ; CPU:$CD96 PRG:0D96 ?? and #$C0 ; CPU:$CD98 PRG:0D98 ?? beq Flow_CDBE ; CPU:$CD9A PRG:0D9A ?? ldy ObjectAnimationFrame ; CPU:$CD9C PRG:0D9C ?? sty PlayerAnimationId ; CPU:$CD9E PRG:0D9E ?? and #$80 ; CPU:$CDA0 PRG:0DA0 ?? beq Flow_CDAE ; CPU:$CDA2 PRG:0DA2 ?? ldy #$38 ; CPU:$CDA4 PRG:0DA4 ?? lda CourtSide ; CPU:$CDA6 PRG:0DA6 ?? beq Flow_CDB6 ; CPU:$CDA8 PRG:0DA8 ?? ldy #$49 ; CPU:$CDAA PRG:0DAA ?? bne Flow_CDB6 ; CPU:$CDAC PRG:0DAC ?? Flow_CDAE: ldy #$95 ; CPU:$CDAE PRG:0DAE ?? lda CourtSide ; CPU:$CDB0 PRG:0DB0 ?? beq Flow_CDB6 ; CPU:$CDB2 PRG:0DB2 ?? ldy #$A6 ; CPU:$CDB4 PRG:0DB4 ?? Flow_CDB6: sty PoseSequenceOffset ; CPU:$CDB6 PRG:0DB6 ?? lda #$00 ; CPU:$CDB8 PRG:0DB8 ?? sta PoseFrameTimer ; CPU:$CDBA PRG:0DBA ?? beq Flow_CDC1 ; CPU:$CDBC PRG:0DBC ?? Flow_CDBE: jsr PhysicsRoutine_CDC5 ; CPU:$CDBE PRG:0DBE ?? Flow_CDC1: jsr PhysicsRoutine_D27D ; CPU:$CDC0 PRG:0DC0 ?? rts ; CPU:$CDC2 PRG:0DC2 ?? ; ============================================================================= ; PhysicsRoutine_CDC5 ; CPU address: $CDC5 PRG offset: $0DC5 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CDC5: lda PlayerAnimationId ; CPU:$CDC4 PRG:0DC4 ?? bne Flow_CE02 ; CPU:$CDC6 PRG:0DC6 ?? lda PlayerFacingDirection ; CPU:$CDC8 PRG:0DC8 ?? cmp #$FF ; CPU:$CDCA PRG:0DCA ?? bne Flow_CE03 ; CPU:$CDCC PRG:0DCC ?? lda PoseSequenceOffset ; CPU:$CDCE PRG:0DCE ?? cmp #$37 ; CPU:$CDD0 PRG:0DD0 ?? bcs Flow_CE02 ; CPU:$CDD2 PRG:0DD2 ?? cmp #$0D ; CPU:$CDD4 PRG:0DD4 ?? bcc Flow_CDE7 ; CPU:$CDD6 PRG:0DD6 ?? cmp #$29 ; CPU:$CDD8 PRG:0DD8 ?? bcs Flow_CDF1 ; CPU:$CDDA PRG:0DDA ?? ldy #$C8 ; CPU:$CDDC PRG:0DDC ?? lda CourtSide ; CPU:$CDDE PRG:0DDE ?? beq Flow_CDFF ; CPU:$CDE0 PRG:0DE0 ?? ldy #$D3 ; CPU:$CDE2 PRG:0DE2 ?? bne Flow_CDFF ; CPU:$CDE4 PRG:0DE4 ?? Flow_CDE7: ldy #$D0 ; CPU:$CDE6 PRG:0DE6 ?? lda CourtSide ; CPU:$CDE8 PRG:0DE8 ?? bne Flow_CDFF ; CPU:$CDEA PRG:0DEA ?? ldy #$00 ; CPU:$CDEC PRG:0DEC ?? beq Flow_CDF9 ; CPU:$CDEE PRG:0DEE ?? Flow_CDF1: ldy #$C5 ; CPU:$CDF0 PRG:0DF0 ?? lda CourtSide ; CPU:$CDF2 PRG:0DF2 ?? beq Flow_CDFF ; CPU:$CDF4 PRG:0DF4 ?? ldy #$2A ; CPU:$CDF6 PRG:0DF6 ?? Flow_CDF9: lda RallyFlags ; CPU:$CDF8 PRG:0DF8 ?? and #$0F ; CPU:$CDFA PRG:0DFA ?? bne Flow_CE02 ; CPU:$CDFC PRG:0DFC ?? Flow_CDFF: jmp Flow_CE55 ; CPU:$CDFE PRG:0DFE ?? Flow_CE02: rts ; CPU:$CE00 PRG:0E00 ?? Flow_CE03: lda PoseSequenceOffset ; CPU:$CE02 PRG:0E02 ?? cmp #$37 ; CPU:$CE04 PRG:0E04 ?? bcs Flow_CE5B ; CPU:$CE06 PRG:0E06 ?? cmp #$0D ; CPU:$CE08 PRG:0E08 ?? bcc Flow_CE2D ; CPU:$CE0A PRG:0E0A ?? cmp #$29 ; CPU:$CE0C PRG:0E0C ?? bcs Flow_CE41 ; CPU:$CE0E PRG:0E0E ?? lda RallyFlags ; CPU:$CE10 PRG:0E10 ?? and #$0F ; CPU:$CE12 PRG:0E12 ?? beq Flow_CE5C ; CPU:$CE14 PRG:0E14 ?? ldy #$C8 ; CPU:$CE16 PRG:0E16 ?? and #$03 ; CPU:$CE18 PRG:0E18 ?? beq Flow_CE25 ; CPU:$CE1A PRG:0E1A ?? cmp #$01 ; CPU:$CE1C PRG:0E1C ?? beq Flow_CE55 ; CPU:$CE1E PRG:0E1E ?? Flow_CE21: ldy #$D3 ; CPU:$CE20 PRG:0E20 ?? bne Flow_CE55 ; CPU:$CE22 PRG:0E22 ?? Flow_CE25: lda RacketTargetY ; CPU:$CE24 PRG:0E24 ?? cmp #$80 ; CPU:$CE26 PRG:0E26 ?? bcc Flow_CE55 ; CPU:$CE28 PRG:0E28 ?? bcs Flow_CE21 ; CPU:$CE2A PRG:0E2A ?? Flow_CE2D: ldx #$00 ; CPU:$CE2C PRG:0E2C ?? stx CourtSide ; CPU:$CE2E PRG:0E2E ?? ldy #$00 ; CPU:$CE30 PRG:0E30 ?? lda RallyFlags ; CPU:$CE32 PRG:0E32 ?? and #$0F ; CPU:$CE34 PRG:0E34 ?? beq Flow_CE55 ; CPU:$CE36 PRG:0E36 ?? ldy #$D0 ; CPU:$CE38 PRG:0E38 ?? and #$02 ; CPU:$CE3A PRG:0E3A ?? bne Flow_CE55 ; CPU:$CE3C PRG:0E3C ?? beq Flow_CE5B ; CPU:$CE3E PRG:0E3E ?? Flow_CE41: ldx #$01 ; CPU:$CE40 PRG:0E40 ?? stx CourtSide ; CPU:$CE42 PRG:0E42 ?? ldy #$2A ; CPU:$CE44 PRG:0E44 ?? lda RallyFlags ; CPU:$CE46 PRG:0E46 ?? and #$0F ; CPU:$CE48 PRG:0E48 ?? beq Flow_CE55 ; CPU:$CE4A PRG:0E4A ?? ldy #$C5 ; CPU:$CE4C PRG:0E4C ?? and #$01 ; CPU:$CE4E PRG:0E4E ?? bne Flow_CE55 ; CPU:$CE50 PRG:0E50 ?? beq Flow_CE5B ; CPU:$CE52 PRG:0E52 ?? Flow_CE55: sty PoseSequenceOffset ; CPU:$CE54 PRG:0E54 ?? lda #$00 ; CPU:$CE56 PRG:0E56 ?? sta PoseFrameTimer ; CPU:$CE58 PRG:0E58 ?? Flow_CE5B: rts ; CPU:$CE5A PRG:0E5A ?? Flow_CE5C: ldx #$0E ; CPU:$CE5C PRG:0E5C ?? lda PoseSequenceOffset ; CPU:$CE5E PRG:0E5E ?? cmp #$1B ; CPU:$CE60 PRG:0E60 ?? bcc Flow_CE66 ; CPU:$CE62 PRG:0E62 ?? ldx #$1C ; CPU:$CE64 PRG:0E64 ?? Flow_CE66: stx MathResultHi ; CPU:$CE66 PRG:0E66 ?? ldy #$0E ; CPU:$CE68 PRG:0E68 ?? ldx #$00 ; CPU:$CE6A PRG:0E6A ?? lda RacketTargetY ; CPU:$CE6C PRG:0E6C ?? cmp #$80 ; CPU:$CE6E PRG:0E6E ?? bcc Flow_CE76 ; CPU:$CE70 PRG:0E70 ?? ldy #$1C ; CPU:$CE72 PRG:0E72 ?? ldx #$01 ; CPU:$CE74 PRG:0E74 ?? Flow_CE76: stx CourtSide ; CPU:$CE76 PRG:0E76 ?? cpy MathResultHi ; CPU:$CE78 PRG:0E78 ?? beq Flow_CE5B ; CPU:$CE7A PRG:0E7A ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0E7C-$0E7D. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_CE7C: .byte $D0, $D7 ; PRG $0E7C / CPU $CE7C ; CPU:$CE7C PRG:0E7C D0 D7 ; ============================================================================= ; PhysicsRoutine_CE7E ; CPU address: $CE7E PRG offset: $0E7E ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CE7E: ldx #$00 ; CPU:$CE7E PRG:0E7E ?? bit RallyFlags ; CPU:$CE80 PRG:0E80 ?? bmi Flow_CE86 ; CPU:$CE82 PRG:0E82 ?? ldx #$06 ; CPU:$CE84 PRG:0E84 ?? Flow_CE86: lda RacketTargetX ; CPU:$CE86 PRG:0E86 ?? cmp #$A8 ; CPU:$CE88 PRG:0E88 ?? bcs Flow_CE8F ; CPU:$CE8A PRG:0E8A ?? inx ; CPU:$CE8C PRG:0E8C ?? inx ; CPU:$CE8E PRG:0E8E ?? inx ; CPU:$CE90 PRG:0E90 ?? Flow_CE8F: lda BallHeight ; CPU:$CE92 PRG:0E92 ?? cmp #$10 ; CPU:$CE94 PRG:0E94 ?? bcc Flow_CE9B ; CPU:$CE96 PRG:0E96 ?? inx ; CPU:$CE98 PRG:0E98 ?? cmp #$80 ; CPU:$CE9A PRG:0E9A ?? bcc Flow_CE9B ; CPU:$CE9C PRG:0E9C ?? inx ; CPU:$CE9E PRG:0E9E ?? Flow_CE9B: stx ObjectAnimationState ; CPU:$CEA0 PRG:0EA0 ?? lda CourtSide ; CPU:$CEA2 PRG:0EA2 ?? bne Flow_CEA7 ; CPU:$CEA4 PRG:0EA4 ?? lda $CEB1,x ; CPU:$CEA6 PRG:0EA6 ?? jmp Flow_CEAA ; CPU:$CEA8 PRG:0EA8 ?? Flow_CEA7: lda $CEBD,x ; CPU:$CEAA PRG:0EAA ?? Flow_CEAA: sta PoseSequenceOffset ; CPU:$CEAC PRG:0EAC ?? lda #$01 ; CPU:$CEAE PRG:0EAE ?? sta PoseFrameTimer ; CPU:$CEB0 PRG:0EB0 ?? rts ; CPU:$CEB2 PRG:0EB2 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0EB1-$0EC9. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- BallStateTransitionParameterTable: .byte $38, $38, $5A, $79, $79, $5A, $95, $95, $38, $95, $95, $38, $49, $49, $6B, $87 ; PRG $0EB1 / CPU $CEB1 ; CPU:$CEB4 PRG:0EB4 38 38 5A 79 79 5A 95 95 38 95 95 38 49 49 6B 87 .byte $87, $6B, $A6, $A6, $49, $A6, $A6, $49 ; PRG $0EC1 / CPU $CEC1 ; CPU:$CEC4 PRG:0EC4 87 6B A6 A6 49 A6 A6 49 FlowEntry_CEC9: .byte $60 ; PRG $0EC9 / CPU $CEC9 ; CPU:$CECC PRG:0ECC 60 ; ============================================================================= ; PhysicsRoutine_CECA ; CPU address: $CECA PRG offset: $0ECA ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CECA: lda ObjectAnimationState ; CPU:$CECD PRG:0ECD ?? cmp #$02 ; CPU:$CECF PRG:0ECF ?? beq Flow_CED4 ; CPU:$CED1 PRG:0ED1 ?? cmp #$05 ; CPU:$CED3 PRG:0ED3 ?? bne Flow_CEDE ; CPU:$CED5 PRG:0ED5 ?? Flow_CED4: ldx #$06 ; CPU:$CED7 PRG:0ED7 ?? ldy CourtSide ; CPU:$CED9 PRG:0ED9 ?? beq Flow_CEE6 ; CPU:$CEDB PRG:0EDB ?? ldx #$FA ; CPU:$CEDD PRG:0EDD ?? bne Flow_CEE6 ; CPU:$CEDF PRG:0EDF ?? Flow_CEDE: ldx #$0C ; CPU:$CEE1 PRG:0EE1 ?? ldy CourtSide ; CPU:$CEE3 PRG:0EE3 ?? beq Flow_CEE6 ; CPU:$CEE5 PRG:0EE5 ?? ldx #$F3 ; CPU:$CEE7 PRG:0EE7 ?? Flow_CEE6: stx Zp11 ; CPU:$CEE9 PRG:0EE9 ?? lda RacketTargetY ; CPU:$CEEB PRG:0EEB ?? clc ; CPU:$CEED PRG:0EED ?? adc Zp11 ; CPU:$CEEF PRG:0EEF ?? sec ; CPU:$CEF1 PRG:0EF1 ?? sbc BallHeightReference ; CPU:$CEF3 PRG:0EF3 ?? bcc Flow_CEF8 ; CPU:$CEF5 PRG:0EF5 ?? cmp #$0A ; CPU:$CEF7 PRG:0EF7 ?? bcs FlowEntry_CEC9 ; CPU:$CEF9 PRG:0EF9 ?? bcc Flow_CEFC ; CPU:$CEFB PRG:0EFB ?? Flow_CEF8: cmp #$F6 ; CPU:$CEFD PRG:0EFD ?? bcc FlowEntry_CEC9 ; CPU:$CEFF PRG:0EFF ?? Flow_CEFC: lda BallHeight ; CPU:$CF01 PRG:0F01 ?? cmp #$05 ; CPU:$CF03 PRG:0F03 ?? bcc FlowEntry_CEC9 ; CPU:$CF05 PRG:0F05 ?? cmp #$B0 ; CPU:$CF07 PRG:0F07 ?? bcs FlowEntry_CEC9 ; CPU:$CF09 PRG:0F09 ?? lda ActiveObjectIndex ; CPU:$CF0B PRG:0F0B ?? bne Flow_CF14 ; CPU:$CF0D PRG:0F0D ?? bit BallTrajectoryFlags ; CPU:$CF0F PRG:0F0F ?? bvc Flow_CF14 ; CPU:$CF11 PRG:0F11 ?? lda #$02 ; CPU:$CF13 PRG:0F13 ?? sta PlayerActionState ; CPU:$CF15 PRG:0F15 ?? bne FlowEntry_CEC9 ; CPU:$CF17 PRG:0F17 ?? Flow_CF14: lda ObjectAnimationState ; CPU:$CF19 PRG:0F19 ?? cmp #$08 ; CPU:$CF1B PRG:0F1B ?? beq FlowEntry_CEC9 ; CPU:$CF1D PRG:0F1D ?? cmp #$0B ; CPU:$CF1F PRG:0F1F ?? beq FlowEntry_CEC9 ; CPU:$CF21 PRG:0F21 ?? asl a ; CPU:$CF23 PRG:0F23 ?? asl a ; CPU:$CF25 PRG:0F25 ?? tay ; CPU:$CF27 PRG:0F27 ?? lda $CFA2,y ; CPU:$CF29 PRG:0F29 ?? sta PlayerActionType ; CPU:$CF2B PRG:0F2B ?? iny ; CPU:$CF2D PRG:0F2D ?? lda $CFA2,y ; CPU:$CF2F PRG:0F2F ?? sta PlayerActionParameter ; CPU:$CF31 PRG:0F31 ?? iny ; CPU:$CF33 PRG:0F33 ?? lda $CFA2,y ; CPU:$CF35 PRG:0F35 ?? clc ; CPU:$CF37 PRG:0F37 ?? adc Player2YSubpixel ; CPU:$CF39 PRG:0F39 ?? sta PlayerTargetYLo ; CPU:$CF3B PRG:0F3B ?? iny ; CPU:$CF3D PRG:0F3D ?? lda $CFA2,y ; CPU:$CF3F PRG:0F3F ?? adc Player2YPosition ; CPU:$CF41 PRG:0F41 ?? sta PlayerTargetYHi ; CPU:$CF43 PRG:0F43 ?? lda Player1YSubpixel ; CPU:$CF45 PRG:0F45 ?? sta MathResultLo ; CPU:$CF47 PRG:0F47 ?? lda Player1YPosition ; CPU:$CF49 PRG:0F49 ?? sta MathResultHi ; CPU:$CF4B PRG:0F4B ?? lda PlayerAnimationId ; CPU:$CF4D PRG:0F4D ?? sec ; CPU:$CF4F PRG:0F4F ?? sbc #$13 ; CPU:$CF51 PRG:0F51 ?? ldy ObjectAnimationFrame ; CPU:$CF53 PRG:0F53 ?? cpy #$18 ; CPU:$CF55 PRG:0F55 ?? beq Flow_CF53 ; CPU:$CF57 PRG:0F57 ?? sec ; CPU:$CF59 PRG:0F59 ?? sbc #$05 ; CPU:$CF5B PRG:0F5B ?? Flow_CF53: ldy CourtSide ; CPU:$CF5D PRG:0F5D ?? beq Flow_CF5C ; CPU:$CF5F PRG:0F5F ?? eor #$FF ; CPU:$CF61 PRG:0F61 ?? clc ; CPU:$CF63 PRG:0F63 ?? adc #$02 ; CPU:$CF65 PRG:0F65 ?? Flow_CF5C: sta SignedAimDelta ; CPU:$CF67 PRG:0F67 ?? bit SignedAimDelta ; CPU:$CF69 PRG:0F69 ?? bpl Flow_CF67 ; CPU:$CF6B PRG:0F6B ?? eor #$FF ; CPU:$CF6D PRG:0F6D ?? clc ; CPU:$CF6F PRG:0F6F ?? adc #$01 ; CPU:$CF71 PRG:0F71 ?? Flow_CF67: lsr a ; CPU:$CF73 PRG:0F73 ?? tax ; CPU:$CF75 PRG:0F75 ?? beq Flow_CF8D ; CPU:$CF77 PRG:0F77 ?? lda #$00 ; CPU:$CF79 PRG:0F79 ?? sta MathOperandHi ; CPU:$CF7B PRG:0F7B ?? ldy #$C0 ; CPU:$CF7D PRG:0F7D ?? lda ObjectAnimationFrame ; CPU:$CF7F PRG:0F7F ?? cmp #$18 ; CPU:$CF81 PRG:0F81 ?? bne Flow_CF7B ; CPU:$CF83 PRG:0F83 ?? ldy #$20 ; CPU:$CF85 PRG:0F85 ?? inc MathOperandHi ; CPU:$CF87 PRG:0F87 ?? Flow_CF7B: sty MathOperandLo ; CPU:$CF89 PRG:0F89 ?? lda SignedAimDelta ; CPU:$CF8B PRG:0F8B ?? bpl Flow_CF87 ; CPU:$CF8D PRG:0F8D ?? jsr Subtract16BitZp12FromZp14 ; CPU:$CF8F PRG:0F8F ?? jmp Flow_CF8A ; CPU:$CF91 PRG:0F91 ?? Flow_CF87: jsr Add16BitZp12ToZp14 ; CPU:$CF93 PRG:0F93 ?? Flow_CF8A: dex ; CPU:$CF95 PRG:0F95 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0F8B-$0F8C. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_CF8B: .byte $D0, $F0 ; PRG $0F8B / CPU $CF8B ; CPU:$CF97 PRG:0F97 D0 F0 Flow_CF8D: lda MathResultHi ; CPU:$CF99 PRG:0F99 ?? sta PlayerTargetXHi ; CPU:$CF9B PRG:0F9B ?? lda MathResultLo ; CPU:$CF9D PRG:0F9D ?? sta PlayerTargetXLo ; CPU:$CF9F PRG:0F9F ?? lda #$01 ; CPU:$CFA1 PRG:0FA1 ?? sta PlayerActionState ; CPU:$CFA3 PRG:0FA3 ?? lda ActiveObjectIndex ; CPU:$CFA5 PRG:0FA5 ?? sta Zp40 ; CPU:$CFA7 PRG:0FA7 ?? lda #$0A ; CPU:$CFA9 PRG:0FA9 ?? sta PlayerActionDuration ; CPU:$CFAB PRG:0FAB ?? rts ; CPU:$CFAD PRG:0FAD ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $0FA2-$0FD1. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PlayerActionAndTargetOffsetTable: .byte $00, $01, $80, $0D, $00, $00, $00, $0E, $02, $01, $00, $0B, $01, $01, $00, $09 ; PRG $0FA2 / CPU $CFA2 ; CPU:$CFAF PRG:0FAF 00 01 80 0D 00 00 00 0E 02 01 00 0B 01 01 00 09 .byte $01, $00, $00, $09, $02, $00, $00, $07, $04, $01, $80, $0E, $04, $00, $80, $0E ; PRG $0FB2 / CPU $CFB2 ; CPU:$CFBF PRG:0FBF 01 00 00 09 02 00 00 07 04 01 80 0E 04 00 80 0E .byte $00, $00, $00, $00, $04, $02, $A0, $0B, $04, $02, $60, $0B, $00, $00, $00, $00 ; PRG $0FC2 / CPU $CFC2 ; CPU:$CFCF PRG:0FCF 00 00 00 00 04 02 A0 0B 04 02 60 0B 00 00 00 00 ; ============================================================================= ; PhysicsRoutine_CFD2 ; CPU address: $CFD2 PRG offset: $0FD2 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_CFD2: lda PlayerAnimationId ; CPU:$CFDF PRG:0FDF ?? cmp #$09 ; CPU:$CFE1 PRG:0FE1 ?? bcc Flow_D056 ; CPU:$CFE3 PRG:0FE3 ?? jsr PhysicsRoutine_D0A2 ; CPU:$CFE5 PRG:0FE5 ?? bmi Flow_D00F ; CPU:$CFE7 PRG:0FE7 ?? lda PlayerPoseId ; CPU:$CFE9 PRG:0FE9 ?? cmp #$02 ; CPU:$CFEB PRG:0FEB ?? beq Flow_CFEB ; CPU:$CFED PRG:0FED ?? cmp #$07 ; CPU:$CFEF PRG:0FEF ?? beq Flow_CFEB ; CPU:$CFF1 PRG:0FF1 ?? cmp #$18 ; CPU:$CFF3 PRG:0FF3 ?? bne Flow_D00C ; CPU:$CFF5 PRG:0FF5 ?? Flow_CFEB: ldy PoseFrameTimer ; CPU:$CFF7 PRG:0FF7 ?? dey ; CPU:$CFF9 PRG:0FF9 ?? bne Flow_D00C ; CPU:$CFFB PRG:0FFB ?? lda RacketAimOffset ; CPU:$CFFD PRG:0FFD ?? cmp #$0E ; CPU:$CFFF PRG:0FFF ?? bcs Flow_D00C ; CPU:$D001 PRG:1001 ?? lda PlayerPoseId ; CPU:$D003 PRG:1003 ?? cmp #$18 ; CPU:$D005 PRG:1005 ?? bne Flow_D003 ; CPU:$D007 PRG:1007 ?? lda PlayerAnimationId ; CPU:$D009 PRG:1009 ?? clc ; CPU:$D00B PRG:100B ?? adc #$05 ; CPU:$D00D PRG:100D ?? sta PlayerAnimationId ; CPU:$D00F PRG:100F ?? Flow_D003: inc PoseFrameTimer ; CPU:$D011 PRG:1011 ?? inc PoseFrameTimer ; CPU:$D013 PRG:1013 ?? lda #$80 ; CPU:$D015 PRG:1015 ?? sta RacketAimOffset ; CPU:$D017 PRG:1017 ?? rts ; CPU:$D019 PRG:1019 ?? Flow_D00C: lda #$7F ; CPU:$D01B PRG:101B ?? rts ; PRG $100E / CPU $D00E ; CPU:$D01D PRG:101D ?? Flow_D00F: lda ObjectAnimationState ; CPU:$D01F PRG:101F ?? cmp #$06 ; CPU:$D021 PRG:1021 ?? bcs Flow_D027 ; CPU:$D023 PRG:1023 ?? cmp #$02 ; CPU:$D025 PRG:1025 ?? bcc Flow_D027 ; CPU:$D027 PRG:1027 ?? cmp #$03 ; CPU:$D029 PRG:1029 ?? beq Flow_D021 ; CPU:$D02B PRG:102B ?? cmp #$05 ; CPU:$D02D PRG:102D ?? bne Flow_D05D ; CPU:$D02F PRG:102F ?? Flow_D021: lda CourtSide ; CPU:$D031 PRG:1031 ?? beq Flow_D066 ; CPU:$D033 PRG:1033 ?? bne Flow_D074 ; CPU:$D035 PRG:1035 ?? Flow_D027: lda PlayerPoseId ; CPU:$D037 PRG:1037 ?? cmp #$01 ; CPU:$D039 PRG:1039 ?? beq Flow_D043 ; CPU:$D03B PRG:103B ?? cmp #$06 ; CPU:$D03D PRG:103D ?? beq Flow_D043 ; CPU:$D03F PRG:103F ?? cmp #$02 ; CPU:$D041 PRG:1041 ?? beq Flow_D049 ; CPU:$D043 PRG:1043 ?? cmp #$07 ; CPU:$D045 PRG:1045 ?? beq Flow_D049 ; CPU:$D047 PRG:1047 ?? cmp #$03 ; CPU:$D049 PRG:1049 ?? beq Flow_D053 ; CPU:$D04B PRG:104B ?? cmp #$08 ; CPU:$D04D PRG:104D ?? beq Flow_D053 ; CPU:$D04F PRG:104F ?? bne Flow_D056 ; CPU:$D051 PRG:1051 ?? Flow_D043: lda #$02 ; CPU:$D053 PRG:1053 ?? sta PoseFrameTimer ; CPU:$D055 PRG:1055 ?? bne Flow_D053 ; CPU:$D057 PRG:1057 ?? Flow_D049: lda PoseFrameTimer ; CPU:$D059 PRG:1059 ?? cmp #$03 ; CPU:$D05B PRG:105B ?? bcs Flow_D053 ; CPU:$D05D PRG:105D ?? lda #$03 ; CPU:$D05F PRG:105F ?? sta PoseFrameTimer ; CPU:$D061 PRG:1061 ?? Flow_D053: lda #$80 ; CPU:$D063 PRG:1063 ?? rts ; PRG $1055 / CPU $D055 Flow_D056: lda #$80 ; CPU:$D065 PRG:1065 ?? sta RacketAimOffset ; CPU:$D067 PRG:1067 ?? lda #$7F ; CPU:$D069 PRG:1069 ?? rts ; CPU:$D06B PRG:106B ?? Flow_D05D: inc PlayerAnimationId ; CPU:$D06D PRG:106D ?? inc PlayerAnimationId ; CPU:$D06F PRG:106F ?? inc PlayerAnimationId ; CPU:$D071 PRG:1071 ?? jmp Flow_D027 ; CPU:$D073 PRG:1073 ?? Flow_D066: dec PlayerAnimationId ; CPU:$D075 PRG:1075 ?? lda PlayerPoseId ; CPU:$D077 PRG:1077 ?? cmp #$13 ; CPU:$D079 PRG:1079 ?? beq Flow_D049 ; CPU:$D07B PRG:107B ?? cmp #$14 ; CPU:$D07D PRG:107D ?? beq Flow_D049 ; CPU:$D07F PRG:107F ?? bne Flow_D056 ; CPU:$D081 PRG:1081 ?? Flow_D074: lda PlayerAnimationId ; CPU:$D083 PRG:1083 ?? clc ; CPU:$D085 PRG:1085 ?? adc #$05 ; CPU:$D087 PRG:1087 ?? sta PlayerAnimationId ; CPU:$D089 PRG:1089 ?? lda PlayerPoseId ; CPU:$D08B PRG:108B ?? cmp #$17 ; CPU:$D08D PRG:108D ?? beq Flow_D043 ; CPU:$D08F PRG:108F ?? cmp #$18 ; CPU:$D091 PRG:1091 ?? beq Flow_D049 ; CPU:$D093 PRG:1093 ?? cmp #$19 ; CPU:$D095 PRG:1095 ?? beq Flow_D053 ; CPU:$D097 PRG:1097 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1089-$108A. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_D089: .byte $D0, $CB ; PRG $1089 / CPU $D089 ; CPU:$D099 PRG:1099 D0 CB ; ============================================================================= ; PhysicsRoutine_D08B ; CPU address: $D08B PRG offset: $108B ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D08B: lda RacketTargetX ; CPU:$D09B PRG:109B ?? clc ; CPU:$D09D PRG:109D ?? adc #$06 ; CPU:$D09F PRG:109F ?? sec ; CPU:$D0A1 PRG:10A1 ?? sbc BallTargetOffset ; CPU:$D0A3 PRG:10A3 ?? Flow_D093: bcc Flow_D09B ; CPU:$D0A5 PRG:10A5 ?? bpl Flow_D09F ; CPU:$D0A7 PRG:10A7 ?? lda #$7F ; CPU:$D0A9 PRG:10A9 ?? bpl Flow_D09F ; CPU:$D0AB PRG:10AB ?? Flow_D09B: bmi Flow_D09F ; CPU:$D0AD PRG:10AD ?? lda #$80 ; CPU:$D0AF PRG:10AF ?? Flow_D09F: sta RacketAimOffset ; CPU:$D0B1 PRG:10B1 ?? rts ; CPU:$D0B3 PRG:10B3 ?? ; ============================================================================= ; PhysicsRoutine_D0A2 ; CPU address: $D0A2 PRG offset: $10A2 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D0A2: ldy PlayerPoseId ; CPU:$D0B5 PRG:10B5 ?? lda $D0B1,y ; CPU:$D0B7 PRG:10B7 ?? clc ; CPU:$D0B9 PRG:10B9 ?? adc RacketTargetX ; CPU:$D0BB PRG:10BB ?? sec ; CPU:$D0BD PRG:10BD ?? sbc $0388 ; CPU:$D0BF PRG:10BF ?? jmp Flow_D093 ; CPU:$D0C1 PRG:10C1 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $10B1-$10D8. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PlayerPoseRacketXOffsetTable: .byte $03, $F8, $F4, $E6, $00, $03, $F8, $F4, $E6, $00, $00, $00, $00, $00, $00, $00 ; PRG $10B1 / CPU $D0B1 ; CPU:$D0C3 PRG:10C3 03 F8 F4 E6 00 03 F8 F4 E6 00 00 00 00 00 00 00 .byte $00, $00, $00, $E4, $D4, $00, $00, $F8, $E4, $D4, $00, $00, $00, $00, $00, $00 ; PRG $10C1 / CPU $D0C1 ; CPU:$D0D3 PRG:10D3 00 00 00 E4 D4 00 00 F8 E4 D4 00 00 00 00 00 00 .byte $00, $00, $00, $00, $00, $00, $00, $00 ; PRG $10D1 / CPU $D0D1 ; CPU:$D0E3 PRG:10E3 00 00 00 00 00 00 00 00 ; ============================================================================= ; PhysicsRoutine_D0D9 ; CPU address: $D0D9 PRG offset: $10D9 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D0D9: jsr PhysicsRoutine_D0FA ; CPU:$D0EB PRG:10EB ?? lda PlayerActionDuration ; CPU:$D0ED PRG:10ED ?? beq Flow_D0E2 ; CPU:$D0EF PRG:10EF ?? dec PlayerActionDuration ; CPU:$D0F1 PRG:10F1 ?? Flow_D0E2: beq Flow_D0EF ; CPU:$D0F3 PRG:10F3 ?? lda PlayerActionState ; CPU:$D0F5 PRG:10F5 ?? cmp #$02 ; CPU:$D0F7 PRG:10F7 ?? bne Flow_D0EE ; CPU:$D0F9 PRG:10F9 ?? dec PlayerActionState ; CPU:$D0FB PRG:10FB ?? dec PlayerActionState ; CPU:$D0FD PRG:10FD ?? Flow_D0EE: rts ; CPU:$D0FF PRG:10FF ?? Flow_D0EF: lda PlayerActionState ; CPU:$D101 PRG:1101 ?? cmp #$02 ; CPU:$D103 PRG:1103 ?? bne FlowEntry_D0F9 ; CPU:$D105 PRG:1105 ?? lda #$0A ; CPU:$D107 PRG:1107 ?? sta PlayerActionDuration ; CPU:$D109 PRG:1109 ?? FlowEntry_D0F9: rts ; PRG $10F9 / CPU $D0F9 ; CPU:$D10B PRG:110B ?? ; ============================================================================= ; PhysicsRoutine_D0FA ; CPU address: $D0FA PRG offset: $10FA ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D0FA: lda PreviousPlayerState ; CPU:$D10D PRG:110D ?? sta Zp11 ; CPU:$D10F PRG:110F ?? lda RacketTargetX ; CPU:$D111 PRG:1111 ?? sec ; CPU:$D113 PRG:1113 ?? sbc BallTargetOffset ; CPU:$D115 PRG:1115 ?? bcc Flow_D10C ; CPU:$D117 PRG:1117 ?? bpl Flow_D110 ; CPU:$D119 PRG:1119 ?? lda #$7F ; CPU:$D11B PRG:111B ?? jmp Flow_D110 ; CPU:$D11D PRG:111D ?? Flow_D10C: bmi Flow_D110 ; CPU:$D11F PRG:111F ?? lda #$80 ; CPU:$D121 PRG:1121 ?? Flow_D110: sta PreviousPlayerState ; CPU:$D123 PRG:1123 ?? eor Zp11 ; CPU:$D125 PRG:1125 ?? bpl FlowEntry_D131 ; CPU:$D127 PRG:1127 ?? lda RacketTargetY ; CPU:$D129 PRG:1129 ?? sec ; CPU:$D12B PRG:112B ?? sbc BallHeightReference ; CPU:$D12D PRG:112D ?? bpl Flow_D123 ; CPU:$D12F PRG:112F ?? cmp #$FC ; CPU:$D131 PRG:1131 ?? bcs Flow_D127 ; CPU:$D133 PRG:1133 ?? bcc FlowEntry_D131 ; CPU:$D135 PRG:1135 ?? Flow_D123: cmp #$04 ; CPU:$D137 PRG:1137 ?? bcs FlowEntry_D131 ; CPU:$D139 PRG:1139 ?? Flow_D127: lda BallHeight ; CPU:$D13B PRG:113B ?? cmp #$58 ; CPU:$D13D PRG:113D ?? bcs FlowEntry_D131 ; CPU:$D13F PRG:113F ?? lda #$02 ; CPU:$D141 PRG:1141 ?? sta PlayerActionState ; CPU:$D143 PRG:1143 ?? FlowEntry_D131: rts ; PRG $1131 / CPU $D131 ; CPU:$D145 PRG:1145 ?? ; ============================================================================= ; PhysicsRoutine_D132 ; CPU address: $D132 PRG offset: $1132 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D132: lda GameMode ; CPU:$D147 PRG:1147 ?? beq FlowEntry_D131 ; CPU:$D149 PRG:1149 ?? lda ActiveObjectIndex ; CPU:$D14B PRG:114B ?? beq FlowEntry_D131 ; CPU:$D14D PRG:114D ?? lda PlayerMovementSpeed ; CPU:$D14F PRG:114F ?? sta MathResultHi ; CPU:$D151 PRG:1151 ?? and #$0F ; CPU:$D153 PRG:1153 ?? sta MathResultLo ; CPU:$D155 PRG:1155 ?? ldy #$3D ; CPU:$D157 PRG:1157 ?? lda (ObjectDataPointerLo),y ; CPU:$D159 PRG:1159 ?? and #$0F ; CPU:$D15B PRG:115B ?? sta MathOperandLo ; CPU:$D15D PRG:115D ?? lda #$00 ; CPU:$D15F PRG:115F ?? sta WorkPtrLo ; CPU:$D161 PRG:1161 ?? sta PlayerMovementSpeed ; CPU:$D163 PRG:1163 ?? sta WorkPtrHi ; CPU:$D165 PRG:1165 ?? jsr PhysicsRoutine_D1D3 ; CPU:$D167 PRG:1167 ?? jsr PhysicsRoutine_D1EE ; CPU:$D169 PRG:1169 ?? lda WorkPtrHi ; CPU:$D16B PRG:116B ?? cmp #$30 ; CPU:$D16D PRG:116D ?? beq Flow_D166 ; CPU:$D16F PRG:116F ?? lda #$00 ; CPU:$D171 PRG:1171 ?? sta Zp03 ; CPU:$D173 PRG:1173 ?? sta Zp04 ; CPU:$D175 PRG:1175 ?? beq Flow_D1C4 ; CPU:$D177 PRG:1177 ?? Flow_D166: lda MathResultHi ; CPU:$D179 PRG:1179 ?? and #$30 ; CPU:$D17B PRG:117B ?? beq Flow_D17E ; CPU:$D17D PRG:117D ?? cmp #$10 ; CPU:$D17F PRG:117F ?? beq PhysicsRoutine_D19A ; CPU:$D181 PRG:1181 ?? cmp #$20 ; CPU:$D183 PRG:1183 ?? beq PhysicsRoutine_D1B0 ; CPU:$D185 PRG:1185 ?? lda MathResultLo ; CPU:$D187 PRG:1187 ?? sta Zp03 ; CPU:$D189 PRG:1189 ?? lda MathOperandLo ; CPU:$D18B PRG:118B ?? sta Zp04 ; CPU:$D18D PRG:118D ?? bpl Flow_D1C4 ; CPU:$D18F PRG:118F ?? Flow_D17E: jsr PhysicsRoutine_D19A ; CPU:$D191 PRG:1191 ?? lda Zp03 ; CPU:$D193 PRG:1193 ?? sta Zp05 ; CPU:$D195 PRG:1195 ?? lda Zp04 ; CPU:$D197 PRG:1197 ?? sta Zp06 ; CPU:$D199 PRG:1199 ?? jsr PhysicsRoutine_D1B0 ; CPU:$D19B PRG:119B ?? lda Zp03 ; CPU:$D19D PRG:119D ?? ora Zp05 ; CPU:$D19F PRG:119F ?? sta Zp03 ; CPU:$D1A1 PRG:11A1 ?? lda Zp04 ; CPU:$D1A3 PRG:11A3 ?? ora Zp06 ; CPU:$D1A5 PRG:11A5 ?? sta Zp04 ; CPU:$D1A7 PRG:11A7 ?? bpl Flow_D1C4 ; CPU:$D1A9 PRG:11A9 ?? ; ============================================================================= ; PhysicsRoutine_D19A ; CPU address: $D19A PRG offset: $119A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D19A: bit WorkPtrLo ; CPU:$D1AB PRG:11AB ?? bpl Flow_D1A7 ; CPU:$D1AD PRG:11AD ?? lda #$04 ; CPU:$D1AF PRG:11AF ?? sta Zp03 ; CPU:$D1B1 PRG:11B1 ?? asl a ; CPU:$D1B3 PRG:11B3 ?? sta Zp04 ; CPU:$D1B5 PRG:11B5 ?? bpl Flow_D1C4 ; CPU:$D1B7 PRG:11B7 ?? Flow_D1A7: lda #$04 ; CPU:$D1B9 PRG:11B9 ?? sta Zp04 ; CPU:$D1BB PRG:11BB ?? asl a ; CPU:$D1BD PRG:11BD ?? sta Zp03 ; CPU:$D1BF PRG:11BF ?? bpl Flow_D1C4 ; CPU:$D1C1 PRG:11C1 ?? ; ============================================================================= ; PhysicsRoutine_D1B0 ; CPU address: $D1B0 PRG offset: $11B0 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D1B0: bit WorkPtrLo ; CPU:$D1C3 PRG:11C3 ?? bvc Flow_D1BD ; CPU:$D1C5 PRG:11C5 ?? lda #$01 ; CPU:$D1C7 PRG:11C7 ?? sta Zp03 ; CPU:$D1C9 PRG:11C9 ?? asl a ; CPU:$D1CB PRG:11CB ?? sta Zp04 ; CPU:$D1CD PRG:11CD ?? bpl Flow_D1C4 ; CPU:$D1CF PRG:11CF ?? Flow_D1BD: lda #$01 ; CPU:$D1D1 PRG:11D1 ?? sta Zp04 ; CPU:$D1D3 PRG:11D3 ?? asl a ; CPU:$D1D5 PRG:11D5 ?? sta Zp03 ; CPU:$D1D7 PRG:11D7 ?? Flow_D1C4: lda WorkPtrHi ; CPU:$D1D9 PRG:11D9 ?? ora Zp03 ; CPU:$D1DB PRG:11DB ?? sta PlayerMovementSpeed ; CPU:$D1DD PRG:11DD ?? and #$F0 ; CPU:$D1DF PRG:11DF ?? ora Zp04 ; CPU:$D1E1 PRG:11E1 ?? ldy #$3D ; CPU:$D1E3 PRG:11E3 ?? sta (ObjectDataPointerLo),y ; CPU:$D1E5 PRG:11E5 ?? rts ; CPU:$D1E7 PRG:11E7 ?? ; ============================================================================= ; PhysicsRoutine_D1D3 ; CPU address: $D1D3 PRG offset: $11D3 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D1D3: lda RacketTargetX ; CPU:$D1E9 PRG:11E9 ?? ldy #$28 ; CPU:$D1EB PRG:11EB ?? sec ; CPU:$D1ED PRG:11ED ?? sbc (ObjectDataPointerLo),y ; CPU:$D1EF PRG:11EF ?? bpl Flow_D1E5 ; CPU:$D1F1 PRG:11F1 ?? eor #$FF ; CPU:$D1F3 PRG:11F3 ?? clc ; CPU:$D1F5 PRG:11F5 ?? adc #$01 ; CPU:$D1F7 PRG:11F7 ?? ldx #$80 ; CPU:$D1F9 PRG:11F9 ?? stx WorkPtrLo ; CPU:$D1FB PRG:11FB ?? Flow_D1E5: cmp #$0C ; CPU:$D1FD PRG:11FD ?? bcs Flow_D1ED ; CPU:$D1FF PRG:11FF ?? ldx #$20 ; CPU:$D201 PRG:1201 ?? stx WorkPtrHi ; CPU:$D203 PRG:1203 ?? Flow_D1ED: rts ; CPU:$D205 PRG:1205 ?? ; ============================================================================= ; PhysicsRoutine_D1EE ; CPU address: $D1EE PRG offset: $11EE ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D1EE: lda RacketTargetY ; CPU:$D207 PRG:1207 ?? iny ; CPU:$D209 PRG:1209 ?? sec ; CPU:$D20B PRG:120B ?? sbc (ObjectDataPointerLo),y ; CPU:$D20D PRG:120D ?? bpl Flow_D203 ; CPU:$D20F PRG:120F ?? eor #$FF ; CPU:$D211 PRG:1211 ?? clc ; CPU:$D213 PRG:1213 ?? adc #$01 ; CPU:$D215 PRG:1215 ?? tax ; CPU:$D217 PRG:1217 ?? lda #$40 ; CPU:$D219 PRG:1219 ?? ora WorkPtrLo ; CPU:$D21B PRG:121B ?? sta WorkPtrLo ; CPU:$D21D PRG:121D ?? txa ; CPU:$D21F PRG:121F ?? Flow_D203: cmp #$10 ; CPU:$D221 PRG:1221 ?? bcs FlowEntry_D20D ; CPU:$D223 PRG:1223 ?? lda #$10 ; CPU:$D225 PRG:1225 ?? ora WorkPtrHi ; CPU:$D227 PRG:1227 ?? sta WorkPtrHi ; CPU:$D229 PRG:1229 ?? FlowEntry_D20D: rts ; PRG $120D / CPU $D20D ; CPU:$D22B PRG:122B ?? ; ============================================================================= ; PhysicsRoutine_D20E ; CPU address: $D20E PRG offset: $120E ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D20E: lda RallyPhase ; CPU:$D22D PRG:122D ?? sta MathResultHi ; CPU:$D22F PRG:122F ?? lsr MathResultHi ; CPU:$D231 PRG:1231 ?? bcc Flow_D21E ; CPU:$D233 PRG:1233 ?? lda FrameCounter ; CPU:$D235 PRG:1235 ?? and #$04 ; CPU:$D237 PRG:1237 ?? bne Flow_D21E ; CPU:$D239 PRG:1239 ?? inc MathResultHi ; CPU:$D23B PRG:123B ?? Flow_D21E: lsr MathResultHi ; CPU:$D23D PRG:123D ?? bcc Flow_D22A ; CPU:$D23F PRG:123F ?? lda FrameCounter ; CPU:$D241 PRG:1241 ?? and #$02 ; CPU:$D243 PRG:1243 ?? bne Flow_D22A ; CPU:$D245 PRG:1245 ?? inc MathResultHi ; CPU:$D247 PRG:1247 ?? Flow_D22A: lsr MathResultHi ; CPU:$D249 PRG:1249 ?? bcc Flow_D236 ; CPU:$D24B PRG:124B ?? lda FrameCounter ; CPU:$D24D PRG:124D ?? and #$01 ; CPU:$D24F PRG:124F ?? bne Flow_D236 ; CPU:$D251 PRG:1251 ?? inc MathResultHi ; CPU:$D253 PRG:1253 ?? Flow_D236: lda PlayerMovementSpeed ; CPU:$D255 PRG:1255 ?? eor #$0F ; CPU:$D257 PRG:1257 ?? and RallyFlags ; CPU:$D259 PRG:1259 ?? and #$0F ; CPU:$D25B PRG:125B ?? beq Flow_D27C ; CPU:$D25D PRG:125D ?? tax ; CPU:$D25F PRG:125F ?? and #$04 ; CPU:$D261 PRG:1261 ?? beq Flow_D24F ; CPU:$D263 PRG:1263 ?? lda RacketTargetX ; CPU:$D265 PRG:1265 ?? cmp UmpireAnimationTimer ; CPU:$D267 PRG:1267 ?? bcs Flow_D24F ; CPU:$D269 PRG:1269 ?? adc MathResultHi ; CPU:$D26B PRG:126B ?? sta RacketTargetX ; CPU:$D26D PRG:126D ?? Flow_D24F: txa ; CPU:$D26F PRG:126F ?? and #$08 ; CPU:$D271 PRG:1271 ?? beq Flow_D25E ; CPU:$D273 PRG:1273 ?? lda RacketTargetX ; CPU:$D275 PRG:1275 ?? cmp BallAnimationTimer ; CPU:$D277 PRG:1277 ?? bcc Flow_D25E ; CPU:$D279 PRG:1279 ?? sbc MathResultHi ; CPU:$D27B PRG:127B ?? sta RacketTargetX ; CPU:$D27D PRG:127D ?? Flow_D25E: txa ; CPU:$D27F PRG:127F ?? and #$01 ; CPU:$D281 PRG:1281 ?? beq Flow_D26D ; CPU:$D283 PRG:1283 ?? lda RacketTargetY ; CPU:$D285 PRG:1285 ?? cmp PlayerActionDelay ; CPU:$D287 PRG:1287 ?? bcs Flow_D26D ; CPU:$D289 PRG:1289 ?? adc MathResultHi ; CPU:$D28B PRG:128B ?? sta RacketTargetY ; CPU:$D28D PRG:128D ?? Flow_D26D: txa ; CPU:$D28F PRG:128F ?? and #$02 ; CPU:$D291 PRG:1291 ?? beq Flow_D27C ; CPU:$D293 PRG:1293 ?? lda RacketTargetY ; CPU:$D295 PRG:1295 ?? cmp NetAnimationTimer ; CPU:$D297 PRG:1297 ?? bcc Flow_D27C ; CPU:$D299 PRG:1299 ?? sbc MathResultHi ; CPU:$D29B PRG:129B ?? sta RacketTargetY ; CPU:$D29D PRG:129D ?? Flow_D27C: rts ; CPU:$D29F PRG:129F ?? ; ============================================================================= ; PhysicsRoutine_D27D ; CPU address: $D27D PRG offset: $127D ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D27D: jsr PhysicsRoutine_D2D0 ; CPU:$D2A1 PRG:12A1 ?? jsr PhysicsRoutine_D2C9 ; CPU:$D2A3 PRG:12A3 ?? bne Flow_D2A4 ; CPU:$D2A5 PRG:12A5 ?? lda BallTrajectoryFlags ; CPU:$D2A7 PRG:12A7 ?? and #$42 ; CPU:$D2A9 PRG:12A9 ?? cmp #$40 ; CPU:$D2AB PRG:12AB ?? bne Flow_D2A1 ; CPU:$D2AD PRG:12AD ?? lda PlayerPoseId ; CPU:$D2AF PRG:12AF ?? cmp #$14 ; CPU:$D2B1 PRG:12B1 ?? beq Flow_D29B ; CPU:$D2B3 PRG:12B3 ?? cmp #$13 ; CPU:$D2B5 PRG:12B5 ?? bne Flow_D2A1 ; CPU:$D2B7 PRG:12B7 ?? dec RacketTargetX ; CPU:$D2B9 PRG:12B9 ?? dec RacketTargetX ; CPU:$D2BB PRG:12BB ?? Flow_D29B: dec RacketTargetX ; CPU:$D2BD PRG:12BD ?? dec RacketTargetX ; CPU:$D2BF PRG:12BF ?? dec RacketTargetX ; CPU:$D2C1 PRG:12C1 ?? Flow_D2A1: jsr AdvancePlayerPoseSetA ; CPU:$D2C3 PRG:12C3 ?? Flow_D2A4: rts ; CPU:$D2C5 PRG:12C5 ?? ; ============================================================================= ; PhysicsRoutine_D2A5 ; CPU address: $D2A5 PRG offset: $12A5 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D2A5: jsr PhysicsRoutine_D2D0 ; CPU:$D2C7 PRG:12C7 ?? jsr PhysicsRoutine_D2C9 ; CPU:$D2C9 PRG:12C9 ?? bne Flow_D2A4 ; CPU:$D2CB PRG:12CB ?? lda BallTrajectoryFlags ; CPU:$D2CD PRG:12CD ?? and #$42 ; CPU:$D2CF PRG:12CF ?? cmp #$42 ; CPU:$D2D1 PRG:12D1 ?? bne Flow_D2C5 ; CPU:$D2D3 PRG:12D3 ?? lda PlayerPoseId ; CPU:$D2D5 PRG:12D5 ?? cmp #$2D ; CPU:$D2D7 PRG:12D7 ?? beq Flow_D2C1 ; CPU:$D2D9 PRG:12D9 ?? cmp #$2C ; CPU:$D2DB PRG:12DB ?? bne Flow_D2C5 ; CPU:$D2DD PRG:12DD ?? inc RacketTargetX ; CPU:$D2DF PRG:12DF ?? Flow_D2C1: inc RacketTargetX ; CPU:$D2E1 PRG:12E1 ?? inc RacketTargetX ; CPU:$D2E3 PRG:12E3 ?? Flow_D2C5: jsr AdvancePlayerPoseSetB ; CPU:$D2E5 PRG:12E5 ?? rts ; CPU:$D2E7 PRG:12E7 ?? ; ============================================================================= ; PhysicsRoutine_D2C9 ; CPU address: $D2C9 PRG offset: $12C9 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D2C9: lda PoseFrameTimer ; CPU:$D2E9 PRG:12E9 ?? beq FlowEntry_D2CF ; CPU:$D2EB PRG:12EB ?? dec PoseFrameTimer ; CPU:$D2ED PRG:12ED ?? FlowEntry_D2CF: rts ; PRG $12CF / CPU $D2CF ; CPU:$D2EF PRG:12EF ?? ; ============================================================================= ; PhysicsRoutine_D2D0 ; CPU address: $D2D0 PRG offset: $12D0 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D2D0: lda PlayerAnimationId ; CPU:$D2F1 PRG:12F1 ?? beq Flow_D2D6 ; CPU:$D2F3 PRG:12F3 ?? dec PlayerAnimationId ; CPU:$D2F5 PRG:12F5 ?? Flow_D2D6: rts ; CPU:$D2F7 PRG:12F7 ?? Flow_D2D7: iny ; CPU:$D2F9 PRG:12F9 ?? lda $D31C,y ; CPU:$D2FB PRG:12FB ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $12DB-$12DC. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_D2DB: .byte $85, $B5 ; PRG $12DB / CPU $D2DB ; CPU:$D2FD PRG:12FD 85 B5 ; ============================================================================= ; AdvancePlayerPoseSetA ; CPU address: $D2DD PRG offset: $12DD ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AdvancePlayerPoseSetA: ldy PoseSequenceOffset ; CPU:$D2FF PRG:12FF ?? lda $D31C,y ; CPU:$D301 PRG:1301 ?? cmp #$FF ; CPU:$D303 PRG:1303 ?? beq Flow_D2D7 ; CPU:$D305 PRG:1305 ?? sta PlayerPoseId ; CPU:$D307 PRG:1307 ?? iny ; CPU:$D309 PRG:1309 ?? lda ObjectAnimationFrame ; CPU:$D30B PRG:130B ?? cmp #$18 ; CPU:$D30D PRG:130D ?? bne Flow_D2F9 ; CPU:$D30F PRG:130F ?? lda $D31C,y ; CPU:$D311 PRG:1311 ?? iny ; CPU:$D313 PRG:1313 ?? iny ; CPU:$D315 PRG:1315 ?? Flow_D2F4: sta PoseFrameTimer ; CPU:$D317 PRG:1317 ?? sty PoseSequenceOffset ; CPU:$D319 PRG:1319 ?? rts ; CPU:$D31B PRG:131B ?? Flow_D2F9: iny ; CPU:$D31D PRG:131D ?? lda $D31C,y ; CPU:$D31F PRG:131F ?? iny ; CPU:$D321 PRG:1321 ?? jmp Flow_D2F4 ; CPU:$D323 PRG:1323 ?? Flow_D301: iny ; CPU:$D325 PRG:1325 ?? lda $D3F7,y ; CPU:$D327 PRG:1327 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1305-$1306. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_D305: .byte $85, $B5 ; PRG $1305 / CPU $D305 ; CPU:$D329 PRG:1329 85 B5 ; ============================================================================= ; AdvancePlayerPoseSetB ; CPU address: $D307 PRG offset: $1307 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AdvancePlayerPoseSetB: ldy PoseSequenceOffset ; CPU:$D32B PRG:132B ?? lda $D3F7,y ; CPU:$D32D PRG:132D ?? cmp #$FF ; CPU:$D32F PRG:132F ?? beq Flow_D301 ; CPU:$D331 PRG:1331 ?? sta PlayerPoseId ; CPU:$D333 PRG:1333 ?? iny ; CPU:$D335 PRG:1335 ?? lda $D3F7,y ; CPU:$D337 PRG:1337 ?? sta PoseFrameTimer ; CPU:$D339 PRG:1339 ?? iny ; CPU:$D33B PRG:133B ?? sty PoseSequenceOffset ; CPU:$D33D PRG:133D ?? rts ; CPU:$D33F PRG:133F ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $131C-$146E. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PlayerPoseAnimationSetA: .byte $00, $03, $03, $0D, $03, $03, $0E, $03, $03, $0D, $03, $03, $FF, $00, $0A, $20 ; PRG $131C / CPU $D31C ; CPU:$D341 PRG:1341 00 03 03 0D 03 03 0E 03 03 0D 03 03 FF 00 0A 20 .byte $22, $0B, $26, $28, $0A, $34, $36, $0B, $2A, $2C, $FF, $0E, $3A, $36, $38, $3B ; PRG $132C / CPU $D32C ; CPU:$D351 PRG:1351 22 0B 26 28 0A 34 36 0B 2A 2C FF 0E 3A 36 38 3B .byte $2A, $2C, $3A, $1E, $20, $3B, $24, $26, $FF, $1C, $05, $03, $03, $0F, $03, $03 ; PRG $133C / CPU $D33C ; CPU:$D361 PRG:1361 2A 2C 3A 1E 20 3B 24 26 FF 1C 05 03 03 0F 03 03 .byte $10, $03, $03, $0F, $03, $03, $FF, $2A, $00, $01, $01, $01, $05, $07, $02, $05 ; PRG $134C / CPU $D34C ; CPU:$D371 PRG:1371 10 03 03 0F 03 03 FF 2A 00 01 01 01 05 07 02 05 .byte $08, $03, $05, $07, $04, $0A, $13, $FF, $0E, $05, $01, $01, $06, $05, $07, $07 ; PRG $135C / CPU $D35C ; CPU:$D381 PRG:1381 08 03 05 07 04 0A 13 FF 0E 05 01 01 06 05 07 07 .byte $05, $08, $08, $05, $07, $09, $0A, $13, $FF, $0E, $00, $01, $01, $13, $06, $08 ; PRG $136C / CPU $D36C ; CPU:$D391 PRG:1391 05 08 08 05 07 09 0A 13 FF 0E 00 01 01 13 06 08 .byte $14, $06, $08, $15, $04, $06, $16, $0A, $13, $FF, $0E, $05, $01, $01, $17, $06 ; PRG $137C / CPU $D37C ; CPU:$D3A1 PRG:13A1 14 06 08 15 04 06 16 0A 13 FF 0E 05 01 01 17 06 .byte $08, $18, $07, $0A, $19, $0C, $15, $FF, $0E, $00, $01, $01, $01, $05, $07, $02 ; PRG $138C / CPU $D38C ; CPU:$D3B1 PRG:13B1 08 18 07 0A 19 0C 15 FF 0E 00 01 01 01 05 07 02 .byte $07, $0A, $03, $0E, $17, $FF, $0E, $05, $01, $01, $06, $05, $07, $07, $07, $0A ; PRG $139C / CPU $D39C ; CPU:$D3C1 PRG:13C1 07 0A 03 0E 17 FF 0E 05 01 01 06 05 07 07 07 0A .byte $08, $0E, $17, $FF, $0E, $00, $01, $01, $01, $05, $07, $02, $05, $08, $03, $05 ; PRG $13AC / CPU $D3AC ; CPU:$D3D1 PRG:13D1 08 0E 17 FF 0E 00 01 01 01 05 07 02 05 08 03 05 .byte $07, $0C, $0A, $13, $FF, $0E, $05, $01, $01, $06, $05, $07, $07, $05, $08, $08 ; PRG $13BC / CPU $D3BC ; CPU:$D3E1 PRG:13E1 07 0C 0A 13 FF 0E 05 01 01 06 05 07 07 05 08 08 .byte $05, $07, $24, $0A, $13, $FF, $0E, $13, $05, $08, $14, $05, $08, $15, $05, $08 ; PRG $13CC / CPU $D3CC ; CPU:$D3F1 PRG:13F1 05 07 24 0A 13 FF 0E 13 05 08 14 05 08 15 05 08 .byte $16, $0A, $14, $FF, $0E, $07, $04, $06, $02, $04, $06, $01, $04, $06, $FF, $00 ; PRG $13DC / CPU $D3DC ; CPU:$D401 PRG:1401 16 0A 14 FF 0E 07 04 06 02 04 06 01 04 06 FF 00 .byte $03, $04, $06, $07, $04, $06, $06, $04, $06, $FF, $2A, $1A, $03, $25, $03, $26 ; PRG $13EC / CPU $D3EC ; CPU:$D411 PRG:1411 03 04 06 07 04 06 06 04 06 FF 2A 1A 03 25 03 26 .byte $03, $25, $03, $FF, $00, $22, $22, $23, $20, $22, $30, $23, $28, $FF, $0A, $3C ; PRG $13FC / CPU $D3FC ; CPU:$D421 PRG:1421 03 25 03 FF 00 22 22 23 20 22 30 23 28 FF 0A 3C .byte $20, $3D, $2E, $3C, $24, $3D, $26, $FF, $14, $1E, $03, $27, $03, $28, $03, $27 ; PRG $140C / CPU $D40C ; CPU:$D431 PRG:1431 20 3D 2E 3C 24 3D 26 FF 14 1E 03 27 03 28 03 27 .byte $03, $FF, $1E, $1A, $03, $1B, $06, $1C, $06, $1D, $0A, $FF, $0A, $1E, $03, $1F ; PRG $141C / CPU $D41C ; CPU:$D441 PRG:1441 03 FF 1E 1A 03 1B 06 1C 06 1D 0A FF 0A 1E 03 1F .byte $06, $20, $06, $21, $0A, $FF, $0A, $1A, $03, $2B, $06, $2C, $06, $2D, $0A, $FF ; PRG $142C / CPU $D42C ; CPU:$D451 PRG:1451 06 20 06 21 0A FF 0A 1A 03 2B 06 2C 06 2D 0A FF .byte $0A, $1E, $03, $1F, $06, $2E, $06, $21, $0A, $FF, $0A, $1A, $04, $2B, $08, $2C ; PRG $143C / CPU $D43C ; CPU:$D461 PRG:1461 0A 1E 03 1F 06 2E 06 21 0A FF 0A 1A 04 2B 08 2C .byte $0C, $FF, $0A, $1E, $04, $1F, $08, $2E, $0C, $FF, $0A, $2B, $06, $2C, $06, $2D ; PRG $144C / CPU $D44C ; CPU:$D471 PRG:1471 0C FF 0A 1E 04 1F 08 2E 0C FF 0A 2B 06 2C 06 2D .byte $0A, $FF, $0A, $20, $04, $1C, $04, $1B, $04, $FF, $00, $1C, $04, $20, $04, $1F ; PRG $145C / CPU $D45C ; CPU:$D481 PRG:1481 0A FF 0A 20 04 1C 04 1B 04 FF 00 1C 04 20 04 1F .byte $04, $FF, $1E ; PRG $146C / CPU $D46C ; CPU:$D491 PRG:1491 04 FF 1E ; ============================================================================= ; PhysicsRoutine_D46F ; CPU address: $D46F PRG offset: $146F ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D46F: lda #$05 ; CPU:$D494 PRG:1494 ?? ldy CourtSide ; CPU:$D496 PRG:1496 ?? sty Zp0C ; CPU:$D498 PRG:1498 ?? beq Flow_D479 ; CPU:$D49A PRG:149A ?? lda #$F9 ; CPU:$D49C PRG:149C ?? Flow_D479: clc ; CPU:$D49E PRG:149E ?? adc RacketTargetY ; CPU:$D4A0 PRG:14A0 ?? sta Zp0E ; CPU:$D4A2 PRG:14A2 ?? jsr PhysicsRoutine_D49B ; CPU:$D4A4 PRG:14A4 ?? ldy Zp0C ; CPU:$D4A6 PRG:14A6 ?? sty CourtSide ; CPU:$D4A8 PRG:14A8 ?? rts ; PRG $1485 / CPU $D485 ; CPU:$D4AA PRG:14AA ?? ; ============================================================================= ; PhysicsRoutine_D486 ; CPU address: $D486 PRG offset: $1486 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D486: jsr PhysicsRoutine_D497 ; CPU:$D4AC PRG:14AC ?? lda #$FB ; CPU:$D4AE PRG:14AE ?? ldy CourtSide ; CPU:$D4B0 PRG:14B0 ?? beq Flow_D491 ; CPU:$D4B2 PRG:14B2 ?? lda #$07 ; CPU:$D4B4 PRG:14B4 ?? Flow_D491: clc ; CPU:$D4B6 PRG:14B6 ?? adc SignedMovementDelta ; CPU:$D4B8 PRG:14B8 ?? sta SignedMovementDelta ; CPU:$D4BA PRG:14BA ?? rts ; CPU:$D4BC PRG:14BC ?? ; ============================================================================= ; PhysicsRoutine_D497 ; CPU address: $D497 PRG offset: $1497 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D497: lda RacketTargetY ; CPU:$D4BE PRG:14BE ?? sta Zp0E ; CPU:$D4C0 PRG:14C0 ?? ; ============================================================================= ; PhysicsRoutine_D49B ; CPU address: $D49B PRG offset: $149B ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D49B: lda PlayerYPosition ; CPU:$D4C2 PRG:14C2 ?? sec ; CPU:$D4C4 PRG:14C4 ?? sbc RacketTargetX ; CPU:$D4C6 PRG:14C6 ?? tay ; CPU:$D4C8 PRG:14C8 ?? lda #$00 ; CPU:$D4CA PRG:14CA ?? sbc #$00 ; CPU:$D4CC PRG:14CC ?? bpl Flow_D4AA ; CPU:$D4CE PRG:14CE ?? jsr NegateAY16 ; CPU:$D4D0 PRG:14D0 ?? Flow_D4AA: sta MathVectorXHi ; CPU:$D4D2 PRG:14D2 ?? sty MathVectorXLo ; CPU:$D4D4 PRG:14D4 ?? lda PlayerPreviousX ; CPU:$D4D6 PRG:14D6 ?? sec ; CPU:$D4D8 PRG:14D8 ?? sbc PlayerXPosition ; CPU:$D4DA PRG:14DA ?? sta MathVectorYLo ; CPU:$D4DC PRG:14DC ?? lda #$00 ; CPU:$D4DE PRG:14DE ?? sbc #$00 ; CPU:$D4E0 PRG:14E0 ?? sta MathVectorYHi ; CPU:$D4E2 PRG:14E2 ?? jsr EngineRoutine_C6ED ; CPU:$D4E4 PRG:14E4 ?? jsr EngineRoutine_C62B ; CPU:$D4E6 PRG:14E6 ?? lda PlayerPreviousY ; CPU:$D4E8 PRG:14E8 ?? sec ; CPU:$D4EA PRG:14EA ?? sbc PlayerYPosition ; CPU:$D4EC PRG:14EC ?? tay ; CPU:$D4EE PRG:14EE ?? lda #$00 ; CPU:$D4F0 PRG:14F0 ?? sbc #$00 ; CPU:$D4F2 PRG:14F2 ?? bpl Flow_D4D0 ; CPU:$D4F4 PRG:14F4 ?? jsr NegateAY16 ; CPU:$D4F6 PRG:14F6 ?? Flow_D4D0: sta MathVectorXHi ; CPU:$D4F8 PRG:14F8 ?? sty MathVectorXLo ; CPU:$D4FA PRG:14FA ?? jsr EngineRoutine_C684 ; CPU:$D4FC PRG:14FC ?? jsr MatchRoutine_C705 ; CPU:$D4FE PRG:14FE ?? lda PlayerXPosition ; CPU:$D500 PRG:1500 ?? clc ; CPU:$D502 PRG:1502 ?? adc MathVectorYLo ; CPU:$D504 PRG:1504 ?? tay ; CPU:$D506 PRG:1506 ?? lda #$00 ; CPU:$D508 PRG:1508 ?? adc MathVectorYHi ; CPU:$D50A PRG:150A ?? tax ; CPU:$D50C PRG:150C ?? tya ; CPU:$D50E PRG:150E ?? sec ; CPU:$D510 PRG:1510 ?? sbc Zp0E ; CPU:$D512 PRG:1512 ?? sta SignedMovementDelta ; CPU:$D514 PRG:1514 ?? txa ; CPU:$D516 PRG:1516 ?? sbc #$00 ; CPU:$D518 PRG:1518 ?? bmi Flow_D4FA ; CPU:$D51A PRG:151A ?? ldy #$00 ; CPU:$D51C PRG:151C ?? bit SignedMovementDelta ; CPU:$D51E PRG:151E ?? bpl Flow_D504 ; CPU:$D520 PRG:1520 ?? ldx #$7F ; CPU:$D522 PRG:1522 ?? bpl Flow_D502 ; CPU:$D524 PRG:1524 ?? Flow_D4FA: ldy #$01 ; CPU:$D526 PRG:1526 ?? bit SignedMovementDelta ; CPU:$D528 PRG:1528 ?? bmi Flow_D504 ; CPU:$D52A PRG:152A ?? ldx #$80 ; CPU:$D52C PRG:152C ?? Flow_D502: stx SignedMovementDelta ; CPU:$D52E PRG:152E ?? Flow_D504: sty CourtSide ; CPU:$D530 PRG:1530 ?? rts ; CPU:$D532 PRG:1532 ?? ; ============================================================================= ; NegateAY16 ; CPU address: $D507 PRG offset: $1507 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= NegateAY16: tax ; CPU:$D534 PRG:1534 ?? tya ; CPU:$D536 PRG:1536 ?? eor #$FF ; CPU:$D538 PRG:1538 ?? sec ; CPU:$D53A PRG:153A ?? adc #$00 ; CPU:$D53C PRG:153C ?? tay ; CPU:$D53E PRG:153E ?? txa ; CPU:$D540 PRG:1540 ?? eor #$FF ; CPU:$D542 PRG:1542 ?? adc #$00 ; CPU:$D544 PRG:1544 ?? rts ; PRG $1514 / CPU $D514 ; CPU:$D546 PRG:1546 ?? ; ============================================================================= ; PhysicsRoutine_D515 ; CPU address: $D515 PRG offset: $1515 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D515: lda #$FA ; CPU:$D548 PRG:1548 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1517-$1518. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_D517: .byte $D0, $02 ; PRG $1517 / CPU $D517 ; CPU:$D54A PRG:154A D0 02 ; ============================================================================= ; PhysicsRoutine_D519 ; CPU address: $D519 PRG offset: $1519 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D519: lda #$0A ; CPU:$D54C PRG:154C ?? clc ; CPU:$D54E PRG:154E ?? adc RacketTargetY ; CPU:$D550 PRG:1550 ?? sta Zp0E ; CPU:$D552 PRG:1552 ?? lda RacketTargetX ; CPU:$D554 PRG:1554 ?? sta MathOperandLo ; CPU:$D556 PRG:1556 ?? lda #$00 ; CPU:$D558 PRG:1558 ?? sta MathOperandHi ; CPU:$D55A PRG:155A ?? lda #$00 ; CPU:$D55C PRG:155C ?? sta MathResultHi ; CPU:$D55E PRG:155E ?? lda #$93 ; CPU:$D560 PRG:1560 ?? sta MathResultLo ; CPU:$D562 PRG:1562 ?? jsr Add16BitZp12ToZp14 ; CPU:$D564 PRG:1564 ?? lda Zp0E ; CPU:$D566 PRG:1566 ?? eor #$80 ; CPU:$D568 PRG:1568 ?? sta SignedAimDelta ; CPU:$D56A PRG:156A ?? bpl Flow_D540 ; CPU:$D56C PRG:156C ?? eor #$FF ; CPU:$D56E PRG:156E ?? sec ; CPU:$D570 PRG:1570 ?? adc #$00 ; CPU:$D572 PRG:1572 ?? Flow_D540: sta MathVectorXLo ; CPU:$D574 PRG:1574 ?? lda #$00 ; CPU:$D576 PRG:1576 ?? sta MathVectorXHi ; CPU:$D578 PRG:1578 ?? lda #$B3 ; CPU:$D57A PRG:157A ?? sta MathVectorYLo ; CPU:$D57C PRG:157C ?? lda #$0F ; CPU:$D57E PRG:157E ?? sta MathVectorYHi ; CPU:$D580 PRG:1580 ?? jsr EngineRoutine_C62B ; CPU:$D582 PRG:1582 ?? lda MathResultHi ; CPU:$D584 PRG:1584 ?? sta MathVectorXHi ; CPU:$D586 PRG:1586 ?? lda MathResultLo ; CPU:$D588 PRG:1588 ?? sta MathVectorXLo ; CPU:$D58A PRG:158A ?? jsr EngineRoutine_C684 ; CPU:$D58C PRG:158C ?? lda SignedAimDelta ; CPU:$D58E PRG:158E ?? bpl Flow_D563 ; CPU:$D590 PRG:1590 ?? jsr EngineRoutine_C6F3 ; CPU:$D592 PRG:1592 ?? Flow_D563: lda MathVectorYHi ; CPU:$D594 PRG:1594 ?? clc ; CPU:$D596 PRG:1596 ?? adc #$10 ; CPU:$D598 PRG:1598 ?? sta ContactPointY ; CPU:$D59A PRG:159A ?? lda MathVectorYLo ; CPU:$D59C PRG:159C ?? sta ContactPointX ; CPU:$D59E PRG:159E ?? rts ; CPU:$D5A0 PRG:15A0 ?? ; ============================================================================= ; Subtract16BitZp12FromZp14 ; CPU address: $D56F PRG offset: $156F ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= Subtract16BitZp12FromZp14: lda MathResultLo ; CPU:$D5A2 PRG:15A2 ?? sec ; CPU:$D5A4 PRG:15A4 ?? sbc MathOperandLo ; CPU:$D5A6 PRG:15A6 ?? sta MathResultLo ; CPU:$D5A8 PRG:15A8 ?? lda MathResultHi ; CPU:$D5AA PRG:15AA ?? sbc MathOperandHi ; CPU:$D5AC PRG:15AC ?? sta MathResultHi ; CPU:$D5AE PRG:15AE ?? rts ; PRG $157C / CPU $D57C ; CPU:$D5B0 PRG:15B0 ?? Flow_D57D: jmp Flow_CD92 ; CPU:$D5B2 PRG:15B2 ?? ; ============================================================================= ; PhysicsRoutine_D580 ; CPU address: $D580 PRG offset: $1580 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D580: lda ActiveObjectIndex ; CPU:$D5B4 PRG:15B4 ?? beq Flow_D57D ; CPU:$D5B6 PRG:15B6 ?? lda BallTrajectoryFlags ; CPU:$D5B8 PRG:15B8 ?? and #$02 ; CPU:$D5BA PRG:15BA ?? bne Flow_D57D ; CPU:$D5BC PRG:15BC ?? lda RallyFlags ; CPU:$D5BE PRG:15BE ?? and #$F3 ; CPU:$D5C0 PRG:15C0 ?? sta RallyFlags ; CPU:$D5C2 PRG:15C2 ?? lda Zp26 ; CPU:$D5C4 PRG:15C4 ?? cmp #$01 ; CPU:$D5C6 PRG:15C6 ?? beq Flow_D5A4 ; CPU:$D5C8 PRG:15C8 ?? lda PlayerMovementFlags ; CPU:$D5CA PRG:15CA ?? beq Flow_D609 ; CPU:$D5CC PRG:15CC ?? cmp #$01 ; CPU:$D5CE PRG:15CE ?? beq Flow_D5C9 ; CPU:$D5D0 PRG:15D0 ?? cmp #$02 ; CPU:$D5D2 PRG:15D2 ?? beq Flow_D5F0 ; CPU:$D5D4 PRG:15D4 ?? bne Flow_D57D ; CPU:$D5D6 PRG:15D6 ?? Flow_D5A4: lda #$15 ; CPU:$D5D8 PRG:15D8 ?? sta Zp26 ; CPU:$D5DA PRG:15DA ?? lda #$01 ; CPU:$D5DC PRG:15DC ?? sta PlayerMovementFlags ; CPU:$D5DE PRG:15DE ?? lda #$13 ; CPU:$D5E0 PRG:15E0 ?? sta BallXPosition ; CPU:$D5E2 PRG:15E2 ?? lda #$12 ; CPU:$D5E4 PRG:15E4 ?? sta PlayerPoseId ; CPU:$D5E6 PRG:15E6 ?? jsr PhysicsRoutine_D519 ; CPU:$D5E8 PRG:15E8 ?? ldx #$00 ; CPU:$D5EA PRG:15EA ?? lda RacketTargetY ; CPU:$D5EC PRG:15EC ?? eor #$7F ; CPU:$D5EE PRG:15EE ?? bpl Flow_D5C0 ; CPU:$D5F0 PRG:15F0 ?? dex ; CPU:$D5F2 PRG:15F2 ?? Flow_D5C0: adc ContactPointX ; CPU:$D5F4 PRG:15F4 ?? sta Player1YSubpixel ; CPU:$D5F6 PRG:15F6 ?? txa ; CPU:$D5F8 PRG:15F8 ?? adc ContactPointY ; CPU:$D5FA PRG:15FA ?? sta Player1YPosition ; CPU:$D5FC PRG:15FC ?? Flow_D5C9: lda RallyFlags ; CPU:$D5FE PRG:15FE ?? and #$F0 ; CPU:$D600 PRG:1600 ?? sta RallyFlags ; CPU:$D602 PRG:1602 ?? lda BallXPosition ; CPU:$D604 PRG:1604 ?? bpl Flow_D5D9 ; CPU:$D606 PRG:1606 ?? lda BallHeight ; CPU:$D608 PRG:1608 ?? cmp #$64 ; CPU:$D60A PRG:160A ?? bcc Flow_D601 ; CPU:$D60C PRG:160C ?? Flow_D5D9: lda RallyFlags ; CPU:$D60E PRG:160E ?? and #$80 ; CPU:$D610 PRG:1610 ?? beq Flow_D620 ; CPU:$D612 PRG:1612 ?? lda #$17 ; CPU:$D614 PRG:1614 ?? sta PlayerAnimationId ; CPU:$D616 PRG:1616 ?? inc PlayerMovementFlags ; CPU:$D618 PRG:1618 ?? lda #$B7 ; CPU:$D61A PRG:161A ?? sta PoseSequenceOffset ; CPU:$D61C PRG:161C ?? lda #$01 ; CPU:$D61E PRG:161E ?? sta PoseFrameTimer ; CPU:$D620 PRG:1620 ?? jmp Flow_D5FD ; CPU:$D622 PRG:1622 ?? Flow_D5F0: lda PlayerAnimationId ; CPU:$D624 PRG:1624 ?? beq Flow_D57D ; CPU:$D626 PRG:1626 ?? cmp #$10 ; CPU:$D628 PRG:1628 ?? bne Flow_D5FD ; CPU:$D62A PRG:162A ?? inc PlayerMovementFlags ; CPU:$D62C PRG:162C ?? jsr PhysicsRoutine_D6C6 ; CPU:$D62E PRG:162E ?? Flow_D5FD: jsr PhysicsRoutine_D27D ; CPU:$D630 PRG:1630 ?? rts ; CPU:$D632 PRG:1632 ?? Flow_D601: lda #$00 ; CPU:$D634 PRG:1634 ?? sta PlayerMovementFlags ; CPU:$D636 PRG:1636 ?? lda #$11 ; CPU:$D638 PRG:1638 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1607-$1608. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_D607: .byte $85, $B6 ; PRG $1607 / CPU $D607 ; CPU:$D63A PRG:163A 85 B6 Flow_D609: jsr PhysicsRoutine_D519 ; CPU:$D63C PRG:163C ?? lda ContactPointX ; CPU:$D63E PRG:163E ?? sta Player1YSubpixel ; CPU:$D640 PRG:1640 ?? lda ContactPointY ; CPU:$D642 PRG:1642 ?? sta Player1YPosition ; CPU:$D644 PRG:1644 ?? lda #$78 ; CPU:$D646 PRG:1646 ?? sta BallYSubpixel ; CPU:$D648 PRG:1648 ?? lda #$01 ; CPU:$D64A PRG:164A ?? sta BallYPosition ; CPU:$D64C PRG:164C ?? lda #$00 ; CPU:$D64E PRG:164E ?? sta BallXPosition ; CPU:$D650 PRG:1650 ?? Flow_D620: rts ; CPU:$D652 PRG:1652 ?? ; ============================================================================= ; PhysicsRoutine_D621 ; CPU address: $D621 PRG offset: $1621 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D621: lda ActiveObjectIndex ; CPU:$D654 PRG:1654 ?? beq Flow_D62B ; CPU:$D656 PRG:1656 ?? lda BallTrajectoryFlags ; CPU:$D658 PRG:1658 ?? and #$02 ; CPU:$D65A PRG:165A ?? bne Flow_D63A ; CPU:$D65C PRG:165C ?? Flow_D62B: lda #$00 ; CPU:$D65E PRG:165E ?? sta RacketContactState ; CPU:$D660 PRG:1660 ?? lda #$01 ; CPU:$D662 PRG:1662 ?? sta BallContactTimer ; CPU:$D664 PRG:1664 ?? jsr PhysicsRoutine_DC11 ; CPU:$D666 PRG:1666 ?? jsr PhysicsRoutine_D2A5 ; CPU:$D668 PRG:1668 ?? rts ; CPU:$D66A PRG:166A ?? Flow_D63A: lda Zp26 ; CPU:$D66C PRG:166C ?? cmp #$01 ; CPU:$D66E PRG:166E ?? bne Flow_D665 ; CPU:$D670 PRG:1670 ?? lda #$40 ; CPU:$D672 PRG:1672 ?? sta Zp26 ; CPU:$D674 PRG:1674 ?? lda #$13 ; CPU:$D676 PRG:1676 ?? sta BallXPosition ; CPU:$D678 PRG:1678 ?? lda #$01 ; CPU:$D67A PRG:167A ?? sta PlayerMovementFlags ; CPU:$D67C PRG:167C ?? lda #$2A ; CPU:$D67E PRG:167E ?? sta PlayerPoseId ; CPU:$D680 PRG:1680 ?? jsr PhysicsRoutine_D515 ; CPU:$D682 PRG:1682 ?? ldx #$00 ; CPU:$D684 PRG:1684 ?? lda RacketTargetY ; CPU:$D686 PRG:1686 ?? eor #$7F ; CPU:$D688 PRG:1688 ?? bpl Flow_D65C ; CPU:$D68A PRG:168A ?? dex ; CPU:$D68C PRG:168C ?? Flow_D65C: adc ContactPointX ; CPU:$D68E PRG:168E ?? sta Player1YSubpixel ; CPU:$D690 PRG:1690 ?? txa ; CPU:$D692 PRG:1692 ?? adc ContactPointY ; CPU:$D694 PRG:1694 ?? sta Player1YPosition ; CPU:$D696 PRG:1696 ?? Flow_D665: lda PlayerMovementFlags ; CPU:$D698 PRG:1698 ?? beq Flow_D69C ; CPU:$D69A PRG:169A ?? lda #$00 ; CPU:$D69C PRG:169C ?? sta RallyFlags ; CPU:$D69E PRG:169E ?? lda PlayerAnimationId ; CPU:$D6A0 PRG:16A0 ?? bne Flow_D694 ; CPU:$D6A2 PRG:16A2 ?? lda Zp26 ; CPU:$D6A4 PRG:16A4 ?? cmp #$39 ; CPU:$D6A6 PRG:16A6 ?? beq Flow_D682 ; CPU:$D6A8 PRG:16A8 ?? cmp #$3A ; CPU:$D6AA PRG:16AA ?? bne FlowEntry_D69B ; CPU:$D6AC PRG:16AC ?? lda $0501 ; CPU:$D6AE PRG:16AE ?? and #$03 ; CPU:$D6B0 PRG:16B0 ?? bne FlowEntry_D69B ; CPU:$D6B2 PRG:16B2 ?? Flow_D682: inc PlayerMovementFlags ; CPU:$D6B4 PRG:16B4 ?? lda #$17 ; CPU:$D6B6 PRG:16B6 ?? sta PlayerAnimationId ; CPU:$D6B8 PRG:16B8 ?? lda #$60 ; CPU:$D6BA PRG:16BA ?? sta PoseSequenceOffset ; CPU:$D6BC PRG:16BC ?? lda #$01 ; CPU:$D6BE PRG:16BE ?? sta PoseFrameTimer ; CPU:$D6C0 PRG:16C0 ?? Flow_D690: jsr PhysicsRoutine_D2A5 ; CPU:$D6C2 PRG:16C2 ?? rts ; CPU:$D6C4 PRG:16C4 ?? Flow_D694: cmp #$10 ; CPU:$D6C6 PRG:16C6 ?? bne Flow_D690 ; CPU:$D6C8 PRG:16C8 ?? jsr PhysicsRoutine_D708 ; CPU:$D6CA PRG:16CA ?? FlowEntry_D69B: rts ; PRG $169B / CPU $D69B ; CPU:$D6CC PRG:16CC ?? Flow_D69C: lda Zp20 ; CPU:$D6CE PRG:16CE ?? beq Flow_D6A7 ; CPU:$D6D0 PRG:16D0 ?? lda $0502 ; CPU:$D6D2 PRG:16D2 ?? and #$70 ; CPU:$D6D4 PRG:16D4 ?? bne Flow_D6AE ; CPU:$D6D6 PRG:16D6 ?? Flow_D6A7: lda $0503 ; CPU:$D6D8 PRG:16D8 ?? and #$03 ; CPU:$D6DA PRG:16DA ?? sta RallyFlags ; CPU:$D6DC PRG:16DC ?? Flow_D6AE: jsr PhysicsRoutine_D515 ; CPU:$D6DE PRG:16DE ?? lda ContactPointX ; CPU:$D6E0 PRG:16E0 ?? sta Player1YSubpixel ; CPU:$D6E2 PRG:16E2 ?? lda ContactPointY ; CPU:$D6E4 PRG:16E4 ?? sta Player1YPosition ; CPU:$D6E6 PRG:16E6 ?? lda #$40 ; CPU:$D6E8 PRG:16E8 ?? sta BallYSubpixel ; CPU:$D6EA PRG:16EA ?? lda #$01 ; CPU:$D6EC PRG:16EC ?? sta BallYPosition ; CPU:$D6EE PRG:16EE ?? lda #$00 ; CPU:$D6F0 PRG:16F0 ?? sta BallXPosition ; CPU:$D6F2 PRG:16F2 ?? rts ; PRG $16C5 / CPU $D6C5 ; CPU:$D6F4 PRG:16F4 ?? ; ============================================================================= ; PhysicsRoutine_D6C6 ; CPU address: $D6C6 PRG offset: $16C6 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D6C6: ldy #$00 ; CPU:$D6F6 PRG:16F6 ?? ldx #$01 ; CPU:$D6F8 PRG:16F8 ?? lda BallHeight ; CPU:$D6FA PRG:16FA ?? cmp #$68 ; CPU:$D6FC PRG:16FC ?? bcc Flow_D703 ; CPU:$D6FE PRG:16FE ?? cmp #$B8 ; CPU:$D700 PRG:1700 ?? bcs Flow_D703 ; CPU:$D702 PRG:1702 ?? cmp #$78 ; CPU:$D704 PRG:1704 ?? bcc Flow_D6E4 ; CPU:$D706 PRG:1706 ?? iny ; CPU:$D708 PRG:1708 ?? cmp #$90 ; CPU:$D70A PRG:170A ?? bcc Flow_D6E4 ; CPU:$D70C PRG:170C ?? iny ; CPU:$D70E PRG:170E ?? dex ; CPU:$D710 PRG:1710 ?? cmp #$A8 ; CPU:$D712 PRG:1712 ?? bcc Flow_D6E4 ; CPU:$D714 PRG:1714 ?? iny ; CPU:$D716 PRG:1716 ?? Flow_D6E4: jsr PhysicsRoutine_D73A ; CPU:$D718 PRG:1718 ?? lda BallHeight ; CPU:$D71A PRG:171A ?? cmp #$AC ; CPU:$D71C PRG:171C ?? bcs Flow_D702 ; CPU:$D71E PRG:171E ?? lda #$A5 ; CPU:$D720 PRG:1720 ?? ldy BallXPosition ; CPU:$D722 PRG:1722 ?? bpl Flow_D6F5 ; CPU:$D724 PRG:1724 ?? lda #$A0 ; CPU:$D726 PRG:1726 ?? Flow_D6F5: cmp BallHeight ; CPU:$D728 PRG:1728 ?? bcs Flow_D702 ; CPU:$D72A PRG:172A ?? lda #$01 ; CPU:$D72C PRG:172C ?? sta $035E ; CPU:$D72E PRG:172E ?? lda #$02 ; CPU:$D730 PRG:1730 ?? sta PlayerActionParameter ; CPU:$D732 PRG:1732 ?? Flow_D702: rts ; CPU:$D734 PRG:1734 ?? Flow_D703: lda #$50 ; CPU:$D736 PRG:1736 ?? sta Zp26 ; CPU:$D738 PRG:1738 ?? rts ; CPU:$D73A PRG:173A ?? ; ============================================================================= ; PhysicsRoutine_D708 ; CPU address: $D708 PRG offset: $1708 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D708: ldy #$04 ; CPU:$D73C PRG:173C ?? ldx #$00 ; CPU:$D73E PRG:173E ?? jsr RollRng ; CPU:$D740 PRG:1740 ?? cmp #$10 ; CPU:$D742 PRG:1742 ?? bcc Flow_D71F ; CPU:$D744 PRG:1744 ?? iny ; CPU:$D746 PRG:1746 ?? cmp #$80 ; CPU:$D748 PRG:1748 ?? bcc Flow_D71F ; CPU:$D74A PRG:174A ?? iny ; CPU:$D74C PRG:174C ?? cmp #$F4 ; CPU:$D74E PRG:174E ?? bcc Flow_D71F ; CPU:$D750 PRG:1750 ?? iny ; CPU:$D752 PRG:1752 ?? inx ; CPU:$D754 PRG:1754 ?? Flow_D71F: jsr PhysicsRoutine_D73A ; CPU:$D756 PRG:1756 ?? lda $0501 ; CPU:$D758 PRG:1758 ?? ldy ServingPlayer ; CPU:$D75A PRG:175A ?? cmp $D735,y ; CPU:$D75C PRG:175C ?? bcs Flow_D734 ; CPU:$D75E PRG:175E ?? lda #$02 ; CPU:$D760 PRG:1760 ?? sta PlayerActionParameter ; CPU:$D762 PRG:1762 ?? lda #$0E ; CPU:$D764 PRG:1764 ?? sta PlayerTargetYHi ; CPU:$D766 PRG:1766 ?? Flow_D734: rts ; CPU:$D768 PRG:1768 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1735-$1739. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- NetCollisionThresholdTable: .byte $18, $28, $38, $50, $60 ; PRG $1735 / CPU $D735 ; CPU:$D76A PRG:176A 18 28 38 50 60 ; ============================================================================= ; PhysicsRoutine_D73A ; CPU address: $D73A PRG offset: $173A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D73A: tya ; CPU:$D76F PRG:176F ?? asl a ; CPU:$D771 PRG:1771 ?? tay ; CPU:$D773 PRG:1773 ?? lda $D780,y ; CPU:$D775 PRG:1775 ?? sta PlayerTargetYLo ; CPU:$D777 PRG:1777 ?? lda $D781,y ; CPU:$D779 PRG:1779 ?? sta PlayerTargetYHi ; CPU:$D77B PRG:177B ?? stx PlayerActionParameter ; CPU:$D77D PRG:177D ?? lda #$03 ; CPU:$D77F PRG:177F ?? sta PlayerActionType ; CPU:$D781 PRG:1781 ?? ldx #$00 ; CPU:$D783 PRG:1783 ?? stx MathResultHi ; CPU:$D785 PRG:1785 ?? jsr RollRng ; CPU:$D787 PRG:1787 ?? sta MathResultLo ; CPU:$D789 PRG:1789 ?? jsr RollRng ; CPU:$D78B PRG:178B ?? adc MathResultLo ; CPU:$D78D PRG:178D ?? rol MathResultHi ; CPU:$D78F PRG:178F ?? sta MathResultLo ; CPU:$D791 PRG:1791 ?? ldx #$50 ; CPU:$D793 PRG:1793 ?? ldy #$0D ; CPU:$D795 PRG:1795 ?? lda BallTrajectoryFlags ; CPU:$D797 PRG:1797 ?? and #$01 ; CPU:$D799 PRG:1799 ?? bne Flow_D76D ; CPU:$D79B PRG:179B ?? ldx #$D0 ; CPU:$D79D PRG:179D ?? ldy #$10 ; CPU:$D79F PRG:179F ?? Flow_D76D: txa ; CPU:$D7A1 PRG:17A1 ?? adc MathResultLo ; CPU:$D7A3 PRG:17A3 ?? sta PlayerTargetXLo ; CPU:$D7A5 PRG:17A5 ?? tya ; CPU:$D7A7 PRG:17A7 ?? adc MathResultHi ; CPU:$D7A9 PRG:17A9 ?? sta PlayerTargetXHi ; CPU:$D7AB PRG:17AB ?? lda #$01 ; CPU:$D7AD PRG:17AD ?? sta PlayerActionState ; CPU:$D7AF PRG:17AF ?? lda ActiveObjectIndex ; CPU:$D7B1 PRG:17B1 ?? sta Zp40 ; CPU:$D7B3 PRG:17B3 ?? rts ; CPU:$D7B5 PRG:17B5 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1780-$178F. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- BallLandingBoundaryTable: .byte $00, $13, $D0, $14, $00, $16, $00, $18, $80, $0C, $00, $0E, $C0, $0E, $00, $10 ; PRG $1780 / CPU $D780 ; CPU:$D7B7 PRG:17B7 00 13 D0 14 00 16 00 18 80 0C 00 0E C0 0E 00 10 ; ============================================================================= ; PhysicsRoutine_D790 ; CPU address: $D790 PRG offset: $1790 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D790: bit BallTrajectoryFlags ; CPU:$D7C7 PRG:17C7 ?? bpl FlowEntry_D7E0 ; CPU:$D7C9 PRG:17C9 ?? ldx #$06 ; CPU:$D7CB PRG:17CB ?? ldy $0309 ; CPU:$D7CD PRG:17CD ?? lda BallTrajectoryFlags ; CPU:$D7CF PRG:17CF ?? and #$02 ; CPU:$D7D1 PRG:17D1 ?? beq Flow_D7A4 ; CPU:$D7D3 PRG:17D3 ?? ldx #$F6 ; CPU:$D7D5 PRG:17D5 ?? ldy $0349 ; CPU:$D7D7 PRG:17D7 ?? Flow_D7A4: stx MathResultHi ; CPU:$D7D9 PRG:17D9 ?? tya ; CPU:$D7DB PRG:17DB ?? clc ; CPU:$D7DD PRG:17DD ?? adc MathResultHi ; CPU:$D7DF PRG:17DF ?? ldx $038A ; CPU:$D7E1 PRG:17E1 ?? ldy PlayerMovementFlags ; CPU:$D7E3 PRG:17E3 ?? beq Flow_D7B7 ; CPU:$D7E5 PRG:17E5 ?? cpy #$01 ; CPU:$D7E7 PRG:17E7 ?? beq Flow_D7BA ; CPU:$D7E9 PRG:17E9 ?? bne Flow_D7BD ; CPU:$D7EB PRG:17EB ?? Flow_D7B7: sta $0203,x ; CPU:$D7ED PRG:17ED ?? Flow_D7BA: sta $0207,x ; CPU:$D7EF PRG:17EF ?? Flow_D7BD: ldx PlayerActionState ; CPU:$D7F1 PRG:17F1 ?? beq FlowEntry_D7E0 ; CPU:$D7F3 PRG:17F3 ?? lda BallTrajectoryFlags ; CPU:$D7F5 PRG:17F5 ?? and #$7F ; CPU:$D7F7 PRG:17F7 ?? sta BallTrajectoryFlags ; CPU:$D7F9 PRG:17F9 ?? lda #$F0 ; CPU:$D7FB PRG:17FB ?? sta $0314 ; CPU:$D7FD PRG:17FD ?? lda #$10 ; CPU:$D7FF PRG:17FF ?? sta $0315 ; CPU:$D801 PRG:1801 ?? lda #$D0 ; CPU:$D803 PRG:1803 ?? sta $0354 ; CPU:$D805 PRG:1805 ?? lda #$30 ; CPU:$D807 PRG:1807 ?? sta $0355 ; CPU:$D809 PRG:1809 ?? lda #$00 ; CPU:$D80B PRG:180B ?? sta $037B ; CPU:$D80D PRG:180D ?? FlowEntry_D7E0: rts ; PRG $17E0 / CPU $D7E0 ; CPU:$D80F PRG:180F ?? ; ============================================================================= ; PhysicsRoutine_D7E1 ; CPU address: $D7E1 PRG offset: $17E1 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D7E1: lda #$0A ; CPU:$D811 PRG:1811 ?? sta Zp26 ; CPU:$D813 PRG:1813 ?? lda BallTrajectoryFlags ; CPU:$D815 PRG:1815 ?? ora #$C0 ; CPU:$D817 PRG:1817 ?? sta BallTrajectoryFlags ; CPU:$D819 PRG:1819 ?? lda #$10 ; CPU:$D81B PRG:181B ?? sta Player1YPosition ; CPU:$D81D PRG:181D ?? lda #$01 ; CPU:$D81F PRG:181F ?? sta BallYPosition ; CPU:$D821 PRG:1821 ?? ldx #$0A ; CPU:$D823 PRG:1823 ?? ldy #$00 ; CPU:$D825 PRG:1825 ?? lda BallTrajectoryFlags ; CPU:$D827 PRG:1827 ?? and #$02 ; CPU:$D829 PRG:1829 ?? beq Flow_D801 ; CPU:$D82B PRG:182B ?? ldx #$1A ; CPU:$D82D PRG:182D ?? ldy #$C0 ; CPU:$D82F PRG:182F ?? Flow_D801: stx Player2YPosition ; CPU:$D831 PRG:1831 ?? sty Player2YSubpixel ; CPU:$D833 PRG:1833 ?? lda BallTrajectoryFlags ; CPU:$D835 PRG:1835 ?? and #$03 ; CPU:$D837 PRG:1837 ?? asl a ; CPU:$D839 PRG:1839 ?? asl a ; CPU:$D83B PRG:183B ?? asl a ; CPU:$D83D PRG:183D ?? tay ; CPU:$D83F PRG:183F ?? lda $D889,y ; CPU:$D841 PRG:1841 ?? sta $0309 ; CPU:$D843 PRG:1843 ?? lda $D88A,y ; CPU:$D845 PRG:1845 ?? sta $0329 ; CPU:$D847 PRG:1847 ?? lda $D88B,y ; CPU:$D849 PRG:1849 ?? sta $0349 ; CPU:$D84B PRG:184B ?? lda $D88C,y ; CPU:$D84D PRG:184D ?? sta $0369 ; CPU:$D84F PRG:184F ?? lda BallTrajectoryFlags ; CPU:$D851 PRG:1851 ?? and #$02 ; CPU:$D853 PRG:1853 ?? bne Flow_D83A ; CPU:$D855 PRG:1855 ?? lda $D88D,y ; CPU:$D857 PRG:1857 ?? sta $0314 ; CPU:$D859 PRG:1859 ?? lda $D88E,y ; CPU:$D85B PRG:185B ?? sta $0315 ; CPU:$D85D PRG:185D ?? jmp Flow_D84C ; CPU:$D85F PRG:185F ?? Flow_D83A: lda $D88D,y ; CPU:$D861 PRG:1861 ?? sta $0354 ; CPU:$D863 PRG:1863 ?? lda $D88E,y ; CPU:$D865 PRG:1865 ?? sta $0355 ; CPU:$D867 PRG:1867 ?? lda $D88F,y ; CPU:$D869 PRG:1869 ?? sta $0308 ; CPU:$D86B PRG:186B ?? Flow_D84C: ldy #$01 ; CPU:$D86D PRG:186D ?? lda BallTrajectoryFlags ; CPU:$D86F PRG:186F ?? and #$02 ; CPU:$D871 PRG:1871 ?? beq Flow_D860 ; CPU:$D873 PRG:1873 ?? ldy #$02 ; CPU:$D875 PRG:1875 ?? lda #$10 ; CPU:$D877 PRG:1877 ?? sta $0315 ; CPU:$D879 PRG:1879 ?? lda #$F0 ; CPU:$D87B PRG:187B ?? sta $0314 ; CPU:$D87D PRG:187D ?? Flow_D860: sty BallVerticalVelocityHi ; CPU:$D87F PRG:187F ?? lda #$E8 ; CPU:$D881 PRG:1881 ?? sta BallMotionControl ; CPU:$D883 PRG:1883 ?? lda #$80 ; CPU:$D885 PRG:1885 ?? sta BallTargetOffset ; CPU:$D887 PRG:1887 ?? lda #$00 ; CPU:$D889 PRG:1889 ?? sta Player1XSubpixel ; CPU:$D88B PRG:188B ?? sta Player1XPosition ; CPU:$D88D PRG:188D ?? sta Player2XSubpixel ; CPU:$D88F PRG:188F ?? sta Player2XPosition ; CPU:$D891 PRG:1891 ?? sta BallXSubpixel ; CPU:$D893 PRG:1893 ?? sta BallXPosition ; CPU:$D895 PRG:1895 ?? sta PlayerMovementFlags ; CPU:$D897 PRG:1897 ?? sta PlayerActionState ; CPU:$D899 PRG:1899 ?? sta UmpireMessageId ; CPU:$D89B PRG:189B ?? sta BallVerticalVelocityLo ; CPU:$D89D PRG:189D ?? sta BallCollisionFlags ; CPU:$D89F PRG:189F ?? sta BallContactState ; CPU:$D8A1 PRG:18A1 ?? sta Zp24 ; CPU:$D8A3 PRG:18A3 ?? sta BallBounceState ; CPU:$D8A5 PRG:18A5 ?? rts ; CPU:$D8A7 PRG:18A7 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1889-$18A8. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- RacketHitTrajectoryTable: .byte $58, $A8, $98, $64, $78, $40, $00, $00, $A8, $58, $68, $98, $C0, $88, $00, $00 ; PRG $1889 / CPU $D889 ; CPU:$D8A9 PRG:18A9 58 A8 98 64 78 40 00 00 A8 58 68 98 C0 88 00 00 .byte $A8, $58, $68, $98, $7C, $58, $C8, $00, $58, $A8, $98, $68, $A8, $84, $C8, $00 ; PRG $1899 / CPU $D899 ; CPU:$D8B9 PRG:18B9 A8 58 68 98 7C 58 C8 00 58 A8 98 68 A8 84 C8 00 ; ============================================================================= ; PhysicsRoutine_D8A9 ; CPU address: $D8A9 PRG offset: $18A9 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D8A9: lda #$40 ; CPU:$D8C9 PRG:18C9 ?? sta ObjectDataPointerLo ; CPU:$D8CB PRG:18CB ?? lda #$03 ; CPU:$D8CD PRG:18CD ?? sta ObjectDataPointerHi ; CPU:$D8CF PRG:18CF ?? lda #$00 ; CPU:$D8D1 PRG:18D1 ?? sta ObjectDataOffset ; CPU:$D8D3 PRG:18D3 ?? lda #$01 ; CPU:$D8D5 PRG:18D5 ?? sta ActiveObjectIndex ; CPU:$D8D7 PRG:18D7 ?? Flow_D8B9: jsr EngineRoutine_C1F3 ; CPU:$D8D9 PRG:18D9 ?? lda AnimationFrame ; CPU:$D8DB PRG:18DB ?? beq Flow_D8DF ; CPU:$D8DD PRG:18DD ?? lda BallTrajectoryFlags ; CPU:$D8DF PRG:18DF ?? bmi Flow_D8CA ; CPU:$D8E1 PRG:18E1 ?? jsr PhysicsRoutine_D8E7 ; CPU:$D8E3 PRG:18E3 ?? jmp Flow_D8CD ; CPU:$D8E5 PRG:18E5 ?? Flow_D8CA: jsr PhysicsRoutine_D621 ; CPU:$D8E7 PRG:18E7 ?? Flow_D8CD: jsr PhysicsRoutine_DA48 ; CPU:$D8E9 PRG:18E9 ?? jsr PhysicsRoutine_D132 ; CPU:$D8EB PRG:18EB ?? jsr PhysicsRoutine_D20E ; CPU:$D8ED PRG:18ED ?? jsr PhysicsRoutine_DC8D ; CPU:$D8EF PRG:18EF ?? jsr EngineRoutine_C21C ; CPU:$D8F1 PRG:18F1 ?? jsr EngineRoutine_C20E ; CPU:$D8F3 PRG:18F3 ?? Flow_D8DF: jsr EngineRoutine_C206 ; CPU:$D8F5 PRG:18F5 ?? dec ActiveObjectIndex ; CPU:$D8F7 PRG:18F7 ?? bpl Flow_D8B9 ; CPU:$D8F9 PRG:18F9 ?? rts ; CPU:$D8FB PRG:18FB ?? ; ============================================================================= ; PhysicsRoutine_D8E7 ; CPU address: $D8E7 PRG offset: $18E7 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_D8E7: lda PlayerFacingDirection ; CPU:$D8FD PRG:18FD ?? cmp #$01 ; CPU:$D8FF PRG:18FF ?? beq Flow_D8F0 ; CPU:$D901 PRG:1901 ?? jmp Flow_D9EA ; CPU:$D903 PRG:1903 ?? Flow_D8F0: lda BallContactTimer ; CPU:$D905 PRG:1905 ?? beq Flow_D918 ; CPU:$D907 PRG:1907 ?? dec BallContactTimer ; CPU:$D909 PRG:1909 ?? jsr RenderRoutine_DF8F ; CPU:$D90B PRG:190B ?? lda ActiveObjectIndex ; CPU:$D90D PRG:190D ?? bne Flow_D900 ; CPU:$D90F PRG:190F ?? jsr RenderRoutine_DFF5 ; CPU:$D911 PRG:1911 ?? Flow_D900: jsr PhysicsRoutine_D486 ; CPU:$D913 PRG:1913 ?? lda #$00 ; CPU:$D915 PRG:1915 ?? ldy ObjectAnimationFrame ; CPU:$D917 PRG:1917 ?? bne Flow_D90B ; CPU:$D919 PRG:1919 ?? lda #$05 ; CPU:$D91B PRG:191B ?? Flow_D90B: jsr RenderRoutine_E021 ; CPU:$D91D PRG:191D ?? ldx #$10 ; CPU:$D91F PRG:191F ?? stx RallyFlags ; CPU:$D921 PRG:1921 ?? jsr PhysicsRoutine_DA07 ; CPU:$D923 PRG:1923 ?? jmp Flow_DA00 ; CPU:$D925 PRG:1925 ?? Flow_D918: lda GameMode ; CPU:$D927 PRG:1927 ?? beq Flow_D952 ; CPU:$D929 PRG:1929 ?? lda ObjectAnimationFrame ; CPU:$D92B PRG:192B ?? bne Flow_D952 ; CPU:$D92D PRG:192D ?? lda ActiveObjectIndex ; CPU:$D92F PRG:192F ?? bne Flow_D92E ; CPU:$D931 PRG:1931 ?? bit BallTrajectoryFlags ; CPU:$D933 PRG:1933 ?? bvs Flow_D945 ; CPU:$D935 PRG:1935 ?? lda $0348 ; CPU:$D937 PRG:1937 ?? jmp Flow_D931 ; CPU:$D939 PRG:1939 ?? Flow_D92E: lda $0368 ; CPU:$D93B PRG:193B ?? Flow_D931: sbc #$04 ; CPU:$D93D PRG:193D ?? cmp BallTargetOffset ; CPU:$D93F PRG:193F ?? bcc Flow_D945 ; CPU:$D941 PRG:1941 ?? ldy #$00 ; CPU:$D943 PRG:1943 ?? sty $0359 ; CPU:$D945 PRG:1945 ?? sty $0379 ; CPU:$D947 PRG:1947 ?? lda #$01 ; CPU:$D949 PRG:1949 ?? sta ObjectAnimationFrame ; CPU:$D94B PRG:194B ?? bne Flow_D94E ; CPU:$D94D PRG:194D ?? Flow_D945: jsr PhysicsRoutine_DAC7 ; CPU:$D94F PRG:194F ?? jsr PhysicsRoutine_D46F ; CPU:$D951 PRG:1951 ?? jmp Flow_DA00 ; CPU:$D953 PRG:1953 ?? Flow_D94E: lda #$10 ; CPU:$D955 PRG:1955 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1950-$1951. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_D950: .byte $85, $C0 ; PRG $1950 / CPU $D950 ; CPU:$D957 PRG:1957 85 C0 Flow_D952: lda PlayerAnimationId ; CPU:$D959 PRG:1959 ?? beq Flow_D959 ; CPU:$D95B PRG:195B ?? jmp Flow_D9CE ; CPU:$D95D PRG:195D ?? Flow_D959: lda SignedMovementDelta ; CPU:$D95F PRG:195F ?? sta Zp10 ; CPU:$D961 PRG:1961 ?? jsr PhysicsRoutine_D46F ; CPU:$D963 PRG:1963 ?? bit RacketAimOffset ; CPU:$D965 PRG:1965 ?? bpl Flow_D979 ; CPU:$D967 PRG:1967 ?? jsr PhysicsRoutine_DA07 ; CPU:$D969 PRG:1969 ?? bmi Flow_D979 ; CPU:$D96B PRG:196B ?? lda SignedMovementDelta ; CPU:$D96D PRG:196D ?? bmi Flow_D973 ; CPU:$D96F PRG:196F ?? cmp #$04 ; CPU:$D971 PRG:1971 ?? bcs Flow_D979 ; CPU:$D973 PRG:1973 ?? bcc Flow_D9B8 ; CPU:$D975 PRG:1975 ?? Flow_D973: cmp #$FC ; CPU:$D977 PRG:1977 ?? bcc Flow_D979 ; CPU:$D979 PRG:1979 ?? bcs Flow_D9B8 ; CPU:$D97B PRG:197B ?? Flow_D979: lda RallyFlags ; CPU:$D97D PRG:197D ?? beq Flow_D994 ; CPU:$D97F PRG:197F ?? lda SignedMovementDelta ; CPU:$D981 PRG:1981 ?? beq Flow_D987 ; CPU:$D983 PRG:1983 ?? eor Zp10 ; CPU:$D985 PRG:1985 ?? and #$80 ; CPU:$D987 PRG:1987 ?? beq Flow_D98C ; CPU:$D989 PRG:1989 ?? Flow_D987: lda #$00 ; CPU:$D98B PRG:198B ?? jmp Flow_D994 ; CPU:$D98D PRG:198D ?? Flow_D98C: lda #$01 ; CPU:$D98F PRG:198F ?? ldy SignedMovementDelta ; CPU:$D991 PRG:1991 ?? bpl Flow_D994 ; CPU:$D993 PRG:1993 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1992-$1993. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_D992: .byte $A9, $02 ; PRG $1992 / CPU $D992 ; CPU:$D995 PRG:1995 A9 02 Flow_D994: ldy GameMode ; CPU:$D997 PRG:1997 ?? bne Flow_D9B3 ; CPU:$D999 PRG:1999 ?? ldy PlayerActionType ; CPU:$D99B PRG:199B ?? cpy #$04 ; CPU:$D99D PRG:199D ?? bne Flow_D9B3 ; CPU:$D99F PRG:199F ?? ldy RacketTargetX ; CPU:$D9A1 PRG:19A1 ?? cpy #$34 ; CPU:$D9A3 PRG:19A3 ?? bcc Flow_D9B3 ; CPU:$D9A5 PRG:19A5 ?? ora #$08 ; CPU:$D9A7 PRG:19A7 ?? sta RallyFlags ; CPU:$D9A9 PRG:19A9 ?? ldy #$01 ; CPU:$D9AB PRG:19AB ?? sty ObjectAnimationFrame ; CPU:$D9AD PRG:19AD ?? lda #$14 ; CPU:$D9AF PRG:19AF ?? jsr RenderRoutine_E021 ; CPU:$D9B1 PRG:19B1 ?? lda RallyFlags ; CPU:$D9B3 PRG:19B3 ?? Flow_D9B3: sta RallyFlags ; CPU:$D9B5 PRG:19B5 ?? jmp Flow_DA00 ; CPU:$D9B7 PRG:19B7 ?? Flow_D9B8: lda #$00 ; CPU:$D9B9 PRG:19B9 ?? sta RallyFlags ; CPU:$D9BB PRG:19BB ?? jsr PhysicsRoutine_DAE7 ; CPU:$D9BD PRG:19BD ?? beq Flow_D9CB ; CPU:$D9BF PRG:19BF ?? lda #$17 ; CPU:$D9C1 PRG:19C1 ?? sta PlayerAnimationId ; CPU:$D9C3 PRG:19C3 ?? jsr PhysicsRoutine_DA33 ; CPU:$D9C5 PRG:19C5 ?? jsr PhysicsRoutine_DA68 ; CPU:$D9C7 PRG:19C7 ?? Flow_D9CB: jmp Flow_DA03 ; CPU:$D9C9 PRG:19C9 ?? Flow_D9CE: bit RacketAimOffset ; CPU:$D9CB PRG:19CB ?? bpl Flow_DA00 ; CPU:$D9CD PRG:19CD ?? jsr PhysicsRoutine_DA33 ; CPU:$D9CF PRG:19CF ?? bmi Flow_DA00 ; CPU:$D9D1 PRG:19D1 ?? lda ObjectAnimationFrame ; CPU:$D9D3 PRG:19D3 ?? beq Flow_DA00 ; CPU:$D9D5 PRG:19D5 ?? jsr PhysicsRoutine_DC2D ; CPU:$D9D7 PRG:19D7 ?? jsr PhysicsRoutine_DCAB ; CPU:$D9D9 PRG:19D9 ?? jsr PhysicsRoutine_DD31 ; CPU:$D9DB PRG:19DB ?? jsr PhysicsRoutine_DD54 ; CPU:$D9DD PRG:19DD ?? jmp Flow_DA00 ; CPU:$D9DF PRG:19DF ?? Flow_D9EA: lda BallContactTimer ; CPU:$D9E1 PRG:19E1 ?? bne Flow_D9F6 ; CPU:$D9E3 PRG:19E3 ?? inc BallContactTimer ; CPU:$D9E5 PRG:19E5 ?? jsr PhysicsRoutine_DB1E ; CPU:$D9E7 PRG:19E7 ?? jmp Flow_DA00 ; CPU:$D9E9 PRG:19E9 ?? Flow_D9F6: lda PlayerAnimationId ; CPU:$D9EB PRG:19EB ?? bne Flow_DA00 ; CPU:$D9ED PRG:19ED ?? jsr PhysicsRoutine_DAA8 ; CPU:$D9EF PRG:19EF ?? jmp Flow_DA00 ; CPU:$D9F1 PRG:19F1 ?? Flow_DA00: jsr PhysicsRoutine_DB82 ; CPU:$D9F3 PRG:19F3 ?? Flow_DA03: jsr PhysicsRoutine_D2A5 ; CPU:$D9F5 PRG:19F5 ?? rts ; PRG $1A06 / CPU $DA06 ; CPU:$D9F7 PRG:19F7 ?? ; ============================================================================= ; PhysicsRoutine_DA07 ; CPU address: $DA07 PRG offset: $1A07 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DA07: ldx #$01 ; CPU:$D9F9 PRG:19F9 ?? lda RacketTargetX ; CPU:$D9FB PRG:19FB ?? cmp #$50 ; CPU:$D9FD PRG:19FD ?? bcc Flow_DA12 ; CPU:$D9FF PRG:19FF ?? inx ; CPU:$DA01 PRG:1A01 ?? bne Flow_DA19 ; CPU:$DA03 PRG:1A03 ?? Flow_DA12: ldy PlayerActionType ; CPU:$DA05 PRG:1A05 ?? cpy #$04 ; CPU:$DA07 PRG:1A07 ?? bne Flow_DA19 ; CPU:$DA09 PRG:1A09 ?? dex ; CPU:$DA0B PRG:1A0B ?? Flow_DA19: clc ; CPU:$DA0D PRG:1A0D ?? adc $DA30,x ; CPU:$DA0F PRG:1A0F ?? sec ; CPU:$DA11 PRG:1A11 ?? sbc BallTargetOffset ; CPU:$DA13 PRG:1A13 ?? bcc Flow_DA29 ; CPU:$DA15 PRG:1A15 ?? bpl Flow_DA2D ; CPU:$DA17 PRG:1A17 ?? lda #$7F ; CPU:$DA19 PRG:1A19 ?? jmp Flow_DA2D ; CPU:$DA1B PRG:1A1B ?? Flow_DA29: bmi Flow_DA2D ; CPU:$DA1D PRG:1A1D ?? lda #$80 ; CPU:$DA1F PRG:1A1F ?? Flow_DA2D: sta RacketAimOffset ; CPU:$DA21 PRG:1A21 ?? rts ; CPU:$DA23 PRG:1A23 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1A30-$1A32. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- RacketAimAdjustmentTable: .byte $05, $06, $0B ; PRG $1A30 / CPU $DA30 ; CPU:$DA25 PRG:1A25 05 06 0B ; ============================================================================= ; PhysicsRoutine_DA33 ; CPU address: $DA33 PRG offset: $1A33 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DA33: lda RacketTargetX ; CPU:$DA28 PRG:1A28 ?? sec ; CPU:$DA2A PRG:1A2A ?? sbc BallTargetOffset ; CPU:$DA2C PRG:1A2C ?? bcc Flow_DA41 ; CPU:$DA2E PRG:1A2E ?? bpl Flow_DA45 ; CPU:$DA30 PRG:1A30 ?? lda #$7F ; CPU:$DA32 PRG:1A32 ?? jmp Flow_DA45 ; CPU:$DA34 PRG:1A34 ?? Flow_DA41: bmi Flow_DA45 ; CPU:$DA36 PRG:1A36 ?? lda #$80 ; CPU:$DA38 PRG:1A38 ?? Flow_DA45: sta RacketAimOffset ; CPU:$DA3A PRG:1A3A ?? rts ; PRG $1A47 / CPU $DA47 ; CPU:$DA3C PRG:1A3C ?? ; ============================================================================= ; PhysicsRoutine_DA48 ; CPU address: $DA48 PRG offset: $1A48 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DA48: lda PlayerActionState ; CPU:$DA3E PRG:1A3E ?? sta MathResultHi ; CPU:$DA40 PRG:1A40 ?? jsr PhysicsRoutine_D0FA ; CPU:$DA42 PRG:1A42 ?? lda MathResultHi ; CPU:$DA44 PRG:1A44 ?? cmp #$01 ; CPU:$DA46 PRG:1A46 ?? beq Flow_DA65 ; CPU:$DA48 PRG:1A48 ?? lda PlayerActionState ; CPU:$DA4A PRG:1A4A ?? cmp #$02 ; CPU:$DA4C PRG:1A4C ?? bne Flow_DA67 ; CPU:$DA4E PRG:1A4E ?? ldy ObjectAnimationFrame ; CPU:$DA50 PRG:1A50 ?? beq Flow_DA67 ; CPU:$DA52 PRG:1A52 ?? ldy UmpireMessageId ; CPU:$DA54 PRG:1A54 ?? bne Flow_DA67 ; CPU:$DA56 PRG:1A56 ?? lda MathResultHi ; CPU:$DA58 PRG:1A58 ?? Flow_DA65: sta PlayerActionState ; CPU:$DA5A PRG:1A5A ?? Flow_DA67: rts ; CPU:$DA5C PRG:1A5C ?? ; ============================================================================= ; PhysicsRoutine_DA68 ; CPU address: $DA68 PRG offset: $1A68 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DA68: ldy #$00 ; CPU:$DA5E PRG:1A5E ?? lda RacketTargetX ; CPU:$DA60 PRG:1A60 ?? cmp #$50 ; CPU:$DA62 PRG:1A62 ?? bcs Flow_DA81 ; CPU:$DA64 PRG:1A64 ?? ldx #$32 ; CPU:$DA66 PRG:1A66 ?? lda CourtSide ; CPU:$DA68 PRG:1A68 ?? beq Flow_DA78 ; CPU:$DA6A PRG:1A6A ?? ldx #$28 ; CPU:$DA6C PRG:1A6C ?? Flow_DA78: stx PoseSequenceOffset ; CPU:$DA6E PRG:1A6E ?? lda #$01 ; CPU:$DA70 PRG:1A70 ?? sta PoseFrameTimer ; CPU:$DA72 PRG:1A72 ?? sty ObjectAnimationState ; CPU:$DA74 PRG:1A74 ?? rts ; CPU:$DA76 PRG:1A76 ?? Flow_DA81: iny ; CPU:$DA78 PRG:1A78 ?? lda BallHeight ; CPU:$DA7A PRG:1A7A ?? cmp #$50 ; CPU:$DA7C PRG:1A7C ?? bcc Flow_DA8E ; CPU:$DA7E PRG:1A7E ?? iny ; CPU:$DA80 PRG:1A80 ?? cmp #$88 ; CPU:$DA82 PRG:1A82 ?? bcc Flow_DA8E ; CPU:$DA84 PRG:1A84 ?? iny ; CPU:$DA86 PRG:1A86 ?? Flow_DA8E: tya ; CPU:$DA88 PRG:1A88 ?? tax ; CPU:$DA8A PRG:1A8A ?? dex ; CPU:$DA8C PRG:1A8C ?? lda CourtSide ; CPU:$DA8E PRG:1A8E ?? beq Flow_DA9B ; CPU:$DA90 PRG:1A90 ?? lda $DAA2,x ; CPU:$DA92 PRG:1A92 ?? jmp Flow_DA9E ; CPU:$DA94 PRG:1A94 ?? Flow_DA9B: lda $DAA5,x ; CPU:$DA96 PRG:1A96 ?? Flow_DA9E: tax ; CPU:$DA98 PRG:1A98 ?? jmp Flow_DA78 ; CPU:$DA9A PRG:1A9A ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1AA2-$1AA7. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- Player2CourtPositionTable: .byte $28, $50, $3C, $32, $58, $46 ; PRG $1AA2 / CPU $DAA2 ; CPU:$DA9C PRG:1A9C 28 50 3C 32 58 46 ; ============================================================================= ; PhysicsRoutine_DAA8 ; CPU address: $DAA8 PRG offset: $1AA8 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DAA8: lda RacketContactState ; CPU:$DAA2 PRG:1AA2 ?? beq Flow_DAC6 ; CPU:$DAA4 PRG:1AA4 ?? cmp #$01 ; CPU:$DAA6 PRG:1AA6 ?? beq Flow_DAB4 ; CPU:$DAA8 PRG:1AA8 ?? lda #$04 ; CPU:$DAAA PRG:1AAA ?? bne Flow_DAB6 ; CPU:$DAAC PRG:1AAC ?? Flow_DAB4: lda #$00 ; CPU:$DAAE PRG:1AAE ?? Flow_DAB6: ldy RacketTargetY ; CPU:$DAB0 PRG:1AB0 ?? cpy #$80 ; CPU:$DAB2 PRG:1AB2 ?? bcs Flow_DABF ; CPU:$DAB4 PRG:1AB4 ?? clc ; CPU:$DAB6 PRG:1AB6 ?? adc #$03 ; CPU:$DAB8 PRG:1AB8 ?? Flow_DABF: jsr PhysicsRoutine_DE0B ; CPU:$DABA PRG:1ABA ?? bne Flow_DAC6 ; CPU:$DABC PRG:1ABC ?? sta RacketContactState ; CPU:$DABE PRG:1ABE ?? Flow_DAC6: rts ; CPU:$DAC0 PRG:1AC0 ?? ; ============================================================================= ; PhysicsRoutine_DAC7 ; CPU address: $DAC7 PRG offset: $1AC7 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DAC7: lda ActiveObjectIndex ; CPU:$DAC2 PRG:1AC2 ?? beq Flow_DAD2 ; CPU:$DAC4 PRG:1AC4 ?? ldx $037C ; CPU:$DAC6 PRG:1AC6 ?? beq Flow_DAE6 ; CPU:$DAC8 PRG:1AC8 ?? bne Flow_DAD7 ; CPU:$DACA PRG:1ACA ?? Flow_DAD2: ldx $035C ; CPU:$DACC PRG:1ACC ?? beq Flow_DAE6 ; CPU:$DACE PRG:1ACE ?? Flow_DAD7: dex ; CPU:$DAD0 PRG:1AD0 ?? txa ; CPU:$DAD2 PRG:1AD2 ?? jsr PhysicsRoutine_DE0B ; CPU:$DAD4 PRG:1AD4 ?? bne Flow_DAE6 ; CPU:$DAD6 PRG:1AD6 ?? sta $035C ; CPU:$DAD8 PRG:1AD8 ?? sta $037C ; CPU:$DADA PRG:1ADA ?? sta BallContactFlags ; CPU:$DADC PRG:1ADC ?? Flow_DAE6: rts ; CPU:$DADE PRG:1ADE ?? ; ============================================================================= ; PhysicsRoutine_DAE7 ; CPU address: $DAE7 PRG offset: $1AE7 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DAE7: lda UmpireMessageId ; CPU:$DAE0 PRG:1AE0 ?? bne Flow_DB19 ; CPU:$DAE2 PRG:1AE2 ?? lda PlayerPreviousY ; CPU:$DAE4 PRG:1AE4 ?? cmp #$2C ; CPU:$DAE6 PRG:1AE6 ?? bcc Flow_DB19 ; CPU:$DAE8 PRG:1AE8 ?? lda #$0C ; CPU:$DAEA PRG:1AEA ?? ldx #$20 ; CPU:$DAEC PRG:1AEC ?? ldy GameMode ; CPU:$DAEE PRG:1AEE ?? beq Flow_DAFD ; CPU:$DAF0 PRG:1AF0 ?? lda #$0B ; CPU:$DAF2 PRG:1AF2 ?? ldx #$80 ; CPU:$DAF4 PRG:1AF4 ?? Flow_DAFD: cpx PlayerTargetXLo ; CPU:$DAF6 PRG:1AF6 ?? sbc PlayerTargetXHi ; CPU:$DAF8 PRG:1AF8 ?? bcs Flow_DB19 ; CPU:$DAFA PRG:1AFA ?? lda #$14 ; CPU:$DAFC PRG:1AFC ?? ldx #$00 ; CPU:$DAFE PRG:1AFE ?? ldy GameMode ; CPU:$DB00 PRG:1B00 ?? beq Flow_DB0F ; CPU:$DB02 PRG:1B02 ?? lda #$14 ; CPU:$DB04 PRG:1B04 ?? ldx #$A0 ; CPU:$DB06 PRG:1B06 ?? Flow_DB0F: cpx PlayerTargetXLo ; CPU:$DB08 PRG:1B08 ?? sbc PlayerTargetXHi ; CPU:$DB0A PRG:1B0A ?? bcc Flow_DB19 ; CPU:$DB0C PRG:1B0C ?? lda #$01 ; CPU:$DB0E PRG:1B0E ?? bne FlowEntry_DB1D ; CPU:$DB10 PRG:1B10 ?? Flow_DB19: lda #$00 ; CPU:$DB12 PRG:1B12 ?? sta ObjectAnimationFrame ; CPU:$DB14 PRG:1B14 ?? FlowEntry_DB1D: rts ; PRG $1B1D / CPU $DB1D ; CPU:$DB16 PRG:1B16 ?? ; ============================================================================= ; PhysicsRoutine_DB1E ; CPU address: $DB1E PRG offset: $1B1E ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DB1E: lda RacketContactState ; CPU:$DB18 PRG:1B18 ?? bne FlowEntry_DB81 ; CPU:$DB1A PRG:1B1A ?? lda ActiveObjectIndex ; CPU:$DB1C PRG:1B1C ?? bne Flow_DB36 ; CPU:$DB1E PRG:1B1E ?? ldy $035A ; CPU:$DB20 PRG:1B20 ?? bne Flow_DB31 ; CPU:$DB22 PRG:1B22 ?? bit BallTrajectoryFlags ; CPU:$DB24 PRG:1B24 ?? bvc Flow_DB78 ; CPU:$DB26 PRG:1B26 ?? bvs Flow_DB62 ; CPU:$DB28 PRG:1B28 ?? Flow_DB31: dey ; CPU:$DB2A PRG:1B2A ?? beq Flow_DB74 ; CPU:$DB2C PRG:1B2C ?? bne Flow_DB62 ; CPU:$DB2E PRG:1B2E ?? Flow_DB36: lda GameMode ; CPU:$DB30 PRG:1B30 ?? beq Flow_DB49 ; CPU:$DB32 PRG:1B32 ?? jsr RollRng ; CPU:$DB34 PRG:1B34 ?? cmp #$25 ; CPU:$DB36 PRG:1B36 ?? bcs Flow_DB78 ; CPU:$DB38 PRG:1B38 ?? lda RacketTargetX ; CPU:$DB3A PRG:1B3A ?? cmp #$50 ; CPU:$DB3C PRG:1B3C ?? bcc Flow_DB62 ; CPU:$DB3E PRG:1B3E ?? bcs Flow_DB74 ; CPU:$DB40 PRG:1B40 ?? Flow_DB49: ldx #$64 ; CPU:$DB42 PRG:1B42 ?? lda ServingPlayer ; CPU:$DB44 PRG:1B44 ?? cmp #$03 ; CPU:$DB46 PRG:1B46 ?? bcc Flow_DB53 ; CPU:$DB48 PRG:1B48 ?? ldx #$82 ; CPU:$DB4A PRG:1B4A ?? Flow_DB53: stx Zp10 ; CPU:$DB4C PRG:1B4C ?? jsr RollRng ; CPU:$DB4E PRG:1B4E ?? cmp Zp10 ; CPU:$DB50 PRG:1B50 ?? bcs Flow_DB6E ; CPU:$DB52 PRG:1B52 ?? lda RacketTargetX ; CPU:$DB54 PRG:1B54 ?? cmp #$50 ; CPU:$DB56 PRG:1B56 ?? bcs FlowEntry_DB81 ; CPU:$DB58 PRG:1B58 ?? Flow_DB62: inc RacketContactState ; CPU:$DB5A PRG:1B5A ?? lda #$10 ; CPU:$DB5C PRG:1B5C ?? sta RallyFlags ; CPU:$DB5E PRG:1B5E ?? lda #$0A ; CPU:$DB60 PRG:1B60 ?? jsr RenderRoutine_E021 ; CPU:$DB62 PRG:1B62 ?? rts ; CPU:$DB64 PRG:1B64 ?? Flow_DB6E: lda RacketTargetX ; CPU:$DB66 PRG:1B66 ?? cmp #$50 ; CPU:$DB68 PRG:1B68 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1B72-$1B73. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_DB72: .byte $90, $0D ; PRG $1B72 / CPU $DB72 ; CPU:$DB6A PRG:1B6A 90 0D Flow_DB74: inc RacketContactState ; CPU:$DB6C PRG:1B6C ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1B76-$1B77. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_DB76: .byte $E6, $CA ; PRG $1B76 / CPU $DB76 ; CPU:$DB6E PRG:1B6E E6 CA Flow_DB78: lda #$10 ; CPU:$DB70 PRG:1B70 ?? sta RallyFlags ; CPU:$DB72 PRG:1B72 ?? lda #$0F ; CPU:$DB74 PRG:1B74 ?? jsr RenderRoutine_E021 ; CPU:$DB76 PRG:1B76 ?? FlowEntry_DB81: rts ; PRG $1B81 / CPU $DB81 ; CPU:$DB78 PRG:1B78 ?? ; ============================================================================= ; PhysicsRoutine_DB82 ; CPU address: $DB82 PRG offset: $1B82 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DB82: lda PlayerAnimationId ; CPU:$DB7A PRG:1B7A ?? bne Flow_DBBF ; CPU:$DB7C PRG:1B7C ?? lda PlayerFacingDirection ; CPU:$DB7E PRG:1B7E ?? cmp #$01 ; CPU:$DB80 PRG:1B80 ?? bne Flow_DBC0 ; CPU:$DB82 PRG:1B82 ?? lda PoseSequenceOffset ; CPU:$DB84 PRG:1B84 ?? cmp #$27 ; CPU:$DB86 PRG:1B86 ?? bcs Flow_DBBF ; CPU:$DB88 PRG:1B88 ?? cmp #$09 ; CPU:$DB8A PRG:1B8A ?? bcc Flow_DBA4 ; CPU:$DB8C PRG:1B8C ?? cmp #$1D ; CPU:$DB8E PRG:1B8E ?? bcs Flow_DBAE ; CPU:$DB90 PRG:1B90 ?? ldy #$6A ; CPU:$DB92 PRG:1B92 ?? lda CourtSide ; CPU:$DB94 PRG:1B94 ?? bne Flow_DBBC ; CPU:$DB96 PRG:1B96 ?? ldy #$72 ; CPU:$DB98 PRG:1B98 ?? bne Flow_DBBC ; CPU:$DB9A PRG:1B9A ?? Flow_DBA4: ldy #$70 ; CPU:$DB9C PRG:1B9C ?? lda CourtSide ; CPU:$DB9E PRG:1B9E ?? beq Flow_DBBC ; CPU:$DBA0 PRG:1BA0 ?? ldy #$00 ; CPU:$DBA2 PRG:1BA2 ?? beq Flow_DBB6 ; CPU:$DBA4 PRG:1BA4 ?? Flow_DBAE: ldy #$68 ; CPU:$DBA6 PRG:1BA6 ?? lda CourtSide ; CPU:$DBA8 PRG:1BA8 ?? bne Flow_DBBC ; CPU:$DBAA PRG:1BAA ?? ldy #$1E ; CPU:$DBAC PRG:1BAC ?? Flow_DBB6: lda RallyFlags ; CPU:$DBAE PRG:1BAE ?? and #$0F ; CPU:$DBB0 PRG:1BB0 ?? bne Flow_DBBF ; CPU:$DBB2 PRG:1BB2 ?? Flow_DBBC: jmp Flow_DC0A ; CPU:$DBB4 PRG:1BB4 ?? Flow_DBBF: rts ; CPU:$DBB6 PRG:1BB6 ?? Flow_DBC0: lda PoseSequenceOffset ; CPU:$DBB8 PRG:1BB8 ?? cmp #$27 ; CPU:$DBBA PRG:1BBA ?? bcs FlowEntry_DC10 ; CPU:$DBBC PRG:1BBC ?? cmp #$09 ; CPU:$DBBE PRG:1BBE ?? bcc Flow_DBEA ; CPU:$DBC0 PRG:1BC0 ?? cmp #$1D ; CPU:$DBC2 PRG:1BC2 ?? bcs Flow_DBFA ; CPU:$DBC4 PRG:1BC4 ?? lda RallyFlags ; CPU:$DBC6 PRG:1BC6 ?? and #$0F ; CPU:$DBC8 PRG:1BC8 ?? beq PhysicsRoutine_DC11 ; CPU:$DBCA PRG:1BCA ?? ldy #$72 ; CPU:$DBCC PRG:1BCC ?? and #$03 ; CPU:$DBCE PRG:1BCE ?? beq Flow_DBE2 ; CPU:$DBD0 PRG:1BD0 ?? cmp #$01 ; CPU:$DBD2 PRG:1BD2 ?? beq Flow_DC0A ; CPU:$DBD4 PRG:1BD4 ?? Flow_DBDE: ldy #$6A ; CPU:$DBD6 PRG:1BD6 ?? bne Flow_DC0A ; CPU:$DBD8 PRG:1BD8 ?? Flow_DBE2: lda RacketTargetY ; CPU:$DBDA PRG:1BDA ?? cmp #$80 ; CPU:$DBDC PRG:1BDC ?? bcc Flow_DC0A ; CPU:$DBDE PRG:1BDE ?? bcs Flow_DBDE ; CPU:$DBE0 PRG:1BE0 ?? Flow_DBEA: ldy #$00 ; CPU:$DBE2 PRG:1BE2 ?? lda RallyFlags ; CPU:$DBE4 PRG:1BE4 ?? and #$0F ; CPU:$DBE6 PRG:1BE6 ?? beq Flow_DC0A ; CPU:$DBE8 PRG:1BE8 ?? ldy #$70 ; CPU:$DBEA PRG:1BEA ?? and #$01 ; CPU:$DBEC PRG:1BEC ?? bne Flow_DC0A ; CPU:$DBEE PRG:1BEE ?? beq FlowEntry_DC10 ; CPU:$DBF0 PRG:1BF0 ?? Flow_DBFA: ldy #$1E ; CPU:$DBF2 PRG:1BF2 ?? lda RallyFlags ; CPU:$DBF4 PRG:1BF4 ?? and #$0F ; CPU:$DBF6 PRG:1BF6 ?? beq Flow_DC0A ; CPU:$DBF8 PRG:1BF8 ?? ldy #$68 ; CPU:$DBFA PRG:1BFA ?? and #$02 ; CPU:$DBFC PRG:1BFC ?? bne Flow_DC0A ; CPU:$DBFE PRG:1BFE ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1C08-$1C09. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_DC08: .byte $F0, $06 ; PRG $1C08 / CPU $DC08 ; CPU:$DC00 PRG:1C00 F0 06 Flow_DC0A: sty PoseSequenceOffset ; CPU:$DC02 PRG:1C02 ?? lda #$00 ; CPU:$DC04 PRG:1C04 ?? sta PoseFrameTimer ; CPU:$DC06 PRG:1C06 ?? FlowEntry_DC10: rts ; PRG $1C10 / CPU $DC10 ; CPU:$DC08 PRG:1C08 ?? ; ============================================================================= ; PhysicsRoutine_DC11 ; CPU address: $DC11 PRG offset: $1C11 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DC11: ldx #$0A ; CPU:$DC0A PRG:1C0A ?? lda PoseSequenceOffset ; CPU:$DC0C PRG:1C0C ?? cmp #$13 ; CPU:$DC0E PRG:1C0E ?? bcc Flow_DC1B ; CPU:$DC10 PRG:1C10 ?? ldx #$14 ; CPU:$DC12 PRG:1C12 ?? Flow_DC1B: stx MathResultHi ; CPU:$DC14 PRG:1C14 ?? ldy #$0A ; CPU:$DC16 PRG:1C16 ?? lda RacketTargetY ; CPU:$DC18 PRG:1C18 ?? cmp #$80 ; CPU:$DC1A PRG:1C1A ?? bcs Flow_DC27 ; CPU:$DC1C PRG:1C1C ?? ldy #$14 ; CPU:$DC1E PRG:1C1E ?? Flow_DC27: cpy MathResultHi ; CPU:$DC20 PRG:1C20 ?? beq FlowEntry_DC10 ; CPU:$DC22 PRG:1C22 ?? bne Flow_DC0A ; CPU:$DC24 PRG:1C24 ?? ; ============================================================================= ; PhysicsRoutine_DC2D ; CPU address: $DC2D PRG offset: $1C2D ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DC2D: lda #$51 ; CPU:$DC26 PRG:1C26 ?? sta MathResultLo ; CPU:$DC28 PRG:1C28 ?? lda #$DE ; CPU:$DC2A PRG:1C2A ?? sta MathResultHi ; CPU:$DC2C PRG:1C2C ?? lda #$40 ; CPU:$DC2E PRG:1C2E ?? sta MathOperandLo ; CPU:$DC30 PRG:1C30 ?? lda #$00 ; CPU:$DC32 PRG:1C32 ?? sta MathOperandHi ; CPU:$DC34 PRG:1C34 ?? ldy ServingPlayer ; CPU:$DC36 PRG:1C36 ?? beq Flow_DC48 ; CPU:$DC38 PRG:1C38 ?? lda BallTrajectoryFlags ; CPU:$DC3A PRG:1C3A ?? and #$02 ; CPU:$DC3C PRG:1C3C ?? bne Flow_DC48 ; CPU:$DC3E PRG:1C3E ?? dey ; CPU:$DC40 PRG:1C40 ?? Flow_DC48: ldy ServingPlayer ; CPU:$DC42 PRG:1C42 ?? beq Flow_DC52 ; CPU:$DC44 PRG:1C44 ?? Flow_DC4C: jsr Add16BitZp12ToZp14 ; CPU:$DC46 PRG:1C46 ?? dey ; CPU:$DC48 PRG:1C48 ?? bne Flow_DC4C ; CPU:$DC4A PRG:1C4A ?? Flow_DC52: lda #$08 ; CPU:$DC4C PRG:1C4C ?? sta MathOperandLo ; CPU:$DC4E PRG:1C4E ?? jsr PhysicsRoutine_DC63 ; CPU:$DC50 PRG:1C50 ?? dex ; CPU:$DC52 PRG:1C52 ?? beq Flow_DC62 ; CPU:$DC54 PRG:1C54 ?? Flow_DC5C: jsr Add16BitZp12ToZp14 ; CPU:$DC56 PRG:1C56 ?? dex ; CPU:$DC58 PRG:1C58 ?? bne Flow_DC5C ; CPU:$DC5A PRG:1C5A ?? Flow_DC62: rts ; CPU:$DC5C PRG:1C5C ?? ; ============================================================================= ; PhysicsRoutine_DC63 ; CPU address: $DC63 PRG offset: $1C63 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DC63: ldy #$00 ; CPU:$DC5E PRG:1C5E ?? lda GameMode ; CPU:$DC60 PRG:1C60 ?? beq Flow_DC6F ; CPU:$DC62 PRG:1C62 ?? lda Zp40 ; CPU:$DC64 PRG:1C64 ?? beq Flow_DC6F ; CPU:$DC66 PRG:1C66 ?? ldy #$20 ; CPU:$DC68 PRG:1C68 ?? Flow_DC6F: lda $0308,y ; CPU:$DC6A PRG:1C6A ?? ldx #$01 ; CPU:$DC6C PRG:1C6C ?? cmp #$A0 ; CPU:$DC6E PRG:1C6E ?? bcc Flow_DC7A ; CPU:$DC70 PRG:1C70 ?? ldx #$05 ; CPU:$DC72 PRG:1C72 ?? Flow_DC7A: lda $0309,y ; CPU:$DC74 PRG:1C74 ?? cmp #$60 ; CPU:$DC76 PRG:1C76 ?? bcc FlowEntry_DC8C ; CPU:$DC78 PRG:1C78 ?? inx ; CPU:$DC7A PRG:1C7A ?? cmp #$80 ; CPU:$DC7C PRG:1C7C ?? bcc FlowEntry_DC8C ; CPU:$DC7E PRG:1C7E ?? inx ; CPU:$DC80 PRG:1C80 ?? cmp #$A0 ; CPU:$DC82 PRG:1C82 ?? bcc FlowEntry_DC8C ; CPU:$DC84 PRG:1C84 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1C8B-$1C8C. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_DC8B: .byte $E8 ; PRG $1C8B / CPU $DC8B ; CPU:$DC86 PRG:1C86 E8 FlowEntry_DC8C: rts ; PRG $1C8C / CPU $DC8C ; CPU:$DC87 PRG:1C87 ?? ; ============================================================================= ; PhysicsRoutine_DC8D ; CPU address: $DC8D PRG offset: $1C8D ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DC8D: lda RacketTargetX ; CPU:$DC89 PRG:1C89 ?? ldx #$01 ; CPU:$DC8B PRG:1C8B ?? cmp #$44 ; CPU:$DC8D PRG:1C8D ?? bcc Flow_DC97 ; CPU:$DC8F PRG:1C8F ?? ldx #$05 ; CPU:$DC91 PRG:1C91 ?? Flow_DC97: lda RacketTargetY ; CPU:$DC93 PRG:1C93 ?? cmp #$68 ; CPU:$DC95 PRG:1C95 ?? bcc Flow_DCA8 ; CPU:$DC97 PRG:1C97 ?? inx ; CPU:$DC99 PRG:1C99 ?? cmp #$80 ; CPU:$DC9B PRG:1C9B ?? bcc Flow_DCA8 ; CPU:$DC9D PRG:1C9D ?? inx ; CPU:$DC9F PRG:1C9F ?? cmp #$98 ; CPU:$DCA1 PRG:1CA1 ?? bcc Flow_DCA8 ; CPU:$DCA3 PRG:1CA3 ?? inx ; CPU:$DCA5 PRG:1CA5 ?? Flow_DCA8: stx BallContactFlags ; CPU:$DCA7 PRG:1CA7 ?? rts ; CPU:$DCA9 PRG:1CA9 ?? ; ============================================================================= ; PhysicsRoutine_DCAB ; CPU address: $DCAB PRG offset: $1CAB ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DCAB: ldy #$00 ; CPU:$DCAB PRG:1CAB ?? jsr RollRng ; CPU:$DCAD PRG:1CAD ?? cmp #$FF ; CPU:$DCAF PRG:1CAF ?? bne Flow_DCB6 ; CPU:$DCB1 PRG:1CB1 ?? sbc #$01 ; CPU:$DCB3 PRG:1CB3 ?? Flow_DCB6: cmp (MathResultLo),y ; CPU:$DCB5 PRG:1CB5 ?? iny ; CPU:$DCB7 PRG:1CB7 ?? bcs Flow_DCB6 ; CPU:$DCB9 PRG:1CB9 ?? dey ; CPU:$DCBB PRG:1CBB ?? tya ; CPU:$DCBD PRG:1CBD ?? asl a ; CPU:$DCBF PRG:1CBF ?? asl a ; CPU:$DCC1 PRG:1CC1 ?? tay ; CPU:$DCC3 PRG:1CC3 ?? lda $DD11,y ; CPU:$DCC5 PRG:1CC5 ?? sty Zp10 ; CPU:$DCC7 PRG:1CC7 ?? cmp #$40 ; CPU:$DCC9 PRG:1CC9 ?? beq Flow_DCF1 ; CPU:$DCCB PRG:1CCB ?? ldx #$A0 ; CPU:$DCCD PRG:1CCD ?? cpy #$00 ; CPU:$DCCF PRG:1CCF ?? beq Flow_DCD5 ; CPU:$DCD1 PRG:1CD1 ?? cpy #$10 ; CPU:$DCD3 PRG:1CD3 ?? beq Flow_DCD5 ; CPU:$DCD5 PRG:1CD5 ?? ldx #$60 ; CPU:$DCD7 PRG:1CD7 ?? Flow_DCD5: ldy GameMode ; CPU:$DCD9 PRG:1CD9 ?? bne Flow_DCDE ; CPU:$DCDB PRG:1CDB ?? stx MathOperandLo ; CPU:$DCDD PRG:1CDD ?? clc ; CPU:$DCDF PRG:1CDF ?? adc MathOperandLo ; CPU:$DCE1 PRG:1CE1 ?? Flow_DCDE: ldy ServingPlayer ; CPU:$DCE3 PRG:1CE3 ?? cpy #$03 ; CPU:$DCE5 PRG:1CE5 ?? bcc Flow_DCF1 ; CPU:$DCE7 PRG:1CE7 ?? ldy #$20 ; CPU:$DCE9 PRG:1CE9 ?? cpx #$A0 ; CPU:$DCEB PRG:1CEB ?? beq Flow_DCEC ; CPU:$DCED PRG:1CED ?? ldy #$E0 ; CPU:$DCEF PRG:1CEF ?? Flow_DCEC: sty MathOperandLo ; CPU:$DCF1 PRG:1CF1 ?? clc ; CPU:$DCF3 PRG:1CF3 ?? adc MathOperandLo ; CPU:$DCF5 PRG:1CF5 ?? Flow_DCF1: sta MathOperandLo ; CPU:$DCF7 PRG:1CF7 ?? ldy Zp10 ; CPU:$DCF9 PRG:1CF9 ?? lda $DD12,y ; CPU:$DCFB PRG:1CFB ?? sta MathOperandHi ; CPU:$DCFD PRG:1CFD ?? lda $DD13,y ; CPU:$DCFF PRG:1CFF ?? cpy #$10 ; CPU:$DD01 PRG:1D01 ?? bcc Flow_DD09 ; CPU:$DD03 PRG:1D03 ?? ldx ServingPlayer ; CPU:$DD05 PRG:1D05 ?? cpx #$03 ; CPU:$DD07 PRG:1D07 ?? bcc Flow_DD09 ; CPU:$DD09 PRG:1D09 ?? adc #$37 ; CPU:$DD0B PRG:1D0B ?? Flow_DD09: sta MathResultLo ; CPU:$DD0D PRG:1D0D ?? lda $DD14,y ; CPU:$DD0F PRG:1D0F ?? sta MathResultHi ; CPU:$DD11 PRG:1D11 ?? rts ; CPU:$DD13 PRG:1D13 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1D11-$1D30. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- ScoreStateTransitionTable: .byte $3F, $0C, $00, $0C, $40, $0E, $80, $0C, $40, $10, $80, $0C, $C1, $11, $00, $0C ; PRG $1D11 / CPU $DD11 ; CPU:$DD15 PRG:1D15 3F 0C 00 0C 40 0E 80 0C 40 10 80 0C C1 11 00 0C .byte $10, $0C, $58, $0A, $40, $0E, $58, $0A, $40, $10, $58, $0A, $F0, $11, $58, $0A ; PRG $1D21 / CPU $DD21 ; CPU:$DD25 PRG:1D25 10 0C 58 0A 40 0E 58 0A 40 10 58 0A F0 11 58 0A ; ============================================================================= ; PhysicsRoutine_DD31 ; CPU address: $DD31 PRG offset: $1D31 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DD31: jsr RollRng ; CPU:$DD35 PRG:1D35 ?? clc ; CPU:$DD37 PRG:1D37 ?? adc MathOperandLo ; CPU:$DD39 PRG:1D39 ?? sta PlayerTargetXLo ; CPU:$DD3B PRG:1D3B ?? lda $0502 ; CPU:$DD3D PRG:1D3D ?? and #$01 ; CPU:$DD3F PRG:1D3F ?? adc MathOperandHi ; CPU:$DD41 PRG:1D41 ?? sta PlayerTargetXHi ; CPU:$DD43 PRG:1D43 ?? lda $0503 ; CPU:$DD45 PRG:1D45 ?? clc ; CPU:$DD47 PRG:1D47 ?? adc MathResultLo ; CPU:$DD49 PRG:1D49 ?? sta PlayerTargetYLo ; CPU:$DD4B PRG:1D4B ?? lda $0500 ; CPU:$DD4D PRG:1D4D ?? and #$01 ; CPU:$DD4F PRG:1D4F ?? adc MathResultHi ; CPU:$DD51 PRG:1D51 ?? sta PlayerTargetYHi ; CPU:$DD53 PRG:1D53 ?? rts ; CPU:$DD55 PRG:1D55 ?? ; ============================================================================= ; PhysicsRoutine_DD54 ; CPU address: $DD54 PRG offset: $1D54 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DD54: lda BallHeight ; CPU:$DD57 PRG:1D57 ?? cmp #$B0 ; CPU:$DD59 PRG:1D59 ?? bcc Flow_DD5D ; CPU:$DD5B PRG:1D5B ?? jmp Flow_DDFA ; CPU:$DD5D PRG:1D5D ?? Flow_DD5D: lda #$00 ; CPU:$DD5F PRG:1D5F ?? sta PlayerActionType ; CPU:$DD61 PRG:1D61 ?? sta PlayerActionParameter ; CPU:$DD63 PRG:1D63 ?? sta MathResultHi ; CPU:$DD65 PRG:1D65 ?? ldx ObjectAnimationState ; CPU:$DD67 PRG:1D67 ?? beq Flow_DD7F ; CPU:$DD69 PRG:1D69 ?? dex ; CPU:$DD6B PRG:1D6B ?? lda $DD7C,x ; CPU:$DD6D PRG:1D6D ?? sta PlayerActionType ; CPU:$DD6F PRG:1D6F ?? cmp #$04 ; CPU:$DD71 PRG:1D71 ?? bne Flow_DD79 ; CPU:$DD73 PRG:1D73 ?? lda #$02 ; CPU:$DD75 PRG:1D75 ?? sta PlayerActionParameter ; CPU:$DD77 PRG:1D77 ?? bne Flow_DDEA ; CPU:$DD79 PRG:1D79 ?? Flow_DD79: jmp Flow_DDC5 ; CPU:$DD7B PRG:1D7B ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1D7C-$1D7E. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- ServingPlayerLookupTable: .byte $04, $01, $02 ; PRG $1D7C / CPU $DD7C ; CPU:$DD7D PRG:1D7D 04 01 02 Flow_DD7F: lda GameMode ; CPU:$DD80 PRG:1D80 ?? beq Flow_DDB3 ; CPU:$DD82 PRG:1D82 ?? lda $0328 ; CPU:$DD84 PRG:1D84 ?? cmp #$A0 ; CPU:$DD86 PRG:1D86 ?? bcs Flow_DD8E ; CPU:$DD88 PRG:1D88 ?? lda #$01 ; CPU:$DD8A PRG:1D8A ?? sta MathResultHi ; CPU:$DD8C PRG:1D8C ?? Flow_DD8E: ldy #$00 ; CPU:$DD8E PRG:1D8E ?? ldx $0308 ; CPU:$DD90 PRG:1D90 ?? cpx #$A0 ; CPU:$DD92 PRG:1D92 ?? bcs Flow_DD99 ; CPU:$DD94 PRG:1D94 ?? ldy #$01 ; CPU:$DD96 PRG:1D96 ?? Flow_DD99: jsr RollRng ; CPU:$DD98 PRG:1D98 ?? and #$03 ; CPU:$DD9A PRG:1D9A ?? tax ; CPU:$DD9C PRG:1D9C ?? tya ; CPU:$DD9E PRG:1D9E ?? ora MathResultHi ; CPU:$DDA0 PRG:1DA0 ?? beq Flow_DDD0 ; CPU:$DDA2 PRG:1DA2 ?? tya ; CPU:$DDA4 PRG:1DA4 ?? and MathResultHi ; CPU:$DDA6 PRG:1DA6 ?? beq Flow_DDAE ; CPU:$DDA8 PRG:1DA8 ?? txa ; CPU:$DDAA PRG:1DAA ?? bne Flow_DDC1 ; CPU:$DDAC PRG:1DAC ?? beq Flow_DDD0 ; CPU:$DDAE PRG:1DAE ?? Flow_DDAE: txa ; CPU:$DDB0 PRG:1DB0 ?? beq Flow_DDC1 ; CPU:$DDB2 PRG:1DB2 ?? bne Flow_DDD0 ; CPU:$DDB4 PRG:1DB4 ?? Flow_DDB3: lda $0308 ; CPU:$DDB6 PRG:1DB6 ?? cmp #$A0 ; CPU:$DDB8 PRG:1DB8 ?? bcs Flow_DDD0 ; CPU:$DDBA PRG:1DBA ?? lda $0503 ; CPU:$DDBC PRG:1DBC ?? and #$01 ; CPU:$DDBE PRG:1DBE ?? beq Flow_DDD0 ; CPU:$DDC0 PRG:1DC0 ?? Flow_DDC1: lda #$04 ; CPU:$DDC2 PRG:1DC2 ?? sta PlayerActionType ; CPU:$DDC4 PRG:1DC4 ?? Flow_DDC5: lda $0502 ; CPU:$DDC6 PRG:1DC6 ?? and #$01 ; CPU:$DDC8 PRG:1DC8 ?? beq Flow_DDD8 ; CPU:$DDCA PRG:1DCA ?? inc PlayerActionParameter ; CPU:$DDCC PRG:1DCC ?? bne Flow_DDD8 ; CPU:$DDCE PRG:1DCE ?? Flow_DDD0: lda PlayerTargetXHi ; CPU:$DDD0 PRG:1DD0 ?? cmp #$0D ; CPU:$DDD2 PRG:1DD2 ?? bcc Flow_DDD8 ; CPU:$DDD4 PRG:1DD4 ?? inc PlayerActionParameter ; CPU:$DDD6 PRG:1DD6 ?? Flow_DDD8: lda ComputerActionState ; CPU:$DDD8 PRG:1DD8 ?? beq Flow_DDEA ; CPU:$DDDA PRG:1DDA ?? ldx ServingPlayer ; CPU:$DDDC PRG:1DDC ?? jsr RollRng ; CPU:$DDDE PRG:1DDE ?? cmp $DE06,x ; CPU:$DDE0 PRG:1DE0 ?? bcs Flow_DDFA ; CPU:$DDE2 PRG:1DE2 ?? lda #$00 ; CPU:$DDE4 PRG:1DE4 ?? sta ComputerActionState ; CPU:$DDE6 PRG:1DE6 ?? Flow_DDEA: jsr RollRng ; CPU:$DDE8 PRG:1DE8 ?? ldy #$00 ; CPU:$DDEA PRG:1DEA ?? ldx ServingPlayer ; CPU:$DDEC PRG:1DEC ?? cmp $DE01,x ; CPU:$DDEE PRG:1DEE ?? bcc Flow_DDF7 ; CPU:$DDF0 PRG:1DF0 ?? iny ; CPU:$DDF2 PRG:1DF2 ?? Flow_DDF7: sty PlayerActionState ; CPU:$DDF4 PRG:1DF4 ?? rts ; PRG $1DF9 / CPU $DDF9 ; CPU:$DDF6 PRG:1DF6 ?? Flow_DDFA: lda #$00 ; CPU:$DDF8 PRG:1DF8 ?? sta ObjectAnimationFrame ; CPU:$DDFA PRG:1DFA ?? sta ComputerActionState ; CPU:$DDFC PRG:1DFC ?? rts ; CPU:$DDFE PRG:1DFE ?? ComputerActionProbabilityTable: .byte $20, $20, $0E, $02, $01, $30, $50, $70, $90, $B0 ; PRG $1E01 / CPU $DE01 ; CPU:$DE00 PRG:1E00 20 20 0E 02 01 30 50 70 90 B0 ; ============================================================================= ; PhysicsRoutine_DE0B ; CPU address: $DE0B PRG offset: $1E0B ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= PhysicsRoutine_DE0B: asl a ; CPU:$DE0A PRG:1E0A ?? tay ; CPU:$DE0C PRG:1E0C ?? lda #$41 ; CPU:$DE0E PRG:1E0E ?? sta Zp10 ; CPU:$DE10 PRG:1E10 ?? lda #$DE ; CPU:$DE12 PRG:1E12 ?? sta Zp11 ; CPU:$DE14 PRG:1E14 ?? lda (Zp10),y ; CPU:$DE16 PRG:1E16 ?? cmp RacketTargetX ; CPU:$DE18 PRG:1E18 ?? beq Flow_DE25 ; CPU:$DE1A PRG:1E1A ?? bcs Flow_DE21 ; CPU:$DE1C PRG:1E1C ?? lda #$08 ; CPU:$DE1E PRG:1E1E ?? bne Flow_DE27 ; CPU:$DE20 PRG:1E20 ?? Flow_DE21: lda #$04 ; CPU:$DE22 PRG:1E22 ?? bne Flow_DE27 ; CPU:$DE24 PRG:1E24 ?? Flow_DE25: lda #$00 ; CPU:$DE26 PRG:1E26 ?? Flow_DE27: sta MathResultHi ; CPU:$DE28 PRG:1E28 ?? iny ; CPU:$DE2A PRG:1E2A ?? lda (Zp10),y ; CPU:$DE2C PRG:1E2C ?? cmp RacketTargetY ; CPU:$DE2E PRG:1E2E ?? beq Flow_DE3A ; CPU:$DE30 PRG:1E30 ?? bcs Flow_DE36 ; CPU:$DE32 PRG:1E32 ?? lda #$02 ; CPU:$DE34 PRG:1E34 ?? bne Flow_DE3C ; CPU:$DE36 PRG:1E36 ?? Flow_DE36: lda #$01 ; CPU:$DE38 PRG:1E38 ?? bne Flow_DE3C ; CPU:$DE3A PRG:1E3A ?? Flow_DE3A: lda #$00 ; CPU:$DE3C PRG:1E3C ?? Flow_DE3C: ora MathResultHi ; CPU:$DE3E PRG:1E3E ?? sta RallyFlags ; CPU:$DE40 PRG:1E40 ?? rts ; CPU:$DE42 PRG:1E42 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $1E41-$1F8E. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- PhysicsTable_DE41: .byte $5C, $8C, $5C, $9C, $5C, $64, $5C, $74, $2C, $8C, $2C, $A0, $2C, $60, $2C, $74 ; PRG $1E41 / CPU $DE41 ; CPU:$DE44 PRG:1E44 5C 8C 5C 9C 5C 64 5C 74 2C 8C 2C A0 2C 60 2C 74 .byte $34, $67, $67, $67, $CD, $FF, $FF, $FF, $00, $34, $67, $67, $67, $CD, $FF, $FF ; PRG $1E51 / CPU $DE51 ; CPU:$DE54 PRG:1E54 34 67 67 67 CD FF FF FF 00 34 67 67 67 CD FF FF .byte $00, $34, $67, $67, $67, $9A, $FF, $FF, $00, $00, $34, $67, $67, $67, $9A, $FF ; PRG $1E61 / CPU $DE61 ; CPU:$DE64 PRG:1E64 00 34 67 67 67 9A FF FF 00 00 34 67 67 67 9A FF .byte $1A, $1A, $1A, $1A, $B3, $E6, $FF, $FF, $00, $1A, $1A, $1A, $34, $CD, $FF, $FF ; PRG $1E71 / CPU $DE71 ; CPU:$DE74 PRG:1E74 1A 1A 1A 1A B3 E6 FF FF 00 1A 1A 1A 34 CD FF FF .byte $00, $00, $1A, $1A, $1A, $4D, $E6, $FF, $00, $00, $00, $1A, $1A, $34, $67, $FF ; PRG $1E81 / CPU $DE81 ; CPU:$DE84 PRG:1E84 00 00 1A 1A 1A 4D E6 FF 00 00 00 1A 1A 34 67 FF .byte $34, $67, $80, $80, $CD, $FF, $FF, $FF, $00, $34, $67, $80, $80, $CD, $FF, $FF ; PRG $1E91 / CPU $DE91 ; CPU:$DE94 PRG:1E94 34 67 80 80 CD FF FF FF 00 34 67 80 80 CD FF FF .byte $1A, $4D, $80, $80, $80, $B3, $FF, $FF, $00, $1A, $4D, $80, $80, $80, $B3, $FF ; PRG $1EA1 / CPU $DEA1 ; CPU:$DEA4 PRG:1EA4 1A 4D 80 80 80 B3 FF FF 00 1A 4D 80 80 80 B3 FF .byte $1A, $34, $34, $34, $B3, $E6, $FF, $FF, $00, $1A, $34, $34, $4D, $CD, $FF, $FF ; PRG $1EB1 / CPU $DEB1 ; CPU:$DEB4 PRG:1EB4 1A 34 34 34 B3 E6 FF FF 00 1A 34 34 4D CD FF FF .byte $00, $1A, $34, $34, $34, $67, $E6, $FF, $00, $00, $1A, $34, $34, $4D, $80, $FF ; PRG $1EC1 / CPU $DEC1 ; CPU:$DEC4 PRG:1EC4 00 1A 34 34 34 67 E6 FF 00 00 1A 34 34 4D 80 FF .byte $34, $67, $80, $80, $B3, $E6, $FF, $FF, $00, $34, $67, $80, $9A, $CD, $FF, $FF ; PRG $1ED1 / CPU $DED1 ; CPU:$DED4 PRG:1ED4 34 67 80 80 B3 E6 FF FF 00 34 67 80 9A CD FF FF .byte $1A, $4D, $80, $80, $80, $B3, $E6, $FF, $00, $1A, $4D, $80, $80, $9A, $CD, $FF ; PRG $1EE1 / CPU $DEE1 ; CPU:$DEE4 PRG:1EE4 1A 4D 80 80 80 B3 E6 FF 00 1A 4D 80 80 9A CD FF .byte $00, $1A, $34, $34, $9A, $CD, $E6, $FF, $00, $1A, $34, $34, $4D, $B3, $E6, $FF ; PRG $1EF1 / CPU $DEF1 ; CPU:$DEF4 PRG:1EF4 00 1A 34 34 9A CD E6 FF 00 1A 34 34 4D B3 E6 FF .byte $00, $1A, $34, $34, $4D, $80, $E6, $FF, $00, $1A, $34, $34, $4D, $67, $FF, $34 ; PRG $1F01 / CPU $DF01 ; CPU:$DF04 PRG:1F04 00 1A 34 34 4D 80 E6 FF 00 1A 34 34 4D 67 FF 34 .byte $67, $80, $80, $B3, $E6, $FF, $FF, $00, $34, $67, $80, $9A, $CD, $FF, $FF, $1A ; PRG $1F11 / CPU $DF11 ; CPU:$DF14 PRG:1F14 67 80 80 B3 E6 FF FF 00 34 67 80 9A CD FF FF 1A .byte $4D, $80, $80, $80, $B3, $FF, $00, $1A, $4D, $80, $80, $9A, $CD, $FF, $1A, $34 ; PRG $1F21 / CPU $DF21 ; CPU:$DF24 PRG:1F24 4D 80 80 80 B3 FF 00 1A 4D 80 80 9A CD FF 1A 34 .byte $4D, $4D, $9A, $CD, $E6, $FF, $1A, $34, $4D, $4D, $67, $B3, $E6, $FF, $00, $1A ; PRG $1F31 / CPU $DF31 ; CPU:$DF34 PRG:1F34 4D 4D 9A CD E6 FF 1A 34 4D 4D 67 B3 E6 FF 00 1A .byte $34, $4D, $67, $9A, $E6, $FF, $00, $1A, $34, $4D, $67, $80, $B3, $FF, $34, $4D ; PRG $1F41 / CPU $DF41 ; CPU:$DF44 PRG:1F44 34 4D 67 9A E6 FF 00 1A 34 4D 67 80 B3 FF 34 4D .byte $67, $80, $B3, $CD, $E6, $FF, $1A, $4D, $67, $80, $9A, $CD, $E6, $FF, $1A, $34 ; PRG $1F51 / CPU $DF51 ; CPU:$DF54 PRG:1F54 67 80 B3 CD E6 FF 1A 4D 67 80 9A CD E6 FF 1A 34 .byte $67, $80, $9A, $B3, $E6, $FF, $1A, $34, $4D, $80, $9A, $B3, $CD, $FF, $1A, $34 ; PRG $1F61 / CPU $DF61 ; CPU:$DF64 PRG:1F64 67 80 9A B3 E6 FF 1A 34 4D 80 9A B3 CD FF 1A 34 .byte $4D, $67, $9A, $B3, $CD, $FF, $1A, $34, $4D, $67, $80, $B3, $CD, $FF, $1A, $34 ; PRG $1F71 / CPU $DF71 ; CPU:$DF74 PRG:1F74 4D 67 9A B3 CD FF 1A 34 4D 67 80 B3 CD FF 1A 34 .byte $4D, $67, $9A, $B3, $E6, $FF, $1A, $34, $4D, $67, $9A, $B3, $CD, $FF ; PRG $1F81 / CPU $DF81 ; CPU:$DF84 PRG:1F84 4D 67 9A B3 E6 FF 1A 34 4D 67 9A B3 CD FF ; ============================================================================= ; RenderRoutine_DF8F ; CPU address: $DF8F PRG offset: $1F8F ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_DF8F: lda #$00 ; CPU:$DF92 PRG:1F92 ?? sta ObjectAnimationFrame ; CPU:$DF94 PRG:1F94 ?? lda RacketTargetX ; CPU:$DF96 PRG:1F96 ?? bit BallTrajectoryFlags ; CPU:$DF98 PRG:1F98 ?? bvc Flow_DF9D ; CPU:$DF9A PRG:1F9A ?? cmp #$44 ; CPU:$DF9C PRG:1F9C ?? bcs Flow_DFF4 ; CPU:$DF9E PRG:1F9E ?? Flow_DF9D: cmp #$50 ; CPU:$DFA0 PRG:1FA0 ?? bcs Flow_DFDF ; CPU:$DFA2 PRG:1FA2 ?? lda RacketTargetY ; CPU:$DFA4 PRG:1FA4 ?? sec ; CPU:$DFA6 PRG:1FA6 ?? sbc PlayerPreviousX ; CPU:$DFA8 PRG:1FA8 ?? bcs Flow_DFAC ; CPU:$DFAA PRG:1FAA ?? eor #$FF ; CPU:$DFAC PRG:1FAC ?? adc #$01 ; CPU:$DFAE PRG:1FAE ?? Flow_DFAC: sta MathResultHi ; CPU:$DFB0 PRG:1FB0 ?? ldx ServingPlayer ; CPU:$DFB2 PRG:1FB2 ?? lda BallTrajectoryFlags ; CPU:$DFB4 PRG:1FB4 ?? and #$02 ; CPU:$DFB6 PRG:1FB6 ?? beq Flow_DFB9 ; CPU:$DFB8 PRG:1FB8 ?? clc ; CPU:$DFBA PRG:1FBA ?? adc #$05 ; CPU:$DFBC PRG:1FBC ?? Flow_DFB9: txa ; CPU:$DFBE PRG:1FBE ?? tay ; CPU:$DFC0 PRG:1FC0 ?? asl a ; CPU:$DFC2 PRG:1FC2 ?? tax ; CPU:$DFC4 PRG:1FC4 ?? lda $E044,x ; CPU:$DFC6 PRG:1FC6 ?? inx ; CPU:$DFC8 PRG:1FC8 ?? cmp MathResultHi ; CPU:$DFCA PRG:1FCA ?? bcc Flow_DFF4 ; CPU:$DFCC PRG:1FCC ?? lda RacketTargetX ; CPU:$DFCE PRG:1FCE ?? adc $E044,x ; CPU:$DFD0 PRG:1FD0 ?? sbc $E058,y ; CPU:$DFD2 PRG:1FD2 ?? sec ; CPU:$DFD4 PRG:1FD4 ?? sbc PlayerPreviousY ; CPU:$DFD6 PRG:1FD6 ?? bcs Flow_DFD6 ; CPU:$DFD8 PRG:1FD8 ?? eor #$FF ; CPU:$DFDA PRG:1FDA ?? adc #$01 ; CPU:$DFDC PRG:1FDC ?? Flow_DFD6: sta MathResultHi ; CPU:$DFDE PRG:1FDE ?? lda $E044,x ; CPU:$DFE0 PRG:1FE0 ?? cmp MathResultHi ; CPU:$DFE2 PRG:1FE2 ?? bcc Flow_DFF4 ; CPU:$DFE4 PRG:1FE4 ?? Flow_DFDF: lda ActiveObjectIndex ; CPU:$DFE6 PRG:1FE6 ?? bne Flow_DFF2 ; CPU:$DFE8 PRG:1FE8 ?? lda $0359 ; CPU:$DFEA PRG:1FEA ?? beq Flow_DFF2 ; CPU:$DFEC PRG:1FEC ?? jsr RollRng ; CPU:$DFEE PRG:1FEE ?? cmp #$A0 ; CPU:$DFF0 PRG:1FF0 ?? bcc Flow_DFF4 ; CPU:$DFF2 PRG:1FF2 ?? dec $0359 ; CPU:$DFF4 PRG:1FF4 ?? Flow_DFF2: inc ObjectAnimationFrame ; CPU:$DFF6 PRG:1FF6 ?? Flow_DFF4: rts ; CPU:$DFF8 PRG:1FF8 ?? ; ============================================================================= ; RenderRoutine_DFF5 ; CPU address: $DFF5 PRG offset: $1FF5 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_DFF5: lda PlayerActionType ; CPU:$DFFA PRG:1FFA ?? bne Flow_E020 ; CPU:$DFFC PRG:1FFC ?? lda ServingPlayer ; CPU:$DFFE PRG:1FFE ?? cmp #$03 ; CPU:$E000 PRG:2000 ?? bcc Flow_E020 ; CPU:$E002 PRG:2002 ?? ldx #$00 ; CPU:$E004 PRG:2004 ?? ldy #$01 ; CPU:$E006 PRG:2006 ?? lda ObjectAnimationFrame ; CPU:$E008 PRG:2008 ?? bne Flow_E014 ; CPU:$E00A PRG:200A ?? lda BallContactFlags ; CPU:$E00C PRG:200C ?? cmp #$05 ; CPU:$E00E PRG:200E ?? bcc Flow_E020 ; CPU:$E010 PRG:2010 ?? sty ObjectAnimationFrame ; CPU:$E012 PRG:2012 ?? stx $0359 ; CPU:$E014 PRG:2014 ?? bcs Flow_E020 ; CPU:$E016 PRG:2016 ?? Flow_E014: lda $035C ; CPU:$E018 PRG:2018 ?? cmp #$05 ; CPU:$E01A PRG:201A ?? bcc Flow_E020 ; CPU:$E01C PRG:201C ?? sty $0359 ; CPU:$E01E PRG:201E ?? stx ObjectAnimationFrame ; CPU:$E020 PRG:2020 ?? Flow_E020: rts ; CPU:$E022 PRG:2022 ?? ; ============================================================================= ; RenderRoutine_E021 ; CPU address: $E021 PRG offset: $2021 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E021: clc ; CPU:$E024 PRG:2024 ?? adc ServingPlayer ; CPU:$E026 PRG:2026 ?? tax ; CPU:$E028 PRG:2028 ?? lda $E02B,x ; CPU:$E02A PRG:202A ?? sta RallyPhase ; CPU:$E02C PRG:202C ?? rts ; CPU:$E02E PRG:202E ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $202B-$2075. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- CourtObjectMetaspriteData: .byte $04, $06, $08, $0B, $0E, $03, $05, $06, $08, $0B, $06, $07, $08, $09, $0A, $04 ; PRG $202B / CPU $E02B ; CPU:$E030 PRG:2030 04 06 08 0B 0E 03 05 06 08 0B 06 07 08 09 0A 04 .byte $05, $06, $08, $0A, $01, $02, $02, $04, $06, $20, $20, $34, $24, $40, $28, $48 ; PRG $203B / CPU $E03B ; CPU:$E040 PRG:2040 05 06 08 0A 01 02 02 04 06 20 20 34 24 40 28 48 .byte $2C, $50, $32, $30, $24, $40, $28, $50, $2C, $60, $32, $80, $38, $08, $0E, $1C ; PRG $204B / CPU $E04B ; CPU:$E050 PRG:2050 2C 50 32 30 24 40 28 50 2C 60 32 80 38 08 0E 1C .byte $24, $2C, $0A, $10, $1C, $24, $2C, $A5, $15, $85, $9B, $A5, $14, $85, $9C, $20 ; PRG $205B / CPU $E05B ; CPU:$E060 PRG:2060 24 2C 0A 10 1C 24 2C A5 15 85 9B A5 14 85 9C 20 .byte $F3, $C6, $A5, $9B, $85, $15, $A5, $9C, $85, $14, $60 ; PRG $206B / CPU $E06B ; CPU:$E070 PRG:2070 F3 C6 A5 9B 85 15 A5 9C 85 14 60 ; ============================================================================= ; RenderRoutine_E076 ; CPU address: $E076 PRG offset: $2076 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E076: lda #$80 ; CPU:$E07B PRG:207B ?? sta ObjectDataPointerLo ; CPU:$E07D PRG:207D ?? lda #$03 ; CPU:$E07F PRG:207F ?? sta ObjectDataPointerHi ; CPU:$E081 PRG:2081 ?? lda #$00 ; CPU:$E083 PRG:2083 ?? sta ObjectDataOffset ; CPU:$E085 PRG:2085 ?? jsr EngineRoutine_C1F3 ; CPU:$E087 PRG:2087 ?? lda AnimationFrame ; CPU:$E089 PRG:2089 ?? beq Flow_E0BA ; CPU:$E08B PRG:208B ?? jsr RenderRoutine_E146 ; CPU:$E08D PRG:208D ?? jsr EngineRoutine_C21C ; CPU:$E08F PRG:208F ?? jsr EngineRoutine_C20E ; CPU:$E091 PRG:2091 ?? jsr EngineRoutine_C206 ; CPU:$E093 PRG:2093 ?? jsr EngineRoutine_C1F3 ; CPU:$E095 PRG:2095 ?? jsr EngineRoutine_C499 ; CPU:$E097 PRG:2097 ?? lda $0386 ; CPU:$E099 PRG:2099 ?? cmp #$3E ; CPU:$E09B PRG:209B ?? beq Flow_E0AC ; CPU:$E09D PRG:209D ?? cmp #$2F ; CPU:$E09F PRG:209F ?? clc ; CPU:$E0A1 PRG:20A1 ?? bne Flow_E0A8 ; CPU:$E0A3 PRG:20A3 ?? sec ; CPU:$E0A5 PRG:20A5 ?? Flow_E0A8: adc #$04 ; CPU:$E0A7 PRG:20A7 ?? sta PlayerPoseId ; CPU:$E0A9 PRG:20A9 ?? Flow_E0AC: lda RacketTargetX ; CPU:$E0AB PRG:20AB ?? sta BallTargetOffset ; CPU:$E0AD PRG:20AD ?? lda RacketTargetY ; CPU:$E0AF PRG:20AF ?? sta BallHeightReference ; CPU:$E0B1 PRG:20B1 ?? jsr EngineRoutine_C21C ; CPU:$E0B3 PRG:20B3 ?? jsr EngineRoutine_C20E ; CPU:$E0B5 PRG:20B5 ?? Flow_E0BA: rts ; CPU:$E0B7 PRG:20B7 ?? ; ============================================================================= ; RenderRoutine_E0BB ; CPU address: $E0BB PRG offset: $20BB ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E0BB: lda PlayerActionState ; CPU:$E0B9 PRG:20B9 ?? cmp #$01 ; CPU:$E0BB PRG:20BB ?? bne Flow_E0D5 ; CPU:$E0BD PRG:20BD ?? lda PlayerPoseId ; CPU:$E0BF PRG:20BF ?? cmp #$3E ; CPU:$E0C1 PRG:20C1 ?? beq Flow_E0D1 ; CPU:$E0C3 PRG:20C3 ?? lda RallyPhase ; CPU:$E0C5 PRG:20C5 ?? cmp #$03 ; CPU:$E0C7 PRG:20C7 ?? bcs Flow_E0D1 ; CPU:$E0C9 PRG:20C9 ?? lda UmpireMessageId ; CPU:$E0CB PRG:20CB ?? beq Flow_E0D5 ; CPU:$E0CD PRG:20CD ?? Flow_E0D1: ldy #$00 ; CPU:$E0CF PRG:20CF ?? sty PlayerActionState ; CPU:$E0D1 PRG:20D1 ?? Flow_E0D5: rts ; CPU:$E0D3 PRG:20D3 ?? ; ============================================================================= ; RenderRoutine_E0D6 ; CPU address: $E0D6 PRG offset: $20D6 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E0D6: lda $03A8 ; CPU:$E0D5 PRG:20D5 ?? sta PlayerYPosition ; CPU:$E0D7 PRG:20D7 ?? lda $03A9 ; CPU:$E0D9 PRG:20D9 ?? sta PlayerXPosition ; CPU:$E0DB PRG:20DB ?? lda Player1YSubpixel ; CPU:$E0DD PRG:20DD ?? pha ; CPU:$E0DF PRG:20DF ?? lda Player1YPosition ; CPU:$E0E1 PRG:20E1 ?? pha ; CPU:$E0E3 PRG:20E3 ?? lda Player2YSubpixel ; CPU:$E0E5 PRG:20E5 ?? pha ; CPU:$E0E7 PRG:20E7 ?? lda Player2YPosition ; CPU:$E0E9 PRG:20E9 ?? pha ; CPU:$E0EB PRG:20EB ?? lda RacketTargetX ; CPU:$E0ED PRG:20ED ?? pha ; CPU:$E0EF PRG:20EF ?? lda RacketTargetY ; CPU:$E0F1 PRG:20F1 ?? pha ; CPU:$E0F3 PRG:20F3 ?? lda Player1XSubpixel ; CPU:$E0F5 PRG:20F5 ?? sta MathVectorYHi ; CPU:$E0F7 PRG:20F7 ?? lda #$00 ; CPU:$E0F9 PRG:20F9 ?? sta MathVectorYLo ; CPU:$E0FB PRG:20FB ?? sta MathVectorXHi ; CPU:$E0FD PRG:20FD ?? sta ProjectedXLo ; CPU:$E0FF PRG:20FF ?? sta ProjectedXHi ; CPU:$E101 PRG:2101 ?? jsr EngineRoutine_C6ED ; CPU:$E103 PRG:2103 ?? lda MathVectorYHi ; CPU:$E105 PRG:2105 ?? sta MathVectorXLo ; CPU:$E107 PRG:2107 ?? lda WorkPtrLo ; CPU:$E109 PRG:2109 ?? sta ProjectedYLo ; CPU:$E10B PRG:210B ?? lda WorkPtrHi ; CPU:$E10D PRG:210D ?? sta ProjectedYHi ; CPU:$E10F PRG:210F ?? jsr EngineRoutine_C62B ; CPU:$E111 PRG:2111 ?? jsr MatchRoutine_C705 ; CPU:$E113 PRG:2113 ?? lda PlayerTargetXLo ; CPU:$E115 PRG:2115 ?? clc ; CPU:$E117 PRG:2117 ?? adc MathVectorYHi ; CPU:$E119 PRG:2119 ?? sta Player1YSubpixel ; CPU:$E11B PRG:211B ?? lda PlayerTargetXHi ; CPU:$E11D PRG:211D ?? sta Player1YPosition ; CPU:$E11F PRG:211F ?? lda PlayerTargetYLo ; CPU:$E121 PRG:2121 ?? sta Player2YSubpixel ; CPU:$E123 PRG:2123 ?? lda PlayerTargetYHi ; CPU:$E125 PRG:2125 ?? sta Player2YPosition ; CPU:$E127 PRG:2127 ?? jsr EngineRoutine_C499 ; CPU:$E129 PRG:2129 ?? lda RacketTargetX ; CPU:$E12B PRG:212B ?? sta PlayerPreviousY ; CPU:$E12D PRG:212D ?? lda RacketTargetY ; CPU:$E12F PRG:212F ?? sta PlayerPreviousX ; CPU:$E131 PRG:2131 ?? pla ; CPU:$E133 PRG:2133 ?? sta RacketTargetY ; CPU:$E135 PRG:2135 ?? pla ; CPU:$E137 PRG:2137 ?? sta RacketTargetX ; CPU:$E139 PRG:2139 ?? pla ; CPU:$E13B PRG:213B ?? sta Player2YPosition ; CPU:$E13D PRG:213D ?? pla ; CPU:$E13F PRG:213F ?? sta Player2YSubpixel ; CPU:$E141 PRG:2141 ?? pla ; CPU:$E143 PRG:2143 ?? sta Player1YPosition ; CPU:$E145 PRG:2145 ?? pla ; CPU:$E147 PRG:2147 ?? sta Player1YSubpixel ; CPU:$E149 PRG:2149 ?? rts ; PRG $2145 / CPU $E145 ; CPU:$E14B PRG:214B ?? ; ============================================================================= ; RenderRoutine_E146 ; CPU address: $E146 PRG offset: $2146 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E146: jsr RenderRoutine_E0BB ; CPU:$E14D PRG:214D ?? lda NetAnimationTimer ; CPU:$E14F PRG:214F ?? beq Flow_E14F ; CPU:$E151 PRG:2151 ?? dec NetAnimationTimer ; CPU:$E153 PRG:2153 ?? Flow_E14F: lda PlayerActionState ; CPU:$E155 PRG:2155 ?? bne Flow_E197 ; CPU:$E157 PRG:2157 ?? ldy #$01 ; CPU:$E159 PRG:2159 ?? lda Player2XPosition ; CPU:$E15B PRG:215B ?? bne Flow_E15D ; CPU:$E15D PRG:215D ?? ldy #$00 ; CPU:$E15F PRG:215F ?? beq Flow_E161 ; CPU:$E161 PRG:2161 ?? Flow_E15D: bpl Flow_E161 ; CPU:$E163 PRG:2163 ?? ldy #$FF ; CPU:$E165 PRG:2165 ?? Flow_E161: sty PlayerFacingDirection ; CPU:$E167 PRG:2167 ?? sty BallAnimationTimer ; CPU:$E169 PRG:2169 ?? jsr IntegrateObjectMotion ; CPU:$E16B PRG:216B ?? lda RacketTargetY ; CPU:$E16D PRG:216D ?? sta ObjectAnimationFrame ; CPU:$E16F PRG:216F ?? jsr EngineRoutine_C478 ; CPU:$E171 PRG:2171 ?? lda Player1XPosition ; CPU:$E173 PRG:2173 ?? bpl Flow_E18A ; CPU:$E175 PRG:2175 ?? lda RacketTargetY ; CPU:$E177 PRG:2177 ?? bpl Flow_E18A ; CPU:$E179 PRG:2179 ?? lda ObjectAnimationFrame ; CPU:$E17B PRG:217B ?? bmi Flow_E18A ; CPU:$E17D PRG:217D ?? lda #$00 ; CPU:$E17F PRG:217F ?? sta RacketTargetY ; CPU:$E181 PRG:2181 ?? sta Player1XSubpixel ; CPU:$E183 PRG:2183 ?? sta Player1XPosition ; CPU:$E185 PRG:2185 ?? lda #$3E ; CPU:$E187 PRG:2187 ?? sta PlayerPoseId ; CPU:$E189 PRG:2189 ?? sta $03A6 ; CPU:$E18B PRG:218B ?? Flow_E18A: jsr RenderRoutine_E365 ; CPU:$E18D PRG:218D ?? jsr RenderRoutine_E422 ; CPU:$E18F PRG:218F ?? jsr RenderRoutine_E4D0 ; CPU:$E191 PRG:2191 ?? jsr RenderRoutine_E513 ; CPU:$E193 PRG:2193 ?? rts ; CPU:$E195 PRG:2195 ?? Flow_E197: ldy #$00 ; CPU:$E197 PRG:2197 ?? sty PlayerActionState ; CPU:$E199 PRG:2199 ?? sty PlayerFacingDirection ; CPU:$E19B PRG:219B ?? cmp #$01 ; CPU:$E19D PRG:219D ?? bne Flow_E1A4 ; CPU:$E19F PRG:219F ?? jmp Flow_E23B ; CPU:$E1A1 PRG:21A1 ?? Flow_E1A4: lda NetAnimationTimer ; CPU:$E1A3 PRG:21A3 ?? beq Flow_E1A9 ; CPU:$E1A5 PRG:21A5 ?? rts ; CPU:$E1A7 PRG:21A7 ?? Flow_E1A9: lda #$05 ; CPU:$E1A9 PRG:21A9 ?? sta NetAnimationTimer ; CPU:$E1AB PRG:21AB ?? lda #$02 ; CPU:$E1AD PRG:21AD ?? sta AudioRequestFlags3 ; CPU:$E1AF PRG:21AF ?? lda BallTargetOffset ; CPU:$E1B1 PRG:21B1 ?? cmp #$44 ; CPU:$E1B3 PRG:21B3 ?? bcc Flow_E1D3 ; CPU:$E1B5 PRG:21B5 ?? cmp #$54 ; CPU:$E1B7 PRG:21B7 ?? bcc Flow_E1C3 ; CPU:$E1B9 PRG:21B9 ?? cmp #$88 ; CPU:$E1BB PRG:21BB ?? bcc Flow_E1C9 ; CPU:$E1BD PRG:21BD ?? cmp #$A0 ; CPU:$E1BF PRG:21BF ?? bcs Flow_E1D3 ; CPU:$E1C1 PRG:21C1 ?? Flow_E1C3: jsr RenderRoutine_E535 ; CPU:$E1C3 PRG:21C3 ?? jmp Flow_E1D6 ; CPU:$E1C5 PRG:21C5 ?? Flow_E1C9: inc ObjectAnimationState ; CPU:$E1C7 PRG:21C7 ?? lda #$00 ; CPU:$E1C9 PRG:21C9 ?? sta Player2XSubpixel ; CPU:$E1CB PRG:21CB ?? sta Player2XPosition ; CPU:$E1CD PRG:21CD ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $21D1-$21D2. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_E1D1: .byte $F0, $03 ; PRG $21D1 / CPU $E1D1 ; CPU:$E1CF PRG:21CF F0 03 Flow_E1D3: jsr RenderRoutine_E527 ; CPU:$E1D1 PRG:21D1 ?? Flow_E1D6: ldy #$00 ; CPU:$E1D3 PRG:21D3 ?? sec ; CPU:$E1D5 PRG:21D5 ?? sbc Player1XSubpixel ; CPU:$E1D7 PRG:21D7 ?? sta Player1XSubpixel ; CPU:$E1D9 PRG:21D9 ?? tya ; CPU:$E1DB PRG:21DB ?? sbc Player1XPosition ; CPU:$E1DD PRG:21DD ?? sta Player1XPosition ; CPU:$E1DF PRG:21DF ?? jsr RenderRoutine_E56C ; CPU:$E1E1 PRG:21E1 ?? lda RallyPhase ; CPU:$E1E3 PRG:21E3 ?? bne FlowEntry_E23A ; CPU:$E1E5 PRG:21E5 ?? lda #$03 ; CPU:$E1E7 PRG:21E7 ?? sta RallyPhase ; CPU:$E1E9 PRG:21E9 ?? lda BallAnimationTimer ; CPU:$E1EB PRG:21EB ?? bmi Flow_E208 ; CPU:$E1ED PRG:21ED ?? ldy #$00 ; CPU:$E1EF PRG:21EF ?? ldx #$01 ; CPU:$E1F1 PRG:21F1 ?? lda BallTargetOffset ; CPU:$E1F3 PRG:21F3 ?? cmp #$70 ; CPU:$E1F5 PRG:21F5 ?? bcc Flow_E232 ; CPU:$E1F7 PRG:21F7 ?? bit BallTrajectoryFlags ; CPU:$E1F9 PRG:21F9 ?? bvc Flow_E202 ; CPU:$E1FB PRG:21FB ?? jmp Flow_E4A3 ; CPU:$E1FD PRG:21FD ?? Flow_E202: ldy #$01 ; CPU:$E1FF PRG:21FF ?? ldx #$02 ; CPU:$E201 PRG:2201 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2206-$2207. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_E206: .byte $D0, $2A ; PRG $2206 / CPU $E206 ; CPU:$E203 PRG:2203 D0 2A Flow_E208: bit BallTrajectoryFlags ; CPU:$E205 PRG:2205 ?? bvc Flow_E21D ; CPU:$E207 PRG:2207 ?? sec ; CPU:$E209 PRG:2209 ?? lda Player2YSubpixel ; CPU:$E20B PRG:220B ?? sbc #$80 ; CPU:$E20D PRG:220D ?? sta Player2YSubpixel ; CPU:$E20F PRG:220F ?? bcs Flow_E217 ; CPU:$E211 PRG:2211 ?? dec Player2YPosition ; CPU:$E213 PRG:2213 ?? Flow_E217: ldy #$00 ; CPU:$E215 PRG:2215 ?? ldx #$02 ; CPU:$E217 PRG:2217 ?? bpl Flow_E232 ; CPU:$E219 PRG:2219 ?? Flow_E21D: ldy #$00 ; CPU:$E21B PRG:221B ?? ldx #$02 ; CPU:$E21D PRG:221D ?? lda BallTargetOffset ; CPU:$E21F PRG:221F ?? cmp #$70 ; CPU:$E221 PRG:2221 ?? bcs Flow_E232 ; CPU:$E223 PRG:2223 ?? bit BallTrajectoryFlags ; CPU:$E225 PRG:2225 ?? bvc Flow_E22E ; CPU:$E227 PRG:2227 ?? jmp Flow_E4A3 ; CPU:$E229 PRG:2229 ?? Flow_E22E: ldy #$01 ; CPU:$E22B PRG:222B ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2230-$2231. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_E230: .byte $A2, $01 ; PRG $2230 / CPU $E230 ; CPU:$E22D PRG:222D A2 01 Flow_E232: sty UmpireMessageId ; CPU:$E22F PRG:222F ?? stx CourtMessageId ; CPU:$E231 PRG:2231 ?? lda #$00 ; CPU:$E233 PRG:2233 ?? sta BallStateFlags ; CPU:$E235 PRG:2235 ?? FlowEntry_E23A: rts ; PRG $223A / CPU $E23A ; CPU:$E237 PRG:2237 ?? Flow_E23B: ldy PlayerActionDelay ; CPU:$E239 PRG:2239 ?? beq Flow_E262 ; CPU:$E23B PRG:223B ?? dec PlayerActionDelay ; CPU:$E23D PRG:223D ?? bne Flow_E262 ; CPU:$E23F PRG:223F ?? lda BallTrajectoryFlags ; CPU:$E241 PRG:2241 ?? and #$0F ; CPU:$E243 PRG:2243 ?? sta BallTrajectoryFlags ; CPU:$E245 PRG:2245 ?? ldx #$02 ; CPU:$E247 PRG:2247 ?? ldy RallyPhase ; CPU:$E249 PRG:2249 ?? bne Flow_E262 ; CPU:$E24B PRG:224B ?? ror a ; CPU:$E24D PRG:224D ?? ror a ; CPU:$E24F PRG:224F ?? bcs Flow_E255 ; CPU:$E251 PRG:2251 ?? ldx #$01 ; CPU:$E253 PRG:2253 ?? Flow_E255: stx CourtMessageId ; CPU:$E255 PRG:2255 ?? ldy #$02 ; CPU:$E257 PRG:2257 ?? sty RallyPhase ; CPU:$E259 PRG:2259 ?? lda #$00 ; CPU:$E25B PRG:225B ?? sta BallStateFlags ; CPU:$E25D PRG:225D ?? jmp Flow_E1A4 ; CPU:$E25F PRG:225F ?? Flow_E262: jsr MatchRoutine_C94D ; CPU:$E261 PRG:2261 ?? lda #$00 ; CPU:$E263 PRG:2263 ?? sta RallyPhase ; CPU:$E265 PRG:2265 ?? lda PlayerActionType ; CPU:$E267 PRG:2267 ?? asl a ; CPU:$E269 PRG:2269 ?? cmp #$08 ; CPU:$E26B PRG:226B ?? bcc Flow_E272 ; CPU:$E26D PRG:226D ?? adc #$00 ; CPU:$E26F PRG:226F ?? Flow_E272: adc PlayerActionParameter ; CPU:$E271 PRG:2271 ?? sta Zp16 ; CPU:$E273 PRG:2273 ?? asl a ; CPU:$E275 PRG:2275 ?? asl a ; CPU:$E277 PRG:2277 ?? adc Zp16 ; CPU:$E279 PRG:2279 ?? adc ServingPlayer ; CPU:$E27B PRG:227B ?? asl a ; CPU:$E27D PRG:227D ?? sta MathOperandLo ; CPU:$E27F PRG:227F ?? lda #$00 ; CPU:$E281 PRG:2281 ?? sta MathOperandHi ; CPU:$E283 PRG:2283 ?? lda #$E3 ; CPU:$E285 PRG:2285 ?? sta MathResultHi ; CPU:$E287 PRG:2287 ?? lda #$AA ; CPU:$E289 PRG:2289 ?? sta MathResultLo ; CPU:$E28B PRG:228B ?? jsr Add16BitZp12ToZp14 ; CPU:$E28D PRG:228D ?? ldy #$00 ; CPU:$E28F PRG:228F ?? lda (MathResultLo),y ; CPU:$E291 PRG:2291 ?? sta BallMotionControl ; CPU:$E293 PRG:2293 ?? iny ; CPU:$E295 PRG:2295 ?? lda (MathResultLo),y ; CPU:$E297 PRG:2297 ?? sta Player2XPosition ; CPU:$E299 PRG:2299 ?? sec ; CPU:$E29B PRG:229B ?? lda PlayerTargetYLo ; CPU:$E29D PRG:229D ?? sbc Player2YSubpixel ; CPU:$E29F PRG:229F ?? sta MathVectorYLo ; CPU:$E2A1 PRG:22A1 ?? lda PlayerTargetYHi ; CPU:$E2A3 PRG:22A3 ?? sbc Player2YPosition ; CPU:$E2A5 PRG:22A5 ?? sta MathVectorYHi ; CPU:$E2A7 PRG:22A7 ?? jsr EngineRoutine_C6ED ; CPU:$E2A9 PRG:22A9 ?? lda MathVectorYHi ; CPU:$E2AB PRG:22AB ?? sta ProjectedXHi ; CPU:$E2AD PRG:22AD ?? lda MathVectorYLo ; CPU:$E2AF PRG:22AF ?? sta ProjectedYLo ; CPU:$E2B1 PRG:22B1 ?? lda #$00 ; CPU:$E2B3 PRG:22B3 ?? sta ProjectedXLo ; CPU:$E2B5 PRG:22B5 ?? sta ProjectedYHi ; CPU:$E2B7 PRG:22B7 ?? lda Player2XPosition ; CPU:$E2B9 PRG:22B9 ?? sta MathVectorYHi ; CPU:$E2BB PRG:22BB ?? lda Player2XSubpixel ; CPU:$E2BD PRG:22BD ?? sta MathVectorYLo ; CPU:$E2BF PRG:22BF ?? lda SignedAimDelta ; CPU:$E2C1 PRG:22C1 ?? bpl Flow_E2D1 ; CPU:$E2C3 PRG:22C3 ?? jsr EngineRoutine_C6F3 ; CPU:$E2C5 PRG:22C5 ?? lda MathVectorYHi ; CPU:$E2C7 PRG:22C7 ?? sta Player2XPosition ; CPU:$E2C9 PRG:22C9 ?? lda MathVectorYLo ; CPU:$E2CB PRG:22CB ?? sta Player2XSubpixel ; CPU:$E2CD PRG:22CD ?? jsr EngineRoutine_C6ED ; CPU:$E2CF PRG:22CF ?? Flow_E2D1: lda MathVectorYHi ; CPU:$E2D1 PRG:22D1 ?? sta MathVectorXHi ; CPU:$E2D3 PRG:22D3 ?? lda MathVectorYLo ; CPU:$E2D5 PRG:22D5 ?? sta MathVectorXLo ; CPU:$E2D7 PRG:22D7 ?? jsr EngineRoutine_C684 ; CPU:$E2D9 PRG:22D9 ?? lda MathVectorYLo ; CPU:$E2DB PRG:22DB ?? sta WorkPtrHi ; CPU:$E2DD PRG:22DD ?? lda MathVectorYHi ; CPU:$E2DF PRG:22DF ?? sta WorkPtrLo ; CPU:$E2E1 PRG:22E1 ?? lda BallMotionControl ; CPU:$E2E3 PRG:22E3 ?? asl a ; CPU:$E2E5 PRG:22E5 ?? sta MathVectorXLo ; CPU:$E2E7 PRG:22E7 ?? lda #$00 ; CPU:$E2E9 PRG:22E9 ?? rol a ; CPU:$E2EB PRG:22EB ?? sta MathVectorXHi ; CPU:$E2ED PRG:22ED ?? jsr EngineRoutine_C62B ; CPU:$E2EF PRG:22EF ?? lda ProjectedYLo ; CPU:$E2F1 PRG:22F1 ?? sta BallXPosition ; CPU:$E2F3 PRG:22F3 ?? lda ProjectedYHi ; CPU:$E2F5 PRG:22F5 ?? sta BallXSubpixel ; CPU:$E2F7 PRG:22F7 ?? lda BallYPosition ; CPU:$E2F9 PRG:22F9 ?? sta ProjectedXHi ; CPU:$E2FB PRG:22FB ?? lda BallYSubpixel ; CPU:$E2FD PRG:22FD ?? sta ProjectedYLo ; CPU:$E2FF PRG:22FF ?? lda #$00 ; CPU:$E301 PRG:2301 ?? sta ProjectedXLo ; CPU:$E303 PRG:2303 ?? sta ProjectedYHi ; CPU:$E305 PRG:2305 ?? lda WorkPtrLo ; CPU:$E307 PRG:2307 ?? sta MathVectorXHi ; CPU:$E309 PRG:2309 ?? lda WorkPtrHi ; CPU:$E30B PRG:230B ?? sta MathVectorXLo ; CPU:$E30D PRG:230D ?? jsr EngineRoutine_C684 ; CPU:$E30F PRG:230F ?? sec ; CPU:$E311 PRG:2311 ?? lda BallXSubpixel ; CPU:$E313 PRG:2313 ?? sbc MathVectorYLo ; CPU:$E315 PRG:2315 ?? sta BallXSubpixel ; CPU:$E317 PRG:2317 ?? lda BallXPosition ; CPU:$E319 PRG:2319 ?? sbc MathVectorYHi ; CPU:$E31B PRG:231B ?? sta BallXPosition ; CPU:$E31D PRG:231D ?? sec ; CPU:$E31F PRG:231F ?? lda PlayerTargetXLo ; CPU:$E321 PRG:2321 ?? sbc Player1YSubpixel ; CPU:$E323 PRG:2323 ?? sta MathVectorYLo ; CPU:$E325 PRG:2325 ?? lda PlayerTargetXHi ; CPU:$E327 PRG:2327 ?? sbc Player1YPosition ; CPU:$E329 PRG:2329 ?? sta MathVectorYHi ; CPU:$E32B PRG:232B ?? jsr EngineRoutine_C6ED ; CPU:$E32D PRG:232D ?? lda MathVectorYHi ; CPU:$E32F PRG:232F ?? sta ProjectedXHi ; CPU:$E331 PRG:2331 ?? lda MathVectorYLo ; CPU:$E333 PRG:2333 ?? sta ProjectedYLo ; CPU:$E335 PRG:2335 ?? lda #$00 ; CPU:$E337 PRG:2337 ?? sta ProjectedXLo ; CPU:$E339 PRG:2339 ?? sta ProjectedYHi ; CPU:$E33B PRG:233B ?? lda WorkPtrLo ; CPU:$E33D PRG:233D ?? sta MathVectorXHi ; CPU:$E33F PRG:233F ?? lda WorkPtrHi ; CPU:$E341 PRG:2341 ?? sta MathVectorXLo ; CPU:$E343 PRG:2343 ?? jsr EngineRoutine_C684 ; CPU:$E345 PRG:2345 ?? jsr MatchRoutine_C705 ; CPU:$E347 PRG:2347 ?? lda MathVectorYHi ; CPU:$E349 PRG:2349 ?? sta Player1XPosition ; CPU:$E34B PRG:234B ?? lda MathVectorYLo ; CPU:$E34D PRG:234D ?? bpl Flow_E355 ; CPU:$E34F PRG:234F ?? inc Player1XPosition ; CPU:$E351 PRG:2351 ?? Flow_E355: lda #$00 ; CPU:$E353 PRG:2353 ?? sta Player1XSubpixel ; CPU:$E355 PRG:2355 ?? lda BallMotionControl ; CPU:$E357 PRG:2357 ?? eor #$FF ; CPU:$E359 PRG:2359 ?? sta BallMotionControl ; CPU:$E35B PRG:235B ?? inc BallMotionControl ; CPU:$E35D PRG:235D ?? jsr RenderRoutine_E0D6 ; CPU:$E35F PRG:235F ?? rts ; PRG $2364 / CPU $E364 ; CPU:$E361 PRG:2361 ?? ; ============================================================================= ; RenderRoutine_E365 ; CPU address: $E365 PRG offset: $2365 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E365: lda PlayerPoseId ; CPU:$E363 PRG:2363 ?? cmp #$3E ; CPU:$E365 PRG:2365 ?? beq Flow_E3A9 ; CPU:$E367 PRG:2367 ?? lda Player2YPosition ; CPU:$E369 PRG:2369 ?? sec ; CPU:$E36B PRG:236B ?? sbc #$04 ; CPU:$E36D PRG:236D ?? asl a ; CPU:$E36F PRG:236F ?? asl a ; CPU:$E371 PRG:2371 ?? sta MathResultHi ; CPU:$E373 PRG:2373 ?? lda BallHeight ; CPU:$E375 PRG:2375 ?? clc ; CPU:$E377 PRG:2377 ?? adc #$20 ; CPU:$E379 PRG:2379 ?? php ; CPU:$E37B PRG:237B ?? sec ; CPU:$E37D PRG:237D ?? sbc MathResultHi ; CPU:$E37F PRG:237F ?? bcs Flow_E386 ; CPU:$E381 PRG:2381 ?? plp ; CPU:$E383 PRG:2383 ?? bcs Flow_E387 ; CPU:$E385 PRG:2385 ?? lda #$00 ; CPU:$E387 PRG:2387 ?? beq Flow_E387 ; CPU:$E389 PRG:2389 ?? Flow_E386: plp ; CPU:$E38B PRG:238B ?? Flow_E387: ldy #$33 ; CPU:$E38D PRG:238D ?? cmp #$A8 ; CPU:$E38F PRG:238F ?? bcs Flow_E3A7 ; CPU:$E391 PRG:2391 ?? dey ; CPU:$E393 PRG:2393 ?? cmp #$78 ; CPU:$E395 PRG:2395 ?? bcs Flow_E3A7 ; CPU:$E397 PRG:2397 ?? dey ; CPU:$E399 PRG:2399 ?? cmp #$2C ; CPU:$E39B PRG:239B ?? bcs Flow_E3A7 ; CPU:$E39D PRG:239D ?? dey ; CPU:$E39F PRG:239F ?? cmp #$01 ; CPU:$E3A1 PRG:23A1 ?? bcs Flow_E3A7 ; CPU:$E3A3 PRG:23A3 ?? lda BallTargetOffset ; CPU:$E3A5 PRG:23A5 ?? cmp #$70 ; CPU:$E3A7 PRG:23A7 ?? bcc Flow_E3A6 ; CPU:$E3A9 PRG:23A9 ?? lda ObjectAnimationState ; CPU:$E3AB PRG:23AB ?? bne Flow_E3A7 ; CPU:$E3AD PRG:23AD ?? Flow_E3A6: dey ; CPU:$E3AF PRG:23AF ?? Flow_E3A7: sty PlayerPoseId ; CPU:$E3B1 PRG:23B1 ?? Flow_E3A9: rts ; CPU:$E3B3 PRG:23B3 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $23AA-$2421. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_E3AA: .byte $15, $20, $21, $28, $2F, $30, $30, $38, $54, $40, $18, $20, $26, $28, $36, $30 ; PRG $23AA / CPU $E3AA ; CPU:$E3B5 PRG:23B5 15 20 21 28 2F 30 30 38 54 40 18 20 26 28 36 30 .byte $4A, $38, $60, $40, $15, $20, $21, $28, $28, $2C, $2F, $30, $40, $38, $1C, $20 ; PRG $23BA / CPU $E3BA ; CPU:$E3C5 PRG:23C5 4A 38 60 40 15 20 21 28 28 2C 2F 30 40 38 1C 20 .byte $2B, $28, $35, $2C, $3F, $30, $56, $38, $18, $30, $18, $38, $18, $44, $20, $5C ; PRG $23CA / CPU $E3CA ; CPU:$E3D5 PRG:23D5 2B 28 35 2C 3F 30 56 38 18 30 18 38 18 44 20 5C .byte $20, $68, $18, $30, $18, $38, $20, $44, $20, $5C, $20, $68, $12, $22, $19, $28 ; PRG $23DA / CPU $E3DA ; CPU:$E3E5 PRG:23E5 20 68 18 30 18 38 20 44 20 5C 20 68 12 22 19 28 .byte $24, $30, $31, $38, $40, $40, $18, $22, $21, $28, $30, $30, $41, $38, $55, $40 ; PRG $23EA / CPU $E3EA ; CPU:$E3F5 PRG:23F5 24 30 31 38 40 40 18 22 21 28 30 30 41 38 55 40 .byte $14, $30, $1B, $38, $24, $40, $3D, $48, $37, $50, $09, $10, $0E, $14, $14, $18 ; PRG $23FA / CPU $E3FA ; CPU:$E405 PRG:2405 14 30 1B 38 24 40 3D 48 37 50 09 10 0E 14 14 18 .byte $24, $20, $38, $28, $0A, $10, $0F, $14, $16, $18, $28, $20, $3E, $28, $0C, $10 ; PRG $240A / CPU $E40A ; CPU:$E415 PRG:2415 24 20 38 28 0A 10 0F 14 16 18 28 20 3E 28 0C 10 .byte $14, $14, $1D, $18, $34, $20, $51, $28 ; PRG $241A / CPU $E41A ; CPU:$E425 PRG:2425 14 14 1D 18 34 20 51 28 ; ============================================================================= ; RenderRoutine_E422 ; CPU address: $E422 PRG offset: $2422 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E422: ldy #$40 ; CPU:$E42D PRG:242D ?? jsr TestCourtBoundary ; CPU:$E42F PRG:242F ?? sta PlayerAnimationFlags ; CPU:$E431 PRG:2431 ?? bne Flow_E48E ; CPU:$E433 PRG:2433 ?? ldy RallyPhase ; CPU:$E435 PRG:2435 ?? beq FlowEntry_E48D ; CPU:$E437 PRG:2437 ?? dey ; CPU:$E439 PRG:2439 ?? bne Flow_E46C ; CPU:$E43B PRG:243B ?? lda #$02 ; CPU:$E43D PRG:243D ?? sta RallyPhase ; CPU:$E43F PRG:243F ?? lda BallTrajectoryFlags ; CPU:$E441 PRG:2441 ?? bit BallTrajectoryFlags ; CPU:$E443 PRG:2443 ?? bpl Flow_E440 ; CPU:$E445 PRG:2445 ?? inc ObjectAnimationState ; CPU:$E447 PRG:2447 ?? bpl Flow_E4A3 ; CPU:$E449 PRG:2449 ?? Flow_E440: bvs Flow_E45C ; CPU:$E44B PRG:244B ?? ldy #$20 ; CPU:$E44D PRG:244D ?? lda PlayerFacingDirection ; CPU:$E44F PRG:244F ?? bpl Flow_E44A ; CPU:$E451 PRG:2451 ?? ldy #$28 ; CPU:$E453 PRG:2453 ?? Flow_E44A: lda GameMode ; CPU:$E455 PRG:2455 ?? beq Flow_E453 ; CPU:$E457 PRG:2457 ?? tya ; CPU:$E459 PRG:2459 ?? clc ; CPU:$E45B PRG:245B ?? adc #$10 ; CPU:$E45D PRG:245D ?? tay ; CPU:$E45F PRG:245F ?? Flow_E453: jsr TestCourtBoundary ; CPU:$E461 PRG:2461 ?? sta UmpireMessageId ; CPU:$E463 PRG:2463 ?? beq Flow_E4C5 ; CPU:$E465 PRG:2465 ?? bne Flow_E498 ; CPU:$E467 PRG:2467 ?? Flow_E45C: and #$03 ; CPU:$E469 PRG:2469 ?? asl a ; CPU:$E46B PRG:246B ?? asl a ; CPU:$E46D PRG:246D ?? asl a ; CPU:$E46F PRG:246F ?? tay ; CPU:$E471 PRG:2471 ?? jsr TestCourtBoundary ; CPU:$E473 PRG:2473 ?? bne Flow_E4A3 ; CPU:$E475 PRG:2475 ?? sta UmpireMessageId ; CPU:$E477 PRG:2477 ?? jmp Flow_E4C5 ; CPU:$E479 PRG:2479 ?? Flow_E46C: cpy #$02 ; CPU:$E47B PRG:247B ?? bne Flow_E485 ; CPU:$E47D PRG:247D ?? lda #$01 ; CPU:$E47F PRG:247F ?? sta BallVerticalVelocityLo ; CPU:$E481 PRG:2481 ?? ldx BallTargetOffset ; CPU:$E483 PRG:2483 ?? cpx #$70 ; CPU:$E485 PRG:2485 ?? bcc Flow_E47C ; CPU:$E487 PRG:2487 ?? lda #$02 ; CPU:$E489 PRG:2489 ?? Flow_E47C: jsr RenderRoutine_E621 ; CPU:$E48B PRG:248B ?? inc RallyPhase ; CPU:$E48D PRG:248D ?? jsr RenderRoutine_E646 ; CPU:$E48F PRG:248F ?? rts ; CPU:$E491 PRG:2491 ?? Flow_E485: cpy #$07 ; CPU:$E493 PRG:2493 ?? bcc FlowEntry_E48D ; CPU:$E495 PRG:2495 ?? ldy #$01 ; CPU:$E497 PRG:2497 ?? sty PlayerAnimationFlags ; CPU:$E499 PRG:2499 ?? FlowEntry_E48D: rts Flow_E48E: ldy RallyPhase ; CPU:$E49B PRG:249B ?? bne FlowEntry_E48D ; CPU:$E49D PRG:249D ?? lda #$01 ; CPU:$E49F PRG:249F ?? sta UmpireMessageId ; CPU:$E4A1 PRG:24A1 ?? bne Flow_E498 ; CPU:$E4A3 PRG:24A3 ?? Flow_E498: ldx #$02 ; CPU:$E4A5 PRG:24A5 ?? lda PlayerFacingDirection ; CPU:$E4A7 PRG:24A7 ?? bpl Flow_E4A0 ; CPU:$E4A9 PRG:24A9 ?? ldx #$01 ; CPU:$E4AB PRG:24AB ?? Flow_E4A0: jmp Flow_E4BE ; CPU:$E4AD PRG:24AD ?? Flow_E4A3: lda #$03 ; CPU:$E4AF PRG:24AF ?? sta UmpireMessageId ; CPU:$E4B1 PRG:24B1 ?? lda BallStateFlags ; CPU:$E4B3 PRG:24B3 ?? bne Flow_E4B2 ; CPU:$E4B5 PRG:24B5 ?? inc BallStateFlags ; CPU:$E4B7 PRG:24B7 ?? lda #$00 ; CPU:$E4B9 PRG:24B9 ?? sta CourtMessageId ; CPU:$E4BB PRG:24BB ?? rts ; CPU:$E4BD PRG:24BD ?? Flow_E4B2: inc UmpireMessageId ; CPU:$E4BF PRG:24BF ?? ldx #$01 ; CPU:$E4C1 PRG:24C1 ?? lda BallTrajectoryFlags ; CPU:$E4C3 PRG:24C3 ?? ror a ; CPU:$E4C5 PRG:24C5 ?? ror a ; CPU:$E4C7 PRG:24C7 ?? bcs Flow_E4BE ; CPU:$E4C9 PRG:24C9 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $24BC-$24BD. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_E4BC: .byte $A2, $02 ; PRG $24BC / CPU $E4BC ; CPU:$E4CB PRG:24CB A2 02 Flow_E4BE: stx CourtMessageId ; CPU:$E4CD PRG:24CD ?? lda #$00 ; CPU:$E4CF PRG:24CF ?? sta BallStateFlags ; CPU:$E4D1 PRG:24D1 ?? rts ; PRG $24C4 / CPU $E4C4 ; CPU:$E4D3 PRG:24D3 ?? Flow_E4C5: ldx #$01 ; CPU:$E4D5 PRG:24D5 ?? lda PlayerFacingDirection ; CPU:$E4D7 PRG:24D7 ?? bpl Flow_E4CD ; CPU:$E4D9 PRG:24D9 ?? ldx #$02 ; CPU:$E4DB PRG:24DB ?? Flow_E4CD: jmp Flow_E4BE ; CPU:$E4DD PRG:24DD ?? ; ============================================================================= ; RenderRoutine_E4D0 ; CPU address: $E4D0 PRG offset: $24D0 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E4D0: lda CourtSide ; CPU:$E4DF PRG:24DF ?? bne FlowEntry_E512 ; CPU:$E4E1 PRG:24E1 ?? sec ; CPU:$E4E3 PRG:24E3 ?? lda Player2YSubpixel ; CPU:$E4E5 PRG:24E5 ?? sbc #$B0 ; CPU:$E4E7 PRG:24E7 ?? lda Player2YPosition ; CPU:$E4E9 PRG:24E9 ?? sbc #$11 ; CPU:$E4EB PRG:24EB ?? tax ; CPU:$E4ED PRG:24ED ?? eor RallyFlags ; CPU:$E4EF PRG:24EF ?? bpl Flow_E510 ; CPU:$E4F1 PRG:24F1 ?? lda BallHeight ; CPU:$E4F3 PRG:24F3 ?? cmp #$40 ; CPU:$E4F5 PRG:24F5 ?? bcs Flow_E510 ; CPU:$E4F7 PRG:24F7 ?? lda BallHeightReference ; CPU:$E4F9 PRG:24F9 ?? cmp #$30 ; CPU:$E4FB PRG:24FB ?? bcc Flow_E510 ; CPU:$E4FD PRG:24FD ?? cmp #$D1 ; CPU:$E4FF PRG:24FF ?? bcs Flow_E510 ; CPU:$E501 PRG:2501 ?? lda #$01 ; CPU:$E503 PRG:2503 ?? sta CourtSide ; CPU:$E505 PRG:2505 ?? jsr RenderRoutine_E527 ; CPU:$E507 PRG:2507 ?? lda #$02 ; CPU:$E509 PRG:2509 ?? sta AudioRequestFlags3 ; CPU:$E50B PRG:250B ?? lda RallyPhase ; CPU:$E50D PRG:250D ?? bne Flow_E510 ; CPU:$E50F PRG:250F ?? lda #$02 ; CPU:$E511 PRG:2511 ?? sta RallyPhase ; CPU:$E513 PRG:2513 ?? bit BallTrajectoryFlags ; CPU:$E515 PRG:2515 ?? bvs Flow_E4A3 ; CPU:$E517 PRG:2517 ?? lda #$02 ; CPU:$E519 PRG:2519 ?? sta UmpireMessageId ; CPU:$E51B PRG:251B ?? jmp Flow_E498 ; CPU:$E51D PRG:251D ?? Flow_E510: stx RallyFlags ; CPU:$E51F PRG:251F ?? FlowEntry_E512: rts ; PRG $2512 / CPU $E512 ; CPU:$E521 PRG:2521 ?? ; ============================================================================= ; RenderRoutine_E513 ; CPU address: $E513 PRG offset: $2513 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E513: lda UmpireAnimationTimer ; CPU:$E523 PRG:2523 ?? bne Flow_E526 ; CPU:$E525 PRG:2525 ?? lda BallTargetOffset ; CPU:$E527 PRG:2527 ?? cmp #$20 ; CPU:$E529 PRG:2529 ?? bcs Flow_E526 ; CPU:$E52B PRG:252B ?? jsr RenderRoutine_E527 ; CPU:$E52D PRG:252D ?? lda #$02 ; CPU:$E52F PRG:252F ?? sta AudioRequestFlags3 ; CPU:$E531 PRG:2531 ?? inc UmpireAnimationTimer ; CPU:$E533 PRG:2533 ?? Flow_E526: rts ; CPU:$E535 PRG:2535 ?? ; ============================================================================= ; RenderRoutine_E527 ; CPU address: $E527 PRG offset: $2527 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E527: lda Player1XPosition ; CPU:$E537 PRG:2537 ?? cmp #$80 ; CPU:$E539 PRG:2539 ?? ror a ; CPU:$E53B PRG:253B ?? ror Player1XSubpixel ; CPU:$E53D PRG:253D ?? cmp #$80 ; CPU:$E53F PRG:253F ?? ror a ; CPU:$E541 PRG:2541 ?? sta Player1XPosition ; CPU:$E543 PRG:2543 ?? ror Player1XSubpixel ; CPU:$E545 PRG:2545 ?? ; ============================================================================= ; RenderRoutine_E535 ; CPU address: $E535 PRG offset: $2535 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E535: jsr RenderRoutine_E56C ; CPU:$E547 PRG:2547 ?? ldy #$00 ; CPU:$E549 PRG:2549 ?? tya ; CPU:$E54B PRG:254B ?? sec ; CPU:$E54D PRG:254D ?? sbc Player2XSubpixel ; CPU:$E54F PRG:254F ?? sta Player2XSubpixel ; CPU:$E551 PRG:2551 ?? tya ; CPU:$E553 PRG:2553 ?? sbc Player2XPosition ; CPU:$E555 PRG:2555 ?? cmp #$80 ; CPU:$E557 PRG:2557 ?? ror a ; CPU:$E559 PRG:2559 ?? ror Player2XSubpixel ; CPU:$E55B PRG:255B ?? cmp #$80 ; CPU:$E55D PRG:255D ?? ror a ; CPU:$E55F PRG:255F ?? sta Player2XPosition ; CPU:$E561 PRG:2561 ?? ror Player2XSubpixel ; CPU:$E563 PRG:2563 ?? lda Player2XPosition ; CPU:$E565 PRG:2565 ?? bpl Flow_E55B ; CPU:$E567 PRG:2567 ?? cmp #$F4 ; CPU:$E569 PRG:2569 ?? bcs Flow_E563 ; CPU:$E56B PRG:256B ?? lda #$F4 ; CPU:$E56D PRG:256D ?? bne Flow_E561 ; CPU:$E56F PRG:256F ?? Flow_E55B: cmp #$0B ; CPU:$E571 PRG:2571 ?? bcc Flow_E563 ; CPU:$E573 PRG:2573 ?? lda #$0B ; CPU:$E575 PRG:2575 ?? Flow_E561: sta Player2XPosition ; CPU:$E577 PRG:2577 ?? Flow_E563: lda BallTargetOffset ; CPU:$E579 PRG:2579 ?? cmp #$70 ; CPU:$E57B PRG:257B ?? bcc Flow_E569 ; CPU:$E57D PRG:257D ?? Flow_E569: inc ObjectAnimationState ; CPU:$E57F PRG:257F ?? rts ; CPU:$E581 PRG:2581 ?? ; ============================================================================= ; RenderRoutine_E56C ; CPU address: $E56C PRG offset: $256C ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E56C: lda Player1XPosition ; CPU:$E583 PRG:2583 ?? bpl Flow_E578 ; CPU:$E585 PRG:2585 ?? cmp #$F4 ; CPU:$E587 PRG:2587 ?? bcs FlowEntry_E580 ; CPU:$E589 PRG:2589 ?? lda #$F4 ; CPU:$E58B PRG:258B ?? bne Flow_E57E ; CPU:$E58D PRG:258D ?? Flow_E578: cmp #$0B ; CPU:$E58F PRG:258F ?? bcc FlowEntry_E580 ; CPU:$E591 PRG:2591 ?? lda #$0B ; CPU:$E593 PRG:2593 ?? Flow_E57E: sta Player1XPosition ; CPU:$E595 PRG:2595 ?? FlowEntry_E580: rts ; PRG $2580 / CPU $E580 ; CPU:$E597 PRG:2597 ?? ; ============================================================================= ; TestCourtBoundary ; CPU address: $E581 PRG offset: $2581 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= TestCourtBoundary: lda #$0A ; CPU:$E599 PRG:2599 ?? Flow_E583: sec ; CPU:$E59B PRG:259B ?? sbc #$05 ; CPU:$E59D PRG:259D ?? tax ; CPU:$E59F PRG:259F ?? sec ; CPU:$E5A1 PRG:25A1 ?? lda Player1YSubpixel,x ; CPU:$E5A3 PRG:25A3 ?? sbc $E5AD,y ; CPU:$E5A5 PRG:25A5 ?? iny ; CPU:$E5A7 PRG:25A7 ?? lda Player1YPosition,x ; CPU:$E5A9 PRG:25A9 ?? sbc $E5AD,y ; CPU:$E5AB PRG:25AB ?? iny ; CPU:$E5AD PRG:25AD ?? bcc Flow_E5AA ; CPU:$E5AF PRG:25AF ?? lda Player1YSubpixel,x ; CPU:$E5B1 PRG:25B1 ?? sbc $E5AD,y ; CPU:$E5B3 PRG:25B3 ?? iny ; CPU:$E5B5 PRG:25B5 ?? lda Player1YPosition,x ; CPU:$E5B7 PRG:25B7 ?? sbc $E5AD,y ; CPU:$E5B9 PRG:25B9 ?? iny ; CPU:$E5BB PRG:25BB ?? bcs Flow_E5AA ; CPU:$E5BD PRG:25BD ?? txa ; CPU:$E5BF PRG:25BF ?? bne Flow_E583 ; CPU:$E5C1 PRG:25C1 ?? lda #$00 ; CPU:$E5C3 PRG:25C3 ?? rts ; CPU:$E5C5 PRG:25C5 ?? Flow_E5AA: lda #$01 ; CPU:$E5C7 PRG:25C7 ?? rts ; CPU:$E5C9 PRG:25C9 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $25AD-$25F4. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- CourtBoundaryTable: .byte $B0, $11, $50, $16, $10, $10, $50, $13, $B0, $11, $50, $16, $D0, $0C, $10, $10 ; PRG $25AD / CPU $E5AD ; CPU:$E5CB PRG:25CB B0 11 50 16 10 10 50 13 B0 11 50 16 D0 0C 10 10 .byte $90, $0D, $B0, $11, $10, $10, $50, $13, $90, $0D, $B0, $11, $D0, $0C, $10, $10 ; PRG $25BD / CPU $E5BD ; CPU:$E5DB PRG:25DB 90 0D B0 11 10 10 50 13 90 0D B0 11 D0 0C 10 10 .byte $B0, $11, $40, $1A, $C0, $0C, $50, $13, $60, $0A, $B0, $11, $D0, $0C, $50, $13 ; PRG $25CD / CPU $E5CD ; CPU:$E5EB PRG:25EB B0 11 40 1A C0 0C 50 13 60 0A B0 11 D0 0C 50 13 .byte $B0, $11, $40, $1A, $20, $0C, $F0, $13, $60, $0A, $B0, $11, $30, $0C, $F0, $13 ; PRG $25DD / CPU $E5DD ; CPU:$E5FB PRG:25FB B0 11 40 1A 20 0C F0 13 60 0A B0 11 30 0C F0 13 .byte $00, $04, $00, $20, $00, $04, $00, $19 ; PRG $25ED / CPU $E5ED ; CPU:$E60B PRG:260B 00 04 00 20 00 04 00 19 ; ============================================================================= ; RenderRoutine_E5F5 ; CPU address: $E5F5 PRG offset: $25F5 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E5F5: ldy UmpireMessageId ; CPU:$E613 PRG:2613 ?? cpy #$03 ; CPU:$E615 PRG:2615 ?? bcc Flow_E607 ; CPU:$E617 PRG:2617 ?? lda BallTrajectoryFlags ; CPU:$E619 PRG:2619 ?? ror a ; CPU:$E61B PRG:261B ?? ror a ; CPU:$E61D PRG:261D ?? lda #$01 ; CPU:$E61F PRG:261F ?? bcs RenderRoutine_E621 ; CPU:$E621 PRG:2621 ?? lda #$02 ; CPU:$E623 PRG:2623 ?? bne RenderRoutine_E621 ; CPU:$E625 PRG:2625 ?? Flow_E607: lda BallVerticalVelocityLo ; CPU:$E627 PRG:2627 ?? bne Flow_E629 ; CPU:$E629 PRG:2629 ?? lda #$01 ; CPU:$E62B PRG:262B ?? ldx BallTargetOffset ; CPU:$E62D PRG:262D ?? cpx #$60 ; CPU:$E62F PRG:262F ?? bcc Flow_E61B ; CPU:$E631 PRG:2631 ?? lda #$00 ; CPU:$E633 PRG:2633 ?? cpx #$80 ; CPU:$E635 PRG:2635 ?? bcc Flow_E61B ; CPU:$E637 PRG:2637 ?? lda #$02 ; CPU:$E639 PRG:2639 ?? Flow_E61B: cmp BallVerticalVelocityHi ; CPU:$E63B PRG:263B ?? beq Flow_E629 ; CPU:$E63D PRG:263D ?? sta BallVerticalVelocityHi ; CPU:$E63F PRG:263F ?? ; ============================================================================= ; RenderRoutine_E621 ; CPU address: $E621 PRG offset: $2621 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E621: clc ; CPU:$E641 PRG:2641 ?? adc #$06 ; CPU:$E643 PRG:2643 ?? asl a ; CPU:$E645 PRG:2645 ?? tay ; CPU:$E647 PRG:2647 ?? jsr RenderRoutine_E65D ; CPU:$E649 PRG:2649 ?? Flow_E629: rts ; CPU:$E64B PRG:264B ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $262A-$2645. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- ScoreTextPpuAddressTable: .byte $05, $21, $3B, $02, $7D, $AF, $05, $21, $3B, $02, $7E, $7F, $05, $21, $3B, $02 ; PRG $262A / CPU $E62A ; CPU:$E64D PRG:264D 05 21 3B 02 7D AF 05 21 3B 02 7E 7F 05 21 3B 02 .byte $80, $81, $02, $02, $02, $01, $02, $04, $02, $08, $02, $08 ; PRG $263A / CPU $E63A ; CPU:$E65D PRG:265D 80 81 02 02 02 01 02 04 02 08 02 08 ; ============================================================================= ; RenderRoutine_E646 ; CPU address: $E646 PRG offset: $2646 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E646: lda BallCollisionFlags ; CPU:$E669 PRG:2669 ?? bne Flow_E659 ; CPU:$E66B PRG:266B ?? inc BallCollisionFlags ; CPU:$E66D PRG:266D ?? lda UmpireMessageId ; CPU:$E66F PRG:266F ?? asl a ; CPU:$E671 PRG:2671 ?? tay ; CPU:$E673 PRG:2673 ?? lda $E63C,y ; CPU:$E675 PRG:2675 ?? tax ; CPU:$E677 PRG:2677 ?? lda $E63D,y ; CPU:$E679 PRG:2679 ?? sta AudioEventPriority,x ; CPU:$E67B PRG:267B ?? Flow_E659: lda UmpireMessageId ; CPU:$E67D PRG:267D ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $265B-$265C. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_E65B: .byte $0A, $A8 ; PRG $265B / CPU $E65B ; CPU:$E67F PRG:267F 0A A8 ; ============================================================================= ; RenderRoutine_E65D ; CPU address: $E65D PRG offset: $265D ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E65D: lda $E693,y ; CPU:$E681 PRG:2681 ?? sta MathResultLo ; CPU:$E683 PRG:2683 ?? lda $E694,y ; CPU:$E685 PRG:2685 ?? sta MathResultHi ; CPU:$E687 PRG:2687 ?? ldy #$00 ; CPU:$E689 PRG:2689 ?? lda (MathResultLo),y ; CPU:$E68B PRG:268B ?? tax ; CPU:$E68D PRG:268D ?? ldy $0590 ; CPU:$E68F PRG:268F ?? inc MathResultLo ; CPU:$E691 PRG:2691 ?? bne Flow_E675 ; CPU:$E693 PRG:2693 ?? inc MathResultHi ; CPU:$E695 PRG:2695 ?? Flow_E675: jsr RenderRoutine_ED2A ; CPU:$E697 PRG:2697 ?? lda #$00 ; CPU:$E699 PRG:2699 ?? sta $0591,y ; CPU:$E69B PRG:269B ?? sty $0590 ; CPU:$E69D PRG:269D ?? lda #$01 ; CPU:$E69F PRG:269F ?? sta PpuBufferReady ; CPU:$E6A1 PRG:26A1 ?? Flow_E684: rts ; CPU:$E6A3 PRG:26A3 ?? ; ============================================================================= ; ShowDeuceMessage ; CPU address: $E685 PRG offset: $2685 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= ShowDeuceMessage: lda UmpireMessageId ; CPU:$E6A5 PRG:26A5 ?? cmp #$03 ; CPU:$E6A7 PRG:26A7 ?? beq Flow_E684 ; CPU:$E6A9 PRG:26A9 ?? lda #$10 ; CPU:$E6AB PRG:26AB ?? sta AudioRequestFlags2 ; CPU:$E6AD PRG:26AD ?? ldy #$0A ; CPU:$E6AF PRG:26AF ?? bne RenderRoutine_E65D ; CPU:$E6B1 PRG:26B1 ?? lda PendingAudioCue ; CPU:$E6B3 PRG:26B3 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2695-$277E. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_E695: .byte $C2, $E6, $E2, $E6, $02, $E7, $25, $E7, $52, $E7, $2A, $E6, $30, $E6, $36, $E6 ; PRG $2695 / CPU $E695 ; CPU:$E6B5 PRG:26B5 C2 E6 E2 E6 02 E7 25 E7 52 E7 2A E6 30 E6 36 E6 .byte $1C, $20, $B8, $05, $B4, $B5, $B6, $B7, $B8, $20, $D8, $05, $B9, $BA, $BB, $BC ; PRG $26A5 / CPU $E6A5 ; CPU:$E6C5 PRG:26C5 1C 20 B8 05 B4 B5 B6 B7 B8 20 D8 05 B9 BA BB BC .byte $D7, $20, $F8, $05, $BE, $BF, $B6, $C0, $C1, $21, $1B, $01, $C2, $1F, $20, $B7 ; PRG $26B5 / CPU $E6B5 ; CPU:$E6D5 PRG:26D5 D7 20 F8 05 BE BF B6 C0 C1 21 1B 01 C2 1F 20 B7 .byte $06, $B4, $B5, $B6, $B6, $B7, $B8, $20, $D7, $06, $B9, $C3, $C4, $C5, $BC, $D7 ; PRG $26C5 / CPU $E6C5 ; CPU:$E6E5 PRG:26E5 06 B4 B5 B6 B6 B7 B8 20 D7 06 B9 C3 C4 C5 BC D7 .byte $20, $F7, $06, $BE, $BF, $B6, $B6, $C0, $C1, $21, $1B, $01, $C2, $1F, $20, $B7 ; PRG $26D5 / CPU $E6D5 ; CPU:$E6F5 PRG:26F5 20 F7 06 BE BF B6 B6 C0 C1 21 1B 01 C2 1F 20 B7 .byte $06, $B4, $B5, $B6, $B6, $B7, $B8, $20, $D7, $06, $B9, $BB, $C6, $C5, $BC, $D7 ; PRG $26E5 / CPU $E6E5 ; CPU:$E705 PRG:2705 06 B4 B5 B6 B6 B7 B8 20 D7 06 B9 BB C6 C5 BC D7 .byte $20, $F7, $06, $BE, $BF, $B6, $B6, $C0, $C1, $21, $1B, $01, $C2, $22, $20, $B7 ; PRG $26F5 / CPU $E6F5 ; CPU:$E715 PRG:2715 20 F7 06 BE BF B6 B6 C0 C1 21 1B 01 C2 22 20 B7 .byte $07, $B4, $B5, $B6, $B6, $B6, $B7, $B8, $20, $D7, $07, $B9, $C7, $C8, $C9, $CA ; PRG $2705 / CPU $E705 ; CPU:$E725 PRG:2725 07 B4 B5 B6 B6 B6 B7 B8 20 D7 07 B9 C7 C8 C9 CA .byte $BC, $BD, $20, $F7, $07, $BE, $BF, $B6, $B6, $B6, $C0, $D6, $21, $1B, $01, $CB ; PRG $2715 / CPU $E715 ; CPU:$E735 PRG:2735 BC BD 20 F7 07 BE BF B6 B6 B6 C0 D6 21 1B 01 CB .byte $2C, $20, $97, $07, $B4, $B5, $B6, $B6, $B6, $B7, $B8, $20, $B7, $07, $B9, $CC ; PRG $2725 / CPU $E725 ; CPU:$E745 PRG:2745 2C 20 97 07 B4 B5 B6 B6 B6 B7 B8 20 B7 07 B9 CC .byte $CD, $CE, $CF, $D0, $BD, $20, $D7, $07, $B9, $C7, $C8, $C9, $CA, $BC, $BD, $20 ; PRG $2735 / CPU $E735 ; CPU:$E755 PRG:2755 CD CE CF D0 BD 20 D7 07 B9 C7 C8 C9 CA BC BD 20 .byte $F7, $07, $BE, $BF, $B6, $B6, $B6, $C0, $D6, $21, $1B, $01, $CB, $2C, $20, $97 ; PRG $2745 / CPU $E745 ; CPU:$E765 PRG:2765 F7 07 BE BF B6 B6 B6 C0 D6 21 1B 01 CB 2C 20 97 .byte $07, $24, $24, $24, $7C, $4D, $4D, $4D, $20, $B7, $07, $B4, $B5, $B6, $B6, $B6 ; PRG $2755 / CPU $E755 ; CPU:$E775 PRG:2775 07 24 24 24 7C 4D 4D 4D 20 B7 07 B4 B5 B6 B6 B6 .byte $B7, $B8, $20, $D7, $07, $B9, $D5, $D1, $D2, $D3, $D4, $BD, $20, $F7, $07, $BE ; PRG $2765 / CPU $E765 ; CPU:$E785 PRG:2785 B7 B8 20 D7 07 B9 D5 D1 D2 D3 D4 BD 20 F7 07 BE .byte $BF, $B6, $B6, $B6, $C0, $D6, $21, $1B, $01, $CB ; PRG $2775 / CPU $E775 ; CPU:$E795 PRG:2795 BF B6 B6 B6 C0 D6 21 1B 01 CB ; ============================================================================= ; RenderRoutine_E77F ; CPU address: $E77F PRG offset: $277F ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E77F: lda #$00 ; CPU:$E79F PRG:279F ?? sta MatchResultType ; CPU:$E7A1 PRG:27A1 ?? sta ScoreDisplayState ; CPU:$E7A3 PRG:27A3 ?? lda #$02 ; CPU:$E7A5 PRG:27A5 ?? sta PendingGameState ; CPU:$E7A7 PRG:27A7 ?? lda #$10 ; CPU:$E7A9 PRG:27A9 ?? sta StateTimer ; CPU:$E7AB PRG:27AB ?? lda CourtMessageId ; CPU:$E7AD PRG:27AD ?? bne Flow_E792 ; CPU:$E7AF PRG:27AF ?? rts ; CPU:$E7B1 PRG:27B1 ?? Flow_E792: tax ; CPU:$E7B3 PRG:27B3 ?? dex ; CPU:$E7B5 PRG:27B5 ?? txa ; CPU:$E7B7 PRG:27B7 ?? eor #$01 ; CPU:$E7B9 PRG:27B9 ?? tay ; CPU:$E7BB PRG:27BB ?? inc ScoreLo,x ; CPU:$E7BD PRG:27BD ?? lda ScoreUpdatePhase ; CPU:$E7BF PRG:27BF ?? beq Flow_E7B8 ; CPU:$E7C1 PRG:27C1 ?? cmp #$02 ; CPU:$E7C3 PRG:27C3 ?? beq Flow_E7DA ; CPU:$E7C5 PRG:27C5 ?? lda $0058,y ; CPU:$E7C7 PRG:27C7 ?? beq Flow_E7AB ; CPU:$E7C9 PRG:27C9 ?? dec ScoreLo ; CPU:$E7CB PRG:27CB ?? dec ScoreHi ; CPU:$E7CD PRG:27CD ?? Flow_E7AB: lda ScoreLo,x ; CPU:$E7CF PRG:27CF ?? cmp #$02 ; CPU:$E7D1 PRG:27D1 ?? bne Flow_E7D1 ; CPU:$E7D3 PRG:27D3 ?? Flow_E7B1: dec ScoreLo,x ; CPU:$E7D5 PRG:27D5 ?? lda CourtMessageId ; CPU:$E7D7 PRG:27D7 ?? sta MatchResultType ; CPU:$E7D9 PRG:27D9 ?? rts ; CPU:$E7DB PRG:27DB ?? Flow_E7B8: lda ScoreLo,x ; CPU:$E7DD PRG:27DD ?? cmp #$04 ; CPU:$E7DF PRG:27DF ?? beq Flow_E7B1 ; CPU:$E7E1 PRG:27E1 ?? cmp #$03 ; CPU:$E7E3 PRG:27E3 ?? bne Flow_E7D1 ; CPU:$E7E5 PRG:27E5 ?? lda $0058,y ; CPU:$E7E7 PRG:27E7 ?? cmp #$03 ; CPU:$E7E9 PRG:27E9 ?? bne Flow_E7D1 ; CPU:$E7EB PRG:27EB ?? inc ScoreUpdatePhase ; CPU:$E7ED PRG:27ED ?? lda #$00 ; CPU:$E7EF PRG:27EF ?? sta ScoreLo ; CPU:$E7F1 PRG:27F1 ?? sta ScoreHi ; CPU:$E7F3 PRG:27F3 ?? Flow_E7D1: lda BallTrajectoryFlags ; CPU:$E7F5 PRG:27F5 ?? eor #$01 ; CPU:$E7F7 PRG:27F7 ?? Flow_E7D5: ora #$C0 ; CPU:$E7F9 PRG:27F9 ?? sta BallTrajectoryFlags ; CPU:$E7FB PRG:27FB ?? rts ; CPU:$E7FD PRG:27FD ?? Flow_E7DA: lda ScoreLo,x ; CPU:$E7FF PRG:27FF ?? cmp #$33 ; CPU:$E801 PRG:2801 ?? bne Flow_E7E4 ; CPU:$E803 PRG:2803 ?? dec ScoreLo ; CPU:$E805 PRG:2805 ?? dec ScoreHi ; CPU:$E807 PRG:2807 ?? Flow_E7E4: lda ScoreLo,x ; CPU:$E809 PRG:2809 ?? cmp #$07 ; CPU:$E80B PRG:280B ?? bcc Flow_E7F3 ; CPU:$E80D PRG:280D ?? sbc $0058,y ; CPU:$E80F PRG:280F ?? bmi Flow_E7F3 ; CPU:$E811 PRG:2811 ?? cmp #$02 ; CPU:$E813 PRG:2813 ?? bcs Flow_E7B1 ; CPU:$E815 PRG:2815 ?? Flow_E7F3: lda BallTrajectoryFlags ; CPU:$E817 PRG:2817 ?? and #$07 ; CPU:$E819 PRG:2819 ?? tax ; CPU:$E81B PRG:281B ?? lda $E804,x ; CPU:$E81D PRG:281D ?? ldy GameMode ; CPU:$E81F PRG:281F ?? bne Flow_E7D5 ; CPU:$E821 PRG:2821 ?? and #$03 ; CPU:$E823 PRG:2823 ?? jmp Flow_E7D5 ; CPU:$E825 PRG:2825 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2804-$280B. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- ScoreIncrementLookupTable: .byte $01, $03, $04, $02, $05, $07, $00, $06 ; PRG $2804 / CPU $E804 ; CPU:$E827 PRG:2827 01 03 04 02 05 07 00 06 ; ============================================================================= ; RenderRoutine_E80C ; CPU address: $E80C PRG offset: $280C ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E80C: ldx PointWinner ; CPU:$E82F PRG:282F ?? ldy PointWinner ; CPU:$E831 PRG:2831 ?? lda MatchResultType ; CPU:$E833 PRG:2833 ?? bne Flow_E819 ; CPU:$E835 PRG:2835 ?? lda #$08 ; CPU:$E837 PRG:2837 ?? sta StateTimer ; CPU:$E839 PRG:2839 ?? rts ; CPU:$E83B PRG:283B ?? Flow_E819: lda #$12 ; CPU:$E83D PRG:283D ?? sta StateTimer ; CPU:$E83F PRG:283F ?? lda MatchResultType ; CPU:$E841 PRG:2841 ?? cmp #$01 ; CPU:$E843 PRG:2843 ?? beq Flow_E829 ; CPU:$E845 PRG:2845 ?? inx ; CPU:$E847 PRG:2847 ?? inx ; CPU:$E849 PRG:2849 ?? inx ; CPU:$E84B PRG:284B ?? jmp Flow_E82C ; CPU:$E84D PRG:284D ?? Flow_E829: iny ; CPU:$E84F PRG:284F ?? iny ; CPU:$E851 PRG:2851 ?? iny ; CPU:$E853 PRG:2853 ?? Flow_E82C: lda #$00 ; CPU:$E855 PRG:2855 ?? sta ScoreLo ; CPU:$E857 PRG:2857 ?? sta ScoreHi ; CPU:$E859 PRG:2859 ?? sta ScoreUpdatePhase ; CPU:$E85B PRG:285B ?? inc PlayerPointScore,x ; CPU:$E85D PRG:285D ?? lda PlayerPointScore,x ; CPU:$E85F PRG:285F ?? cmp #$07 ; CPU:$E861 PRG:2861 ?? beq Flow_E876 ; CPU:$E863 PRG:2863 ?? cmp #$06 ; CPU:$E865 PRG:2865 ?? bne Flow_E84B ; CPU:$E867 PRG:2867 ?? lda $0051,y ; CPU:$E869 PRG:2869 ?? cmp #$06 ; CPU:$E86B PRG:286B ?? beq Flow_E86F ; CPU:$E86D PRG:286D ?? cmp #$05 ; CPU:$E86F PRG:286F ?? bne Flow_E876 ; CPU:$E871 PRG:2871 ?? Flow_E84B: stx MessagePlayerIndex ; CPU:$E873 PRG:2873 ?? lda #$10 ; CPU:$E875 PRG:2875 ?? sta MessageTimer ; CPU:$E877 PRG:2877 ?? inc ScoreAnimationStep ; CPU:$E879 PRG:2879 ?? lda ScoreAnimationStep ; CPU:$E87B PRG:287B ?? and #$03 ; CPU:$E87D PRG:287D ?? asl a ; CPU:$E87F PRG:287F ?? ora #$C0 ; CPU:$E881 PRG:2881 ?? sta BallTrajectoryFlags ; CPU:$E883 PRG:2883 ?? lda ScoreAnimationStep ; CPU:$E885 PRG:2885 ?? and #$01 ; CPU:$E887 PRG:2887 ?? bne Flow_E864 ; CPU:$E889 PRG:2889 ?? inc BallTrajectoryFlags ; CPU:$E88B PRG:288B ?? Flow_E864: lda GameMode ; CPU:$E88D PRG:288D ?? bne Flow_E86E ; CPU:$E88F PRG:288F ?? lda BallTrajectoryFlags ; CPU:$E891 PRG:2891 ?? and #$FB ; CPU:$E893 PRG:2893 ?? sta BallTrajectoryFlags ; CPU:$E895 PRG:2895 ?? Flow_E86E: rts ; CPU:$E897 PRG:2897 ?? Flow_E86F: lda #$02 ; CPU:$E899 PRG:2899 ?? sta ScoreUpdatePhase ; CPU:$E89B PRG:289B ?? jmp Flow_E84B ; CPU:$E89D PRG:289D ?? Flow_E876: lda #$01 ; CPU:$E89F PRG:289F ?? sta ScoreDisplayState ; CPU:$E8A1 PRG:28A1 ?? lda PlayerPointScore,x ; CPU:$E8A3 PRG:28A3 ?? ora #$80 ; CPU:$E8A5 PRG:28A5 ?? sta PlayerPointScore,x ; CPU:$E8A7 PRG:28A7 ?? jmp Flow_E84B ; CPU:$E8A9 PRG:28A9 ?? ; ============================================================================= ; RenderRoutine_E883 ; CPU address: $E883 PRG offset: $2883 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E883: lda ScoreDisplayState ; CPU:$E8AB PRG:28AB ?? bne Flow_E888 ; CPU:$E8AD PRG:28AD ?? Flow_E887: rts ; CPU:$E8AF PRG:28AF ?? Flow_E888: lda #$18 ; CPU:$E8B1 PRG:28B1 ?? sta StateTimer ; CPU:$E8B3 PRG:28B3 ?? inc PointWinner ; CPU:$E8B5 PRG:28B5 ?? lda PointWinner ; CPU:$E8B7 PRG:28B7 ?? cmp #$03 ; CPU:$E8B9 PRG:28B9 ?? beq Flow_E8A6 ; CPU:$E8BB PRG:28BB ?? cmp #$02 ; CPU:$E8BD PRG:28BD ?? bne Flow_E887 ; CPU:$E8BF PRG:28BF ?? bit PlayerPointScore ; CPU:$E8C1 PRG:28C1 ?? bmi Flow_E8A2 ; CPU:$E8C3 PRG:28C3 ?? bit Player2PointScore ; CPU:$E8C5 PRG:28C5 ?? bpl Flow_E8A6 ; CPU:$E8C7 PRG:28C7 ?? bmi Flow_E887 ; CPU:$E8C9 PRG:28C9 ?? Flow_E8A2: bit Player2PointScore ; CPU:$E8CB PRG:28CB ?? bpl Flow_E887 ; CPU:$E8CD PRG:28CD ?? Flow_E8A6: lda #$0B ; CPU:$E8CF PRG:28CF ?? sta PendingGameState ; CPU:$E8D1 PRG:28D1 ?? lda #$20 ; CPU:$E8D3 PRG:28D3 ?? sta StateTimer ; CPU:$E8D5 PRG:28D5 ?? rts ; PRG $28AE / CPU $E8AE ; CPU:$E8D7 PRG:28D7 ?? ; ============================================================================= ; RenderRoutine_E8AF ; CPU address: $E8AF PRG offset: $28AF ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E8AF: lda MatchResultType ; CPU:$E8D9 PRG:28D9 ?? cmp #$02 ; CPU:$E8DB PRG:28DB ?? beq FlowEntry_E8C9 ; CPU:$E8DD PRG:28DD ?? ldy ServingPlayer ; CPU:$E8DF PRG:28DF ?? cpy #$04 ; CPU:$E8E1 PRG:28E1 ?? beq Flow_E8BD ; CPU:$E8E3 PRG:28E3 ?? inc ServingPlayer ; CPU:$E8E5 PRG:28E5 ?? Flow_E8BD: inc ModeAnimSubframe ; CPU:$E8E7 PRG:28E7 ?? ldy ModeAnimSubframe ; CPU:$E8E9 PRG:28E9 ?? cpy #$02 ; CPU:$E8EB PRG:28EB ?? bne FlowEntry_E8C9 ; CPU:$E8ED PRG:28ED ?? lda #$00 ; CPU:$E8EF PRG:28EF ?? sta MatchResultType ; CPU:$E8F1 PRG:28F1 ?? FlowEntry_E8C9: rts ; PRG $28C9 / CPU $E8C9 ; CPU:$E8F3 PRG:28F3 ?? ; ============================================================================= ; RenderRoutine_E8CA ; CPU address: $E8CA PRG offset: $28CA ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E8CA: ldy $0590 ; CPU:$E8F5 PRG:28F5 ?? ldx #$05 ; CPU:$E8F7 PRG:28F7 ?? lda #$EA ; CPU:$E8F9 PRG:28F9 ?? sta MathResultHi ; CPU:$E8FB PRG:28FB ?? lda #$8B ; CPU:$E8FD PRG:28FD ?? sta MathResultLo ; CPU:$E8FF PRG:28FF ?? jsr RenderRoutine_ED2A ; CPU:$E901 PRG:2901 ?? jsr RenderRoutine_E910 ; CPU:$E903 PRG:2903 ?? ldx #$0C ; CPU:$E905 PRG:2905 ?? lda #$EA ; CPU:$E907 PRG:2907 ?? sta MathResultHi ; CPU:$E909 PRG:2909 ?? lda #$90 ; CPU:$E90B PRG:290B ?? sta MathResultLo ; CPU:$E90D PRG:290D ?? jsr RenderRoutine_ED2A ; CPU:$E90F PRG:290F ?? inx ; CPU:$E911 PRG:2911 ?? jsr RenderRoutine_E910 ; CPU:$E913 PRG:2913 ?? lda ScoreUpdatePhase ; CPU:$E915 PRG:2915 ?? cmp #$01 ; CPU:$E917 PRG:2917 ?? bne Flow_E907 ; CPU:$E919 PRG:2919 ?? lda ScoreLo ; CPU:$E91B PRG:291B ?? ora ScoreHi ; CPU:$E91D PRG:291D ?? bne Flow_E907 ; CPU:$E91F PRG:291F ?? ldx #$0A ; CPU:$E921 PRG:2921 ?? lda #$EA ; CPU:$E923 PRG:2923 ?? sta MathResultHi ; CPU:$E925 PRG:2925 ?? lda #$D0 ; CPU:$E927 PRG:2927 ?? sta MathResultLo ; CPU:$E929 PRG:2929 ?? jsr RenderRoutine_ED2A ; CPU:$E92B PRG:292B ?? Flow_E907: lda #$00 ; CPU:$E92D PRG:292D ?? sta $0591,y ; CPU:$E92F PRG:292F ?? sty $0590 ; CPU:$E931 PRG:2931 ?? rts ; CPU:$E933 PRG:2933 ?? ; ============================================================================= ; RenderRoutine_E910 ; CPU address: $E910 PRG offset: $2910 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E910: lda ScoreUpdatePhase ; CPU:$E935 PRG:2935 ?? beq Flow_E92E ; CPU:$E937 PRG:2937 ?? cmp #$02 ; CPU:$E939 PRG:2939 ?? beq Flow_E934 ; CPU:$E93B PRG:293B ?? lda ScoreLo,x ; CPU:$E93D PRG:293D ?? asl a ; CPU:$E93F PRG:293F ?? clc ; CPU:$E941 PRG:2941 ?? adc #$08 ; CPU:$E943 PRG:2943 ?? Flow_E91E: tax ; CPU:$E945 PRG:2945 ?? lda $EA9C,x ; CPU:$E947 PRG:2947 ?? sta $0591,y ; CPU:$E949 PRG:2949 ?? iny ; CPU:$E94B PRG:294B ?? lda $EA9D,x ; CPU:$E94D PRG:294D ?? sta $0591,y ; CPU:$E94F PRG:294F ?? iny ; CPU:$E951 PRG:2951 ?? rts ; CPU:$E953 PRG:2953 ?? Flow_E92E: lda ScoreLo,x ; CPU:$E955 PRG:2955 ?? asl a ; CPU:$E957 PRG:2957 ?? jmp Flow_E91E ; CPU:$E959 PRG:2959 ?? Flow_E934: lda #$00 ; CPU:$E95B PRG:295B ?? sta MathResultHi ; CPU:$E95D PRG:295D ?? lda #$50 ; CPU:$E95F PRG:295F ?? sta MathResultLo ; CPU:$E961 PRG:2961 ?? lda #$04 ; CPU:$E963 PRG:2963 ?? sta Zp11 ; CPU:$E965 PRG:2965 ?? lda ScoreLo,x ; CPU:$E967 PRG:2967 ?? Flow_E942: cmp MathResultLo ; CPU:$E969 PRG:2969 ?? rol MathResultHi ; CPU:$E96B PRG:296B ?? cmp MathResultLo ; CPU:$E96D PRG:296D ?? bcc Flow_E94C ; CPU:$E96F PRG:296F ?? sbc MathResultLo ; CPU:$E971 PRG:2971 ?? Flow_E94C: lsr MathResultLo ; CPU:$E973 PRG:2973 ?? dec Zp11 ; CPU:$E975 PRG:2975 ?? bne Flow_E942 ; CPU:$E977 PRG:2977 ?? sta MathResultLo ; CPU:$E979 PRG:2979 ?? lda MathResultHi ; CPU:$E97B PRG:297B ?? bne Flow_E95A ; CPU:$E97D PRG:297D ?? lda #$76 ; CPU:$E97F PRG:297F ?? Flow_E95A: sta $0591,y ; CPU:$E981 PRG:2981 ?? iny ; CPU:$E983 PRG:2983 ?? lda MathResultLo ; CPU:$E985 PRG:2985 ?? sta $0591,y ; CPU:$E987 PRG:2987 ?? iny ; CPU:$E989 PRG:2989 ?? rts ; CPU:$E98B PRG:298B ?? ; ============================================================================= ; RenderRoutine_E965 ; CPU address: $E965 PRG offset: $2965 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E965: lda MatchResultType ; CPU:$E98D PRG:298D ?? beq Flow_E9A2 ; CPU:$E98F PRG:298F ?? ldy #$20 ; CPU:$E991 PRG:2991 ?? lda BallTrajectoryFlags ; CPU:$E993 PRG:2993 ?? and #$02 ; CPU:$E995 PRG:2995 ?? beq Flow_E973 ; CPU:$E997 PRG:2997 ?? ldy #$40 ; CPU:$E999 PRG:2999 ?? Flow_E973: sty AudioRequestFlags1 ; CPU:$E99B PRG:299B ?? ldy $0590 ; CPU:$E99D PRG:299D ?? ldx #$14 ; CPU:$E99F PRG:299F ?? lda #$EA ; CPU:$E9A1 PRG:29A1 ?? sta MathResultHi ; CPU:$E9A3 PRG:29A3 ?? lda #$A8 ; CPU:$E9A5 PRG:29A5 ?? sta MathResultLo ; CPU:$E9A7 PRG:29A7 ?? jsr RenderRoutine_ED2A ; CPU:$E9A9 PRG:29A9 ?? jsr RenderRoutine_E9A3 ; CPU:$E9AB PRG:29AB ?? ldx #$14 ; CPU:$E9AD PRG:29AD ?? lda #$EA ; CPU:$E9AF PRG:29AF ?? sta MathResultHi ; CPU:$E9B1 PRG:29B1 ?? lda #$BC ; CPU:$E9B3 PRG:29B3 ?? sta MathResultLo ; CPU:$E9B5 PRG:29B5 ?? jsr RenderRoutine_ED2A ; CPU:$E9B7 PRG:29B7 ?? ldx #$03 ; CPU:$E9B9 PRG:29B9 ?? jsr RenderRoutine_E9A3 ; CPU:$E9BB PRG:29BB ?? lda #$00 ; CPU:$E9BD PRG:29BD ?? sta $0591,y ; CPU:$E9BF PRG:29BF ?? sty $0590 ; CPU:$E9C1 PRG:29C1 ?? Flow_E9A2: rts ; CPU:$E9C3 PRG:29C3 ?? ; ============================================================================= ; RenderRoutine_E9A3 ; CPU address: $E9A3 PRG offset: $29A3 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E9A3: lda PlayerPointScore,x ; CPU:$E9C5 PRG:29C5 ?? and #$0F ; CPU:$E9C7 PRG:29C7 ?? sta $0591,y ; CPU:$E9C9 PRG:29C9 ?? iny ; CPU:$E9CB PRG:29CB ?? jsr RenderRoutine_E9D4 ; CPU:$E9CD PRG:29CD ?? lda PointWinner ; CPU:$E9CF PRG:29CF ?? beq Flow_E9CE ; CPU:$E9D1 PRG:29D1 ?? lda Player2PointScore,x ; CPU:$E9D3 PRG:29D3 ?? and #$0F ; CPU:$E9D5 PRG:29D5 ?? sta $0591,y ; CPU:$E9D7 PRG:29D7 ?? iny ; CPU:$E9D9 PRG:29D9 ?? jsr RenderRoutine_E9D4 ; CPU:$E9DB PRG:29DB ?? lda PointWinner ; CPU:$E9DD PRG:29DD ?? cmp #$01 ; CPU:$E9DF PRG:29DF ?? beq RenderRoutine_E9D1 ; CPU:$E9E1 PRG:29E1 ?? lda PlayerGameScore,x ; CPU:$E9E3 PRG:29E3 ?? and #$0F ; CPU:$E9E5 PRG:29E5 ?? sta $0591,y ; CPU:$E9E7 PRG:29E7 ?? iny ; CPU:$E9E9 PRG:29E9 ?? jmp RenderRoutine_E9D4 ; CPU:$E9EB PRG:29EB ?? Flow_E9CE: jsr RenderRoutine_E9D1 ; CPU:$E9ED PRG:29ED ?? ; ============================================================================= ; RenderRoutine_E9D1 ; CPU address: $E9D1 PRG offset: $29D1 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E9D1: jsr RenderRoutine_E9D4 ; CPU:$E9EF PRG:29EF ?? ; ============================================================================= ; RenderRoutine_E9D4 ; CPU address: $E9D4 PRG offset: $29D4 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E9D4: lda #$76 ; CPU:$E9F1 PRG:29F1 ?? sta $0591,y ; CPU:$E9F3 PRG:29F3 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $29D9-$29DA. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_E9D9: .byte $C8, $60 ; PRG $29D9 / CPU $E9D9 ; CPU:$E9F5 PRG:29F5 C8 60 ; ============================================================================= ; RenderRoutine_E9DB ; CPU address: $E9DB PRG offset: $29DB ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_E9DB: lda MatchResultType ; CPU:$E9F7 PRG:29F7 ?? beq Flow_E9EE ; CPU:$E9F9 PRG:29F9 ?? ldx MessagePlayerIndex ; CPU:$E9FB PRG:29FB ?? ldy $0590 ; CPU:$E9FD PRG:29FD ?? dec MessageTimer ; CPU:$E9FF PRG:29FF ?? beq Flow_E9EF ; CPU:$EA01 PRG:2A01 ?? lda MessageTimer ; CPU:$EA03 PRG:2A03 ?? cmp #$18 ; CPU:$EA05 PRG:2A05 ?? beq Flow_E9FE ; CPU:$EA07 PRG:2A07 ?? Flow_E9EE: rts ; CPU:$EA09 PRG:2A09 ?? Flow_E9EF: lda #$28 ; CPU:$EA0B PRG:2A0B ?? sta MessageTimer ; CPU:$EA0D PRG:2A0D ?? lda ScoreDisplayState ; CPU:$EA0F PRG:2A0F ?? bne Flow_EA2A ; CPU:$EA11 PRG:2A11 ?? jsr RenderRoutine_EA16 ; CPU:$EA13 PRG:2A13 ?? lda #$76 ; CPU:$EA15 PRG:2A15 ?? bne Flow_EA09 ; CPU:$EA17 PRG:2A17 ?? Flow_E9FE: lda ScoreDisplayState ; CPU:$EA19 PRG:2A19 ?? bne Flow_EA49 ; CPU:$EA1B PRG:2A1B ?? jsr RenderRoutine_EA16 ; CPU:$EA1D PRG:2A1D ?? lda PlayerPointScore,x ; CPU:$EA1F PRG:2A1F ?? and #$0F ; CPU:$EA21 PRG:2A21 ?? Flow_EA09: sta $0591,y ; CPU:$EA23 PRG:2A23 ?? iny ; CPU:$EA25 PRG:2A25 ?? lda #$00 ; CPU:$EA27 PRG:2A27 ?? sta $0591,y ; CPU:$EA29 PRG:2A29 ?? sty $0590 ; CPU:$EA2B PRG:2A2B ?? rts ; CPU:$EA2D PRG:2A2D ?? ; ============================================================================= ; RenderRoutine_EA16 ; CPU address: $EA16 PRG offset: $2A16 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_EA16: lda #$22 ; CPU:$EA2F PRG:2A2F ?? sta $0591,y ; CPU:$EA31 PRG:2A31 ?? iny ; CPU:$EA33 PRG:2A33 ?? lda $EA82,x ; CPU:$EA35 PRG:2A35 ?? sta $0591,y ; CPU:$EA37 PRG:2A37 ?? iny ; CPU:$EA39 PRG:2A39 ?? lda #$01 ; CPU:$EA3B PRG:2A3B ?? sta $0591,y ; CPU:$EA3D PRG:2A3D ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2A28-$2A29. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_EA28: .byte $C8, $60 ; PRG $2A28 / CPU $EA28 ; CPU:$EA3F PRG:2A3F C8 60 Flow_EA2A: ldx PointWinner ; CPU:$EA41 PRG:2A41 ?? jsr RenderRoutine_EA6E ; CPU:$EA43 PRG:2A43 ?? lda #$76 ; CPU:$EA45 PRG:2A45 ?? sta $0591,y ; CPU:$EA47 PRG:2A47 ?? iny ; CPU:$EA49 PRG:2A49 ?? jsr RenderRoutine_EA16 ; CPU:$EA4B PRG:2A4B ?? lda #$76 ; CPU:$EA4D PRG:2A4D ?? sta $0591,y ; CPU:$EA4F PRG:2A4F ?? iny ; CPU:$EA51 PRG:2A51 ?? inx ; CPU:$EA53 PRG:2A53 ?? inx ; CPU:$EA55 PRG:2A55 ?? inx ; CPU:$EA57 PRG:2A57 ?? jsr RenderRoutine_EA16 ; CPU:$EA59 PRG:2A59 ?? lda #$76 ; CPU:$EA5B PRG:2A5B ?? jmp Flow_EA09 ; CPU:$EA5D PRG:2A5D ?? Flow_EA49: ldx PointWinner ; CPU:$EA5F PRG:2A5F ?? jsr RenderRoutine_EA6E ; CPU:$EA61 PRG:2A61 ?? txa ; CPU:$EA63 PRG:2A63 ?? clc ; CPU:$EA65 PRG:2A65 ?? adc #$29 ; CPU:$EA67 PRG:2A67 ?? sta $0591,y ; CPU:$EA69 PRG:2A69 ?? iny ; CPU:$EA6B PRG:2A6B ?? jsr RenderRoutine_EA16 ; CPU:$EA6D PRG:2A6D ?? lda PlayerPointScore,x ; CPU:$EA6F PRG:2A6F ?? and #$0F ; CPU:$EA71 PRG:2A71 ?? sta $0591,y ; CPU:$EA73 PRG:2A73 ?? iny ; CPU:$EA75 PRG:2A75 ?? inx ; CPU:$EA77 PRG:2A77 ?? inx ; CPU:$EA79 PRG:2A79 ?? inx ; CPU:$EA7B PRG:2A7B ?? jsr RenderRoutine_EA16 ; CPU:$EA7D PRG:2A7D ?? lda PlayerPointScore,x ; CPU:$EA7F PRG:2A7F ?? and #$0F ; CPU:$EA81 PRG:2A81 ?? jmp Flow_EA09 ; CPU:$EA83 PRG:2A83 ?? ; ============================================================================= ; RenderRoutine_EA6E ; CPU address: $EA6E PRG offset: $2A6E ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_EA6E: lda #$21 ; CPU:$EA85 PRG:2A85 ?? sta $0591,y ; CPU:$EA87 PRG:2A87 ?? iny ; CPU:$EA89 PRG:2A89 ?? lda $EA88,x ; CPU:$EA8B PRG:2A8B ?? sta $0591,y ; CPU:$EA8D PRG:2A8D ?? iny ; CPU:$EA8F PRG:2A8F ?? lda #$01 ; CPU:$EA91 PRG:2A91 ?? sta $0591,y ; CPU:$EA93 PRG:2A93 ?? iny ; CPU:$EA95 PRG:2A95 ?? rts ; CPU:$EA97 PRG:2A97 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2A82-$2AD9. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- UmpireMessageTileData: .byte $4F, $51, $53, $0F, $11, $13, $EF, $F1, $F3, $21, $24, $04, $0F, $11, $21, $04 ; PRG $2A82 / CPU $EA82 ; CPU:$EA99 PRG:2A99 4F 51 53 0F 11 13 EF F1 F3 21 24 04 0F 11 21 04 .byte $04, $76, $76, $76, $76, $20, $E4, $04, $14, $FF, $76, $00, $01, $05, $03, $00 ; PRG $2A92 / CPU $EA92 ; CPU:$EAA9 PRG:2AA9 04 76 76 76 76 20 E4 04 14 FF 76 00 01 05 03 00 .byte $04, $00, $76, $76, $76, $0A, $21, $EB, $0A, $76, $76, $76, $76, $29, $76, $2A ; PRG $2AA2 / CPU $EAA2 ; CPU:$EAB9 PRG:2AB9 04 00 76 76 76 0A 21 EB 0A 76 76 76 76 29 76 2A .byte $76, $2B, $76, $22, $4B, $0A, $76, $0F, $11, $76, $22, $2B, $0A, $76, $76, $76 ; PRG $2AB2 / CPU $EAB2 ; CPU:$EAC9 PRG:2AC9 76 2B 76 22 4B 0A 76 0F 11 76 22 2B 0A 76 76 76 .byte $76, $76, $76, $76, $76, $76, $76, $22, $0B, $0A, $76, $14, $FF, $76, $20, $E6 ; PRG $2AC2 / CPU $EAC2 ; CPU:$EAD9 PRG:2AD9 76 76 76 76 76 76 76 22 0B 0A 76 14 FF 76 20 E6 .byte $02, $04, $00, $21, $26, $02, $04, $00 ; PRG $2AD2 / CPU $EAD2 ; CPU:$EAE9 PRG:2AE9 02 04 00 21 26 02 04 00 ; ============================================================================= ; RenderRoutine_EADA ; CPU address: $EADA PRG offset: $2ADA ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_EADA: ldy $0590 ; CPU:$EAF1 PRG:2AF1 ?? lda #$EA ; CPU:$EAF3 PRG:2AF3 ?? sta MathResultHi ; CPU:$EAF5 PRG:2AF5 ?? lda #$EB ; CPU:$EAF7 PRG:2AF7 ?? sta MathResultLo ; CPU:$EAF9 PRG:2AF9 ?? ldx #$1A ; CPU:$EAFB PRG:2AFB ?? jsr RenderRoutine_ED1A ; CPU:$EAFD PRG:2AFD ?? rts ; CPU:$EAFF PRG:2AFF ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2AEB-$2B04. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- GraphicsTable_EAEB: .byte $22, $0B, $0A, $76, $76, $76, $17, $0E, $21, $1D, $76, $76, $76, $22, $4B, $0A ; PRG $2AEB / CPU $EAEB ; CPU:$EB01 PRG:2B01 22 0B 0A 76 76 76 17 0E 21 1D 76 76 76 22 4B 0A .byte $76, $76, $19, $15, $0A, $22, $0E, $1B, $76, $76 ; PRG $2AFB / CPU $EAFB ; CPU:$EB11 PRG:2B11 76 76 19 15 0A 22 0E 1B 76 76 ; ============================================================================= ; RenderRoutine_EB05 ; CPU address: $EB05 PRG offset: $2B05 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_EB05: ldy $0590 ; CPU:$EB1B PRG:2B1B ?? lda #$EB ; CPU:$EB1D PRG:2B1D ?? sta MathResultHi ; CPU:$EB1F PRG:2B1F ?? lda #$92 ; CPU:$EB21 PRG:2B21 ?? sta MathResultLo ; CPU:$EB23 PRG:2B23 ?? ldx #$36 ; CPU:$EB25 PRG:2B25 ?? jsr RenderRoutine_ED1A ; CPU:$EB27 PRG:2B27 ?? lda #$01 ; CPU:$EB29 PRG:2B29 ?? sta NmiUpdatesEnabled ; CPU:$EB2B PRG:2B2B ?? jsr EngineRoutine_C422 ; CPU:$EB2D PRG:2B2D ?? jsr RenderRoutine_ED7D ; CPU:$EB2F PRG:2B2F ?? lda #$01 ; CPU:$EB31 PRG:2B31 ?? sta NmiUpdatesEnabled ; CPU:$EB33 PRG:2B33 ?? jsr EngineRoutine_C422 ; CPU:$EB35 PRG:2B35 ?? lda MatchResultType ; CPU:$EB37 PRG:2B37 ?? beq Flow_EB57 ; CPU:$EB39 PRG:2B39 ?? ldy $0590 ; CPU:$EB3B PRG:2B3B ?? ldx #$34 ; CPU:$EB3D PRG:2B3D ?? lda #$EB ; CPU:$EB3F PRG:2B3F ?? sta MathResultHi ; CPU:$EB41 PRG:2B41 ?? lda #$C8 ; CPU:$EB43 PRG:2B43 ?? sta MathResultLo ; CPU:$EB45 PRG:2B45 ?? jsr RenderRoutine_ED2A ; CPU:$EB47 PRG:2B47 ?? lda MatchResultType ; CPU:$EB49 PRG:2B49 ?? cmp #$01 ; CPU:$EB4B PRG:2B4B ?? beq Flow_EB49 ; CPU:$EB4D PRG:2B4D ?? lda #$EC ; CPU:$EB4F PRG:2B4F ?? sta MathResultHi ; CPU:$EB51 PRG:2B51 ?? lda #$09 ; CPU:$EB53 PRG:2B53 ?? jmp Flow_EB4F ; CPU:$EB55 PRG:2B55 ?? Flow_EB49: lda #$EB ; CPU:$EB57 PRG:2B57 ?? sta MathResultHi ; CPU:$EB59 PRG:2B59 ?? lda #$FC ; CPU:$EB5B PRG:2B5B ?? Flow_EB4F: sta MathResultLo ; CPU:$EB5D PRG:2B5D ?? ldx #$0D ; CPU:$EB5F PRG:2B5F ?? jsr RenderRoutine_ED1A ; CPU:$EB61 PRG:2B61 ?? rts ; PRG $2B56 / CPU $EB56 ; CPU:$EB63 PRG:2B63 ?? Flow_EB57: ldy $0590 ; CPU:$EB65 PRG:2B65 ?? ldx #$5A ; CPU:$EB67 PRG:2B67 ?? lda #$EC ; CPU:$EB69 PRG:2B69 ?? sta MathResultHi ; CPU:$EB6B PRG:2B6B ?? lda #$16 ; CPU:$EB6D PRG:2B6D ?? sta MathResultLo ; CPU:$EB6F PRG:2B6F ?? jsr RenderRoutine_ED1A ; CPU:$EB71 PRG:2B71 ?? lda #$01 ; CPU:$EB73 PRG:2B73 ?? sta NmiUpdatesEnabled ; CPU:$EB75 PRG:2B75 ?? jsr EngineRoutine_C422 ; CPU:$EB77 PRG:2B77 ?? ldy $0590 ; CPU:$EB79 PRG:2B79 ?? lda Zp3A ; CPU:$EB7B PRG:2B7B ?? asl a ; CPU:$EB7D PRG:2B7D ?? tax ; CPU:$EB7F PRG:2B7F ?? lda $ECA2,x ; CPU:$EB81 PRG:2B81 ?? sta MathResultLo ; CPU:$EB83 PRG:2B83 ?? lda $ECA3,x ; CPU:$EB85 PRG:2B85 ?? sta MathResultHi ; CPU:$EB87 PRG:2B87 ?? ldx #$16 ; CPU:$EB89 PRG:2B89 ?? jsr RenderRoutine_ED2A ; CPU:$EB8B PRG:2B8B ?? ldx #$32 ; CPU:$EB8D PRG:2B8D ?? lda #$EC ; CPU:$EB8F PRG:2B8F ?? sta MathResultHi ; CPU:$EB91 PRG:2B91 ?? lda #$70 ; CPU:$EB93 PRG:2B93 ?? sta MathResultLo ; CPU:$EB95 PRG:2B95 ?? jsr RenderRoutine_ED1A ; CPU:$EB97 PRG:2B97 ?? rts ; CPU:$EB99 PRG:2B99 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2B92-$2D19. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- MatchScreenTextData: .byte $20, $C3, $06, $7B, $24, $24, $24, $24, $24, $20, $E3, $06, $24, $24, $24, $24 ; PRG $2B92 / CPU $EB92 ; CPU:$EB9B PRG:2B9B 20 C3 06 7B 24 24 24 24 24 20 E3 06 24 24 24 24 .byte $24, $24, $21, $03, $06, $24, $24, $24, $24, $24, $24, $21, $23, $06, $24, $24 ; PRG $2BA2 / CPU $EBA2 ; CPU:$EBAB PRG:2BAB 24 24 21 03 06 24 24 24 24 24 24 21 23 06 24 24 .byte $24, $24, $24, $24, $21, $43, $06, $24, $24, $24, $24, $24, $45, $23, $C8, $01 ; PRG $2BB2 / CPU $EBB2 ; CPU:$EBBB PRG:2BBB 24 24 24 24 21 43 06 24 24 24 24 24 45 23 C8 01 .byte $AA, $23, $CE, $02, $08, $AA, $21, $EB, $0A, $76, $76, $76, $76, $76, $76, $76 ; PRG $2BC2 / CPU $EBC2 ; CPU:$EBCB PRG:2BCB AA 23 CE 02 08 AA 21 EB 0A 76 76 76 76 76 76 76 .byte $76, $76, $76, $22, $0B, $0A, $76, $10, $0A, $16, $0E, $76, $1C, $0E, $1D, $76 ; PRG $2BD2 / CPU $EBD2 ; CPU:$EBDB PRG:2BDB 76 76 76 22 0B 0A 76 10 0A 16 0E 76 1C 0E 1D 76 .byte $22, $2B, $0A, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $22, $6B, $0A ; PRG $2BE2 / CPU $EBE2 ; CPU:$EBEB PRG:2BEB 22 2B 0A 76 76 76 76 76 76 76 76 76 76 22 6B 0A .byte $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $22, $4B, $0A, $76, $22, $18 ; PRG $2BF2 / CPU $EBF2 ; CPU:$EBFB PRG:2BFB 76 76 76 76 76 76 76 76 76 76 22 4B 0A 76 22 18 .byte $1E, $76, $20, $18, $17, $27, $76, $22, $4B, $0A, $76, $22, $18, $1E, $76, $15 ; PRG $2C02 / CPU $EC02 ; CPU:$EC0B PRG:2C0B 1E 76 20 18 17 27 76 22 4B 0A 76 22 18 1E 76 15 .byte $18, $1C, $1D, $27, $21, $EA, $0C, $76, $76, $76, $76, $76, $76, $76, $76, $76 ; PRG $2C12 / CPU $EC12 ; CPU:$EC1B PRG:2C1B 18 1C 1D 27 21 EA 0C 76 76 76 76 76 76 76 76 76 .byte $76, $76, $76, $22, $0A, $0C, $76, $76, $76, $20, $12, $17, $17, $0E, $1B, $76 ; PRG $2C22 / CPU $EC22 ; CPU:$EC2B PRG:2C2B 76 76 76 22 0A 0C 76 76 76 20 12 17 17 0E 1B 76 .byte $76, $76, $22, $2A, $0C, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76 ; PRG $2C32 / CPU $EC32 ; CPU:$EC3B PRG:2C3B 76 76 22 2A 0C 76 76 76 76 76 76 76 76 76 76 76 .byte $76, $22, $4A, $0C, $76, $0C, $18, $17, $10, $1B, $0A, $1D, $1E, $76, $76, $76 ; PRG $2C42 / CPU $EC42 ; CPU:$EC4B PRG:2C4B 76 22 4A 0C 76 0C 18 17 10 1B 0A 1D 1E 76 76 76 .byte $22, $6A, $0C, $76, $76, $76, $15, $0A, $1D, $12, $18, $17, $1C, $27, $76, $22 ; PRG $2C52 / CPU $EC52 ; CPU:$EC5B PRG:2C5B 22 6A 0C 76 76 76 15 0A 1D 12 18 17 1C 27 76 22 .byte $CA, $0C, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $23, $0A ; PRG $2C62 / CPU $EC62 ; CPU:$EC6B PRG:2C6B CA 0C 76 76 76 76 76 76 76 76 76 76 76 76 23 0A .byte $0C, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $76, $22, $8A, $0C ; PRG $2C72 / CPU $EC72 ; CPU:$EC7B PRG:2C7B 0C 76 76 76 76 76 76 76 76 76 76 76 76 22 8A 0C .byte $76, $76, $76, $76, $76, $82, $83, $76, $76, $76, $76, $76, $22, $AA, $0C, $76 ; PRG $2C82 / CPU $EC82 ; CPU:$EC8B PRG:2C8B 76 76 76 76 76 82 83 76 76 76 76 76 22 AA 0C 76 .byte $76, $76, $76, $76, $84, $85, $76, $76, $76, $76, $76, $23, $EB, $02, $0C, $03 ; PRG $2C92 / CPU $EC92 ; CPU:$EC9B PRG:2C9B 76 76 76 76 84 85 76 76 76 76 76 23 EB 02 0C 03 .byte $AC, $EC, $C2, $EC, $D8, $EC, $EE, $EC, $04, $ED, $22, $EA, $0C, $76, $76, $2C ; PRG $2CA2 / CPU $ECA2 ; CPU:$ECAB PRG:2CAB AC EC C2 EC D8 EC EE EC 04 ED 22 EA 0C 76 76 2C .byte $76, $76, $01, $00, $00, $00, $00, $76, $76, $3F, $0C, $04, $17, $0F, $30, $10 ; PRG $2CB2 / CPU $ECB2 ; CPU:$ECBB PRG:2CBB 76 76 01 00 00 00 00 76 76 3F 0C 04 17 0F 30 10 .byte $22, $EA, $0C, $76, $76, $2C, $76, $76, $02, $00, $00, $00, $00, $76, $76, $3F ; PRG $2CC2 / CPU $ECC2 ; CPU:$ECCB PRG:2CCB 22 EA 0C 76 76 2C 76 76 02 00 00 00 00 76 76 3F .byte $0C, $04, $17, $0F, $25, $30, $22, $EA, $0C, $76, $76, $2C, $76, $76, $03, $00 ; PRG $2CD2 / CPU $ECD2 ; CPU:$ECDB PRG:2CDB 0C 04 17 0F 25 30 22 EA 0C 76 76 2C 76 76 03 00 .byte $00, $00, $00, $76, $76, $3F, $0C, $04, $17, $0F, $21, $30, $22, $EA, $0C, $76 ; PRG $2CE2 / CPU $ECE2 ; CPU:$ECEB PRG:2CEB 00 00 00 76 76 3F 0C 04 17 0F 21 30 22 EA 0C 76 .byte $76, $2C, $76, $76, $05, $00, $00, $00, $00, $76, $76, $3F, $0C, $04, $17, $0F ; PRG $2CF2 / CPU $ECF2 ; CPU:$ECFB PRG:2CFB 76 2C 76 76 05 00 00 00 00 76 76 3F 0C 04 17 0F .byte $10, $30, $22, $EA, $0C, $76, $76, $2C, $76, $01, $00, $00, $00, $00, $00, $76 ; PRG $2D02 / CPU $ED02 ; CPU:$ED0B PRG:2D0B 10 30 22 EA 0C 76 76 2C 76 01 00 00 00 00 00 76 .byte $76, $3F, $0C, $04, $17, $0F, $27, $30 ; PRG $2D12 / CPU $ED12 ; CPU:$ED1B PRG:2D1B 76 3F 0C 04 17 0F 27 30 ; ============================================================================= ; RenderRoutine_ED1A ; CPU address: $ED1A PRG offset: $2D1A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_ED1A: jsr RenderRoutine_ED2A ; CPU:$ED23 PRG:2D23 ?? lda #$00 ; CPU:$ED25 PRG:2D25 ?? sta $0591,y ; CPU:$ED27 PRG:2D27 ?? sty $0590 ; CPU:$ED29 PRG:2D29 ?? lda #$01 ; CPU:$ED2B PRG:2D2B ?? sta PpuBufferReady ; CPU:$ED2D PRG:2D2D ?? rts ; CPU:$ED2F PRG:2D2F ?? ; ============================================================================= ; RenderRoutine_ED2A ; CPU address: $ED2A PRG offset: $2D2A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_ED2A: sty Zp11 ; CPU:$ED31 PRG:2D31 ?? lda MathResultLo ; CPU:$ED33 PRG:2D33 ?? sec ; CPU:$ED35 PRG:2D35 ?? sbc Zp11 ; CPU:$ED37 PRG:2D37 ?? sta MathResultLo ; CPU:$ED39 PRG:2D39 ?? bcs Flow_ED37 ; CPU:$ED3B PRG:2D3B ?? dec MathResultHi ; CPU:$ED3D PRG:2D3D ?? Flow_ED37: lda (MathResultLo),y ; CPU:$ED3F PRG:2D3F ?? sta $0591,y ; CPU:$ED41 PRG:2D41 ?? iny ; CPU:$ED43 PRG:2D43 ?? dex ; CPU:$ED45 PRG:2D45 ?? bne Flow_ED37 ; CPU:$ED47 PRG:2D47 ?? rts ; PRG $2D40 / CPU $ED40 ; CPU:$ED49 PRG:2D49 ?? ; ============================================================================= ; RenderRoutine_ED41 ; CPU address: $ED41 PRG offset: $2D41 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_ED41: ldx #$09 ; CPU:$ED4B PRG:2D4B ?? ldy #$F0 ; CPU:$ED4D PRG:2D4D ?? jsr DrawScreenData ; CPU:$ED4F PRG:2D4F ?? lda #$01 ; CPU:$ED51 PRG:2D51 ?? sta PaletteUpdateMode ; CPU:$ED53 PRG:2D53 ?? rts ; CPU:$ED55 PRG:2D55 ?? ; ============================================================================= ; RenderRoutine_ED4D ; CPU address: $ED4D PRG offset: $2D4D ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_ED4D: ldx #$8F ; CPU:$ED57 PRG:2D57 ?? ldy #$EE ; CPU:$ED59 PRG:2D59 ?? jsr DrawScreenData ; CPU:$ED5B PRG:2D5B ?? lda #$03 ; CPU:$ED5D PRG:2D5D ?? sta PaletteUpdateMode ; CPU:$ED5F PRG:2D5F ?? rts ; PRG $2D58 / CPU $ED58 ; CPU:$ED61 PRG:2D61 ?? ; ============================================================================= ; RenderRoutine_ED59 ; CPU address: $ED59 PRG offset: $2D59 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_ED59: lda ServingPlayer ; CPU:$ED63 PRG:2D63 ?? asl a ; CPU:$ED65 PRG:2D65 ?? tay ; CPU:$ED67 PRG:2D67 ?? lda $EE62,y ; CPU:$ED69 PRG:2D69 ?? sta MathResultLo ; CPU:$ED6B PRG:2D6B ?? lda $EE63,y ; CPU:$ED6D PRG:2D6D ?? sta MathResultHi ; CPU:$ED6F PRG:2D6F ?? ldx #$07 ; CPU:$ED71 PRG:2D71 ?? ldy $0590 ; CPU:$ED73 PRG:2D73 ?? jsr RenderRoutine_ED1A ; CPU:$ED75 PRG:2D75 ?? rts ; CPU:$ED77 PRG:2D77 ?? ; ============================================================================= ; RenderRoutine_ED70 ; CPU address: $ED70 PRG offset: $2D70 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_ED70: jsr RenderRoutine_ED7D ; CPU:$ED79 PRG:2D79 ?? lda #$01 ; CPU:$ED7B PRG:2D7B ?? sta NmiUpdatesEnabled ; CPU:$ED7D PRG:2D7D ?? jsr EngineRoutine_C422 ; CPU:$ED7F PRG:2D7F ?? jmp Flow_ED8E ; CPU:$ED81 PRG:2D81 ?? ; ============================================================================= ; RenderRoutine_ED7D ; CPU address: $ED7D PRG offset: $2D7D ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RenderRoutine_ED7D: ldy $0590 ; CPU:$ED83 PRG:2D83 ?? lda #$9F ; CPU:$ED85 PRG:2D85 ?? sta MathResultLo ; CPU:$ED87 PRG:2D87 ?? lda #$ED ; CPU:$ED89 PRG:2D89 ?? sta MathResultHi ; CPU:$ED8B PRG:2D8B ?? ldx #$31 ; CPU:$ED8D PRG:2D8D ?? jsr RenderRoutine_ED1A ; CPU:$ED8F PRG:2D8F ?? rts ; CPU:$ED91 PRG:2D91 ?? Flow_ED8E: lda #$D0 ; CPU:$ED93 PRG:2D93 ?? sta MathResultLo ; CPU:$ED95 PRG:2D95 ?? lda #$ED ; CPU:$ED97 PRG:2D97 ?? sta MathResultHi ; CPU:$ED99 PRG:2D99 ?? ldx #$41 ; CPU:$ED9B PRG:2D9B ?? ldy $0590 ; CPU:$ED9D PRG:2D9D ?? jsr RenderRoutine_ED1A ; CPU:$ED9F PRG:2D9F ?? rts ; CPU:$EDA1 PRG:2DA1 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $2D9F-$38DF. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- ScreenAndAnimationAssetData: .byte $20, $97, $07, $24, $24, $24, $7C, $4D, $4D, $4D, $20, $B7, $07, $24, $24, $24 ; PRG $2D9F / CPU $ED9F ; CPU:$EDA3 PRG:2DA3 20 97 07 24 24 24 7C 4D 4D 4D 20 B7 07 24 24 24 .byte $24, $7C, $4D, $4D, $20, $D7, $07, $24, $24, $24, $24, $24, $7C, $4D, $20, $F7 ; PRG $2DAF / CPU $EDAF ; CPU:$EDB3 PRG:2DB3 24 7C 4D 4D 20 D7 07 24 24 24 24 24 7C 4D 20 F7 .byte $07, $24, $24, $24, $24, $24, $24, $7C, $21, $1B, $01, $24, $21, $3B, $02, $7D ; PRG $2DBF / CPU $EDBF ; CPU:$EDC3 PRG:2DC3 07 24 24 24 24 24 24 7C 21 1B 01 24 21 3B 02 7D .byte $AF, $21, $EB, $0A, $4D, $4D, $4D, $4D, $6D, $6E, $4D, $4D, $4D, $4D, $22, $0B ; PRG $2DCF / CPU $EDCF ; CPU:$EDD3 PRG:2DD3 AF 21 EB 0A 4D 4D 4D 4D 6D 6E 4D 4D 4D 4D 22 0B .byte $0A, $4D, $4D, $4D, $4D, $6D, $6E, $4D, $4D, $4D, $4D, $22, $2B, $0A, $4D, $4D ; PRG $2DDF / CPU $EDDF ; CPU:$EDE3 PRG:2DE3 0A 4D 4D 4D 4D 6D 6E 4D 4D 4D 4D 22 2B 0A 4D 4D .byte $4D, $4D, $6D, $6E, $4D, $4D, $4D, $4D, $22, $4B, $0A, $4D, $4D, $4D, $4D, $6D ; PRG $2DEF / CPU $EDEF ; CPU:$EDF3 PRG:2DF3 4D 4D 6D 6E 4D 4D 4D 4D 22 4B 0A 4D 4D 4D 4D 6D .byte $6E, $4D, $4D, $4D, $4D, $22, $6B, $0A, $A4, $A4, $A4, $A4, $89, $8A, $A4, $A4 ; PRG $2DFF / CPU $EDFF ; CPU:$EE03 PRG:2E03 6E 4D 4D 4D 4D 22 6B 0A A4 A4 A4 A4 89 8A A4 A4 .byte $A4, $A4, $3F, $00, $1D, $17, $0F, $30, $19, $17, $0F, $30, $27, $17, $21, $30 ; PRG $2E0F / CPU $EE0F ; CPU:$EE13 PRG:2E13 A4 A4 3F 00 1D 17 0F 30 19 17 0F 30 27 17 21 30 .byte $02, $17, $0F, $30, $02, $17, $0F, $27, $21, $17, $07, $27, $20, $17, $39, $0F ; PRG $2E1F / CPU $EE1F ; CPU:$EE23 PRG:2E23 02 17 0F 30 02 17 0F 27 21 17 07 27 20 17 39 0F .byte $17, $17, $00, $3F, $00, $14, $0F, $30, $0F, $21, $0F, $0F, $27, $0F, $0F, $0F ; PRG $2E2F / CPU $EE2F ; CPU:$EE33 PRG:2E33 17 17 00 3F 00 14 0F 30 0F 21 0F 0F 27 0F 0F 0F .byte $30, $0F, $0F, $30, $29, $19, $0F, $35, $35, $35, $00, $3F, $00, $14, $17, $0F ; PRG $2E3F / CPU $EE3F ; CPU:$EE43 PRG:2E43 30 0F 0F 30 29 19 0F 35 35 35 00 3F 00 14 17 0F .byte $30, $19, $17, $0F, $30, $27, $17, $21, $30, $02, $17, $0F, $22, $02, $17, $30 ; PRG $2E4F / CPU $EE4F ; CPU:$EE53 PRG:2E53 30 19 17 0F 30 27 17 21 30 02 17 0F 22 02 17 30 .byte $25, $0F, $00, $6C, $EE, $73, $EE, $7A, $EE, $81, $EE, $88, $EE, $3F, $1C, $04 ; PRG $2E5F / CPU $EE5F ; CPU:$EE63 PRG:2E63 25 0F 00 6C EE 73 EE 7A EE 81 EE 88 EE 3F 1C 04 .byte $17, $07, $36, $2B, $3F, $1C, $04, $17, $07, $27, $25, $3F, $1C, $04, $17, $0F ; PRG $2E6F / CPU $EE6F ; CPU:$EE73 PRG:2E73 17 07 36 2B 3F 1C 04 17 07 27 25 3F 1C 04 17 0F .byte $27, $31, $3F, $1C, $04, $17, $0F, $27, $04, $3F, $1C, $04, $17, $07, $26, $0F ; PRG $2E7F / CPU $EE7F ; CPU:$EE83 PRG:2E83 27 31 3F 1C 04 17 0F 27 04 3F 1C 04 17 07 26 0F .byte $21, $EB, $4B, $76, $22, $0B, $0B, $76, $1C, $0E, $15, $0E, $0C, $1D, $76, $76 ; PRG $2E8F / CPU $EE8F ; CPU:$EE93 PRG:2E93 21 EB 4B 76 22 0B 0B 76 1C 0E 15 0E 0C 1D 76 76 .byte $76, $76, $22, $2B, $0B, $76, $76, $76, $76, $76, $15, $0E, $1F, $0E, $15, $76 ; PRG $2E9F / CPU $EE9F ; CPU:$EEA3 PRG:2EA3 76 76 22 2B 0B 76 76 76 76 76 15 0E 1F 0E 15 76 .byte $22, $4B, $4B, $76, $22, $6B, $0B, $76, $01, $76, $02, $76, $03, $76, $04, $76 ; PRG $2EAF / CPU $EEAF ; CPU:$EEB3 PRG:2EB3 22 4B 4B 76 22 6B 0B 76 01 76 02 76 03 76 04 76 .byte $05, $76, $22, $8B, $4B, $76, $22, $AB, $4B, $76, $20, $C4, $45, $24, $21, $43 ; PRG $2EBF / CPU $EEBF ; CPU:$EEC3 PRG:2EC3 05 76 22 8B 4B 76 22 AB 4B 76 20 C4 45 24 21 43 .byte $45, $24, $20, $C3, $84, $7B, $24, $24, $24, $20, $E8, $84, $24, $24, $24, $45 ; PRG $2ECF / CPU $EECF ; CPU:$EED3 PRG:2ED3 45 24 20 C3 84 7B 24 24 24 20 E8 84 24 24 24 45 .byte $23, $E3, $03, $F0, $F0, $30, $00, $20, $83, $1A, $D8, $D9, $D9, $DA, $24, $D8 ; PRG $2EDF / CPU $EEDF ; CPU:$EEE3 PRG:2EE3 23 E3 03 F0 F0 30 00 20 83 1A D8 D9 D9 DA 24 D8 .byte $D9, $D9, $DA, $24, $E7, $E8, $24, $E9, $24, $E7, $E8, $24, $E9, $24, $E9, $24 ; PRG $2EEF / CPU $EEEF ; CPU:$EEF3 PRG:2EF3 D9 D9 DA 24 E7 E8 24 E9 24 E7 E8 24 E9 24 E9 24 .byte $F8, $D9, $D9, $DA, $20, $A3, $1A, $DB, $DC, $DD, $DE, $24, $E3, $E4, $E4, $DE ; PRG $2EFF / CPU $EEFF ; CPU:$EF03 PRG:2F03 F8 D9 D9 DA 20 A3 1A DB DC DD DE 24 E3 E4 E4 DE .byte $24, $EA, $EB, $EC, $E5, $24, $EA, $EB, $EC, $E5, $24, $E5, $24, $E3, $E4, $E4 ; PRG $2F0F / CPU $EF0F ; CPU:$EF13 PRG:2F13 24 EA EB EC E5 24 EA EB EC E5 24 E5 24 E3 E4 E4 .byte $DE, $20, $C4, $16, $DF, $E0, $24, $24, $E5, $24, $24, $24, $24, $EA, $4D, $ED ; PRG $2F1F / CPU $EF1F ; CPU:$EF23 PRG:2F23 DE 20 C4 16 DF E0 24 24 E5 24 24 24 24 EA 4D ED .byte $E5, $24, $EA, $4D, $ED, $E5, $24, $E5, $24, $E5, $20, $E4, $19, $DF, $E0, $24 ; PRG $2F2F / CPU $EF2F ; CPU:$EF33 PRG:2F33 E5 24 EA 4D ED E5 24 E5 24 E5 20 E4 19 DF E0 24 .byte $24, $E6, $D9, $D9, $DA, $24, $EE, $EF, $F0, $F1, $24, $EE, $EF, $F0, $F1, $24 ; PRG $2F3F / CPU $EF3F ; CPU:$EF43 PRG:2F43 24 E6 D9 D9 DA 24 EE EF F0 F1 24 EE EF F0 F1 24 .byte $E5, $24, $E6, $D9, $D9, $F9, $21, $04, $19, $DF, $E0, $24, $24, $E3, $E4, $E4 ; PRG $2F4F / CPU $EF4F ; CPU:$EF53 PRG:2F53 E5 24 E6 D9 D9 F9 21 04 19 DF E0 24 24 E3 E4 E4 .byte $DE, $24, $E5, $F2, $4D, $F3, $24, $E5, $F2, $4D, $F3, $24, $E5, $24, $FA, $E4 ; PRG $2F5F / CPU $EF5F ; CPU:$EF63 PRG:2F63 DE 24 E5 F2 4D F3 24 E5 F2 4D F3 24 E5 24 FA E4 .byte $E4, $FD, $21, $24, $19, $DF, $E0, $24, $24, $E5, $24, $24, $24, $24, $E5, $F4 ; PRG $2F6F / CPU $EF6F ; CPU:$EF73 PRG:2F73 E4 FD 21 24 19 DF E0 24 24 E5 24 24 24 24 E5 F4 .byte $F5, $F3, $24, $E5, $F4, $F5, $F3, $24, $E5, $24, $24, $24, $24, $E5, $21, $44 ; PRG $2F7F / CPU $EF7F ; CPU:$EF83 PRG:2F83 F5 F3 24 E5 F4 F5 F3 24 E5 24 24 24 24 E5 21 44 .byte $19, $DF, $E0, $24, $24, $E6, $D9, $D9, $DA, $24, $E5, $24, $F6, $F7, $24, $E5 ; PRG $2F8F / CPU $EF8F ; CPU:$EF93 PRG:2F93 19 DF E0 24 24 E6 D9 D9 DA 24 E5 24 F6 F7 24 E5 .byte $24, $F6, $F7, $24, $E5, $24, $D8, $D9, $D9, $FE, $21, $64, $19, $E1, $E2, $24 ; PRG $2F9F / CPU $EF9F ; CPU:$EFA3 PRG:2FA3 24 F6 F7 24 E5 24 D8 D9 D9 FE 21 64 19 E1 E2 24 .byte $24, $DB, $E4, $E4, $DE, $24, $FC, $24, $24, $FC, $24, $FC, $24, $24, $FC, $24 ; PRG $2FAF / CPU $EFAF ; CPU:$EFB3 PRG:2FB3 24 DB E4 E4 DE 24 FC 24 24 FC 24 FC 24 24 FC 24 .byte $FC, $24, $DB, $E4, $E4, $FB, $22, $2A, $0C, $1C, $12, $17, $10, $15, $0E, $1C ; PRG $2FBF / CPU $EFBF ; CPU:$EFC3 PRG:2FC3 FC 24 DB E4 E4 FB 22 2A 0C 1C 12 17 10 15 0E 1C .byte $24, $10, $0A, $16, $0E, $22, $8A, $0C, $0D, $18, $1E, $0B, $15, $0E, $1C, $24 ; PRG $2FCF / CPU $EFCF ; CPU:$EFD3 PRG:2FD3 24 10 0A 16 0E 22 8A 0C 0D 18 1E 0B 15 0E 1C 24 .byte $10, $0A, $16, $0E, $23, $05, $16, $25, $01, $09, $08, $03, $24, $17, $12, $17 ; PRG $2FDF / CPU $EFDF ; CPU:$EFE3 PRG:2FE3 10 0A 16 0E 23 05 16 25 01 09 08 03 24 17 12 17 .byte $1D, $0E, $17, $0D, $18, $24, $0C, $18, $28, $15, $1D, $0D, $26, $23, $C0, $60 ; PRG $2FEF / CPU $EFEF ; CPU:$EFF3 PRG:2FF3 1D 0E 17 0D 18 24 0C 18 28 15 1D 0D 26 23 C0 60 .byte $00, $23, $E0, $50, $55, $23, $F0, $50, $AA, $00, $20, $C9, $0E, $30, $31, $32 ; PRG $2FFF / CPU $EFFF ; CPU:$F003 PRG:3003 00 23 E0 50 55 23 F0 50 AA 00 20 C9 0E 30 31 32 .byte $32, $32, $32, $33, $34, $32, $32, $32, $32, $35, $36, $20, $E9, $0E, $37, $38 ; PRG $300F / CPU $F00F ; CPU:$F013 PRG:3013 32 32 32 33 34 32 32 32 32 35 36 20 E9 0E 37 38 .byte $4D, $4D, $4D, $4D, $4D, $4D, $4D, $4D, $4D, $4D, $39, $3A, $21, $09, $0E, $3B ; PRG $301F / CPU $F01F ; CPU:$F023 PRG:3023 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 39 3A 21 09 0E 3B .byte $3C, $4D, $4D, $4D, $4D, $4D, $4D, $4D, $4D, $4D, $4D, $3D, $3E, $21, $29, $0E ; PRG $302F / CPU $F02F ; CPU:$F033 PRG:3033 3C 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 3D 3E 21 29 0E .byte $3F, $40, $32, $32, $32, $32, $41, $42, $32, $32, $32, $32, $43, $44, $21, $48 ; PRG $303F / CPU $F03F ; CPU:$F043 PRG:3043 3F 40 32 32 32 32 41 42 32 32 32 32 43 44 21 48 .byte $10, $45, $46, $47, $4D, $4D, $4D, $4D, $6D, $6E, $4D, $4D, $4D, $4D, $48, $49 ; PRG $304F / CPU $F04F ; CPU:$F053 PRG:3053 10 45 46 47 4D 4D 4D 4D 6D 6E 4D 4D 4D 4D 48 49 .byte $4A, $21, $68, $10, $9B, $90, $91, $4D, $4D, $4D, $4D, $6D, $6E, $4D, $4D, $4D ; PRG $305F / CPU $F05F ; CPU:$F063 PRG:3063 4A 21 68 10 9B 90 91 4D 4D 4D 4D 6D 6E 4D 4D 4D .byte $4D, $92, $93, $9E, $21, $86, $14, $51, $52, $53, $54, $55, $56, $57, $55, $56 ; PRG $306F / CPU $F06F ; CPU:$F073 PRG:3073 4D 92 93 9E 21 86 14 51 52 53 54 55 56 57 55 56 .byte $58, $4B, $55, $56, $57, $55, $56, $59, $5A, $5B, $5C, $21, $A6, $14, $5D, $5E ; PRG $307F / CPU $F07F ; CPU:$F083 PRG:3083 58 4B 55 56 57 55 56 59 5A 5B 5C 21 A6 14 5D 5E .byte $5F, $60, $61, $62, $63, $61, $62, $64, $4C, $61, $62, $63, $61, $62, $66, $67 ; PRG $308F / CPU $F08F ; CPU:$F093 PRG:3093 5F 60 61 62 63 61 62 64 4C 61 62 63 61 62 66 67 .byte $68, $69, $21, $C7, $12, $95, $96, $A0, $4D, $4D, $4D, $4D, $4D, $6D, $6E, $4D ; PRG $309F / CPU $F09F ; CPU:$F0A3 PRG:30A3 68 69 21 C7 12 95 96 A0 4D 4D 4D 4D 4D 6D 6E 4D .byte $4D, $4D, $4D, $4D, $A1, $99, $9A, $21, $E7, $12, $9B, $4D, $8D, $4D, $4D, $4D ; PRG $30AF / CPU $F0AF ; CPU:$F0B3 PRG:30B3 4D 4D 4D 4D A1 99 9A 21 E7 12 9B 4D 8D 4D 4D 4D .byte $4D, $4D, $6D, $6E, $4D, $4D, $4D, $4D, $4D, $8E, $4D, $9E, $22, $07, $12, $9F ; PRG $30BF / CPU $F0BF ; CPU:$F0C3 PRG:30C3 4D 4D 6D 6E 4D 4D 4D 4D 4D 8E 4D 9E 22 07 12 9F .byte $90, $91, $4D, $4D, $4D, $4D, $4D, $6D, $6E, $4D, $4D, $4D, $4D, $4D, $92, $93 ; PRG $30CF / CPU $F0CF ; CPU:$F0D3 PRG:30D3 90 91 4D 4D 4D 4D 4D 6D 6E 4D 4D 4D 4D 4D 92 93 .byte $A2, $22, $27, $12, $8F, $97, $4D, $4D, $4D, $4D, $4D, $4D, $6D, $6E, $4D, $4D ; PRG $30DF / CPU $F0DF ; CPU:$F0E3 PRG:30E3 A2 22 27 12 8F 97 4D 4D 4D 4D 4D 4D 6D 6E 4D 4D .byte $4D, $4D, $4D, $4D, $98, $94, $22, $46, $14, $95, $96, $9C, $4D, $4D, $4D, $4D ; PRG $30EF / CPU $F0EF ; CPU:$F0F3 PRG:30F3 4D 4D 4D 4D 98 94 22 46 14 95 96 9C 4D 4D 4D 4D .byte $4D, $4D, $6D, $6E, $4D, $4D, $4D, $4D, $4D, $4D, $9D, $99, $9A, $22, $66, $14 ; PRG $30FF / CPU $F0FF ; CPU:$F103 PRG:3103 4D 4D 6D 6E 4D 4D 4D 4D 4D 4D 9D 99 9A 22 66 14 .byte $9B, $4D, $87, $A4, $A4, $A4, $A4, $A4, $A4, $89, $8A, $A4, $A4, $A4, $A4, $A4 ; PRG $310F / CPU $F10F ; CPU:$F113 PRG:3113 9B 4D 87 A4 A4 A4 A4 A4 A4 89 8A A4 A4 A4 A4 A4 .byte $A4, $8B, $4D, $9E, $22, $86, $03, $9F, $4D, $8D, $22, $97, $03, $8E, $4D, $A2 ; PRG $311F / CPU $F11F ; CPU:$F123 PRG:3123 A4 8B 4D 9E 22 86 03 9F 4D 8D 22 97 03 8E 4D A2 .byte $22, $A6, $03, $8F, $90, $91, $22, $B7, $03, $92, $93, $94, $22, $C5, $03, $95 ; PRG $312F / CPU $F12F ; CPU:$F133 PRG:3133 22 A6 03 8F 90 91 22 B7 03 92 93 94 22 C5 03 95 .byte $96, $97, $22, $D8, $03, $98, $99, $9A, $22, $E5, $03, $9B, $4D, $9C, $22, $F8 ; PRG $313F / CPU $F13F ; CPU:$F143 PRG:3143 96 97 22 D8 03 98 99 9A 22 E5 03 9B 4D 9C 22 F8 .byte $03, $9D, $4D, $9E, $23, $05, $03, $9F, $4D, $A0, $23, $18, $03, $A1, $4D, $A2 ; PRG $314F / CPU $F14F ; CPU:$F153 PRG:3153 03 9D 4D 9E 23 05 03 9F 4D A0 23 18 03 A1 4D A2 .byte $23, $25, $16, $A3, $A4, $A5, $A4, $A4, $A4, $A4, $A4, $A4, $A4, $A6, $A7, $A4 ; PRG $315F / CPU $F15F ; CPU:$F163 PRG:3163 23 25 16 A3 A4 A5 A4 A4 A4 A4 A4 A4 A4 A6 A7 A4 .byte $A4, $A4, $A4, $A4, $A4, $A4, $A8, $A4, $A9, $22, $89, $4E, $4D, $22, $A9, $4E ; PRG $316F / CPU $F16F ; CPU:$F173 PRG:3173 A4 A4 A4 A4 A4 A4 A8 A4 A9 22 89 4E 4D 22 A9 4E .byte $4D, $22, $C8, $50, $4D, $22, $E8, $50, $4D, $23, $08, $50, $4D, $21, $3B, $86 ; PRG $317F / CPU $F17F ; CPU:$F183 PRG:3183 4D 22 C8 50 4D 22 E8 50 4D 23 08 50 4D 21 3B 86 .byte $7D, $AA, $AB, $AC, $AD, $13, $21, $3C, $85, $AF, $B0, $B1, $B2, $B3, $21, $BD ; PRG $318F / CPU $F18F ; CPU:$F193 PRG:3193 7D AA AB AC AD 13 21 3C 85 AF B0 B1 B2 B3 21 BD .byte $82, $1A, $23, $20, $00, $20, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E ; PRG $319F / CPU $F19F ; CPU:$F1A3 PRG:31A3 82 1A 23 20 00 20 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E .byte $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E ; PRG $31AF / CPU $F1AF ; CPU:$F1B3 PRG:31B3 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E .byte $2F, $2E, $2F, $2E, $2F, $2E, $20, $20, $20, $2E, $2F, $2E, $2F, $2E, $2F, $2E ; PRG $31BF / CPU $F1BF ; CPU:$F1C3 PRG:31C3 2F 2E 2F 2E 2F 2E 20 20 20 2E 2F 2E 2F 2E 2F 2E .byte $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E ; PRG $31CF / CPU $F1CF ; CPU:$F1D3 PRG:31D3 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E 2F 2E .byte $2F, $2E, $2F, $2E, $2F, $2E, $2F, $2E, $2F, $20, $40, $07, $2F, $2E, $2F, $2E ; PRG $31DF / CPU $F1DF ; CPU:$F1E3 PRG:31E3 2F 2E 2F 2E 2F 2E 2F 2E 2F 20 40 07 2F 2E 2F 2E .byte $2D, $78, $4F, $20, $47, $53, $4D, $20, $59, $14, $50, $79, $4E, $2F, $2E, $2F ; PRG $31EF / CPU $F1EF ; CPU:$F1F3 PRG:31F3 2D 78 4F 20 47 53 4D 20 59 14 50 79 4E 2F 2E 2F .byte $2E, $2E, $2F, $2D, $78, $4D, $4D, $4F, $70, $71, $72, $73, $74, $75, $20, $6D ; PRG $31FF / CPU $F1FF ; CPU:$F203 PRG:3203 2E 2E 2F 2D 78 4D 4D 4F 70 71 72 73 74 75 20 6D .byte $4C, $4D, $20, $79, $0D, $50, $4D, $4D, $79, $4E, $2E, $2F, $2D, $78, $4D, $4D ; PRG $320F / CPU $F20F ; CPU:$F213 PRG:3213 4C 4D 20 79 0D 50 4D 4D 79 4E 2E 2F 2D 78 4D 4D .byte $4D, $7B, $20, $9A, $0B, $7C, $4D, $4D, $4D, $79, $4E, $4D, $4D, $4D, $4D, $7B ; PRG $321F / CPU $F21F ; CPU:$F223 PRG:3223 4D 7B 20 9A 0B 7C 4D 4D 4D 79 4E 4D 4D 4D 4D 7B .byte $20, $BB, $09, $7C, $4D, $4D, $4D, $4D, $4D, $4D, $4D, $7B, $20, $DC, $07, $7C ; PRG $322F / CPU $F22F ; CPU:$F233 PRG:3233 20 BB 09 7C 4D 4D 4D 4D 4D 4D 4D 7B 20 DC 07 7C .byte $4D, $4D, $4D, $4D, $4D, $7B, $20, $FD, $05, $7C, $4D, $4D, $4D, $7B, $21, $1E ; PRG $323F / CPU $F23F ; CPU:$F243 PRG:3243 4D 4D 4D 4D 4D 7B 20 FD 05 7C 4D 4D 4D 7B 21 1E .byte $03, $7C, $4D, $7B, $21, $3F, $01, $7C, $20, $C3, $85, $65, $6C, $6C, $6C, $86 ; PRG $324F / CPU $F24F ; CPU:$F253 PRG:3253 03 7C 4D 7B 21 3F 01 7C 20 C3 85 65 6C 6C 6C 86 .byte $20, $C8, $85, $6B, $6F, $6F, $6F, $8C, $20, $C4, $44, $6A, $21, $44, $44, $88 ; PRG $325F / CPU $F25F ; CPU:$F263 PRG:3263 20 C8 85 6B 6F 6F 6F 8C 20 C4 44 6A 21 44 44 88 .byte $23, $C0, $48, $AA, $23, $C8, $02, $EA, $02, $23, $CE, $03, $0C, $BB, $02, $23 ; PRG $326F / CPU $F26F ; CPU:$F273 PRG:3273 23 C0 48 AA 23 C8 02 EA 02 23 CE 03 0C BB 02 23 .byte $D6, $02, $44, $19, $00, $F4, $FE, $00, $40, $A0, $FD, $00, $98, $0A, $F3, $18 ; PRG $327F / CPU $F27F ; CPU:$F283 PRG:3283 D6 02 44 19 00 F4 FE 00 40 A0 FD 00 98 0A F3 18 .byte $F3, $26, $F3, $34, $F3, $42, $F3, $50, $F3, $5E, $F3, $6C, $F3, $7A, $F3, $88 ; PRG $328F / CPU $F28F ; CPU:$F293 PRG:3293 F3 26 F3 34 F3 42 F3 50 F3 5E F3 6C F3 7A F3 88 .byte $F3, $96, $F3, $A4, $F3, $B2, $F3, $C0, $F3, $CE, $F3, $DC, $F3, $EA, $F3, $F8 ; PRG $329F / CPU $F29F ; CPU:$F2A3 PRG:32A3 F3 96 F3 A4 F3 B2 F3 C0 F3 CE F3 DC F3 EA F3 F8 .byte $F3, $06, $F4, $14, $F4, $22, $F4, $30, $F4, $3E, $F4, $4C, $F4, $5A, $F4, $68 ; PRG $32AF / CPU $F2AF ; CPU:$F2B3 PRG:32B3 F3 06 F4 14 F4 22 F4 30 F4 3E F4 4C F4 5A F4 68 .byte $F4, $76, $F4, $81, $F4, $8C, $F4, $97, $F4, $A2, $F4, $AD, $F4, $B8, $F4, $C3 ; PRG $32BF / CPU $F2BF ; CPU:$F2C3 PRG:32C3 F4 76 F4 81 F4 8C F4 97 F4 A2 F4 AD F4 B8 F4 C3 .byte $F4, $CE, $F4, $D9, $F4, $E4, $F4, $F2, $F4, $FD, $F4, $08, $F5, $13, $F5, $1E ; PRG $32CF / CPU $F2CF ; CPU:$F2D3 PRG:32D3 F4 CE F4 D9 F4 E4 F4 F2 F4 FD F4 08 F5 13 F5 1E .byte $F5, $29, $F5, $34, $F5, $3F, $F5, $4A, $F5, $55, $F5, $60, $F5, $65, $F5, $6A ; PRG $32DF / CPU $F2DF ; CPU:$F2E3 PRG:32E3 F5 29 F5 34 F5 3F F5 4A F5 55 F5 60 F5 65 F5 6A .byte $F5, $6F, $F5, $74, $F5, $79, $F5, $7E, $F5, $83, $F5, $88, $F5, $8D, $F5, $98 ; PRG $32EF / CPU $F2EF ; CPU:$F2F3 PRG:32F3 F5 6F F5 74 F5 79 F5 7E F5 83 F5 88 F5 8D F5 98 .byte $F5, $A3, $F5, $B1, $F5, $BF, $F5, $CA, $F5, $D5, $F5, $DA, $F5, $00, $00, $01 ; PRG $32FF / CPU $F2FF ; CPU:$F303 PRG:3303 F5 A3 F5 B1 F5 BF F5 CA F5 D5 F5 DA F5 00 00 01 .byte $00, $03, $04, $02, $05, $06, $07, $08, $FF, $EF, $F5, $00, $00, $09, $0A, $0B ; PRG $330F / CPU $F30F ; CPU:$F313 PRG:3313 00 03 04 02 05 06 07 08 FF EF F5 00 00 09 0A 0B .byte $0C, $0D, $06, $0E, $0F, $10, $FF, $04, $F6, $00, $00, $FF, $01, $FF, $11, $12 ; PRG $331F / CPU $F31F ; CPU:$F323 PRG:3323 0C 0D 06 0E 0F 10 FF 04 F6 00 00 FF 01 FF 11 12 .byte $13, $14, $15, $16, $17, $04, $F6, $00, $00, $FF, $18, $19, $1A, $1B, $1C, $1D ; PRG $332F / CPU $F32F ; CPU:$F333 PRG:3333 13 14 15 16 17 04 F6 00 00 FF 18 19 1A 1B 1C 1D .byte $FF, $1E, $17, $58, $F6, $00, $00, $1F, $20, $FF, $21, $22, $FF, $23, $24, $1E ; PRG $333F / CPU $F33F ; CPU:$F343 PRG:3343 FF 1E 17 58 F6 00 00 1F 20 FF 21 22 FF 23 24 1E .byte $17, $AC, $F6, $83, $00, $01, $FF, $25, $26, $28, $29, $08, $07, $27, $FF, $EF ; PRG $334F / CPU $F34F ; CPU:$F353 PRG:3353 17 AC F6 83 00 01 FF 25 26 28 29 08 07 27 FF EF .byte $F5, $81, $80, $09, $2A, $2B, $FF, $2C, $2D, $FF, $10, $0F, $2E, $19, $F6, $41 ; PRG $335F / CPU $F35F ; CPU:$F363 PRG:3363 F5 81 80 09 2A 2B FF 2C 2D FF 10 0F 2E 19 F6 41 .byte $80, $FF, $01, $FF, $2F, $31, $32, $30, $17, $16, $FF, $19, $F6, $4D, $80, $33 ; PRG $336F / CPU $F36F ; CPU:$F373 PRG:3373 80 FF 01 FF 2F 31 32 30 17 16 FF 19 F6 4D 80 33 .byte $18, $34, $35, $1D, $1C, $FF, $17, $1E, $FF, $58, $F6, $93, $C0, $20, $36, $FF ; PRG $337F / CPU $F37F ; CPU:$F383 PRG:3383 18 34 35 1D 1C FF 17 1E FF 58 F6 93 C0 20 36 FF .byte $22, $37, $FF, $24, $23, $17, $1E, $58, $F6, $00, $00, $38, $39, $FF, $3A, $3B ; PRG $338F / CPU $F38F ; CPU:$F393 PRG:3393 22 37 FF 24 23 17 1E 58 F6 00 00 38 39 FF 3A 3B .byte $FF, $3C, $3D, $3E, $3F, $04, $F6, $00, $00, $FF, $40, $FF, $41, $42, $43, $44 ; PRG $339F / CPU $F39F ; CPU:$F3A3 PRG:33A3 FF 3C 3D 3E 3F 04 F6 00 00 FF 40 FF 41 42 43 44 .byte $FF, $45, $46, $51, $F7, $20, $00, $FF, $8D, $8A, $8E, $21, $8F, $23, $24, $1E ; PRG $33AF / CPU $F3AF ; CPU:$F3B3 PRG:33B3 FF 45 46 51 F7 20 00 FF 8D 8A 8E 21 8F 23 24 1E .byte $17, $DA, $F5, $00, $00, $01, $00, $03, $04, $02, $4A, $4B, $47, $48, $FF, $DA ; PRG $33BF / CPU $F3BF ; CPU:$F3C3 PRG:33C3 17 DA F5 00 00 01 00 03 04 02 4A 4B 47 48 FF DA .byte $F5, $00, $00, $01, $00, $03, $04, $02, $4C, $4D, $49, $8C, $FF, $AC, $F6, $83 ; PRG $33CF / CPU $F3CF ; CPU:$F3D3 PRG:33D3 F5 00 00 01 00 03 04 02 4C 4D 49 8C FF AC F6 83 .byte $00, $01, $FF, $25, $26, $4E, $4F, $48, $47, $27, $FF, $AC, $F6, $83, $00, $01 ; PRG $33DF / CPU $F3DF ; CPU:$F3E3 PRG:33E3 00 01 FF 25 26 4E 4F 48 47 27 FF AC F6 83 00 01 .byte $FF, $25, $26, $50, $51, $8C, $49, $27, $FF, $2E, $F6, $00, $00, $52, $53, $54 ; PRG $33EF / CPU $F3EF ; CPU:$F3F3 PRG:33F3 FF 25 26 50 51 8C 49 27 FF 2E F6 00 00 52 53 54 .byte $55, $56, $57, $58, $59, $FF, $FF, $58, $F6, $00, $00, $5A, $5B, $5C, $5D, $5E ; PRG $33FF / CPU $F3FF ; CPU:$F403 PRG:3403 55 56 57 58 59 FF FF 58 F6 00 00 5A 5B 5C 5D 5E .byte $5F, $60, $61, $62, $63, $43, $F6, $00, $00, $64, $65, $66, $67, $68, $69, $6A ; PRG $340F / CPU $F40F ; CPU:$F413 PRG:3413 5F 60 61 62 63 43 F6 00 00 64 65 66 67 68 69 6A .byte $FF, $FF, $FF, $97, $F6, $00, $00, $6B, $6C, $6D, $6E, $6F, $70, $71, $72, $73 ; PRG $341F / CPU $F41F ; CPU:$F423 PRG:3423 FF FF FF 97 F6 00 00 6B 6C 6D 6E 6F 70 71 72 73 .byte $FF, $6D, $F6, $00, $00, $74, $75, $76, $77, $78, $79, $FF, $FF, $FF, $FF, $82 ; PRG $342F / CPU $F42F ; CPU:$F433 PRG:3433 FF 6D F6 00 00 74 75 76 77 78 79 FF FF FF FF 82 .byte $F6, $00, $00, $7A, $7B, $7C, $7D, $7E, $7F, $FF, $FF, $FF, $FF, $04, $F6, $80 ; PRG $343F / CPU $F43F ; CPU:$F443 PRG:3443 F6 00 00 7A 7B 7C 7D 7E 7F FF FF FF FF 04 F6 80 .byte $C0, $01, $FF, $FF, $80, $81, $82, $83, $FF, $10, $0F, $AC, $F6, $83, $00, $01 ; PRG $344F / CPU $F44F ; CPU:$F453 PRG:3453 C0 01 FF FF 80 81 82 83 FF 10 0F AC F6 83 00 01 .byte $84, $85, $86, $87, $88, $17, $16, $FF, $FF, $C1, $F6, $8F, $00, $19, $89, $8A ; PRG $345F / CPU $F45F ; CPU:$F463 PRG:3463 84 85 86 87 88 17 16 FF FF C1 F6 8F 00 19 89 8A .byte $8B, $1D, $1C, $17, $1E, $FF, $FF, $D6, $F6, $00, $00, $90, $91, $92, $93, $94 ; PRG $346F / CPU $F46F ; CPU:$F473 PRG:3473 8B 1D 1C 17 1E FF FF D6 F6 00 00 90 91 92 93 94 .byte $95, $96, $E5, $F6, $00, $00, $97, $98, $99, $9A, $9B, $9C, $FF, $F4, $F6, $00 ; PRG $347F / CPU $F47F ; CPU:$F483 PRG:3483 95 96 E5 F6 00 00 97 98 99 9A 9B 9C FF F4 F6 00 .byte $00, $9D, $FF, $FF, $9F, $A0, $9E, $A1, $F4, $F6, $00, $00, $FF, $A2, $A3, $FF ; PRG $348F / CPU $F48F ; CPU:$F493 PRG:3493 00 9D FF FF 9F A0 9E A1 F4 F6 00 00 FF A2 A3 FF .byte $A4, $FF, $A5, $D6, $F6, $06, $00, $FF, $A6, $A7, $A8, $A9, $96, $95, $D6, $F6 ; PRG $349F / CPU $F49F ; CPU:$F4A3 PRG:34A3 A4 FF A5 D6 F6 06 00 FF A6 A7 A8 A9 96 95 D6 F6 .byte $06, $00, $FF, $AA, $AB, $AC, $AD, $9C, $9B, $03, $F7, $02, $00, $FF, $AE, $FF ; PRG $34AF / CPU $F4AF ; CPU:$F4B3 PRG:34B3 06 00 FF AA AB AC AD 9C 9B 03 F7 02 00 FF AE FF .byte $FF, $AF, $B0, $A1, $03, $F7, $02, $00, $B1, $B3, $FF, $B2, $B4, $FF, $A5, $E5 ; PRG $34BF / CPU $F4BF ; CPU:$F4C3 PRG:34C3 FF AF B0 A1 03 F7 02 00 B1 B3 FF B2 B4 FF A5 E5 .byte $F6, $00, $00, $B5, $FF, $B6, $B7, $B8, $B9, $FF, $E5, $F6, $00, $00, $FF, $FF ; PRG $34CF / CPU $F4CF ; CPU:$F4D3 PRG:34D3 F6 00 00 B5 FF B6 B7 B8 B9 FF E5 F6 00 00 FF FF .byte $BA, $BB, $BC, $BD, $B5, $51, $F7, $03, $C0, $F9, $FF, $FA, $8A, $FB, $FC, $24 ; PRG $34DF / CPU $F4DF ; CPU:$F4E3 PRG:34E3 BA BB BC BD B5 51 F7 03 C0 F9 FF FA 8A FB FC 24 .byte $23, $17, $1E, $D6, $F6, $00, $00, $90, $91, $92, $C2, $C3, $BE, $BF, $D6, $F6 ; PRG $34EF / CPU $F4EF ; CPU:$F4F3 PRG:34F3 23 17 1E D6 F6 00 00 90 91 92 C2 C3 BE BF D6 F6 .byte $00, $00, $90, $91, $92, $C2, $C4, $C0, $C1, $D6, $F6, $06, $00, $FF, $A6, $A7 ; PRG $34FF / CPU $F4FF ; CPU:$F503 PRG:3503 00 00 90 91 92 C2 C4 C0 C1 D6 F6 06 00 FF A6 A7 .byte $C5, $C6, $BF, $BE, $D6, $F6, $06, $00, $FF, $A6, $A7, $C7, $A9, $C1, $C0, $E5 ; PRG $350F / CPU $F50F ; CPU:$F513 PRG:3513 C5 C6 BF BE D6 F6 06 00 FF A6 A7 C7 A9 C1 C0 E5 .byte $F6, $00, $00, $C8, $FF, $C9, $CA, $CB, $CC, $FF, $12, $F7, $00, $00, $FF, $FF ; PRG $351F / CPU $F51F ; CPU:$F523 PRG:3523 F6 00 00 C8 FF C9 CA CB CC FF 12 F7 00 00 FF FF .byte $CD, $CE, $CF, $D0, $D1, $12, $F7, $00, $00, $D2, $D3, $D4, $D5, $D6, $FF, $D7 ; PRG $352F / CPU $F52F ; CPU:$F533 PRG:3533 CD CE CF D0 D1 12 F7 00 00 D2 D3 D4 D5 D6 FF D7 .byte $21, $F7, $00, $00, $D8, $D9, $DA, $DB, $DC, $DD, $DE, $30, $F7, $00, $00, $DF ; PRG $353F / CPU $F53F ; CPU:$F543 PRG:3543 21 F7 00 00 D8 D9 DA DB DC DD DE 30 F7 00 00 DF .byte $E0, $E1, $E2, $E3, $FF, $FF, $03, $F7, $00, $00, $FF, $A2, $A3, $FF, $A4, $FF ; PRG $354F / CPU $F54F ; CPU:$F553 PRG:3553 E0 E1 E2 E3 FF FF 03 F7 00 00 FF A2 A3 FF A4 FF .byte $E4, $3F, $F7, $00, $00, $F0, $3F, $F7, $00, $00, $F1, $3F, $F7, $00, $00, $F2 ; PRG $355F / CPU $F55F ; CPU:$F563 PRG:3563 E4 3F F7 00 00 F0 3F F7 00 00 F1 3F F7 00 00 F2 .byte $3F, $F7, $00, $00, $F3, $3F, $F7, $00, $00, $F4, $3F, $F7, $00, $00, $F5, $3F ; PRG $356F / CPU $F56F ; CPU:$F573 PRG:3573 3F F7 00 00 F3 3F F7 00 00 F4 3F F7 00 00 F5 3F .byte $F7, $00, $00, $F6, $3F, $F7, $00, $00, $F7, $3F, $F7, $00, $00, $F8, $D6, $F6 ; PRG $357F / CPU $F57F ; CPU:$F583 PRG:3583 F7 00 00 F6 3F F7 00 00 F7 3F F7 00 00 F8 D6 F6 .byte $04, $00, $FF, $AA, $E5, $E6, $E7, $9C, $E8, $42, $F7, $04, $00, $E9, $EA, $EB ; PRG $358F / CPU $F58F ; CPU:$F593 PRG:3593 04 00 FF AA E5 E6 E7 9C E8 42 F7 04 00 E9 EA EB .byte $EC, $ED, $A5, $FF, $58, $F6, $FF, $C0, $39, $38, $FF, $3B, $3A, $FF, $3D, $3C ; PRG $359F / CPU $F59F ; CPU:$F5A3 PRG:35A3 EC ED A5 FF 58 F6 FF C0 39 38 FF 3B 3A FF 3D 3C .byte $3F, $3E, $66, $F7, $FF, $C0, $40, $42, $41, $44, $43, $46, $45, $FF, $FF, $FF ; PRG $35AF / CPU $F5AF ; CPU:$F5B3 PRG:35B3 3F 3E 66 F7 FF C0 40 42 41 44 43 46 45 FF FF FF .byte $E5, $F6, $FE, $00, $B5, $FF, $B7, $B6, $B9, $B8, $FF, $7B, $F7, $FE, $00, $B5 ; PRG $35BF / CPU $F5BF ; CPU:$F5C3 PRG:35C3 E5 F6 FE 00 B5 FF B7 B6 B9 B8 FF 7B F7 FE 00 B5 .byte $BB, $BA, $BD, $BC, $FF, $FF, $3F, $F7, $00, $00, $FF, $E3, $FD, $E7, $F0, $EB ; PRG $35CF / CPU $F5CF ; CPU:$F5D3 PRG:35D3 BB BA BD BC FF FF 3F F7 00 00 FF E3 FD E7 F0 EB .byte $F8, $EB, $00, $EF, $F0, $F3, $F8, $F3, $00, $FB, $F8, $FB, $00, $04, $00, $AA ; PRG $35DF / CPU $F5DF ; CPU:$F5E3 PRG:35E3 F8 EB 00 EF F0 F3 F8 F3 00 FB F8 FB 00 04 00 AA .byte $E3, $FC, $EB, $F8, $EB, $00, $F3, $F0, $F3, $F8, $F3, $00, $FB, $F0, $FB, $F8 ; PRG $35EF / CPU $F5EF ; CPU:$F5F3 PRG:35F3 E3 FC EB F8 EB 00 F3 F0 F3 F8 F3 00 FB F0 FB F8 .byte $FB, $00, $F7, $08, $AA, $E3, $FB, $E3, $FD, $E6, $0A, $EB, $FA, $EB, $02, $F3 ; PRG $35FF / CPU $F5FF ; CPU:$F603 PRG:3603 FB 00 F7 08 AA E3 FB E3 FD E6 0A EB FA EB 02 F3 .byte $F8, $F3, $00, $F7, $08, $FB, $F8, $FB, $00, $AA, $E3, $F0, $E3, $FB, $EB, $F4 ; PRG $360F / CPU $F60F ; CPU:$F613 PRG:3613 F8 F3 00 F7 08 FB F8 FB 00 AA E3 F0 E3 FB EB F4 .byte $EB, $FC, $F3, $F8, $F3, $00, $F5, $F0, $FB, $F8, $FB, $00, $04, $00, $AA, $E3 ; PRG $361F / CPU $F61F ; CPU:$F623 PRG:3623 EB FC F3 F8 F3 00 F5 F0 FB F8 FB 00 04 00 AA E3 .byte $FC, $EB, $F8, $EB, $00, $EB, $08, $F3, $F6, $F3, $FE, $FB, $F6, $FB, $FE, $04 ; PRG $362F / CPU $F62F ; CPU:$F633 PRG:3633 FC EB F8 EB 00 EB 08 F3 F6 F3 FE FB F6 FB FE 04 .byte $F8, $04, $00, $AA, $E3, $F0, $E3, $F8, $E3, $00, $EB, $FF, $F3, $FC, $FB, $F8 ; PRG $363F / CPU $F63F ; CPU:$F643 PRG:3643 F8 04 00 AA E3 F0 E3 F8 E3 00 EB FF F3 FC FB F8 .byte $FB, $00, $04, $F8, $04, $00, $0C, $00, $AA, $E3, $F8, $E3, $00, $EB, $F0, $EB ; PRG $364F / CPU $F64F ; CPU:$F653 PRG:3653 FB 00 04 F8 04 00 0C 00 AA E3 F8 E3 00 EB F0 EB .byte $F8, $EB, $00, $F3, $F0, $F3, $F8, $F3, $00, $FB, $F8, $FB, $00, $AA, $E3, $00 ; PRG $365F / CPU $F65F ; CPU:$F663 PRG:3663 F8 EB 00 F3 F0 F3 F8 F3 00 FB F8 FB 00 AA E3 00 .byte $EB, $08, $EB, $FE, $EB, $06, $F3, $FE, $FB, $FE, $04, $F8, $04, $00, $0C, $F8 ; PRG $366F / CPU $F66F ; CPU:$F673 PRG:3673 EB 08 EB FE EB 06 F3 FE FB FE 04 F8 04 00 0C F8 .byte $0C, $00, $AA, $E3, $04, $EB, $FC, $EB, $04, $F3, $F8, $F3, $00, $FB, $00, $04 ; PRG $367F / CPU $F67F ; CPU:$F683 PRG:3683 0C 00 AA E3 04 EB FC EB 04 F3 F8 F3 00 FB 00 04 .byte $F8, $04, $00, $0C, $F8, $0C, $00, $AA, $D3, $08, $DB, $08, $E3, $00, $E3, $08 ; PRG $368F / CPU $F68F ; CPU:$F693 PRG:3693 F8 04 00 0C F8 0C 00 AA D3 08 DB 08 E3 00 E3 08 .byte $EB, $F8, $EB, $00, $F3, $F8, $F3, $00, $FB, $00, $FB, $08, $AA, $E3, $FB, $EB ; PRG $369F / CPU $F69F ; CPU:$F6A3 PRG:36A3 EB F8 EB 00 F3 F8 F3 00 FB 00 FB 08 AA E3 FB EB .byte $F0, $EB, $F8, $EB, $00, $F3, $F8, $F3, $00, $FB, $F8, $FB, $00, $EB, $08, $04 ; PRG $36AF / CPU $F6AF ; CPU:$F6B3 PRG:36B3 F0 EB F8 EB 00 F3 F8 F3 00 FB F8 FB 00 EB 08 04 .byte $00, $AA, $DC, $F0, $E3, $F8, $E3, $00, $EB, $FC, $F3, $F8, $F3, $00, $FB, $F8 ; PRG $36BF / CPU $F6BF ; CPU:$F6C3 PRG:36C3 00 AA DC F0 E3 F8 E3 00 EB FC F3 F8 F3 00 FB F8 .byte $FB, $00, $04, $F8, $04, $00, $AA, $E3, $F8, $EB, $F8, $EB, $00, $F3, $F8, $F3 ; PRG $36CF / CPU $F6CF ; CPU:$F6D3 PRG:36D3 FB 00 04 F8 04 00 AA E3 F8 EB F8 EB 00 F3 F8 F3 .byte $00, $FB, $F8, $FB, $00, $AA, $EB, $FC, $EF, $F4, $F3, $F8, $F3, $00, $FB, $F8 ; PRG $36DF / CPU $F6DF ; CPU:$F6E3 PRG:36E3 00 FB F8 FB 00 AA EB FC EF F4 F3 F8 F3 00 FB F8 .byte $FB, $00, $EB, $FB, $AA, $EB, $FE, $EB, $00, $EB, $08, $F3, $F8, $F3, $00, $F7 ; PRG $36EF / CPU $F6EF ; CPU:$F6F3 PRG:36F3 FB 00 EB FB AA EB FE EB 00 EB 08 F3 F8 F3 00 F7 .byte $F4, $FB, $FE, $AA, $E7, $F2, $EB, $FA, $EB, $02, $EF, $F2, $F3, $FA, $F7, $02 ; PRG $36FF / CPU $F6FF ; CPU:$F703 PRG:3703 F4 FB FE AA E7 F2 EB FA EB 02 EF F2 F3 FA F7 02 .byte $FB, $FA, $AA, $E3, $00, $E3, $08, $EB, $F8, $EB, $00, $F3, $FC, $F3, $04, $FB ; PRG $370F / CPU $F70F ; CPU:$F713 PRG:3713 FB FA AA E3 00 E3 08 EB F8 EB 00 F3 FC F3 04 FB .byte $FC, $AA, $DB, $FC, $E3, $FC, $EB, $F8, $EB, $00, $F3, $F8, $F3, $00, $FB, $FB ; PRG $371F / CPU $F71F ; CPU:$F723 PRG:3723 FC AA DB FC E3 FC EB F8 EB 00 F3 F8 F3 00 FB FB .byte $AA, $EB, $FF, $F3, $F8, $F3, $00, $FB, $FB, $FB, $03, $04, $F8, $04, $00, $AA ; PRG $372F / CPU $F72F ; CPU:$F733 PRG:3733 AA EB FF F3 F8 F3 00 FB FB FB 03 04 F8 04 00 AA .byte $FC, $FC, $AA, $E3, $F0, $EB, $F0, $EB, $F8, $F3, $F8, $F3, $00, $FB, $FA, $FB ; PRG $373F / CPU $F73F ; CPU:$F743 PRG:3743 FC FC AA E3 F0 EB F0 EB F8 F3 F8 F3 00 FB FA FB .byte $02, $AA, $DB, $F8, $DB, $00, $E3, $F8, $E3, $00, $EB, $F8, $EB, $00, $F3, $F8 ; PRG $374F / CPU $F74F ; CPU:$F753 PRG:3753 02 AA DB F8 DB 00 E3 F8 E3 00 EB F8 EB 00 F3 F8 .byte $F3, $00, $FB, $F8, $FB, $00, $AA, $E3, $FB, $EB, $F6, $EB, $FE, $F3, $F8, $F3 ; PRG $375F / CPU $F75F ; CPU:$F763 PRG:3763 F3 00 FB F8 FB 00 AA E3 FB EB F6 EB FE F3 F8 F3 .byte $00, $FB, $F8, $FB, $00, $04, $F8, $04, $00, $0C, $F8, $AA, $EB, $FD, $F3, $F8 ; PRG $376F / CPU $F76F ; CPU:$F773 PRG:3773 00 FB F8 FB 00 04 F8 04 00 0C F8 AA EB FD F3 F8 .byte $F3, $00, $FB, $F8, $FB, $00, $04, $F8, $04, $00, $AA, $FF, $00, $FF, $00, $FF ; PRG $377F / CPU $F77F ; CPU:$F783 PRG:3783 F3 00 FB F8 FB 00 04 F8 04 00 AA FF 00 FF 00 FF .byte $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF ; PRG $378F / CPU $F78F ; CPU:$F793 PRG:3793 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF .byte $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF ; PRG $379F / CPU $F79F ; CPU:$F7A3 PRG:37A3 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF .byte $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF ; PRG $37AF / CPU $F7AF ; CPU:$F7B3 PRG:37B3 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF .byte $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF ; PRG $37BF / CPU $F7BF ; CPU:$F7C3 PRG:37C3 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF .byte $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF ; PRG $37CF / CPU $F7CF ; CPU:$F7D3 PRG:37D3 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF .byte $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF ; PRG $37DF / CPU $F7DF ; CPU:$F7E3 PRG:37E3 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF .byte $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF ; PRG $37EF / CPU $F7EF ; CPU:$F7F3 PRG:37F3 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF .byte $00, $08, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00 ; PRG $37FF / CPU $F7FF ; CPU:$F803 PRG:3803 00 08 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 .byte $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00 ; PRG $380F / CPU $F80F ; CPU:$F813 PRG:3813 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 .byte $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00 ; PRG $381F / CPU $F81F ; CPU:$F823 PRG:3823 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 .byte $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00 ; PRG $382F / CPU $F82F ; CPU:$F833 PRG:3833 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 .byte $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00 ; PRG $383F / CPU $F83F ; CPU:$F843 PRG:3843 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 .byte $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00 ; PRG $384F / CPU $F84F ; CPU:$F853 PRG:3853 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 .byte $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00 ; PRG $385F / CPU $F85F ; CPU:$F863 PRG:3863 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 .byte $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00 ; PRG $386F / CPU $F86F ; CPU:$F873 PRG:3873 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; PRG $387F / CPU $F87F ; CPU:$F883 PRG:3883 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; PRG $388F / CPU $F88F ; CPU:$F893 PRG:3893 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; PRG $389F / CPU $F89F ; CPU:$F8A3 PRG:38A3 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; PRG $38AF / CPU $F8AF ; CPU:$F8B3 PRG:38B3 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; PRG $38BF / CPU $F8BF ; CPU:$F8C3 PRG:38C3 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; PRG $38CF / CPU $F8CF ; CPU:$F8D3 PRG:38D3 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .byte $FF ; PRG $38DF / CPU $F8DF ; CPU:$F8E3 PRG:38E3 FF AudioEngineUpdate: lda #$C0 ; CPU:$F8E4 PRG:38E4 ?? sta JOY2 ; CPU:$F8E6 PRG:38E6 ?? lda DmcOutputLevel ; CPU:$F8E8 PRG:38E8 69 FE clc ; CPU:$F8EA PRG:38EA B0 02 adc #$FE ; CPU:$F8EC PRG:38EC A9 00 bcs Flow_F8EE ; CPU:$F8EE PRG:38EE 85 F0 lda #$00 ; CPU:$F8F0 PRG:38F0 8D 11 40 Flow_F8EE: sta DmcOutputLevel ; CPU:$F8F3 PRG:38F3 20 39 FA sta APUDMCDIRECT ; CPU:$F8F6 PRG:38F6 A9 00 jsr AudioRoutine_FA39 ; CPU:$F8F8 PRG:38F8 85 FF lda #$00 ; CPU:$F8FA PRG:38FA 85 FE sta AudioRequestFlags3 ; CPU:$F8FC PRG:38FC 85 FD sta AudioRequestFlags2 ; CPU:$F8FE PRG:38FE 60 sta AudioRequestFlags1 ; CPU:$F8FF PRG:38FF ?? rts ; CPU:$F901 PRG:3901 ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $38FF-$395F. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- ApuPeriodAndDurationTables: .byte $FF, $07, $F0, $00, $69, $00, $00, $00, $D4, $00, $BD, $00, $B2, $00, $A8, $00 ; PRG $38FF / CPU $F8FF ; CPU:$F903 PRG:3903 FF 07 F0 00 69 00 00 00 D4 00 BD 00 B2 00 A8 00 .byte $9F, $00, $96, $00, $8D, $00, $7E, $00, $70, $01, $AB, $01, $93, $01, $7C, $01 ; PRG $390F / CPU $F90F ; CPU:$F913 PRG:3913 9F 00 96 00 8D 00 7E 00 70 01 AB 01 93 01 7C 01 .byte $67, $01, $52, $01, $3F, $01, $2D, $01, $1C, $01, $0C, $00, $FD, $00, $EE, $00 ; PRG $391F / CPU $F91F ; CPU:$F923 PRG:3923 67 01 52 01 3F 01 2D 01 1C 01 0C 00 FD 00 EE 00 .byte $E1, $03, $57, $02, $F9, $02, $A6, $02, $80, $02, $3A, $01, $FC, $01, $C4, $00 ; PRG $392F / CPU $F92F ; CPU:$F933 PRG:3933 E1 03 57 02 F9 02 A6 02 80 02 3A 01 FC 01 C4 00 .byte $5E, $00, $53, $00, $4F, $00, $4A, $00, $20, $05, $0B, $16, $2C, $58, $21, $06 ; PRG $393F / CPU $F93F ; CPU:$F943 PRG:3943 5E 00 53 00 4F 00 4A 00 20 05 0B 16 2C 58 21 06 .byte $11, $05, $0A, $14, $28, $0D, $21, $06, $07, $06, $0C, $18, $30, $10, $24, $48 ; PRG $394F / CPU $F94F ; CPU:$F953 PRG:3953 11 05 0A 14 28 0D 21 06 07 06 0C 18 30 10 24 48 .byte $08 ; PRG $395F / CPU $F95F ; CPU:$F963 PRG:3963 08 ; ============================================================================= ; AudioRoutine_F960 ; CPU address: $F960 PRG offset: $3960 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F960: tax ; CPU:$F964 PRG:3964 2A ror a ; CPU:$F965 PRG:3965 2A txa ; CPU:$F966 PRG:3966 29 07 rol a ; CPU:$F968 PRG:3968 18 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3964-$3965. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_F964: .byte $2A, $2A ; PRG $3964 / CPU $F964 ; CPU:$F969 PRG:3969 2A 2A ; ============================================================================= ; AudioRoutine_F966 ; CPU address: $F966 PRG offset: $3966 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F966: and #$07 ; CPU:$F96B PRG:396B A8 clc ; CPU:$F96C PRG:396C B9 48 F9 adc PitchAdjustment ; CPU:$F96F PRG:396F 60 tay ; CPU:$F970 PRG:3970 A2 90 lda $F948,y ; CPU:$F972 PRG:3972 D0 09 rts ; PRG $396F / CPU $F96F ; CPU:$F974 PRG:3974 A2 90 ; ============================================================================= ; AudioRoutine_F970 ; CPU address: $F970 PRG offset: $3970 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F970: ldx #$90 ; CPU:$F976 PRG:3976 D0 0E bne Flow_F97D ; CPU:$F978 PRG:3978 A0 7F ldx #$90 ; CPU:$F97A PRG:397A 8C 01 40 bne Flow_F986 ; CPU:$F97D PRG:397D 8E 00 40 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3978-$3979. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_F978: .byte $A0, $7F ; PRG $3978 / CPU $F978 ; CPU:$F980 PRG:3980 A0 7F ; ============================================================================= ; ConfigurePulse1 ; CPU address: $F97A PRG offset: $397A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= ConfigurePulse1: sty APUPULSE1SWEEP ; CPU:$F982 PRG:3982 ?? Flow_F97D: stx APUPULSE1CTRL ; CPU:$F984 PRG:3984 ?? rts ; CPU:$F986 PRG:3986 8E 04 40 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3981-$3982. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_F981: .byte $A0, $7F ; PRG $3981 / CPU $F981 ; CPU:$F989 PRG:3989 A0 7F ; ============================================================================= ; ConfigurePulse2 ; CPU address: $F983 PRG offset: $3983 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= ConfigurePulse2: sty APUPULSE2SWEEP ; CPU:$F98B PRG:398B ?? Flow_F986: stx APUPULSE2CTRL ; CPU:$F98D PRG:398D ?? rts ; PRG $3989 / CPU $F989 ; CPU:$F98F PRG:398F ?? ; ============================================================================= ; AudioRoutine_F98A ; CPU address: $F98A PRG offset: $398A ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F98A: sty AudioChannelControl ; CPU:$F991 PRG:3991 ?? stx SoundEffectTimer ; CPU:$F993 PRG:3993 A2 00 bne AudioRoutine_F993 ; CPU:$F995 PRG:3995 A8 ; ============================================================================= ; AudioRoutine_F990 ; CPU address: $F990 PRG offset: $3990 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F990: jsr ConfigurePulse1 ; CPU:$F996 PRG:3996 B9 01 F9 ; ============================================================================= ; AudioRoutine_F993 ; CPU address: $F993 PRG offset: $3993 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F993: ldx #$00 ; CPU:$F999 PRG:3999 F0 0B tay ; CPU:$F99B PRG:399B 9D 02 40 lda $F901,y ; CPU:$F99E PRG:399E B9 00 F9 beq Flow_F9A6 ; CPU:$F9A1 PRG:39A1 09 08 sta APUPULSE1TIMERLO,x ; CPU:$F9A3 PRG:39A3 9D 03 40 lda $F900,y ; CPU:$F9A6 PRG:39A6 60 ora #$08 ; CPU:$F9A7 PRG:39A7 ?? sta APUPULSE1TIMERHI,x ; CPU:$F9A9 PRG:39A9 ?? Flow_F9A6: rts ; CPU:$F9AB PRG:39AB ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $39A7-$39A9. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_F9A7: .byte $20, $83, $F9 ; PRG $39A7 / CPU $F9A7 ; CPU:$F9AD PRG:39AD 20 83 F9 ; ============================================================================= ; AudioRoutine_F9AA ; CPU address: $F9AA PRG offset: $39AA ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F9AA: ldx #$04 ; CPU:$F9B0 PRG:39B0 D0 E3 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $39AC-$39AD. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_F9AC: .byte $D0, $E7 ; PRG $39AC / CPU $F9AC ; CPU:$F9B2 PRG:39B2 D0 E7 ; ============================================================================= ; AudioRoutine_F9AE ; CPU address: $F9AE PRG offset: $39AE ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F9AE: ldx #$08 ; CPU:$F9B4 PRG:39B4 A0 1C ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $39B0-$39B1. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_F9B0: .byte $D0, $E3 ; PRG $39B0 / CPU $F9B0 ; CPU:$F9B6 PRG:39B6 D0 E3 ; ============================================================================= ; AudioRoutine_F9B2 ; CPU address: $F9B2 PRG offset: $39B2 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_F9B2: sty AudioChannelControl ; CPU:$F9B8 PRG:39B8 8C 08 40 ldy #$1C ; CPU:$F9BB PRG:39BB 8D 0A 40 ; ============================================================================= ; ConfigureTriangleChannel ; CPU address: $F9B6 PRG offset: $39B6 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= ConfigureTriangleChannel: stx SoundEffectTimer ; CPU:$F9BE PRG:39BE A9 08 sty APUTRIANGLECTRL ; CPU:$F9C0 PRG:39C0 8D 0B 40 sta APUTRIANGLETIMERLO ; CPU:$F9C3 PRG:39C3 A5 F0 lda #$08 ; CPU:$F9C5 PRG:39C5 18 sta APUTRIANGLETIMERHI ; CPU:$F9C6 PRG:39C6 69 C2 lda DmcOutputLevel ; CPU:$F9C8 PRG:39C8 B0 02 clc ; CPU:$F9CA PRG:39CA A9 00 adc #$C2 ; CPU:$F9CC PRG:39CC 85 F0 bcs Flow_F9CC ; CPU:$F9CE PRG:39CE 60 lda #$00 ; CPU:$F9CF PRG:39CF A9 10 Flow_F9CC: sta DmcOutputLevel ; CPU:$F9D1 PRG:39D1 8D F8 07 rts ; PRG $39CE / CPU $F9CE ; CPU:$F9D4 PRG:39D4 A9 06 Flow_F9CF: lda #$10 ; CPU:$F9D6 PRG:39D6 20 93 F9 sta $07F8 ; CPU:$F9D9 PRG:39D9 A2 96 lda #$06 ; CPU:$F9DB PRG:39DB A0 84 jsr AudioRoutine_F993 ; CPU:$F9DD PRG:39DD AD F8 07 Flow_F9D9: ldx #$96 ; CPU:$F9E0 PRG:39E0 C9 0D ldy #$84 ; CPU:$F9E2 PRG:39E2 B0 02 lda $07F8 ; CPU:$F9E4 PRG:39E4 A0 8D cmp #$0D ; CPU:$F9E6 PRG:39E6 C9 0C bcs Flow_F9E6 ; CPU:$F9E8 PRG:39E8 B0 04 ldy #$8D ; CPU:$F9EA PRG:39EA 4A Flow_F9E6: cmp #$0C ; CPU:$F9EB PRG:39EB 09 90 bcs Flow_F9EE ; CPU:$F9ED PRG:39ED AA lsr a ; CPU:$F9EE PRG:39EE 20 7A F9 ora #$90 ; CPU:$F9F1 PRG:39F1 CE F8 07 tax ; CPU:$F9F4 PRG:39F4 D0 51 Flow_F9EE: jsr ConfigurePulse1 ; CPU:$F9F6 PRG:39F6 20 70 F9 dec $07F8 ; CPU:$F9F9 PRG:39F9 D0 4C bne Flow_FA47 ; CPU:$F9FB PRG:39FB A2 12 jsr AudioRoutine_F970 ; CPU:$F9FD PRG:39FD A9 1C bne Flow_FA47 ; CPU:$F9FF PRG:39FF 20 8A F9 Flow_F9FB: ldx #$12 ; CPU:$FA02 PRG:3A02 A9 0A lda #$1C ; CPU:$FA04 PRG:3A04 85 F4 jsr AudioRoutine_F98A ; CPU:$FA06 PRG:3A06 A2 5A lda #$0A ; CPU:$FA08 PRG:3A08 A0 8C sta SoundEffectPhase ; CPU:$FA0A PRG:3A0A A5 F3 Flow_FA06: ldx #$5A ; CPU:$FA0C PRG:3A0C C9 0F ldy #$8C ; CPU:$FA0E PRG:3A0E B0 08 lda SoundEffectTimer ; CPU:$FA10 PRG:3A10 A0 8D cmp #$0F ; CPU:$FA12 PRG:3A12 C9 0A bcs Flow_FA18 ; CPU:$FA14 PRG:3A14 B0 12 ldy #$8D ; CPU:$FA16 PRG:3A16 D0 0D cmp #$0A ; CPU:$FA18 PRG:3A18 D0 07 bcs Flow_FA28 ; CPU:$FA1A PRG:3A1A A9 18 bne Flow_FA25 ; CPU:$FA1C PRG:3A1C 20 93 F9 Flow_FA18: bne Flow_FA21 ; CPU:$FA1F PRG:3A1F D0 07 lda #$18 ; CPU:$FA21 PRG:3A21 C6 F4 jsr AudioRoutine_F993 ; CPU:$FA23 PRG:3A23 A5 F4 bne Flow_FA28 ; CPU:$FA25 PRG:3A25 09 50 Flow_FA21: dec SoundEffectPhase ; CPU:$FA27 PRG:3A27 AA lda SoundEffectPhase ; CPU:$FA28 PRG:3A28 20 7A F9 Flow_FA25: ora #$50 ; CPU:$FA2B PRG:3A2B C6 F3 tax ; CPU:$FA2D PRG:3A2D D0 07 Flow_FA28: jsr ConfigurePulse1 ; CPU:$FA2F PRG:3A2F 20 70 F9 Flow_FA2B: dec SoundEffectTimer ; CPU:$FA32 PRG:3A32 A9 00 bne Flow_FA36 ; CPU:$FA34 PRG:3A34 85 F1 Flow_FA2F: jsr AudioRoutine_F970 ; CPU:$FA36 PRG:3A36 4C 7A FA lda #$00 ; CPU:$FA39 PRG:3A39 A6 FA sta AudioChannelControl ; CPU:$FA3B PRG:3A3B D0 3D Flow_FA36: jmp Flow_FA7A ; CPU:$FA3D PRG:3A3D AE F8 07 ; ============================================================================= ; AudioRoutine_FA39 ; CPU address: $FA39 PRG offset: $3A39 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= AudioRoutine_FA39: ldx AudioSequenceOffset ; CPU:$FA40 PRG:3A40 D0 97 bne Flow_FA7A ; CPU:$FA42 PRG:3A42 A5 FF ldx $07F8 ; CPU:$FA44 PRG:3A44 4A bne Flow_F9D9 ; CPU:$FA45 PRG:3A45 B0 88 lda AudioRequestFlags3 ; CPU:$FA47 PRG:3A47 A4 FF lsr a ; CPU:$FA49 PRG:3A49 84 00 bcs Flow_F9CF ; CPU:$FA4B PRG:3A4B A5 F1 Flow_FA47: ldy AudioRequestFlags3 ; CPU:$FA4D PRG:3A4D 4A sty Zp00 ; CPU:$FA4E PRG:3A4E 46 FF lda AudioChannelControl ; CPU:$FA50 PRG:3A50 4A lsr a ; CPU:$FA51 PRG:3A51 B0 B3 lsr AudioRequestFlags3 ; CPU:$FA53 PRG:3A53 46 FF lsr a ; CPU:$FA55 PRG:3A55 B0 A4 bcs Flow_FA06 ; CPU:$FA57 PRG:3A57 4A lsr AudioRequestFlags3 ; CPU:$FA58 PRG:3A58 B0 2D bcs Flow_F9FB ; CPU:$FA5A PRG:3A5A 46 FF lsr a ; CPU:$FA5C PRG:3A5C B0 22 bcs Flow_FA87 ; CPU:$FA5E PRG:3A5E 4A lsr AudioRequestFlags3 ; CPU:$FA5F PRG:3A5F B0 65 bcs Flow_FA80 ; CPU:$FA61 PRG:3A61 46 FF lsr a ; CPU:$FA63 PRG:3A63 B0 56 bcs Flow_FAC6 ; CPU:$FA65 PRG:3A65 4A lsr AudioRequestFlags3 ; CPU:$FA66 PRG:3A66 B0 35 bcs Flow_FABB ; CPU:$FA68 PRG:3A68 46 FF lsr a ; CPU:$FA6A PRG:3A6A B0 2A bcs Flow_FA9D ; CPU:$FA6C PRG:3A6C 4A lsr AudioRequestFlags3 ; CPU:$FA6D PRG:3A6D B0 61 bcs Flow_FA96 ; CPU:$FA6F PRG:3A6F 46 FF lsr a ; CPU:$FA71 PRG:3A71 B0 56 bcs Flow_FAD0 ; CPU:$FA73 PRG:3A73 4A lsr AudioRequestFlags3 ; CPU:$FA74 PRG:3A74 B0 07 bcs Flow_FAC9 ; CPU:$FA76 PRG:3A76 46 FF lsr a ; CPU:$FA78 PRG:3A78 B0 6B bcs Flow_FA7D ; CPU:$FA7A PRG:3A7A 4C C1 FB lsr AudioRequestFlags3 ; CPU:$FA7D PRG:3A7D 4C F4 FA bcs Flow_FAE5 ; CPU:$FA80 PRG:3A80 A2 07 Flow_FA7A: jmp Flow_FBC1 ; CPU:$FA82 PRG:3A82 A9 7F Flow_FA7D: jmp Flow_FAF4 ; CPU:$FA84 PRG:3A84 20 B2 F9 Flow_FA80: ldx #$07 ; CPU:$FA87 PRG:3A87 A5 F0 lda #$7F ; CPU:$FA89 PRG:3A89 18 jsr AudioRoutine_F9B2 ; CPU:$FA8A PRG:3A8A 69 0F Flow_FA87: lda DmcOutputLevel ; CPU:$FA8C PRG:3A8C 85 F0 clc ; CPU:$FA8E PRG:3A8E A9 90 adc #$0F ; CPU:$FA90 PRG:3A90 8D 00 40 sta DmcOutputLevel ; CPU:$FA93 PRG:3A93 4C 2B FA lda #$90 ; CPU:$FA96 PRG:3A96 A2 15 sta APUPULSE1CTRL ; CPU:$FA98 PRG:3A98 A9 47 jmp Flow_FA2B ; CPU:$FA9A PRG:3A9A 20 B2 F9 Flow_FA96: ldx #$15 ; CPU:$FA9D PRG:3A9D A5 F3 lda #$47 ; CPU:$FA9F PRG:3A9F C9 10 jsr AudioRoutine_F9B2 ; CPU:$FAA1 PRG:3AA1 90 07 Flow_FA9D: lda SoundEffectTimer ; CPU:$FAA3 PRG:3AA3 D0 E2 cmp #$10 ; CPU:$FAA5 PRG:3AA5 A9 02 bcc Flow_FAAA ; CPU:$FAA7 PRG:3AA7 20 93 F9 bne Flow_FA87 ; CPU:$FAAA PRG:3AAA A0 84 lda #$02 ; CPU:$FAAC PRG:3AAC A2 96 jsr AudioRoutine_F993 ; CPU:$FAAE PRG:3AAE A5 F3 Flow_FAAA: ldy #$84 ; CPU:$FAB0 PRG:3AB0 C9 0C Flow_FAAC: ldx #$96 ; CPU:$FAB2 PRG:3AB2 B0 04 lda SoundEffectTimer ; CPU:$FAB4 PRG:3AB4 4A cmp #$0C ; CPU:$FAB5 PRG:3AB5 09 90 bcs Flow_FAB8 ; CPU:$FAB7 PRG:3AB7 AA lsr a ; CPU:$FAB8 PRG:3AB8 4C 28 FA ora #$90 ; CPU:$FABB PRG:3ABB A2 05 tax ; CPU:$FABD PRG:3ABD A9 6A Flow_FAB8: jmp Flow_FA28 ; CPU:$FABF PRG:3ABF 84 F1 Flow_FABB: ldx #$05 ; CPU:$FAC1 PRG:3AC1 A0 14 lda #$6A ; CPU:$FAC3 PRG:3AC3 20 B6 F9 sty AudioChannelControl ; CPU:$FAC6 PRG:3AC6 4C 2B FA ldy #$14 ; CPU:$FAC9 PRG:3AC9 A2 22 jsr ConfigureTriangleChannel ; CPU:$FACB PRG:3ACB A9 6A Flow_FAC6: jmp Flow_FA2B ; CPU:$FACD PRG:3ACD 20 B2 F9 Flow_FAC9: ldx #$22 ; CPU:$FAD0 PRG:3AD0 A5 F3 lda #$6A ; CPU:$FAD2 PRG:3AD2 C9 1B jsr AudioRoutine_F9B2 ; CPU:$FAD4 PRG:3AD4 B0 B1 Flow_FAD0: lda SoundEffectTimer ; CPU:$FAD6 PRG:3AD6 C9 18 cmp #$1B ; CPU:$FAD8 PRG:3AD8 90 07 bcs Flow_FA87 ; CPU:$FADA PRG:3ADA D0 DC cmp #$18 ; CPU:$FADC PRG:3ADC A9 02 bcc Flow_FAE1 ; CPU:$FADE PRG:3ADE 20 93 F9 bne Flow_FAB8 ; CPU:$FAE1 PRG:3AE1 A0 85 lda #$02 ; CPU:$FAE3 PRG:3AE3 D0 C7 jsr AudioRoutine_F993 ; CPU:$FAE5 PRG:3AE5 A2 FF Flow_FAE1: ldy #$85 ; CPU:$FAE7 PRG:3AE7 A9 6A bne Flow_FAAC ; CPU:$FAE9 PRG:3AE9 84 F1 Flow_FAE5: ldx #$FF ; CPU:$FAEB PRG:3AEB A0 14 lda #$6A ; CPU:$FAED PRG:3AED 20 B6 F9 sty AudioChannelControl ; CPU:$FAF0 PRG:3AF0 A9 00 ldy #$14 ; CPU:$FAF2 PRG:3AF2 85 F4 jsr ConfigureTriangleChannel ; CPU:$FAF4 PRG:3AF4 A5 F3 lda #$00 ; CPU:$FAF6 PRG:3AF6 C9 F8 sta SoundEffectPhase ; CPU:$FAF8 PRG:3AF8 90 0D Flow_FAF4: lda SoundEffectTimer ; CPU:$FAFA PRG:3AFA D0 3D cmp #$F8 ; CPU:$FAFC PRG:3AFC A2 B1 bcc Flow_FB07 ; CPU:$FAFE PRG:3AFE A0 9D bne Flow_FB39 ; CPU:$FB00 PRG:3B00 A9 30 ldx #$B1 ; CPU:$FB02 PRG:3B02 20 90 F9 ldy #$9D ; CPU:$FB05 PRG:3B05 D0 2D lda #$30 ; CPU:$FB07 PRG:3B07 46 FF jsr AudioRoutine_F990 ; CPU:$FB09 PRG:3B09 B0 03 bne Flow_FB34 ; CPU:$FB0B PRG:3B0B 4C 2F FA Flow_FB07: lsr AudioRequestFlags3 ; CPU:$FB0E PRG:3B0E A5 00 bcs Flow_FB0E ; CPU:$FB10 PRG:3B10 29 80 jmp Flow_FA2F ; CPU:$FB12 PRG:3B12 D0 07 Flow_FB0E: lda Zp00 ; CPU:$FB14 PRG:3B14 A0 9D and #$80 ; CPU:$FB16 PRG:3B16 8C 01 40 bne Flow_FB1B ; CPU:$FB19 PRG:3B19 D0 19 ldy #$9D ; CPU:$FB1B PRG:3B1B A4 F4 sty APUPULSE1SWEEP ; CPU:$FB1D PRG:3B1D 85 F4 bne Flow_FB34 ; CPU:$FB1F PRG:3B1F 98 Flow_FB1B: ldy SoundEffectPhase ; CPU:$FB20 PRG:3B20 45 F4 sta SoundEffectPhase ; CPU:$FB22 PRG:3B22 F0 10 tya ; CPU:$FB24 PRG:3B24 A5 F3 eor SoundEffectPhase ; CPU:$FB26 PRG:3B26 C9 A0 beq Flow_FB34 ; CPU:$FB28 PRG:3B28 B0 05 lda SoundEffectTimer ; CPU:$FB2A PRG:3B2A A9 46 cmp #$A0 ; CPU:$FB2C PRG:3B2C 20 93 F9 bcs Flow_FB2F ; CPU:$FB2F PRG:3B2F A0 A5 lda #$46 ; CPU:$FB31 PRG:3B31 8C 01 40 jsr AudioRoutine_F993 ; CPU:$FB34 PRG:3B34 A2 B1 Flow_FB2F: ldy #$A5 ; CPU:$FB36 PRG:3B36 8E 00 40 sty APUPULSE1SWEEP ; CPU:$FB39 PRG:3B39 4C 2B FA Flow_FB34: ldx #$B1 ; CPU:$FB3C PRG:3B3C 84 F2 stx APUPULSE1CTRL ; CPU:$FB3E PRG:3B3E A9 18 Flow_FB39: jmp Flow_FA2B ; CPU:$FB40 PRG:3B40 85 F5 Flow_FB3C: sty ActiveSoundEffect ; CPU:$FB42 PRG:3B42 A2 81 lda #$18 ; CPU:$FB44 PRG:3B44 20 81 F9 sta Pulse2EffectTimer ; CPU:$FB47 PRG:3B47 A9 BD ldx #$81 ; CPU:$FB49 PRG:3B49 D0 66 jsr $F981 ; CPU:$FB4B PRG:3B4B A5 F5 lda #$BD ; CPU:$FB4D PRG:3B4D C9 16 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3B49-$3B4A. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_FB49: .byte $D0, $66 ; PRG $3B49 / CPU $FB49 ; CPU:$FB4F PRG:3B4F D0 66 Flow_FB4B: lda Pulse2EffectTimer ; CPU:$FB51 PRG:3B51 A9 B2 cmp #$16 ; CPU:$FB53 PRG:3B53 D0 5C bne Flow_FB55 ; CPU:$FB55 PRG:3B55 C9 13 Flow_FB51: lda #$B2 ; CPU:$FB57 PRG:3B57 D0 07 bne Flow_FBB1 ; CPU:$FB59 PRG:3B59 A2 82 Flow_FB55: cmp #$13 ; CPU:$FB5B PRG:3B5B 20 81 F9 bne Flow_FB60 ; CPU:$FB5E PRG:3B5E D0 F1 ldx #$82 ; CPU:$FB60 PRG:3B60 C9 0C jsr $F981 ; CPU:$FB62 PRG:3B62 D0 04 bne Flow_FB51 ; CPU:$FB64 PRG:3B64 A9 E1 Flow_FB60: cmp #$0C ; CPU:$FB66 PRG:3B66 D0 49 bne Flow_FB68 ; CPU:$FB68 PRG:3B68 C9 0A lda #$E1 ; CPU:$FB6A PRG:3B6A D0 42 bne Flow_FBB1 ; CPU:$FB6C PRG:3B6C A2 84 Flow_FB68: cmp #$0A ; CPU:$FB6E PRG:3B6E 20 81 F9 bne Flow_FBAE ; CPU:$FB71 PRG:3B71 A9 FD ldx #$84 ; CPU:$FB73 PRG:3B73 D0 3C jsr $F981 ; CPU:$FB75 PRG:3B75 84 F2 lda #$FD ; CPU:$FB77 PRG:3B77 A9 18 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3B73-$3B74. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_FB73: .byte $D0, $3C ; PRG $3B73 / CPU $FB73 ; CPU:$FB79 PRG:3B79 D0 3C Flow_FB75: sty ActiveSoundEffect ; CPU:$FB7B PRG:3B7B A2 82 lda #$18 ; CPU:$FB7D PRG:3B7D 20 81 F9 sta Pulse2EffectTimer ; CPU:$FB80 PRG:3B80 A9 63 ldx #$82 ; CPU:$FB82 PRG:3B82 D0 2D jsr $F981 ; CPU:$FB84 PRG:3B84 A5 F5 lda #$63 ; CPU:$FB86 PRG:3B86 C9 16 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3B82-$3B83. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_FB82: .byte $D0, $2D ; PRG $3B82 / CPU $FB82 ; CPU:$FB88 PRG:3B88 D0 2D Flow_FB84: lda Pulse2EffectTimer ; CPU:$FB8A PRG:3B8A A9 5E cmp #$16 ; CPU:$FB8C PRG:3B8C D0 23 bne Flow_FB8E ; CPU:$FB8E PRG:3B8E C9 10 lda #$5E ; CPU:$FB90 PRG:3B90 D0 0B bne Flow_FBB1 ; CPU:$FB92 PRG:3B92 A2 82 Flow_FB8E: cmp #$10 ; CPU:$FB94 PRG:3B94 A0 85 bne Flow_FB9D ; CPU:$FB96 PRG:3B96 20 83 F9 ldx #$82 ; CPU:$FB99 PRG:3B99 A9 89 ldy #$85 ; CPU:$FB9B PRG:3B9B D0 14 jsr ConfigurePulse2 ; CPU:$FB9D PRG:3B9D C9 0F lda #$89 ; CPU:$FB9F PRG:3B9F D0 04 bne Flow_FBB1 ; CPU:$FBA1 PRG:3BA1 A2 84 Flow_FB9D: cmp #$0F ; CPU:$FBA3 PRG:3BA3 D0 06 bne Flow_FBA5 ; CPU:$FBA5 PRG:3BA5 C9 0C ldx #$84 ; CPU:$FBA7 PRG:3BA7 D0 05 bne Flow_FBAB ; CPU:$FBA9 PRG:3BA9 A2 82 Flow_FBA5: cmp #$0C ; CPU:$FBAB PRG:3BAB 20 81 F9 bne Flow_FBAE ; CPU:$FBAE PRG:3BAE 4C DC FC ldx #$82 ; CPU:$FBB1 PRG:3BB1 A0 08 Flow_FBAB: jsr $F981 ; CPU:$FBB3 PRG:3BB3 8C 07 40 Flow_FBAE: jmp Flow_FCDC ; CPU:$FBB6 PRG:3BB6 8D 06 40 Flow_FBB1: ldy #$08 ; CPU:$FBB9 PRG:3BB9 D0 F3 sty APUPULSE2TIMERHI ; CPU:$FBBB PRG:3BBB 4C 3C FB sta APUPULSE2TIMERLO ; CPU:$FBBE PRG:3BBE 4C 4B FB ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3BB9-$3BBA. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_FBB9: .byte $D0, $F3 ; PRG $3BB9 / CPU $FBB9 ; CPU:$FBC1 PRG:3BC1 D0 F3 Flow_FBBB: jmp Flow_FB3C ; CPU:$FBC3 PRG:3BC3 A5 F2 Flow_FBBE: jmp Flow_FB4B ; CPU:$FBC5 PRG:3BC5 A6 FB Flow_FBC1: ldy AudioRequestFlags2 ; CPU:$FBC7 PRG:3BC7 D0 2D lda ActiveSoundEffect ; CPU:$FBC9 PRG:3BC9 4A ldx AudioStreamPosition ; CPU:$FBCA PRG:3BCA B0 F2 bne Flow_FBF6 ; CPU:$FBCC PRG:3BCC 46 FE lsr a ; CPU:$FBCE PRG:3BCE B0 EB bcs Flow_FBBE ; CPU:$FBD0 PRG:3BD0 4A lsr AudioRequestFlags2 ; CPU:$FBD1 PRG:3BD1 B0 B1 bcs Flow_FBBB ; CPU:$FBD3 PRG:3BD3 46 FE lsr a ; CPU:$FBD5 PRG:3BD5 B0 9E bcs Flow_FB84 ; CPU:$FBD7 PRG:3BD7 4A lsr AudioRequestFlags2 ; CPU:$FBD8 PRG:3BD8 B0 31 bcs Flow_FB75 ; CPU:$FBDA PRG:3BDA 46 FE lsr a ; CPU:$FBDC PRG:3BDC B0 21 bcs Flow_FC0B ; CPU:$FBDE PRG:3BDE 4A lsr AudioRequestFlags2 ; CPU:$FBDF PRG:3BDF B0 4A bcs Flow_FBFF ; CPU:$FBE1 PRG:3BE1 46 FE lsr a ; CPU:$FBE3 PRG:3BE3 B0 3A bcs Flow_FC2B ; CPU:$FBE5 PRG:3BE5 4A lsr AudioRequestFlags2 ; CPU:$FBE6 PRG:3BE6 B0 75 bcs Flow_FC1F ; CPU:$FBE8 PRG:3BE8 46 FE lsr a ; CPU:$FBEA PRG:3BEA B0 65 bcs Flow_FC5D ; CPU:$FBEC PRG:3BEC 4A lsr AudioRequestFlags2 ; CPU:$FBED PRG:3BED 46 FE bcs Flow_FC51 ; CPU:$FBEF PRG:3BEF 4A lsr a ; CPU:$FBF0 PRG:3BF0 B0 0A lsr AudioRequestFlags2 ; CPU:$FBF2 PRG:3BF2 46 FE lsr a ; CPU:$FBF4 PRG:3BF4 B0 03 bcs Flow_FBFC ; CPU:$FBF6 PRG:3BF6 4C E4 FC lsr AudioRequestFlags2 ; CPU:$FBF9 PRG:3BF9 4C 9E FC bcs Flow_FBF9 ; CPU:$FBFC PRG:3BFC 4C B4 FC Flow_FBF6: jmp Flow_FCE4 ; CPU:$FBFF PRG:3BFF 84 F2 Flow_FBF9: jmp Flow_FC9E ; CPU:$FC01 PRG:3C01 A9 14 Flow_FBFC: jmp Flow_FCB4 ; CPU:$FC03 PRG:3C03 85 F5 Flow_FBFF: sty ActiveSoundEffect ; CPU:$FC05 PRG:3C05 A0 10 lda #$14 ; CPU:$FC07 PRG:3C07 A9 54 sta Pulse2EffectTimer ; CPU:$FC09 PRG:3C09 D0 38 ldy #$10 ; CPU:$FC0B PRG:3C0B A5 F5 lda #$54 ; CPU:$FC0D PRG:3C0D C9 13 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3C09-$3C0A. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_FC09: .byte $D0, $38 ; PRG $3C09 / CPU $FC09 ; CPU:$FC0F PRG:3C0F D0 38 Flow_FC0B: lda Pulse2EffectTimer ; CPU:$FC11 PRG:3C11 A9 50 cmp #$13 ; CPU:$FC13 PRG:3C13 D0 31 bne Flow_FC15 ; CPU:$FC15 PRG:3C15 C9 06 lda #$50 ; CPU:$FC17 PRG:3C17 D0 35 bne Flow_FC46 ; CPU:$FC19 PRG:3C19 A0 0C Flow_FC15: cmp #$06 ; CPU:$FC1B PRG:3C1B A9 6A bne Flow_FC4E ; CPU:$FC1D PRG:3C1D D0 24 ldy #$0C ; CPU:$FC1F PRG:3C1F 84 F2 lda #$6A ; CPU:$FC21 PRG:3C21 A9 18 bne Flow_FC43 ; CPU:$FC23 PRG:3C23 85 F5 Flow_FC1F: sty ActiveSoundEffect ; CPU:$FC25 PRG:3C25 A0 14 lda #$18 ; CPU:$FC27 PRG:3C27 A9 4B sta Pulse2EffectTimer ; CPU:$FC29 PRG:3C29 D0 18 ldy #$14 ; CPU:$FC2B PRG:3C2B A5 F5 Flow_FC27: lda #$4B ; CPU:$FC2D PRG:3C2D C9 17 bne Flow_FC43 ; CPU:$FC2F PRG:3C2F D0 04 Flow_FC2B: lda Pulse2EffectTimer ; CPU:$FC31 PRG:3C31 A9 47 cmp #$17 ; CPU:$FC33 PRG:3C33 D0 11 bne Flow_FC35 ; CPU:$FC35 PRG:3C35 A0 08 lda #$47 ; CPU:$FC37 PRG:3C37 C9 10 bne Flow_FC46 ; CPU:$FC39 PRG:3C39 F0 EC Flow_FC35: ldy #$08 ; CPU:$FC3B PRG:3C3B A0 10 cmp #$10 ; CPU:$FC3D PRG:3C3D C9 0B beq Flow_FC27 ; CPU:$FC3F PRG:3C3F F0 E6 ldy #$10 ; CPU:$FC41 PRG:3C41 D0 0B cmp #$0B ; CPU:$FC43 PRG:3C43 8C 08 40 beq Flow_FC27 ; CPU:$FC46 PRG:3C46 8D 0A 40 bne Flow_FC4E ; CPU:$FC49 PRG:3C49 A2 08 Flow_FC43: sty APUTRIANGLECTRL ; CPU:$FC4B PRG:3C4B 8E 0B 40 Flow_FC46: sta APUTRIANGLETIMERLO ; CPU:$FC4E PRG:3C4E 4C DC FC ldx #$08 ; CPU:$FC51 PRG:3C51 84 F2 stx APUTRIANGLETIMERHI ; CPU:$FC53 PRG:3C53 A9 14 Flow_FC4E: jmp Flow_FCDC ; CPU:$FC55 PRG:3C55 85 F5 Flow_FC51: sty ActiveSoundEffect ; CPU:$FC57 PRG:3C57 A0 18 lda #$14 ; CPU:$FC59 PRG:3C59 A9 50 sta Pulse2EffectTimer ; CPU:$FC5B PRG:3C5B D0 E6 ldy #$18 ; CPU:$FC5D PRG:3C5D A5 F5 lda #$50 ; CPU:$FC5F PRG:3C5F C9 13 ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3C5B-$3C5C. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioTable_FC5B: .byte $D0, $E6 ; PRG $3C5B / CPU $FC5B ; CPU:$FC61 PRG:3C61 D0 E6 Flow_FC5D: lda Pulse2EffectTimer ; CPU:$FC63 PRG:3C63 A9 47 cmp #$13 ; CPU:$FC65 PRG:3C65 D0 DF bne Flow_FC67 ; CPU:$FC67 PRG:3C67 C9 0D lda #$47 ; CPU:$FC69 PRG:3C69 D0 06 bne Flow_FC46 ; CPU:$FC6B PRG:3C6B A0 08 Flow_FC67: cmp #$0D ; CPU:$FC6D PRG:3C6D A9 4B bne Flow_FC71 ; CPU:$FC6F PRG:3C6F D0 D2 ldy #$08 ; CPU:$FC71 PRG:3C71 C9 06 lda #$4B ; CPU:$FC73 PRG:3C73 D0 06 bne Flow_FC43 ; CPU:$FC75 PRG:3C75 A0 0E Flow_FC71: cmp #$06 ; CPU:$FC77 PRG:3C77 A9 59 bne Flow_FC7B ; CPU:$FC79 PRG:3C79 D0 C8 ldy #$0E ; CPU:$FC7B PRG:3C7B C9 04 lda #$59 ; CPU:$FC7D PRG:3C7D D0 04 bne Flow_FC43 ; CPU:$FC7F PRG:3C7F A9 5F Flow_FC7B: cmp #$04 ; CPU:$FC81 PRG:3C81 D0 C3 bne Flow_FC83 ; CPU:$FC83 PRG:3C83 C9 01 lda #$5F ; CPU:$FC85 PRG:3C85 D0 06 bne Flow_FC46 ; CPU:$FC87 PRG:3C87 A0 02 Flow_FC83: cmp #$01 ; CPU:$FC89 PRG:3C89 A9 64 bne Flow_FC8D ; CPU:$FC8B PRG:3C8B D0 B6 ldy #$02 ; CPU:$FC8D PRG:3C8D C9 06 lda #$64 ; CPU:$FC8F PRG:3C8F 90 04 bne Flow_FC43 ; CPU:$FC91 PRG:3C91 C9 0D Flow_FC8D: cmp #$06 ; CPU:$FC93 PRG:3C93 B0 B9 bcc Flow_FC95 ; CPU:$FC95 PRG:3C95 A5 F0 cmp #$0D ; CPU:$FC97 PRG:3C97 18 bcs Flow_FC4E ; CPU:$FC98 PRG:3C98 69 10 Flow_FC95: lda DmcOutputLevel ; CPU:$FC9A PRG:3C9A 85 F0 clc ; CPU:$FC9C PRG:3C9C D0 B0 adc #$10 ; CPU:$FC9E PRG:3C9E 84 F2 sta DmcOutputLevel ; CPU:$FCA0 PRG:3CA0 A9 05 bne Flow_FC4E ; CPU:$FCA2 PRG:3CA2 85 F5 Flow_FC9E: sty ActiveSoundEffect ; CPU:$FCA4 PRG:3CA4 A2 3F lda #$05 ; CPU:$FCA6 PRG:3CA6 EE FD 07 sta Pulse2EffectTimer ; CPU:$FCA9 PRG:3CA9 AD FD 07 ldx #$3F ; CPU:$FCAC PRG:3CAC 4A inc $07FD ; CPU:$FCAD PRG:3CAD 90 02 lda $07FD ; CPU:$FCAF PRG:3CAF A2 50 lsr a ; CPU:$FCB1 PRG:3CB1 8E F6 07 bcc Flow_FCB1 ; CPU:$FCB4 PRG:3CB4 AD F6 07 ldx #$50 ; CPU:$FCB7 PRG:3CB7 4A Flow_FCB1: stx $07F6 ; CPU:$FCB8 PRG:3CB8 4A Flow_FCB4: lda $07F6 ; CPU:$FCB9 PRG:3CB9 4A lsr a ; CPU:$FCBA PRG:3CBA 6D F6 07 lsr a ; CPU:$FCBD PRG:3CBD 8D F6 07 lsr a ; CPU:$FCC0 PRG:3CC0 0A adc $07F6 ; CPU:$FCC1 PRG:3CC1 0A sta $07F6 ; CPU:$FCC2 PRG:3CC2 8D 06 40 asl a ; CPU:$FCC5 PRG:3CC5 2A asl a ; CPU:$FCC6 PRG:3CC6 29 03 sta APUPULSE2TIMERLO ; CPU:$FCC8 PRG:3CC8 8D 07 40 rol a ; CPU:$FCCB PRG:3CCB A0 81 and #$03 ; CPU:$FCCD PRG:3CCD A2 50 sta APUPULSE2TIMERHI ; CPU:$FCCF PRG:3CCF A5 F5 ldy #$81 ; CPU:$FCD1 PRG:3CD1 C9 04 ldx #$50 ; CPU:$FCD3 PRG:3CD3 90 04 lda Pulse2EffectTimer ; CPU:$FCD5 PRG:3CD5 18 cmp #$04 ; CPU:$FCD6 PRG:3CD6 69 4D bcc Flow_FCD9 ; CPU:$FCD8 PRG:3CD8 AA clc ; CPU:$FCD9 PRG:3CD9 20 83 F9 adc #$4D ; CPU:$FCDC PRG:3CDC C6 F5 tax ; CPU:$FCDE PRG:3CDE D0 04 Flow_FCD9: jsr ConfigurePulse2 ; CPU:$FCE0 PRG:3CE0 A9 00 Flow_FCDC: dec Pulse2EffectTimer ; CPU:$FCE2 PRG:3CE2 85 F2 bne Flow_FCE4 ; CPU:$FCE4 PRG:3CE4 A5 FD lda #$00 ; CPU:$FCE6 PRG:3CE6 D0 05 sta ActiveSoundEffect ; CPU:$FCE8 PRG:3CE8 A5 FB Flow_FCE4: lda AudioRequestFlags1 ; CPU:$FCEA PRG:3CEA D0 29 bne Flow_FCED ; CPU:$FCEC PRG:3CEC 60 lda AudioStreamPosition ; CPU:$FCED PRG:3CED A0 07 bne Flow_FD15 ; CPU:$FCEF PRG:3CEF 0A rts ; CPU:$FCF0 PRG:3CF0 B0 03 Flow_FCED: ldy #$07 ; CPU:$FCF2 PRG:3CF2 88 Flow_FCEF: asl a ; CPU:$FCF3 PRG:3CF3 D0 FA bcs Flow_FCF5 ; CPU:$FCF5 PRG:3CF5 84 FC dey ; CPU:$FCF7 PRG:3CF7 B9 FA FD bne Flow_FCEF ; CPU:$FCFA PRG:3CFA A8 Flow_FCF5: sty AudioEventPriority ; CPU:$FCFB PRG:3CFB A2 00 lda $FDFA,y ; CPU:$FCFD PRG:3CFD 86 FB tay ; CPU:$FCFF PRG:3CFF B9 FA FD ldx #$00 ; CPU:$FD02 PRG:3D02 95 F6 stx AudioStreamPosition ; CPU:$FD04 PRG:3D04 C8 Flow_FCFF: lda $FDFA,y ; CPU:$FD05 PRG:3D05 E8 sta PitchAdjustment,x ; CPU:$FD06 PRG:3D06 E0 05 iny ; CPU:$FD08 PRG:3D08 D0 F5 inx ; CPU:$FD0A PRG:3D0A A9 01 cpx #$05 ; CPU:$FD0C PRG:3D0C 8D F0 07 bne Flow_FCFF ; CPU:$FD0F PRG:3D0F 8D F1 07 lda #$01 ; CPU:$FD12 PRG:3D12 8D F2 07 sta $07F0 ; CPU:$FD15 PRG:3D15 A5 FC sta $07F1 ; CPU:$FD17 PRG:3D17 D0 19 sta $07F2 ; CPU:$FD19 PRG:3D19 AD FE 07 Flow_FD15: lda AudioEventPriority ; CPU:$FD1C PRG:3D1C F0 14 bne Flow_FD32 ; CPU:$FD1E PRG:3D1E AD F0 07 lda $07FE ; CPU:$FD21 PRG:3D21 A2 90 beq Flow_FD32 ; CPU:$FD23 PRG:3D23 C9 03 lda $07F0 ; CPU:$FD25 PRG:3D25 90 08 ldx #$90 ; CPU:$FD27 PRG:3D27 A2 9D cmp #$03 ; CPU:$FD29 PRG:3D29 29 07 bcc Flow_FD2F ; CPU:$FD2B PRG:3D2B D0 02 ldx #$9D ; CPU:$FD2D PRG:3D2D A2 9A and #$07 ; CPU:$FD2F PRG:3D2F 8E 04 40 bne Flow_FD2F ; CPU:$FD32 PRG:3D32 CE F0 07 ldx #$9A ; CPU:$FD35 PRG:3D35 D0 36 Flow_FD2F: stx APUPULSE2CTRL ; CPU:$FD37 PRG:3D37 A4 FB Flow_FD32: dec $07F0 ; CPU:$FD39 PRG:3D39 E6 FB bne Flow_FD6D ; CPU:$FD3B PRG:3D3B B1 F7 ldy AudioStreamPosition ; CPU:$FD3D PRG:3D3D D0 05 inc AudioStreamPosition ; CPU:$FD3F PRG:3D3F 85 FB lda (AudioSequencePtrLo),y ; CPU:$FD41 PRG:3D41 85 FA bne Flow_FD44 ; CPU:$FD43 PRG:3D43 60 sta AudioStreamPosition ; CPU:$FD44 PRG:3D44 20 60 F9 sta AudioSequenceOffset ; CPU:$FD47 PRG:3D47 8D F0 07 rts ; CPU:$FD4A PRG:3D4A 8A Flow_FD44: jsr AudioRoutine_F960 ; CPU:$FD4B PRG:3D4B 29 3E sta $07F0 ; CPU:$FD4D PRG:3D4D 20 AA F9 txa ; CPU:$FD50 PRG:3D50 8D FE 07 and #$3E ; CPU:$FD53 PRG:3D53 D0 04 jsr AudioRoutine_F9AA ; CPU:$FD55 PRG:3D55 A2 90 sta $07FE ; CPU:$FD57 PRG:3D57 D0 11 bne Flow_FD59 ; CPU:$FD59 PRG:3D59 A2 9D ldx #$90 ; CPU:$FD5B PRG:3D5B A5 FC bne Flow_FD6A ; CPU:$FD5D PRG:3D5D F0 0B Flow_FD59: ldx #$9D ; CPU:$FD5F PRG:3D5F A2 86 lda AudioEventPriority ; CPU:$FD61 PRG:3D61 AD F0 07 beq Flow_FD6A ; CPU:$FD64 PRG:3D64 C9 08 ldx #$86 ; CPU:$FD66 PRG:3D66 B0 02 lda $07F0 ; CPU:$FD68 PRG:3D68 A2 82 cmp #$08 ; CPU:$FD6A PRG:3D6A 20 81 F9 bcs Flow_FD6A ; CPU:$FD6D PRG:3D6D A4 FA ldx #$82 ; CPU:$FD6F PRG:3D6F F0 4E Flow_FD6A: jsr $F981 ; CPU:$FD71 PRG:3D71 A5 FC Flow_FD6D: ldy AudioSequenceOffset ; CPU:$FD73 PRG:3D73 D0 0A beq Flow_FDBF ; CPU:$FD75 PRG:3D75 AD F1 07 lda AudioEventPriority ; CPU:$FD78 PRG:3D78 C9 03 bne Flow_FD7F ; CPU:$FD7A PRG:3D7A B0 03 lda $07F1 ; CPU:$FD7C PRG:3D7C 20 70 F9 cmp #$03 ; CPU:$FD7F PRG:3D7F CE F1 07 bcs Flow_FD7F ; CPU:$FD82 PRG:3D82 D0 3B jsr AudioRoutine_F970 ; CPU:$FD84 PRG:3D84 E6 FA Flow_FD7F: dec $07F1 ; CPU:$FD86 PRG:3D86 B1 F7 bne Flow_FDBF ; CPU:$FD88 PRG:3D88 10 0C inc AudioSequenceOffset ; CPU:$FD8A PRG:3D8A 20 66 F9 lda (AudioSequencePtrLo),y ; CPU:$FD8D PRG:3D8D 8D F3 07 bpl Flow_FD96 ; CPU:$FD90 PRG:3D90 A4 FA jsr AudioRoutine_F966 ; CPU:$FD92 PRG:3D92 E6 FA sta $07F3 ; CPU:$FD94 PRG:3D94 B1 F7 ldy AudioSequenceOffset ; CPU:$FD96 PRG:3D96 20 93 F9 inc AudioSequenceOffset ; CPU:$FD99 PRG:3D99 D0 04 lda (AudioSequencePtrLo),y ; CPU:$FD9B PRG:3D9B A2 10 Flow_FD96: jsr AudioRoutine_F993 ; CPU:$FD9D PRG:3D9D D0 17 bne Flow_FD9F ; CPU:$FD9F PRG:3D9F A2 5A ldx #$10 ; CPU:$FDA1 PRG:3DA1 A5 FC bne Flow_FDB6 ; CPU:$FDA3 PRG:3DA3 F0 11 Flow_FD9F: ldx #$5A ; CPU:$FDA5 PRG:3DA5 A2 46 lda AudioEventPriority ; CPU:$FDA7 PRG:3DA7 AD F3 07 beq Flow_FDB6 ; CPU:$FDAA PRG:3DAA C9 08 ldx #$46 ; CPU:$FDAC PRG:3DAC B0 02 lda $07F3 ; CPU:$FDAE PRG:3DAE A2 42 cmp #$08 ; CPU:$FDB0 PRG:3DB0 A5 F9 bcs Flow_FDB0 ; CPU:$FDB2 PRG:3DB2 D0 02 ldx #$42 ; CPU:$FDB4 PRG:3DB4 A2 86 Flow_FDB0: lda AudioSequenceIndex ; CPU:$FDB6 PRG:3DB6 20 78 F9 bne Flow_FDB6 ; CPU:$FDB9 PRG:3DB9 AD F3 07 ldx #$86 ; CPU:$FDBC PRG:3DBC 8D F1 07 Flow_FDB6: jsr $F978 ; CPU:$FDBF PRG:3DBF A4 F9 lda $07F3 ; CPU:$FDC1 PRG:3DC1 F0 36 sta $07F1 ; CPU:$FDC3 PRG:3DC3 AD F2 07 Flow_FDBF: ldy AudioSequenceIndex ; CPU:$FDC6 PRG:3DC6 C9 02 beq Flow_FDF9 ; CPU:$FDC8 PRG:3DC8 D0 05 lda $07F2 ; CPU:$FDCA PRG:3DCA A9 00 cmp #$02 ; CPU:$FDCC PRG:3DCC 8D 08 40 bne Flow_FDCF ; CPU:$FDCF PRG:3DCF CE F2 07 lda #$00 ; CPU:$FDD2 PRG:3DD2 D0 25 sta APUTRIANGLECTRL ; CPU:$FDD4 PRG:3DD4 E6 F9 Flow_FDCF: dec $07F2 ; CPU:$FDD6 PRG:3DD6 B1 F7 bne Flow_FDF9 ; CPU:$FDD8 PRG:3DD8 20 60 F9 inc AudioSequenceIndex ; CPU:$FDDB PRG:3DDB 8D F2 07 lda (AudioSequencePtrLo),y ; CPU:$FDDE PRG:3DDE A0 38 jsr AudioRoutine_F960 ; CPU:$FDE0 PRG:3DE0 18 sta $07F2 ; CPU:$FDE1 PRG:3DE1 69 FF ldy #$38 ; CPU:$FDE3 PRG:3DE3 C9 0E clc ; CPU:$FDE5 PRG:3DE5 B0 03 adc #$FF ; CPU:$FDE7 PRG:3DE7 0A cmp #$0E ; CPU:$FDE8 PRG:3DE8 0A bcs Flow_FDEA ; CPU:$FDE9 PRG:3DE9 A8 asl a ; CPU:$FDEA PRG:3DEA A5 FC asl a ; CPU:$FDEC PRG:3DEC D0 02 tay ; CPU:$FDEE PRG:3DEE A0 88 Flow_FDEA: lda AudioEventPriority ; CPU:$FDF0 PRG:3DF0 8C 08 40 bne Flow_FDF0 ; CPU:$FDF3 PRG:3DF3 8A ldy #$88 ; CPU:$FDF4 PRG:3DF4 29 3E Flow_FDF0: sty APUTRIANGLECTRL ; CPU:$FDF6 PRG:3DF6 20 AE F9 txa ; CPU:$FDF9 PRG:3DF9 60 and #$3E ; CPU:$FDFA PRG:3DFA ?? jsr AudioRoutine_F9AE ; CPU:$FDFC PRG:3DFC ?? Flow_FDF9: rts ; CPU:$FDFE PRG:3DFE ?? ; ----------------------------------------------------------------------------- ; Pass-1 non-code or currently untraced region: PRG $3DFA-$3FF6. ; Preserved verbatim pending data-format refinement in Pass 3. ; ----------------------------------------------------------------------------- AudioEventSequenceData: .byte $08, $0D, $12, $17, $17, $1C, $21, $26, $10, $25, $FE, $72, $1B, $08, $B4, $FE ; PRG $3DFA / CPU $FDFA ; CPU:$FE00 PRG:3E00 08 0D 12 17 17 1C 21 26 10 25 FE 72 1B 08 B4 FE .byte $28, $10, $10, $2A, $FF, $28, $0C, $08, $5B, $FF, $6E, $2A, $00, $ED, $FE, $08 ; PRG $3E0A / CPU $FE0A ; CPU:$FE10 PRG:3E10 28 10 10 2A FF 28 0C 08 5B FF 6E 2A 00 ED FE 08 .byte $00, $00, $06, $FF, $11, $00, $08, $E3, $FF, $00, $00, $C6, $67, $6A, $E0, $84 ; PRG $3E1A / CPU $FE1A ; CPU:$FE20 PRG:3E20 00 00 06 FF 11 00 08 E3 FF 00 00 C6 67 6A E0 84 .byte $23, $E7, $AA, $AE, $86, $88, $8D, $84, $CC, $CE, $CC, $44, $48, $46, $48, $C6 ; PRG $3E2A / CPU $FE2A ; CPU:$FE30 PRG:3E30 23 E7 AA AE 86 88 8D 84 CC CE CC 44 48 46 48 C6 .byte $44, $6E, $6A, $6E, $87, $00, $87, $26, $20, $18, $26, $20, $18, $20, $18, $38 ; PRG $3E3A / CPU $FE3A ; CPU:$FE40 PRG:3E40 44 6E 6A 6E 87 00 87 26 20 18 26 20 18 20 18 38 .byte $20, $18, $38, $20, $3C, $38, $20, $3C, $38, $20, $3C, $38, $20, $3C, $38, $22 ; PRG $3E4A / CPU $FE4A ; CPU:$FE50 PRG:3E50 20 18 38 20 3C 38 20 3C 38 20 3C 38 20 3C 38 22 .byte $18, $3A, $22, $18, $3A, $22, $18, $3A, $22, $18, $3A, $2A, $20, $18, $2A, $20 ; PRG $3E5A / CPU $FE5A ; CPU:$FE60 PRG:3E60 18 3A 22 18 3A 22 18 3A 22 18 3A 2A 20 18 2A 20 .byte $18, $2A, $20, $18, $2A, $20, $18, $26, $20, $18, $26, $20, $18, $2A, $22, $1C ; PRG $3E6A / CPU $FE6A ; CPU:$FE70 PRG:3E70 18 2A 20 18 2A 20 18 26 20 18 26 20 18 2A 22 1C .byte $2A, $22, $1C, $2E, $26, $20, $2E, $26, $20, $2E, $26, $34, $2E, $26, $20, $2A ; PRG $3E7A / CPU $FE7A ; CPU:$FE80 PRG:3E80 2A 22 1C 2E 26 20 2E 26 20 2E 26 34 2E 26 20 2A .byte $22, $18, $2A, $22, $18, $26, $1C, $3C, $26, $1C, $3C, $86, $26, $98, $B8, $98 ; PRG $3E8A / CPU $FE8A ; CPU:$FE90 PRG:3E90 22 18 2A 22 18 26 1C 3C 26 1C 3C 86 26 98 B8 98 .byte $B8, $A0, $BC, $A0, $BC, $A2, $98, $A2, $98, $AA, $A0, $AA, $A0, $98, $B8, $9C ; PRG $3E9A / CPU $FE9A ; CPU:$FEA0 PRG:3EA0 B8 A0 BC A0 BC A2 98 A2 98 AA A0 AA A0 98 B8 9C .byte $BA, $A0, $BC, $A0, $BC, $A2, $98, $A6, $9C, $99, $10, $52, $12, $8E, $8C, $4E ; PRG $3EAA / CPU $FEAA ; CPU:$FEB0 PRG:3EB0 BA A0 BC A0 BC A2 98 A6 9C 99 10 52 12 8E 8C 4E .byte $8C, $4C, $88, $86, $88, $C6, $C4, $C4, $84, $00, $80, $0A, $81, $0C, $80, $0C ; PRG $3EBA / CPU $FEBA ; CPU:$FEC0 PRG:3EC0 8C 4C 88 86 88 C6 C4 C4 84 00 80 0A 81 0C 80 0C .byte $82, $08, $06, $81, $2A, $82, $06, $81, $2A, $82, $2E, $2A, $26, $83, $20, $04 ; PRG $3ECA / CPU $FECA ; CPU:$FED0 PRG:3ED0 82 08 06 81 2A 82 06 81 2A 82 2E 2A 26 83 20 04 .byte $04, $04, $98, $B8, $98, $B8, $BA, $B8, $BA, $B8, $24, $66, $26, $A2, $A0, $5C ; PRG $3EDA / CPU $FEDA ; CPU:$FEE0 PRG:3EE0 04 04 98 B8 98 B8 BA B8 BA B8 24 66 26 A2 A0 5C .byte $D8, $58, $C4, $E7, $26, $A2, $A6, $AA, $AE, $07, $00, $84, $62, $58, $7A, $58 ; PRG $3EEA / CPU $FEEA ; CPU:$FEF0 PRG:3EF0 D8 58 C4 E7 26 A2 A6 AA AE 07 00 84 62 58 7A 58 .byte $66, $62, $5C, $66, $46, $AF, $2A, $A7, $22, $A1, $1C, $19, $0C, $8E, $C5, $47 ; PRG $3EFA / CPU $FEFA ; CPU:$FF00 PRG:3F00 66 62 5C 66 46 AF 2A A7 22 A1 1C 19 0C 8E C5 47 .byte $48, $46, $46, $6C, $6C, $6A, $6A, $66, $66, $22, $22, $E2, $00, $62, $58, $58 ; PRG $3F0A / CPU $FF0A ; CPU:$FF10 PRG:3F10 48 46 46 6C 6C 6A 6A 66 66 22 22 E2 00 62 58 58 .byte $58, $62, $58, $58, $58, $60, $58, $78, $58, $66, $60, $58, $60, $22, $22, $E2 ; PRG $3F1A / CPU $FF1A ; CPU:$FF20 PRG:3F20 58 62 58 58 58 60 58 78 58 66 60 58 60 22 22 E2 .byte $C7, $2F, $C7, $0D, $CF, $13, $CF, $8C, $88, $C6, $C4, $00, $87, $2A, $84, $26 ; PRG $3F2A / CPU $FF2A ; CPU:$FF30 PRG:3F30 C7 2F C7 0D CF 13 CF 8C 88 C6 C4 00 87 2A 84 26 .byte $87, $22, $18, $38, $34, $18, $38, $34, $3C, $38, $32, $3C, $38, $32, $84, $18 ; PRG $3F3A / CPU $FF3A ; CPU:$FF40 PRG:3F40 87 22 18 38 34 18 38 34 3C 38 32 3C 38 32 84 18 .byte $87, $38, $38, $3A, $3C, $82, $18, $18, $C5, $84, $98, $B8, $A6, $9C, $D8, $98 ; PRG $3F4A / CPU $FF4A ; CPU:$FF50 PRG:3F50 87 38 38 3A 3C 82 18 18 C5 84 98 B8 A6 9C D8 98 .byte $98, $6B, $E9, $67, $E5, $2B, $E7, $25, $E1, $DD, $85, $DB, $1D, $DF, $A0, $86 ; PRG $3F5A / CPU $FF5A ; CPU:$FF60 PRG:3F60 98 6B E9 67 E5 2B E7 25 E1 DD 85 DB 1D DF A0 86 .byte $AE, $AA, $2F, $E7, $3D, $E1, $DD, $85, $FD, $19, $DD, $60, $44, $A0, $64, $44 ; PRG $3F6A / CPU $FF6A ; CPU:$FF70 PRG:3F70 AE AA 2F E7 3D E1 DD 85 FD 19 DD 60 44 A0 64 44 .byte $A4, $E7, $85, $DD, $1B, $DD, $66, $44, $66, $44, $00, $85, $44, $87, $42, $85 ; PRG $3F7A / CPU $FF7A ; CPU:$FF80 PRG:3F80 A4 E7 85 DD 1B DD 66 44 66 44 00 85 44 87 42 85 .byte $40, $87, $3E, $84, $02, $87, $16, $84, $14, $87, $12, $87, $10, $85, $04, $87 ; PRG $3F8A / CPU $FF8A ; CPU:$FF90 PRG:3F90 40 87 3E 84 02 87 16 84 14 87 12 87 10 85 04 87 .byte $04, $12, $02, $84, $40, $87, $12, $12, $40, $12, $84, $02, $86, $0C, $04, $08 ; PRG $3F9A / CPU $FF9A ; CPU:$FFA0 PRG:3FA0 04 12 02 84 40 87 12 12 40 12 84 02 86 0C 04 08 .byte $16, $84, $3E, $87, $12, $12, $16, $12, $84, $14, $87, $16, $81, $02, $04, $82 ; PRG $3FAA / CPU $FFAA ; CPU:$FFB0 PRG:3FB0 16 84 3E 87 12 12 16 12 84 14 87 16 81 02 04 82 .byte $02, $81, $3E, $04, $82, $02, $87, $16, $85, $04, $81, $2E, $04, $2E, $04, $09 ; PRG $3FBA / CPU $FFBA ; CPU:$FFC0 PRG:3FC0 02 81 3E 04 82 02 87 16 85 04 81 2E 04 2E 04 09 .byte $DD, $9C, $2B, $FB, $BA, $9C, $BA, $DC, $98, $A6, $86, $98, $A6, $9C, $A6, $88 ; PRG $3FCA / CPU $FFCA ; CPU:$FFD0 PRG:3FD0 DD 9C 2B FB BA 9C BA DC 98 A6 86 98 A6 9C A6 88 .byte $07, $D9, $86, $09, $DD, $88, $E6, $A6, $B8, $02, $12, $02, $12, $02, $12, $02 ; PRG $3FDA / CPU $FFDA ; CPU:$FFE0 PRG:3FE0 07 D9 86 09 DD 88 E6 A6 B8 02 12 02 12 02 12 02 .byte $52, $00, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; PRG $3FEA / CPU $FFEA ; CPU:$FFF0 PRG:3FF0 52 00 FF FF FF FF FF FF FF FF FF FF FF ; ============================================================================= ; RunAudioEngine ; CPU address: $FFF7 PRG offset: $3FF7 ; ; Global description: ; Pass-1 discovered routine entry. Exact game-level responsibility remains to be established in the semantic naming pass. ; ; Parameters: ; Register and RAM inputs are not yet proven; inspect callers listed in reconstructed.map. ; ; Returns: ; Return convention follows the terminating RTS/RTI or tail jump in this block. ; ============================================================================= RunAudioEngine: jmp AudioEngineUpdate ; CPU:$FFFD PRG:3FFD ?? ; ============================================================================= ; Hardware vectors ; ============================================================================= .word NmiHandler ; CPU:$FFFF PRG:3FFF ?? .word Reset ; CPU:$10001 PRG:4001 ?? .word Reset ; CPU:$10003 PRG:4003 ??