Pass 3 for NES PowerPad Test Card (U): name all data tables and VramWrite streams
- Decoded the VramWrite ($E1CC) stream format: <addr hi> <addr lo> <count> <bytes>, $00 terminator - Named all 9 payload streams ($E4CC-$E7C2, no gaps/overlaps) plus VramWriteSourcePointerTable at $F000 - Split PadBitTableLives into Player1TileTable ($E4B4) and Player2TileTable ($E4C0), 12 entries each (Y=0..11) - Decoded CHR font (digits $30-$39, letters $3A-$52, space $5F; 'W' missing from the A-Z run) and recovered on-screen text including 'PRESS A TO TEST SIDE-A' / 'SIDE-B' - Documented that the 16 KiB PRG is two byte-identical 8 KiB halves; $C000 copy is dead - Documented 7 unreached subroutines inside the live code region (kept as .byte per Pass-1 policy) - Fixed a stray duplicate sentence and stale _wip paths in root OVERVIEW.md Byte-identical ROM verified.
This commit is contained in:
1 parent
3ef16a6f99
commit
4c644d2a20
23 files changed
+17290
-507
No files matched your search
@@ -1,10 +1,52 @@
|
||||
all: reconstructed_prg.bin verify
|
||||
prg.o: prg.s symbols.inc prg.bin
|
||||
ca65 -g -o $@ prg.s
|
||||
reconstructed_prg.bin: prg.o linker.cfg
|
||||
ld65 -C linker.cfg -m reconstructed.map -Ln reconstructed.lbl -o $@ prg.o
|
||||
verify: reconstructed_prg.bin prg.bin
|
||||
cmp reconstructed_prg.bin prg.bin
|
||||
@echo BYTE-IDENTICAL
|
||||
CA65 ?= ca65
|
||||
LD65 ?= ld65
|
||||
PYTHON ?= python3
|
||||
NESDIS ?= ../../../_tools/nesdis.py
|
||||
PASS2 ?= ../../../_tools/pass2.py
|
||||
|
||||
all: reconstructed.nes verify
|
||||
|
||||
prg.o: prg.s symbols.inc locals.inc
|
||||
$(CA65) -g -o $@ $<
|
||||
|
||||
header.o: header.s
|
||||
$(CA65) -g -o $@ $<
|
||||
|
||||
chr.o: chr.s
|
||||
$(CA65) -g -o $@ $<
|
||||
|
||||
reconstructed.nes: header.o prg.o chr.o linker.cfg
|
||||
$(LD65) -C linker.cfg -m reconstructed.map -Ln reconstructed.lbl -o $@ header.o prg.o chr.o
|
||||
|
||||
verify: reconstructed.nes
|
||||
cmp reconstructed.nes rom.nes
|
||||
@echo "Byte-identical ROM verified."
|
||||
|
||||
# Regenerate prg.s from prg.bin. Every --table/--data/--extra-seed flag below is a
|
||||
# documented classification decision, not a convenience; see the header block of prg.s
|
||||
# and OVERVIEW.md.
|
||||
pass1:
|
||||
$(PYTHON) $(NESDIS) --prg prg.bin --base 0x8000 --project "MUSCLE (U)" \
|
||||
--out prg.s --locals locals.inc --auto-seed \
|
||||
--table 0x9237:40,0xAC35:3,0x9F2B:16 \
|
||||
--data 0xACBD:12 \
|
||||
--extra-seed 0x8644,0x8653,0x9CAD,0xABF7
|
||||
|
||||
# Pass 2: replace the derived Label_XXXX names with the semantic routine names and
|
||||
# their branch-role suffixes, then apply the zero-page names and rebuild locals.inc.
|
||||
pass2: pass1
|
||||
$(PYTHON) $(PASS2) derive prg.s routine_names.tsv label_names.tsv
|
||||
$(PYTHON) $(PASS2) apply prg.s label_names.tsv
|
||||
$(PYTHON) $(PASS2) apply prg.s zero_page_ranges.tsv
|
||||
$(PYTHON) $(PASS2) apply prg.s zero_page_names.tsv
|
||||
$(PYTHON) $(PASS2) reflow prg.s
|
||||
$(PYTHON) $(PASS2) describe prg.s routine_purposes.tsv
|
||||
$(PYTHON) $(PASS2) structure prg.s data_regions.tsv
|
||||
$(PYTHON) $(PASS2) locals prg.s zero_page_names.tsv locals.inc zero_page_ranges.tsv
|
||||
|
||||
regen: pass2
|
||||
|
||||
clean:
|
||||
rm -f prg.o reconstructed_prg.bin reconstructed.map reconstructed.lbl
|
||||
rm -f *.o reconstructed.nes reconstructed_prg.bin reconstructed.map reconstructed.lbl
|
||||
|
||||
.PHONY: all verify clean regen pass1 pass2
|
||||
@@ -0,0 +1,2 @@
|
||||
.segment "CHR"
|
||||
.incbin "chr.bin"
|
||||
@@ -0,0 +1,71 @@
|
||||
# MUSCLE (U) data-region structure - Pass 3
|
||||
# start<TAB>end<TAB>label<TAB>format<TAB>comment
|
||||
0x85ED 0x8638 StandaloneBytecodeProgram bytes Pass 3: bytecode program not listed in BytecodeProgramPointerTable.
|
||||
0x881F 0x8836 StandaloneBytecodeProgram_1 bytes Pass 3: bytecode program not listed in BytecodeProgramPointerTable.
|
||||
0x8A1E 0x8A27 StandaloneBytecodeProgram_2 bytes Pass 3: tail of a bytecode program; the $1D byte rules out an instruction decode.
|
||||
0x8B7D 0x8B91 AttributeBlockDeltaTable bytes Pass 3: 7 x 3-byte deltas {source lo, source hi, destination lo}. ClearAttributeRegion walks it with three `sbc table,x` against the same index.
|
||||
0x8CEF 0x8D3A BytecodeProgramPointerTable word Pass 3: 38 x 16-bit pointers into the bytecode programs that follow. RunBytecodeInterpreter masks the program index with $3F, so entries 38-63 would read past this table; entry 38 already reads the first byte of BytecodeProgram_00, so the table is exactly 38 entries.
|
||||
0x8D3B 0x8D3F BytecodeProgram_00 bytes Pass 3: bytecode program, table index/indices [13], 5 bytes.
|
||||
0x8D40 0x8D5B BytecodeProgram_01 bytes Pass 3: bytecode program, table index/indices [36], 28 bytes.
|
||||
0x8D5C 0x8D8C BytecodeProgram_02 bytes Pass 3: bytecode program, table index/indices [37], 49 bytes.
|
||||
0x8D8D 0x8D95 BytecodeProgram_03 bytes Pass 3: bytecode program, table index/indices [22], 9 bytes.
|
||||
0x8D96 0x8D9E BytecodeProgram_04 bytes Pass 3: bytecode program, table index/indices [23], 9 bytes.
|
||||
0x8D9F 0x8DB5 BytecodeProgram_05 bytes Pass 3: bytecode program, table index/indices [33], 23 bytes.
|
||||
0x8DB6 0x8DE1 BytecodeProgram_06 bytes Pass 3: bytecode program, table index/indices [34], 44 bytes.
|
||||
0x8DE2 0x8E2C BytecodeProgram_07 bytes Pass 3: bytecode program, table index/indices [35], 75 bytes.
|
||||
0x8E2D 0x8E78 BytecodeProgram_08 bytes Pass 3: bytecode program, table index/indices [14], 76 bytes.
|
||||
0x8E79 0x8EA8 BytecodeProgram_09 bytes Pass 3: bytecode program, table index/indices [11], 48 bytes.
|
||||
0x8EA9 0x8EF3 BytecodeProgram_0A bytes Pass 3: bytecode program, table index/indices [24], 75 bytes.
|
||||
0x8EF4 0x8F19 BytecodeProgram_0B bytes Pass 3: bytecode program, table index/indices [25], 38 bytes.
|
||||
0x8F1A 0x8F1F BytecodeProgram_0C bytes Pass 3: bytecode program, table index/indices [28], 6 bytes.
|
||||
0x8F20 0x8F47 BytecodeProgram_0D bytes Pass 3: bytecode program, table index/indices [31], 40 bytes.
|
||||
0x8F48 0x8F70 BytecodeProgram_0E bytes Pass 3: bytecode program, table index/indices [32], 41 bytes.
|
||||
0x8F71 0x8F93 BytecodeProgram_0F bytes Pass 3: bytecode program, table index/indices [29], 35 bytes.
|
||||
0x8F94 0x8FFC BytecodeProgram_10 bytes Pass 3: bytecode program, table index/indices [16], 105 bytes.
|
||||
0x8FFD 0x9007 BytecodeProgram_11 bytes Pass 3: bytecode program, table index/indices [15], 11 bytes.
|
||||
0x9008 0x9070 BytecodeProgram_12 bytes Pass 3: bytecode program, table index/indices [17], 105 bytes.
|
||||
0x9071 0x907C BytecodeProgram_13 bytes Pass 3: bytecode program, table index/indices [27], 12 bytes.
|
||||
0x907D 0x9080 BytecodeProgram_14 bytes Pass 3: bytecode program, table index/indices [0], 4 bytes.
|
||||
0x9081 0x90A5 BytecodeProgram_15 bytes Pass 3: bytecode program, table index/indices [1], 37 bytes.
|
||||
0x90A6 0x90B8 BytecodeProgram_16 bytes Pass 3: bytecode program, table index/indices [26], 19 bytes.
|
||||
0x90B9 0x90C9 BytecodeProgram_17 bytes Pass 3: bytecode program, table index/indices [5], 17 bytes.
|
||||
0x90CA 0x90D6 BytecodeProgram_18 bytes Pass 3: bytecode program, table index/indices [2], 13 bytes.
|
||||
0x90D7 0x90DD BytecodeProgram_19 bytes Pass 3: bytecode program, table index/indices [12], 7 bytes.
|
||||
0x90DE 0x9118 BytecodeProgram_1A bytes Pass 3: bytecode program, table index/indices [3], 59 bytes.
|
||||
0x9119 0x9130 BytecodeProgram_1B bytes Pass 3: bytecode program, table index/indices [4], 24 bytes.
|
||||
0x9131 0x9135 BytecodeProgram_1C bytes Pass 3: bytecode program, table index/indices [6], 5 bytes.
|
||||
0x9136 0x9140 BytecodeProgram_1D bytes Pass 3: bytecode program, table index/indices [7], 11 bytes.
|
||||
0x9141 0x9174 BytecodeProgram_1E bytes Pass 3: bytecode program, table index/indices [8], 52 bytes.
|
||||
0x9175 0x918A BytecodeProgram_1F bytes Pass 3: bytecode program, table index/indices [18], 22 bytes.
|
||||
0x918B 0x91DF BytecodeProgram_20 bytes Pass 3: bytecode program, table index/indices [19], 85 bytes.
|
||||
0x91E0 0x91EB BytecodeProgram_21 bytes Pass 3: bytecode program, table index/indices [20], 12 bytes.
|
||||
0x91EC 0x922B BytecodeProgram_22 bytes Pass 3: bytecode program, table index/indices [21], 64 bytes.
|
||||
0x922C 0x922E BytecodeProgram_23 bytes Pass 3: bytecode program, table index/indices [9], 3 bytes.
|
||||
0x922F 0x9231 BytecodeProgram_24 bytes Pass 3: bytecode program, table index/indices [10], 3 bytes.
|
||||
0x9232 0x9236 BytecodeProgram_25 bytes Pass 3: bytecode program, table index/indices [30], 5 bytes.
|
||||
0x9237 0x9286 BytecodeHandlerTable word Pass 3: 40 x 16-bit opcode handlers, index = (token - $C8). Dispatched through BytecodeHandlerPointerLo/Hi into DispatchThroughPointer (jmp ($001C)). Tokens $C8-$EF map to entries 0-39; slots the assembler never filled hold the next table's bytes.
|
||||
0x9EF4 0x9F13 OamShadowTemplate bytes Pass 3: the 32-byte initial OAM block LoadOamShadowFromTable copies into $0300.
|
||||
0x9F2B 0x9F4A SecondaryBytecodeHandlerTable word Pass 3: 16 x 16-bit handlers consumed by UpdateActorMovement; index = (token & $0F) * 2. Entry 1 holds $9FBB, one byte into a real jsr, so that slot is unused.
|
||||
0xA5F4 0xA617 StageDescriptorPointerTable word Pass 3: 18 x 16-bit pointers into StageDescriptorData. Two readers share it: UpdateStageDescriptorAt reads (A & $1E) starting at entry 0, and the writer at $A593 reads the same array starting at entry 9. Entry 18 already reads descriptor text, so 18.
|
||||
0xA618 0xA65F StageDescriptorData bytes Pass 3: packed tile/attribute sequences the pointer table above targets. Six records, twelve bytes apart ($A618 $A624 $A630 $A63C $A648) and a final ten-byte record at $A654; each is a short header followed by a descending run of tile indices. The last record ends with the two $30 terminator bytes.
|
||||
0xAB14 0xAB67 StandaloneBytecodeProgram_3 bytes Pass 3: bytecode program not listed in BytecodeProgramPointerTable.
|
||||
0xAC35 0xAC3A LevelVramWriterTable word Pass 3: 3 x 16-bit VRAM writers, index = the level byte at $0326. SelectLevelVramWriter loads the entry into SourcePointerLo/Hi and jumps through jmp ($0010).
|
||||
0xACBD 0xACC8 VramRunFillValues bytes Pass 3: the 12 fill values the compressed-VRAM run tokens $B8-$C3 select by index (token - $B8); WriteVramRunToken reads one with `lda $ACBD,x`.
|
||||
0xAE35 0xAE44 AnimationFrameCollisionBits bytes Pass 3: 16-entry animation-frame -> collision-flag-bits table (index = animation frame & $0F).
|
||||
0xAF37 0xAF3A UnreachableSoundInitIsland bytes Pass 3: lda $E9 / bne $AF34 sits immediately after the rts that ends InitializeSoundEngine and branches back into the middle of it. No word in the image points here and the bytecode handler tables do not contain it, so it is unreachable. It is neither a coherent routine nor a table anything reads, so it stays data.
|
||||
0xB0CB 0xB0E2 SoundNotePeriodTable word Pass 3: 12 x 16-bit tone periods, index = note number & $0F (guarded by cmp #$0C). ComputeTonePeriod loads the low byte from $B0CB+n and the high byte from $B0CC+n.
|
||||
0xB0E3 0xB0F2 SoundNoteDurationTable bytes Pass 3: 16 note durations, index = (duration byte - $F0), clamped by the table's end at $B0F2.
|
||||
0xB0F3 0xB0F6 ApuChannelEnableBitsSet bytes Pass 3: 4 x 1-byte masks OR-ed into ApuEnableMask, indexed by channel*4 in BuildApuChannelMask.
|
||||
0xB0F7 0xB0FA ApuChannelEnableBitsClear bytes Pass 3: 4 x 1-byte masks AND-ed into ApuEnableMask, indexed by channel*4 in RebuildApuEnableMask.
|
||||
0xB0FB 0xB91A StageNametableAndObjectData bytes Pass 3: the bulk of the per-stage data - compressed nametable and attribute payloads plus the object layout lists. Nothing indexes it with a constant address: ProcessBytecodeOpcode reaches it through StageDataPointerLow plus the 16-bit value carried in the bytecode stream, so the record structure is not resolvable from the static trace.
|
||||
0xB91B 0xB970 StageDataFiller bytes Pass 3: an 86-byte run of $FF padding between stage data blocks.
|
||||
0xB971 0xBD27 StageNametableAndObjectData_1 bytes Pass 3: continuation of the stage data block; see StageNametableAndObjectData.
|
||||
0xBD28 0xBD29 StageDataPointerLow bytes Pass 3: one low byte per player; ProcessBytecodeOpcode adds $32 for the second player to reach its copy, so the two entries are $32 apart in the stage data that follows.
|
||||
0xBD2A 0xBEBF StageNametableAndObjectData_2 bytes Pass 3: continuation of the stage data block, read through StageDataPointerLow plus the $32 per-player offset.
|
||||
0xBEC0 0xBEC7 InitialOamAttributes bytes Pass 3: 8 entries (ldx #$07) copied into $0220 by CompactOamList.
|
||||
0xBEC8 0xBECF InitialOamTiles bytes Pass 3: 8 entries copied into $0223 by CompactOamList.
|
||||
0xBED0 0xBF8F StageDataTail bytes Pass 3: the tail of the stage data block, ahead of the VRAM block descriptors.
|
||||
0xBF90 0xBF97 VramBlockByteCounts bytes Pass 3: 8 block sizes fed to ExecuteVramTransfer by ReadControllerAndInit.
|
||||
0xBF98 0xBF9F VramBlockSourceLowBytes bytes Pass 3: 8 block source low bytes; the high byte is always $02.
|
||||
0xBFA0 0xBFFA SoundSequenceAndLevelData bytes Pass 3: the $B1A1/$B1B0/$B2B9/$B3B2 sound sequences the sound engine points at, plus the level tables, ending just before the vectors.
|
||||
0xBFFB 0xBFFF InterruptVectors bytes Pass 3: the three CPU vectors, mirrored into the ROM at $FFFB-$FFFF.
|
||||
|
@@ -0,0 +1,2 @@
|
||||
.segment "HEADER"
|
||||
.incbin "header.bin"
|
||||
@@ -0,0 +1,702 @@
|
||||
label Label_800E WaitForFirstPpuWarmup
|
||||
label Label_8019 WaitForSecondPpuWarmup
|
||||
label Label_802C InitializeGameState
|
||||
label Label_803B InitializeGameState_OnNonzero_803B
|
||||
label Label_8052 UpdateNametableFromStream
|
||||
label Label_805B UpdateNametableFromStream_OnNonzero_805B
|
||||
label Label_8066 UpdateNametableFromStream_OnZero_8066
|
||||
label Label_806E UpdateNametableFromStream_OnNonnegative_806E
|
||||
label Label_8077 UpdateNametableFromStream_OnZero_8077
|
||||
label Label_807A UpdateNametableFromStream_OnZero_807A
|
||||
label Label_8080 UpdateNametableFromStream_OnZero_8080
|
||||
label Label_8094 UpdateNametableFromStream_OnZero_8094
|
||||
label Label_80AC StartStageSequence
|
||||
label Label_80E0 StartStageSequence_OnZero_80E0
|
||||
label Label_8105 StartStageSequence_OnNonzero_8105
|
||||
label Label_810A StartStageSequence_OnNonzero_810A
|
||||
label Label_811A StartStageSequence_OnZero_811A
|
||||
label Label_8132 UpdateFadeFlashSprites
|
||||
label Label_8154 UpdateFadeFlashSprites_OnCarryClear_8154
|
||||
label Label_8164 InitializeRound
|
||||
label Label_8173 InitializeRound_OnCarryClear_8173
|
||||
label Label_8187 InitializeRound_OnNonnegative_8187
|
||||
label Label_8191 InitializeRound_OnNonzero_8191
|
||||
label Label_8196 InitializeRound_OnNonnegative_8196
|
||||
label Label_81A0 InitializeRound_OnNonzero_81A0
|
||||
label Label_81D6 InitializeRound_OnCarryClear_81D6
|
||||
label Label_81DA InitializeRound_OnCarryClear_81DA
|
||||
label Label_81DE InitializeRound_OnCarryClear_81DE
|
||||
label Label_81E0 InitializeRound_OnCarryClear_81E0
|
||||
label Label_81E2 InitializeRound_JoinBranchPaths_81E2
|
||||
label Label_8223 InitializeRound_OnNonzero_8223
|
||||
label Label_8226 MainGameLoop
|
||||
label Label_8232 MainGameLoop_OnZero_8232
|
||||
label Label_8235 MainGameLoop_OnZero_8235
|
||||
label Label_824D MainGameLoop_OnZero_824D
|
||||
label Label_8255 MainGameLoop_OnNonzero_8255
|
||||
label Label_8261 MainGameLoop_OnNonzero_8261
|
||||
label Label_8267 MainGameLoop_OnNonnegative_8267
|
||||
label Label_8284 MainGameLoop_OnZero_8284
|
||||
label Label_828C MainGameLoop_OnNonzero_828C
|
||||
label Label_8298 MainGameLoop_OnNonzero_8298
|
||||
label Label_829E MainGameLoop_OnNonnegative_829E
|
||||
label Label_82AC DivideBy20
|
||||
label Label_82BE DivideBy20_OnNonzero_82BE
|
||||
label Label_82DA DivideBy20_OnCarryClear_82DA
|
||||
label Label_82E1 SilenceSoundChannels1And3
|
||||
label Label_82ED SilenceSoundChannel3
|
||||
label Label_82FA StartIntroMusic
|
||||
label Label_82FF StartMusicSequence
|
||||
label Label_832A UpdateHudTallyTiles
|
||||
label Label_833E UpdateHudTallyTiles_OnZero_833E
|
||||
label Label_8352 UpdateHudTallyTiles_OnZero_8352
|
||||
label Label_8353 UpdateScoreTallyDigits
|
||||
label Label_8372 WriteScoreTallyDigits
|
||||
label Label_8374 WriteScoreTallyDigits_OnCarryClear_8374
|
||||
label Label_8385 WriteScoreTallyDigits_OnZero_8385
|
||||
label Label_8390 WriteScoreTallyDigits_OnNonzero_8390
|
||||
label Label_8399 LoadOamShadowFromTable
|
||||
label Label_839B LoadOamShadowFromTable_OnNonnegative_839B
|
||||
label Label_83A7 UpdateActorPositions
|
||||
label Label_83AB UpdateActorPositions_OnNonnegative_83AB
|
||||
label Label_83D0 UpdateActorPositions_OnZero_83D0
|
||||
label Label_83E1 UpdateActorPositions_OnCarryClear_83E1
|
||||
label Label_841A UpdateActorPositions_OnZero_841A
|
||||
label Label_8434 UpdateActorPositions_OnNonzero_8434
|
||||
label Label_845C UpdateRoundTimers
|
||||
label Label_848D UpdateRoundTimers_OnNonzero_848D
|
||||
label Label_84A1 UpdateRoundTimers_OnZero_84A1
|
||||
label Label_84B1 UpdateRoundTimers_OnNonzero_84B1
|
||||
label Label_84B5 UpdateRoundTimers_OnNonzero_84B5
|
||||
label Label_84E9 UpdateRoundTimers_OnCarrySet_84E9
|
||||
label Label_84EE UpdateRoundTimers_OnNonzero_84EE
|
||||
label Label_84F4 UpdateRoundTimers_OnCarryClear_84F4
|
||||
label Label_850F UpdateRoundTimers_OnZero_850F
|
||||
label Label_851C UpdateRoundTimers_OnCarrySet_851C
|
||||
label Label_851F UpdateRoundTimers_OnNonzero_851F
|
||||
label Label_8522 UpdateRoundTimers_OnCarrySet_8522
|
||||
label Label_8564 UpdateRoundTimers_OnZero_8564
|
||||
label Label_856C PlayRoundChangeMusic
|
||||
label Label_858F PlayRoundChangeMusic_OnNonzero_858F
|
||||
label Label_8596 UpdateScrollTarget
|
||||
label Label_8598 UpdateScrollTargetAlt
|
||||
label Label_85A3 UpdateScrollTargetAlt_OnZero_85A3
|
||||
label Label_85A8 UpdateScrollTargetAlt_OnNonzero_85A8
|
||||
label Label_85DA UpdateScrollTargetAlt_OnNonzero_85DA
|
||||
label Label_85EC UpdateScrollTargetAlt_JoinBranchPaths_85EC
|
||||
label Label_8639 BeginVblankFrame
|
||||
label Label_8644 ForceRenderingOff
|
||||
label Label_8653 SetRenderingOffAndSignalVblank
|
||||
label Label_865D UpdateRoundLogic
|
||||
label Label_8682 UpdateRoundLogic_OnNonzero_8682
|
||||
label Label_86A0 UpdateRoundLogic_JoinBranchPaths_86A0
|
||||
label Label_86AA UpdateRoundLogic_JoinBranchPaths_86AA
|
||||
label Label_86AD UpdateRoundLogic_OnNegative_86AD
|
||||
label Label_86D8 NmiHandler_OnZero_86D8
|
||||
label Label_86E3 NmiHandler_OnNonzero_86E3
|
||||
label Label_86FA NmiHandler_OnZero_86FA
|
||||
label Label_8703 NmiHandler_OnNegative_8703
|
||||
label Label_8709 NmiHandler_OnZero_8709
|
||||
label Label_8728 NmiHandler_OnCarrySet_8728
|
||||
label Label_872F NmiHandler_OnNonzero_872F
|
||||
label Label_8742 NmiHandler_OnNonzero_8742
|
||||
label Label_8751 FinishNmiUpdates
|
||||
label Label_8759 FinishNmiRegisters
|
||||
label Label_8765 SetSoundSequenceChannel1
|
||||
label Label_877C RunGameStateDispatcher
|
||||
label Label_8787 RunGameStateDispatcher_JoinBranchPaths_8787
|
||||
label Label_8795 RunGameStateDispatcher_OnNonzero_8795
|
||||
label Label_87BF UpdateTimersAlt
|
||||
label Label_87D1 PollControllerStart
|
||||
label Label_87F1 PollControllerStart_JoinBranchPaths_87F1
|
||||
label Label_87F2 UpdateFlashCounter
|
||||
label Label_8801 UpdateFlashCounter_OnZero_8801
|
||||
label Label_8803 UpdateFlashCounter_OnNonzero_8803
|
||||
label Label_8819 UpdateFlashCounter_OnCarryClear_8819
|
||||
label Label_8837 PlayDeathSequence
|
||||
label Label_8848 PollControllerBits
|
||||
label Label_885A PollControllerBits_JoinBranchPaths_885A
|
||||
label Label_885B PollControllerAndAdvance
|
||||
label Label_886C PollControllerBitsAlt
|
||||
label Label_887C SignalVblankComplete
|
||||
label Label_8881 SignalVblankComplete_JoinBranchPaths_8881
|
||||
label Label_8882 PollControllerAndCheckRound
|
||||
label Label_888D PollControllerAndCheckRound_OnZero_888D
|
||||
label Label_8899 PollControllerAndCheckRound_OnCarrySet_8899
|
||||
label Label_889D PollControllerAndCheckRound_OnNonzero_889D
|
||||
label Label_88A4 BuildOamList
|
||||
label Label_88AE BuildOamList_OnNonzero_88AE
|
||||
label Label_88B0 EmitOamEntry
|
||||
label Label_88EB EmitOamBlankEntry
|
||||
label Label_88F3 EmitOamBlankEntry_JoinBranchPaths_88F3
|
||||
label Label_88F4 EmitOamBlankEntry_OnZero_88F4
|
||||
label Label_88F9 EmitOamFromTable
|
||||
label Label_88FF EmitOamAtOffset
|
||||
label Label_8909 EmitOamAtOffset_OnZero_8909
|
||||
label Label_890F EmitOamAtOffset_JoinBranchPaths_890F
|
||||
label Label_891B EmitOamAtOffset_OnZero_891B
|
||||
label Label_892A EmitOamAtOffset_OnNonzero_892A
|
||||
label Label_8936 FindFreeOamSlot
|
||||
label Label_8938 FindFreeOamSlot_OnNonnegative_8938
|
||||
label Label_8942 FindFreeOamSlot_OnZero_8942
|
||||
label Label_8943 FindFreeOamSlot_JoinBranchPaths_8943
|
||||
label Label_896A FindFreeOamSlot_JoinBranchPaths_896A
|
||||
label Label_896B FindFreeOamSlot_OnZero_896B
|
||||
label Label_897F FindFreeOamSlot_OnNonzero_897F
|
||||
label Label_8986 CompactOamList
|
||||
label Label_898A CompactOamList_OnNonnegative_898A
|
||||
label Label_899D CompactOamList_OnZero_899D
|
||||
label Label_899F CompactOamList_OnNonzero_899F
|
||||
label Label_89A8 CompactOamList_OnZero_89A8
|
||||
label Label_89AC CompactOamList_OnZero_89AC
|
||||
label Label_89B0 CompactOamList_OnCarryClear_89B0
|
||||
label Label_89B2 CompactOamList_OnNonzero_89B2
|
||||
label Label_89B5 CompactOamList_OnNonzero_89B5
|
||||
label Label_89B8 CompactOamList_OnNonzero_89B8
|
||||
label Label_89CE ReadControllerAndInit
|
||||
label Label_89EE ReadControllerAndInit_OnCarryClear_89EE
|
||||
label Label_89F7 ReadControllerAndInit_OnNonzero_89F7
|
||||
label Label_8A28 UpdateStageActors
|
||||
label Label_8A5D UpdateStageActors_JoinBranchPaths_8A5D
|
||||
label Label_8A5E SpawnStageActors
|
||||
label Label_8A68 SpawnStageActors_OnCarryClear_8A68
|
||||
label Label_8A74 SpawnStageActors_OnZero_8A74
|
||||
label Label_8A84 SpawnStageActors_OnNonzero_8A84
|
||||
label Label_8A93 SpawnStageActors_OnZero_8A93
|
||||
label Label_8AA4 SpawnStageActors_JoinBranchPaths_8AA4
|
||||
label Label_8AA5 SpawnStageActors_OnZero_8AA5
|
||||
label Label_8AE1 SpawnStageActors_JoinBranchPaths_8AE1
|
||||
label Label_8AE8 UpdateAttributeTable
|
||||
label Label_8B07 ClearScrollLatch
|
||||
label Label_8B0D ClearScrollLatch_OnNonzero_8B0D
|
||||
label Label_8B20 WriteNametableTile
|
||||
label Label_8B25 WriteNametableTile_OnNonzero_8B25
|
||||
label Label_8B33 ClearAttributeRegion
|
||||
label Label_8B37 ClearAttributeRegion_JoinBranchPaths_8B37
|
||||
label Label_8B3B ClearAttributeRegion_OnNonnegative_8B3B
|
||||
label Label_8B5F ClearAttributeRegion_OnCarryClear_8B5F
|
||||
label Label_8B67 ClearAttributeRegion_OnZero_8B67
|
||||
label Label_8B6D ClearAttributeRegion_JoinBranchPaths_8B6D
|
||||
label Label_8B92 RenderHudDigits
|
||||
label Label_8BBA RenderHudDigits_OnNonzero_8BBA
|
||||
label Label_8BEF RenderHudDigitDescriptor
|
||||
label Label_8BF8 SetRenderingOn
|
||||
label Label_8BFF SetRenderingOn_OnNonnegative_8BFF
|
||||
label Label_8C05 AdvanceAnimationSlot
|
||||
label Label_8C0E QueueVramTransfer
|
||||
label Label_8C11 QueueVramTransferAlt
|
||||
label Label_8C3A QueueVramTransferAlt_OnNonnegative_8C3A
|
||||
label Label_8C55 QueueVramTransferAlt_OnNonzero_8C55
|
||||
label Label_8C65 ExecuteVramTransfer
|
||||
label Label_8C72 ExecuteVramTransfer_OnNonzero_8C72
|
||||
label Label_8C98 ExecuteVramTransfer_OnZero_8C98
|
||||
label Label_8CB8 QueueVramDescriptor
|
||||
label Label_9287 QueueVramDescriptor_Entry_9287
|
||||
label Label_928D QueueVramDescriptor_JumpNext_928D
|
||||
label Label_9293 QueueVramDescriptor_JumpNext_9293
|
||||
label Label_929F QueueVramDescriptor_OnNonzero_929F
|
||||
label Label_92AF QueueVramDescriptor_OnNonzero_92AF
|
||||
label Label_92B2 QueueVramDescriptor_JumpNext_92B2
|
||||
label Label_92CD QueueVramDescriptor_JumpNext_92CD
|
||||
label Label_92E8 QueueVramDescriptor_OnZero_92E8
|
||||
label Label_9329 QueueVramDescriptor_OnZero_9329
|
||||
label Label_932C QueueVramDescriptor_JumpNext_932C
|
||||
label Label_934B UpdateActorX
|
||||
label Label_9354 UpdateActorX_JumpNext_9354
|
||||
label Label_9371 UpdateActorTile
|
||||
label Label_9374 UpdateActorTileAlt
|
||||
label Label_937C UpdateActorTileAlt_JumpNext_937C
|
||||
label Label_93A4 UpdateActorTileAlt_JumpNext_93A4
|
||||
label Label_93C4 UpdateActorTileAlt_OnCarrySet_93C4
|
||||
label Label_93CC UpdateActorTileAlt_JumpNext_93CC
|
||||
label Label_93D0 UpdateActorTileAlt_OnZero_93D0
|
||||
label Label_93D3 UpdateActorTileAlt_OnNonzero_93D3
|
||||
label Label_9401 UpdateActorTileAlt_OnCarrySet_9401
|
||||
label Label_9409 UpdateActorTileAlt_JumpNext_9409
|
||||
label Label_941B UpdateActorTileAlt_JumpNext_941B
|
||||
label Label_942C UpdateActorTileAlt_OnNegative_942C
|
||||
label Label_9441 UpdateActorTileAlt_OnNonnegative_9441
|
||||
label Label_9450 UpdateActorTileAlt_OnNonzero_9450
|
||||
label Label_9451 UpdateActorTileAlt_OnCarrySet_9451
|
||||
label Label_9454 UpdateActorTileAlt_OnCarryClear_9454
|
||||
label Label_945B UpdateActorTileAlt_OnNegative_945B
|
||||
label Label_9465 UpdateActorTileAlt_JumpNext_9465
|
||||
label Label_946D UpdateActorTileAlt_JumpNext_946D
|
||||
label Label_9477 UpdateActorTileAlt_JumpNext_9477
|
||||
label Label_947D UpdateActorTileAlt_OnZero_947D
|
||||
label Label_9480 UpdateActorTileAlt_JumpNext_9480
|
||||
label Label_948F UpdateActorTileAlt_JumpNext_948F
|
||||
label Label_9499 UpdateActorTileAlt_JumpNext_9499
|
||||
label Label_94AA UpdateActorTileAlt_OnZero_94AA
|
||||
label Label_94AD UpdateActorTileAlt_JumpNext_94AD
|
||||
label Label_94B1 TestPlayerFacing
|
||||
label Label_94C0 TestPlayerFacing_JumpNext_94C0
|
||||
label Label_94C7 SelectActorSlot
|
||||
label Label_94C8 SelectActorSlotAlt
|
||||
label Label_94CF ClearActorPosition
|
||||
label Label_94D7 ClearActorFields
|
||||
label Label_94F3 ClearActorFields_JoinBranchPaths_94F3
|
||||
label Label_94F6 ClearActorFields_OnNonzero_94F6
|
||||
label Label_94FE SetActorFlag
|
||||
label Label_950B SetActorFlag_JumpNext_950B
|
||||
label Label_9513 SetActorFlag_JumpNext_9513
|
||||
label Label_951F SetActorFlag_OnNonzero_951F
|
||||
label Label_9522 SetActorFlag_JumpNext_9522
|
||||
label Label_9535 SetActorFlag_OnNonzero_9535
|
||||
label Label_9541 SetActorFlag_Return_9541
|
||||
label Label_9551 SetActorFlag_OnNonzero_9551
|
||||
label Label_9559 SetActorFlag_JumpNext_9559
|
||||
label Label_9585 UpdateActorState
|
||||
label Label_9590 UpdateActorState_OnNonzero_9590
|
||||
label Label_95A5 UpdateActorState_OnCarryClear_95A5
|
||||
label Label_95AE ComputeActorLeftEdge
|
||||
label Label_95B8 ComputeActorLeftEdge_OnNonzero_95B8
|
||||
label Label_95C9 ComputeActorLeftEdge_OnCarryClear_95C9
|
||||
label Label_95D2 ComputeActorRightEdge
|
||||
label Label_95D9 CompareActorToLimit
|
||||
label Label_95DC CompareActorToLimit_Return_95DC
|
||||
label Label_95E3 CompareActorToLimit_OnNonzero_95E3
|
||||
label Label_9628 CompareActorToLimit_OnCarrySet_9628
|
||||
label Label_963C CompareActorToLimit_OnCarrySet_963C
|
||||
label Label_963E CompareActorToLimit_OnNonnegative_963E
|
||||
label Label_9641 CompareActorToLimit_OnZero_9641
|
||||
label Label_9644 CompareActorToLimit_JumpNext_9644
|
||||
label Label_9653 SetActorTileFromPalette
|
||||
label Label_9664 SetActorTileFromPalette_OnNonzero_9664
|
||||
label Label_9667 StoreActorTile
|
||||
label Label_966D StoreActorTile_Return_966D
|
||||
label Label_9679 StoreActorTile_OnNegative_9679
|
||||
label Label_968E StoreActorTile_OnNonnegative_968E
|
||||
label Label_969D StoreActorTile_OnNonzero_969D
|
||||
label Label_969E AdvanceActorCounter
|
||||
label Label_96A6 AdvanceActorCounter_OnCarryClear_96A6
|
||||
label Label_96AA SetActorTileValue
|
||||
label Label_96B3 SetActorTileValue_OnNonzero_96B3
|
||||
label Label_96B9 SetActorTileValue_OnNegative_96B9
|
||||
label Label_96BC SetActorTileValue_JumpNext_96BC
|
||||
label Label_96C2 SetActorTileValue_Continue_96C2
|
||||
label Label_96C8 TestActorCollisionFlag
|
||||
label Label_96CC TestActorCollisionFlag_OnZero_96CC
|
||||
label Label_96CE TestActorCollisionFlag_OnZero_96CE
|
||||
label Label_96EE TestActorCollisionFlag_OnCarryClear_96EE
|
||||
label Label_96F7 ComputeActorLeftEdgeAlt
|
||||
label Label_9701 ComputeActorLeftEdgeAlt_OnNonzero_9701
|
||||
label Label_9719 ComputeActorLeftEdgeAlt_OnCarryClear_9719
|
||||
label Label_9722 ComputeActorRightEdgeAlt
|
||||
label Label_9729 TestActorRange
|
||||
label Label_9731 TestActorRange_OnCarrySet_9731
|
||||
label Label_9732 MoveActorByStep
|
||||
label Label_975D MoveActorByStep_OnCarrySet_975D
|
||||
label Label_975E MoveActorByStep_Return_975E
|
||||
label Label_9766 MoveActorByStep_OnCarryClear_9766
|
||||
label Label_979A MoveActorByStep_OnNonzero_979A
|
||||
label Label_97A0 MoveActorByStep_OnNonzero_97A0
|
||||
label Label_97BC SetActorAnimation63
|
||||
label Label_97C0 SetActorAnimation62
|
||||
label Label_97C4 SetActorAnimation61
|
||||
label Label_97C6 SetActorAnimation61_OnNonzero_97C6
|
||||
label Label_97D5 UpdateActorAnimation
|
||||
label Label_97FB UpdateActorAnimation_OnZero_97FB
|
||||
label Label_97FC TestAnimationSlot
|
||||
label Label_9800 TestAnimationSlot_JoinBranchPaths_9800
|
||||
label Label_9802 TestAnimationSlot_OnNonzero_9802
|
||||
label Label_981C TestAnimationSlot_OnCarryClear_981C
|
||||
label Label_982A ComputeActorLeftEdgeAt
|
||||
label Label_9834 ComputeActorLeftEdgeAt_OnNonzero_9834
|
||||
label Label_984A ComputeActorLeftEdgeAt_OnCarryClear_984A
|
||||
label Label_9858 ComputeActorRightEdgeAt
|
||||
label Label_985F TestActorValue
|
||||
label Label_986A TestActorValue_Return_986A
|
||||
label Label_9875 TestActorValue_OnCarryClear_9875
|
||||
label Label_98A7 TestActorValue_OnCarryClear_98A7
|
||||
label Label_98AA TestActorValue_JoinBranchPaths_98AA
|
||||
label Label_98AD TestActorValue_JoinBranchPaths_98AD
|
||||
label Label_98B0 TestActorValue_JumpNext_98B0
|
||||
label Label_98B7 TestActorValue_OnNonzero_98B7
|
||||
label Label_98BE TestActorValue_JoinBranchPaths_98BE
|
||||
label Label_98C1 TestActorValue_OnNonzero_98C1
|
||||
label Label_98D8 TestActorValue_OnCarryClear_98D8
|
||||
label Label_98E6 ComputeActorLeftEdgeAlt2
|
||||
label Label_98F0 ComputeActorLeftEdgeAlt2_OnNonzero_98F0
|
||||
label Label_9903 ComputeActorLeftEdgeAlt2_OnCarryClear_9903
|
||||
label Label_9911 UpdateActorTileFromIndex
|
||||
label Label_9918 UpdateActorTileFromIndexAlt
|
||||
label Label_9948 UpdateActorTileFromIndexAlt_JoinBranchPaths_9948
|
||||
label Label_994B UpdateActorTileFromIndexAlt_JumpNext_994B
|
||||
label Label_996E UpdateActorTileFromIndexAlt_JumpNext_996E
|
||||
label Label_997C UpdateActorTileFromIndexAlt_JumpNext_997C
|
||||
label Label_9989 UpdateActorTileFromIndexAlt_OnNonzero_9989
|
||||
label Label_9994 UpdateActorTileFromIndexAlt_OnNonzero_9994
|
||||
label Label_99A0 UpdateActorTileFromIndexAlt_OnNonzero_99A0
|
||||
label Label_99A3 SetSoundSequenceChannel2
|
||||
label Label_99B0 SetSoundSequenceChannel2_Return_99B0
|
||||
label Label_99B7 SetSoundSequenceChannel2_JumpNext_99B7
|
||||
label Label_99D7 SetSoundSequenceChannel2_OnNegative_99D7
|
||||
label Label_99E2 LookupActorTileId
|
||||
label Label_99E4 LookupActorTileIdAlt
|
||||
label Label_9A02 LookupActorTileIdAlt_OnCarryClear_9A02
|
||||
label Label_9A24 StoreActorCoordinates
|
||||
label Label_9A2E StoreActorCoordinatesAlt
|
||||
label Label_9A36 StoreActorCoordinatesAlt_OnNonnegative_9A36
|
||||
label Label_9A3F FlipActorFacing
|
||||
label Label_9A4E SpawnActorPair
|
||||
label Label_9A6B SpawnActorPairAlt
|
||||
label Label_9ABC SpawnActorPairAlt_OnNonzero_9ABC
|
||||
label Label_9ACE SpawnActorPairAlt_OnNonzero_9ACE
|
||||
label Label_9AD3 SpawnActorPairAlt_JoinBranchPaths_9AD3
|
||||
label Label_9AD8 SpawnActorPairAlt_OnNonzero_9AD8
|
||||
label Label_9AE8 RunBytecodeInterpreter
|
||||
label Label_9B05 DispatchThroughPointer
|
||||
label Label_9B08 DispatchThroughPointer_JoinBranchPaths_9B08
|
||||
label Label_9B18 DispatchThroughPointer_OnNonzero_9B18
|
||||
label Label_9B25 RunBytecodeProgram
|
||||
label Label_9B4C RunBytecodeProgram_OnNonnegative_9B4C
|
||||
label Label_9B64 RunBytecodeProgram_OnNonnegative_9B64
|
||||
label Label_9B72 RunBytecodeProgram_OnNonnegative_9B72
|
||||
label Label_9BA1 RunBytecodeProgram_OnZero_9BA1
|
||||
label Label_9BB0 RunBytecodeProgram_OnNonzero_9BB0
|
||||
label Label_9BB4 RunBytecodeProgram_OnNonzero_9BB4
|
||||
label Label_9BD9 RunBytecodeProgram_OnNonzero_9BD9
|
||||
label Label_9BDD RunBytecodeProgram_OnNonzero_9BDD
|
||||
label Label_9BF3 RunBytecodeProgram_OnCarryClear_9BF3
|
||||
label Label_9C2C RunBytecodeProgram_OnZero_9C2C
|
||||
label Label_9C2E RunBytecodeProgram_OnNonnegative_9C2E
|
||||
label Label_9C4C RunBytecodeProgram_OnNonnegative_9C4C
|
||||
label Label_9C52 RunBytecodeProgram_OnNonnegative_9C52
|
||||
label Label_9C66 RunBytecodeProgram_OnCarryClear_9C66
|
||||
label Label_9C71 RunBytecodeProgram_OnZero_9C71
|
||||
label Label_9C73 RunBytecodeProgram_JoinBranchPaths_9C73
|
||||
label Label_9C84 RunBytecodeProgram_OnNonzero_9C84
|
||||
label Label_9C8D RunBytecodeProgram_OnCarryClear_9C8D
|
||||
label Label_9C91 RunBytecodeProgram_JoinBranchPaths_9C91
|
||||
label Label_9CAD RunBytecodeProgram_Return_9CAD
|
||||
label Label_9CBB ResetBytecodeState
|
||||
label Label_9CDB ResetBytecodeState_OnCarryClear_9CDB
|
||||
label Label_9CE5 ResetBytecodeState_OnCarryClear_9CE5
|
||||
label Label_9D04 ResetBytecodeState_OnNonnegative_9D04
|
||||
label Label_9D0D ResetBytecodeState_OnCarrySet_9D0D
|
||||
label Label_9D10 ResetBytecodeState_OnNonzero_9D10
|
||||
label Label_9D39 ResetBytecodeState_OnZero_9D39
|
||||
label Label_9D4A ResetBytecodeState_OnZero_9D4A
|
||||
label Label_9D4E CopyActorCoordinates
|
||||
label Label_9D61 CopyActorCoordinates_OnCarryClear_9D61
|
||||
label Label_9DA2 CopyActorCoordinates_OnNonzero_9DA2
|
||||
label Label_9DB6 CopyActorCoordinates_OnZero_9DB6
|
||||
label Label_9DBB CopyActorCoordinates_OnNonzero_9DBB
|
||||
label Label_9DD0 CopyActorCoordinates_OnCarryClear_9DD0
|
||||
label Label_9DD4 CopyActorCoordinates_OnCarryClear_9DD4
|
||||
label Label_9DD6 SetActorBounds
|
||||
label Label_9DE6 LoadActorTileIndex
|
||||
label Label_9E02 LoadActorTileIndex_OnCarrySet_9E02
|
||||
label Label_9E19 LoadActorTileIndex_OnZero_9E19
|
||||
label Label_9E37 LoadActorTileIndex_OnNonzero_9E37
|
||||
label Label_9E4B LoadActorTileIndex_OnZero_9E4B
|
||||
label Label_9E50 LoadActorTileIndex_OnNonzero_9E50
|
||||
label Label_9E65 LoadActorTileIndex_OnCarryClear_9E65
|
||||
label Label_9E69 LoadActorTileIndex_OnCarryClear_9E69
|
||||
label Label_9E6B LoadActorTileIndex_OnNonzero_9E6B
|
||||
label Label_9E6E UpdateActorFacing
|
||||
label Label_9E7F QueueNametableWrite
|
||||
label Label_9E87 QueueNametableWrite_OnNonzero_9E87
|
||||
label Label_9E89 QueueNametableWrite_OnNonnegative_9E89
|
||||
label Label_9F14 FlushNametableWrite
|
||||
label Label_9F2A FlushNametableWrite_JoinBranchPaths_9F2A
|
||||
label Label_9F4B UpdateActorMovement
|
||||
label Label_9F54 MoveActorByOpcode
|
||||
label Label_9F7F MoveActorByOpcode_JoinBranchPaths_9F7F
|
||||
label Label_9F83 MoveActorByOpcode_JoinBranchPaths_9F83
|
||||
label Label_9FAC MoveActorByOpcode_OnCarryClear_9FAC
|
||||
label Label_9FB8 MoveActorByOpcode_OnNonzero_9FB8
|
||||
label Label_9FBA MoveActorByOpcode_JoinBranchPaths_9FBA
|
||||
label Label_9FBB MoveActorByOpcode_Return_9FBB
|
||||
label Label_9FC2 MoveActorByOpcode_Continue_9FC2
|
||||
label Label_9FC9 MoveActorByOpcode_Continue_9FC9
|
||||
label Label_9FD0 MoveActorByOpcode_Continue_9FD0
|
||||
label Label_9FD7 MoveActorByOpcode_Continue_9FD7
|
||||
label Label_9FDF AddToNametableValue
|
||||
label Label_9FEF AddToNametableValue_Return_9FEF
|
||||
label Label_9FFA AddToNametableValue_JumpNext_9FFA
|
||||
label Label_A002 SubtractFromNametableValue
|
||||
label Label_A012 SubtractFromNametableValue_Return_A012
|
||||
label Label_A01D ProcessBytecodeOpcode
|
||||
label Label_A060 ProcessBytecodeOpcode_OnCarrySet_A060
|
||||
label Label_A062 ProcessBytecodeOpcode_JoinBranchPaths_A062
|
||||
label Label_A07B ProcessBytecodeOpcode_JoinBranchPaths_A07B
|
||||
label Label_A085 ComputeBytecodeOffset
|
||||
label Label_A08B ComputeBytecodeOffset_OnNonzero_A08B
|
||||
label Label_A09F ComputeBytecodeOffset_OnCarryClear_A09F
|
||||
label Label_A0A5 ResetBytecodeAccumulator
|
||||
label Label_A0AD ResetBytecodeAccumulator_OnNonzero_A0AD
|
||||
label Label_A0C2 ResetBytecodeAccumulator_OnCarryClear_A0C2
|
||||
label Label_A0C6 ResetBytecodeAccumulatorAlt
|
||||
label Label_A0CE ResetBytecodeAccumulatorAlt_OnNonzero_A0CE
|
||||
label Label_A0EC ResetBytecodeAccumulatorAlt_OnCarryClear_A0EC
|
||||
label Label_A0F4 AdvanceBytecodeProgram
|
||||
label Label_A0FB ResetBytecodeStateAlt
|
||||
label Label_A105 ResetBytecodeStateAlt_OnNonzero_A105
|
||||
label Label_A122 ResetBytecodeStateAlt_OnCarryClear_A122
|
||||
label Label_A12E ComputeActorTileRow
|
||||
label Label_A14F ComputeActorTileRow_OnNonnegative_A14F
|
||||
label Label_A157 ComputeActorTileRow_JoinBranchPaths_A157
|
||||
label Label_A15D ResetBytecodePointers
|
||||
label Label_A165 ResetBytecodePointers_OnNonzero_A165
|
||||
label Label_A179 ResetBytecodePointers_OnCarryClear_A179
|
||||
label Label_A17F RunActorScript
|
||||
label Label_A1A5 RunActorScript_OnCarrySet_A1A5
|
||||
label Label_A1C3 RunActorScript_OnZero_A1C3
|
||||
label Label_A1E3 RunActorScript_OnNonnegative_A1E3
|
||||
label Label_A1F1 RunActorScript_OnNonnegative_A1F1
|
||||
label Label_A201 RunActorScript_OnNonzero_A201
|
||||
label Label_A246 RunActorScript_OnZero_A246
|
||||
label Label_A250 LoadActorConfigByte
|
||||
label Label_A253 ComputeActorConfigOffset
|
||||
label Label_A25F CopyConfigBytes
|
||||
label Label_A261 CopyConfigBytes_OnNonnegative_A261
|
||||
label Label_A270 LoadActorConfigRecord
|
||||
label Label_A28D LoadActorConfigRecord_JoinBranchPaths_A28D
|
||||
label Label_A298 CompareConfigValue
|
||||
label Label_A2BD CompareConfigValue_JoinBranchPaths_A2BD
|
||||
label Label_A2C8 ReturnFromConfigLoad
|
||||
label Label_A2C9 LoadActorConfigFields
|
||||
label Label_A2D8 LoadActorConfigFields_OnZero_A2D8
|
||||
label Label_A2EB LoadActorConfigFields_OnNegative_A2EB
|
||||
label Label_A2F1 LoadActorConfigFields_OnNonzero_A2F1
|
||||
label Label_A305 LoadActorConfigFields_OnZero_A305
|
||||
label Label_A30B LoadActorConfigFields_OnNonzero_A30B
|
||||
label Label_A316 StoreActorPaletteByte
|
||||
label Label_A32A StoreActorPaletteByte_OnZero_A32A
|
||||
label Label_A32C StoreActorControlByte
|
||||
label Label_A334 StoreActorControlByte_OnZero_A334
|
||||
label Label_A338 ReadActorConfigByte
|
||||
label Label_A388 ReadActorConfigByte_JoinBranchPaths_A388
|
||||
label Label_A3A5 ReadActorConfigByte_JoinBranchPaths_A3A5
|
||||
label Label_A3B1 ReadActorConfigByte_OnNonzero_A3B1
|
||||
label Label_A3C9 ReadActorConfigByte_OnCarrySet_A3C9
|
||||
label Label_A3E9 ReadActorConfigByte_OnCarrySet_A3E9
|
||||
label Label_A3F1 ReadActorConfigByte_OnNonzero_A3F1
|
||||
label Label_A3FA ReadActorConfigByte_OnNonzero_A3FA
|
||||
label Label_A406 ReadActorConfigByte_JoinBranchPaths_A406
|
||||
label Label_A40A ReadActorConfigByte_OnCarrySet_A40A
|
||||
label Label_A40D ReadActorConfigByte_OnNonzero_A40D
|
||||
label Label_A418 ReadActorConfigByte_OnZero_A418
|
||||
label Label_A423 ReadActorConfigByte_OnNonzero_A423
|
||||
label Label_A428 ReadActorConfigByte_OnCarrySet_A428
|
||||
label Label_A430 ReadActorConfigByte_JoinBranchPaths_A430
|
||||
label Label_A435 CompareActorConfigValue
|
||||
label Label_A44E CompareActorConfigValue_OnZero_A44E
|
||||
label Label_A459 CompareActorConfigValue_OnZero_A459
|
||||
label Label_A464 CompareActorConfigValue_OnZero_A464
|
||||
label Label_A46D CompareActorConfigValue_OnNonzero_A46D
|
||||
label Label_A46F StoreActorConfigResult
|
||||
label Label_A475 StoreActorConfigResult_JoinBranchPaths_A475
|
||||
label Label_A482 LoadActorConfigAlt
|
||||
label Label_A48D LoadActorConfigAlt_OnZero_A48D
|
||||
label Label_A49B LoadActorConfigAlt_OnZero_A49B
|
||||
label Label_A49F StoreActorConfigResultAlt
|
||||
label Label_A4A5 StoreActorConfigResultAlt_OnZero_A4A5
|
||||
label Label_A4AA LoadActorFacingFlag
|
||||
label Label_A4B5 LoadActorFacingFlag_OnNonzero_A4B5
|
||||
label Label_A4BA LoadActorFacingFlag_OnCarryClear_A4BA
|
||||
label Label_A4C2 LoadActorFacingFlag_JoinBranchPaths_A4C2
|
||||
label Label_A4C7 LoadActorConfigBlock
|
||||
label Label_A4DF TestSoundChannelState
|
||||
label Label_A4F1 TestSoundChannelState_OnNonzero_A4F1
|
||||
label Label_A4F2 SetSoundSequenceChannel2Alt
|
||||
label Label_A4FF FlipObjectIndex
|
||||
label Label_A508 LookupObjectIndex
|
||||
label Label_A512 UpdateObjectSlots
|
||||
label Label_A51B AdvanceObjectSlot
|
||||
label Label_A522 AdvanceObjectSlot_OnNonzero_A522
|
||||
label Label_A52D AdvanceObjectSlot_OnCarrySet_A52D
|
||||
label Label_A532 AdvanceObjectSlot_OnCarryClear_A532
|
||||
label Label_A583 AdvanceObjectSlot_OnNegative_A583
|
||||
label Label_A5DD WriteNametableBytes
|
||||
label Label_A5DF WriteNametableBytes_OnNonnegative_A5DF
|
||||
label Label_A660 SetSoundSequenceChannel4
|
||||
label Label_A67F SetSoundSequenceChannel4_OnZero_A67F
|
||||
label Label_A68E UpdateObjectList
|
||||
label Label_A695 UpdateObjectListEntry
|
||||
label Label_A6BE UpdateObjectListEntry_OnNegative_A6BE
|
||||
label Label_A6DF UpdateObjectListEntry_OnNonzero_A6DF
|
||||
label Label_A6EB UpdateObjectListEntry_OnZero_A6EB
|
||||
label Label_A6EF UpdateObjectListEntry_OnZero_A6EF
|
||||
label Label_A6F8 UpdateObjectCollisions
|
||||
label Label_A70D UpdateObjectCollisions_OnNonzero_A70D
|
||||
label Label_A714 UpdateObjectCollisions_OnNonzero_A714
|
||||
label Label_A728 UpdateObjectCollisions_OnNonzero_A728
|
||||
label Label_A729 UpdateObjectCollisions_OnCarryClear_A729
|
||||
label Label_A73D UpdateObjectCollisions_OnNonzero_A73D
|
||||
label Label_A745 UpdateObjectCollisions_OnNonzero_A745
|
||||
label Label_A758 UpdateObjectCollisions_OnNonzero_A758
|
||||
label Label_A75D UpdateObjectCollisions_OnNonzero_A75D
|
||||
label Label_A773 UpdateObjectCollisions_OnCarryClear_A773
|
||||
label Label_A77F UpdateObjectCollisions_OnCarryClear_A77F
|
||||
label Label_A78F UpdateObjectCollisions_JoinBranchPaths_A78F
|
||||
label Label_A79B UpdateObjectCollisions_OnZero_A79B
|
||||
label Label_A79C UpdateObjectCollisions_OnZero_A79C
|
||||
label Label_A79F CheckObjectScroll
|
||||
label Label_A7B0 CheckObjectScroll_OnNonzero_A7B0
|
||||
label Label_A7B8 CheckObjectScroll_OnZero_A7B8
|
||||
label Label_A7BF CheckObjectScroll_OnNonnegative_A7BF
|
||||
label Label_A7CA CheckObjectScroll_OnNegative_A7CA
|
||||
label Label_A7E1 CheckObjectScroll_OnNonzero_A7E1
|
||||
label Label_A7E8 CheckObjectScroll_OnNonzero_A7E8
|
||||
label Label_A7FD CheckObjectScroll_JoinBranchPaths_A7FD
|
||||
label Label_A800 CheckObjectScroll_OnNonnegative_A800
|
||||
label Label_A82F ClearScrollLatchAlt
|
||||
label Label_A833 ClearScrollLatchAlt_OnCarryClear_A833
|
||||
label Label_A834 UpdateObjectSprite
|
||||
label Label_A842 UpdateObjectSprite_OnCarryClear_A842
|
||||
label Label_A856 UpdateObjectSprite_OnCarrySet_A856
|
||||
label Label_A862 UpdateObjectSprite_OnZero_A862
|
||||
label Label_A884 SetObjectFlags
|
||||
label Label_A89D SetObjectFlags_OnCarryClear_A89D
|
||||
label Label_A8D1 AdvanceObjectFrame
|
||||
label Label_A8E9 TestObjectActive
|
||||
label Label_A8F9 TestObjectActive_OnNonzero_A8F9
|
||||
label Label_A916 TestObjectActive_OnNonnegative_A916
|
||||
label Label_A936 TestObjectActive_OnNonzero_A936
|
||||
label Label_A949 UpdateObjectAnimations
|
||||
label Label_A952 UpdateObjectAnimation
|
||||
label Label_A982 UpdateObjectAnimation_OnCarryClear_A982
|
||||
label Label_A991 UpdateObjectAnimation_JoinBranchPaths_A991
|
||||
label Label_A992 UpdateObjectTimer
|
||||
label Label_A99E DecrementObjectCounter
|
||||
label Label_A9A4 DecrementObjectCounter_OnZero_A9A4
|
||||
label Label_A9AA DecrementObjectCounter_JoinBranchPaths_A9AA
|
||||
label Label_A9AB UpdateObjectState
|
||||
label Label_A9C9 UpdateObjectState_OnCarrySet_A9C9
|
||||
label Label_A9CD UpdateObjectState_OnZero_A9CD
|
||||
label Label_A9D6 UpdateObjectState_OnNegative_A9D6
|
||||
label Label_A9D8 ToggleScrollRegionFlip
|
||||
label Label_A9E9 ToggleScrollRegionFlip_OnNonzero_A9E9
|
||||
label Label_A9EA ToggleScrollRegionFlip_OnCarrySet_A9EA
|
||||
label Label_A9FF BuildObjectList
|
||||
label Label_AA55 ToggleScrollRegionFlip_OnCarrySet_AA55
|
||||
label Label_AA56 ReadControllers
|
||||
label Label_AA63 ReadControllerShiftRegister
|
||||
label Label_AA69 ReadControllerShiftRegister_OnNonzero_AA69
|
||||
label Label_AA82 ReadControllerShiftRegister_JoinBranchPaths_AA82
|
||||
label Label_AA98 ReadControllerShiftRegister_OnZero_AA98
|
||||
label Label_AA9D ReadControllerShiftRegister_OnCarrySet_AA9D
|
||||
label Label_AAA1 ReadControllerShiftRegister_OnCarrySet_AAA1
|
||||
label Label_AAA8 ReadControllerShiftRegister_OnCarrySet_AAA8
|
||||
label Label_AAAE ReadControllerShiftRegister_OnCarryClear_AAAE
|
||||
label Label_AAB4 ReadControllerShiftRegister_OnCarrySet_AAB4
|
||||
label Label_AAB8 StoreControllerButtonBits
|
||||
label Label_AAC0 StoreControllerButtonBits_OnZero_AAC0
|
||||
label Label_AACC StoreControllerButtonBits_OnZero_AACC
|
||||
label Label_AACD EnableRendering
|
||||
label Label_AADC DisableRenderingAndClearNametables
|
||||
label Label_AAEF ClearNametablePattern
|
||||
label Label_AAFF ClearNametablePattern_OnNonzero_AAFF
|
||||
label Label_AB0B ClearNametablePattern_OnNonzero_AB0B
|
||||
label Label_AB68 CopyPaletteFromTable
|
||||
label Label_AB7D CopyPaletteFromTable_OnNonnegative_AB7D
|
||||
label Label_AB98 LoadShadowOamBlock
|
||||
label Label_ABA3 FillShadowOamBlock
|
||||
label Label_ABA8 FillShadowOamBlock_OnNonnegative_ABA8
|
||||
label Label_ABB1 UploadPalette
|
||||
label Label_ABC4 UploadPalette_OnCarryClear_ABC4
|
||||
label Label_ABE4 ApplyPpuScrollAndControl
|
||||
label Label_ABF7 ShiftAccumulatorRight4
|
||||
label Label_ABFC ClearOamShadow
|
||||
label Label_AC03 ClearOamShadow_OnNonzero_AC03
|
||||
label Label_AC0D SelectLevelVramWriter
|
||||
label Label_AC3B SetLevelVramStream
|
||||
label Label_AC43 FillAttributeBlock
|
||||
label Label_AC4C WriteAttributeBlock
|
||||
label Label_AC56 WriteAttributeBlock_OnNonzero_AC56
|
||||
label Label_AC62 LoadAttributeStream
|
||||
label Label_AC78 SetPpuAddressHighAnd40
|
||||
label Label_AC82 WriteCompressedVramStream
|
||||
label Label_AC88 AdvanceSourceByte
|
||||
label Label_AC96 DecodeVramStreamToken
|
||||
label Label_AC9E AdvanceSourceByte_OnCarrySet_AC9E
|
||||
label Label_ACA1 AdvanceSourceByte_OnZero_ACA1
|
||||
label Label_ACA7 WriteVramRunToken
|
||||
label Label_ACB5 AdvanceSourceByte_OnNonzero_ACB5
|
||||
label Label_ACC9 AdvanceDestinationWord
|
||||
label Label_ACD7 AdvanceCountWord
|
||||
label Label_ACE5 WithRenderingEnabled
|
||||
label Label_ACF5 WriteCompressedVramBlocks
|
||||
label Label_AD01 WriteCompressedVramBlocks_OnNonzero_AD01
|
||||
label Label_AD19 ComputeCollisionBits
|
||||
label Label_AD36 ComputePlayerOverlapBits
|
||||
label Label_AD71 ComputePlayerOverlapBits_OnCarrySet_AD71
|
||||
label Label_AD73 ComputePlayerOverlapBits_OnNonzero_AD73
|
||||
label Label_AD7A ComputePlayerOverlapBits_JoinBranchPaths_AD7A
|
||||
label Label_AD84 ComputePlayerOverlapBits_OnCarrySet_AD84
|
||||
label Label_AD8B ComputePlayerOverlapBits_OnZero_AD8B
|
||||
label Label_AD91 ComputePlayerOverlapBits_OnCarrySet_AD91
|
||||
label Label_AD94 ComputePlayerOverlapBits_JoinBranchPaths_AD94
|
||||
label Label_ADAD ComputePlayerOverlapBits_OnNonnegative_ADAD
|
||||
label Label_ADAF ComputePlayerOverlapBits_OnNonzero_ADAF
|
||||
label Label_ADB1 ComputePlayerOverlapBits_OnCarryClear_ADB1
|
||||
label Label_ADC2 ComputePlayerOverlapBits_JoinBranchPaths_ADC2
|
||||
label Label_AE01 ComputePlayerOverlapBits_OnCarrySet_AE01
|
||||
label Label_AE03 ComputePlayerOverlapBits_OnNonzero_AE03
|
||||
label Label_AE0B ComputePlayerOverlapBits_OnNegative_AE0B
|
||||
label Label_AE0F ComputePlayerOverlapBits_JoinBranchPaths_AE0F
|
||||
label Label_AE11 ComputePlayerOverlapBits_OnNonzero_AE11
|
||||
label Label_AE15 ComputePlayerOverlapBits_OnCarryClear_AE15
|
||||
label Label_AE16 ComputePlayerOverlapBits_OnZero_AE16
|
||||
label Label_AE45 SetDefaultOverlapBits
|
||||
label Label_AE51 SetDefaultOverlapBits_OnNonzero_AE51
|
||||
label Label_AE53 SetDefaultOverlapBits_OnNonzero_AE53
|
||||
label Label_AE56 SetDefaultOverlapBits_OnCarryClear_AE56
|
||||
label Label_AE63 SetDefaultOverlapBits_OnCarrySet_AE63
|
||||
label Label_AE72 SetDefaultOverlapBits_OnCarrySet_AE72
|
||||
label Label_AE80 SetDefaultOverlapBits_OnNegative_AE80
|
||||
label Label_AE82 SetDefaultOverlapBits_OnNonzero_AE82
|
||||
label Label_AE88 SetDefaultOverlapBits_OnCarrySet_AE88
|
||||
label Label_AE90 SetDefaultOverlapBits_OnNegative_AE90
|
||||
label Label_AE92 SetDefaultOverlapBits_OnNonzero_AE92
|
||||
label Label_AE96 SetDefaultOverlapBits_OnNonzero_AE96
|
||||
label Label_AE9B ComputeEdgeOverlapBits
|
||||
label Label_AEBE ComputeEdgeOverlapBits_OnNonzero_AEBE
|
||||
label Label_AECA ComputeEdgeOverlapBits_JoinBranchPaths_AECA
|
||||
label Label_AEDC ComputeEdgeOverlapBits_JoinBranchPaths_AEDC
|
||||
label Label_AEE3 ComputeEdgeOverlapBits_OnZero_AEE3
|
||||
label Label_AEE9 ComputeEdgeOverlapBits_JoinBranchPaths_AEE9
|
||||
label Label_AEEA ComputeEdgeOverlapBits_JoinBranchPaths_AEEA
|
||||
label Label_AEFA ComputeEdgeOverlapBits_OnZero_AEFA
|
||||
label Label_AF01 ComputeEdgeOverlapBits_JoinBranchPaths_AF01
|
||||
label Label_AF24 ComputeEdgeOverlapBits_JoinBranchPaths_AF24
|
||||
label Label_AF25 InitializeSoundEngine
|
||||
label Label_AF3B UpdateSoundFrame
|
||||
label Label_AF40 UpdateAllSoundChannels
|
||||
label Label_AF43 UpdateSoundChannel
|
||||
label Label_AF55 AdvanceSoundChannelNote
|
||||
label Label_AF68 UpdateSoundChannel_JoinBranchPaths_AF68
|
||||
label Label_AF69 WriteSoundChannelState
|
||||
label Label_AF6B RebuildApuEnableMask
|
||||
label Label_AF73 StartSoundChannelNote
|
||||
label Label_AFAB AdvanceSoundSequencePointer
|
||||
label Label_AFC5 ComputeEnvelopeMask
|
||||
label Label_AFD5 ComputeEnvelopeMask_OnZero_AFD5
|
||||
label Label_AFD9 ComputeTonePeriod
|
||||
label Label_B000 ShiftNoteTableIndex
|
||||
label Label_B007 WriteToneRegisters
|
||||
label Label_B028 ComputeTonePeriod_OnCarrySet_B028
|
||||
label Label_B029 WriteFixedToneRegisters
|
||||
label Label_B036 ComputeTonePeriod_OnCarrySet_B036
|
||||
label Label_B037 ComputeTonePeriod_OnCarrySet_B037
|
||||
label Label_B03A ReadNoteDuration
|
||||
label Label_B049 StoreNoteDuration
|
||||
label Label_B058 ReadNoteDuration_OnZero_B058
|
||||
label Label_B059 StoreShortNoteDuration
|
||||
label Label_B05D BuildApuChannelMask
|
||||
label Label_B062 WriteApuEnable
|
||||
label Label_B069 WriteApuEnable_OnNegative_B069
|
||||
label Label_B06C ApplySoundCommand
|
||||
label Label_B083 WriteApuControlRegister
|
||||
label Label_B08C AdvanceSoundSequenceStep
|
||||
label Label_B08E AdvanceSoundSequenceStepAlt
|
||||
label Label_B095 ReturnFromSoundCommand
|
||||
label Label_B096 ReadLoopFlag
|
||||
label Label_B09D HandleNoteTerminator
|
||||
label Label_B0A9 HandleSustainCounter
|
||||
label Label_B0B3 LoadSoundSequenceStep
|
||||
label Label_B0BB LoadSoundSequenceStep_OnCarrySet_B0BB
|
||||
label Label_B0C6 DecrementSustainCounter
|
||||
|
@@ -1,6 +1,10 @@
|
||||
MEMORY {
|
||||
PRG: start = $C000, size = $4000, file = %O, fill = yes;
|
||||
HEADER: start = $0000, size = $0010, fill = yes;
|
||||
PRG: start = $8000, size = $4000, file = %O, fill = yes;
|
||||
CHR: start = $0000, size = $2000, file = %O, fill = yes;
|
||||
}
|
||||
SEGMENTS {
|
||||
PRG: load = PRG, type = ro;
|
||||
}
|
||||
HEADER: load = HEADER, type = ro;
|
||||
PRG: load = PRG, type = ro;
|
||||
CHR: load = CHR, type = ro;
|
||||
}
|
||||
@@ -1,2 +1,169 @@
|
||||
; MUSCLE (U) zero-page aliases (declared during Pass 2).
|
||||
; These intentionally conservative names will be refined in Passes 2 and 3.
|
||||
; MUSCLE (U) application-specific RAM aliases - Pass 2
|
||||
; Generated from every direct zero-page operand in reachable code.
|
||||
; Names come from observed usage; `ZpXX` marks storage whose role is not yet
|
||||
; unique enough for a behavioural name. Ref counts are reads/writes and the
|
||||
; trailing list shows the first referencing addresses.
|
||||
|
||||
ActionCooldown = $65 ; 7 refs; reads=5 writes=2 used at $8235, 82A7, A729, A752, +3 more ; Frames to wait before the main loop resumes object updates
|
||||
ActorFieldOffset = $23 ; 5 refs; reads=2 writes=3 used at $9A2E, 9A34, 9A7C, A272, +1 more ; Second per-actor offset used by the bytecode handlers
|
||||
ActorIndex = $1E ; 86 refs; reads=66 writes=20 used at $83A9, 83AB, 83B9, 8496, +74 more ; Active player/actor slot (0 or 1) used as an array index
|
||||
ActorPosXLo = $34 ; 4 refs; reads=0 writes=4 used at $81AF, 8253, 9A26, 9A30 ; Per-actor 16-bit X scratch, written by the bytecode handlers
|
||||
ActorSlotOffset = $21 ; 32 refs; reads=27 writes=5 used at $9310, 9383, 93EC, 942C, +27 more ; ActorIndex*4; byte offset into the per-actor record arrays
|
||||
ActorSlotOffsetHi = $22 ; 11 refs; reads=8 writes=3 used at $94A3, 94ED, 9513, 957D, +7 more ; High half of the per-actor record offset
|
||||
ApuEnableMask = $E8 ; 4 refs; reads=2 writes=2 used at $AF2A, AF6B, B05D, B069 ; Bit mask of currently enabled APU channels
|
||||
ApuRegisterOffset = $E4 ; 6 refs; reads=5 writes=1 used at $AF47, AF95, AFA0, B00F, +2 more ; Channel*4, the offset added to $4000/$4001/$4002/$4003
|
||||
BytecodeHandlerPointerHi = $1D ; 26 refs; reads=8 writes=18 used at $8C1A, 8C24, 94A1, 957B, +19 more ; Hi byte of the handler address consumed by jmp ($001C)
|
||||
BytecodeHandlerPointerLo = $1C ; 54 refs; reads=20 writes=34 used at $8C16, 8C29, 8C3C, 937F, +42 more ; Lo byte of the handler address consumed by jmp ($001C)
|
||||
BytecodeStreamPointerHi = $1B ; 19 refs; reads=8 writes=11 used at $9AE4, 9B74, 9B78, 9B7C, +10 more ; Hi byte of the token-stream pointer
|
||||
BytecodeStreamPointerLo = $1A ; 28 refs; reads=15 writes=13 used at $8C69, 8C86, 8C9B, 8C9D, +18 more ; Lo byte of the token-stream pointer, loaded from the $8CEF table
|
||||
CollisionFlagBits = $15 ; 53 refs; reads=19 writes=34 used at $89E8, 8A12, 8A16, 8B48, +42 more ; Accumulator for the overlap bit flags OR-ed together by ComputePlayerOverlapBits
|
||||
ControllerButtonMask = $F2 ; 7 refs; reads=6 writes=1 used at $9AAE, 9F6C, 9F7F, A283, +3 more ; Filtered button bits for this read, per player
|
||||
ControllerButtonMask2 = $F3 ; 2 refs; reads=2 writes=0 used at $A2B3, A2C1 ; Filtered button bits, second player
|
||||
ControllerButtons1 = $FA ; 25 refs; reads=19 writes=6 used at $8028, 8682, 87D1, 8849, +19 more ; Raw button byte for player 1 (shadows $4010/$4011 at reset)
|
||||
ControllerButtons2 = $FB ; 4 refs; reads=3 writes=1 used at $802A, 8948, 8956, 896B ; Raw button byte for player 2 (shadows $4010/$4011 at reset)
|
||||
ControllerButtonsPrev = $F4 ; 12 refs; reads=11 writes=1 used at $8688, 87D7, 884F, 8864, +8 more ; Previous read's button byte, for edge detection
|
||||
ControllerButtonsPrev2 = $F5 ; 4 refs; reads=4 writes=0 used at $895C, 8971, A2AF, A2BD ; Previous read's button byte, second player
|
||||
ControllerDPad1 = $F6 ; 26 refs; reads=19 writes=7 used at $8169, 92E8, 92EC, 9594, +22 more ; Directional bits derived from the button byte
|
||||
ControllerDPad2 = $F7 ; 13 refs; reads=11 writes=2 used at $816B, 95B8, 9708, 980B, +8 more ; Directional bits derived from the button byte
|
||||
ControllerFaceButtons1 = $F8 ; 8 refs; reads=1 writes=7 used at $816D, 92EE, 9A49, 9E76, +4 more ; Face-button bits derived from the button byte
|
||||
ControllerFaceButtons2 = $F9 ; 1 refs; reads=0 writes=1 used at $816F ; Face-button bits derived from the button byte
|
||||
DestinationPointerHi = $13 ; 48 refs; reads=20 writes=28 used at $8050, 89E0, 8A06, 8A0A, +36 more ; Hi byte of the VRAM destination pointer
|
||||
DestinationPointerLo = $12 ; 66 refs; reads=25 writes=41 used at $804C, 805B, 8064, 806E, +54 more ; Lo byte of the VRAM destination pointer
|
||||
FrameCounterHi = $25 ; 3 refs; reads=1 writes=2 used at $80BB, 86E1 ; High byte of the 16-bit frame counter
|
||||
FrameCounterLo = $24 ; 21 refs; reads=19 writes=2 used at $80B9, 8669, 86DD, 8787, +16 more ; Low byte of the 16-bit frame counter, incremented once per NMI
|
||||
PlayerActionState = $F0 ; 37 refs; reads=20 writes=17 used at $81B5, 8241, 8257, 8290, +33 more ; Per-player action/animation state byte ($80..$FF)
|
||||
PlayerActionState2 = $F1 ; 8 refs; reads=5 writes=3 used at $81B7, 8259, 825F, 8278, +4 more ; Per-player second action state byte
|
||||
PlayerActiveFlag = $78 ; 15 refs; reads=13 writes=2 used at $9B80, 9D97, 9E0E, A06A, +9 more ; Per-player "still alive / facing right" flag gating the overlap test
|
||||
PlayerBoxOriginX = $6E ; 9 refs; reads=4 writes=5 used at $A821, A825, A850, A85E, +3 more ; Player 1 hitbox origin used by the overlap test
|
||||
PlayerBoxOriginY = $70 ; 10 refs; reads=6 writes=4 used at $A807, A80B, A810, A816, +4 more ; Player 1 hitbox origin used by the overlap test
|
||||
PlayerCount = $94 ; 7 refs; reads=6 writes=1 used at $8377, 83D1, 8440, 8493, +3 more ; 0 = one player, 1 = two players
|
||||
PlayerFlashTimer = $8B ; 8 refs; reads=2 writes=6 used at $97E6, AD77, AD7E, AD82, +3 more ; Per-player damage-flash countdown
|
||||
PlayerPaletteIndex = $2A ; 9 refs; reads=7 writes=2 used at $809A, 9306, 930A, 99E5, +5 more ; Per-player palette slot table
|
||||
PlayerPaletteIndexHi = $92 ; 5 refs; reads=3 writes=2 used at $81E2, 8A2C, 8A3A, 8AC9 ; High byte of the player palette index pair
|
||||
PlayerPaletteIndexLo = $91 ; 5 refs; reads=2 writes=3 used at $81E4, 8A49, 8AC1, 8AC7 ; Low byte of the player palette index pair
|
||||
PlayerPosXLo1 = $3A ; 11 refs; reads=8 writes=3 used at $81E8, 9964, 9A80, 9CC1, +6 more ; Player 1 X position, low byte
|
||||
PlayerPosXLo2 = $3E ; 8 refs; reads=5 writes=3 used at $81F0, 9A7E, 9CC4, A3B4, +2 more ; Player 2 X position, low byte
|
||||
PlayerPosYLo1 = $3C ; 39 refs; reads=30 writes=9 used at $81EC, 959C, 95B3, 95CC, +29 more ; Player 1 Y position, low byte
|
||||
PlayerPosYLo2 = $40 ; 39 refs; reads=28 writes=11 used at $81F4, 95A8, 95B0, 95C0, +25 more ; Player 2 Y position, low byte
|
||||
PlayerSpriteIndex1 = $26 ; 7 refs; reads=4 writes=3 used at $809C, 818E, 819D, 8C14, +3 more ; Per-player sprite slot table, first plane
|
||||
PlayerSpriteIndex2 = $27 ; 2 refs; reads=1 writes=1 used at $80A2, 8C18 ; Per-player sprite slot table, second plane
|
||||
PlayerSpriteIndex3 = $28 ; 1 refs; reads=0 writes=1 used at $80A7 ; Per-player sprite slot table, third plane
|
||||
PlayerSpriteIndex4 = $29 ; 1 refs; reads=0 writes=1 used at $80AA ; Per-player sprite slot table, fourth plane
|
||||
PlayerTileIndex = $2B ; 1 refs; reads=0 writes=1 used at $80A5 ; Per-player tile slot table
|
||||
PpuCtrlShadow = $FC ; 10 refs; reads=6 writes=4 used at $8649, 8BFA, A543, A57D, +6 more ; Shadow of the last value written to $2000
|
||||
PpuMaskShadow = $FD ; 4 refs; reads=1 writes=3 used at $8650, AAD2, AAE6, ABDF ; Shadow of the last value written to $2001
|
||||
PpuScrollX = $FE ; 33 refs; reads=19 writes=14 used at $80D8, 80EC, 8461, 86A0, +19 more ; Shadow of the first $2005 write
|
||||
PpuScrollY = $FF ; 2 refs; reads=1 writes=1 used at $8031, ABEC ; Shadow of the second $2005 write
|
||||
RoundTransitionTimer = $8D ; 5 refs; reads=3 writes=2 used at $81BB, 877C, 8780, 8AA5 ; Decremented by the round-transition state
|
||||
ScreenTransitionState = $68 ; 9 refs; reads=5 writes=4 used at $A763, A781, A7AB, A831, +5 more ; 0 = idle, negative = entering, positive = leaving
|
||||
ScriptArgHi = $48 ; 7 refs; reads=6 writes=1 used at $9DD8, A54A, A559, A56B, +3 more ; Per-actor bytecode argument, high byte
|
||||
ScriptArgLo = $47 ; 7 refs; reads=6 writes=1 used at $9DD6, A54F, A55E, A570, +3 more ; Per-actor bytecode argument, low byte
|
||||
ScriptCounterA = $43 ; 9 refs; reads=3 writes=6 used at $944C, 950E, 9699, 9AD3, +4 more ; Per-actor bytecode counter A
|
||||
ScriptCounterC = $45 ; 7 refs; reads=1 writes=6 used at $9DAE, 9E43, 9E6E, A51D, +3 more ; Per-actor bytecode counter C
|
||||
ScriptFlags = $41 ; 6 refs; reads=1 writes=5 used at $824F, 8AA2, 94CA, 9A3C, +2 more ; Script state byte selected by the bytecode SelectActorSlot handlers
|
||||
ScriptFlagsHi = $4E ; 8 refs; reads=6 writes=2 used at $958A, 96CE, 97FC, 98BA, +4 more ; High byte; tested non-zero to gate several bytecode handlers
|
||||
ScriptFlagsLo = $4D ; 4 refs; reads=1 writes=3 used at $9A3A, 9CBD, 9D4C, A406 ; Low byte of the 16-bit script flag pair
|
||||
SoundChannelStep1 = $D0 ; 23 refs; reads=7 writes=16 used at $8321, 847D, 848D, 8555, +17 more ; APU channel 1 step index into its note table
|
||||
SoundChannelStep2 = $D1 ; 13 refs; reads=2 writes=11 used at $82EB, 8323, 847F, 8557, +8 more ; APU channel 2 step index into its note table
|
||||
SoundChannelStep3 = $D2 ; 7 refs; reads=1 writes=6 used at $8325, 8481, 8559, 858A, +2 more ; APU channel 3 step index into its note table
|
||||
SoundChannelStep4 = $D3 ; 6 refs; reads=1 writes=5 used at $82F7, 8327, 855B, A4DF, +2 more ; APU channel 4 step index into its note table
|
||||
SoundEnvelopeMaskHi = $ED ; 4 refs; reads=1 writes=3 used at $AF93, AFD2, AFD6 ; Computed envelope bits OR-ed into $4000, high part
|
||||
SoundEnvelopeMode1 = $C4 ; 4 refs; reads=3 writes=1 used at $AF86, AFC6, AFDA, B079 ; APU channel 1 envelope/tone mode nibble
|
||||
SoundEnvelopeValue1 = $CC ; 2 refs; reads=1 writes=1 used at $AF82, B04B ; APU channel 1 envelope byte read from the sequence
|
||||
SoundLastCtrlWrite1 = $E0 ; 5 refs; reads=3 writes=2 used at $AF9A, B00D, B07F, B085, +1 more ; Last value written to $4000+4*channel, channel 1
|
||||
SoundMuted = $E9 ; 8 refs; reads=5 writes=3 used at $80B7, 822B, 8677, 8698, +4 more ; Bit 7 set suppresses writes to $4015 (write during rendering)
|
||||
SoundNoteTimer1 = $C8 ; 7 refs; reads=3 writes=4 used at $AF51, B049, B051, B054, +1 more ; APU channel 1 note duration countdown
|
||||
SoundReadPointerHi = $EF ; 7 refs; reads=2 writes=5 used at $AF7C, AFAD, AFB5, AFC0, +1 more ; Hi byte of the sound sequence read cursor
|
||||
SoundReadPointerLo = $EE ; 18 refs; reads=12 writes=6 used at $AF5A, AF78, AF80, AF89, +11 more ; Lo byte of the sound sequence read cursor
|
||||
SoundSequencePtrHi1 = $D8 ; 11 refs; reads=2 writes=9 used at $8305, 8469, 8539, 8572, +7 more ; APU channel 1 sequence pointer, high byte
|
||||
SoundSequencePtrHi2 = $D9 ; 9 refs; reads=0 writes=9 used at $82E7, 830D, 8471, 8541, +5 more ; APU channel 2 sequence pointer, high byte
|
||||
SoundSequencePtrHi3 = $DA ; 4 refs; reads=0 writes=4 used at $8315, 8479, 8549, 8582 ; APU channel 3 sequence pointer, high byte
|
||||
SoundSequencePtrHi4 = $DB ; 4 refs; reads=0 writes=4 used at $82F3, 831D, 8551, A4EB ; APU channel 4 sequence pointer, high byte
|
||||
SoundSequencePtrLo1 = $D4 ; 11 refs; reads=2 writes=9 used at $8301, 8465, 8535, 856E, +7 more ; APU channel 1 sequence pointer, low byte
|
||||
SoundSequencePtrLo2 = $D5 ; 9 refs; reads=0 writes=9 used at $82E3, 8309, 846D, 853D, +5 more ; APU channel 2 sequence pointer, low byte
|
||||
SoundSequencePtrLo3 = $D6 ; 4 refs; reads=0 writes=4 used at $8311, 8475, 8545, 857E ; APU channel 3 sequence pointer, low byte
|
||||
SoundSequencePtrLo4 = $D7 ; 4 refs; reads=0 writes=4 used at $82EF, 8319, 854D, A4E7 ; APU channel 4 sequence pointer, low byte
|
||||
SoundSustainCounter1 = $DC ; 9 refs; reads=4 writes=5 used at $AFA7, B0A9, B0B1, B0BF, +2 more ; APU channel 1 sustain/release counter
|
||||
SoundTonePeriodHi = $EB ; 7 refs; reads=3 writes=4 used at $AFF2, B000, B014, B01A, +2 more ; Computed tone period, high byte
|
||||
SoundTonePeriodLo = $EA ; 5 refs; reads=2 writes=3 used at $AFED, B002, B01C, B02E ; Computed tone period, low byte
|
||||
SoundVolume1 = $80 ; 4 refs; reads=1 writes=3 used at $99DD, 9F72, 9F79, AACA ; APU channel 1 volume
|
||||
SoundVolume3 = $82 ; 9 refs; reads=1 writes=8 used at $81A9, 94C2, 9620, 975B, +5 more ; APU channel 3 volume
|
||||
SoundVolume4 = $83 ; 1 refs; reads=0 writes=1 used at $81AB ; APU channel 4 volume
|
||||
SourcePointerHi = $11 ; 48 refs; reads=9 writes=39 used at $8048, 80C9, 80F4, 8405, +41 more ; Hi byte of the compressed VRAM/attribute stream pointer
|
||||
SourcePointerLo = $10 ; 131 refs; reads=42 writes=89 used at $8044, 8052, 80C5, 80F0, +123 more ; Lo byte of the compressed VRAM/attribute stream pointer
|
||||
StreamBlockCountHi = $15 ; 2 refs; reads=1 writes=1 used at $ACDE, ACE2
|
||||
SubModeFlag = $96 ; 3 refs; reads=1 writes=2 used at $8488, 855F, 86FA ; $FF entering a sub-mode, $01 leaving it, 0 idle
|
||||
VramBlockCountLo = $14 ; 50 refs; reads=24 writes=26 used at $83B1, 89E4, 8A0C, 8A10, +40 more ; Low byte of the 16-bit block counter advanced by AdvanceCountWord
|
||||
Zp00 = $00 ; 1 refs; reads=0 writes=1 used at $8173
|
||||
Zp16 = $16 ; 28 refs; reads=11 writes=17 used at $89F1, 8B19, 8B20, 8B6B, +20 more
|
||||
Zp17 = $17 ; 17 refs; reads=8 writes=9 used at $8C45, 8C65, 8C91, 8C9F, +11 more
|
||||
Zp18 = $18 ; 61 refs; reads=23 writes=38 used at $84B7, 85AC, 89F5, 8C53, +42 more
|
||||
Zp19 = $19 ; 47 refs; reads=21 writes=26 used at $84B5, 85B4, 8C70, 8CA6, +35 more
|
||||
Zp1F = $1F ; 6 refs; reads=2 writes=4 used at $9BAE, 9BCD, 9BD7, 9BEF
|
||||
Zp20 = $20 ; 6 refs; reads=2 writes=4 used at $9BB2, 9BC4, 9BDB, 9BEB
|
||||
Zp2C = $2C ; 2 refs; reads=1 writes=1 used at $A1C7, A24E
|
||||
Zp2D = $2D ; 5 refs; reads=2 writes=3 used at $8128, 8130, 815A, 8162, +1 more
|
||||
Zp2F = $2F ; 4 refs; reads=2 writes=2 used at $80AE, A01F, A037
|
||||
Zp30 = $30 ; 2 refs; reads=0 writes=2 used at $80B0, 850B
|
||||
Zp33 = $33 ; 4 refs; reads=3 writes=1 used at $96D6, 9704, 9863
|
||||
Zp37 = $37 ; 5 refs; reads=3 writes=2 used at $96D9, 9701, 9865
|
||||
Zp38 = $38 ; 2 refs; reads=0 writes=2 used at $81B1, 828A
|
||||
Zp3B = $3B ; 13 refs; reads=12 writes=1 used at $9599, 95C9, 96E2, 9719, +9 more
|
||||
Zp3F = $3F ; 14 refs; reads=11 writes=3 used at $95A5, 95BD, 96EE, 970D, +8 more
|
||||
Zp42 = $42 ; 2 refs; reads=0 writes=2 used at $8286, AA53
|
||||
Zp4B = $4B ; 26 refs; reads=13 writes=13 used at $92C2, 92C8, 92D8, 92DD, +14 more
|
||||
Zp4F = $4F ; 28 refs; reads=16 writes=12 used at $81A5, 8239, 823F, 83AD, +22 more
|
||||
Zp50 = $50 ; 7 refs; reads=4 writes=3 used at $81A7, 8270, 8276, 8793, +2 more
|
||||
Zp51 = $51 ; 9 refs; reads=1 writes=8 used at $938D, 93F9, 956C, 9607, +5 more
|
||||
Zp52 = $52 ; 4 refs; reads=2 writes=2 used at $A672, A687, A695, A6ED
|
||||
Zp53 = $53 ; 3 refs; reads=2 writes=1 used at $A684, A69F, A6C2
|
||||
Zp54 = $54 ; 3 refs; reads=2 writes=1 used at $A681, A6A7, A6CD
|
||||
Zp55 = $55 ; 5 refs; reads=2 writes=3 used at $A68B, A69B, A6BE
|
||||
Zp56 = $56 ; 1 refs; reads=1 writes=0 used at $A678
|
||||
Zp5A = $5A ; 13 refs; reads=7 writes=6 used at $9423, 9446, 944E, 9454, +9 more
|
||||
Zp5C = $5C ; 3 refs; reads=1 writes=2 used at $94BB, 9C06
|
||||
Zp5E = $5E ; 4 refs; reads=1 writes=3 used at $9A6F, 9AD0, 9C0E
|
||||
Zp60 = $60 ; 6 refs; reads=2 writes=4 used at $9525, 953E, 9544, A4DA
|
||||
Zp62 = $62 ; 9 refs; reads=3 writes=6 used at $952E, 954A, 961E, 978E, +5 more
|
||||
Zp64 = $64 ; 4 refs; reads=3 writes=1 used at $826E, A737, A76D, A78F
|
||||
Zp66 = $66 ; 2 refs; reads=1 writes=1 used at $A767, A791
|
||||
Zp67 = $67 ; 2 refs; reads=1 writes=1 used at $A773, A795
|
||||
Zp69 = $69 ; 6 refs; reads=2 writes=4 used at $A789, A7B2, A7C7, A7E5, +1 more
|
||||
Zp6A = $6A ; 3 refs; reads=1 writes=2 used at $A78D, A7B8
|
||||
Zp6B = $6B ; 8 refs; reads=5 writes=3 used at $A7CE, A7D3, A7E8, A7ED, +3 more
|
||||
Zp6C = $6C ; 10 refs; reads=5 writes=5 used at $A785, A7D5, A7D9, A7E1, +5 more
|
||||
Zp6D = $6D ; 2 refs; reads=1 writes=1 used at $A81A, A81F
|
||||
Zp6F = $6F ; 4 refs; reads=2 writes=2 used at $A800, A805, A88A, A91B
|
||||
Zp71 = $71 ; 3 refs; reads=1 writes=2 used at $A81D, A886
|
||||
Zp72 = $72 ; 3 refs; reads=1 writes=2 used at $A823, A862
|
||||
Zp73 = $73 ; 4 refs; reads=1 writes=3 used at $A803, A87E, A8C6
|
||||
Zp74 = $74 ; 4 refs; reads=1 writes=3 used at $A809, A882, A8CC
|
||||
Zp75 = $75 ; 3 refs; reads=2 writes=1 used at $A8D3, A8D6, A8DB
|
||||
Zp76 = $76 ; 2 refs; reads=1 writes=1 used at $A8DD, A8E5
|
||||
Zp77 = $77 ; 2 refs; reads=1 writes=1 used at $A75B, AC0F
|
||||
Zp7A = $7A ; 24 refs; reads=12 writes=12 used at $9293, 92A2, 92B2, 92CD, +9 more
|
||||
Zp7C = $7C ; 3 refs; reads=1 writes=2 used at $9470, 9477
|
||||
Zp7E = $7E ; 2 refs; reads=1 writes=1 used at $9472, 947B
|
||||
Zp84 = $84 ; 7 refs; reads=3 writes=4 used at $A347, A381, A9AB, A9CB, +2 more
|
||||
Zp85 = $85 ; 9 refs; reads=6 writes=3 used at $A362, A9B4, A9B9, A9C3, +5 more
|
||||
Zp86 = $86 ; 6 refs; reads=3 writes=3 used at $A368, A9BB, A9BF, A9F1, +2 more
|
||||
Zp87 = $87 ; 2 refs; reads=1 writes=1 used at $A37D, AA0D
|
||||
Zp88 = $88 ; 7 refs; reads=5 writes=2 used at $92F6, A1B9, A3CB, A9A4, +2 more
|
||||
Zp8A = $8A ; 9 refs; reads=6 writes=3 used at $8263, 829A, 83BD, 878D, +5 more
|
||||
Zp8E = $8E ; 4 refs; reads=2 writes=2 used at $8A28, 8AA9, 8AAF
|
||||
Zp8F = $8F ; 4 refs; reads=2 writes=2 used at $8A58, 8AB1, 8AB7
|
||||
Zp90 = $90 ; 4 refs; reads=2 writes=2 used at $8A53, 8AB9, 8ABF
|
||||
Zp93 = $93 ; 2 refs; reads=1 writes=1 used at $8AE3, A6F8
|
||||
Zp95 = $95 ; 5 refs; reads=2 writes=3 used at $8B29, 8B35, 8B63, 8B67
|
||||
Zp97 = $97 ; 5 refs; reads=3 writes=2 used at $9BB8, 9BC0, 9BDD, 9BE4, +1 more
|
||||
Zp98 = $98 ; 1 refs; reads=1 writes=0 used at $9ED7
|
||||
Zp99 = $99 ; 1 refs; reads=1 writes=0 used at $9EDC
|
||||
Zp9B = $9B ; 1 refs; reads=1 writes=0 used at $9EBD
|
||||
Zp9C = $9C ; 1 refs; reads=1 writes=0 used at $9EC2
|
||||
Zp9D = $9D ; 1 refs; reads=1 writes=0 used at $9EC7
|
||||
Zp9F = $9F ; 1 refs; reads=1 writes=0 used at $9EA8
|
||||
ZpA0 = $A0 ; 1 refs; reads=1 writes=0 used at $9EAD
|
||||
ZpA1 = $A1 ; 1 refs; reads=1 writes=0 used at $9EB2
|
||||
ZpA3 = $A3 ; 1 refs; reads=1 writes=0 used at $9E93
|
||||
ZpA4 = $A4 ; 1 refs; reads=1 writes=0 used at $9E98
|
||||
ZpA5 = $A5 ; 1 refs; reads=1 writes=0 used at $9E9D
|
||||
+12916
-6
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,774 @@
|
||||
al 00BFFB .InterruptVectors
|
||||
al 00BFA0 .SoundSequenceAndLevelData
|
||||
al 00BF98 .VramBlockSourceLowBytes
|
||||
al 00BF90 .VramBlockByteCounts
|
||||
al 00BED0 .StageDataTail
|
||||
al 00BEC8 .InitialOamTiles
|
||||
al 00BEC0 .InitialOamAttributes
|
||||
al 00BD2A .StageNametableAndObjectData_2
|
||||
al 00BD28 .StageDataPointerLow
|
||||
al 00B971 .StageNametableAndObjectData_1
|
||||
al 00B91B .StageDataFiller
|
||||
al 00B0FB .StageNametableAndObjectData
|
||||
al 00B0F7 .ApuChannelEnableBitsClear
|
||||
al 00B0F3 .ApuChannelEnableBitsSet
|
||||
al 00B0E3 .SoundNoteDurationTable
|
||||
al 00B0CB .SoundNotePeriodTable
|
||||
al 00B0B3 .LoadSoundSequenceStep
|
||||
al 00B0BB .LoadSoundSequenceStep_OnCarrySet_B0BB
|
||||
al 00B0C6 .DecrementSustainCounter
|
||||
al 00B0A9 .HandleSustainCounter
|
||||
al 00B08E .AdvanceSoundSequenceStepAlt
|
||||
al 00B08C .AdvanceSoundSequenceStep
|
||||
al 00B083 .WriteApuControlRegister
|
||||
al 00B096 .ReadLoopFlag
|
||||
al 00B09D .HandleNoteTerminator
|
||||
al 00B095 .ReturnFromSoundCommand
|
||||
al 00B06C .ApplySoundCommand
|
||||
al 00B069 .WriteApuEnable_OnNegative_B069
|
||||
al 00B062 .WriteApuEnable
|
||||
al 00B05D .BuildApuChannelMask
|
||||
al 00B058 .ReadNoteDuration_OnZero_B058
|
||||
al 00B049 .StoreNoteDuration
|
||||
al 00B059 .StoreShortNoteDuration
|
||||
al 00B03A .ReadNoteDuration
|
||||
al 00B037 .ComputeTonePeriod_OnCarrySet_B037
|
||||
al 00B007 .WriteToneRegisters
|
||||
al 00B000 .ShiftNoteTableIndex
|
||||
al 00B028 .ComputeTonePeriod_OnCarrySet_B028
|
||||
al 00B036 .ComputeTonePeriod_OnCarrySet_B036
|
||||
al 00B029 .WriteFixedToneRegisters
|
||||
al 00AFD9 .ComputeTonePeriod
|
||||
al 00AFD5 .ComputeEnvelopeMask_OnZero_AFD5
|
||||
al 00AFC5 .ComputeEnvelopeMask
|
||||
al 00AFAB .AdvanceSoundSequencePointer
|
||||
al 00AF6B .RebuildApuEnableMask
|
||||
al 00AF69 .WriteSoundChannelState
|
||||
al 00AF55 .AdvanceSoundChannelNote
|
||||
al 00AF68 .UpdateSoundChannel_JoinBranchPaths_AF68
|
||||
al 00AF73 .StartSoundChannelNote
|
||||
al 00AF43 .UpdateSoundChannel
|
||||
al 00AF40 .UpdateAllSoundChannels
|
||||
al 00AF3B .UpdateSoundFrame
|
||||
al 00AF37 .UnreachableSoundInitIsland
|
||||
al 00AF25 .InitializeSoundEngine
|
||||
al 00AF24 .ComputeEdgeOverlapBits_JoinBranchPaths_AF24
|
||||
al 00AF01 .ComputeEdgeOverlapBits_JoinBranchPaths_AF01
|
||||
al 00AEE3 .ComputeEdgeOverlapBits_OnZero_AEE3
|
||||
al 00AEEA .ComputeEdgeOverlapBits_JoinBranchPaths_AEEA
|
||||
al 00AEDC .ComputeEdgeOverlapBits_JoinBranchPaths_AEDC
|
||||
al 00AEBE .ComputeEdgeOverlapBits_OnNonzero_AEBE
|
||||
al 00AECA .ComputeEdgeOverlapBits_JoinBranchPaths_AECA
|
||||
al 00AEFA .ComputeEdgeOverlapBits_OnZero_AEFA
|
||||
al 00AEE9 .ComputeEdgeOverlapBits_JoinBranchPaths_AEE9
|
||||
al 00AE9B .ComputeEdgeOverlapBits
|
||||
al 00AE92 .SetDefaultOverlapBits_OnNonzero_AE92
|
||||
al 00AE90 .SetDefaultOverlapBits_OnNegative_AE90
|
||||
al 00AE96 .SetDefaultOverlapBits_OnNonzero_AE96
|
||||
al 00AE82 .SetDefaultOverlapBits_OnNonzero_AE82
|
||||
al 00AE80 .SetDefaultOverlapBits_OnNegative_AE80
|
||||
al 00AE88 .SetDefaultOverlapBits_OnCarrySet_AE88
|
||||
al 00AE72 .SetDefaultOverlapBits_OnCarrySet_AE72
|
||||
al 00AE63 .SetDefaultOverlapBits_OnCarrySet_AE63
|
||||
al 00AE53 .SetDefaultOverlapBits_OnNonzero_AE53
|
||||
al 00AE51 .SetDefaultOverlapBits_OnNonzero_AE51
|
||||
al 00AE35 .AnimationFrameCollisionBits
|
||||
al 00AE45 .SetDefaultOverlapBits
|
||||
al 00AE11 .ComputePlayerOverlapBits_OnNonzero_AE11
|
||||
al 00AE03 .ComputePlayerOverlapBits_OnNonzero_AE03
|
||||
al 00AE01 .ComputePlayerOverlapBits_OnCarrySet_AE01
|
||||
al 00AE56 .SetDefaultOverlapBits_OnCarryClear_AE56
|
||||
al 00AE16 .ComputePlayerOverlapBits_OnZero_AE16
|
||||
al 00AE0B .ComputePlayerOverlapBits_OnNegative_AE0B
|
||||
al 00AE0F .ComputePlayerOverlapBits_JoinBranchPaths_AE0F
|
||||
al 00AE15 .ComputePlayerOverlapBits_OnCarryClear_AE15
|
||||
al 00ADAF .ComputePlayerOverlapBits_OnNonzero_ADAF
|
||||
al 00ADAD .ComputePlayerOverlapBits_OnNonnegative_ADAD
|
||||
al 00ADB1 .ComputePlayerOverlapBits_OnCarryClear_ADB1
|
||||
al 00ADC2 .ComputePlayerOverlapBits_JoinBranchPaths_ADC2
|
||||
al 00AD8B .ComputePlayerOverlapBits_OnZero_AD8B
|
||||
al 00AD73 .ComputePlayerOverlapBits_OnNonzero_AD73
|
||||
al 00AD71 .ComputePlayerOverlapBits_OnCarrySet_AD71
|
||||
al 00AD7A .ComputePlayerOverlapBits_JoinBranchPaths_AD7A
|
||||
al 00AD84 .ComputePlayerOverlapBits_OnCarrySet_AD84
|
||||
al 00AD94 .ComputePlayerOverlapBits_JoinBranchPaths_AD94
|
||||
al 00AD91 .ComputePlayerOverlapBits_OnCarrySet_AD91
|
||||
al 00AD36 .ComputePlayerOverlapBits
|
||||
al 00AD19 .ComputeCollisionBits
|
||||
al 00AD01 .WriteCompressedVramBlocks_OnNonzero_AD01
|
||||
al 00ACF5 .WriteCompressedVramBlocks
|
||||
al 00ACE5 .WithRenderingEnabled
|
||||
al 00ACD7 .AdvanceCountWord
|
||||
al 00ACC9 .AdvanceDestinationWord
|
||||
al 00ACBD .VramRunFillValues
|
||||
al 00ACB5 .AdvanceSourceByte_OnNonzero_ACB5
|
||||
al 00ACA1 .AdvanceSourceByte_OnZero_ACA1
|
||||
al 00ACA7 .WriteVramRunToken
|
||||
al 00AC9E .AdvanceSourceByte_OnCarrySet_AC9E
|
||||
al 00AC88 .AdvanceSourceByte
|
||||
al 00AC96 .DecodeVramStreamToken
|
||||
al 00AC82 .WriteCompressedVramStream
|
||||
al 00AC78 .SetPpuAddressHighAnd40
|
||||
al 00AC62 .LoadAttributeStream
|
||||
al 00AC56 .WriteAttributeBlock_OnNonzero_AC56
|
||||
al 00AC4C .WriteAttributeBlock
|
||||
al 00AC43 .FillAttributeBlock
|
||||
al 00AC3B .SetLevelVramStream
|
||||
al 00AC35 .LevelVramWriterTable
|
||||
al 00AC0D .SelectLevelVramWriter
|
||||
al 00AC03 .ClearOamShadow_OnNonzero_AC03
|
||||
al 00ABFC .ClearOamShadow
|
||||
al 00ABF7 .ShiftAccumulatorRight4
|
||||
al 00ABE4 .ApplyPpuScrollAndControl
|
||||
al 00ABC4 .UploadPalette_OnCarryClear_ABC4
|
||||
al 00ABB1 .UploadPalette
|
||||
al 00ABA8 .FillShadowOamBlock_OnNonnegative_ABA8
|
||||
al 00ABA3 .FillShadowOamBlock
|
||||
al 00AB98 .LoadShadowOamBlock
|
||||
al 00AB7D .CopyPaletteFromTable_OnNonnegative_AB7D
|
||||
al 00AB68 .CopyPaletteFromTable
|
||||
al 00AB14 .StandaloneBytecodeProgram_3
|
||||
al 00AB0B .ClearNametablePattern_OnNonzero_AB0B
|
||||
al 00AAFF .ClearNametablePattern_OnNonzero_AAFF
|
||||
al 00AAEF .ClearNametablePattern
|
||||
al 00AADC .DisableRenderingAndClearNametables
|
||||
al 00AACD .EnableRendering
|
||||
al 00AACC .StoreControllerButtonBits_OnZero_AACC
|
||||
al 00AAC0 .StoreControllerButtonBits_OnZero_AAC0
|
||||
al 00AAB8 .StoreControllerButtonBits
|
||||
al 00AAAE .ReadControllerShiftRegister_OnCarryClear_AAAE
|
||||
al 00AAB4 .ReadControllerShiftRegister_OnCarrySet_AAB4
|
||||
al 00AAA8 .ReadControllerShiftRegister_OnCarrySet_AAA8
|
||||
al 00AAA1 .ReadControllerShiftRegister_OnCarrySet_AAA1
|
||||
al 00AA9D .ReadControllerShiftRegister_OnCarrySet_AA9D
|
||||
al 00AA98 .ReadControllerShiftRegister_OnZero_AA98
|
||||
al 00AA82 .ReadControllerShiftRegister_JoinBranchPaths_AA82
|
||||
al 00AA69 .ReadControllerShiftRegister_OnNonzero_AA69
|
||||
al 00AA63 .ReadControllerShiftRegister
|
||||
al 00AA56 .ReadControllers
|
||||
al 00AA55 .ToggleScrollRegionFlip_OnCarrySet_AA55
|
||||
al 00A9E9 .ToggleScrollRegionFlip_OnNonzero_A9E9
|
||||
al 00A9D8 .ToggleScrollRegionFlip
|
||||
al 00A9C9 .UpdateObjectState_OnCarrySet_A9C9
|
||||
al 00A9FF .BuildObjectList
|
||||
al 00A9EA .ToggleScrollRegionFlip_OnCarrySet_A9EA
|
||||
al 00A9D6 .UpdateObjectState_OnNegative_A9D6
|
||||
al 00A9CD .UpdateObjectState_OnZero_A9CD
|
||||
al 00A9AB .UpdateObjectState
|
||||
al 00A9A4 .DecrementObjectCounter_OnZero_A9A4
|
||||
al 00A99E .DecrementObjectCounter
|
||||
al 00A9AA .DecrementObjectCounter_JoinBranchPaths_A9AA
|
||||
al 00A992 .UpdateObjectTimer
|
||||
al 00A982 .UpdateObjectAnimation_OnCarryClear_A982
|
||||
al 00A991 .UpdateObjectAnimation_JoinBranchPaths_A991
|
||||
al 00A952 .UpdateObjectAnimation
|
||||
al 00A949 .UpdateObjectAnimations
|
||||
al 00A936 .TestObjectActive_OnNonzero_A936
|
||||
al 00A916 .TestObjectActive_OnNonnegative_A916
|
||||
al 00A8F9 .TestObjectActive_OnNonzero_A8F9
|
||||
al 00A8E9 .TestObjectActive
|
||||
al 00A8D1 .AdvanceObjectFrame
|
||||
al 00A884 .SetObjectFlags
|
||||
al 00A89D .SetObjectFlags_OnCarryClear_A89D
|
||||
al 00A862 .UpdateObjectSprite_OnZero_A862
|
||||
al 00A856 .UpdateObjectSprite_OnCarrySet_A856
|
||||
al 00A842 .UpdateObjectSprite_OnCarryClear_A842
|
||||
al 00A834 .UpdateObjectSprite
|
||||
al 00A833 .ClearScrollLatchAlt_OnCarryClear_A833
|
||||
al 00A82F .ClearScrollLatchAlt
|
||||
al 00A7E1 .CheckObjectScroll_OnNonzero_A7E1
|
||||
al 00A7FD .CheckObjectScroll_JoinBranchPaths_A7FD
|
||||
al 00A7BF .CheckObjectScroll_OnNonnegative_A7BF
|
||||
al 00A7B8 .CheckObjectScroll_OnZero_A7B8
|
||||
al 00A7E8 .CheckObjectScroll_OnNonzero_A7E8
|
||||
al 00A7CA .CheckObjectScroll_OnNegative_A7CA
|
||||
al 00A800 .CheckObjectScroll_OnNonnegative_A800
|
||||
al 00A7B0 .CheckObjectScroll_OnNonzero_A7B0
|
||||
al 00A79F .CheckObjectScroll
|
||||
al 00A79C .UpdateObjectCollisions_OnZero_A79C
|
||||
al 00A77F .UpdateObjectCollisions_OnCarryClear_A77F
|
||||
al 00A773 .UpdateObjectCollisions_OnCarryClear_A773
|
||||
al 00A78F .UpdateObjectCollisions_JoinBranchPaths_A78F
|
||||
al 00A75D .UpdateObjectCollisions_OnNonzero_A75D
|
||||
al 00A758 .UpdateObjectCollisions_OnNonzero_A758
|
||||
al 00A745 .UpdateObjectCollisions_OnNonzero_A745
|
||||
al 00A73D .UpdateObjectCollisions_OnNonzero_A73D
|
||||
al 00A79B .UpdateObjectCollisions_OnZero_A79B
|
||||
al 00A714 .UpdateObjectCollisions_OnNonzero_A714
|
||||
al 00A70D .UpdateObjectCollisions_OnNonzero_A70D
|
||||
al 00A729 .UpdateObjectCollisions_OnCarryClear_A729
|
||||
al 00A728 .UpdateObjectCollisions_OnNonzero_A728
|
||||
al 00A6F8 .UpdateObjectCollisions
|
||||
al 00A6DF .UpdateObjectListEntry_OnNonzero_A6DF
|
||||
al 00A6EB .UpdateObjectListEntry_OnZero_A6EB
|
||||
al 00A6BE .UpdateObjectListEntry_OnNegative_A6BE
|
||||
al 00A6EF .UpdateObjectListEntry_OnZero_A6EF
|
||||
al 00A695 .UpdateObjectListEntry
|
||||
al 00A68E .UpdateObjectList
|
||||
al 00A67F .SetSoundSequenceChannel4_OnZero_A67F
|
||||
al 00A660 .SetSoundSequenceChannel4
|
||||
al 00A618 .StageDescriptorData
|
||||
al 00A5F4 .StageDescriptorPointerTable
|
||||
al 00A5DF .WriteNametableBytes_OnNonnegative_A5DF
|
||||
al 00A5DD .WriteNametableBytes
|
||||
al 00A52D .AdvanceObjectSlot_OnCarrySet_A52D
|
||||
al 00A532 .AdvanceObjectSlot_OnCarryClear_A532
|
||||
al 00A583 .AdvanceObjectSlot_OnNegative_A583
|
||||
al 00A522 .AdvanceObjectSlot_OnNonzero_A522
|
||||
al 00A51B .AdvanceObjectSlot
|
||||
al 00A512 .UpdateObjectSlots
|
||||
al 00A508 .LookupObjectIndex
|
||||
al 00A4FF .FlipObjectIndex
|
||||
al 00A4F2 .SetSoundSequenceChannel2Alt
|
||||
al 00A4F1 .TestSoundChannelState_OnNonzero_A4F1
|
||||
al 00A4DF .TestSoundChannelState
|
||||
al 00A4C7 .LoadActorConfigBlock
|
||||
al 00A4C2 .LoadActorFacingFlag_JoinBranchPaths_A4C2
|
||||
al 00A4BA .LoadActorFacingFlag_OnCarryClear_A4BA
|
||||
al 00A4B5 .LoadActorFacingFlag_OnNonzero_A4B5
|
||||
al 00A4AA .LoadActorFacingFlag
|
||||
al 00A49F .StoreActorConfigResultAlt
|
||||
al 00A49B .LoadActorConfigAlt_OnZero_A49B
|
||||
al 00A4A5 .StoreActorConfigResultAlt_OnZero_A4A5
|
||||
al 00A48D .LoadActorConfigAlt_OnZero_A48D
|
||||
al 00A482 .LoadActorConfigAlt
|
||||
al 00A46F .StoreActorConfigResult
|
||||
al 00A46D .CompareActorConfigValue_OnNonzero_A46D
|
||||
al 00A464 .CompareActorConfigValue_OnZero_A464
|
||||
al 00A459 .CompareActorConfigValue_OnZero_A459
|
||||
al 00A44E .CompareActorConfigValue_OnZero_A44E
|
||||
al 00A475 .StoreActorConfigResult_JoinBranchPaths_A475
|
||||
al 00A435 .CompareActorConfigValue
|
||||
al 00A428 .ReadActorConfigByte_OnCarrySet_A428
|
||||
al 00A430 .ReadActorConfigByte_JoinBranchPaths_A430
|
||||
al 00A423 .ReadActorConfigByte_OnNonzero_A423
|
||||
al 00A418 .ReadActorConfigByte_OnZero_A418
|
||||
al 00A40A .ReadActorConfigByte_OnCarrySet_A40A
|
||||
al 00A40D .ReadActorConfigByte_OnNonzero_A40D
|
||||
al 00A3E9 .ReadActorConfigByte_OnCarrySet_A3E9
|
||||
al 00A3F1 .ReadActorConfigByte_OnNonzero_A3F1
|
||||
al 00A3FA .ReadActorConfigByte_OnNonzero_A3FA
|
||||
al 00A406 .ReadActorConfigByte_JoinBranchPaths_A406
|
||||
al 00A3C9 .ReadActorConfigByte_OnCarrySet_A3C9
|
||||
al 00A3A5 .ReadActorConfigByte_JoinBranchPaths_A3A5
|
||||
al 00A3B1 .ReadActorConfigByte_OnNonzero_A3B1
|
||||
al 00A388 .ReadActorConfigByte_JoinBranchPaths_A388
|
||||
al 00A338 .ReadActorConfigByte
|
||||
al 00A32C .StoreActorControlByte
|
||||
al 00A316 .StoreActorPaletteByte
|
||||
al 00A305 .LoadActorConfigFields_OnZero_A305
|
||||
al 00A2F1 .LoadActorConfigFields_OnNonzero_A2F1
|
||||
al 00A2EB .LoadActorConfigFields_OnNegative_A2EB
|
||||
al 00A30B .LoadActorConfigFields_OnNonzero_A30B
|
||||
al 00A334 .StoreActorControlByte_OnZero_A334
|
||||
al 00A32A .StoreActorPaletteByte_OnZero_A32A
|
||||
al 00A2D8 .LoadActorConfigFields_OnZero_A2D8
|
||||
al 00A2C9 .LoadActorConfigFields
|
||||
al 00A2BD .CompareConfigValue_JoinBranchPaths_A2BD
|
||||
al 00A2C8 .ReturnFromConfigLoad
|
||||
al 00A298 .CompareConfigValue
|
||||
al 00A28D .LoadActorConfigRecord_JoinBranchPaths_A28D
|
||||
al 00A270 .LoadActorConfigRecord
|
||||
al 00A261 .CopyConfigBytes_OnNonnegative_A261
|
||||
al 00A25F .CopyConfigBytes
|
||||
al 00A253 .ComputeActorConfigOffset
|
||||
al 00A250 .LoadActorConfigByte
|
||||
al 00A246 .RunActorScript_OnZero_A246
|
||||
al 00A201 .RunActorScript_OnNonzero_A201
|
||||
al 00A1F1 .RunActorScript_OnNonnegative_A1F1
|
||||
al 00A1E3 .RunActorScript_OnNonnegative_A1E3
|
||||
al 00A1C3 .RunActorScript_OnZero_A1C3
|
||||
al 00A1A5 .RunActorScript_OnCarrySet_A1A5
|
||||
al 00A17F .RunActorScript
|
||||
al 00A179 .ResetBytecodePointers_OnCarryClear_A179
|
||||
al 00A165 .ResetBytecodePointers_OnNonzero_A165
|
||||
al 00A15D .ResetBytecodePointers
|
||||
al 00A157 .ComputeActorTileRow_JoinBranchPaths_A157
|
||||
al 00A14F .ComputeActorTileRow_OnNonnegative_A14F
|
||||
al 00A12E .ComputeActorTileRow
|
||||
al 00A122 .ResetBytecodeStateAlt_OnCarryClear_A122
|
||||
al 00A105 .ResetBytecodeStateAlt_OnNonzero_A105
|
||||
al 00A0FB .ResetBytecodeStateAlt
|
||||
al 00A0F4 .AdvanceBytecodeProgram
|
||||
al 00A0EC .ResetBytecodeAccumulatorAlt_OnCarryClear_A0EC
|
||||
al 00A0CE .ResetBytecodeAccumulatorAlt_OnNonzero_A0CE
|
||||
al 00A0C6 .ResetBytecodeAccumulatorAlt
|
||||
al 00A0C2 .ResetBytecodeAccumulator_OnCarryClear_A0C2
|
||||
al 00A0AD .ResetBytecodeAccumulator_OnNonzero_A0AD
|
||||
al 00A0A5 .ResetBytecodeAccumulator
|
||||
al 00A09F .ComputeBytecodeOffset_OnCarryClear_A09F
|
||||
al 00A08B .ComputeBytecodeOffset_OnNonzero_A08B
|
||||
al 00A085 .ComputeBytecodeOffset
|
||||
al 00A07B .ProcessBytecodeOpcode_JoinBranchPaths_A07B
|
||||
al 00A060 .ProcessBytecodeOpcode_OnCarrySet_A060
|
||||
al 00A062 .ProcessBytecodeOpcode_JoinBranchPaths_A062
|
||||
al 00A01D .ProcessBytecodeOpcode
|
||||
al 00A012 .SubtractFromNametableValue_Return_A012
|
||||
al 009FFA .AddToNametableValue_JumpNext_9FFA
|
||||
al 009FEF .AddToNametableValue_Return_9FEF
|
||||
al 009FD7 .MoveActorByOpcode_Continue_9FD7
|
||||
al 009FD0 .MoveActorByOpcode_Continue_9FD0
|
||||
al 009FC9 .MoveActorByOpcode_Continue_9FC9
|
||||
al 00A002 .SubtractFromNametableValue
|
||||
al 009FC2 .MoveActorByOpcode_Continue_9FC2
|
||||
al 009FDF .AddToNametableValue
|
||||
al 009FBB .MoveActorByOpcode_Return_9FBB
|
||||
al 009FB8 .MoveActorByOpcode_OnNonzero_9FB8
|
||||
al 009FAC .MoveActorByOpcode_OnCarryClear_9FAC
|
||||
al 009FBA .MoveActorByOpcode_JoinBranchPaths_9FBA
|
||||
al 009F83 .MoveActorByOpcode_JoinBranchPaths_9F83
|
||||
al 009F7F .MoveActorByOpcode_JoinBranchPaths_9F7F
|
||||
al 009F54 .MoveActorByOpcode
|
||||
al 009F4B .UpdateActorMovement
|
||||
al 009F2B .SecondaryBytecodeHandlerTable
|
||||
al 009F2A .FlushNametableWrite_JoinBranchPaths_9F2A
|
||||
al 009F14 .FlushNametableWrite
|
||||
al 009EF4 .OamShadowTemplate
|
||||
al 009E89 .QueueNametableWrite_OnNonnegative_9E89
|
||||
al 009E87 .QueueNametableWrite_OnNonzero_9E87
|
||||
al 009E7F .QueueNametableWrite
|
||||
al 009E6E .UpdateActorFacing
|
||||
al 009E6B .LoadActorTileIndex_OnNonzero_9E6B
|
||||
al 009E69 .LoadActorTileIndex_OnCarryClear_9E69
|
||||
al 009E65 .LoadActorTileIndex_OnCarryClear_9E65
|
||||
al 009E50 .LoadActorTileIndex_OnNonzero_9E50
|
||||
al 009E4B .LoadActorTileIndex_OnZero_9E4B
|
||||
al 009E37 .LoadActorTileIndex_OnNonzero_9E37
|
||||
al 009DD6 .SetActorBounds
|
||||
al 009DD4 .CopyActorCoordinates_OnCarryClear_9DD4
|
||||
al 009DD0 .CopyActorCoordinates_OnCarryClear_9DD0
|
||||
al 009DBB .CopyActorCoordinates_OnNonzero_9DBB
|
||||
al 009DB6 .CopyActorCoordinates_OnZero_9DB6
|
||||
al 009E19 .LoadActorTileIndex_OnZero_9E19
|
||||
al 009DA2 .CopyActorCoordinates_OnNonzero_9DA2
|
||||
al 009DE6 .LoadActorTileIndex
|
||||
al 009E02 .LoadActorTileIndex_OnCarrySet_9E02
|
||||
al 009D61 .CopyActorCoordinates_OnCarryClear_9D61
|
||||
al 009D39 .ResetBytecodeState_OnZero_9D39
|
||||
al 009D4A .ResetBytecodeState_OnZero_9D4A
|
||||
al 009D10 .ResetBytecodeState_OnNonzero_9D10
|
||||
al 009D04 .ResetBytecodeState_OnNonnegative_9D04
|
||||
al 009CE5 .ResetBytecodeState_OnCarryClear_9CE5
|
||||
al 009D4E .CopyActorCoordinates
|
||||
al 009CDB .ResetBytecodeState_OnCarryClear_9CDB
|
||||
al 009D0D .ResetBytecodeState_OnCarrySet_9D0D
|
||||
al 009CBB .ResetBytecodeState
|
||||
al 009CAD .RunBytecodeProgram_Return_9CAD
|
||||
al 009C8D .RunBytecodeProgram_OnCarryClear_9C8D
|
||||
al 009C91 .RunBytecodeProgram_JoinBranchPaths_9C91
|
||||
al 009C84 .RunBytecodeProgram_OnNonzero_9C84
|
||||
al 009C73 .RunBytecodeProgram_JoinBranchPaths_9C73
|
||||
al 009C66 .RunBytecodeProgram_OnCarryClear_9C66
|
||||
al 009C71 .RunBytecodeProgram_OnZero_9C71
|
||||
al 009C52 .RunBytecodeProgram_OnNonnegative_9C52
|
||||
al 009C4C .RunBytecodeProgram_OnNonnegative_9C4C
|
||||
al 009C2E .RunBytecodeProgram_OnNonnegative_9C2E
|
||||
al 009C2C .RunBytecodeProgram_OnZero_9C2C
|
||||
al 009BDD .RunBytecodeProgram_OnNonzero_9BDD
|
||||
al 009BD9 .RunBytecodeProgram_OnNonzero_9BD9
|
||||
al 009BB4 .RunBytecodeProgram_OnNonzero_9BB4
|
||||
al 009BB0 .RunBytecodeProgram_OnNonzero_9BB0
|
||||
al 009BF3 .RunBytecodeProgram_OnCarryClear_9BF3
|
||||
al 009BA1 .RunBytecodeProgram_OnZero_9BA1
|
||||
al 009B72 .RunBytecodeProgram_OnNonnegative_9B72
|
||||
al 009B64 .RunBytecodeProgram_OnNonnegative_9B64
|
||||
al 009B4C .RunBytecodeProgram_OnNonnegative_9B4C
|
||||
al 009B25 .RunBytecodeProgram
|
||||
al 009B18 .DispatchThroughPointer_OnNonzero_9B18
|
||||
al 009B05 .DispatchThroughPointer
|
||||
al 009B08 .DispatchThroughPointer_JoinBranchPaths_9B08
|
||||
al 009AE8 .RunBytecodeInterpreter
|
||||
al 009ACE .SpawnActorPairAlt_OnNonzero_9ACE
|
||||
al 009AD3 .SpawnActorPairAlt_JoinBranchPaths_9AD3
|
||||
al 009ABC .SpawnActorPairAlt_OnNonzero_9ABC
|
||||
al 009AD8 .SpawnActorPairAlt_OnNonzero_9AD8
|
||||
al 009A6B .SpawnActorPairAlt
|
||||
al 009A4E .SpawnActorPair
|
||||
al 009A3F .FlipActorFacing
|
||||
al 009A2E .StoreActorCoordinatesAlt
|
||||
al 009A36 .StoreActorCoordinatesAlt_OnNonnegative_9A36
|
||||
al 009A24 .StoreActorCoordinates
|
||||
al 009A02 .LookupActorTileIdAlt_OnCarryClear_9A02
|
||||
al 0099E4 .LookupActorTileIdAlt
|
||||
al 0099E2 .LookupActorTileId
|
||||
al 0099D7 .SetSoundSequenceChannel2_OnNegative_99D7
|
||||
al 0099B7 .SetSoundSequenceChannel2_JumpNext_99B7
|
||||
al 0099B0 .SetSoundSequenceChannel2_Return_99B0
|
||||
al 0099A3 .SetSoundSequenceChannel2
|
||||
al 0099A0 .UpdateActorTileFromIndexAlt_OnNonzero_99A0
|
||||
al 009994 .UpdateActorTileFromIndexAlt_OnNonzero_9994
|
||||
al 009989 .UpdateActorTileFromIndexAlt_OnNonzero_9989
|
||||
al 00997C .UpdateActorTileFromIndexAlt_JumpNext_997C
|
||||
al 00996E .UpdateActorTileFromIndexAlt_JumpNext_996E
|
||||
al 00994B .UpdateActorTileFromIndexAlt_JumpNext_994B
|
||||
al 009918 .UpdateActorTileFromIndexAlt
|
||||
al 009911 .UpdateActorTileFromIndex
|
||||
al 009948 .UpdateActorTileFromIndexAlt_JoinBranchPaths_9948
|
||||
al 0098E6 .ComputeActorLeftEdgeAlt2
|
||||
al 0098D8 .TestActorValue_OnCarryClear_98D8
|
||||
al 009903 .ComputeActorLeftEdgeAlt2_OnCarryClear_9903
|
||||
al 0098F0 .ComputeActorLeftEdgeAlt2_OnNonzero_98F0
|
||||
al 0098BE .TestActorValue_JoinBranchPaths_98BE
|
||||
al 0098C1 .TestActorValue_OnNonzero_98C1
|
||||
al 0098B7 .TestActorValue_OnNonzero_98B7
|
||||
al 0098B0 .TestActorValue_JumpNext_98B0
|
||||
al 0098A7 .TestActorValue_OnCarryClear_98A7
|
||||
al 0098AD .TestActorValue_JoinBranchPaths_98AD
|
||||
al 0098AA .TestActorValue_JoinBranchPaths_98AA
|
||||
al 009875 .TestActorValue_OnCarryClear_9875
|
||||
al 00986A .TestActorValue_Return_986A
|
||||
al 00985F .TestActorValue
|
||||
al 009858 .ComputeActorRightEdgeAt
|
||||
al 00982A .ComputeActorLeftEdgeAt
|
||||
al 00981C .TestAnimationSlot_OnCarryClear_981C
|
||||
al 00984A .ComputeActorLeftEdgeAt_OnCarryClear_984A
|
||||
al 009834 .ComputeActorLeftEdgeAt_OnNonzero_9834
|
||||
al 009800 .TestAnimationSlot_JoinBranchPaths_9800
|
||||
al 009802 .TestAnimationSlot_OnNonzero_9802
|
||||
al 0097FC .TestAnimationSlot
|
||||
al 0097FB .UpdateActorAnimation_OnZero_97FB
|
||||
al 0097D5 .UpdateActorAnimation
|
||||
al 0097C6 .SetActorAnimation61_OnNonzero_97C6
|
||||
al 0097BC .SetActorAnimation63
|
||||
al 0097C4 .SetActorAnimation61
|
||||
al 0097C0 .SetActorAnimation62
|
||||
al 0097A0 .MoveActorByStep_OnNonzero_97A0
|
||||
al 00979A .MoveActorByStep_OnNonzero_979A
|
||||
al 009766 .MoveActorByStep_OnCarryClear_9766
|
||||
al 00975E .MoveActorByStep_Return_975E
|
||||
al 00975D .MoveActorByStep_OnCarrySet_975D
|
||||
al 009732 .MoveActorByStep
|
||||
al 009731 .TestActorRange_OnCarrySet_9731
|
||||
al 009729 .TestActorRange
|
||||
al 009722 .ComputeActorRightEdgeAlt
|
||||
al 0096F7 .ComputeActorLeftEdgeAlt
|
||||
al 0096EE .TestActorCollisionFlag_OnCarryClear_96EE
|
||||
al 009719 .ComputeActorLeftEdgeAlt_OnCarryClear_9719
|
||||
al 009701 .ComputeActorLeftEdgeAlt_OnNonzero_9701
|
||||
al 0096CC .TestActorCollisionFlag_OnZero_96CC
|
||||
al 0096CE .TestActorCollisionFlag_OnZero_96CE
|
||||
al 0096C8 .TestActorCollisionFlag
|
||||
al 0096C2 .SetActorTileValue_Continue_96C2
|
||||
al 0096BC .SetActorTileValue_JumpNext_96BC
|
||||
al 0096B3 .SetActorTileValue_OnNonzero_96B3
|
||||
al 0096AA .SetActorTileValue
|
||||
al 0096B9 .SetActorTileValue_OnNegative_96B9
|
||||
al 00969D .StoreActorTile_OnNonzero_969D
|
||||
al 00969E .AdvanceActorCounter
|
||||
al 0096A6 .AdvanceActorCounter_OnCarryClear_96A6
|
||||
al 00968E .StoreActorTile_OnNonnegative_968E
|
||||
al 009679 .StoreActorTile_OnNegative_9679
|
||||
al 00966D .StoreActorTile_Return_966D
|
||||
al 009667 .StoreActorTile
|
||||
al 009664 .SetActorTileFromPalette_OnNonzero_9664
|
||||
al 009653 .SetActorTileFromPalette
|
||||
al 009644 .CompareActorToLimit_JumpNext_9644
|
||||
al 00963E .CompareActorToLimit_OnNonnegative_963E
|
||||
al 00963C .CompareActorToLimit_OnCarrySet_963C
|
||||
al 009641 .CompareActorToLimit_OnZero_9641
|
||||
al 009628 .CompareActorToLimit_OnCarrySet_9628
|
||||
al 0095E3 .CompareActorToLimit_OnNonzero_95E3
|
||||
al 0095DC .CompareActorToLimit_Return_95DC
|
||||
al 0095D9 .CompareActorToLimit
|
||||
al 0095D2 .ComputeActorRightEdge
|
||||
al 0095AE .ComputeActorLeftEdge
|
||||
al 0095A5 .UpdateActorState_OnCarryClear_95A5
|
||||
al 0095C9 .ComputeActorLeftEdge_OnCarryClear_95C9
|
||||
al 0095B8 .ComputeActorLeftEdge_OnNonzero_95B8
|
||||
al 009590 .UpdateActorState_OnNonzero_9590
|
||||
al 009585 .UpdateActorState
|
||||
al 009559 .SetActorFlag_JumpNext_9559
|
||||
al 009551 .SetActorFlag_OnNonzero_9551
|
||||
al 009541 .SetActorFlag_Return_9541
|
||||
al 009535 .SetActorFlag_OnNonzero_9535
|
||||
al 009522 .SetActorFlag_JumpNext_9522
|
||||
al 00951F .SetActorFlag_OnNonzero_951F
|
||||
al 009513 .SetActorFlag_JumpNext_9513
|
||||
al 00950B .SetActorFlag_JumpNext_950B
|
||||
al 0094FE .SetActorFlag
|
||||
al 0094F6 .ClearActorFields_OnNonzero_94F6
|
||||
al 0094F3 .ClearActorFields_JoinBranchPaths_94F3
|
||||
al 0094D7 .ClearActorFields
|
||||
al 0094CF .ClearActorPosition
|
||||
al 0094C8 .SelectActorSlotAlt
|
||||
al 0094C7 .SelectActorSlot
|
||||
al 0094C0 .TestPlayerFacing_JumpNext_94C0
|
||||
al 0094B1 .TestPlayerFacing
|
||||
al 0094AD .UpdateActorTileAlt_JumpNext_94AD
|
||||
al 009499 .UpdateActorTileAlt_JumpNext_9499
|
||||
al 0094AA .UpdateActorTileAlt_OnZero_94AA
|
||||
al 00948F .UpdateActorTileAlt_JumpNext_948F
|
||||
al 009480 .UpdateActorTileAlt_JumpNext_9480
|
||||
al 00947D .UpdateActorTileAlt_OnZero_947D
|
||||
al 009477 .UpdateActorTileAlt_JumpNext_9477
|
||||
al 00946D .UpdateActorTileAlt_JumpNext_946D
|
||||
al 009465 .UpdateActorTileAlt_JumpNext_9465
|
||||
al 00945B .UpdateActorTileAlt_OnNegative_945B
|
||||
al 009450 .UpdateActorTileAlt_OnNonzero_9450
|
||||
al 009451 .UpdateActorTileAlt_OnCarrySet_9451
|
||||
al 009454 .UpdateActorTileAlt_OnCarryClear_9454
|
||||
al 009441 .UpdateActorTileAlt_OnNonnegative_9441
|
||||
al 00942C .UpdateActorTileAlt_OnNegative_942C
|
||||
al 00941B .UpdateActorTileAlt_JumpNext_941B
|
||||
al 009409 .UpdateActorTileAlt_JumpNext_9409
|
||||
al 009401 .UpdateActorTileAlt_OnCarrySet_9401
|
||||
al 0093D3 .UpdateActorTileAlt_OnNonzero_93D3
|
||||
al 0093CC .UpdateActorTileAlt_JumpNext_93CC
|
||||
al 0093C4 .UpdateActorTileAlt_OnCarrySet_93C4
|
||||
al 0093D0 .UpdateActorTileAlt_OnZero_93D0
|
||||
al 0093A4 .UpdateActorTileAlt_JumpNext_93A4
|
||||
al 00937C .UpdateActorTileAlt_JumpNext_937C
|
||||
al 009374 .UpdateActorTileAlt
|
||||
al 009371 .UpdateActorTile
|
||||
al 009354 .UpdateActorX_JumpNext_9354
|
||||
al 00934B .UpdateActorX
|
||||
al 00932C .QueueVramDescriptor_JumpNext_932C
|
||||
al 0092E8 .QueueVramDescriptor_OnZero_92E8
|
||||
al 0092CD .QueueVramDescriptor_JumpNext_92CD
|
||||
al 009329 .QueueVramDescriptor_OnZero_9329
|
||||
al 0092B2 .QueueVramDescriptor_JumpNext_92B2
|
||||
al 0092AF .QueueVramDescriptor_OnNonzero_92AF
|
||||
al 00929F .QueueVramDescriptor_OnNonzero_929F
|
||||
al 009293 .QueueVramDescriptor_JumpNext_9293
|
||||
al 00928D .QueueVramDescriptor_JumpNext_928D
|
||||
al 009287 .QueueVramDescriptor_Entry_9287
|
||||
al 009237 .BytecodeHandlerTable
|
||||
al 009232 .BytecodeProgram_25
|
||||
al 00922F .BytecodeProgram_24
|
||||
al 00922C .BytecodeProgram_23
|
||||
al 0091EC .BytecodeProgram_22
|
||||
al 0091E0 .BytecodeProgram_21
|
||||
al 00918B .BytecodeProgram_20
|
||||
al 009175 .BytecodeProgram_1F
|
||||
al 009141 .BytecodeProgram_1E
|
||||
al 009136 .BytecodeProgram_1D
|
||||
al 009131 .BytecodeProgram_1C
|
||||
al 009119 .BytecodeProgram_1B
|
||||
al 0090DE .BytecodeProgram_1A
|
||||
al 0090D7 .BytecodeProgram_19
|
||||
al 0090CA .BytecodeProgram_18
|
||||
al 0090B9 .BytecodeProgram_17
|
||||
al 0090A6 .BytecodeProgram_16
|
||||
al 009081 .BytecodeProgram_15
|
||||
al 00907D .BytecodeProgram_14
|
||||
al 009071 .BytecodeProgram_13
|
||||
al 009008 .BytecodeProgram_12
|
||||
al 008FFD .BytecodeProgram_11
|
||||
al 008F94 .BytecodeProgram_10
|
||||
al 008F71 .BytecodeProgram_0F
|
||||
al 008F48 .BytecodeProgram_0E
|
||||
al 008F20 .BytecodeProgram_0D
|
||||
al 008F1A .BytecodeProgram_0C
|
||||
al 008EF4 .BytecodeProgram_0B
|
||||
al 008EA9 .BytecodeProgram_0A
|
||||
al 008E79 .BytecodeProgram_09
|
||||
al 008E2D .BytecodeProgram_08
|
||||
al 008DE2 .BytecodeProgram_07
|
||||
al 008DB6 .BytecodeProgram_06
|
||||
al 008D9F .BytecodeProgram_05
|
||||
al 008D96 .BytecodeProgram_04
|
||||
al 008D8D .BytecodeProgram_03
|
||||
al 008D5C .BytecodeProgram_02
|
||||
al 008D40 .BytecodeProgram_01
|
||||
al 008D3B .BytecodeProgram_00
|
||||
al 008CEF .BytecodeProgramPointerTable
|
||||
al 008CB8 .QueueVramDescriptor
|
||||
al 008C98 .ExecuteVramTransfer_OnZero_8C98
|
||||
al 008C72 .ExecuteVramTransfer_OnNonzero_8C72
|
||||
al 008C65 .ExecuteVramTransfer
|
||||
al 008C55 .QueueVramTransferAlt_OnNonzero_8C55
|
||||
al 008C3A .QueueVramTransferAlt_OnNonnegative_8C3A
|
||||
al 008C11 .QueueVramTransferAlt
|
||||
al 008C0E .QueueVramTransfer
|
||||
al 008C05 .AdvanceAnimationSlot
|
||||
al 008BFF .SetRenderingOn_OnNonnegative_8BFF
|
||||
al 008BF8 .SetRenderingOn
|
||||
al 008BEF .RenderHudDigitDescriptor
|
||||
al 008BBA .RenderHudDigits_OnNonzero_8BBA
|
||||
al 008B92 .RenderHudDigits
|
||||
al 008B7D .AttributeBlockDeltaTable
|
||||
al 008B6D .ClearAttributeRegion_JoinBranchPaths_8B6D
|
||||
al 008B67 .ClearAttributeRegion_OnZero_8B67
|
||||
al 008B5F .ClearAttributeRegion_OnCarryClear_8B5F
|
||||
al 008B3B .ClearAttributeRegion_OnNonnegative_8B3B
|
||||
al 008B33 .ClearAttributeRegion
|
||||
al 008B37 .ClearAttributeRegion_JoinBranchPaths_8B37
|
||||
al 008B20 .WriteNametableTile
|
||||
al 008B25 .WriteNametableTile_OnNonzero_8B25
|
||||
al 008B0D .ClearScrollLatch_OnNonzero_8B0D
|
||||
al 008B07 .ClearScrollLatch
|
||||
al 008AE8 .UpdateAttributeTable
|
||||
al 008AE1 .SpawnStageActors_JoinBranchPaths_8AE1
|
||||
al 008AA4 .SpawnStageActors_JoinBranchPaths_8AA4
|
||||
al 008A93 .SpawnStageActors_OnZero_8A93
|
||||
al 008A84 .SpawnStageActors_OnNonzero_8A84
|
||||
al 008A74 .SpawnStageActors_OnZero_8A74
|
||||
al 008A68 .SpawnStageActors_OnCarryClear_8A68
|
||||
al 008AA5 .SpawnStageActors_OnZero_8AA5
|
||||
al 008A5E .SpawnStageActors
|
||||
al 008A5D .UpdateStageActors_JoinBranchPaths_8A5D
|
||||
al 008A28 .UpdateStageActors
|
||||
al 008A1E .StandaloneBytecodeProgram_2
|
||||
al 0089F7 .ReadControllerAndInit_OnNonzero_89F7
|
||||
al 0089EE .ReadControllerAndInit_OnCarryClear_89EE
|
||||
al 0089CE .ReadControllerAndInit
|
||||
al 0089B2 .CompactOamList_OnNonzero_89B2
|
||||
al 0089B8 .CompactOamList_OnNonzero_89B8
|
||||
al 0089B5 .CompactOamList_OnNonzero_89B5
|
||||
al 00899F .CompactOamList_OnNonzero_899F
|
||||
al 00899D .CompactOamList_OnZero_899D
|
||||
al 0089AC .CompactOamList_OnZero_89AC
|
||||
al 0089B0 .CompactOamList_OnCarryClear_89B0
|
||||
al 0089A8 .CompactOamList_OnZero_89A8
|
||||
al 00898A .CompactOamList_OnNonnegative_898A
|
||||
al 008986 .CompactOamList
|
||||
al 00897F .FindFreeOamSlot_OnNonzero_897F
|
||||
al 00896B .FindFreeOamSlot_OnZero_896B
|
||||
al 00896A .FindFreeOamSlot_JoinBranchPaths_896A
|
||||
al 008942 .FindFreeOamSlot_OnZero_8942
|
||||
al 008938 .FindFreeOamSlot_OnNonnegative_8938
|
||||
al 008936 .FindFreeOamSlot
|
||||
al 00892A .EmitOamAtOffset_OnNonzero_892A
|
||||
al 008943 .FindFreeOamSlot_JoinBranchPaths_8943
|
||||
al 00891B .EmitOamAtOffset_OnZero_891B
|
||||
al 008909 .EmitOamAtOffset_OnZero_8909
|
||||
al 0088F9 .EmitOamFromTable
|
||||
al 0088F4 .EmitOamBlankEntry_OnZero_88F4
|
||||
al 0088EB .EmitOamBlankEntry
|
||||
al 0088FF .EmitOamAtOffset
|
||||
al 00890F .EmitOamAtOffset_JoinBranchPaths_890F
|
||||
al 0088F3 .EmitOamBlankEntry_JoinBranchPaths_88F3
|
||||
al 0088B0 .EmitOamEntry
|
||||
al 0088AE .BuildOamList_OnNonzero_88AE
|
||||
al 0088A4 .BuildOamList
|
||||
al 00889D .PollControllerAndCheckRound_OnNonzero_889D
|
||||
al 008899 .PollControllerAndCheckRound_OnCarrySet_8899
|
||||
al 00888D .PollControllerAndCheckRound_OnZero_888D
|
||||
al 008882 .PollControllerAndCheckRound
|
||||
al 008881 .SignalVblankComplete_JoinBranchPaths_8881
|
||||
al 00886C .PollControllerBitsAlt
|
||||
al 00885B .PollControllerAndAdvance
|
||||
al 00887C .SignalVblankComplete
|
||||
al 00885A .PollControllerBits_JoinBranchPaths_885A
|
||||
al 008848 .PollControllerBits
|
||||
al 008837 .PlayDeathSequence
|
||||
al 00881F .StandaloneBytecodeProgram_1
|
||||
al 008803 .UpdateFlashCounter_OnNonzero_8803
|
||||
al 008801 .UpdateFlashCounter_OnZero_8801
|
||||
al 008819 .UpdateFlashCounter_OnCarryClear_8819
|
||||
al 0087F2 .UpdateFlashCounter
|
||||
al 0087D1 .PollControllerStart
|
||||
al 0087F1 .PollControllerStart_JoinBranchPaths_87F1
|
||||
al 0087BF .UpdateTimersAlt
|
||||
al 008795 .RunGameStateDispatcher_OnNonzero_8795
|
||||
al 008787 .RunGameStateDispatcher_JoinBranchPaths_8787
|
||||
al 00877C .RunGameStateDispatcher
|
||||
al 008765 .SetSoundSequenceChannel1
|
||||
al 008764 .IrqHandler
|
||||
al 008759 .FinishNmiRegisters
|
||||
al 008751 .FinishNmiUpdates
|
||||
al 008742 .NmiHandler_OnNonzero_8742
|
||||
al 008728 .NmiHandler_OnCarrySet_8728
|
||||
al 00872F .NmiHandler_OnNonzero_872F
|
||||
al 008703 .NmiHandler_OnNegative_8703
|
||||
al 008709 .NmiHandler_OnZero_8709
|
||||
al 0086FA .NmiHandler_OnZero_86FA
|
||||
al 0086E3 .NmiHandler_OnNonzero_86E3
|
||||
al 0086D8 .NmiHandler_OnZero_86D8
|
||||
al 0086CB .NmiHandler
|
||||
al 0086AD .UpdateRoundLogic_OnNegative_86AD
|
||||
al 0086AA .UpdateRoundLogic_JoinBranchPaths_86AA
|
||||
al 0086A0 .UpdateRoundLogic_JoinBranchPaths_86A0
|
||||
al 008682 .UpdateRoundLogic_OnNonzero_8682
|
||||
al 00865D .UpdateRoundLogic
|
||||
al 008653 .SetRenderingOffAndSignalVblank
|
||||
al 008644 .ForceRenderingOff
|
||||
al 008639 .BeginVblankFrame
|
||||
al 0085ED .StandaloneBytecodeProgram
|
||||
al 0085DA .UpdateScrollTargetAlt_OnNonzero_85DA
|
||||
al 0085A8 .UpdateScrollTargetAlt_OnNonzero_85A8
|
||||
al 0085EC .UpdateScrollTargetAlt_JoinBranchPaths_85EC
|
||||
al 0085A3 .UpdateScrollTargetAlt_OnZero_85A3
|
||||
al 008598 .UpdateScrollTargetAlt
|
||||
al 008596 .UpdateScrollTarget
|
||||
al 00858F .PlayRoundChangeMusic_OnNonzero_858F
|
||||
al 00856C .PlayRoundChangeMusic
|
||||
al 008564 .UpdateRoundTimers_OnZero_8564
|
||||
al 008522 .UpdateRoundTimers_OnCarrySet_8522
|
||||
al 00851C .UpdateRoundTimers_OnCarrySet_851C
|
||||
al 00850F .UpdateRoundTimers_OnZero_850F
|
||||
al 0084F4 .UpdateRoundTimers_OnCarryClear_84F4
|
||||
al 0084EE .UpdateRoundTimers_OnNonzero_84EE
|
||||
al 0084E9 .UpdateRoundTimers_OnCarrySet_84E9
|
||||
al 0084B5 .UpdateRoundTimers_OnNonzero_84B5
|
||||
al 0084B1 .UpdateRoundTimers_OnNonzero_84B1
|
||||
al 00851F .UpdateRoundTimers_OnNonzero_851F
|
||||
al 0084A1 .UpdateRoundTimers_OnZero_84A1
|
||||
al 00848D .UpdateRoundTimers_OnNonzero_848D
|
||||
al 00845C .UpdateRoundTimers
|
||||
al 00841A .UpdateActorPositions_OnZero_841A
|
||||
al 008434 .UpdateActorPositions_OnNonzero_8434
|
||||
al 0083E1 .UpdateActorPositions_OnCarryClear_83E1
|
||||
al 0083D0 .UpdateActorPositions_OnZero_83D0
|
||||
al 0083AB .UpdateActorPositions_OnNonnegative_83AB
|
||||
al 0083A7 .UpdateActorPositions
|
||||
al 00839B .LoadOamShadowFromTable_OnNonnegative_839B
|
||||
al 008399 .LoadOamShadowFromTable
|
||||
al 008390 .WriteScoreTallyDigits_OnNonzero_8390
|
||||
al 008385 .WriteScoreTallyDigits_OnZero_8385
|
||||
al 008374 .WriteScoreTallyDigits_OnCarryClear_8374
|
||||
al 008372 .WriteScoreTallyDigits
|
||||
al 008353 .UpdateScoreTallyDigits
|
||||
al 008352 .UpdateHudTallyTiles_OnZero_8352
|
||||
al 00833E .UpdateHudTallyTiles_OnZero_833E
|
||||
al 00832A .UpdateHudTallyTiles
|
||||
al 0082FF .StartMusicSequence
|
||||
al 0082FA .StartIntroMusic
|
||||
al 0082ED .SilenceSoundChannel3
|
||||
al 0082E1 .SilenceSoundChannels1And3
|
||||
al 0082DA .DivideBy20_OnCarryClear_82DA
|
||||
al 0082BE .DivideBy20_OnNonzero_82BE
|
||||
al 0082AC .DivideBy20
|
||||
al 008298 .MainGameLoop_OnNonzero_8298
|
||||
al 00828C .MainGameLoop_OnNonzero_828C
|
||||
al 008284 .MainGameLoop_OnZero_8284
|
||||
al 00829E .MainGameLoop_OnNonnegative_829E
|
||||
al 008261 .MainGameLoop_OnNonzero_8261
|
||||
al 008255 .MainGameLoop_OnNonzero_8255
|
||||
al 00824D .MainGameLoop_OnZero_824D
|
||||
al 008267 .MainGameLoop_OnNonnegative_8267
|
||||
al 008232 .MainGameLoop_OnZero_8232
|
||||
al 008235 .MainGameLoop_OnZero_8235
|
||||
al 008226 .MainGameLoop
|
||||
al 008223 .InitializeRound_OnNonzero_8223
|
||||
al 0081E2 .InitializeRound_JoinBranchPaths_81E2
|
||||
al 0081E0 .InitializeRound_OnCarryClear_81E0
|
||||
al 0081D6 .InitializeRound_OnCarryClear_81D6
|
||||
al 0081DE .InitializeRound_OnCarryClear_81DE
|
||||
al 0081DA .InitializeRound_OnCarryClear_81DA
|
||||
al 0081A0 .InitializeRound_OnNonzero_81A0
|
||||
al 008196 .InitializeRound_OnNonnegative_8196
|
||||
al 008191 .InitializeRound_OnNonzero_8191
|
||||
al 008187 .InitializeRound_OnNonnegative_8187
|
||||
al 008173 .InitializeRound_OnCarryClear_8173
|
||||
al 008154 .UpdateFadeFlashSprites_OnCarryClear_8154
|
||||
al 008132 .UpdateFadeFlashSprites
|
||||
al 00811A .StartStageSequence_OnZero_811A
|
||||
al 00810A .StartStageSequence_OnNonzero_810A
|
||||
al 008105 .StartStageSequence_OnNonzero_8105
|
||||
al 008164 .InitializeRound
|
||||
al 0080E0 .StartStageSequence_OnZero_80E0
|
||||
al 0080AC .StartStageSequence
|
||||
al 008094 .UpdateNametableFromStream_OnZero_8094
|
||||
al 008077 .UpdateNametableFromStream_OnZero_8077
|
||||
al 00807A .UpdateNametableFromStream_OnZero_807A
|
||||
al 008066 .UpdateNametableFromStream_OnZero_8066
|
||||
al 00805B .UpdateNametableFromStream_OnNonzero_805B
|
||||
al 00806E .UpdateNametableFromStream_OnNonnegative_806E
|
||||
al 008080 .UpdateNametableFromStream_OnZero_8080
|
||||
al 008052 .UpdateNametableFromStream
|
||||
al 00803B .InitializeGameState_OnNonzero_803B
|
||||
al 00802C .InitializeGameState
|
||||
al 008019 .WaitForSecondPpuWarmup
|
||||
al 00800E .WaitForFirstPpuWarmup
|
||||
al 008000 .Reset
|
||||
@@ -1,14 +1,20 @@
|
||||
Modules list:
|
||||
-------------
|
||||
header.o:
|
||||
HEADER Offs=000000 Size=000010 Align=00001 Fill=0000
|
||||
prg.o:
|
||||
PRG Offs=000000 Size=004000 Align=00001 Fill=0000
|
||||
chr.o:
|
||||
CHR Offs=000000 Size=002000 Align=00001 Fill=0000
|
||||
|
||||
|
||||
Segment list:
|
||||
-------------
|
||||
Name Start End Size Align
|
||||
----------------------------------------------------
|
||||
PRG 00C000 00FFFF 004000 00001
|
||||
CHR 000000 001FFF 002000 00001
|
||||
HEADER 000000 00000F 000010 00001
|
||||
PRG 008000 00BFFF 004000 00001
|
||||
|
||||
|
||||
Exports list by name:
|
||||
|
||||
BIN
Binary file not shown.
Symlink
+1
@@ -0,0 +1 @@
|
||||
../M.U.S.C.L.E. (U).nes
|
||||
@@ -0,0 +1,228 @@
|
||||
0x8000 Reset
|
||||
0x800E WaitForFirstPpuWarmup
|
||||
0x8019 WaitForSecondPpuWarmup
|
||||
0x802C InitializeGameState
|
||||
0x8052 UpdateNametableFromStream
|
||||
0x80AC StartStageSequence
|
||||
0x8132 UpdateFadeFlashSprites
|
||||
0x8164 InitializeRound
|
||||
0x8226 MainGameLoop
|
||||
0x82AC DivideBy20
|
||||
0x82E1 SilenceSoundChannels1And3
|
||||
0x82ED SilenceSoundChannel3
|
||||
0x82FA StartIntroMusic
|
||||
0x82FF StartMusicSequence
|
||||
0x832A UpdateHudTallyTiles
|
||||
0x8353 UpdateScoreTallyDigits
|
||||
0x8372 WriteScoreTallyDigits
|
||||
0x8399 LoadOamShadowFromTable
|
||||
0x83A7 UpdateActorPositions
|
||||
0x845C UpdateRoundTimers
|
||||
0x856C PlayRoundChangeMusic
|
||||
0x8596 UpdateScrollTarget
|
||||
0x8598 UpdateScrollTargetAlt
|
||||
0x8639 BeginVblankFrame
|
||||
0x8644 ForceRenderingOff
|
||||
0x8653 SetRenderingOffAndSignalVblank
|
||||
0x865D UpdateRoundLogic
|
||||
0x86CB NmiHandler
|
||||
0x8751 FinishNmiUpdates
|
||||
0x8759 FinishNmiRegisters
|
||||
0x8764 IrqHandler
|
||||
0x8765 SetSoundSequenceChannel1
|
||||
0x877C RunGameStateDispatcher
|
||||
0x87BF UpdateTimersAlt
|
||||
0x87D1 PollControllerStart
|
||||
0x87F2 UpdateFlashCounter
|
||||
0x8837 PlayDeathSequence
|
||||
0x8848 PollControllerBits
|
||||
0x885B PollControllerAndAdvance
|
||||
0x886C PollControllerBitsAlt
|
||||
0x887C SignalVblankComplete
|
||||
0x8882 PollControllerAndCheckRound
|
||||
0x88A4 BuildOamList
|
||||
0x88B0 EmitOamEntry
|
||||
0x88EB EmitOamBlankEntry
|
||||
0x88F9 EmitOamFromTable
|
||||
0x88FF EmitOamAtOffset
|
||||
0x8936 FindFreeOamSlot
|
||||
0x8986 CompactOamList
|
||||
0x89CE ReadControllerAndInit
|
||||
0x8A28 UpdateStageActors
|
||||
0x8A5E SpawnStageActors
|
||||
0x8AE8 UpdateAttributeTable
|
||||
0x8B07 ClearScrollLatch
|
||||
0x8B20 WriteNametableTile
|
||||
0x8B33 ClearAttributeRegion
|
||||
0x8B92 RenderHudDigits
|
||||
0x8BEF RenderHudDigitDescriptor
|
||||
0x8BF8 SetRenderingOn
|
||||
0x8C05 AdvanceAnimationSlot
|
||||
0x8C0E QueueVramTransfer
|
||||
0x8C11 QueueVramTransferAlt
|
||||
0x8C65 ExecuteVramTransfer
|
||||
0x8CB8 QueueVramDescriptor
|
||||
0x934B UpdateActorX
|
||||
0x9371 UpdateActorTile
|
||||
0x9374 UpdateActorTileAlt
|
||||
0x94B1 TestPlayerFacing
|
||||
0x94C7 SelectActorSlot
|
||||
0x94C8 SelectActorSlotAlt
|
||||
0x94CF ClearActorPosition
|
||||
0x94D7 ClearActorFields
|
||||
0x94FE SetActorFlag
|
||||
0x9585 UpdateActorState
|
||||
0x95AE ComputeActorLeftEdge
|
||||
0x95D2 ComputeActorRightEdge
|
||||
0x95D9 CompareActorToLimit
|
||||
0x9653 SetActorTileFromPalette
|
||||
0x9667 StoreActorTile
|
||||
0x969E AdvanceActorCounter
|
||||
0x96AA SetActorTileValue
|
||||
0x96C8 TestActorCollisionFlag
|
||||
0x96F7 ComputeActorLeftEdgeAlt
|
||||
0x9722 ComputeActorRightEdgeAlt
|
||||
0x9729 TestActorRange
|
||||
0x9732 MoveActorByStep
|
||||
0x97BC SetActorAnimation63
|
||||
0x97C0 SetActorAnimation62
|
||||
0x97C4 SetActorAnimation61
|
||||
0x97D5 UpdateActorAnimation
|
||||
0x97FC TestAnimationSlot
|
||||
0x982A ComputeActorLeftEdgeAt
|
||||
0x9858 ComputeActorRightEdgeAt
|
||||
0x985F TestActorValue
|
||||
0x98E6 ComputeActorLeftEdgeAlt2
|
||||
0x9911 UpdateActorTileFromIndex
|
||||
0x9918 UpdateActorTileFromIndexAlt
|
||||
0x99A3 SetSoundSequenceChannel2
|
||||
0x99E2 LookupActorTileId
|
||||
0x99E4 LookupActorTileIdAlt
|
||||
0x9A24 StoreActorCoordinates
|
||||
0x9A2E StoreActorCoordinatesAlt
|
||||
0x9A3F FlipActorFacing
|
||||
0x9A4E SpawnActorPair
|
||||
0x9A6B SpawnActorPairAlt
|
||||
0x9AE8 RunBytecodeInterpreter
|
||||
0x9B05 DispatchThroughPointer
|
||||
0x9B25 RunBytecodeProgram
|
||||
0x9CBB ResetBytecodeState
|
||||
0x9D4E CopyActorCoordinates
|
||||
0x9DD6 SetActorBounds
|
||||
0x9DE6 LoadActorTileIndex
|
||||
0x9E6E UpdateActorFacing
|
||||
0x9E7F QueueNametableWrite
|
||||
0x9F14 FlushNametableWrite
|
||||
0x9F4B UpdateActorMovement
|
||||
0x9F54 MoveActorByOpcode
|
||||
0x9FDF AddToNametableValue
|
||||
0xA002 SubtractFromNametableValue
|
||||
0xA01D ProcessBytecodeOpcode
|
||||
0xA085 ComputeBytecodeOffset
|
||||
0xA0A5 ResetBytecodeAccumulator
|
||||
0xA0C6 ResetBytecodeAccumulatorAlt
|
||||
0xA0F4 AdvanceBytecodeProgram
|
||||
0xA0FB ResetBytecodeStateAlt
|
||||
0xA12E ComputeActorTileRow
|
||||
0xA15D ResetBytecodePointers
|
||||
0xA17F RunActorScript
|
||||
0xA250 LoadActorConfigByte
|
||||
0xA253 ComputeActorConfigOffset
|
||||
0xA25F CopyConfigBytes
|
||||
0xA270 LoadActorConfigRecord
|
||||
0xA298 CompareConfigValue
|
||||
0xA2C8 ReturnFromConfigLoad
|
||||
0xA2C9 LoadActorConfigFields
|
||||
0xA316 StoreActorPaletteByte
|
||||
0xA32C StoreActorControlByte
|
||||
0xA338 ReadActorConfigByte
|
||||
0xA435 CompareActorConfigValue
|
||||
0xA46F StoreActorConfigResult
|
||||
0xA482 LoadActorConfigAlt
|
||||
0xA49F StoreActorConfigResultAlt
|
||||
0xA4AA LoadActorFacingFlag
|
||||
0xA4C7 LoadActorConfigBlock
|
||||
0xA4DF TestSoundChannelState
|
||||
0xA4F2 SetSoundSequenceChannel2Alt
|
||||
0xA4FF FlipObjectIndex
|
||||
0xA508 LookupObjectIndex
|
||||
0xA512 UpdateObjectSlots
|
||||
0xA51B AdvanceObjectSlot
|
||||
0xA5DD WriteNametableBytes
|
||||
0xA660 SetSoundSequenceChannel4
|
||||
0xA68E UpdateObjectList
|
||||
0xA695 UpdateObjectListEntry
|
||||
0xA6F8 UpdateObjectCollisions
|
||||
0xA79F CheckObjectScroll
|
||||
0xA82F ClearScrollLatchAlt
|
||||
0xA834 UpdateObjectSprite
|
||||
0xA884 SetObjectFlags
|
||||
0xA8D1 AdvanceObjectFrame
|
||||
0xA8E9 TestObjectActive
|
||||
0xA949 UpdateObjectAnimations
|
||||
0xA952 UpdateObjectAnimation
|
||||
0xA992 UpdateObjectTimer
|
||||
0xA99E DecrementObjectCounter
|
||||
0xA9AB UpdateObjectState
|
||||
0xA9D8 ToggleScrollRegionFlip
|
||||
0xA9FF BuildObjectList
|
||||
0xAA56 ReadControllers
|
||||
0xAA63 ReadControllerShiftRegister
|
||||
0xAAB8 StoreControllerButtonBits
|
||||
0xAACD EnableRendering
|
||||
0xAADC DisableRenderingAndClearNametables
|
||||
0xAAEF ClearNametablePattern
|
||||
0xAB68 CopyPaletteFromTable
|
||||
0xAB98 LoadShadowOamBlock
|
||||
0xABA3 FillShadowOamBlock
|
||||
0xABB1 UploadPalette
|
||||
0xABE4 ApplyPpuScrollAndControl
|
||||
0xABF7 ShiftAccumulatorRight4
|
||||
0xABFC ClearOamShadow
|
||||
0xAC0D SelectLevelVramWriter
|
||||
0xAC3B SetLevelVramStream
|
||||
0xAC43 FillAttributeBlock
|
||||
0xAC4C WriteAttributeBlock
|
||||
0xAC62 LoadAttributeStream
|
||||
0xAC78 SetPpuAddressHighAnd40
|
||||
0xAC82 WriteCompressedVramStream
|
||||
0xAC88 AdvanceSourceByte
|
||||
0xAC96 DecodeVramStreamToken
|
||||
0xACA7 WriteVramRunToken
|
||||
0xACC9 AdvanceDestinationWord
|
||||
0xACD7 AdvanceCountWord
|
||||
0xACE5 WithRenderingEnabled
|
||||
0xACF5 WriteCompressedVramBlocks
|
||||
0xAD19 ComputeCollisionBits
|
||||
0xAD36 ComputePlayerOverlapBits
|
||||
0xAE45 SetDefaultOverlapBits
|
||||
0xAE9B ComputeEdgeOverlapBits
|
||||
0xAF25 InitializeSoundEngine
|
||||
0xAF3B UpdateSoundFrame
|
||||
0xAF40 UpdateAllSoundChannels
|
||||
0xAF43 UpdateSoundChannel
|
||||
0xAF55 AdvanceSoundChannelNote
|
||||
0xAF69 WriteSoundChannelState
|
||||
0xAF6B RebuildApuEnableMask
|
||||
0xAF73 StartSoundChannelNote
|
||||
0xAFAB AdvanceSoundSequencePointer
|
||||
0xAFC5 ComputeEnvelopeMask
|
||||
0xAFD9 ComputeTonePeriod
|
||||
0xB000 ShiftNoteTableIndex
|
||||
0xB007 WriteToneRegisters
|
||||
0xB029 WriteFixedToneRegisters
|
||||
0xB03A ReadNoteDuration
|
||||
0xB049 StoreNoteDuration
|
||||
0xB059 StoreShortNoteDuration
|
||||
0xB05D BuildApuChannelMask
|
||||
0xB062 WriteApuEnable
|
||||
0xB06C ApplySoundCommand
|
||||
0xB083 WriteApuControlRegister
|
||||
0xB08C AdvanceSoundSequenceStep
|
||||
0xB08E AdvanceSoundSequenceStepAlt
|
||||
0xB095 ReturnFromSoundCommand
|
||||
0xB096 ReadLoopFlag
|
||||
0xB09D HandleNoteTerminator
|
||||
0xB0A9 HandleSustainCounter
|
||||
0xB0B3 LoadSoundSequenceStep
|
||||
0xB0C6 DecrementSustainCounter
|
||||
|
@@ -0,0 +1,96 @@
|
||||
# MUSCLE (U) routine purpose notes - Pass 2
|
||||
# addr<TAB>purpose
|
||||
0x8000 Power-on entry: stack set up, PPU blanked through two vblank waits, APU frame counter silenced, $0300-$032C cleared, then the initial nametable stream is decoded into $0400 and the first stage is started.
|
||||
0x800E Spin on $2002 until bit 7 is set, so the write to $2000 just before it has taken effect.
|
||||
0x8019 Second vblank wait, this time before touching $4017/$4010.
|
||||
0x802C Reset the game-state bytes at $0326/$032B/$032C and zero page $FF, clear $0300-$032C, then decode the compressed nametable pointed at by SourcePointerLo/Hi.
|
||||
0x8052 Decode the compressed nametable stream at (SourcePointerLo/Hi) into (DestinationPointerLo/Hi). A byte with bit 7 clear is a run of (byte & $7F) copies of the next stream byte; a byte with bit 7 set is a literal, written only when it differs from what is already at the destination. $0346 is set whenever VRAM actually changed.
|
||||
0x80AC Stage start-up: reset the animation and actor counters, clear the OAM shadow, initialise the sound engine, upload the HUD palette row, and hand control to MainGameLoop.
|
||||
0x8132 Push or drop the two flash sprites (palette tiles $82) depending on PlayerCount and the fade state.
|
||||
0x8164 Round initialisation: clear the shadow arrays at zero page $00-$BF, reset the controllers and the OAM shadow, collect the $81/$82 type sprites, set the per-player palette and sprite bases, and start the actors.
|
||||
0x8226 Main game loop. Waits for the NMI handler to raise $0321, services the two frame timers, reads the controllers, and restarts the stage or updates actor positions. $0321/$0320 form the vblank handshake with the NMI.
|
||||
0x82AC Restoring binary division of the 8-bit value in A by the constant 20 ($14). Eight steps shift the divisor right, conditionally subtract it from the 16-bit remainder, and roll the quotient bit into $0349. Quotient -> $0349, remainder -> $0347/$0348.
|
||||
0x82E1 Point sound channels 1 and 3 at the silent sequence at $B1A1/$B1B0 with step 0.
|
||||
0x82ED Point sound channel 3 at $B1B0 with step 0 (the tail of SilenceSoundChannels1And3).
|
||||
0x82FA Set the $14-frame transition timer and start the intro music sequence for all four channels.
|
||||
0x82FF Start a four-channel music sequence from the $B2B9/$B3B2 tables.
|
||||
0x832A Draw the two score/tally markers at $20BB and $24A6 when their flags at $0338/$0339 are set.
|
||||
0x8353 Redraw the score row at $20EC and $210C with the three current digits.
|
||||
0x8372 Write one score digit: blank the cell unless it matches PlayerCount, then stamp the tile.
|
||||
0x8399 Copy the 32-byte OAM shadow at $9EF4 into $0300 and upload it.
|
||||
0x83A7 Advance both actors: add the per-actor scroll delta to the position in $0340-$0342, then step the round counter and redraw the tally markers.
|
||||
0x845C Per-round timer and state update: redraw the score, start the round-change music, and either loop again or advance the round and prepare the transition objects.
|
||||
0x856C Start the short round-change jingle and wait for the NMI handshake.
|
||||
0x8596 Compare the actor position in $0340-$0342 against the screen bounds in $0328-$032A and latch the tighter limit.
|
||||
0x8639 Clear the vblank handshake ($0321, $0320) and re-enable rendering.
|
||||
0x8644 Force rendering off: PPUCTRL=$10, PPUMASK=0, updating both shadow bytes.
|
||||
0x8653 Force rendering off and immediately signal the main loop by setting $0321.
|
||||
0x865D Positive game-state branch of the NMI: update the flash counters and actors, detect a button edge, and bump the frame-skip counter in zero page $FE.
|
||||
0x8751 Finish the NMI: clear the vblank latch unless $0321 says work is outstanding, poll $2002 to release the PPU address latch, and run the sound frame update.
|
||||
0x8759 NMI epilogue: poll $2002, update the sound engine, restore Y/X/A, and RTI at $8764.
|
||||
0x8765 Point sound channel 1 at the $B1EB sequence.
|
||||
0x877C Main game-state dispatcher. Counts down the transition timer at zero page $8D and runs one of fourteen subsystem updates chosen by that counter.
|
||||
0x87F2 Advance the screen-flash counter against the $2C-frame limit.
|
||||
0x8837 Play the player-death sequence: load the palette, upload the sound command, clear the attribute area, and respawn the actors.
|
||||
0x8848 Test the start/select bits of the raw controller byte.
|
||||
0x885B Read the controllers and advance the frame counter.
|
||||
0x887C Signal the main loop that the NMI frame is finished.
|
||||
0x8882 Read the controllers and test the round-transition flag at $0326.
|
||||
0x88A4 Build the OAM list for the active player: blank every slot, then emit one sprite per visible actor row.
|
||||
0x88B0 Emit a single OAM entry built from the actor record.
|
||||
0x8936 Find the next free OAM slot by scanning the $032E source list for a value matching the running sprite index.
|
||||
0x8986 Compact the OAM list, dropping entries whose actor has moved off screen.
|
||||
0x89CE Read the controllers, reset the per-player bookkeeping, and initialise the object list.
|
||||
0x8A28 Update the stage actors: pick the animation for each player from the palette index pair and hand off to SpawnStageActors.
|
||||
0x8AE8 Rewrite the attribute table entry at $209C through the compressed stream writer.
|
||||
0x8B20 Write one tile into the nametable at the address in zero page $10/$11 plus the per-round offset.
|
||||
0x8B92 Render the HUD digits: set up the palette copy, clear the digit cells, then run each digit descriptor.
|
||||
0x8BF8 Re-enable rendering: PPUCTRL=$10 with PPUMASK left at zero and the shadow updated.
|
||||
0x8C05 Advance the animation slot below the current one.
|
||||
0x8C0E Queue a VRAM descriptor built from the PlayerCount-relative index.
|
||||
0x8C65 Execute the queued VRAM transfer: copy bytes from (BytecodeStreamPointerLo/Hi) through the destination pointer and the two block counters.
|
||||
0x8CB8 Push a VRAM descriptor and bump the queue index.
|
||||
0x9AE8 Bytecode interpreter entry. Reads a token byte through (BytecodeStreamPointerLo/Hi); tokens $C8-$EF are converted to an index and dispatched through the handler table at $9237 into jmp ($001C); anything else is an operand consumed by the current handler.
|
||||
0x9B05 jmp ($001C) - the handler table and the $9F2B table both land here to re-enter the interpreter at the next token.
|
||||
0x9B25 Main bytecode program loop: advance the program counter, dispatch the token, and resume.
|
||||
0x9CBB Reset the per-invocation script state at $034D/$034E and the flags in zero page $4D/$4E.
|
||||
0x9E7F Queue a nametable write described by a two-byte descriptor and advance the write pointer.
|
||||
0x9F4B Update actor movement from the object script, dispatching through jmp ($001C).
|
||||
0x9F54 Move an actor by one opcode: read the displacement, apply it, and redraw.
|
||||
0xA01D Process one bytecode opcode against the actor record, advancing the script pointer.
|
||||
0xA17F Run an actor script: set up the source/destination pointers, then walk the descriptor stream.
|
||||
0xA250 Read one byte of the actor configuration block, scaled by four.
|
||||
0xA253 Compute the byte offset of an actor configuration record.
|
||||
0xA4FF Flip the low bit of A, turning a player index into its partner (0<->1, 2<->3).
|
||||
0xA508 Resolve an object index through the per-player tables at $2A and $26.
|
||||
0xA512 Walk the object slots looking for one whose countdown at $45 is non-zero.
|
||||
0xA68E Update the whole object list, then the second half of it.
|
||||
0xA6F8 Update object collisions and the object scroll test.
|
||||
0xA8D1 Advance an object animation frame from the table at ($75),y.
|
||||
0xA949 Update both players' object animations.
|
||||
0xAA56 Read both controller ports: strobe $4016, shift eight bits per port into zero page $FA/$FB, save the previous byte in $F4/$F5, and derive the face/direction masks in $F6-$F9.
|
||||
0xAA63 Shift one controller port's eight bits in from $4016/4017 and run the edge-detection post-processing.
|
||||
0xAACD Enable rendering: PPUMASK=$18, PPUCTRL=$90, both shadows updated.
|
||||
0xAADC Disable rendering, then clear both nametables to tile $30.
|
||||
0xAAEF Set the PPU address from A and write $C0/$40 bytes of tile $30.
|
||||
0xAB68 Load the HUD palette and the per-round object configuration into the $0300 shadow.
|
||||
0xABB1 Upload the 32-byte palette from $0300 to $3F00, then restore PPUMASK.
|
||||
0xABE4 Write the latched scroll (PpuScrollX/PpuScrollY) and PpuCtrlShadow to the PPU.
|
||||
0xABFC Clear the 256-byte OAM shadow at $0200 to $F0.
|
||||
0xAC0D Select and run the level's VRAM writer from the three-entry table at $AC35, indexed by the level byte at $0326.
|
||||
0xAC82 Decode one compressed VRAM token: below $B8 is a literal, $B8-$C3 is a run whose fill value comes from the table at $ACBD and whose length is the next stream byte, $C0 additionally skips a byte first, and $C4 or above is a literal.
|
||||
0xAC88 Advance the compressed-stream source pointer (SourcePointerLo/Hi) by one byte.
|
||||
0xACF5 Write a block of compressed data to VRAM: the first byte is the block count, then each block supplies a 16-bit PPU address followed by a token run.
|
||||
0xAD19 Compute the collision bit flags for the active player and store them in zero page $15.
|
||||
0xAF25 Silence the APU: $4015=0, the enable mask cleared, and all four channels marked finished.
|
||||
0xAF3B Sound frame update: walk all four channels and update the APU.
|
||||
0xAF40 Update all four sound channels in turn.
|
||||
0xAF43 Update one sound channel: restart it from its sequence when finished, otherwise count the note timer down and step the sequence.
|
||||
0xAFAB Advance a sound channel's sequence pointer by step*2 from its base.
|
||||
0xAFC5 Compute the envelope mask for a channel from its envelope mode.
|
||||
0xAFD9 Compute the tone period for a channel from its note table and write the period registers.
|
||||
0xB03A Read a note's duration from the sequence and store it, doubling it for looped notes.
|
||||
0xB06C Apply one byte of a sound sequence: below $A0 is ignored, $A0-$AF patches the $4000 control byte, and $B0+ handles note and sustain data.
|
||||
0xB0C6 Decrement the channel's sustain counter and advance the sequence.0x8644 Set PPUCTRL to $10 and PPUMASK to 0, updating both shadow bytes. Provably unreachable: no word in the image points at it except the jsr at $8654, and $8653 itself is unreferenced. Kept as code because the shape is unambiguous.
|
||||
0x8653 Call ForceRenderingOff, signal the main loop through SignalVblankComplete, then clear the vblank latch at $0320. Provably unreachable (no word in the image points at $8653). Kept as code because the shape is unambiguous.
|
||||
0x9CAD Decrement the 16-bit word in Zp14/Zp15 by one. A textbook "dec 16-bit" helper, but Zp14/Zp15 are otherwise scratch, and no word in the image points here. Provably unreachable; kept as code.
|
||||
|
Can't render this file because it contains an unexpected character in line 96 and column 66.
|
@@ -0,0 +1,112 @@
|
||||
# MUSCLE (U) zero-page names - Pass 2
|
||||
# kind<TAB>old<TAB>new<TAB>note
|
||||
zp Zp10 SourcePointerLo Lo byte of the compressed VRAM/attribute stream pointer
|
||||
zp Zp11 SourcePointerHi Hi byte of the compressed VRAM/attribute stream pointer
|
||||
zp Zp12 DestinationPointerLo Lo byte of the VRAM destination pointer
|
||||
zp Zp13 DestinationPointerHi Hi byte of the VRAM destination pointer
|
||||
zp Zp1A BytecodeStreamPointerLo Lo byte of the token-stream pointer, loaded from the $8CEF table
|
||||
zp Zp1B BytecodeStreamPointerHi Hi byte of the token-stream pointer
|
||||
zp Zp1C BytecodeHandlerPointerLo Lo byte of the handler address consumed by jmp ($001C)
|
||||
zp Zp1D BytecodeHandlerPointerHi Hi byte of the handler address consumed by jmp ($001C)
|
||||
zp Zp1E ActorIndex Active player/actor slot (0 or 1) used as an array index
|
||||
zp Zp21 ActorSlotOffset ActorIndex*4; byte offset into the per-actor record arrays
|
||||
zp Zp22 ActorSlotOffsetHi High half of the per-actor record offset
|
||||
zp Zp23 ActorFieldOffset Second per-actor offset used by the bytecode handlers
|
||||
zp Zp24 FrameCounterLo Low byte of the 16-bit frame counter, incremented once per NMI
|
||||
zp Zp25 FrameCounterHi High byte of the 16-bit frame counter
|
||||
zp Zp26 PlayerSpriteIndex1 Per-player sprite slot table, first plane
|
||||
zp Zp27 PlayerSpriteIndex2 Per-player sprite slot table, second plane
|
||||
zp Zp28 PlayerSpriteIndex3 Per-player sprite slot table, third plane
|
||||
zp Zp29 PlayerSpriteIndex4 Per-player sprite slot table, fourth plane
|
||||
zp Zp2A PlayerPaletteIndex Per-player palette slot table
|
||||
zp Zp2B PlayerTileIndex Per-player tile slot table
|
||||
zp Zp34 ActorPosXLo Per-actor 16-bit X scratch, written by the bytecode handlers
|
||||
zp Zp35 ActorPosXHi Per-actor 16-bit X scratch, high byte
|
||||
zp Zp36 ActorPosY Per-actor Y scratch
|
||||
zp Zp3A PlayerPosXLo1 Player 1 X position, low byte
|
||||
zp Zp3C PlayerPosYLo1 Player 1 Y position, low byte
|
||||
zp Zp3E PlayerPosXLo2 Player 2 X position, low byte
|
||||
zp Zp40 PlayerPosYLo2 Player 2 Y position, low byte
|
||||
zp Zp41 ScriptFlags Script state byte selected by the bytecode SelectActorSlot handlers
|
||||
zp Zp43 ScriptCounterA Per-actor bytecode counter A
|
||||
zp Zp44 ScriptCounterB Per-actor bytecode counter B
|
||||
zp Zp45 ScriptCounterC Per-actor bytecode counter C
|
||||
zp Zp47 ScriptArgLo Per-actor bytecode argument, low byte
|
||||
zp Zp48 ScriptArgHi Per-actor bytecode argument, high byte
|
||||
zp Zp4D ScriptFlagsLo Low byte of the 16-bit script flag pair
|
||||
zp Zp4E ScriptFlagsHi High byte; tested non-zero to gate several bytecode handlers
|
||||
zp Zp65 ActionCooldown Frames to wait before the main loop resumes object updates
|
||||
zp Zp68 ScreenTransitionState 0 = idle, negative = entering, positive = leaving
|
||||
zp Zp6E PlayerBoxOriginX Player 1 hitbox origin used by the overlap test
|
||||
zp Zp70 PlayerBoxOriginY Player 1 hitbox origin used by the overlap test
|
||||
zp Zp78 PlayerActiveFlag Per-player "still alive / facing right" flag gating the overlap test
|
||||
zp Zp80 SoundVolume1 APU channel 1 volume
|
||||
zp Zp81 SoundVolume2 APU channel 2 volume
|
||||
zp Zp82 SoundVolume3 APU channel 3 volume
|
||||
zp Zp83 SoundVolume4 APU channel 4 volume
|
||||
zp Zp8B PlayerFlashTimer Per-player damage-flash countdown
|
||||
zp Zp8C PlayerFlashTimer2 Per-player damage-flash countdown, second half
|
||||
zp Zp8D RoundTransitionTimer Decremented by the round-transition state
|
||||
zp Zp91 PlayerPaletteIndexLo Low byte of the player palette index pair
|
||||
zp Zp92 PlayerPaletteIndexHi High byte of the player palette index pair
|
||||
zp Zp94 PlayerCount 0 = one player, 1 = two players
|
||||
zp Zp96 SubModeFlag $FF entering a sub-mode, $01 leaving it, 0 idle
|
||||
zp ZpC4 SoundEnvelopeMode1 APU channel 1 envelope/tone mode nibble
|
||||
zp ZpC5 SoundEnvelopeMode2 APU channel 2 envelope/tone mode nibble
|
||||
zp ZpC6 SoundEnvelopeMode3 APU channel 3 envelope/tone mode nibble
|
||||
zp ZpC7 SoundEnvelopeMode4 APU channel 4 envelope/tone mode nibble
|
||||
zp ZpC8 SoundNoteTimer1 APU channel 1 note duration countdown
|
||||
zp ZpC9 SoundNoteTimer2 APU channel 2 note duration countdown
|
||||
zp ZpCA SoundNoteTimer3 APU channel 3 note duration countdown
|
||||
zp ZpCB SoundNoteTimer4 APU channel 4 note duration countdown
|
||||
zp ZpCC SoundEnvelopeValue1 APU channel 1 envelope byte read from the sequence
|
||||
zp ZpCD SoundEnvelopeValue2 APU channel 2 envelope byte read from the sequence
|
||||
zp ZpCE SoundEnvelopeValue3 APU channel 3 envelope byte read from the sequence
|
||||
zp ZpCF SoundEnvelopeValue4 APU channel 4 envelope byte read from the sequence
|
||||
zp ZpD0 SoundChannelStep1 APU channel 1 step index into its note table
|
||||
zp ZpD1 SoundChannelStep2 APU channel 2 step index into its note table
|
||||
zp ZpD2 SoundChannelStep3 APU channel 3 step index into its note table
|
||||
zp ZpD3 SoundChannelStep4 APU channel 4 step index into its note table
|
||||
zp ZpD4 SoundSequencePtrLo1 APU channel 1 sequence pointer, low byte
|
||||
zp ZpD5 SoundSequencePtrLo2 APU channel 2 sequence pointer, low byte
|
||||
zp ZpD6 SoundSequencePtrLo3 APU channel 3 sequence pointer, low byte
|
||||
zp ZpD7 SoundSequencePtrLo4 APU channel 4 sequence pointer, low byte
|
||||
zp ZpD8 SoundSequencePtrHi1 APU channel 1 sequence pointer, high byte
|
||||
zp ZpD9 SoundSequencePtrHi2 APU channel 2 sequence pointer, high byte
|
||||
zp ZpDA SoundSequencePtrHi3 APU channel 3 sequence pointer, high byte
|
||||
zp ZpDB SoundSequencePtrHi4 APU channel 4 sequence pointer, high byte
|
||||
zp ZpDC SoundSustainCounter1 APU channel 1 sustain/release counter
|
||||
zp ZpDD SoundSustainCounter2 APU channel 2 sustain/release counter
|
||||
zp ZpDE SoundSustainCounter3 APU channel 3 sustain/release counter
|
||||
zp ZpDF SoundSustainCounter4 APU channel 4 sustain/release counter
|
||||
zp ZpE0 SoundLastCtrlWrite1 Last value written to $4000+4*channel, channel 1
|
||||
zp ZpE1 SoundLastCtrlWrite2 Last value written to $4000+4*channel, channel 2
|
||||
zp ZpE2 SoundLastCtrlWrite3 Last value written to $4000+4*channel, channel 3
|
||||
zp ZpE3 SoundLastCtrlWrite4 Last value written to $4000+4*channel, channel 4
|
||||
zp ZpE4 ApuRegisterOffset Channel*4, the offset added to $4000/$4001/$4002/$4003
|
||||
zp ZpE8 ApuEnableMask Bit mask of currently enabled APU channels
|
||||
zp ZpE9 SoundMuted Bit 7 set suppresses writes to $4015 (write during rendering)
|
||||
zp ZpEA SoundTonePeriodLo Computed tone period, low byte
|
||||
zp ZpEB SoundTonePeriodHi Computed tone period, high byte
|
||||
zp ZpEC SoundEnvelopeMaskLo Computed envelope bits OR-ed into $4000, low part
|
||||
zp ZpED SoundEnvelopeMaskHi Computed envelope bits OR-ed into $4000, high part
|
||||
zp ZpEE SoundReadPointerLo Lo byte of the sound sequence read cursor
|
||||
zp ZpEF SoundReadPointerHi Hi byte of the sound sequence read cursor
|
||||
zp ZpF0 PlayerActionState Per-player action/animation state byte ($80..$FF)
|
||||
zp ZpF1 PlayerActionState2 Per-player second action state byte
|
||||
zp ZpF2 ControllerButtonMask Filtered button bits for this read, per player
|
||||
zp ZpF3 ControllerButtonMask2 Filtered button bits, second player
|
||||
zp ZpF4 ControllerButtonsPrev Previous read's button byte, for edge detection
|
||||
zp ZpF5 ControllerButtonsPrev2 Previous read's button byte, second player
|
||||
zp ZpF6 ControllerDPad1 Directional bits derived from the button byte
|
||||
zp ZpF7 ControllerDPad2 Directional bits derived from the button byte
|
||||
zp ZpF8 ControllerFaceButtons1 Face-button bits derived from the button byte
|
||||
zp ZpF9 ControllerFaceButtons2 Face-button bits derived from the button byte
|
||||
zp ZpFA ControllerButtons1 Raw button byte for player 1 (shadows $4010/$4011 at reset)
|
||||
zp ZpFB ControllerButtons2 Raw button byte for player 2 (shadows $4010/$4011 at reset)
|
||||
zp ZpFC PpuCtrlShadow Shadow of the last value written to $2000
|
||||
zp ZpFD PpuMaskShadow Shadow of the last value written to $2001
|
||||
zp ZpFE PpuScrollX Shadow of the first $2005 write
|
||||
zp ZpFF PpuScrollY Shadow of the second $2005 write
|
||||
zp Zp14 VramBlockCountLo Low byte of the 16-bit block counter advanced by AdvanceCountWord
|
||||
zp Zp15 CollisionFlagBits Accumulator for the overlap bit flags OR-ed together by ComputePlayerOverlapBits
|
||||
|
Can't render this file because it contains an unexpected character in line 42 and column 37.
|
@@ -0,0 +1,7 @@
|
||||
# MUSCLE (U) reused zero-page bytes - Pass 3
|
||||
# Zero page $14/$15 is the 16-bit block counter for the compressed-VRAM transfer path and
|
||||
# the collision-bit accumulator for the overlap test. locals.inc names both roles; this
|
||||
# file applies the counter name only inside AdvanceCountWord and the two block-count
|
||||
# set-ups, so the same byte is not mislabelled at every site.
|
||||
# kind<TAB>start<TAB>end<TAB>old<TAB>new
|
||||
zprange 0xACD7 0xACE2 Zp15 StreamBlockCountHi
|
||||
|
Reference in new issue
Block a user